Advertisement
Guest User

Untitled

a guest
Jan 25th, 2018
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 41.53 KB | None | 0 0
  1. # ShmooDude Feral Script
  2. #
  3. # Options:
  4. # Interrupt - Suggests use of interrupting abilities, including stuns/knockbacks on non-boss targets.
  5. #
  6. # Multiple-targets rotation - If this is disabled, the AoE icon is removed
  7. #
  8. # Use Prolonged Power Potion - Whether or not to suggest using Prolonged Power Potions
  9. #
  10. # Tiger's Fury multiplier prediction - Applies the Tiger's Fury multiplier if Tiger's Fury is ready.
  11. # e.g. If TF is being suggested, any Rip suggestions will assume you use TF first.
  12. #
  13. # Opener Dropdown Box:
  14. # Always - Will always use the opener
  15. # - Prowl, Rake, SR, AF, TF/Incarn, Shred if needed, Rip and a few other tweaks.
  16. # Use opener on worldbosses - Will use the opener on enemies classified as worldbosses (by Blizzard's classification function)
  17. # Never - Don't use the opener
  18. # Brutal Slash Behavior Dropdown Box:
  19. # BrS: Prevent capping charges - Will use BrS at ~2.66 charges on single target
  20. # BrS: Only use when Tiger's Fury is up - Only suggests to use BrS when Tiger's Fury is up
  21. # BrS: Prevent capping AND only with TF - Will use BrS at ~2.66 charges on single target
  22. # BrS: Do not use on single target - Will only use BrS when at number of targets in other dropdown box
  23. # Brutal Slash Targets Dropdown Box:
  24. # Suggests Brutal Slash as a high priority when the selected number of enemies are present
  25. # "Only count tagged enemies" in Ovale options (Advanced tab) will only count enemies you have hit recently
  26. #
  27. # Melee Range Dropdown Box:
  28. # Get in melee range without distance - Shows movement abilities or an arrow
  29. # Get in melee range with distance - Same as above with text estimating your distance away from the target
  30. # No get in melee range - Will not show movement abilities or an arrow
  31. #
  32. # Cooldowns/Main Action Dropdown Box:
  33. # Will put the abilities listed in the indicated icon (shortcd = leftmost; cd = rightmost)
  34. #
  35.  
  36. Include(ovale_common)
  37. Include(ovale_druid_spells)
  38.  
  39. # Overrides.
  40. Define(apex_predator_buff 252752)
  41. Define(jungle_stalker_buff 252071)
  42. Define(behemoth_headdress 151801)
  43. Define(ashamanes_frenzy_debuff 210723)
  44.  
  45. SpellRequire(ferocious_bite energy_percent 0=buff,apex_predator_buff)
  46. SpellRequire(ferocious_bite refund_combopoints cost=buff,apex_predator_buff)
  47.  
  48. AddCheckBox(opt_interrupt L(interrupt) default specialization=feral)
  49. AddCheckBox(opt_use_consumables "Use Prolonged Power Potion" default specialization=feral)
  50. AddCheckBox(opt_tigers_fury_multiplier_predict "Tiger's Fury multiplier prediction" default specialization=feral)
  51.  
  52. AddListItem(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_cd "AF: shortcd --- SM: cd" default specialization=feral)
  53. AddListItem(opt_cooldowns_as_main_action cdmain_af_main_sm_cd "AF: main --- SM: cd" specialization=feral)
  54. AddListItem(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_main "AF: shortcd --- SM: main" specialization=feral)
  55. AddListItem(opt_cooldowns_as_main_action cdmain_af_main_sm_main "AF: main --- SM: main" specialization=feral)
  56.  
  57. AddListItem(opt_brutal_slash_behavior brs_01_prevent_capping "BrS: Prevent capping charges" default specialization=feral)
  58. AddListItem(opt_brutal_slash_behavior brs_02_only_tigers_fury "BrS: Use only when Tiger's Fury is up" specialization=feral)
  59. AddListItem(opt_brutal_slash_behavior brs_03_both "BrS: Prevent capping AND only with TF" specialization=feral)
  60. AddListItem(opt_brutal_slash_behavior brs_04_neither "BrS: Do not use on single target" specialization=feral)
  61.  
  62. AddListItem(opt_melee_range_finder melee_range_finder "Get in melee range with distance" default specialization=feral)
  63. AddListItem(opt_melee_range_finder melee_range "Get in melee range without distance" specialization=feral)
  64. AddListItem(opt_melee_range_finder no_melee_range "No get in melee range" specialization=feral)
  65.  
  66. AddListItem(opt_use_opener opener_always "Always use opener" specialization=feral)
  67. AddListItem(opt_use_opener opener_bosses_only "Use opener on worldbosses" specialization=feral default)
  68. AddListItem(opt_use_opener opener_never "Never use opener" specialization=feral)
  69.  
  70. AddListItem(opt_desired_targets desired_targets_01 "Brutal Slash at 1 target" specialization=feral)
  71. AddListItem(opt_desired_targets desired_targets_02 "Brutal Slash at 2 targets" specialization=feral)
  72. AddListItem(opt_desired_targets desired_targets_03 "Brutal Slash at 3 targets" specialization=feral default)
  73. AddListItem(opt_desired_targets desired_targets_04 "Brutal Slash at 4 targets" specialization=feral)
  74. AddListItem(opt_desired_targets desired_targets_05 "Brutal Slash at 5 targets" specialization=feral)
  75. AddListItem(opt_desired_targets desired_targets_06 "Brutal Slash at 6 targets" specialization=feral)
  76.  
  77. ########################################################################################################################
  78. ### Helper Variables (Functions)
  79. ########################################################################################################################
  80.  
  81. #variable,name=execute_percent,value=25+75*talent.sabertooth.enabled
  82. AddFunction execute_percent
  83. {
  84. 25 + 75 * TalentPoints(sabertooth_talent)
  85. }
  86.  
  87. AddFunction FeralUseItemActions
  88. {
  89. Item(Trinket0Slot text=13 usable=1)
  90. Item(Trinket1Slot text=14 usable=1)
  91. }
  92.  
  93. AddFunction FeralGetInMeleeRange
  94. {
  95. if List(opt_melee_range_finder melee_range_finder) and target.InRange(shred no)
  96. {
  97. if target.Distance(atLeast 100)
  98. {
  99. #displacer_beast,if=movement.distance>25
  100. if BuffExpires(prowl_buff) Spell(displacer_beast text="100+")
  101. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  102. if BuffExpires(displacer_beast_buff) Spell(dash text="100+")
  103. #not_in_melee_range_arrow
  104. Texture(misc_arrowlup help=L(not_in_melee_range) text="100+")
  105. }
  106. if target.Distance(atLeast 80)
  107. {
  108. #displacer_beast,if=movement.distance>25
  109. if BuffExpires(prowl_buff) Spell(displacer_beast text="80-100")
  110. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  111. if BuffExpires(displacer_beast_buff) Spell(dash text="80-100")
  112. #not_in_melee_range_arrow
  113. Texture(misc_arrowlup help=L(not_in_melee_range) text="80-100")
  114. }
  115. if target.Distance(atLeast 70)
  116. {
  117. #displacer_beast,if=movement.distance>25
  118. if BuffExpires(prowl_buff) Spell(displacer_beast text="70-80")
  119. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  120. if BuffExpires(displacer_beast_buff) Spell(dash text="70-80")
  121. #not_in_melee_range_arrow
  122. Texture(misc_arrowlup help=L(not_in_melee_range) text="70-80")
  123. }
  124. if target.Distance(atLeast 60)
  125. {
  126. #displacer_beast,if=movement.distance>25
  127. if BuffExpires(prowl_buff) Spell(displacer_beast text="60-70")
  128. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  129. if BuffExpires(displacer_beast_buff) Spell(dash text="60-70")
  130. #not_in_melee_range_arrow
  131. Texture(misc_arrowlup help=L(not_in_melee_range) text="60-70")
  132. }
  133. if target.Distance(atLeast 50)
  134. {
  135. #displacer_beast,if=movement.distance>25
  136. if BuffExpires(prowl_buff) Spell(displacer_beast text="50-60")
  137. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  138. if BuffExpires(displacer_beast_buff) Spell(dash text="50-60")
  139. #not_in_melee_range_arrow
  140. Texture(misc_arrowlup help=L(not_in_melee_range) text="50-60")
  141. }
  142. if target.Distance(atLeast 45)
  143. {
  144. #displacer_beast,if=movement.distance>25
  145. if BuffExpires(prowl_buff) Spell(displacer_beast text="45-50")
  146. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  147. if BuffExpires(displacer_beast_buff) Spell(dash text="45-50")
  148. #not_in_melee_range_arrow
  149. Texture(misc_arrowlup help=L(not_in_melee_range) text="45-50")
  150. }
  151. if target.Distance(atLeast 40)
  152. {
  153. #displacer_beast,if=movement.distance>25
  154. if BuffExpires(prowl_buff) Spell(displacer_beast text="40-45")
  155. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  156. if BuffExpires(displacer_beast_buff) Spell(dash text="40-45")
  157. #not_in_melee_range_arrow
  158. Texture(misc_arrowlup help=L(not_in_melee_range) text="40-45")
  159. }
  160. if target.Distance(atLeast 35)
  161. {
  162. #displacer_beast,if=movement.distance>25
  163. if BuffExpires(prowl_buff) Spell(displacer_beast text="35-40")
  164. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  165. if BuffExpires(displacer_beast_buff) Spell(dash text="35-40")
  166. #not_in_melee_range_arrow
  167. Texture(misc_arrowlup help=L(not_in_melee_range) text="35-40")
  168. }
  169. if target.Distance(atLeast 30)
  170. {
  171. #displacer_beast,if=movement.distance>25
  172. if BuffExpires(prowl_buff) Spell(displacer_beast text="30-35")
  173. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  174. if BuffExpires(displacer_beast_buff) Spell(dash text="30-35")
  175. #not_in_melee_range_arrow
  176. Texture(misc_arrowlup help=L(not_in_melee_range) text="30-35")
  177. }
  178. if target.Distance(atLeast 25)
  179. {
  180. #wild_charge
  181. if target.InRange(wild_charge) Spell(wild_charge text="25-30")
  182. #displacer_beast,if=movement.distance>25
  183. if BuffExpires(prowl_buff) Spell(displacer_beast text="25-30")
  184. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  185. if BuffExpires(displacer_beast_buff) Spell(dash text="25-30")
  186. #not_in_melee_range_arrow
  187. Texture(misc_arrowlup help=L(not_in_melee_range) text="25-30")
  188. }
  189. if target.Distance(atLeast 20)
  190. {
  191. #wild_charge
  192. if target.InRange(wild_charge) Spell(wild_charge text="20-25")
  193. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  194. #if BuffExpires(displacer_beast_buff) Spell(dash text="20-25")
  195. #not_in_melee_range_arrow
  196. Texture(misc_arrowlup help=L(not_in_melee_range) text="20-25")
  197. }
  198. if target.Distance(atLeast 15)
  199. {
  200. #wild_charge
  201. if target.InRange(wild_charge) Spell(wild_charge text="15-20")
  202. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  203. #if BuffExpires(displacer_beast_buff) Spell(dash text="15-20")
  204. #not_in_melee_range_arrow
  205. Texture(misc_arrowlup help=L(not_in_melee_range) text="15-20")
  206. }
  207. if target.Distance(atLeast 10)
  208. {
  209. #wild_charge
  210. if target.InRange(wild_charge) Spell(wild_charge text="10-15")
  211. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  212. #if BuffExpires(displacer_beast_buff) Spell(dash text="10-15")
  213. #not_in_melee_range_arrow
  214. Texture(misc_arrowlup help=L(not_in_melee_range) text="10-15")
  215. }
  216. if target.Distance(atLeast 8)
  217. {
  218. #wild_charge
  219. if target.InRange(wild_charge) Spell(wild_charge text="8-10")
  220. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  221. #if BuffExpires(displacer_beast_buff) Spell(dash text="8-10")
  222. #not_in_melee_range_arrow
  223. Texture(misc_arrowlup help=L(not_in_melee_range) text="8-10")
  224. }
  225. if target.Distance(atLeast 5)
  226. {
  227. #wild_charge
  228. if target.InRange(wild_charge) Spell(wild_charge text="6-8")
  229. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  230. #if BuffExpires(displacer_beast_buff) Spell(dash text="6-8")
  231. #not_in_melee_range_arrow
  232. Texture(misc_arrowlup help=L(not_in_melee_range) text="6-8")
  233. }
  234. }
  235. if List(opt_melee_range_finder melee_range) and target.InRange(shred no)
  236. {
  237. #wild_charge
  238. if target.InRange(wild_charge) Spell(wild_charge)
  239. #displacer_beast,if=movement.distance>25
  240. if target.Distance(atLeast 25) if BuffExpires(prowl_buff) Spell(displacer_beast)
  241. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  242. if target.Distance(atLeast 25) and BuffExpires(displacer_beast_buff) Spell(dash)
  243. #not_in_melee_range_arrow
  244. Texture(misc_arrowlup help=L(not_in_melee_range))
  245. }
  246. }
  247.  
  248. AddFunction FeralInterruptActions
  249. {
  250. if CheckBoxOn(opt_interrupt) and not target.IsFriend() and target.Casting()
  251. {
  252. #skull_bash
  253. if target.InRange(skull_bash) and target.IsInterruptible() Spell(skull_bash)
  254. #mighty_bash
  255. if target.InRange(mighty_bash) and not target.Classification(worldboss) Spell(mighty_bash)
  256. #maim
  257. if target.InRange(maim) and not target.Classification(worldboss) Spell(maim)
  258. #war_stomp
  259. if target.Distance(less 5) and not target.Classification(worldboss) Spell(war_stomp)
  260. #typhoon
  261. if target.Distance(less 15) and not target.Classification(worldboss) Spell(typhoon)
  262. }
  263. }
  264.  
  265. #Tiger's Fury multiplier prediction
  266. AddFunction TFMultPred asvalue=1
  267. {
  268. if CheckBoxOn(opt_tigers_fury_multiplier_predict)
  269. and BuffExpires(tigers_fury_buff)
  270. and SpellCooldown(tigers_fury equal 0)
  271. and FeralTigersFuryConditions() 1.15
  272. 1
  273. }
  274.  
  275. ########################################################################################################################
  276. ### actions.opener
  277. ########################################################################################################################
  278.  
  279. # MODIFICATION: List(opt_use_opener opener_always) or List(opt_use_opener opener_bosses_only) and target.Classification(worldboss)
  280. # REASON: Allow the user to choose when to use the opener
  281. AddFunction FeralOpenerConditions
  282. {
  283. TimeInCombat(less 15)
  284. and { List(opt_use_opener opener_always)
  285. or List(opt_use_opener opener_bosses_only) and target.Classification(worldboss) }
  286. }
  287.  
  288. AddFunction FeralOpenerMainActions
  289. {
  290. #moonfire_cat,if=talent.lunar_inspiration.enabled&!ticking
  291. if Talent(lunar_inspiration_talent)
  292. and target.DebuffExpires(moonfire_cat_debuff)
  293. Spell(moonfire_cat)
  294.  
  295. #savage_roar,if=buff.savage_roar.down&!dot.rip.ticking
  296. if BuffExpires(savage_roar_buff)
  297. and target.DebuffExpires(rip_debuff)
  298. Spell(savage_roar)
  299.  
  300. #regrowth,if=talent.sabertooth.enabled&talent.bloodtalons.enabled&buff.bloodtalons.down&combo_points=5&!dot.rip.ticking
  301. if Talent(sabertooth_talent)
  302. and Talent(bloodtalons_talent)
  303. and BuffExpires(bloodtalons_buff)
  304. and ComboPoints(equal 5)
  305. and target.DebuffExpires(rip_debuff)
  306. {
  307. if BuffExpires(predatory_swiftness_buff) Spell(regrowth text=hardcast)
  308. Spell(regrowth)
  309. }
  310.  
  311. if target.DebuffPresent(ashamanes_frenzy_debuff)
  312. and target.DebuffPresent(rip_debuff)
  313. and BuffPresent(incarnation_king_of_the_jungle_buff)
  314. {
  315. #ferocious_bite,if=dot.rip.ticking&buff.incarnation.up&dot.ashamanes_frenzy.ticking&combo_points=5
  316. if ComboPoints(equal 5)
  317. Spell(ferocious_bite)
  318.  
  319. #rake,if=dot.ashamanes_frenzy.ticking&combo_points<5&prev.rip
  320. if ComboPoints(equal 0) and target.DebuffRemaining(ashamanes_frenzy_debuff more 5)
  321. # PreviousGCDSpell(rip) #TODO Not working in Ovale
  322. Spell(rake)
  323. }
  324. }
  325.  
  326. AddFunction FeralOpenerShortCdActions
  327. {
  328. #tigers_fury,if=dot.ashamanes_frenzy.ticking
  329. if target.DebuffPresent(ashamanes_frenzy_debuff)
  330. Spell(tigers_fury)
  331.  
  332. # MODIFICATION: Display Blank
  333. # REASON: Hide the AF suggestion until the appropriate time during the opener.
  334. if BuffExpires(savage_roar_buff) and target.DebuffExpires(rip_debuff) True()
  335. }
  336.  
  337. AddFunction FeralOpenerCdActions
  338. {
  339. # MODIFICATION: target.DebuffPresent(ashamanes_frenzy_debuff)
  340. # REASON: Make Berserk/Incarnation show up for use with Tiger's Fury
  341. if target.DebuffPresent(ashamanes_frenzy_debuff)
  342. {
  343. Spell(berserk_cat)
  344. Spell(incarnation_king_of_the_jungle)
  345. }
  346. }
  347.  
  348. ########################################################################################################################
  349. ### actions.default
  350. ########################################################################################################################
  351.  
  352. AddFunction FeralProwlRakeConditions
  353. {
  354. BuffPresent(prowl_buff)
  355. or BuffPresent(shadowmeld_buff)
  356. or BuffPresent(incarnation_king_of_the_jungle_buff)
  357. and BuffRemaining(incarnation_king_of_the_jungle_buff less 1)
  358. and not Talent(bloodtalons_talent)
  359. }
  360.  
  361. AddFunction FeralDefaultMainActions
  362. {
  363. #cat_form,if=buff.cat_form.down
  364. if BuffExpires(cat_form_buff)
  365. Spell(cat_form)
  366.  
  367. #rake,if=buff.prowl.up|buff.shadowmeld.up|(buff.incarnation.up&buff.incarnation.remains<1&!talent.bloodtalons.enabled)
  368. if FeralProwlRakeConditions()
  369. Spell(rake pool_resource=1 text=Prowl)
  370.  
  371. #call_action_list,name=opener,if=time<15
  372. if FeralOpenerConditions()
  373. FeralOpenerMainActions()
  374.  
  375. #call_action_list,name=cooldowns
  376. FeralCooldownsMainActions()
  377.  
  378. #ferocious_bite,target_if=dot.rip.ticking&dot.rip.remains<3&target.time_to_die>10&target.health.pct<=variable.execute_percent
  379. if target.DebuffPresent(rip_debuff)
  380. and target.DebuffRemaining(rip_debuff less 3)
  381. and target.TimeToDie(more 10)
  382. and target.HealthPercent() <= execute_percent()
  383. Spell(ferocious_bite text=Refresh)
  384.  
  385. #call_action_list,name=bloodtalons,if=talent.bloodtalons.enabled&buff.predatory_swiftness.up&buff.bloodtalons.down
  386. if FeralBloodtalonsActionsConditions()
  387. FeralBloodtalonsMainActions()
  388.  
  389. #ferocious_bite,if=buff.apex_predator.up
  390. if BuffPresent(apex_predator_buff)
  391. Spell(ferocious_bite text=Apex)
  392.  
  393. #run_action_list,name=finishers,if=combo_points>4
  394. if ComboPoints(equal 5)
  395. FeralFinishersMainActions()
  396.  
  397. #run_action_list,name=generators
  398. if ComboPoints(less 5)
  399. FeralGeneratorsMainActions()
  400. }
  401.  
  402. AddFunction FeralDefaultShortCdActions
  403. {
  404. # MODIFICATION: Move above unless
  405. # REASON: To show during opener
  406. #auto_attack
  407. FeralGetInMeleeRange()
  408.  
  409. unless BuffExpires(cat_form_buff) and Spell(cat_form) or FeralProwlRakeConditions() and Spell(rake pool_resource=1)
  410. {
  411. #call_action_list,name=opener,if=time<15
  412. if FeralOpenerConditions()
  413. FeralOpenerShortCdActions()
  414.  
  415. #call_action_list,name=cooldowns
  416. FeralCooldownsShortCdActions()
  417.  
  418. #call_action_list,name=bloodtalons,if=talent.bloodtalons.enabled&buff.predatory_swiftness.up&buff.bloodtalons.down
  419. if FeralBloodtalonsActionsConditions()
  420. FeralBloodtalonsShortCdActions()
  421. }
  422. }
  423.  
  424. AddFunction FeralDefaultCdActions
  425. {
  426. unless BuffExpires(cat_form_buff) and Spell(cat_form) or FeralProwlRakeConditions() and Spell(rake pool_resource=1)
  427. {
  428. # MODIFICATION: Interrupt
  429. # REASON: No longer automatically added
  430. #skull_bash
  431. FeralInterruptActions()
  432.  
  433. #call_action_list,name=opener,if=time<15
  434. if FeralOpenerConditions()
  435. FeralOpenerCdActions()
  436.  
  437. #call_action_list,name=cooldowns
  438. FeralCooldownsCdActions()
  439.  
  440. }
  441. }
  442.  
  443. ########################################################################################################################
  444. ### actions.cooldowns
  445. ########################################################################################################################
  446.  
  447. AddFunction FeralTigersFuryConditions
  448. {
  449. EnergyDeficit(atLeast 60)
  450. }
  451.  
  452. # MODIFICATION: { target.TimeToDie(more 20) or target.Classification(worldboss) and Enemies(equal 1) }
  453. # REASON: Does not use Regrowth for Ashamane's Frenzy on targets with less than 20 seconds to live
  454. AddFunction FeralAshamanesFrenzyConditions
  455. {
  456. ComboPoints(less 5)
  457. and { not Talent(bloodtalons_talent) or BuffPresent(bloodtalons_buff) }
  458. and { target.TimeToDie(more 20) or target.Classification(worldboss) and Enemies(equal 1) }
  459. }
  460.  
  461. # MODIFICATION: { target.TimeToDie(more 20) or target.Classification(worldboss) and Enemies(equal 1) }
  462. # REASON: Does not use Shadowmeld on targets with less than BaseDuration(rake_debuff) + 5 seconds to live
  463. # MODIFICATION: target.InRange(rake)
  464. # REASON: Cannot move after Shadowmeld so add range check before suggesting
  465. # MODIFICATION: TFMultPred() > 1 when CheckBoxOn(opt_tigers_fury_multiplier_predict)
  466. # REASON: Make Shadowmeld show up if Tiger's Fury conditions are met
  467. AddFunction FeralShadowmeldConditions
  468. {
  469. ComboPoints(less 5)
  470. and Energy() >= PowerCost(rake)
  471. and target.DebuffPersistentMultiplier(rake_debuff less 2.1)
  472. and { BuffPresent(tigers_fury_buff) or TFMultPred() > 1 }
  473. and { not Talent(bloodtalons_talent) or BuffPresent(bloodtalons_buff) }
  474. and { not Talent(incarnation_talent) or SpellCooldown(incarnation_king_of_the_jungle more 18) }
  475. and BuffExpires(incarnation_king_of_the_jungle_buff)
  476. and { target.TimeToDie(more 20) or target.Classification(worldboss) and Enemies(equal 1) }
  477. and target.InRange(rake)
  478. }
  479.  
  480. AddFunction FeralCooldownsMainActions
  481. {
  482. # MODIFICATION: List(opt_cooldowns_as_main_action cdmain_af_main_sm_cd) or List(opt_cooldowns_as_main_action cdmain_af_main_sm_main)
  483. # REASON: Allows user to choose for AF suggestions to be in the main icon.
  484. #ashamanes_frenzy,if=combo_points<=4&(!talent.bloodtalons.enabled|buff.bloodtalons.up)
  485. if FeralAshamanesFrenzyConditions()
  486. and { List(opt_cooldowns_as_main_action cdmain_af_main_sm_cd)
  487. or List(opt_cooldowns_as_main_action cdmain_af_main_sm_main) }
  488. Spell(ashamanes_frenzy)
  489.  
  490. # MODIFICATION: List(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_main) or List(opt_cooldowns_as_main_action cdmain_af_main_sm_main)
  491. # REASON: Allows player to choose for Shadowmeld suggestions to be in the main Icon
  492. #shadowmeld,if=combo_points<5&energy>=action.rake.cost&dot.rake.pmultiplier<2.1&buff.tigers_fury.up&(!talent.bloodtalons.enabled|buff.bloodtalons.up)&(!talent.incarnation.enabled|cooldown.incarnation.remains>18)&buff.incarnation.down
  493. if FeralShadowmeldConditions()
  494. and { List(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_main)
  495. or List(opt_cooldowns_as_main_action cdmain_af_main_sm_main)}
  496. Spell(shadowmeld)
  497. }
  498.  
  499. AddFunction FeralCooldownsShortCdActions
  500. {
  501. # MODIFICATION: 0.5 to 0.8
  502. # REASON: Players need more reaction time.
  503. #prowl,if=buff.incarnation.remains<0.5&buff.jungle_stalker.up
  504. if BuffRemaining(incarnation_king_of_the_jungle_buff less 0.8)
  505. and BuffPresent(jungle_stalker_buff)
  506. Spell(prowl)
  507.  
  508. # MODIFICATION: List(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_cd) or List(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_main)
  509. # REASON: Allows user to choose for AF suggestions to be in the shortcd icon.
  510. #ashamanes_frenzy,if=combo_points<=4&(!talent.bloodtalons.enabled|buff.bloodtalons.up)
  511. if FeralAshamanesFrenzyConditions()
  512. and { List(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_cd)
  513. or List(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_main) }
  514. {
  515. # MODIFICATION: Show "+TF" text on AF if you should also cast TF
  516. # REASON: Instead of TF blocking AF suggestion.
  517. if SpellCooldown(tigers_fury equal 0) and FeralTigersFuryConditions() Spell(ashamanes_frenzy text="+TF")
  518. Spell(ashamanes_frenzy)
  519. }
  520.  
  521. #tigers_fury,if=energy.deficit>=60
  522. if FeralTigersFuryConditions()
  523. Spell(tigers_fury)
  524.  
  525. # MODIFICATION: FeralPredatorConditions
  526. # REASON: Spam Tiger's Fury with predator in raid to maximize raid uptime of versatility buff
  527. if UnitInRaid()
  528. and Talent(predator_talent)
  529. and BuffPresent(tigers_fury_buff)
  530. Spell(tigers_fury text=Pred)
  531.  
  532. #elunes_guidance,if=combo_points=0&energy>=50
  533. if ComboPoints(equal 0) and Energy(atLeast 50)
  534. Spell(elunes_guidance)
  535. }
  536.  
  537. AddFunction FeralCooldownsCdActions
  538. {
  539. # MODIFICATION: TFMultPred() > 1 when CheckBoxOn(opt_tigers_fury_multiplier_predict)
  540. # REASON: Make Incarnation show up if Tiger's Fury conditions are met
  541. #incarnation,if=energy>=30&(cooldown.tigers_fury.remains>15|buff.tigers_fury.up)
  542. if TFMultPred() > 1
  543. or Energy(atLeast 30) and { SpellCooldown(tigers_fury more 15) or BuffPresent(tigers_fury_buff) }
  544. Spell(incarnation_king_of_the_jungle)
  545.  
  546. # MODIFICATION: TFMultPred() > 1 when CheckBoxOn(opt_tigers_fury_multiplier_predict)
  547. # REASON: Make Berserk show up if Tiger's Fury conditions are met
  548. #berserk,if=energy>=30&(cooldown.tigers_fury.remains>5|buff.tigers_fury.up)
  549. if TFMultPred() > 1
  550. or Energy(atLeast 30) and { SpellCooldown(tigers_fury more 5) or BuffPresent(tigers_fury_buff) }
  551. Spell(berserk_cat)
  552.  
  553. #berserking
  554. Spell(berserking)
  555.  
  556. #potion,name=prolonged_power,if=target.time_to_die<65|(time_to_die<180&(buff.berserk.up|buff.incarnation.up|(cooldown.incarnation.remains<25&cooldown.ashamanes_frenzy.remains<45)))
  557. if { target.TimeToDie(less 65)
  558. or target.TimeToDie(less 180)
  559. and { BuffPresent(berserk_cat_buff)
  560. or BuffPresent(incarnation_king_of_the_jungle_buff)
  561. or SpellCooldown(incarnation_king_of_the_jungle less 25)
  562. and SpellCooldown(ashamanes_frenzy less 45) } }
  563. and CheckBoxOn(opt_use_consumables)
  564. and target.Classification(worldboss)
  565. Item(prolonged_power_potion usable=1)
  566.  
  567. #shadowmeld,if=combo_points<5&energy>=action.rake.cost&dot.rake.pmultiplier<2.1&buff.tigers_fury.up&(!talent.bloodtalons.enabled|buff.bloodtalons.up)&(!talent.incarnation.enabled|cooldown.incarnation.remains>18)&buff.incarnation.down
  568. # MODIFICATION: List(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_cd) or List(opt_cooldowns_as_main_action cdmain_af_main_sm_cd)
  569. # REASON: Allows player to choose via checkbox whether to add Shadowmeld to the cd Icon
  570. if FeralShadowmeldConditions()
  571. and { List(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_cd)
  572. or List(opt_cooldowns_as_main_action cdmain_af_main_sm_cd) }
  573. Spell(shadowmeld)
  574.  
  575. #use_items
  576. FeralUseItemActions()
  577. }
  578.  
  579. ########################################################################################################################
  580. ### actions.bloodtalons
  581. ########################################################################################################################
  582.  
  583. AddFunction FeralBloodtalonsActionsConditions
  584. {
  585. Talent(bloodtalons_talent)
  586. and BuffPresent(predatory_swiftness_buff)
  587. and BuffExpires(bloodtalons_buff)
  588. }
  589.  
  590. # MODIFICATION: { target.TimeToDie(more 20) or target.Classification(worldboss) and Enemies(equal 1) }
  591. # REASON: Does not use Regrowth for Ashamane's Frenzy on targets with less than 21 seconds to live
  592. AddFunction FeralRegrowthForAshamanesFrenzyConditions
  593. {
  594. ComboPoints(less 5)
  595. and SpellCooldown(ashamanes_frenzy less 1)
  596. and { target.TimeToDie(more 20) or target.Classification(worldboss) and Enemies(equal 1) }
  597. }
  598.  
  599. AddFunction FeralBloodtalonsMainActions
  600. {
  601. # MODIFICATION: List(opt_cooldowns_as_main_action cdmain_af_main_sm_cd) or List(opt_cooldowns_as_main_action cdmain_af_main_sm_main)
  602. # REASON: Allows user to choose for AF suggestions to be in the main icon.
  603. #regrowth,if=combo_points<=4&cooldown.ashamanes_frenzy.remains<gcd
  604. if FeralRegrowthForAshamanesFrenzyConditions()
  605. and { List(opt_cooldowns_as_main_action cdmain_af_main_sm_cd)
  606. or List(opt_cooldowns_as_main_action cdmain_af_main_sm_main) }
  607. Spell(regrowth text=AF)
  608.  
  609. #regrowth,if=combo_points=4&dot.rake.remains<4
  610. if ComboPoints(equal 4)
  611. and target.DebuffRemaining(rake_debuff less 4)
  612. Spell(regrowth)
  613.  
  614. #regrowth,if=combo_points=5&(buff.incarnation.down|dot.rip.remains<8)
  615. if ComboPoints(equal 5)
  616. and { BuffExpires(incarnation_king_of_the_jungle_buff)
  617. or target.DebuffRemaining(rip_debuff less 8) }
  618. Spell(regrowth)
  619.  
  620. #regrowth,if=buff.apex_predator.up&buff.incarnation.down
  621. if BuffPresent(apex_predator_buff)
  622. and BuffExpires(incarnation_king_of_the_jungle_buff)
  623. Spell(regrowth text=Apex)
  624.  
  625. #regrowth,if=equipped.ailuro_pouncers&(buff.predatory_swiftness.stack>2|(buff.predatory_swiftness.stack>1&dot.rake.remains<3))
  626. if HasEquippedItem(ailuro_pouncers)
  627. and { BuffStacks(predatory_swiftness_buff less 2)
  628. or BuffStacks(predatory_swiftness_buff less 1)
  629. and target.DebuffRemaining(rake_debuff less 3) }
  630. Spell(regrowth text=pouncers)
  631.  
  632. #regrowth,if=buff.predatory_swiftness.remains<1.7
  633. if BuffRemaining(predatory_swiftness_buff less 1.7)
  634. Spell(regrowth text=expiring)
  635. }
  636.  
  637. AddFunction FeralBloodtalonsShortCdActions
  638. {
  639. # MODIFICATION: List(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_cd) or List(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_main)
  640. # REASON: Allows user to choose for AF suggestions to be in the shortcd icon.
  641. #regrowth,if=combo_points<=4&cooldown.ashamanes_frenzy.remains<gcd
  642. if FeralRegrowthForAshamanesFrenzyConditions()
  643. and { List(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_cd)
  644. or List(opt_cooldowns_as_main_action cdmain_af_shortcd_sm_main) }
  645. Spell(regrowth text=AF)
  646. }
  647.  
  648. ########################################################################################################################
  649. ### actions.finishers
  650. ########################################################################################################################
  651.  
  652. AddFunction FeralFinishersMainActions
  653. {
  654. #pool_resource,for_next=1
  655. #savage_roar,if=buff.savage_roar.down
  656. if BuffExpires(savage_roar_buff)
  657. Spell(savage_roar pool_resource=1)
  658.  
  659. # MODIFICATION: TFMultPred when CheckBoxOn(opt_tigers_fury_multiplier_predict)
  660. # REASON: When Tiger's Fury is suggested, treat Rip as if it is already up even if it hasn't been cast yet.
  661. #pool_resource,for_next=1
  662. #rip,target_if=(!ticking|(remains<=duration*0.3&target.health.pct>variable.execute_percent)|(remains<=duration*0.85&(persistent_multiplier>dot.rip.pmultiplier|(buff.tigers_fury.up&buff.tigers_fury.remains<1.5&target.health.pct>variable.execute_percent&equipped.behemoth_headdress))))&(target.time_to_die>4*tick_time*spell_targets.thrash_cat+remains|target.time_to_die>duration+remains)
  663. if { target.DebuffExpires(rip_debuff)
  664. or target.DebuffRemaining(rip_debuff) <= BaseDuration(rip_debuff) * 0.3
  665. and target.HealthPercent() > execute_percent()
  666. or target.DebuffRemaining(rip_debuff) <= BaseDuration(rip_debuff) * 0.85
  667. and { TFMultPred() * PersistentMultiplier(rip_debuff) > target.DebuffPersistentMultiplier(rip_debuff)
  668. or BuffPresent(tigers_fury_buff)
  669. and BuffRemaining(tigers_fury_buff less 1.5)
  670. and target.HealthPercent() > execute_percent()
  671. and HasEquippedItem(behemoth_headdress) } }
  672. and { target.TimeToDie() > 4 * target.TickTime(rip_debuff) * Enemies() + target.DebuffRemaining(rip_debuff)
  673. or target.TimeToDie() > BaseDuration(rip_debuff) + target.DebuffRemaining(rip_debuff) }
  674. Spell(rip pool_resource=1)
  675.  
  676. #pool_resource,for_next=1
  677. #savage_roar,if=buff.savage_roar.remains<12
  678. if BuffRemaining(savage_roar_buff less 12)
  679. Spell(savage_roar pool_resource=1)
  680.  
  681. #pool_resource,for_next=1
  682. #maim,if=buff.fiery_red_maimers.up
  683. if BuffPresent(fiery_red_maimers_buff)
  684. Spell(maim pool_resource=1)
  685.  
  686. #ferocious_bite,if=spell_targets.thrash_cat>2
  687. if Enemies(more 2)
  688. Spell(ferocious_bite)
  689.  
  690. #ferocious_bite,max_energy=1
  691. Spell(ferocious_bite pool_resource=1 max=1)
  692.  
  693. }
  694.  
  695. ########################################################################################################################
  696. ### actions.generators
  697. ########################################################################################################################
  698.  
  699. AddFunction Spell_thrash_cat
  700. {
  701. if BuffPresent(clearcasting_buff) Spell(thrash_cat text=CC pool_resource=1)
  702. Spell(thrash_cat pool_resource=1)
  703. }
  704.  
  705. AddFunction Spell_swipe_cat
  706. {
  707. if BuffPresent(clearcasting_buff) Spell(swipe_cat text=CC pool_resource=1)
  708. Spell(swipe_cat pool_resource=1)
  709. }
  710.  
  711. AddFunction Spell_shred
  712. {
  713. if BuffPresent(clearcasting_buff) Spell(shred text=CC pool_resource=1)
  714. Spell(shred pool_resource=1)
  715. }
  716.  
  717. AddFunction BrutalSlashDesiredTargets asvalue=1
  718. {
  719. if List(opt_desired_targets desired_targets_01) 1
  720. if List(opt_desired_targets desired_targets_02) 2
  721. if List(opt_desired_targets desired_targets_03) 3
  722. if List(opt_desired_targets desired_targets_04) 4
  723. if List(opt_desired_targets desired_targets_05) 5
  724. 6
  725. }
  726.  
  727. AddFunction FeralGeneratorsMainActions
  728. {
  729. # MODIFICATION: and { BuffPresent(tigers_fury) and { List(opt_brutal_slash_behavior brs_02_only_tigers_fury) or List(opt_brutal_slash_behavior brs_03_both) }
  730. # REASON: Only use Brutal Slash if Tiger's Fury is up
  731. #brutal_slash,if=spell_targets.brutal_slash>desired_targets
  732. if Enemies() >= BrutalSlashDesiredTargets()
  733. and { BuffPresent(tigers_fury)
  734. or List(opt_brutal_slash_behavior brs_01_prevent_capping)
  735. or List(opt_brutal_slash_behavior brs_04_neither) }
  736. Spell(brutal_slash pool_resource=1)
  737. #pool_resource,for_next=1
  738. #thrash_cat,if=spell_targets.thrash_cat>2&(refreshable|(spell_targets.thrash_cat>6+buff.incarnation.up&talent.brutal_slash.enabled))
  739. if Enemies(more 2)
  740. and { target.Refreshable(thrash_cat_debuff)
  741. or Enemies() > 6 + BuffPresent(incarnation_king_of_the_jungle_buff)
  742. and Talent(brutal_slash_talent) }
  743. Spell_thrash_cat()
  744.  
  745. #pool_resource,for_next=1
  746. #rake,target_if=(!ticking|(!talent.bloodtalons.enabled&remains<duration*0.3)|(talent.bloodtalons.enabled&buff.bloodtalons.up&remains<=7&persistent_multiplier>dot.rake.pmultiplier*0.85))&(target.time_to_die>tick_time*spell_targets.thrash_cat+remains|target.time_to_die>duration+remains)
  747. if { target.DebuffExpires(rake_debuff)
  748. or Talent(bloodtalons_talent no)
  749. and target.DebuffRefreshable(rake_debuff)
  750. or Talent(bloodtalons_talent)
  751. and BuffPresent(bloodtalons_buff)
  752. and target.DebuffRemaining(rake_debuff less 7)
  753. and PersistentMultiplier(rake_debuff) > target.DebuffPersistentMultiplier(rake_debuff) * 0.85
  754. }
  755. and { target.TimeToDie() > target.TickTime(rake_debuff) * Enemies() + target.DebuffRemaining(rake_debuff)
  756. or target.TimeToDie() > BaseDuration(rake_debuff) + target.DebuffRemaining(rake_debuff) }
  757. Spell(rake pool_resource=1)
  758.  
  759. # MODIFICATION: List(opt_brutal_slash_behavior brs_01_prevent_capping) or List(opt_brutal_slash_behavior brs_03_both)
  760. # REASON: Prevents capping of charges
  761. #brutal_slash,if=buff.tigers_fury.up&(raid_event.adds.in>(1+max_charges-charges_fractional)*recharge_time)
  762. if Charges(brutal_slash count=0 more 2.66)
  763. and { List(opt_brutal_slash_behavior brs_01_prevent_capping)
  764. or List(opt_brutal_slash_behavior brs_03_both) }
  765. Spell(brutal_slash)
  766.  
  767. #moonfire_cat,target_if=refreshable&target.time_to_die>14+remains
  768. if target.Refreshable(moonfire_cat_debuff)
  769. and target.TimeToDie() > 14 + target.DebuffRemaining(moonfire_cat_debuff)
  770. Spell(moonfire_cat)
  771. #pool_resource,for_next=1
  772. #thrash_cat,if=spell_targets.thrash_cat>!equipped.luffa_wrappings&(refreshable|(spell_targets.thrash_cat>1+buff.incarnation.up+!equipped.luffa_wrappings&talent.brutal_slash.enabled))
  773. if Enemies() > HasEquippedItem(luffa_wrappings no)
  774. and { target.Refreshable(thrash_cat_debuff)
  775. or Enemies() > 1 + BuffPresent(incarnation_king_of_the_jungle_buff) + HasEquippedItem(luffa_wrappings no)
  776. and Talent(brutal_slash_talent)
  777. }
  778. Spell_thrash_cat()
  779.  
  780. #pool_resource,for_next=1
  781. #swipe_cat,if=spell_targets.swipe_cat>1+buff.incarnation.up
  782. if Enemies() > 1 + BuffPresent(incarnation_king_of_the_jungle_buff)
  783. Spell_swipe_cat()
  784.  
  785. #shred,if=dot.rake.remains>(action.shred.cost+action.rake.cost-energy)%energy.regen|buff.clearcasting.react
  786. if target.DebuffRemaining(rake_debuff) > { PowerCost(shred) + PowerCost(rake) - Energy() } / EnergyRegenRate()
  787. or BuffPresent(clearcasting_buff)
  788. Spell_shred()
  789. }
  790.  
  791. ########################################################################################################################
  792. ### actions.precombat
  793. ########################################################################################################################
  794.  
  795. # MODIFICATION: and BuffRemaining(bloodtalons_buff less 20) and BuffExpires(prowl_buff)
  796. # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  797. AddFunction FeralPrecombatRegrowthConditions
  798. {
  799. Talent(bloodtalons_talent)
  800. and BuffRemaining(bloodtalons_buff less 20)
  801. and BuffExpires(prowl_buff)
  802. }
  803.  
  804. AddFunction FeralPrecombatMainActions
  805. {
  806. #flask
  807. #food
  808. #augmentation
  809. # MODIFICATION: FeralPrecombatRegrowthConditions()
  810. # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  811. #regrowth,if=talent.bloodtalons.enabled
  812. if FeralPrecombatRegrowthConditions()
  813. Spell(regrowth)
  814. #cat_form
  815. Spell(cat_form)
  816. # MODIFICATION: Savage Roar
  817. # REASON: To refresh SR between pulls
  818. #savage_roar
  819. if BuffRefreshable(savage_roar_buff) Spell(savage_roar)
  820. }
  821.  
  822. AddFunction FeralPrecombatShortCdActions
  823. {
  824. # MODIFICATION: FeralPrecombatRegrowthConditions()
  825. # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  826. unless FeralPrecombatRegrowthConditions() and Spell(regrowth)
  827. {
  828. #prowl
  829. Spell(prowl)
  830. }
  831. }
  832.  
  833. AddFunction FeralPrecombatCdActions
  834. {
  835. # MODIFICATION: FeralPrecombatRegrowthConditions()
  836. # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  837. unless FeralPrecombatRegrowthConditions() and Spell(regrowth)
  838. {
  839. #snapshot_stats
  840. #potion
  841. if CheckBoxOn(opt_use_consumables) and target.Classification(worldboss) Item(potion_of_prolonged_power_potion usable=1 text=Prepot)
  842. }
  843. }
  844.  
  845. ########################################################################################################################
  846. ### Feral icons.
  847. ########################################################################################################################
  848.  
  849. AddCheckBox(opt_druid_feral_aoe L(AOE) default specialization=feral)
  850.  
  851. AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=shortcd specialization=feral
  852. {
  853. unless InCombat()
  854. FeralPrecombatShortCdActions()
  855.  
  856. FeralDefaultShortCdActions()
  857. }
  858.  
  859. AddIcon checkbox=opt_druid_feral_aoe help=shortcd specialization=feral
  860. {
  861. unless InCombat()
  862. FeralPrecombatShortCdActions()
  863.  
  864. FeralDefaultShortCdActions()
  865. }
  866.  
  867. AddIcon enemies=1 help=main specialization=feral
  868. {
  869. unless InCombat()
  870. FeralPrecombatMainActions()
  871.  
  872. FeralDefaultMainActions()
  873. }
  874.  
  875. AddIcon checkbox=opt_druid_feral_aoe help=aoe specialization=feral
  876. {
  877. unless InCombat()
  878. FeralPrecombatMainActions()
  879.  
  880. FeralDefaultMainActions()
  881. }
  882.  
  883. AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=cd specialization=feral
  884. {
  885. unless InCombat()
  886. FeralPrecombatCdActions()
  887.  
  888. FeralDefaultCdActions()
  889. }
  890.  
  891. AddIcon checkbox=opt_druid_feral_aoe help=cd specialization=feral
  892. {
  893. unless InCombat()
  894. FeralPrecombatCdActions()
  895.  
  896. FeralDefaultCdActions()
  897. }
  898.  
  899. ### Required symbols
  900. # dash
  901. # cat_form_buff
  902. # cat_form
  903. # rake
  904. # prowl_buff
  905. # shadowmeld_buff
  906. # incarnation_king_of_the_jungle_buff
  907. # bloodtalons_talent
  908. # ferocious_bite
  909. # rip_debuff
  910. # predatory_swiftness_buff
  911. # bloodtalons_buff
  912. # apex_predator_buff
  913. # regrowth
  914. # ashamanes_frenzy
  915. # rake_debuff
  916. # ailuro_pouncers
  917. # prowl
  918. # jungle_stalker_buff
  919. # incarnation_king_of_the_jungle
  920. # tigers_fury
  921. # tigers_fury_buff
  922. # berserk_cat
  923. # berserking
  924. # elunes_guidance
  925. # prolonged_power_potion
  926. # berserk_cat_buff
  927. # shadowmeld
  928. # incarnation_talent
  929. # savage_roar
  930. # savage_roar_buff
  931. # rip
  932. # behemoth_headdress
  933. # maim
  934. # fiery_red_maimers_buff
  935. # brutal_slash
  936. # thrash_cat
  937. # thrash_cat_debuff
  938. # brutal_slash_talent
  939. # moonfire_cat
  940. # moonfire_cat_debuff
  941. # luffa_wrappings
  942. # swipe_cat
  943. # shred
  944. # clearcasting_buff
  945. # lunar_inspiration_talent
  946. # sabertooth_talent
  947. # potion_of_prolonged_power_potion
  948. # mangle
  949. # wild_charge
  950. # wild_charge_bear
  951. # wild_charge_cat
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement