Advertisement
Guest User

Feral Druid 7.1.0 Ovale Script

a guest
Oct 25th, 2016
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.65 KB | None | 0 0
  1. ### ShmooDude Feral and Guardian script
  2. ###
  3. ### Options:
  4. # Interrupt - Suggests use of interuptting abilities, including stuns/knockbacks on non-boss targets.
  5. #
  6. # Not in Melee Range - Suggests movement abilities if available or a forward arrow if you're out of range.
  7. #
  8. # Ashamane's Frenzy as main action - Puts the Ashamane's Frenzy suggestion in the main action box.
  9. # Requires TimeToDie of 20 seconds or more
  10. # If this is off, Ovale will not suggest regrowth at 2 Combo Points.
  11. # Shadowmeld as main action - Puts the Shadowmeld suggestion in the main action box.
  12. # Requires TimeToDie of 15 seconds or more
  13. # Suggested off except on (raid) bosses.
  14. # Elune's Guidance finisher prediction - Places the correct finisher in the main action box when EG is usable.
  15. # This will block the rest of the action list till you use EG so don't use if you're going to save EG.
  16. # Tiger's Fury multiplier prediction - Applies the Tiger's Fury multiplier if Tiger's Fury is ready.
  17. # e.g. If TF is being suggested, any Rip suggestions will assume you use TF first.
  18. # Only suggest Brutal Slash when Tiger's Fury is up
  19. # Good for Mythic+ to get the most damage out of your charges.
  20. # The setting below will ignore SR/TF constraints and suggest BS at 3 charges regardless.
  21. # Always use BS at 3 charges - Will suggest Brutal Slash if you are about to reach max charges.
  22. # Advantage: Helps not waste charges.
  23. # Disadvantage: Will probably not have 3 charges when AoE for the encounter shows up.
  24. # Min targets to suggest Brutal Slash - Minimum number of targets to suggest using Brutal Slash.
  25. # This will use all available Brutal Slash charges.
  26. # Following setting will affect when these are used.
  27.  
  28. Include(ovale_common)
  29. Include(ovale_trinkets_mop)
  30. Include(ovale_trinkets_wod)
  31. Include(ovale_druid_spells)
  32.  
  33. AddCheckBox(opt_interrupt L(interrupt) default specialization=feral)
  34. AddCheckBox(opt_melee_range L(not_in_melee_range) default specialization=feral)
  35. # AddCheckBox(opt_potion_agility ItemName(draenic_agility_potion) default specialization=feral)
  36. AddCheckBox(opt_ashamanes_frenzy_main_action "Ashamane's Frenzy as a main action" default specialization=feral)
  37. AddCheckBox(opt_shadowmeld_main_action "Shadowmeld as a main action" specialization=feral)
  38. AddCheckBox(opt_elunes_guidance_predict "Elune's Guidance finisher prediction" default specialization=feral)
  39. AddCheckBox(opt_tigers_fury_multiplier_predict "Tiger's Fury multiplier prediction" default specialization=feral)
  40. AddCheckBox(opt_brutal_slash_use_at_three_always "Always use BS at 3 charges" specialization=feral)
  41. AddCheckBox(opt_burtal_slash_use_with_tigers_fury "Only suggest BS when TF is up" specialization=feral)
  42. AddListItem(opt_desired_targets dt_2 "Min targets to suggest Brutal Slash = 2" specialization=feral)
  43. AddListItem(opt_desired_targets dt_3 "Min targets to suggest Brutal Slash = 3" specialization=feral default)
  44. AddListItem(opt_desired_targets dt_4 "Min targets to suggest Brutal Slash = 4" specialization=feral)
  45. AddListItem(opt_desired_targets dt_5 "Min targets to suggest Brutal Slash = 5" specialization=feral)
  46. AddListItem(opt_desired_targets dt_6 "Min targets to suggest Brutal Slash = 6" specialization=feral)
  47. AddListItem(opt_desired_targets dt_7 "Min targets to suggest Brutal Slash = 7" specialization=feral)
  48. AddListItem(opt_desired_targets dt_8 "Min targets to suggest Brutal Slash = 8" specialization=feral)
  49. AddListItem(opt_desired_targets dt_9 "Min targets to suggest Brutal Slash = 9" specialization=feral)
  50.  
  51. AddFunction BrutalSlashDesiredTargets asvalue=1
  52. {
  53. if List(opt_desired_targets dt_2) 2
  54. if List(opt_desired_targets dt_3) 3
  55. if List(opt_desired_targets dt_4) 4
  56. if List(opt_desired_targets dt_5) 5
  57. if List(opt_desired_targets dt_6) 6
  58. if List(opt_desired_targets dt_7) 7
  59. if List(opt_desired_targets dt_8) 8
  60. if List(opt_desired_targets dt_9) 9
  61. }
  62.  
  63. AddFunction TFMultPred asvalue=1
  64. {
  65. if CheckBoxOn(opt_tigers_fury_multiplier_predict)
  66. and SpellCooldown(tigers_fury) < GCDRemaining()
  67. and BuffExpires(tigers_fury_buff)
  68. and { BuffExpires(clearcasting_buff) and EnergyDeficit(atLeast 60)
  69. or EnergyDeficit(atLeast 80)
  70. or HasTrinket(t18_class_trinket) and BuffPresent(berserk_cat_buff) } 1.15
  71. 1
  72. }
  73.  
  74. AddFunction FeralUseItemActions
  75. {
  76. Item(Trinket0Slot usable=1)
  77. Item(Trinket1Slot usable=1)
  78. }
  79.  
  80. AddFunction FeralUsePotionAgility
  81. {
  82. if CheckBoxOn(opt_potion_agility) and target.Classification(worldboss) Item(draenic_agility_potion usable=1)
  83. }
  84.  
  85. AddFunction FeralInterruptActions
  86. {
  87. if CheckBoxOn(opt_interrupt) and not target.IsFriend() and target.IsInterruptible()
  88. {
  89. if target.InRange(skull_bash) Spell(skull_bash)
  90. if not target.Classification(worldboss)
  91. {
  92. if target.InRange(mighty_bash) Spell(mighty_bash)
  93. Spell(typhoon)
  94. if target.InRange(maim) Spell(maim)
  95. Spell(war_stomp)
  96. }
  97. }
  98. }
  99.  
  100. AddFunction FeralGetInMeleeRange
  101. {
  102. if CheckBoxOn(opt_melee_range) and target.InRange(shred no)
  103. {
  104. #wild_charge
  105. if target.InRange(wild_charge) Spell(wild_charge)
  106. #displacer_beast,if=movement.distance>25
  107. if target.distance(more 25) Spell(displacer_beast)
  108. #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  109. if target.distance(more 25) and BuffExpires(displacer_beast_buff) and True(wild_charge_movement_down) Spell(dash)
  110. Texture(misc_arrowlup help=L(not_in_melee_range))
  111. }
  112. }
  113.  
  114. AddFunction FeralFinisherConditions
  115. {
  116. #combo_points=5&(energy.time_to_max<1|buff.berserk.up|buff.incarnation.up|buff.elunes_guidance.up|cooldown.tigers_fury.remains<3|set_bonus.tier18_4pc|buff.clearcasting.react|talent.soul_of_the_forest.enabled|!dot.rip.ticking|(dot.rake.remains<1.5&spell_targets.swipe_cat<6))
  117. ComboPoints(atLeast 5)
  118. and { TimeToMaxEnergy(less 1)
  119. or BuffPresent(berserk_cat_buff)
  120. or BuffPresent(incarnation_king_of_the_jungle_buff)
  121. or BuffPresent(elunes_guidance_buff)
  122. or SpellCooldown(tigers_fury less 3)
  123. or ArmorSetBonus(T18 4)
  124. or BuffPresent(clearcasting_buff)
  125. or Talent(soul_of_the_forest_talent)
  126. or target.DebuffExpires(rip_debuff)
  127. or target.DebuffRemaining(rake_debuff less 1.7) and Enemies(less 6) }
  128. }
  129.  
  130. AddFunction FeralFerociousBiteConditions
  131. {
  132. #combo_points=5&(energy.time_to_max<1|buff.berserk.up|buff.incarnation.up|buff.elunes_guidance.up|cooldown.tigers_fury.remains<3|set_bonus.tier18_4pc|(talent.moment_of_clarity.enabled&buff.clearcasting.react)|talent.soul_of_the_forest.enabled)
  133. ComboPoints(atLeast 5)
  134. and { TimeToMaxEnergy(less 1)
  135. or BuffPresent(berserk_cat_buff)
  136. or BuffPresent(incarnation_king_of_the_jungle_buff)
  137. or BuffPresent(elunes_guidance_buff)
  138. or SpellCooldown(tigers_fury less 3)
  139. or ArmorSetBonus(T18 4)
  140. or Talent(moment_of_clarity_talent) and BuffPresent(clearcasting_buff)
  141. or Talent(soul_of_the_forest) }
  142. }
  143.  
  144. AddFunction ElunesGuidancePrediction
  145. {
  146. if Talent(elunes_guidance_talent) and SpellCooldown(elunes_guidance less 1) and ComboPoints(equal 0) and Energy() >= EnergyCost(ferocious_bite) + 25
  147. {
  148. #regrowth
  149. if Talent(bloodtalons_talent) and BuffPresent(predatory_swiftness_buff) Spell(regrowth)
  150. #ferocious_bite,cycle_targets=1,if=dot.rip.ticking&dot.rip.remains<3&target.time_to_die-dot.rip.remains>action.rip.tick_time&(target.health.pct<25|talent.sabertooth.enabled)
  151. if target.DebuffPresent(rip_debuff) and target.DebuffRemaining(rip_debuff less 3) and target.TimeToDie() - target.DebuffRemaining(rip_debuff) > target.TickTime(rip_debuff) and { target.HealthPercent(less 25) or Talent(sabertooth_talent) } Texture(ability_druid_ferociousbite)
  152. #savage_roar,if=buff.savage_roar.remains<gcd
  153. if BuffRemaining(savage_roar_buff less 1) Texture(ability_druid_skinteeth)
  154. #rip,cycle_targets=1,if=(!ticking|(remains<8&target.health.pct>25&!talent.sabertooth.enabled)|persistent_multiplier>dot.rip.pmultiplier)&target.time_to_die-remains>tick_time*4
  155. if { target.DebuffExpires(rip_debuff) or target.DebuffRemaining(rip_debuff less 8) and target.HealthPercent(more 25) and Talent(sabertooth_talent no) or TFMultPred() * PersistentMultiplier(rip_debuff) > target.DebuffPersistentMultiplier(rip_debuff) } and target.TimeToDie() - target.DebuffRemaining(rip_debuff) > target.TickTime(rip_debuff) * 4 Texture(ability_ghoulfrenzy)
  156. #savage_roar,if=buff.savage_roar.remains<=7.2
  157. if BuffRemaining(savage_roar_buff atMost 7.2) Texture(ability_druid_skinteeth)
  158. #ferocious_bite,max_energy=1,cycle_targets=1
  159. if Energy() >= EnergyCost(ferocious_bite) + 25 Texture(ability_druid_ferociousbite)
  160. }
  161. }
  162.  
  163. AddFunction FeralSbtOpenerMainActions
  164. {
  165. #regrowth,if=talent.bloodtalons.enabled&combo_points=5&!buff.bloodtalons.up&!dot.rip.ticking
  166. if Talent(bloodtalons_talent) and ComboPoints(atLeast 5) and BuffPresent(bloodtalons_buff no) and target.DebuffExpires(rip_debuff) Spell(regrowth)
  167. }
  168.  
  169. AddFunction FeralSbtOpenerShortCdActions
  170. {
  171. #tigers_fury,if=!dot.rip.ticking&combo_points=5
  172. if target.DebuffExpires(rip_debuff) and ComboPoints(atLeast 5) Spell(tigers_fury)
  173. }
  174.  
  175. AddFunction FeralDefaultMainActions
  176. {
  177. #dash,if=!buff.cat_form.up
  178. if Stance(druid_cat_form no) Spell(dash)
  179. #rake,if=buff.prowl.up|buff.shadowmeld.up
  180. if BuffPresent(prowl_buff) or BuffPresent(shadowmeld_buff) Spell(rake)
  181. #ferocious_bite,cycle_targets=1,if=dot.rip.ticking&dot.rip.remains<3&target.time_to_die>3&(target.health.pct<25|talent.sabertooth.enabled)
  182. if target.DebuffPresent(rip_debuff) and target.DebuffRemaining(rip_debuff less 3) and target.TimeToDie(more 3) and { target.HealthPercent(less 25) or Talent(sabertooth_talent) } Spell(ferocious_bite)
  183. #regrowth,if=talent.bloodtalons.enabled&buff.predatory_swiftness.up&(combo_points>=5|buff.predatory_swiftness.remains<1.5|(talent.bloodtalons.enabled&combo_points=2&buff.bloodtalons.down&cooldown.ashamanes_frenzy.remains<gcd)|(talent.elunes_guidance.enabled&((cooldown.elunes_guidance.remains<gcd&combo_points=0)|(buff.elunes_guidance.up&combo_points>=4))))
  184. if Talent(bloodtalons_talent) and BuffPresent(predatory_swiftness_buff)
  185. and { ComboPoints(atLeast 5) and BuffExpires(bloodtalons_buff)
  186. or BuffRemaining(predatory_swiftness_buff less 1.7)
  187. or Talent(bloodtalons_talent) and ComboPoints(equal 2) and BuffExpires(bloodtalons_buff) and SpellCooldown(ashamanes_frenzy less 1) and target.TimeToDie(more 21) and { BuffRemaining(savage_roar more 1.5) or Talent(savage_roar_talent no) } and CheckBoxOn(opt_ashamanes_frenzy_main_action)
  188. or Talent(elunes_guidance_talent) and BuffExpires(bloodtalons_buff) and { SpellCooldown(elunes_guidance less 1) and ComboPoints(equal 0) or BuffPresent(elunes_guidance_buff) and ComboPoints(atLeast 4) } and CheckBoxOn(opt_elunes_guidance_predict) } Spell(regrowth)
  189. #call_action_list,name=sbt_opener,if=talent.sabertooth.enabled&time<20
  190. if Talent(sabertooth_talent) and TimeInCombat(less 20) and target.Classification(worldboss) FeralSbtOpenerMainActions()
  191. #regrowth,if=equipped.ailuro_pouncers&talent.bloodtalons.enabled&buff.predatory_swiftness.stack>1&buff.bloodtalons.down
  192. if HasEquippedItem(ailuro_pouncers slot=FeetSlot) and Talent(bloodtalons_talent) and BuffStacks(predatory_swiftness_buff) > 1 and BuffExpires(bloodtalons_buff) Spell(regrowth)
  193. #pool_resource,for_next=1
  194. #savage_roar,if=!buff.savage_roar.up&(combo_points=5|(talent.brutal_slash.enabled&spell_targets.brutal_slash>desired_targets&action.brutal_slash.charges>0))
  195. if BuffExpires(savage_roar_buff)
  196. and { ComboPoints(equal 5)
  197. or Talent(brutal_slash_talent)
  198. and Enemies() >= BrutalSlashDesiredTargets()
  199. and Charges(brutal_slash more 0)
  200. and { BuffPresent(tigers_fury_buff) or CheckBoxOff(opt_burtal_slash_use_with_tigers_fury) } } Spell(savage_roar pool_resource=1)
  201. #pool_resource,for_next=1
  202. #thrash_cat,cycle_targets=1,if=remains<=duration*0.3&spell_targets.thrash_cat>=5
  203. if target.DebuffRemaining(thrash_cat_debuff) <= BaseDuration(thrash_cat_debuff) * 0.3 and Enemies(atLeast 5) Spell(thrash_cat pool_resource=1)
  204. #pool_resource,for_next=1
  205. #swipe_cat,if=spell_targets.swipe_cat>=8
  206. if Enemies(atLeast 8) Spell(swipe_cat pool_resource=1)
  207. ### FeralFinisherConditions
  208. if FeralFinisherConditions()
  209. {
  210. #rip,cycle_targets=1,if=(!ticking|(remains<8&target.health.pct>25&!talent.sabertooth.enabled)|persistent_multiplier>dot.rip.pmultiplier)&target.time_to_die-remains>tick_time*4&combo_points=5&(energy.time_to_max<1|buff.berserk.up|buff.incarnation.up|buff.elunes_guidance.up|cooldown.tigers_fury.remains<3|set_bonus.tier18_4pc|buff.clearcasting.react|talent.soul_of_the_forest.enabled|!dot.rip.ticking|(dot.rake.remains<1.5&spell_targets.swipe_cat<6))
  211. if target.TimeToDie() - target.DebuffRemaining(rip_debuff) > target.TickTime(rip_debuff) * 4
  212. and { target.DebuffExpires(rip_debuff)
  213. or target.DebuffRemaining(rip_debuff less 8) and target.HealthPercent(more 25) and Talent(sabertooth_talent no)
  214. or TFMultPred() * PersistentMultiplier(rip_debuff) > target.DebuffPersistentMultiplier(rip_debuff) } Spell(rip)
  215. #savage_roar,if=(buff.savage_roar.remains<10.5|(buff.savage_roar.remains<=7.2&!talent.jagged_wounds.enabled))&combo_points=5&(energy.time_to_max<1|buff.berserk.up|buff.incarnation.up|buff.elunes_guidance.up|cooldown.tigers_fury.remains<3|set_bonus.tier18_4pc|buff.clearcasting.react|talent.soul_of_the_forest.enabled|!dot.rip.ticking|(dot.rake.remains<1.5&spell_targets.swipe_cat<6))
  216. if BuffRemaining(savage_roar_buff atMost 10.5)
  217. or BuffRemaining(savage_roar_buff atMost 7.2) and Talent(jagged_wounds_talent no)
  218. or BuffExpires(savage_roar_buff) Spell(savage_roar)
  219. }
  220. if FeralFerociousBiteConditions()
  221. {
  222. #swipe_cat,if=combo_points=5&(spell_targets.swipe_cat>=6|(spell_targets.swipe_cat>=3&!talent.bloodtalons.enabled))&combo_points=5&(energy.time_to_max<1|buff.berserk.up|buff.incarnation.up|buff.elunes_guidance.up|cooldown.tigers_fury.remains<3|set_bonus.tier18_4pc|(talent.moment_of_clarity.enabled&buff.clearcasting.react))
  223. if Enemies(atLeast 6) or Enemies(atLeast 3) and Talent(bloodtalons_talent no) and Talent(soul_of_the_forest_talent no) Spell(swipe_cat)
  224. #ferocious_bite,max_energy=1,cycle_targets=1,if=combo_points=5&(energy.time_to_max<1|buff.berserk.up|buff.incarnation.up|buff.elunes_guidance.up|cooldown.tigers_fury.remains<3|set_bonus.tier18_4pc|(talent.moment_of_clarity.enabled&buff.clearcasting.react))
  225. Spell(ferocious_bite extra_amount=25)
  226. }
  227. #brutal_slash,if=spell_targets.brutal_slash>desired_targets&combo_points<5
  228. if Enemies() >= BrutalSlashDesiredTargets()
  229. and ComboPoints(less 5)
  230. and { BuffPresent(tigers_fury_buff) or CheckBoxOff(opt_burtal_slash_use_with_tigers_fury) }
  231. or { Charges(brutal_slash equal 3) and CheckBoxOn(opt_brutal_slash_use_at_three_always) } Spell(brutal_slash)
  232. #ashamanes_frenzy,if=combo_points<=2&buff.elunes_guidance.down&(buff.bloodtalons.up|!talent.bloodtalons.enabled)
  233. if CheckBoxOn(opt_ashamanes_frenzy_main_action)
  234. and ComboPoints(atMost 2)
  235. and BuffExpires(elunes_guidance_buff)
  236. and { BuffPresent(bloodtalons_buff) or Talent(bloodtalons_talent no) }
  237. and { BuffPresent(savage_roar_buff) or Talent(savage_roar_talent no) }
  238. and target.TimeToDie(more 20) Spell(ashamanes_frenzy)
  239. #pool_resource,if=talent.elunes_guidance.enabled&combo_points=0&energy<action.ferocious_bite.cost+25-energy.regen*cooldown.elunes_guidance.remains
  240. unless Talent(elunes_guidance_talent) and ComboPoints(equal 0) and Energy() < EnergyCost(ferocious_bite) + 25 - EnergyRegenRate() * SpellCooldown(elunes_guidance)
  241. {
  242. #pool_resource,for_next=1
  243. #thrash_cat,if=talent.brutal_slash.enabled&spell_targets.thrash_cat>=9
  244. if Talent(brutal_slash_talent) and Enemies(atLeast 9) Spell(thrash_cat pool_resource=1)
  245. #pool_resource,for_next=1
  246. #swipe_cat,if=spell_targets.swipe_cat>=6
  247. if Enemies(atLeast 6) Spell(swipe_cat pool_resource=1)
  248. #shadowmeld,if=combo_points<5&energy>=action.rake.cost&dot.rake.pmultiplier<2.1&buff.tigers_fury.up&(buff.bloodtalons.up|!talent.bloodtalons.enabled)&(!talent.incarnation.enabled|cooldown.incarnation.remains>18)&!buff.incarnation.up
  249. if CheckBoxOn(opt_shadowmeld_main_action)
  250. and ComboPoints(less 5)
  251. and Energy() >= EnergyCost(rake)
  252. and target.DebuffPersistentMultiplier(rake_debuff less 2.1)
  253. and BuffPresent(tigers_fury_buff)
  254. and { BuffPresent(bloodtalons_buff) or Talent(bloodtalons_talent no) }
  255. and { Talent(incarnation_talent no) or SpellCooldown(incarnation_king_of_the_jungle more 18) }
  256. and BuffExpires(incarnation_king_of_the_jungle_buff)
  257. and target.TimeToDie() > BaseDuration(rake_debuff) + 5
  258. and target.InRange(rake) Spell(shadowmeld)
  259. #pool_resource,for_next=1
  260. #rake,cycle_targets=1,if=combo_points<5&(!ticking|(!talent.bloodtalons.enabled&remains<duration*0.3)|(talent.bloodtalons.enabled&buff.bloodtalons.up&(!talent.soul_of_the_forest.enabled&remains<=7|remains<=5)&persistent_multiplier>dot.rake.pmultiplier*0.80))&target.time_to_die-remains>tick_time
  261. if ComboPoints(less 5)
  262. and { target.DebuffExpires(rake_debuff)
  263. or Talent(bloodtalons_talent no) and target.DebuffRemaining(rake_debuff) < BaseDuration(rake_debuff) * 0.3
  264. or Talent(bloodtalons_talent) and BuffPresent(bloodtalons_buff) and { Talent(soul_of_the_forest_talent no) and target.DebuffRemaining(rake_debuff) <= 7 or target.DebuffRemaining(rake_debuff) <= 5 }
  265. and PersistentMultiplier(rake_debuff) > target.DebuffPersistentMultiplier(rake_debuff) * 0.8 } and target.TimeToDie() - target.DebuffRemaining(rake_debuff) > target.TickTime(rake_debuff) Spell(rake pool_resource=1)
  266. #moonfire_cat,cycle_targets=1,if=combo_points<5&remains<=4.2&target.time_to_die-remains>tick_time*2
  267. if ComboPoints(less 5) and target.DebuffRemaining(moonfire_cat_debuff atMost 4.2) and target.TimeToDie() - target.DebuffRemaining(moonfire_cat_debuff) > target.TickTime(moonfire_cat_debuff) * 2 Spell(moonfire_cat)
  268. #pool_resource,for_next=1
  269. #thrash_cat,cycle_targets=1,if=remains<=duration*0.3&spell_targets.swipe_cat>=2
  270. if target.DebuffRemaining(thrash_cat_debuff) <= BaseDuration(thrash_cat_debuff) * 0.3 and Enemies(atLeast 2) Spell(thrash_cat pool_resource=1)
  271. #brutal_slash,if=combo_points<5&((raid_event.adds.exists&raid_event.adds.in>(1+max_charges-charges_fractional)*15)|(!raid_event.adds.exists&(charges_fractional>2.66&time>10)))
  272. # if ComboPoints(less 5) and { False(raid_event_adds_exists) and 600 > { 1 + SpellMaxCharges(brutal_slash) - Charges(brutal_slash count=0) } * 15 or not False(raid_event_adds_exists) and Charges(brutal_slash count=0) > 2.66 and TimeInCombat() > 10 } Spell(brutal_slash)
  273. #swipe_cat,if=combo_points<5&spell_targets.swipe_cat>=3
  274. if ComboPoints(less 5) and Enemies(atLeast 3) Spell(swipe_cat)
  275. #shred,if=combo_points<5&(spell_targets.swipe_cat<3|talent.brutal_slash.enabled)&(energy.time_to_max<1|buff.clearcasting.react|buff.berserk.up|buff.incarnation.up|cooldown.tigers_fury.remains<2|talent.soul_of_the_forest.enabled|(75-energy)%energy.regen<dot.rake.remains)
  276. if ComboPoints(less 5) and { Enemies(less 3) or Talent(brutal_slash_talent) } and { TimeToMaxEnergy(less 1) or BuffPresent(clearcasting_buff) or BuffPresent(berserk_cat_buff) or BuffPresent(incarnation_king_of_the_jungle_buff) or SpellCooldown(tigers_fury less 2) or Talent(soul_of_the_forest_talent) or TimeToEnergy(75) < target.DebuffRemaining(rake_debuff) } Spell(shred)
  277. }
  278. }
  279.  
  280. AddFunction FeralBtFillerMainActions
  281. {
  282. #shred,if=(buff.berserk.up|buff.incarnation.up|buff.clearcasting.react)
  283. if BuffPresent(berserk_cat_buff) or BuffPresent(incarnation_king_of_the_jungle_buff) or BuffPresent(clearcasting_buff) Spell(shred)
  284. #shred,if=cooldown.tigers_fury.remains<2&buff.bloodtalons.down
  285. if SpellCooldown(tigers_fury) < 2 and BuffExpires(bloodtalons_buff) Spell(shred)
  286. #shred,if=(75-energy)%energy.regen<dot.rake.remains&buff.bloodtalons.down
  287. if { 75 - Energy() } / EnergyRegenRate() < target.DebuffRemaining(rake_debuff) and BuffExpires(bloodtalons_buff) Spell(shred)
  288. #shred,if=energy.time_to_max<1&buff.bloodtalons.down
  289. if TimeToMaxEnergy() < 1 and BuffExpires(bloodtalons_buff) Spell(shred)
  290. #moonfire,if=cooldown.tigers_fury.remains<2&buff.bloodtalons.up
  291. if SpellCooldown(tigers_fury) < 2 and BuffPresent(bloodtalons_buff) Spell(moonfire_cat)
  292. #moonfire,if=energy.time_to_max<1&buff.bloodtalons.up
  293. if TimeToMaxEnergy() < 1 and BuffPresent(bloodtalons_buff) Spell(moonfire_cat)
  294. }
  295.  
  296. AddFunction TigersFuryConditions
  297. {
  298. { BuffExpires(clearcasting_buff) and EnergyDeficit(atLeast 60) or EnergyDeficit(atLeast 80) or HasTrinket(t18_class_trinket) and BuffPresent(berserk_cat_buff) and BuffExpires(tigers_fury_buff) } and Spell(tigers_fury)
  299. }
  300.  
  301. AddFunction FeralDefaultShortCdActions
  302. {
  303. FeralGetInMeleeRange()
  304. #tigers_fury,if=(!buff.clearcasting.react&energy.deficit>=60)|energy.deficit>=80|(t18_class_trinket&buff.berserk.up&buff.tigers_fury.down)
  305. if TigersFuryConditions() Spell(tigers_fury)
  306. #tigers_fury,if=talent.sabertooth.enabled&time<20&!dot.rip.ticking&combo_points=5
  307. if Talent(sabertooth_talent) and TimeInCombat(less 20) and target.Classification(worldboss) and target.DebuffExpires(rip_debuff) and ComboPoints(equal 5) and BuffPresent(bloodtalons_buff) Spell(tigers_fury)
  308. #ashamanes_frenzy,if=combo_points<=2&buff.elunes_guidance.down&(buff.bloodtalons.up|!talent.bloodtalons.enabled)
  309. if CheckBoxOff(opt_ashamanes_frenzy_main_action) and ComboPoints(atMost 2) and BuffExpires(elunes_guidance_buff) and { BuffPresent(bloodtalons_buff) or Talent(bloodtalons_talent no) } and { BuffPresent(savage_roar_buff) or Talent(savage_roar_talent no) } Spell(ashamanes_frenzy)
  310. #elunes_guidance,if=talent.elunes_guidance.enabled&combo_points=0&energy>=action.ferocious_bite.cost+25
  311. if Talent(elunes_guidance_talent) and ComboPoints(equal 0) and Energy() >= EnergyCost(ferocious_bite) + 25 Spell(elunes_guidance)
  312. }
  313.  
  314. AddFunction FeralDefaultCdActions
  315. {
  316. #skull_bash
  317. FeralInterruptActions()
  318. #berserk,if=buff.tigers_fury.up
  319. if TigersFuryConditions() or BuffPresent(tigers_fury_buff) Spell(berserk_cat)
  320. #incarnation,if=cooldown.tigers_fury.remains<gcd
  321. if SpellCooldown(tigers_fury less 1) Spell(incarnation_king_of_the_jungle)
  322. #use_item,slot=trinket2,if=(buff.tigers_fury.up&(target.time_to_die>trinket.stat.any.cooldown|target.time_to_die<45))|buff.incarnation.remains>20
  323. if BuffPresent(tigers_fury_buff) and { target.TimeToDie() > BuffCooldownDuration(trinket_stat_any_buff) or target.TimeToDie(less 45) } or BuffRemaining(incarnation_king_of_the_jungle_buff more 20) FeralUseItemActions()
  324. #potion,name=draenic_agility,if=((buff.berserk.remains>10|buff.incarnation.remains>20)&(target.time_to_die<180|(trinket.proc.all.react&target.health.pct<25)))|target.time_to_die<=40
  325. # if { BuffRemaining(berserk_cat_buff more 10) or BuffRemaining(incarnation_king_of_the_jungle_buff more 20) } and { target.TimeToDie(less 180) or BuffPresent(trinket_proc_any_buff) and target.HealthPercent(less 25) } or target.TimeToDie(less 40) FeralUsePotionAgility()
  326. if TigersFuryConditions() or BuffPresent(tigers_fury_buff)
  327. {
  328. #blood_fury,if=buff.tigers_fury.up
  329. Spell(blood_fury_apsp)
  330. #berserking,if=buff.tigers_fury.up
  331. Spell(berserking)
  332. #arcane_torrent,if=buff.tigers_fury.up
  333. Spell(arcane_torrent_energy)
  334. }
  335. #incarnation,if=energy.time_to_max>1&energy>=35
  336. if TimeToMaxEnergy(more 1) and Energy(atLeast 35) Spell(incarnation_king_of_the_jungle)
  337. #shadowmeld,if=combo_points<5&energy>=action.rake.cost&dot.rake.pmultiplier<2.1&buff.tigers_fury.up&(buff.bloodtalons.up|!talent.bloodtalons.enabled)&(!talent.incarnation.enabled|cooldown.incarnation.remains>18)&!buff.incarnation.up
  338. if CheckBoxOff(opt_shadowmeld_main_action)
  339. and ComboPoints(less 5)
  340. and Energy() >= EnergyCost(rake)
  341. and target.DebuffPersistentMultiplier(rake_debuff less 2.1)
  342. and BuffPresent(tigers_fury_buff)
  343. and { BuffPresent(bloodtalons_buff) or Talent(bloodtalons_talent no) }
  344. and { Talent(incarnation_talent no) or SpellCooldown(incarnation_king_of_the_jungle more 18) }
  345. and BuffExpires(incarnation_king_of_the_jungle_buff) Spell(shadowmeld)
  346.  
  347. }
  348.  
  349. AddFunction FeralPrecombatMainActions
  350. {
  351. #flask,type=flask_of_the_seventh_demon
  352. #food,type=the_hungry_magister
  353. #regrowth,if=talent.bloodtalons.enabled
  354. if Talent(bloodtalons_talent) and BuffRemaining(bloodtalons_buff) < 15 and BuffExpires(prowl_buff) Spell(regrowth)
  355. #prowl
  356. Spell(prowl)
  357. #cat_form
  358. Spell(cat_form)
  359. #savage_roar
  360. if BuffRemaining(savage_roar_buff) < 4 + 2 * ComboPoints() Spell(savage_roar)
  361. if Talent(savage_roar_talent) and Talent(elunes_guidance_talent) and BuffPresent(prowl_buff) and BuffExpires(savage_roar) and SpellUsable(elunes_guidance) Texture(ability_druid_skinteeth)
  362. }
  363.  
  364. AddFunction FeralPrecombatShortCdActions
  365. {
  366. unless Spell(cat_form) or Spell(prowl)
  367. {
  368. #elunes_guidance,if=talent.savage_roar.enabled
  369. if Talent(savage_roar_talent) Spell(elunes_guidance)
  370. }
  371. }
  372.  
  373. AddFunction FeralPrecombatShortCdPostConditions
  374. {
  375. Talent(bloodtalons_talent) and Spell(regrowth) or Spell(cat_form) or Spell(prowl) or Spell(savage_roar)
  376. }
  377.  
  378. AddFunction FeralPrecombatCdActions
  379. {
  380. unless Talent(bloodtalons_talent) and Spell(regrowth) or Spell(cat_form) or Spell(prowl)
  381. {
  382.  
  383. }
  384. }
  385.  
  386. AddFunction FeralPrecombatCdPostConditions
  387. {
  388. Talent(bloodtalons_talent) and Spell(regrowth) or Spell(cat_form) or Spell(prowl) or Talent(savage_roar_talent) and Spell(elunes_guidance) or Spell(savage_roar)
  389. }
  390.  
  391. ### Feral icons.
  392.  
  393. AddCheckBox(opt_druid_feral_aoe L(AOE) default specialization=feral)
  394.  
  395. AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=shortcd specialization=feral
  396. {
  397. if not InCombat() FeralPrecombatShortCdActions()
  398. unless not InCombat() and FeralPrecombatShortCdPostConditions()
  399. {
  400. FeralDefaultShortCdActions()
  401. }
  402. }
  403.  
  404. AddIcon checkbox=opt_druid_feral_aoe help=shortcd specialization=feral
  405. {
  406. if not InCombat() FeralPrecombatShortCdActions()
  407. unless not InCombat() and FeralPrecombatShortCdPostConditions()
  408. {
  409. FeralDefaultShortCdActions()
  410. }
  411. }
  412.  
  413. AddIcon enemies=1 help=main specialization=feral
  414. {
  415. if not InCombat() FeralPrecombatMainActions()
  416. FeralDefaultMainActions()
  417. }
  418.  
  419. AddIcon checkbox=opt_druid_feral_aoe help=aoe specialization=feral
  420. {
  421. if not InCombat() FeralPrecombatMainActions()
  422. FeralDefaultMainActions()
  423. }
  424.  
  425. AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=cd specialization=feral
  426. {
  427. if not InCombat() FeralPrecombatCdActions()
  428. unless not InCombat() and FeralPrecombatCdPostConditions()
  429. {
  430. FeralDefaultCdActions()
  431. }
  432. }
  433.  
  434. AddIcon checkbox=opt_druid_feral_aoe help=cd specialization=feral
  435. {
  436. if not InCombat() FeralPrecombatCdActions()
  437. unless not InCombat() and FeralPrecombatCdPostConditions()
  438. {
  439. FeralDefaultCdActions()
  440. }
  441. }
  442.  
  443. ### Required symbols
  444. # arcane_torrent_energy
  445. # ashamanes_frenzy
  446. # berserk_cat
  447. # berserk_cat_buff
  448. # berserking
  449. # blood_fury_apsp
  450. # bloodtalons_buff
  451. # bloodtalons_talent
  452. # brutal_slash
  453. # brutal_slash_talent
  454. # cat_form
  455. # cat_form_buff
  456. # clearcasting_buff
  457. # dash
  458. # displacer_beast
  459. # displacer_beast_buff
  460. # draenic_agility_potion
  461. # elunes_guidance
  462. # elunes_guidance_buff
  463. # elunes_guidance_talent
  464. # ferocious_bite
  465. # regrowth
  466. # incarnation_king_of_the_jungle
  467. # incarnation_king_of_the_jungle_buff
  468. # incarnation_talent
  469. # jagged_wounds_talent
  470. # maim
  471. # mangle
  472. # mighty_bash
  473. # moment_of_clarity_talent
  474. # moonfire_cat
  475. # moonfire_cat_debuff
  476. # predatory_swiftness_buff
  477. # prowl
  478. # prowl_buff
  479. # rake
  480. # rake_debuff
  481. # rip
  482. # rip_debuff
  483. # sabertooth_talent
  484. # savage_roar
  485. # savage_roar_buff
  486. # savage_roar_talent
  487. # shadowmeld
  488. # shadowmeld_buff
  489. # shred
  490. # skull_bash
  491. # soul_of_the_forest_talent
  492. # swipe_cat
  493. # t18_class_trinket
  494. # thrash_cat
  495. # thrash_cat_debuff
  496. # tigers_fury
  497. # tigers_fury_buff
  498. # typhoon
  499. # war_stomp
  500. # wild_charge
  501. # wild_charge_bear
  502. # wild_charge_cat
  503.  
  504. # Based on SimulationCraft profile "Druid_Guardian_T19P".
  505. # class=druid
  506. # spec=guardian
  507. # talents=3133323
  508.  
  509. AddCheckBox(opt_interrupt L(interrupt) default specialization=guardian)
  510. AddCheckBox(opt_melee_range L(not_in_melee_range) specialization=guardian)
  511.  
  512. AddFunction GuardianUseItemActions
  513. {
  514. Item(Trinket0Slot usable=1)
  515. Item(Trinket1Slot usable=1)
  516. }
  517.  
  518. AddFunction GuardianGetInMeleeRange
  519. {
  520. if CheckBoxOn(opt_melee_range) and Stance(druid_bear_form) and not target.InRange(mangle) or Stance(druid_cat_form) and not target.InRange(shred)
  521. {
  522. if target.InRange(wild_charge) Spell(wild_charge)
  523. Texture(misc_arrowlup help=L(not_in_melee_range))
  524. }
  525. }
  526.  
  527. AddFunction GuardianInterruptActions
  528. {
  529. if CheckBoxOn(opt_interrupt) and not target.IsFriend() and target.IsInterruptible()
  530. {
  531. if target.InRange(skull_bash) Spell(skull_bash)
  532. if not target.Classification(worldboss)
  533. {
  534. if target.InRange(mighty_bash) Spell(mighty_bash)
  535. Spell(typhoon)
  536. if target.InRange(maim) Spell(maim)
  537. Spell(war_stomp)
  538. }
  539. }
  540. }
  541.  
  542. ### actions.default
  543.  
  544. AddFunction GuardianDefaultMainActions
  545. {
  546. #pulverize,cycle_targets=1,if=buff.pulverize.down
  547. if BuffExpires(pulverize_buff) and target.DebuffGain(thrash_bear_debuff) <= BaseDuration(thrash_bear_debuff) Spell(pulverize)
  548. #thrash_bear,if=dot.thrash_bear.remains<4.5
  549. if target.DebuffRemaining(thrash_bear_debuff) < 4.5 Spell(thrash_bear)
  550. #mangle
  551. Spell(mangle)
  552. #pulverize,cycle_targets=1,if=buff.pulverize.remains<gcd
  553. if BuffRemaining(pulverize_buff) < GCD() and target.DebuffGain(thrash_bear_debuff) <= BaseDuration(thrash_bear_debuff) Spell(pulverize)
  554. #thrash_bear
  555. Spell(thrash_bear)
  556. #pulverize,cycle_targets=1,if=buff.pulverize.remains<3.6
  557. if BuffRemaining(pulverize_buff) < 3.6 and target.DebuffGain(thrash_bear_debuff) <= BaseDuration(thrash_bear_debuff) Spell(pulverize)
  558. #moonfire,if=!ticking|buff.galactic_guardian.up
  559. if not target.DebuffPresent(moonfire_debuff) or BuffPresent(galactic_guardian_buff) Spell(moonfire)
  560. #swipe_bear
  561. Spell(swipe_bear)
  562. }
  563.  
  564. AddFunction GuardianDefaultShortCdActions
  565. {
  566. #auto_attack
  567. GuardianGetInMeleeRange()
  568. #ironfur,if=buff.ironfur.down|rage.deficit<25
  569. if target.IsAggroed() and { BuffExpires(ironfur_buff) or RageDeficit() < 25 } Spell(ironfur)
  570. #maul
  571. if not target.IsAggroed() and RageDeficit() < 25 Spell(maul)
  572. #frenzied_regeneration,if=!ticking&incoming_damage_6s%health.max>0.25+(2-charges_fractional)*0.15
  573. if not BuffPresent(frenzied_regeneration_buff) and IncomingDamage(5) / MaxHealth() > 0.25 + { 2 - Charges(frenzied_regeneration count=0) } * 0.15 Spell(frenzied_regeneration)
  574. #bristling_fur,if=buff.ironfur.remains<2&rage<40
  575. if BuffRemaining(ironfur_buff) < 2 and Rage() < 40 Spell(bristling_fur)
  576. }
  577.  
  578. AddFunction GuardianDefaultCdActions
  579. {
  580. #skull_bash
  581. GuardianInterruptActions()
  582. #blood_fury
  583. Spell(blood_fury_apsp)
  584. #berserking
  585. Spell(berserking)
  586. #arcane_torrent
  587. Spell(arcane_torrent_energy)
  588. #use_item,slot=trinket2
  589. GuardianUseItemActions()
  590.  
  591. unless { BuffExpires(ironfur_buff) or RageDeficit() < 25 } and Spell(ironfur) or not BuffPresent(frenzied_regeneration_buff) and IncomingDamage(6) / MaxHealth() > 0.25 + { 2 - Charges(frenzied_regeneration count=0) } * 0.15 and Spell(frenzied_regeneration) or BuffExpires(pulverize_buff) and target.DebuffGain(thrash_bear_debuff) <= BaseDuration(thrash_bear_debuff) and Spell(pulverize) or target.DebuffRemaining(thrash_bear_debuff) < 4.5 and Spell(thrash_bear) or Spell(mangle) or BuffRemaining(pulverize_buff) < GCD() and target.DebuffGain(thrash_bear_debuff) <= BaseDuration(thrash_bear_debuff) and Spell(pulverize)
  592. {
  593. #incarnation
  594. Spell(incarnation_son_of_ursoc)
  595. }
  596. }
  597.  
  598. ### actions.precombat
  599.  
  600. AddFunction GuardianPrecombatMainActions
  601. {
  602. #flask,type=flask_of_the_seventh_demon
  603. #food,type=azshari_salad
  604. #bear_form
  605. Spell(bear_form)
  606. }
  607.  
  608. AddFunction GuardianPrecombatShortCdPostConditions
  609. {
  610. Spell(bear_form)
  611. }
  612.  
  613. AddFunction GuardianPrecombatCdPostConditions
  614. {
  615. Spell(bear_form)
  616. }
  617.  
  618. ### Guardian icons.
  619.  
  620. AddCheckBox(opt_druid_guardian_aoe L(AOE) default specialization=guardian)
  621.  
  622. AddIcon checkbox=!opt_druid_guardian_aoe enemies=1 help=shortcd specialization=guardian
  623. {
  624. unless not InCombat() and GuardianPrecombatShortCdPostConditions()
  625. {
  626. GuardianDefaultShortCdActions()
  627. }
  628. }
  629.  
  630. AddIcon checkbox=opt_druid_guardian_aoe help=shortcd specialization=guardian
  631. {
  632. unless not InCombat() and GuardianPrecombatShortCdPostConditions()
  633. {
  634. GuardianDefaultShortCdActions()
  635. }
  636. }
  637.  
  638. AddIcon enemies=1 help=main specialization=guardian
  639. {
  640. if not InCombat() GuardianPrecombatMainActions()
  641. GuardianDefaultMainActions()
  642. }
  643.  
  644. AddIcon checkbox=opt_druid_guardian_aoe help=aoe specialization=guardian
  645. {
  646. if not InCombat() GuardianPrecombatMainActions()
  647. GuardianDefaultMainActions()
  648. }
  649.  
  650. AddIcon checkbox=!opt_druid_guardian_aoe enemies=1 help=cd specialization=guardian
  651. {
  652. unless not InCombat() and GuardianPrecombatCdPostConditions()
  653. {
  654. GuardianDefaultCdActions()
  655. }
  656. }
  657.  
  658. AddIcon checkbox=opt_druid_guardian_aoe help=cd specialization=guardian
  659. {
  660. unless not InCombat() and GuardianPrecombatCdPostConditions()
  661. {
  662. GuardianDefaultCdActions()
  663. }
  664. }
  665.  
  666. ### Required symbols
  667. # arcane_torrent_energy
  668. # bear_form
  669. # berserking
  670. # blood_fury_apsp
  671. # bristling_fur
  672. # frenzied_regeneration
  673. # frenzied_regeneration_buff
  674. # galactic_guardian_buff
  675. # incarnation_son_of_ursoc
  676. # ironfur
  677. # ironfur_buff
  678. # thrash_bear_debuff
  679. # maim
  680. # mangle
  681. # mighty_bash
  682. # moonfire
  683. # moonfire_debuff
  684. # pulverize
  685. # pulverize_buff
  686. # shred
  687. # skull_bash
  688. # swipe_bear
  689. # thrash_bear
  690. # thrash_bear_debuff
  691. # typhoon
  692. # war_stomp
  693. # wild_charge
  694. # wild_charge_bear
  695. # wild_charge_cat
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement