Advertisement
Guest User

Untitled

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