SHARE
TWEET

Untitled

a guest Oct 1st, 2018 480 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. Include(ovale_common)
  41. Include(ovale_druid_base_spells)
  42. Include(ovale_druid_feral_spells)
  43.  
  44. AddCheckBox(opt_interrupt L(interrupt) default specialization=feral)
  45. AddCheckBox(opt_use_consumables "Use Prolonged Power Potion" default specialization=feral)
  46. AddCheckBox(opt_tigers_fury_multiplier_predict "Tiger's Fury multiplier prediction" default specialization=feral)
  47.  
  48. ###############################################################################################
  49. ###   Helper Variables (Functions)
  50. ###############################################################################################
  51.  
  52. #variable,name=execute_percent,value=25+75*talent.sabertooth.enabled
  53. AddFunction execute_percent
  54. {
  55.     25 + 75 * TalentPoints(sabertooth_talent)
  56. }
  57.  
  58. AddFunction FeralUseItemActions
  59. {
  60.     Item(Trinket0Slot text=13 usable=1)
  61.     Item(Trinket1Slot text=14 usable=1)
  62. }
  63.  
  64. AddFunction FeralGetInMeleeRange
  65. {
  66.     if target.InRange(shred no)
  67.     {
  68.         #wild_charge
  69.         if target.InRange(wild_charge) Spell(wild_charge)
  70.         #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
  71.         if target.Distance(atLeast 25) Spell(dash)
  72.         #not_in_melee_range_arrow
  73.         Texture(misc_arrowlup help=L(not_in_melee_range))
  74.     }
  75. }
  76.  
  77. AddFunction FeralInterruptActions
  78. {
  79.     if CheckBoxOn(opt_interrupt) and not target.IsFriend() and target.Casting()
  80.     {
  81.         #skull_bash
  82.         if target.InRange(skull_bash) and target.IsInterruptible() Spell(skull_bash)
  83.         #mighty_bash
  84.         if target.InRange(mighty_bash) and not target.Classification(worldboss) Spell(mighty_bash)
  85.         #maim
  86.         if target.InRange(maim) and not target.Classification(worldboss) Spell(maim)
  87.         #war_stomp
  88.         if target.Distance(less 5) and not target.Classification(worldboss) Spell(war_stomp)
  89.         #typhoon
  90.         if target.Distance(less 15) and not target.Classification(worldboss) Spell(typhoon)
  91.     }
  92. }
  93.  
  94. #Tiger's Fury multiplier prediction
  95. AddFunction TFMultPred asvalue=1
  96. {
  97.     if CheckBoxOn(opt_tigers_fury_multiplier_predict)
  98.         and BuffExpires(tigers_fury_buff)
  99.         and SpellCooldown(tigers_fury equal 0)
  100.         and FeralTigersFuryConditions() tigers_fury_buff_value
  101.     1
  102. }
  103.  
  104. ###############################################################################################
  105. ###   actions.opener
  106. ###############################################################################################
  107.  
  108.  
  109. AddListItem(opt_use_opener opener_always "Always use opener" specialization=feral)
  110. AddListItem(opt_use_opener opener_bosses_only "Use opener on worldbosses" specialization=feral default)
  111. AddListItem(opt_use_opener opener_never "Never use opener" specialization=feral)
  112.  
  113.  
  114.  
  115. AddFunction FeralOpenerMainActions
  116. {
  117.     #moonfire_cat,if=talent.lunar_inspiration.enabled&!ticking
  118.     if Talent(lunar_inspiration_talent)
  119.         and target.DebuffExpires(moonfire_cat_debuff)
  120.         Spell(moonfire_cat)
  121.  
  122.     #savage_roar,if=buff.savage_roar.down&!dot.rip.ticking
  123.     if BuffExpires(savage_roar_buff)
  124.         and target.DebuffExpires(rip_debuff)
  125.         Spell(savage_roar)
  126.  
  127.     #regrowth,if=talent.sabertooth.enabled&talent.bloodtalons.enabled&buff.bloodtalons.down&combo_points=5&!dot.rip.ticking
  128.     if Talent(sabertooth_talent)
  129.         and Talent(bloodtalons_talent)
  130.         and BuffExpires(bloodtalons_buff)
  131.         and ComboPoints(equal 5)
  132.         and target.DebuffExpires(rip_debuff)
  133.         and BuffExpires(predatory_swiftness_buff)
  134.         Spell(regrowth text=hardcast)
  135. }
  136.  
  137. ###############################################################################################
  138. ###   actions.default
  139. ###############################################################################################
  140.  
  141. AddFunction FeralProwlRakeConditions
  142. {
  143.     BuffPresent(prowl_buff)
  144.             or BuffPresent(shadowmeld_buff)
  145.             or BuffPresent(incarnation_king_of_the_jungle_buff)
  146.                 and BuffRemaining(incarnation_king_of_the_jungle_buff less 1)
  147.                 and not Talent(bloodtalons_talent)
  148. }
  149.  
  150. AddFunction FeralSelfHealConditions
  151. {
  152.     BuffPresent(predatory_swiftness_buff)
  153.         and not Talent(bloodtalons_talent)
  154. }
  155.  
  156. AddFunction FeralSelfHealConservativeConditions
  157. {
  158.     not List(opt_self_healing self_heal_never)
  159.         and HealthPercent(less 90)
  160.         and FeralSelfHealConditions()
  161. }
  162.  
  163. AddListItem(opt_self_healing self_heal_never "Do not self-heal in combat" specialization=feral default)
  164. AddListItem(opt_self_healing self_heal_conservative "Self-heal during free globals" specialization=feral)
  165. AddListItem(opt_self_healing self_heal_aggressive_80 "Aggressively self heal at 80%" specialization=feral)
  166. AddListItem(opt_self_healing self_heal_aggressive_60 "Aggressively self heal at 60%" specialization=feral)
  167. AddListItem(opt_self_healing self_heal_aggressive_40 "Aggressively self heal at 40%" specialization=feral)
  168. AddListItem(opt_self_healing self_heal_aggressive_20 "Aggressively self heal at 20%" specialization=feral)
  169.  
  170. AddFunction FeralAggressiveSelfHealPercent
  171. {
  172.     if List(opt_self_healing self_heal_aggressive_80) HealthPercent(less 80)
  173.     if List(opt_self_healing self_heal_aggressive_60) HealthPercent(less 60)
  174.     if List(opt_self_healing self_heal_aggressive_40) HealthPercent(less 40)
  175.     if List(opt_self_healing self_heal_aggressive_20) HealthPercent(less 20)
  176.     False()
  177. }
  178.  
  179. AddFunction FeralDefaultMainActions
  180. {
  181.     #cat_form,if=buff.cat_form.down
  182.     if BuffExpires(cat_form_buff)
  183.         Spell(cat_form)
  184.        
  185.     #rend_and_tear
  186.     if target.DebuffRefreshable(rake_debuff)
  187.         and target.DebuffRefreshable(rip_debuff)
  188.         and target.TimeToDie(more 15)
  189.         Spell(203242)
  190.  
  191.     #rake,if=buff.prowl.up|buff.shadowmeld.up|(buff.incarnation.up&buff.incarnation.remains<1&!talent.bloodtalons.enabled)
  192.     if FeralProwlRakeConditions()
  193.         Spell(rake pool_resource=1 text=Prowl)
  194.  
  195.     # MODIFICATION: List(opt_use_opener opener_always) or List(opt_use_opener opener_bosses_only) and target.Classification(worldboss)
  196.     # REASON:       Allow the user to choose when to use the opener
  197.     #call_action_list,name=opener,if=time<15
  198.     if TimeInCombat(less 15)
  199.         and { List(opt_use_opener opener_always)
  200.             or List(opt_use_opener opener_bosses_only) and target.Classification(worldboss) }
  201.         FeralOpenerMainActions()
  202.  
  203.     #call_action_list,name=cooldowns
  204.     FeralCooldownsMainActions()
  205.  
  206.     #ferocious_bite,target_if=dot.rip.ticking&dot.rip.remains<3&target.time_to_die>10&target.health.pct<=variable.execute_percent
  207.     if target.DebuffPresent(rip_debuff)
  208.         and target.DebuffRemaining(rip_debuff less 3)
  209.         and target.TimeToDie(more 10)
  210.         and target.HealthPercent() <= execute_percent()
  211.         Spell(ferocious_bite text=Refresh)
  212.  
  213.     #call_action_list,name=bloodtalons,if=talent.bloodtalons.enabled&buff.predatory_swiftness.up&buff.bloodtalons.down
  214.     if FeralBloodtalonsActionsConditions()
  215.         FeralBloodtalonsMainActions()
  216.  
  217.     #ferocious_bite,if=buff.apex_predator.up
  218.     if BuffPresent(apex_predator_buff)
  219.         Spell(ferocious_bite text=Apex)
  220.  
  221.     #regrowth,if=health.pct<20
  222.     if FeralAggressiveSelfHealPercent()
  223.         and FeralSelfHealConditions()
  224.         Spell(regrowth text=Heal)
  225.    
  226.     #run_action_list,name=finishers,if=combo_points>4
  227.     if ComboPoints(equal 5)
  228.         FeralFinishersMainActions()
  229.  
  230.     #run_action_list,name=generators
  231.     if ComboPoints(less 5)
  232.         FeralGeneratorsMainActions()
  233. }
  234.  
  235. AddFunction FeralDefaultShortCdActions
  236. {
  237.     # MODIFICATION: Move above unless
  238.     # REASON:       To show during opener
  239.     #auto_attack
  240.     FeralGetInMeleeRange()
  241.  
  242.     unless BuffExpires(cat_form_buff) and Spell(cat_form) or FeralProwlRakeConditions() and Spell(rake pool_resource=1)
  243.     {
  244.         #call_action_list,name=cooldowns
  245.         FeralCooldownsShortCdActions()
  246.     }
  247. }
  248.  
  249. AddFunction FeralDefaultCdActions
  250. {
  251.     unless BuffExpires(cat_form_buff) and Spell(cat_form) or FeralProwlRakeConditions() and Spell(rake pool_resource=1)
  252.     {
  253.         # MODIFICATION: Interrupt
  254.         # REASON:       No longer automatically added
  255.         #skull_bash
  256.         FeralInterruptActions()
  257.  
  258.         #call_action_list,name=cooldowns
  259.         FeralCooldownsCdActions()
  260.     }
  261. }
  262.  
  263. ###############################################################################################
  264. ###   actions.cooldowns
  265. ###############################################################################################
  266.  
  267. AddCheckBox(opt_shadowmeld_main_action "Shadowmeld as a main action" specialization=feral)
  268.  
  269. AddFunction FeralTigersFuryConditions
  270. {
  271.     EnergyDeficit(atLeast 50)
  272. }
  273.  
  274. # MODIFICATION: target.TimeToDie(more 10)
  275. # REASON:       Does not use Shadowmeld on targets with less than 10 seconds to live
  276. # MODIFICATION: target.InRange(rake)
  277. # REASON:       Cannot move after Shadowmeld so add range check before suggesting
  278. # MODIFICATION: TFMultPred() > 1 when CheckBoxOn(opt_tigers_fury_multiplier_predict)
  279. # REASON:       Make Shadowmeld show up if Tiger's Fury conditions are met
  280. AddFunction FeralShadowmeldConditions
  281. {
  282.     ComboPoints(less 5)
  283.         and Energy() >= PowerCost(rake)
  284.         and target.DebuffPersistentMultiplier(rake_debuff less 2.1)
  285.         and { BuffPresent(tigers_fury_buff) or TFMultPred() > 1 }
  286.         and { not Talent(bloodtalons_talent) or BuffPresent(bloodtalons_buff) }
  287.         and { not Talent(incarnation_talent) or SpellCooldown(incarnation_king_of_the_jungle more 18) }
  288.         and BuffExpires(incarnation_king_of_the_jungle_buff)
  289.         and target.TimeToDie(more 10)
  290.         and target.InRange(rake)
  291. }
  292.  
  293. AddFunction FeralCooldownsMainActions
  294. {
  295.     #feral_frenzy,if=combo_points=0&target.time_to_die>10
  296.     if ComboPoints(equal 0)
  297.         and target.TimeToDie(more 10)
  298.     Spell(feral_frenzy)
  299.  
  300.     # MODIFICATION: CheckBoxOn(opt_shadowmeld_main_action)
  301.     # REASON:       Allows player to choose for Shadowmeld suggestions to be in the main Icon
  302.     #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
  303.     if FeralShadowmeldConditions()
  304.         and CheckBoxOn(opt_shadowmeld_main_action)
  305.     Spell(shadowmeld)
  306. }
  307.  
  308. AddFunction FeralCooldownsShortCdActions
  309. {
  310.     # MODIFICATION: 0.5 to 0.8
  311.     # REASON:       Players need more reaction time.
  312.     #prowl,if=buff.incarnation.remains<0.5&buff.jungle_stalker.up
  313.     if BuffRemaining(incarnation_king_of_the_jungle_buff less 0.8)
  314.         and BuffPresent(jungle_stalker_buff)
  315.     Spell(prowl)
  316.  
  317.     #tigers_fury,if=energy.deficit>=50
  318.     if FeralTigersFuryConditions()
  319.         Spell(tigers_fury)
  320. }
  321.  
  322. AddFunction FeralCooldownsCdActions
  323. {
  324.     #incarnation,if=energy>=30
  325.     if Energy(atLeast 30)
  326.         Spell(incarnation_king_of_the_jungle)
  327.  
  328.     #berserk,if=energy>=30&cooldown.tigers_fury.remains<5
  329.     if Energy(atLeast 30)
  330.         and SpellCooldown(tigers_fury less 5)
  331.     Spell(berserk)
  332.  
  333.     #berserking
  334.     Spell(berserking)
  335.  
  336.     #potion,name=prolonged_power,if=target.time_to_die<65|(time_to_die<180&(buff.berserk.up|buff.incarnation.up|cooldown.incarnation.remains<25))
  337.     if { target.TimeToDie(less 65)
  338.             or target.TimeToDie(less 180)
  339.                 and { BuffPresent(berserk_buff)
  340.                     or BuffPresent(incarnation_king_of_the_jungle_buff)
  341.                     or SpellCooldown(incarnation_king_of_the_jungle less 25) } }
  342.         and CheckBoxOn(opt_use_consumables)
  343.         and target.Classification(worldboss)
  344.     Item(prolonged_power_potion usable=1)
  345.  
  346.     #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
  347.     # MODIFICATION: CheckBoxOff(opt_shadowmeld_main_action)
  348.     # REASON:       Allows player to choose via checkbox whether to add Shadowmeld to the cd Icon
  349.     if FeralShadowmeldConditions()
  350.         and CheckBoxOff(opt_shadowmeld_main_action)
  351.     Spell(shadowmeld)
  352.  
  353.     #use_items
  354.     FeralUseItemActions()
  355. }
  356.  
  357. ###############################################################################################
  358. ###   actions.bloodtalons
  359. ###############################################################################################
  360.  
  361. AddFunction FeralBloodtalonsActionsConditions
  362. {
  363.     Talent(bloodtalons_talent)
  364.         and BuffPresent(predatory_swiftness_buff)
  365.         and BuffExpires(bloodtalons_buff)
  366. }
  367.  
  368. AddFunction FeralBloodtalonsMainActions
  369. {
  370.     #regrowth,if=combo_points=4&dot.rake.remains<4
  371.     if ComboPoints(equal 4)
  372.         and target.DebuffRemaining(rake_debuff less 4)
  373.         Spell(regrowth)
  374.  
  375.     #regrowth,if=combo_points=5
  376.     if ComboPoints(equal 5)
  377.         Spell(regrowth)
  378.  
  379.     #regrowth,if=buff.apex_predator.up
  380.     if BuffPresent(apex_predator_buff)
  381.         Spell(regrowth text=Apex)
  382.  
  383.     #regrowth,if=buff.predatory_swiftness.remains<1.7
  384.     if BuffRemaining(predatory_swiftness_buff less 1.7)
  385.         Spell(regrowth text=expiring)
  386. }
  387.  
  388. ###############################################################################################
  389. ###   actions.finishers
  390. ###############################################################################################
  391.  
  392. AddFunction Spell_savage_roar
  393. {
  394.     if TimeToEnergyFor(savage_roar more 0.75)
  395.         and FeralSelfHealConservativeConditions()
  396.         Spell(regrowth text=Heal)
  397.     Spell(savage_roar pool_resource=1)
  398. }
  399.  
  400. AddFunction Spell_rip
  401. {
  402.     if TimeToEnergyFor(rip more 0.75)
  403.         and FeralSelfHealConservativeConditions()
  404.         Spell(regrowth text=Heal)
  405.     Spell(rip)
  406. }
  407.  
  408. AddFunction Spell_ferocious_bite
  409. {
  410.     if TimeToEnergyFor(ferocious_bite more 0.75)
  411.         and FeralSelfHealConservativeConditions()
  412.         Spell(regrowth text=Heal)
  413.     Spell(ferocious_bite)
  414. }
  415.  
  416. AddFunction Spell_ferocious_bite_max
  417. {
  418.     if TimeToEnergyFor(ferocious_bite more 0)
  419.         and FeralSelfHealConservativeConditions()
  420.         Spell(regrowth text=Heal)
  421.     Spell(ferocious_bite max=1)
  422. }
  423.  
  424. AddFunction FeralFinishersMainActions
  425. {
  426.     #pool_resource,for_next=1
  427.     #savage_roar,if=buff.savage_roar.down
  428.     if BuffExpires(savage_roar_buff)
  429.         Spell_savage_roar()
  430.  
  431.     # MODIFICATION: TFMultPred when CheckBoxOn(opt_tigers_fury_multiplier_predict)
  432.     # REASON:       When Tiger's Fury is suggested, treat Rip as if it is already up even if it hasn't been cast yet.
  433.     #pool_resource,for_next=1
  434.     #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)
  435.     if { target.DebuffExpires(rip_debuff)
  436.         or target.DebuffRemaining(rip_debuff) <= BaseDuration(rip_debuff) * 0.3
  437.             and target.HealthPercent() > execute_percent()
  438. #        or target.DebuffRemaining(rip_debuff) <= BaseDuration(rip_debuff) * 0.85
  439. #            and PersistentMultiplier(rip_debuff) > target.DebuffPersistentMultiplier(rip_debuff)
  440.             }
  441.         and { target.TimeToDie() > 4 * target.TickTime(rip_debuff) * Enemies() + target.DebuffRemaining(rip_debuff)
  442.             or target.TimeToDie() > BaseDuration(rip_debuff) + target.DebuffRemaining(rip_debuff) }
  443.         Spell_rip()
  444.  
  445.     #pool_resource,for_next=1
  446.     #savage_roar,if=buff.savage_roar.remains<10.8
  447.     if BuffRemaining(savage_roar_buff less 10.8)
  448.         Spell_savage_roar()
  449.  
  450.     #ferocious_bite,if=spell_targets.thrash_cat>2
  451.     if Enemies(more 2)
  452.         Spell_ferocious_bite()
  453.  
  454.     #ferocious_bite,max_energy=1
  455.     #if Energy() >= EnergyCost(ferocious_bite max=1)
  456.         Spell_ferocious_bite_max()
  457. }
  458.  
  459. ###############################################################################################
  460. ###   actions.generators
  461. ###############################################################################################
  462.  
  463. AddFunction Spell_brutal_slash
  464. {
  465.     if BuffPresent(clearcasting_buff) Spell(brutal_slash text=CC)
  466.     if TimeToEnergyFor(brutal_slash more 0.75)
  467.         and FeralSelfHealConservativeConditions()
  468.         Spell(regrowth text=Heal)
  469.     Spell(brutal_slash pool_resource=1)
  470. }
  471.  
  472. AddFunction Spell_thrash_cat
  473. {
  474.     if BuffPresent(clearcasting_buff) Spell(thrash_cat text=CC)
  475.     if TimeToEnergyFor(thrash_cat more 0.75)
  476.         and FeralSelfHealConservativeConditions()
  477.         Spell(regrowth text=Heal)
  478.     Spell(thrash_cat pool_resource=1)
  479. }
  480.  
  481. AddFunction Spell_swipe_cat
  482. {
  483.     if BuffPresent(clearcasting_buff) Spell(swipe_cat text=CC)
  484.     if TimeToEnergyFor(swipe_cat more 0.75)
  485.         and FeralSelfHealConservativeConditions()
  486.         Spell(regrowth text=Heal)
  487.     Spell(swipe_cat pool_resource=1)
  488. }
  489.  
  490. AddFunction Spell_rake
  491. {
  492.     if TimeToEnergyFor(rake more 0.75)
  493.         and FeralSelfHealConservativeConditions()
  494.         Spell(regrowth text=Heal)
  495.     Spell(rake pool_resource=1)
  496. }
  497.  
  498. AddFunction Spell_moonfire_cat
  499. {
  500.     if TimeToEnergyFor(moonfire_cat more 0.75)
  501.         and FeralSelfHealConservativeConditions()
  502.         Spell(regrowth text=Heal)
  503.     Spell(moonfire_cat pool_resource=1)
  504. }
  505.  
  506. AddFunction Spell_shred
  507. {
  508.     if BuffPresent(clearcasting_buff) Spell(shred text=CC)
  509.     if TimeToEnergyFor(shred more 0.75)
  510.         and FeralSelfHealConservativeConditions()
  511.         Spell(regrowth text=Heal)
  512.     Spell(shred pool_resource=1)
  513. }
  514.  
  515.  
  516. AddListItem(opt_brutal_slash_behavior brs_01_prevent_capping "BrS: Prevent capping charges" default specialization=feral)
  517. AddListItem(opt_brutal_slash_behavior brs_02_only_tigers_fury "BrS: Use only when Tiger's Fury is up" specialization=feral)
  518. AddListItem(opt_brutal_slash_behavior brs_03_both "BrS: Prevent capping AND only with TF" specialization=feral)
  519. AddListItem(opt_brutal_slash_behavior brs_04_neither "BrS: Do not use on single target" specialization=feral)
  520.  
  521. AddListItem(opt_desired_targets desired_targets_01 "Brutal Slash at 1 target" specialization=feral)
  522. AddListItem(opt_desired_targets desired_targets_02 "Brutal Slash at 2 targets" specialization=feral)
  523. AddListItem(opt_desired_targets desired_targets_03 "Brutal Slash at 3 targets" specialization=feral default)
  524. AddListItem(opt_desired_targets desired_targets_04 "Brutal Slash at 4 targets" specialization=feral)
  525. AddListItem(opt_desired_targets desired_targets_05 "Brutal Slash at 5 targets" specialization=feral)
  526. AddListItem(opt_desired_targets desired_targets_06 "Brutal Slash at 6 targets" specialization=feral)
  527.  
  528. AddFunction BrutalSlashDesiredTargets asvalue=1
  529. {
  530.     if List(opt_desired_targets desired_targets_01) 1
  531.     if List(opt_desired_targets desired_targets_02) 2
  532.     if List(opt_desired_targets desired_targets_03) 3
  533.     if List(opt_desired_targets desired_targets_04) 4
  534.     if List(opt_desired_targets desired_targets_05) 5
  535.     6
  536. }
  537.  
  538. AddFunction FeralRakeTTD
  539. {
  540.     target.TimeToDie() > target.TickTime(rake_debuff) * Enemies() + target.DebuffRemaining(rake_debuff)
  541.         or target.TimeToDie() > BaseDuration(rake_debuff) + target.DebuffRemaining(rake_debuff)
  542. }
  543.  
  544. AddCheckBox(opt_use_thrash "Always use Thrash" specialization=feral)
  545.  
  546. AddFunction FeralGeneratorsMainActions
  547. {
  548.     # 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) }
  549.     # REASON: Only use Brutal Slash if Tiger's Fury is up
  550.     #brutal_slash,if=spell_targets.brutal_slash>desired_targets
  551.     if Enemies() >= BrutalSlashDesiredTargets()
  552.         and { BuffPresent(tigers_fury)
  553.             or List(opt_brutal_slash_behavior brs_01_prevent_capping)
  554.             or List(opt_brutal_slash_behavior brs_04_neither) }
  555.         Spell_brutal_slash()
  556.        
  557.     #pool_resource,for_next=1
  558.     #thrash_cat,if=spell_targets.thrash_cat>2&(refreshable|(spell_targets.thrash_cat>6+buff.incarnation.up&talent.brutal_slash.enabled))
  559.     if Enemies(more 4)
  560.         and { target.Refreshable(thrash_cat_debuff)
  561.             or Enemies() > 6 + BuffPresent(incarnation_king_of_the_jungle_buff)
  562.                 and Talent(brutal_slash_talent) }
  563.         Spell_thrash_cat()
  564.  
  565.     #pool_resource,for_next=1
  566.     #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)
  567.     if { target.DebuffExpires(rake_debuff)
  568.             or Talent(bloodtalons_talent no)
  569.                 and target.DebuffRefreshable(rake_debuff)
  570.             or Talent(bloodtalons_talent)
  571.                 and BuffPresent(bloodtalons_buff)
  572.                 and target.DebuffRemaining(rake_debuff less 7)
  573.                 and PersistentMultiplier(rake_debuff) > target.DebuffPersistentMultiplier(rake_debuff) * 0.85
  574.         }
  575.         and FeralRakeTTD()
  576.         Spell_rake()
  577.  
  578.     # MODIFICATION: List(opt_brutal_slash_behavior brs_01_prevent_capping) or List(opt_brutal_slash_behavior brs_03_both)
  579.     # REASON:       Prevents capping of charges
  580.     #brutal_slash,if=buff.tigers_fury.up&(raid_event.adds.in>(1+max_charges-charges_fractional)*recharge_time)
  581.     if Charges(brutal_slash count=0 more 2.66)
  582.         and { List(opt_brutal_slash_behavior brs_01_prevent_capping)
  583.             or List(opt_brutal_slash_behavior brs_03_both) }
  584.         Spell_brutal_slash()
  585.  
  586.     #moonfire_cat,target_if=refreshable&target.time_to_die>14+remains
  587.     if Talent(lunar_inspiration_talent)
  588.         and target.Refreshable(moonfire_cat_debuff)
  589.         and target.TimeToDie() > TickTime(moonfire_cat_debuff) * 2 + target.DebuffRemaining(moonfire_cat_debuff)
  590.         Spell_moonfire_cat()
  591.        
  592.     #pool_resource,for_next=1
  593.     #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))
  594.     if Enemies() > HasEquippedItem(luffa_wrappings no) - CheckBoxOn(opt_use_thrash)
  595.         and { target.Refreshable(thrash_cat_debuff)
  596.             or Enemies() > 1 + BuffPresent(incarnation_king_of_the_jungle_buff) + HasEquippedItem(luffa_wrappings no)
  597.                 and Talent(brutal_slash_talent)
  598.             }
  599.         Spell_thrash_cat()
  600.  
  601.     #pool_resource,for_next=1
  602.     #swipe_cat,if=spell_targets.swipe_cat>1+buff.incarnation.up
  603.     if Enemies() > 1 + BuffPresent(incarnation_king_of_the_jungle_buff)
  604.         Spell_swipe_cat()
  605.  
  606.     # MODIFICATION: or not FeralRakeTTD()
  607.     # REASON:       So Shred shows on dying targets that do not have Rake on them
  608.     #shred,if=dot.rake.remains>(action.shred.cost+action.rake.cost-energy)%energy.regen|buff.clearcasting.react
  609.     if target.DebuffRemaining(rake_debuff) > { PowerCost(shred) + PowerCost(rake) - Energy() } / EnergyRegenRate()
  610.             or BuffPresent(clearcasting_buff)
  611.             or not FeralRakeTTD()
  612.         Spell_shred()
  613. }
  614.  
  615. ###############################################################################################
  616. ###   actions.precombat
  617. ###############################################################################################
  618.  
  619. # MODIFICATION: and BuffRemaining(bloodtalons_buff less 20) and BuffExpires(prowl_buff)
  620. # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  621. AddFunction FeralPrecombatRegrowthConditions
  622. {
  623.     Talent(bloodtalons_talent)
  624.         and BuffRemaining(bloodtalons_buff less 20)
  625.         and BuffExpires(prowl_buff)
  626. }
  627.  
  628. AddFunction FeralPrecombatMainActions
  629. {
  630.     #flask
  631.     #food
  632.     #augmentation
  633.     # MODIFICATION: FeralPrecombatRegrowthConditions()
  634.     # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  635.     #regrowth,if=talent.bloodtalons.enabled
  636.     if FeralPrecombatRegrowthConditions()
  637.         Spell(regrowth)
  638.     #regrowth,if=health.pct<90
  639.     if HealthPercent(less 90) Spell(regrowth text=Heal)
  640.     #cat_form
  641.     Spell(cat_form)
  642.     # MODIFICATION: Precombat Savage Roar
  643.     # REASON:       To refresh SR between pulls
  644.     #savage_roar
  645.     if BuffRefreshable(savage_roar_buff) Spell(savage_roar)
  646. }
  647.  
  648. AddFunction FeralPrecombatShortCdActions
  649. {
  650.     # MODIFICATION: FeralPrecombatRegrowthConditions()
  651.     # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  652.     unless FeralPrecombatRegrowthConditions() and Spell(regrowth)
  653.     {
  654.         #prowl
  655.         Spell(prowl)
  656.     }
  657. }
  658.  
  659. AddFunction FeralPrecombatCdActions
  660. {
  661.     # MODIFICATION: FeralPrecombatRegrowthConditions()
  662.     # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
  663.     unless FeralPrecombatRegrowthConditions() and Spell(regrowth)
  664.     {
  665.         #snapshot_stats
  666.         #potion
  667.         if CheckBoxOn(opt_use_consumables) and target.Classification(worldboss) Item(prolonged_power_potion usable=1 text=Prepot)
  668.     }
  669. }
  670.  
  671. ###############################################################################################
  672. ###   Feral icons.
  673. ###############################################################################################
  674.  
  675. AddCheckBox(opt_druid_feral_aoe L(AOE) default specialization=feral)
  676.  
  677. AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=shortcd specialization=feral
  678. {
  679.     unless InCombat()
  680.         FeralPrecombatShortCdActions()
  681.  
  682.     FeralDefaultShortCdActions()
  683. }
  684.  
  685. AddIcon checkbox=opt_druid_feral_aoe help=shortcd specialization=feral
  686. {
  687.     unless InCombat()
  688.         FeralPrecombatShortCdActions()
  689.  
  690.     FeralDefaultShortCdActions()
  691. }
  692.  
  693. AddIcon enemies=1 help=main specialization=feral
  694. {
  695.     unless InCombat()
  696.         FeralPrecombatMainActions()
  697.  
  698.     FeralDefaultMainActions()
  699. }
  700.  
  701. AddIcon checkbox=opt_druid_feral_aoe help=aoe specialization=feral
  702. {
  703.     unless InCombat()
  704.         FeralPrecombatMainActions()
  705.  
  706.     FeralDefaultMainActions()
  707. }
  708.  
  709. AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=cd specialization=feral
  710. {
  711.     unless InCombat()
  712.         FeralPrecombatCdActions()
  713.  
  714.     FeralDefaultCdActions()
  715. }
  716.  
  717. AddIcon checkbox=opt_druid_feral_aoe help=cd specialization=feral
  718. {
  719.     unless InCombat()
  720.         FeralPrecombatCdActions()
  721.  
  722.     FeralDefaultCdActions()
  723. }
  724.  
  725. ### Required symbols
  726. # dash
  727. # cat_form_buff
  728. # cat_form
  729. # rake
  730. # prowl_buff
  731. # shadowmeld_buff
  732. # incarnation_king_of_the_jungle_buff
  733. # bloodtalons_talent
  734. # ferocious_bite
  735. # rip_debuff
  736. # predatory_swiftness_buff
  737. # bloodtalons_buff
  738. # apex_predator_buff
  739. # regrowth
  740. # rake_debuff
  741. # prowl
  742. # jungle_stalker_buff
  743. # incarnation_king_of_the_jungle
  744. # berserk
  745. # tigers_fury
  746. # berserking
  747. # prolonged_power_potion
  748. # berserk_buff
  749. # feral_frenzy
  750. # shadowmeld
  751. # tigers_fury_buff
  752. # incarnation_talent
  753. # savage_roar
  754. # savage_roar_buff
  755. # rip
  756. # brutal_slash
  757. # thrash_cat
  758. # thrash_cat_debuff
  759. # brutal_slash_talent
  760. # moonfire_cat
  761. # moonfire_cat_debuff
  762. # luffa_wrappings
  763. # swipe_cat
  764. # shred
  765. # clearcasting_buff
  766. # lunar_inspiration_talent
  767. # sabertooth_talent
  768. # wild_charge
  769. # wild_charge_bear
  770. # wild_charge_cat
  771. # skull_bash
  772. # mighty_bash
  773. # maim
  774. # war_stomp
  775. # typhoon
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top