Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # ShmooDude Feral Script
- #
- # Options:
- # Interrupt - Suggests use of interrupting abilities, including stuns/knockbacks on non-boss targets.
- #
- # Multiple-targets rotation - If this is disabled, the AoE icon is removed
- #
- # Use Prolonged Power Potion - Whether or not to suggest using Prolonged Power Potions
- #
- # Tiger's Fury multiplier prediction - Applies the Tiger's Fury multiplier if Tiger's Fury is ready.
- # e.g. If TF is being suggested, any Rip suggestions will assume you use TF first.
- #
- # Opener Dropdown Box:
- # Always - Will always use the opener
- # - Prowl, Rake, SR, AF, TF/Incarn, Shred if needed, Rip and a few other tweaks.
- # Use opener on worldbosses - Will use the opener on enemies classified as worldbosses (by Blizzard's classification function)
- # Never - Don't use the opener
- # Brutal Slash Behavior Dropdown Box:
- # BrS: Prevent capping charges - Will use BrS at ~2.66 charges on single target
- # BrS: Only use when Tiger's Fury is up - Only suggests to use BrS when Tiger's Fury is up
- # BrS: Prevent capping AND only with TF - Will use BrS at ~2.66 charges on single target
- # BrS: Do not use on single target - Will only use BrS when at number of targets in other dropdown box
- # Brutal Slash Targets Dropdown Box:
- # Suggests Brutal Slash as a high priority when the selected number of enemies are present
- # "Only count tagged enemies" in Ovale options (Advanced tab) will only count enemies you have hit recently
- #
- # Melee Range Dropdown Box:
- # Get in melee range without distance - Shows movement abilities or an arrow
- # Get in melee range with distance - Same as above with text estimating your distance away from the target
- # No get in melee range - Will not show movement abilities or an arrow
- #
- # Cooldowns/Main Action Dropdown Box:
- # Will put the abilities listed in the indicated icon (shortcd = leftmost; cd = rightmost)
- #
- # Self-heal Dropdown Box: (only non-BT builds)
- # Aggressively self-heal at XX% - Will prioritize self healing over DPS at the specified percent
- # Self-heal during free globals
- # Don't self-heal in combat
- # Constants
- Define(berserk_percent_value 60)
- Define(bloodtalons_value 1.25)
- Define(tigers_fury_buff_value 1.15)
- # Common
- Define(berserking 26297)
- SpellInfo(berserking cd=180)
- SpellAddBuff(berserking berserking_buff=1)
- Define(berserking_buff 26297)
- SpellInfo(berserking_buff duration=10)
- # Druid Feral
- Define(berserk_cat 106951)
- SpellInfo(berserk_cat cd=180)
- SpellInfo(berserk_cat replace=incarnation_king_of_the_jungle talent=incarnation_king_of_the_jungle_talent)
- SpellAddBuff(berserk_cat berserk_cat_buff=1)
- Define(berserk_cat_buff 106951)
- SpellInfo(berserk_cat_buff duration=15)
- Define(incarnation_king_of_the_jungle 102543)
- SpellInfo(incarnation_king_of_the_jungle cd=180)
- SpellAddBuff(incarnation_king_of_the_jungle incarnation_king_of_the_jungle_buff=1)
- SpellAddBuff(incarnation_king_of_the_jungle jungle_stalker_buff=1)
- Define(incarnation_king_of_the_jungle_buff 102543)
- SpellInfo(incarnation_king_of_the_jungle_buff duration=30)
- SpellList(berserk_spell_list berserk_cat_buff incarnation_king_of_the_jungle_buff)
- SpellRequire(feral_frenzy energy_percent berserk_percent_value=buff,berserk_spell_list)
- SpellRequire(shred energy_percent berserk_percent_value=buff,berserk_spell_list)
- SpellRequire(swipe_cat energy_percent berserk_percent_value=buff,berserk_spell_list)
- SpellRequire(brutal_slash energy_percent berserk_percent_value=buff,berserk_spell_list)
- SpellRequire(thrash_cat energy_percent berserk_percent_value=buff,berserk_spell_list)
- SpellRequire(rake energy_percent berserk_percent_value=buff,berserk_spell_list)
- SpellRequire(rip energy_percent berserk_percent_value=buff,berserk_spell_list)
- SpellRequire(ferocious_bite energy_percent berserk_percent_value=buff,berserk_spell_list)
- SpellRequire(maim energy_percent berserk_percent_value=buff,berserk_spell_list)
- SpellRequire(savage_roar energy_percent berserk_percent_value=buff,berserk_spell_list)
- Define(bloodtalons_buff 145152)
- SpellInfo(bloodtalons_buff duration=30 max_stacks=2)
- SpellAddBuff(regrowth bloodtalons_buff=2 talent=bloodtalons_talent specialization=feral)
- SpellAddBuff(shred bloodtalons_buff=-1 talent=bloodtalons_talent)
- SpellAddBuff(thrash_cat bloodtalons_buff=-1 talent=bloodtalons_talent)
- SpellAddBuff(shred bloodtalons_buff=-1 talent=bloodtalons_talent)
- SpellAddBuff(brutal_slash bloodtalons_buff=-1 talent=bloodtalons_talent)
- SpellAddBuff(maim bloodtalons_buff=-1 talent=bloodtalons_talent)
- SpellAddBuff(rip bloodtalons_buff=-1 talent=bloodtalons_talent)
- SpellAddBuff(ferocious_bite bloodtalons_buff=-1 talent=bloodtalons_talent)
- SpellAddBuff(rake bloodtalons_buff=-1 talent=bloodtalons_talent)
- SpellDamageBuff(rip bloodtalons_buff=bloodtalons_value talent=bloodtalons_talent)
- SpellDamageBuff(rake bloodtalons_buff=bloodtalons_value talent=bloodtalons_talent)
- SpellDamageBuff(thrash_cat bloodtalons_buff=bloodtalons_value talent=bloodtalons_talent)
- Define(brutal_slash 202028)
- SpellInfo(brutal_slash energy=30 combopoints=-1 cd=8 cd_haste=melee charges=3)
- SpellInfo(brutal_slash physical=1)
- Define(cat_form 768)
- SpellInfo(cat_form to_stance=druid_cat_form)
- SpellInfo(cat_form unusable=1 if_stance=druid_cat_form)
- SpellAddBuff(cat_form cat_form_buff=1)
- Define(cat_form_buff 768)
- Define(omen_of_clarity 16864)
- Define(clearcasting 135700)
- Define(clearcasting_buff 135700)
- SpellInfo(clearcasting_buff duration=15)
- SpellRequire(shred energy_percent 0=buff,clearcasting_buff if_spell=omen_of_clarity)
- SpellRequire(swipe_cat energy_percent 0=buff,clearcasting_buff if_spell=omen_of_clarity)
- SpellRequire(brutal_slash energy_percent 0=buff,clearcasting_buff if_spell=omen_of_clarity)
- SpellRequire(thrash_cat energy_percent 0=buff,clearcasting_buff if_spell=omen_of_clarity)
- Define(dash 1850)
- SpellInfo(dash cd=180)
- SpellInfo(dash gcd=0 offgcd=1 if_stance=druid_cat_form)
- SpellInfo(dash to_stance=druid_cat_form if_stance=!druid_cat_form)
- Define(feral_frenzy 274837)
- SpellInfo(feral_frenzy energy=25 combopoints=-5 cd=45)
- Define(ferocious_bite 22568)
- SpellInfo(ferocious_bite energy=25 max_energy=50 combopoints=1 max_combopoints=5)
- SpellInfo(ferocious_bite physical=1)
- SpellAddTargetDebuff(ferocious_bite rip_debuff=refresh_keep_snapshot,target_health_pct,25)
- SpellAddTargetDebuff(ferocious_bite rip_debuff=refresh_keep_snapshot talent=sabertooth_talent)
- ######(incarnation_king_of_the_jungle is above at berserk_cat)
- Define(jungle_stalker_buff 252071)
- Define(maim 22570)
- SpellInfo(maim energy=35 combopoints=1 max_combopoints=5 cd=20)
- Define(mighty_bash 5211)
- SpellInfo(mighty_bash cd=50)
- Define(moonfire_cat 155625)
- SpellInfo(moonfire_cat energy=30 combopoints=-1 unusable=1)
- SpellInfo(moonfire_cat unusable=0 specialization=feral talent=lunar_inspiration_talent)
- SpellAddTargetDebuff(moonfire_cat moonfire_cat_debuff=1)
- Define(moonfire_cat_debuff 155625)
- SpellInfo(moonfire_cat_debuff duration=14 haste=melee tick=2)
- Define(predatory_swiftness_buff 69369)
- SpellInfo(predatory_swiftness_buff duration=12)
- Define(prolonged_power_potion 142117)
- SpellInfo(prolonged_power_potion duration=60)
- Define(prowl 5215)
- SpellInfo(prowl cd=6 gcd=0 offgcd=1 to_stance=druid_cat_form)
- Define(prowl_buff 5215)
- SpellList(improved_rake prowl_buff shadowmeld_buff incarnation_king_of_the_jungle_buff)
- Define(rake 1822)
- SpellInfo(rake energy=35 combopoints=-1)
- SpellAddBuff(rake prowl_buff=0)
- SpellAddBuff(rake shadowmeld_buff=0)
- SpellAddTargetDebuff(rake rake_debuff=1)
- SpellDamageBuff(rake improved_rake=2)
- Define(rake_debuff 155722)
- SpellInfo(rake_debuff duration=15 haste=melee tick=3 talent=!jagged_wounds_talent)
- SpellInfo(rake_debuff duration=12 haste=melee tick=2.4 talent=jagged_wounds_talent)
- SpellDamageBuff(rake_debuff improved_rake=2)
- Define(regrowth 8936)
- SpellInfo(regrowth mana=14)
- SpellInfo(regrowth gcd_haste=spell if_buff=predatory_swiftness_buff) # Not sure this works.
- Define(rip 1079)
- SpellInfo(rip energy=30 combopoints=1 max_combopoints=5)
- SpellAddTargetDebuff(rip rip_debuff=1)
- Define(rip_debuff 1079)
- SpellInfo(rip_debuff duration=24 haste=melee tick=2 talent=!jagged_wounds_talent)
- SpellInfo(rip_debuff duration=19.2 haste=melee tick=1.6 talent=jagged_wounds_talent)
- Define(savage_roar 52610)
- SpellInfo(savage_roar energy=30 combopoints=1 max_combopoints=5)
- SpellAddBuff(savage_roar savage_roar_buff=1)
- Define(savage_roar_buff 52610)
- SpellInfo(savage_roar_buff duration=6 add_durationcp=6)
- Define(shadowmeld 58984)
- Define(shadowmeld_buff 58984)
- Define(shred 5221)
- SpellInfo(shred energy=40 combopoints=-1)
- Define(skull_bash 106839)
- SpellInfo(skull_bash cd=15 gcd=0 offgcd=1 interrupt=1)
- Define(swipe_cat 106785)
- SpellInfo(swipe_cat energy=40 combopoints=-1)
- Define(thrash_cat 106830)
- SpellInfo(thrash_cat energy=45 combopoints=-1)
- SpellAddTargetDebuff(thrash_cat thrash_cat_debuff=1)
- Define(thrash_cat_debuff 106830)
- Define(tigers_fury 5217)
- SpellInfo(tigers_fury energy=-50 cd=30 gcd=0 offgcd=1)
- SpellAddBuff(tigers_fury tigers_fury_buff=1)
- Define(tigers_fury_buff 5217)
- SpellInfo(tigers_fury duration=10)
- SpellDamageBuff(thrash_cat tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
- SpellDamageBuff(thrash_cat_debuff tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
- SpellDamageBuff(moonfire_cat tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
- SpellDamageBuff(moonfire_cat_debuff tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
- SpellDamageBuff(rake tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
- SpellDamageBuff(rake_debuff tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
- SpellDamageBuff(rip tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
- SpellDamageBuff(rip_debuff tigers_fury_buff=tigers_fury_buff_value if_spell=tigers_fury)
- Define(typhoon 132469)
- SpellInfo(typhoon cd=30)
- Define(war_stomp 20549)
- Define(wild_charge 102401)
- SpellInfo(wild_charge cd=15 gcd=0 offgcd=1)
- SpellInfo(wild_charge replace=wild_charge_bear if_stance=druid_bear_form)
- SpellInfo(wild_charge replace=wild_charge_cat if_stance=druid_cat_form)
- Define(wild_charge_bear 16979)
- SpellInfo(wild_charge_bear cd=15 gcd=0 offgcd=1)
- Define(wild_charge_cat 49376)
- SpellInfo(wild_charge_cat cd=15 gcd=0 offgcd=1)
- # Talents
- Define(lunar_inspiration_talent 3)
- Define(jagged_wounds_talent 14)
- Define(incarnation_king_of_the_jungle_talent 15)
- Define(sabertooth_talent 16)
- Define(brutal_slash_talent 17)
- Define(bloodtalons_talent 20)
- # Tier 21
- Define(apex_predator_buff 252752)
- SpellRequire(ferocious_bite energy_percent 0=buff,apex_predator_buff)
- SpellRequire(ferocious_bite refund_combopoints cost=buff,apex_predator_buff)
- # Legendaries
- Define(luffa_wrappings 137056)
- AddCheckBox(opt_interrupt L(interrupt) default specialization=feral)
- AddCheckBox(opt_use_consumables "Use Prolonged Power Potion" default specialization=feral)
- AddCheckBox(opt_tigers_fury_multiplier_predict "Tiger's Fury multiplier prediction" default specialization=feral)
- ###############################################################################################
- ### Helper Variables (Functions)
- ###############################################################################################
- #variable,name=execute_percent,value=25+75*talent.sabertooth.enabled
- AddFunction execute_percent
- {
- 25 + 75 * TalentPoints(sabertooth_talent)
- }
- AddFunction FeralUseItemActions
- {
- Item(Trinket0Slot text=13 usable=1)
- Item(Trinket1Slot text=14 usable=1)
- }
- AddFunction FeralGetInMeleeRange
- {
- if target.InRange(shred no)
- {
- #wild_charge
- if target.InRange(wild_charge) Spell(wild_charge)
- #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
- if target.Distance(atLeast 25) Spell(dash)
- #not_in_melee_range_arrow
- Texture(misc_arrowlup help=L(not_in_melee_range))
- }
- }
- AddFunction FeralInterruptActions
- {
- if CheckBoxOn(opt_interrupt) and not target.IsFriend() and target.Casting()
- {
- #skull_bash
- if target.InRange(skull_bash) and target.IsInterruptible() Spell(skull_bash)
- #mighty_bash
- if target.InRange(mighty_bash) and not target.Classification(worldboss) Spell(mighty_bash)
- #maim
- if target.InRange(maim) and not target.Classification(worldboss) Spell(maim)
- #war_stomp
- if target.Distance(less 5) and not target.Classification(worldboss) Spell(war_stomp)
- #typhoon
- if target.Distance(less 15) and not target.Classification(worldboss) Spell(typhoon)
- }
- }
- #Tiger's Fury multiplier prediction
- AddFunction TFMultPred asvalue=1
- {
- if CheckBoxOn(opt_tigers_fury_multiplier_predict)
- and BuffExpires(tigers_fury_buff)
- and SpellCooldown(tigers_fury equal 0)
- and FeralTigersFuryConditions() tigers_fury_buff_value
- 1
- }
- ###############################################################################################
- ### actions.opener
- ###############################################################################################
- AddListItem(opt_use_opener opener_always "Always use opener" specialization=feral)
- AddListItem(opt_use_opener opener_bosses_only "Use opener on worldbosses" specialization=feral default)
- AddListItem(opt_use_opener opener_never "Never use opener" specialization=feral)
- AddFunction FeralOpenerMainActions
- {
- #moonfire_cat,if=talent.lunar_inspiration.enabled&!ticking
- if Talent(lunar_inspiration_talent)
- and target.DebuffExpires(moonfire_cat_debuff)
- Spell(moonfire_cat)
- #savage_roar,if=buff.savage_roar.down&!dot.rip.ticking
- if BuffExpires(savage_roar_buff)
- and target.DebuffExpires(rip_debuff)
- Spell(savage_roar)
- #regrowth,if=talent.sabertooth.enabled&talent.bloodtalons.enabled&buff.bloodtalons.down&combo_points=5&!dot.rip.ticking
- if Talent(sabertooth_talent)
- and Talent(bloodtalons_talent)
- and BuffExpires(bloodtalons_buff)
- and ComboPoints(equal 5)
- and target.DebuffExpires(rip_debuff)
- and BuffExpires(predatory_swiftness_buff)
- Spell(regrowth text=hardcast)
- }
- ###############################################################################################
- ### actions.default
- ###############################################################################################
- AddFunction FeralProwlRakeConditions
- {
- BuffPresent(prowl_buff)
- or BuffPresent(shadowmeld_buff)
- or BuffPresent(incarnation_king_of_the_jungle_buff)
- and BuffRemaining(incarnation_king_of_the_jungle_buff less 1)
- and not Talent(bloodtalons_talent)
- }
- AddFunction FeralSelfHealConditions
- {
- BuffPresent(predatory_swiftness_buff)
- and not Talent(bloodtalons_talent)
- }
- AddFunction FeralSelfHealConservativeConditions
- {
- not List(opt_self_healing self_heal_never)
- and HealthPercent(less 90)
- and FeralSelfHealConditions()
- }
- AddListItem(opt_self_healing self_heal_never "Do not self-heal in combat" specialization=feral default)
- AddListItem(opt_self_healing self_heal_conservative "Self-heal during free globals" specialization=feral)
- AddListItem(opt_self_healing self_heal_aggressive_80 "Aggressively self heal at 80%" specialization=feral)
- AddListItem(opt_self_healing self_heal_aggressive_60 "Aggressively self heal at 60%" specialization=feral)
- AddListItem(opt_self_healing self_heal_aggressive_40 "Aggressively self heal at 40%" specialization=feral)
- AddListItem(opt_self_healing self_heal_aggressive_20 "Aggressively self heal at 20%" specialization=feral)
- AddFunction FeralAggressiveSelfHealPercent
- {
- if List(opt_self_healing self_heal_aggressive_80) HealthPercent(less 80)
- if List(opt_self_healing self_heal_aggressive_60) HealthPercent(less 60)
- if List(opt_self_healing self_heal_aggressive_40) HealthPercent(less 40)
- if List(opt_self_healing self_heal_aggressive_20) HealthPercent(less 20)
- False()
- }
- AddFunction FeralDefaultMainActions
- {
- #cat_form,if=buff.cat_form.down
- if BuffExpires(cat_form_buff)
- Spell(cat_form)
- #rake,if=buff.prowl.up|buff.shadowmeld.up|(buff.incarnation.up&buff.incarnation.remains<1&!talent.bloodtalons.enabled)
- if FeralProwlRakeConditions()
- Spell(rake pool_resource=1 text=Prowl)
- # MODIFICATION: List(opt_use_opener opener_always) or List(opt_use_opener opener_bosses_only) and target.Classification(worldboss)
- # REASON: Allow the user to choose when to use the opener
- #call_action_list,name=opener,if=time<15
- if TimeInCombat(less 15)
- and { List(opt_use_opener opener_always)
- or List(opt_use_opener opener_bosses_only) and target.Classification(worldboss) }
- FeralOpenerMainActions()
- #call_action_list,name=cooldowns
- FeralCooldownsMainActions()
- #ferocious_bite,target_if=dot.rip.ticking&dot.rip.remains<3&target.time_to_die>10&target.health.pct<=variable.execute_percent
- if target.DebuffPresent(rip_debuff)
- and target.DebuffRemaining(rip_debuff less 3)
- and target.TimeToDie(more 10)
- and target.HealthPercent() <= execute_percent()
- Spell(ferocious_bite text=Refresh)
- #call_action_list,name=bloodtalons,if=talent.bloodtalons.enabled&buff.predatory_swiftness.up&buff.bloodtalons.down
- if FeralBloodtalonsActionsConditions()
- FeralBloodtalonsMainActions()
- #ferocious_bite,if=buff.apex_predator.up
- if BuffPresent(apex_predator_buff)
- Spell(ferocious_bite text=Apex)
- #regrowth,if=health.pct<20
- if FeralAggressiveSelfHealPercent()
- and FeralSelfHealConditions()
- Spell(regrowth text=Heal)
- #run_action_list,name=finishers,if=combo_points>4
- if ComboPoints(equal 5)
- FeralFinishersMainActions()
- #run_action_list,name=generators
- if ComboPoints(less 5)
- FeralGeneratorsMainActions()
- }
- AddFunction FeralDefaultShortCdActions
- {
- # MODIFICATION: Move above unless
- # REASON: To show during opener
- #auto_attack
- FeralGetInMeleeRange()
- unless BuffExpires(cat_form_buff) and Spell(cat_form) or FeralProwlRakeConditions() and Spell(rake pool_resource=1)
- {
- #call_action_list,name=cooldowns
- FeralCooldownsShortCdActions()
- }
- }
- AddFunction FeralDefaultCdActions
- {
- unless BuffExpires(cat_form_buff) and Spell(cat_form) or FeralProwlRakeConditions() and Spell(rake pool_resource=1)
- {
- # MODIFICATION: Interrupt
- # REASON: No longer automatically added
- #skull_bash
- FeralInterruptActions()
- #call_action_list,name=cooldowns
- FeralCooldownsCdActions()
- }
- }
- ###############################################################################################
- ### actions.cooldowns
- ###############################################################################################
- AddCheckBox(opt_shadowmeld_main_action "Shadowmeld as a main action" specialization=feral)
- AddFunction FeralTigersFuryConditions
- {
- EnergyDeficit(atLeast 50)
- }
- # MODIFICATION: target.TimeToDie(more 10)
- # REASON: Does not use Shadowmeld on targets with less than 10 seconds to live
- # MODIFICATION: target.InRange(rake)
- # REASON: Cannot move after Shadowmeld so add range check before suggesting
- # MODIFICATION: TFMultPred() > 1 when CheckBoxOn(opt_tigers_fury_multiplier_predict)
- # REASON: Make Shadowmeld show up if Tiger's Fury conditions are met
- AddFunction FeralShadowmeldConditions
- {
- ComboPoints(less 5)
- and Energy() >= PowerCost(rake)
- and target.DebuffPersistentMultiplier(rake_debuff less 2.1)
- and { BuffPresent(tigers_fury_buff) or TFMultPred() > 1 }
- and { not Talent(bloodtalons_talent) or BuffPresent(bloodtalons_buff) }
- and { not Talent(incarnation_talent) or SpellCooldown(incarnation_king_of_the_jungle more 18) }
- and BuffExpires(incarnation_king_of_the_jungle_buff)
- and target.TimeToDie(more 10)
- and target.InRange(rake)
- }
- AddFunction FeralCooldownsMainActions
- {
- #feral_frenzy,if=combo_points=0&target.time_to_die>10
- if ComboPoints(equal 0)
- and target.TimeToDie(more 10)
- Spell(feral_frenzy)
- # MODIFICATION: CheckBoxOn(opt_shadowmeld_main_action)
- # REASON: Allows player to choose for Shadowmeld suggestions to be in the main Icon
- #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
- if FeralShadowmeldConditions()
- and CheckBoxOn(opt_shadowmeld_main_action)
- Spell(shadowmeld)
- }
- AddFunction FeralCooldownsShortCdActions
- {
- # MODIFICATION: 0.5 to 0.8
- # REASON: Players need more reaction time.
- #prowl,if=buff.incarnation.remains<0.5&buff.jungle_stalker.up
- if BuffRemaining(incarnation_king_of_the_jungle_buff less 0.8)
- and BuffPresent(jungle_stalker_buff)
- Spell(prowl)
- #tigers_fury,if=energy.deficit>=50
- if FeralTigersFuryConditions()
- Spell(tigers_fury)
- }
- AddFunction FeralCooldownsCdActions
- {
- #incarnation,if=energy>=30
- if Energy(atLeast 30)
- Spell(incarnation_king_of_the_jungle)
- #berserk,if=energy>=30&cooldown.tigers_fury.remains<5
- if Energy(atLeast 30)
- and SpellCooldown(tigers_fury less 5)
- Spell(berserk_cat)
- #berserking
- Spell(berserking)
- #potion,name=prolonged_power,if=target.time_to_die<65|(time_to_die<180&(buff.berserk.up|buff.incarnation.up|cooldown.incarnation.remains<25))
- if { target.TimeToDie(less 65)
- or target.TimeToDie(less 180)
- and { BuffPresent(berserk_cat_buff)
- or BuffPresent(incarnation_king_of_the_jungle_buff)
- or SpellCooldown(incarnation_king_of_the_jungle less 25) } }
- and CheckBoxOn(opt_use_consumables)
- and target.Classification(worldboss)
- Item(prolonged_power_potion usable=1)
- #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
- # MODIFICATION: CheckBoxOff(opt_shadowmeld_main_action)
- # REASON: Allows player to choose via checkbox whether to add Shadowmeld to the cd Icon
- if FeralShadowmeldConditions()
- and CheckBoxOff(opt_shadowmeld_main_action)
- Spell(shadowmeld)
- #use_items
- FeralUseItemActions()
- }
- ###############################################################################################
- ### actions.bloodtalons
- ###############################################################################################
- AddFunction FeralBloodtalonsActionsConditions
- {
- Talent(bloodtalons_talent)
- and BuffPresent(predatory_swiftness_buff)
- and BuffExpires(bloodtalons_buff)
- }
- AddFunction FeralBloodtalonsMainActions
- {
- #regrowth,if=combo_points=4&dot.rake.remains<4
- if ComboPoints(equal 4)
- and target.DebuffRemaining(rake_debuff less 4)
- Spell(regrowth)
- #regrowth,if=combo_points=5
- if ComboPoints(equal 5)
- Spell(regrowth)
- #regrowth,if=buff.apex_predator.up
- if BuffPresent(apex_predator_buff)
- Spell(regrowth text=Apex)
- #regrowth,if=buff.predatory_swiftness.remains<1.7
- if BuffRemaining(predatory_swiftness_buff less 1.7)
- Spell(regrowth text=expiring)
- }
- ###############################################################################################
- ### actions.finishers
- ###############################################################################################
- AddFunction Spell_savage_roar
- {
- if TimeToEnergyFor(savage_roar more 0.75)
- and FeralSelfHealConservativeConditions()
- Spell(regrowth text=Heal)
- Spell(savage_roar pool_resource=1)
- }
- AddFunction Spell_rip
- {
- if TimeToEnergyFor(rip more 0.75)
- and FeralSelfHealConservativeConditions()
- Spell(regrowth text=Heal)
- Spell(rip)
- }
- AddFunction Spell_ferocious_bite
- {
- if TimeToEnergyFor(ferocious_bite more 0.75)
- and FeralSelfHealConservativeConditions()
- Spell(regrowth text=Heal)
- Spell(ferocious_bite)
- }
- AddFunction Spell_ferocious_bite_max
- {
- if TimeToEnergyFor(ferocious_bite more 0)
- and FeralSelfHealConservativeConditions()
- Spell(regrowth text=Heal)
- Spell(ferocious_bite max=1)
- }
- AddFunction FeralFinishersMainActions
- {
- #pool_resource,for_next=1
- #savage_roar,if=buff.savage_roar.down
- if BuffExpires(savage_roar_buff)
- Spell_savage_roar()
- # MODIFICATION: TFMultPred when CheckBoxOn(opt_tigers_fury_multiplier_predict)
- # REASON: When Tiger's Fury is suggested, treat Rip as if it is already up even if it hasn't been cast yet.
- #pool_resource,for_next=1
- #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)
- if { target.DebuffExpires(rip_debuff)
- or target.DebuffRemaining(rip_debuff) <= BaseDuration(rip_debuff) * 0.3
- and target.HealthPercent() > execute_percent()
- or target.DebuffRemaining(rip_debuff) <= BaseDuration(rip_debuff) * 0.85
- and TFMultPred() * PersistentMultiplier(rip_debuff) > target.DebuffPersistentMultiplier(rip_debuff) }
- and { target.TimeToDie() > 4 * target.TickTime(rip_debuff) * Enemies() + target.DebuffRemaining(rip_debuff)
- or target.TimeToDie() > BaseDuration(rip_debuff) + target.DebuffRemaining(rip_debuff) }
- Spell_rip()
- #pool_resource,for_next=1
- #savage_roar,if=buff.savage_roar.remains<10.8
- if BuffRemaining(savage_roar_buff less 10.8)
- Spell_savage_roar()
- #ferocious_bite,if=spell_targets.thrash_cat>2
- if Enemies(more 2)
- Spell_ferocious_bite()
- #ferocious_bite,max_energy=1
- #if Energy() >= EnergyCost(ferocious_bite max=1)
- Spell_ferocious_bite_max()
- }
- ###############################################################################################
- ### actions.generators
- ###############################################################################################
- AddFunction Spell_brutal_slash
- {
- if BuffPresent(clearcasting_buff) Spell(brutal_slash text=CC)
- if TimeToEnergyFor(brutal_slash more 0.75)
- and FeralSelfHealConservativeConditions()
- Spell(regrowth text=Heal)
- Spell(brutal_slash pool_resource=1)
- }
- AddFunction Spell_thrash_cat
- {
- if BuffPresent(clearcasting_buff) Spell(thrash_cat text=CC)
- if TimeToEnergyFor(thrash_cat more 0.75)
- and FeralSelfHealConservativeConditions()
- Spell(regrowth text=Heal)
- Spell(thrash_cat pool_resource=1)
- }
- AddFunction Spell_swipe_cat
- {
- if BuffPresent(clearcasting_buff) Spell(swipe_cat text=CC)
- if TimeToEnergyFor(swipe_cat more 0.75)
- and FeralSelfHealConservativeConditions()
- Spell(regrowth text=Heal)
- Spell(swipe_cat pool_resource=1)
- }
- AddFunction Spell_rake
- {
- if TimeToEnergyFor(rake more 0.75)
- and FeralSelfHealConservativeConditions()
- Spell(regrowth text=Heal)
- Spell(rake pool_resource=1)
- }
- AddFunction Spell_moonfire_cat
- {
- if TimeToEnergyFor(moonfire_cat more 0.75)
- and FeralSelfHealConservativeConditions()
- Spell(regrowth text=Heal)
- Spell(moonfire_cat pool_resource=1)
- }
- AddFunction Spell_shred
- {
- if BuffPresent(clearcasting_buff) Spell(shred text=CC)
- if TimeToEnergyFor(shred more 0.75)
- and FeralSelfHealConservativeConditions()
- Spell(regrowth text=Heal)
- Spell(shred pool_resource=1)
- }
- AddListItem(opt_brutal_slash_behavior brs_01_prevent_capping "BrS: Prevent capping charges" default specialization=feral)
- AddListItem(opt_brutal_slash_behavior brs_02_only_tigers_fury "BrS: Use only when Tiger's Fury is up" specialization=feral)
- AddListItem(opt_brutal_slash_behavior brs_03_both "BrS: Prevent capping AND only with TF" specialization=feral)
- AddListItem(opt_brutal_slash_behavior brs_04_neither "BrS: Do not use on single target" specialization=feral)
- AddListItem(opt_desired_targets desired_targets_01 "Brutal Slash at 1 target" specialization=feral)
- AddListItem(opt_desired_targets desired_targets_02 "Brutal Slash at 2 targets" specialization=feral)
- AddListItem(opt_desired_targets desired_targets_03 "Brutal Slash at 3 targets" specialization=feral default)
- AddListItem(opt_desired_targets desired_targets_04 "Brutal Slash at 4 targets" specialization=feral)
- AddListItem(opt_desired_targets desired_targets_05 "Brutal Slash at 5 targets" specialization=feral)
- AddListItem(opt_desired_targets desired_targets_06 "Brutal Slash at 6 targets" specialization=feral)
- AddFunction BrutalSlashDesiredTargets asvalue=1
- {
- if List(opt_desired_targets desired_targets_01) 1
- if List(opt_desired_targets desired_targets_02) 2
- if List(opt_desired_targets desired_targets_03) 3
- if List(opt_desired_targets desired_targets_04) 4
- if List(opt_desired_targets desired_targets_05) 5
- 6
- }
- AddFunction FeralRakeTTD
- {
- target.TimeToDie() > target.TickTime(rake_debuff) * Enemies() + target.DebuffRemaining(rake_debuff)
- or target.TimeToDie() > BaseDuration(rake_debuff) + target.DebuffRemaining(rake_debuff)
- }
- AddCheckBox(opt_use_thrash "Always use Thrash" specialization=feral)
- AddFunction FeralGeneratorsMainActions
- {
- # 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) }
- # REASON: Only use Brutal Slash if Tiger's Fury is up
- #brutal_slash,if=spell_targets.brutal_slash>desired_targets
- if Enemies() >= BrutalSlashDesiredTargets()
- and { BuffPresent(tigers_fury)
- or List(opt_brutal_slash_behavior brs_01_prevent_capping)
- or List(opt_brutal_slash_behavior brs_04_neither) }
- Spell_brutal_slash()
- #pool_resource,for_next=1
- #thrash_cat,if=spell_targets.thrash_cat>2&(refreshable|(spell_targets.thrash_cat>6+buff.incarnation.up&talent.brutal_slash.enabled))
- if Enemies(more 2)
- and { target.Refreshable(thrash_cat_debuff)
- or Enemies() > 6 + BuffPresent(incarnation_king_of_the_jungle_buff)
- and Talent(brutal_slash_talent) }
- Spell_thrash_cat()
- #pool_resource,for_next=1
- #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)
- if { target.DebuffExpires(rake_debuff)
- or Talent(bloodtalons_talent no)
- and target.DebuffRefreshable(rake_debuff)
- or Talent(bloodtalons_talent)
- and BuffPresent(bloodtalons_buff)
- and target.DebuffRemaining(rake_debuff less 7)
- and PersistentMultiplier(rake_debuff) > target.DebuffPersistentMultiplier(rake_debuff) * 0.85
- }
- and FeralRakeTTD()
- Spell_rake()
- # MODIFICATION: List(opt_brutal_slash_behavior brs_01_prevent_capping) or List(opt_brutal_slash_behavior brs_03_both)
- # REASON: Prevents capping of charges
- #brutal_slash,if=buff.tigers_fury.up&(raid_event.adds.in>(1+max_charges-charges_fractional)*recharge_time)
- if Charges(brutal_slash count=0 more 2.66)
- and { List(opt_brutal_slash_behavior brs_01_prevent_capping)
- or List(opt_brutal_slash_behavior brs_03_both) }
- Spell_brutal_slash()
- #moonfire_cat,target_if=refreshable&target.time_to_die>14+remains
- if target.Refreshable(moonfire_cat_debuff)
- and target.TimeToDie() > 14 + target.DebuffRemaining(moonfire_cat_debuff)
- Spell_moonfire_cat()
- #pool_resource,for_next=1
- #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))
- if Enemies() > HasEquippedItem(luffa_wrappings no) - CheckBoxOn(opt_use_thrash)
- and { target.Refreshable(thrash_cat_debuff)
- or Enemies() > 1 + BuffPresent(incarnation_king_of_the_jungle_buff) + HasEquippedItem(luffa_wrappings no)
- and Talent(brutal_slash_talent)
- }
- Spell_thrash_cat()
- #pool_resource,for_next=1
- #swipe_cat,if=spell_targets.swipe_cat>1+buff.incarnation.up
- if Enemies() > 1 + BuffPresent(incarnation_king_of_the_jungle_buff)
- Spell_swipe_cat()
- # MODIFICATION: or not FeralRakeTTD()
- # REASON: So Shred shows on dying targets that do not have Rake on them
- #shred,if=dot.rake.remains>(action.shred.cost+action.rake.cost-energy)%energy.regen|buff.clearcasting.react
- if target.DebuffRemaining(rake_debuff) > { PowerCost(shred) + PowerCost(rake) - Energy() } / EnergyRegenRate()
- or BuffPresent(clearcasting_buff)
- or not FeralRakeTTD()
- Spell_shred()
- }
- ###############################################################################################
- ### actions.precombat
- ###############################################################################################
- # MODIFICATION: and BuffRemaining(bloodtalons_buff less 20) and BuffExpires(prowl_buff)
- # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
- AddFunction FeralPrecombatRegrowthConditions
- {
- Talent(bloodtalons_talent)
- and BuffRemaining(bloodtalons_buff less 20)
- and BuffExpires(prowl_buff)
- }
- AddFunction FeralPrecombatMainActions
- {
- #flask
- #food
- #augmentation
- # MODIFICATION: FeralPrecombatRegrowthConditions()
- # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
- #regrowth,if=talent.bloodtalons.enabled
- if FeralPrecombatRegrowthConditions()
- Spell(regrowth)
- #regrowth,if=health.pct<90
- if HealthPercent(less 90) Spell(regrowth text=Heal)
- #cat_form
- Spell(cat_form)
- # MODIFICATION: Precombat Savage Roar
- # REASON: To refresh SR between pulls
- #savage_roar
- if BuffRefreshable(savage_roar_buff) Spell(savage_roar)
- }
- AddFunction FeralPrecombatShortCdActions
- {
- # MODIFICATION: FeralPrecombatRegrowthConditions()
- # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
- unless FeralPrecombatRegrowthConditions() and Spell(regrowth)
- {
- #prowl
- Spell(prowl)
- }
- }
- AddFunction FeralPrecombatCdActions
- {
- # MODIFICATION: FeralPrecombatRegrowthConditions()
- # REASON: Only suggest Regrowth out of stealth and if there's less than 20 seconds remaining
- unless FeralPrecombatRegrowthConditions() and Spell(regrowth)
- {
- #snapshot_stats
- #potion
- if CheckBoxOn(opt_use_consumables) and target.Classification(worldboss) Item(prolonged_power_potion usable=1 text=Prepot)
- }
- }
- ###############################################################################################
- ### Feral icons.
- ###############################################################################################
- AddCheckBox(opt_druid_feral_aoe L(AOE) default specialization=feral)
- AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=shortcd specialization=feral
- {
- unless InCombat()
- FeralPrecombatShortCdActions()
- FeralDefaultShortCdActions()
- }
- AddIcon checkbox=opt_druid_feral_aoe help=shortcd specialization=feral
- {
- unless InCombat()
- FeralPrecombatShortCdActions()
- FeralDefaultShortCdActions()
- }
- AddIcon enemies=1 help=main specialization=feral
- {
- unless InCombat()
- FeralPrecombatMainActions()
- FeralDefaultMainActions()
- }
- AddIcon checkbox=opt_druid_feral_aoe help=aoe specialization=feral
- {
- unless InCombat()
- FeralPrecombatMainActions()
- FeralDefaultMainActions()
- }
- AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=cd specialization=feral
- {
- unless InCombat()
- FeralPrecombatCdActions()
- FeralDefaultCdActions()
- }
- AddIcon checkbox=opt_druid_feral_aoe help=cd specialization=feral
- {
- unless InCombat()
- FeralPrecombatCdActions()
- FeralDefaultCdActions()
- }
- ### Required symbols
- # dash
- # cat_form_buff
- # cat_form
- # rake
- # prowl_buff
- # shadowmeld_buff
- # incarnation_king_of_the_jungle_buff
- # bloodtalons_talent
- # ferocious_bite
- # rip_debuff
- # predatory_swiftness_buff
- # bloodtalons_buff
- # apex_predator_buff
- # regrowth
- # rake_debuff
- # prowl
- # jungle_stalker_buff
- # incarnation_king_of_the_jungle
- # berserk_cat
- # tigers_fury
- # berserking
- # prolonged_power_potion
- # berserk_cat_buff
- # feral_frenzy
- # shadowmeld
- # tigers_fury_buff
- # incarnation_talent
- # savage_roar
- # savage_roar_buff
- # rip
- # brutal_slash
- # thrash_cat
- # thrash_cat_debuff
- # brutal_slash_talent
- # moonfire_cat
- # moonfire_cat_debuff
- # luffa_wrappings
- # swipe_cat
- # shred
- # clearcasting_buff
- # lunar_inspiration_talent
- # sabertooth_talent
- # wild_charge
- # wild_charge_bear
- # wild_charge_cat
- # skull_bash
- # mighty_bash
- # maim
- # war_stomp
- # typhoon
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement