Advertisement
Guest User

Untitled

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