Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - ### ShmooDude Feral and Guardian script
 - ###
 - ### Options:
 - # Interrupt - Suggests use of interuptting abilities, including stuns/knockbacks on non-boss targets.
 - #
 - # Not in Melee Range - Suggests movement abilities if available or a forward arrow if you're out of range.
 - #
 - # Ashamane's Frenzy as main action - Puts the Ashamane's Frenzy suggestion in the main action box.
 - # Requires TimeToDie of 20 seconds or more
 - # If this is off, Ovale will not suggest Healing Touch at 2 Combo Points.
 - # Shadowmeld as main action - Puts the Shadowmeld suggestion in the main action box.
 - # Requires TimeToDie of 15 seconds or more
 - # Suggested off except on (raid) bosses.
 - # Elune's Guidance finisher prediction - Places the correct finisher in the main action box when EG is usable.
 - # This will block the rest of the action list till you use EG so don't use if you're going to save EG.
 - # 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.
 - # Only suggest Brutal Slash when Tiger's Fury is up
 - # Good for Mythic+ to get the most damage out of your charges.
 - # The setting below will ignore SR/TF constraints and suggest BS at 3 charges regardless.
 - # Always use BS at 3 charges - Will suggest Brutal Slash if you are about to reach max charges.
 - # Advantage: Helps not waste charges.
 - # Disadvantage: Will probably not have 3 charges when AoE for the encounter shows up.
 - # Min targets to suggest Brutal Slash - Minimum number of targets to suggest using Brutal Slash.
 - # This will use all available Brutal Slash charges.
 - # Following setting will affect when these are used.
 - # Rip/Rake/Moonfire/Savage Roar at x seconds - Refresh dots/buffs within a given window
 - # Refreshing earlier allows for more flexability and probably uptimes, Refreshing closer to pandemic could increase dps slightly
 - # Ashamane's only when TF is up - Only suggest Ashamane's when Tiger's Fury is active
 - # Maybe not a dps increase
 - # Suggest Trinket use on Cooldown - instead of syncing with damage buffs
 - # Good for trinkets that don't get buffed (Kil'jaeden's for instance)
 - # Suggest Maul instead of Ironfur
 - # Bad for mitigation, good for dps
 - # Suggest Shred at 5 cp with Berserk - While zerk/incarnation is active, spam shred, only stopping to refresh rake or rip (with BT), nothing else
 - # Something to try @Nanaki - http://www.fluiddruid.net/forum/viewtopic.php?f=3&t=5709&sid=ba81b3ad75462b66a14c8486c19d7123&start=375#p36492
 - Include(ovale_common)
 - Include(ovale_trinkets_mop)
 - Include(ovale_trinkets_wod)
 - Include(ovale_druid_spells)
 - SpellAddTargetDebuff(ferocious_bite rip_debuff=refresh_keep_snapshot)
 - SpellInfo(incarnation_king_of_the_jungle unusable=1 talent=!incarnation_talent)
 - AddCheckBox(opt_thrash_on_st "Suggest Thrash if using 4pc/Luffa/Ooc proc" specialization=feral)
 - AddCheckBox(opt_shred_spam "Suggest Shred at 5 cp with Berserk" specialization=feral)
 - AddCheckBox(opt_trinket_on_cd "Suggest trinket use on cooldown" specialization=feral)
 - AddCheckBox(opt_tf_for_ashamanes "Ashamane's only when TF is up" specialization=feral)
 - AddCheckBox(opt_interrupt L(interrupt) default specialization=feral)
 - AddCheckBox(opt_melee_range L(not_in_melee_range) specialization=feral)
 - AddCheckBox(opt_ashamanes_frenzy_main_action "Ashamane's Frenzy as a main action" default specialization=feral)
 - AddCheckBox(opt_shadowmeld_main_action "Shadowmeld as a main action" specialization=feral)
 - # AddCheckBox(opt_elunes_guidance_predict "Elune's Guidance finisher prediction" default specialization=feral)
 - AddCheckBox(opt_tigers_fury_multiplier_predict "Tiger's Fury multiplier prediction" default specialization=feral)
 - AddCheckBox(opt_brutal_slash_use_at_three_always "Always use BS at 3 charges" specialization=feral)
 - AddCheckBox(opt_burtal_slash_use_with_tigers_fury "Only suggest BS when TF is up" specialization=feral)
 - AddListItem(opt_desired_targets dt_2 "Brutal Slash at 2 targets" specialization=feral)
 - AddListItem(opt_desired_targets dt_3 "Brutal Slash at 3 targets" specialization=feral default)
 - AddListItem(opt_desired_targets dt_4 "Brutal Slash at 4 targets" specialization=feral)
 - AddListItem(opt_desired_targets dt_5 "Brutal Slash at 5 targets" specialization=feral)
 - AddListItem(opt_desired_targets dt_6 "Brutal Slash at 6 targets" specialization=feral)
 - AddListItem(opt_desired_targets dt_7 "Brutal Slash at 7 targets" specialization=feral)
 - AddListItem(opt_desired_targets dt_8 "Brutal Slash at 8 targets" specialization=feral)
 - AddListItem(opt_desired_targets dt_9 "Brutal Slash at 9 targets" specialization=feral)
 - AddListItem(opt_rip_timer ript_1 "Rip at pandemic" specialization=feral)
 - AddListItem(opt_rip_timer ript_5 "Rip at 5 seconds" specialization=feral)
 - AddListItem(opt_rip_timer ript_6 "Rip at 6 seconds" specialization=feral)
 - AddListItem(opt_rip_timer ript_7 "Rip at 7 seconds" specialization=feral)
 - AddListItem(opt_rip_timer ript_8 "Rip at 8 seconds" specialization=feral)
 - AddListItem(opt_rip_timer ript_9 "Rip at 9 seconds (default)" specialization=feral default)
 - AddListItem(opt_rake_timer raket_0 "Rake at defaults" specialization=feral default)
 - AddListItem(opt_rake_timer raket_1 "Rake at pandemic" specialization=feral)
 - AddListItem(opt_rake_timer raket_3 "Rake at 3 seconds" specialization=feral)
 - AddListItem(opt_rake_timer raket_4 "Rake at 4 seconds" specialization=feral)
 - AddListItem(opt_rake_timer raket_5 "Rake at 5 seconds" specialization=feral)
 - AddListItem(opt_rake_timer raket_6 "Rake at 6 seconds" specialization=feral)
 - AddListItem(opt_rake_timer raket_7 "Rake at 7 seconds" specialization=feral)
 - AddListItem(opt_rake_timer raket_8 "Rake at 8 seconds" specialization=feral)
 - AddListItem(opt_rake_timer raket_9 "Rake at 9 seconds" specialization=feral)
 - AddListItem(opt_savage_roar_timer srt_1 "Savage Roar at pandemic" specialization=feral)
 - AddListItem(opt_savage_roar_timer srt_8 "Savage Roar at 8 seconds" specialization=feral)
 - AddListItem(opt_savage_roar_timer srt_9 "Savage Roar at 9 seconds" specialization=feral)
 - AddListItem(opt_savage_roar_timer srt_10 "Savage Roar at 10 seconds" specialization=feral)
 - AddListItem(opt_savage_roar_timer srt_11 "Savage Roar at 11 seconds" specialization=feral)
 - AddListItem(opt_savage_roar_timer srt_12 "Savage Roar at 12 seconds" specialization=feral)
 - AddListItem(opt_savage_roar_timer srt_13 "Savage Roar at 13 seconds (default)" specialization=feral default)
 - AddListItem(opt_moonfire_timer mt_1 "Moonfire at pandemic" specialization=feral)
 - AddListItem(opt_moonfire_timer mt_5 "Moonfire at 5 seconds" specialization=feral)
 - AddListItem(opt_moonfire_timer mt_6 "Moonfire at 6 seconds" specialization=feral)
 - AddListItem(opt_moonfire_timer mt_7 "Moonfire at 7 seconds" specialization=feral)
 - AddListItem(opt_moonfire_timer mt_8 "Moonfire at 8 seconds" specialization=feral)
 - AddListItem(opt_moonfire_timer mt_9 "Moonfire at 9 seconds" specialization=feral default)
 - AddFunction RipTimer asvalue=1
 - {
 - if List(opt_rip_timer ript_1) BaseDuration(rip_debuff) * 0.3
 - if List(opt_rip_timer ript_5) 5
 - if List(opt_rip_timer ript_6) 6
 - if List(opt_rip_timer ript_7) 7
 - if List(opt_rip_timer ript_8) 8
 - if List(opt_rip_timer ript_9) 9
 - }
 - AddFunction SotfRakeTimer asvalue=1
 - {
 - if List(opt_rake_timer raket_0) 5
 - if List(opt_rake_timer raket_1) BaseDuration(rake_debuff) * 0.3
 - if List(opt_rake_timer raket_3) 3
 - if List(opt_rake_timer raket_4) 4
 - if List(opt_rake_timer raket_5) 5
 - if List(opt_rake_timer raket_6) 6
 - if List(opt_rake_timer raket_7) 7
 - if List(opt_rake_timer raket_8) 8
 - if List(opt_rake_timer raket_9) 9
 - }
 - AddFunction RakeTimer asvalue=1
 - {
 - if List(opt_rake_timer raket_0) 9
 - if List(opt_rake_timer raket_1) BaseDuration(rake_debuff) * 0.3
 - if List(opt_rake_timer raket_3) 3
 - if List(opt_rake_timer raket_4) 4
 - if List(opt_rake_timer raket_5) 5
 - if List(opt_rake_timer raket_6) 6
 - if List(opt_rake_timer raket_7) 7
 - if List(opt_rake_timer raket_8) 8
 - if List(opt_rake_timer raket_9) 9
 - }
 - AddFunction SavageRoarTimer asvalue=1
 - {
 - if List(opt_savage_roar_timer srt_1) 7.2
 - if List(opt_savage_roar_timer srt_8) 8
 - if List(opt_savage_roar_timer srt_9) 9
 - if List(opt_savage_roar_timer srt_10) 10
 - if List(opt_savage_roar_timer srt_11) 11
 - if List(opt_savage_roar_timer srt_12) 12
 - if List(opt_savage_roar_timer srt_13) 13
 - }
 - AddFunction MoonfireTimer asvalue=1
 - {
 - if List(opt_moonfire_timer mt_1) 4.2
 - if List(opt_moonfire_timer mt_5) 5
 - if List(opt_moonfire_timer mt_6) 6
 - if List(opt_moonfire_timer mt_7) 7
 - if List(opt_moonfire_timer mt_8) 8
 - if List(opt_moonfire_timer mt_9) 9
 - }
 - AddFunction BrutalSlashDesiredTargets asvalue=1
 - {
 - if List(opt_desired_targets dt_2) 2
 - if List(opt_desired_targets dt_3) 3
 - if List(opt_desired_targets dt_4) 4
 - if List(opt_desired_targets dt_5) 5
 - if List(opt_desired_targets dt_6) 6
 - if List(opt_desired_targets dt_7) 7
 - if List(opt_desired_targets dt_8) 8
 - if List(opt_desired_targets dt_9) 9
 - }
 - AddFunction TFMultPred asvalue=1
 - {
 - if CheckBoxOn(opt_tigers_fury_multiplier_predict)
 - and SpellCooldown(tigers_fury) < GCDRemaining()
 - and BuffExpires(tigers_fury_buff)
 - and { BuffExpires(clearcasting_buff) and EnergyDeficit() >= 60
 - or EnergyDeficit() >= 80
 - or HasTrinket(t18_class_trinket) and BuffPresent(berserk_cat_buff) } 1.15
 - 1
 - }
 - AddFunction FeralUseItemActions
 - {
 - Item(Trinket0Slot usable=1)
 - Item(Trinket1Slot usable=1)
 - }
 - AddFunction FeralGetInMeleeRange
 - {
 - if CheckBoxOn(opt_melee_range) and target.InRange(shred no)
 - {
 - #wild_charge
 - if target.InRange(wild_charge) Spell(wild_charge)
 - #displacer_beast,if=movement.distance>25
 - if target.distance() > 25 Spell(displacer_beast)
 - #dash,if=movement.distance>25&buff.displacer_beast.down&buff.wild_charge_movement.down
 - if target.distance() > 25 and BuffExpires(displacer_beast_buff) Spell(dash)
 - Texture(misc_arrowlup help=L(not_in_melee_range))
 - }
 - }
 - AddFunction FeralInterruptActions
 - {
 - if CheckBoxOn(opt_interrupt) and not target.IsFriend() and target.IsInterruptible()
 - {
 - if target.InRange(skull_bash) Spell(skull_bash)
 - if not target.Classification(worldboss)
 - {
 - if target.InRange(mighty_bash) Spell(mighty_bash)
 - Spell(typhoon)
 - if target.InRange(maim) Spell(maim)
 - Spell(war_stomp)
 - }
 - }
 - }
 - # Assumes Open Wounds trait
 - AddFunction DamageAfterArmor asvalue=1
 - {
 - if target.DebuffPresent(rip_debuff) 0.7282
 - 0.6802
 - }
 - # Capped at 5 minutes
 - AddFunction CappedTargetTimeToDie asvalue=1
 - {
 - if target.TimeToDie() > 300 300
 - target.TimeToDie()
 - }
 - # Damage in thousands
 - AddFunction CurrentRipDamageTillDeath asvalue=1
 - {
 - if target.DebuffPresent(rip_debuff) and target.TimeToDie() < 7200 target.DebuffPersistentMultiplier(rip_debuff) * { 1 + MeleeCritChance() } * { 1 + MasteryEffect() * 0.01 } * AttackPower() * 0.0008 * CappedTargetTimeToDie() / TickTime(rip_debuff)
 - 0
 - }
 - # Damage in thousands
 - AddFunction NewRipDamageTillDeath asvalue=1
 - {
 - PersistentMultiplier(rip_debuff) * { 1 + MeleeCritChance() * 0.01 } * { 1 + MasteryEffect() * 0.01} * AttackPower() * 0.0008 * 5.32 / TickTime(rip_debuff)
 - }
 - # Damage in thousands
 - AddFunction FerociousBiteDamage asvalue=1
 - {
 - PersistentMultiplier(ferocious_bite) * { 1 + MeleeCritChance() * 0.013 } * AttackPower() * 0.00749 * DamageAfterArmor()
 - }
 - AddFunction TigersFuryConditions
 - {
 - { BuffExpires(clearcasting_buff) and EnergyDeficit() >= 60 or EnergyDeficit() >= 80 or HasTrinket(t18_class_trinket) and BuffPresent(berserk_cat_buff) and BuffExpires(tigers_fury_buff) } and Spell(tigers_fury)
 - }
 - AddFunction ElunesGuidancePrediction
 - {
 - if Talent(elunes_guidance_talent) and SpellCooldown(elunes_guidance less 1) and ComboPoints(equal 0) and Energy() >= EnergyCost(ferocious_bite) + 25
 - {
 - #regrowth
 - if Talent(bloodtalons_talent) and BuffPresent(predatory_swiftness_buff) Spell(regrowth)
 - #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)
 - 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)
 - #savage_roar,if=buff.savage_roar.remains<gcd
 - if BuffRemaining(savage_roar_buff less 1) Texture(ability_druid_skinteeth)
 - #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
 - 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)
 - #savage_roar,if=buff.savage_roar.remains<=7.2
 - if BuffRemaining(savage_roar_buff atMost 7.2) Texture(ability_druid_skinteeth)
 - #ferocious_bite,max_energy=1,cycle_targets=1
 - if Energy() >= EnergyCost(ferocious_bite) + 25 Texture(ability_druid_ferociousbite)
 - }
 - }
 - ### actions.default
 - AddFunction FeralDefaultMainActions
 - {
 - #variable,name=finisher_conditions,value=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))
 - #cat_form
 - Spell(cat_form)
 - #rake,if=buff.prowl.up|buff.shadowmeld.up
 - if BuffPresent(prowl_buff)
 - or BuffPresent(shadowmeld_buff) Spell(rake)
 - #call_action_list,name=zerker
 - FeralBerserkActions()
 - #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)
 - if target.DebuffPresent(rip_debuff)
 - and target.DebuffRemaining(rip_debuff) < 3
 - and target.TimeToDie() > 3
 - and { target.HealthPercent() < 25 or Talent(sabertooth_talent) } Spell(ferocious_bite)
 - #regrowth,if=talent.bloodtalons.enabled&buff.predatory_swiftness.up&(combo_points>=5|buff.predatory_swiftness.remains<1.5|(talent.bloodtalons.enabled&combo_points=2&buff.bloodtalons.down&cooldown.ashamanes_frenzy.remains<gcd&(buff.savage_roar.remains>gcd|!talent.savage_roar.enabled))|(talent.elunes_guidance.enabled&((cooldown.elunes_guidance.remains<gcd&combo_points=0)|(buff.elunes_guidance.up&combo_points>=4))))
 - if Talent(bloodtalons_talent)
 - and BuffPresent(predatory_swiftness_buff)
 - and BuffStacks(bloodtalons_buff) < 2
 - and { ComboPoints() >= 5 and { BuffExpires(bloodtalons_buff) or not HasEquippedItem(ailuro_pouncers slot=FeetSlot) }
 - or BuffRemaining(predatory_swiftness_buff) < 1.5
 - or Talent(bloodtalons_talent) and ComboPoints() == 2 and BuffExpires(bloodtalons_buff) and SpellCooldown(ashamanes_frenzy) < GCD() and { BuffRemaining(savage_roar_buff) > GCD() or not Talent(savage_roar_talent) } and target.TimeToDie(more 21) and CheckBoxOn(opt_ashamanes_frenzy_main_action)
 - or Talent(elunes_guidance_talent) and { SpellCooldown(elunes_guidance) < GCD() and ComboPoints() == 0 or BuffPresent(elunes_guidance_buff) and ComboPoints() >= 4 } } Spell(regrowth)
 - #regrowth,if=equipped.ailuro_pouncers&talent.bloodtalons.enabled&buff.predatory_swiftness.stack>1&buff.bloodtalons.down
 - if HasEquippedItem(ailuro_pouncers slot=FeetSlot)
 - and Talent(bloodtalons_talent)
 - and BuffStacks(predatory_swiftness_buff) > 1 and BuffExpires(bloodtalons_buff) Spell(regrowth)
 - #call_action_list,name=finisher
 - FeralFinisherMainActions()
 - #call_action_list,name=generator
 - FeralGeneratorMainActions()
 - }
 - AddFunction finisher_conditions
 - {
 - ComboPoints() == 5
 - and { TimeToMaxEnergy() < 1
 - or BuffPresent(berserk_cat_buff)
 - or BuffPresent(incarnation_king_of_the_jungle_buff)
 - or BuffPresent(elunes_guidance_buff)
 - or SpellCooldown(tigers_fury) < 3
 - or ArmorSetBonus(T18 4)
 - or BuffPresent(clearcasting_buff)
 - or Talent(soul_of_the_forest_talent)
 - or not target.DebuffPresent(rip_debuff)
 - or target.DebuffRemaining(rake_debuff) < 1.5 and Enemies() < 6 }
 - }
 - ### actions.zerker
 - AddFunction FeralBerserkActions
 - {
 - # If berserk or incarnation and the checkbox for shred spam is active: refresh rip and rake inside pandemic, spam shred despite combo points, try to get them BT buffed.
 - if { BuffPresent(berserk_cat_buff) or BuffPresent(incarnation_king_of_the_jungle_buff) } and CheckBoxOn(opt_shred_spam)
 - {
 - # Regrowth before Biting
 - if target.DebuffPresent(rip_debuff)
 - and target.DebuffRemaining(rip_debuff) < 3
 - and target.TimeToDie() > 3
 - and { target.HealthPercent() < 25 or Talent(sabertooth_talent) }
 - and { Talent(bloodtalons_talent)
 - and BuffPresent(predatory_swiftness_buff)
 - and BuffStacks(bloodtalons_buff) < 1 } Spell(regrowth)
 - #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)
 - if target.DebuffPresent(rip_debuff)
 - and target.DebuffRemaining(rip_debuff) < 3
 - and target.TimeToDie() > 3
 - and { target.HealthPercent() < 25 or Talent(sabertooth_talent) } Spell(ferocious_bite)
 - #savage_roar,if=(buff.savage_roar.remains<=7.2|(buff.savage_roar.remains<SavageRoarTimer&talent.jagged_wounds.enabled&target.health.pct>=25))&variable.finisher_conditions
 - if { BuffRemaining(savage_roar_buff) <= 7.2
 - or BuffRemaining(savage_roar_buff) < SavageRoarTimer() and Talent(jagged_wounds_talent) and target.HealthPercent() >= 25 }
 - and finisher_conditions() Spell(savage_roar)
 - # Regrowth one second before ripping
 - if { not target.DebuffPresent(rip_debuff)
 - or target.DebuffRemaining(rip_debuff) < RipTimer() + 1 and target.HealthPercent() > 25 and not Talent(sabertooth_talent)
 - or TFMultPred() * PersistentMultiplier(rip_debuff) > target.DebuffPersistentMultiplier(rip_debuff) }
 - and target.TimeToDie() - target.DebuffRemaining(rip_debuff) > target.TickTime(rip_debuff) * 4
 - and finisher_conditions()
 - and { Talent(bloodtalons_talent)
 - and BuffPresent(predatory_swiftness_buff)
 - and BuffStacks(bloodtalons_buff) < 1 } Spell(regrowth)
 - #rip,cycle_targets=1,if=(!ticking|(remains<RipTimer()&target.health.pct>25&!talent.sabertooth.enabled)|persistent_multiplier>dot.rip.pmultiplier)&target.time_to_die-remains>tick_time*4&variable.finisher_conditions
 - if { not target.DebuffPresent(rip_debuff)
 - or target.DebuffRemaining(rip_debuff) < RipTimer() and target.HealthPercent() > 25 and not Talent(sabertooth_talent)
 - or TFMultPred() * PersistentMultiplier(rip_debuff) > target.DebuffPersistentMultiplier(rip_debuff) }
 - and target.TimeToDie() - target.DebuffRemaining(rip_debuff) > target.TickTime(rip_debuff) * 4
 - and finisher_conditions() Spell(rip)
 - # Regrowth, one second before raking
 - if { not target.DebuffPresent(rake_debuff)
 - or target.DebuffRemaining(rake_debuff) < BaseDuration(rake_debuff) * 0.3 + 1 }
 - and target.TimeToDie() - target.DebuffRemaining(rake_debuff) > target.TickTime(rake_debuff)
 - and { Talent(bloodtalons_talent)
 - and BuffPresent(predatory_swiftness_buff)
 - and BuffStacks(bloodtalons_buff) < 1 } Spell(regrowth)
 - #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<=RakeTimer()|remains<=SotfRakeTimer())&persistent_multiplier>dot.rake.pmultiplier*0.80))&target.time_to_die-remains>tick_time
 - if { not target.DebuffPresent(rake_debuff)
 - or target.DebuffRemaining(rake_debuff) < BaseDuration(rake_debuff) * 0.3
 - 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)
 - Spell(shred)
 - }
 - }
 - ### actions.finisher
 - AddFunction FeralFinisherMainActions
 - {
 - #pool_resource,for_next=1
 - #savage_roar,if=!buff.savage_roar.up&(combo_points=5|time<8|(talent.brutal_slash.enabled&spell_targets.brutal_slash>desired_targets&action.brutal_slash.charges>0))
 - if not BuffPresent(savage_roar_buff)
 - and { ComboPoints() == 5
 - or TimeInCombat() < 8
 - or Enemies() >= 8 and BuffRemaining(savage_roar_buff) < 7.2
 - or Talent(brutal_slash_talent)
 - and Enemies() >= BrutalSlashDesiredTargets()
 - and Charges(brutal_slash) > 0
 - and { BuffPresent(tigers_fury_buff) or CheckBoxOff(opt_burtal_slash_use_with_tigers_fury) } } Spell(savage_roar pool_resource=1)
 - #pool_resource,for_next=1
 - #thrash_cat,cycle_targets=1,if=remains<=duration*0.3&spell_targets.thrash_cat>=5
 - if target.DebuffRemaining(thrash_cat_debuff) <= BaseDuration(thrash_cat_debuff) * 0.3 and Enemies() >= 5 Spell(thrash_cat pool_resource=1)
 - #pool_resource,for_next=1
 - #swipe_cat,if=spell_targets.swipe_cat>=8
 - if Enemies() >= 8 Spell(swipe_cat pool_resource=1)
 - #rip,cycle_targets=1,if=(!ticking|(remains<RipTimer()&target.health.pct>25&!talent.sabertooth.enabled)|persistent_multiplier>dot.rip.pmultiplier)&target.time_to_die-remains>tick_time*4&variable.finisher_conditions
 - if { not target.DebuffPresent(rip_debuff)
 - or target.DebuffRemaining(rip_debuff) < RipTimer() and target.HealthPercent() > 25 and not Talent(sabertooth_talent)
 - or TFMultPred() * PersistentMultiplier(rip_debuff) > target.DebuffPersistentMultiplier(rip_debuff) }
 - and target.TimeToDie() - target.DebuffRemaining(rip_debuff) > target.TickTime(rip_debuff) * 4
 - and finisher_conditions() Spell(rip)
 - #savage_roar,if=(buff.savage_roar.remains<=7.2|(buff.savage_roar.remains<SavageRoarTimer&talent.jagged_wounds.enabled&target.health.pct>=25))&variable.finisher_conditions
 - if { BuffRemaining(savage_roar_buff) <= 7.2
 - or BuffRemaining(savage_roar_buff) < SavageRoarTimer() and Talent(jagged_wounds_talent) and target.HealthPercent() >= 25 }
 - and finisher_conditions() Spell(savage_roar)
 - #swipe_cat,if=combo_points=5&(spell_targets.swipe_cat>=6|(spell_targets.swipe_cat>=3&!talent.bloodtalons.enabled))&variable.finisher_conditions
 - if ComboPoints() == 5
 - and { Enemies() >= 6
 - or Enemies() >= 3 and not Talent(bloodtalons_talent) }
 - and finisher_conditions() Spell(swipe_cat)
 - #ferocious_bite,max_energy=1,cycle_targets=1,if=variable.finisher_conditions
 - if finisher_conditions() Spell(ferocious_bite extra_amount=25)
 - }
 - ### actions.generator
 - AddFunction FeralGeneratorMainActions
 - {
 - #brutal_slash,if=spell_targets.brutal_slash>desired_targets&combo_points<5
 - if { Charges(brutal_slash) == 3 and CheckBoxOn(opt_brutal_slash_use_at_three_always) } Spell(brutal_slash)
 - if Enemies() >= BrutalSlashDesiredTargets()
 - and ComboPoints() < 5
 - and { BuffPresent(tigers_fury_buff) or CheckBoxOff(opt_burtal_slash_use_with_tigers_fury) } Spell(brutal_slash)
 - #ashamanes_frenzy,if=combo_points<=2&buff.elunes_guidance.down&(buff.bloodtalons.up|!talent.bloodtalons.enabled)&(buff.savage_roar.up|!talent.savage_roar.enabled)
 - if CheckBoxOn(opt_ashamanes_frenzy_main_action)
 - and ComboPoints() <= 2
 - and BuffExpires(elunes_guidance_buff)
 - and { BuffPresent(tigers_fury_buff) or CheckBoxOff(opt_tf_for_ashamanes) }
 - and { BuffPresent(bloodtalons_buff) or not Talent(bloodtalons_talent) }
 - and { BuffPresent(savage_roar_buff) or not Talent(savage_roar_talent) }
 - and target.TimeToDie(more 20) Spell(ashamanes_frenzy)
 - #pool_resource,if=talent.elunes_guidance.enabled&combo_points=0&energy<action.ferocious_bite.cost+25-energy.regen*cooldown.elunes_guidance.remains
 - unless Talent(elunes_guidance_talent) and ComboPoints() == 0 and Energy() < PowerCost(ferocious_bite) + 25 - EnergyRegenRate() * SpellCooldown(elunes_guidance)
 - {
 - #pool_resource,for_next=1
 - #thrash_cat,if=talent.brutal_slash.enabled&spell_targets.thrash_cat>=9
 - if Talent(brutal_slash_talent) and Enemies() >= 9 Spell(thrash_cat pool_resource=1)
 - #pool_resource,for_next=1
 - #swipe_cat,if=spell_targets.swipe_cat>=6
 - if Enemies() >= 6 Spell(swipe_cat pool_resource=1)
 - #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
 - if CheckBoxOn(opt_shadowmeld_main_action)
 - and ComboPoints() < 5
 - and Energy() >= PowerCost(rake)
 - and target.DebuffPersistentMultiplier(rake_debuff) < 2.1
 - and BuffPresent(tigers_fury_buff)
 - and { BuffPresent(bloodtalons_buff) or not Talent(bloodtalons_talent) }
 - and { not Talent(incarnation_talent) or SpellCooldown(incarnation_king_of_the_jungle) > 18 }
 - and not BuffPresent(incarnation_king_of_the_jungle_buff)
 - and target.TimeToDie() > BaseDuration(rake_debuff) + 5
 - and target.InRange(rake) Spell(shadowmeld)
 - #pool_resource,for_next=1
 - #thrash_cat,cycle_targets=1,if=remains<=duration*0.3&ComboPoints()<5&spell_targets.swipe_cat>=3|(hasT194Pc&Luffas&OocProc)
 - if target.DebuffRemaining(thrash_cat_debuff) <= BaseDuration(thrash_cat_debuff) * 0.3 and ComboPoints() < 5
 - and Enemies() >= 3 Spell(thrash_cat pool_resource=1)
 - #pool_resource,for_next=1
 - #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<=RakeTimer()|remains<=SotfRakeTimer())&persistent_multiplier>dot.rake.pmultiplier*0.80))&target.time_to_die-remains>tick_time
 - if ComboPoints() < 5
 - and { not target.DebuffPresent(rake_debuff)
 - or not Talent(bloodtalons_talent) and target.DebuffRemaining(rake_debuff) < BaseDuration(rake_debuff) * 0.3
 - or Talent(bloodtalons_talent) and BuffPresent(bloodtalons_buff) and { not Talent(soul_of_the_forest_talent) and target.DebuffRemaining(rake_debuff) <= RakeTimer()
 - or target.DebuffRemaining(rake_debuff) <= SotfRakeTimer() }
 - 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)
 - #moonfire_cat,cycle_targets=1,if=combo_points<5&(remains<=4.2|(combo_points>2&remains<=MoonfireTimer))&target.time_to_die-remains>tick_time*2
 - if ComboPoints() < 5 and { target.DebuffRemaining(moonfire_cat_debuff) <= 4.2 or ComboPoints() > 2 and target.DebuffRemaining(moonfire_cat_debuff) <= MoonfireTimer() } and target.TimeToDie() - target.DebuffRemaining(moonfire_cat_debuff) > target.TickTime(moonfire_cat_debuff) * 2 Spell(moonfire_cat)
 - #pool_resource,for_next=1
 - #thrash_cat,cycle_targets=1,if=remains<=duration*0.3&spell_targets.swipe_cat>=2
 - if target.DebuffRemaining(thrash_cat_debuff) <= BaseDuration(thrash_cat_debuff) * 0.3 and ComboPoints() < 5
 - and { Enemies() >= 2
 - or { CheckBoxOn(opt_thrash_on_st) and ArmorSetBonus(T19 4) and HasEquippedItem(luffa_wrappings slot=WristSlot) and BuffPresent(clearcasting_buff) } } Spell(thrash_cat pool_resource=1)
 - #brutal_slash,if=combo_points<5&((raid_event.adds.exists&raid_event.adds.in>(1+max_charges-charges_fractional)*15)|(!raid_event.adds.exists&buff.tigers_fury.up))
 - # if ComboPoints() < 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 BuffPresent(tigers_fury_buff) } Spell(brutal_slash)
 - #swipe_cat,if=combo_points<5&spell_targets.swipe_cat>=3
 - if ComboPoints() < 5
 - and Enemies() >= 3 Spell(swipe_cat)
 - #shred,if=combo_points<5&(spell_targets.swipe_cat<3|talent.brutal_slash.enabled)&(energy.time_to_max<1|(dot.rake.remains>(action.shred.cost+action.rake.cost-energy)%energy.regen)|buff.clearcasting.react|buff.berserk.up|buff.incarnation.up|cooldown.tigers_fury.remains<3|talent.soul_of_the_forest.enabled)
 - if ComboPoints() < 5
 - and { Enemies() < 3 or Talent(brutal_slash_talent) }
 - and { TimeToMaxEnergy() < 1
 - or target.DebuffRemaining(rake_debuff) > { PowerCost(shred) + PowerCost(rake) - Energy() } / EnergyRegenRate() or BuffPresent(clearcasting_buff) or BuffPresent(berserk_cat_buff) or BuffPresent(incarnation_king_of_the_jungle_buff) or SpellCooldown(tigers_fury) < 3 or Talent(soul_of_the_forest_talent) } Spell(shred)
 - }
 - }
 - ### actions.precombat
 - AddFunction FeralPrecombatMainActions
 - {
 - #flask,type=flask_of_the_seventh_demon
 - #food,type=the_hungry_magister
 - #regrowth,if=talent.bloodtalons.enabled
 - if Talent(bloodtalons_talent) and BuffRemaining(bloodtalons_buff) < 15 and BuffExpires(prowl_buff) Spell(regrowth)
 - #prowl
 - Spell(prowl)
 - #cat_form
 - Spell(cat_form)
 - #savage_roar
 - if BuffRemaining(savage_roar_buff) < 4 + 2 * ComboPoints() Spell(savage_roar)
 - 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)
 - }
 - AddFunction FeralPrecombatMainPostConditions
 - {
 - }
 - AddFunction FeralDefaultShortCdActions
 - {
 - #wild_charge
 - #auto_attack
 - FeralGetInMeleeRange()
 - #potion,name=old_war,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
 - #tigers_fury,if=(!buff.clearcasting.react&energy.deficit>=60)|energy.deficit>=80|(t18_class_trinket&buff.berserk.up&buff.tigers_fury.down)
 - if TigersFuryConditions() Spell(tigers_fury)
 - #tigers_fury,if=talent.sabertooth.enabled&time<20&!dot.rip.ticking&combo_points=5
 - if Talent(sabertooth_talent) and TimeInCombat() < 20 and not target.DebuffPresent(rip_debuff) and ComboPoints() == 5 Spell(tigers_fury)
 - #call_action_list,name=generator
 - #ashamanes_frenzy,if=combo_points<=2&buff.elunes_guidance.down&(buff.bloodtalons.up|!talent.bloodtalons.enabled)&(buff.savage_roar.up|!talent.savage_roar.enabled)
 - if CheckBoxOff(opt_ashamanes_frenzy_main_action)
 - and ComboPoints() <= 2
 - and BuffExpires(elunes_guidance_buff)
 - and { BuffPresent(tigers_fury_buff) or CheckBoxOff(opt_tf_for_ashamanes) }
 - and { BuffPresent(bloodtalons_buff) or not Talent(bloodtalons_talent) }
 - and { BuffPresent(savage_roar_buff) or not Talent(savage_roar_talent) } Spell(ashamanes_frenzy)
 - #pool_resource,if=talent.elunes_guidance.enabled&combo_points=0&energy<action.ferocious_bite.cost+25-energy.regen*cooldown.elunes_guidance.remains
 - unless Talent(elunes_guidance_talent) and ComboPoints() == 0 and Energy() < PowerCost(ferocious_bite) + 25 - EnergyRegenRate() * SpellCooldown(elunes_guidance)
 - {
 - #elunes_guidance,if=talent.elunes_guidance.enabled&combo_points=0&energy>=action.ferocious_bite.cost+25
 - if Talent(elunes_guidance_talent) and ComboPoints() == 0 and Energy() >= PowerCost(ferocious_bite) + 25 Spell(elunes_guidance)
 - }
 - }
 - AddFunction FeralPrecombatShortCdActions
 - {
 - unless Spell(cat_form) or Spell(prowl)
 - {
 - #elunes_guidance,if=talent.savage_roar.enabled
 - if Talent(savage_roar_talent) Spell(elunes_guidance)
 - }
 - }
 - AddFunction FeralPrecombatShortCdPostConditions
 - {
 - Talent(bloodtalons_talent) and Spell(regrowth) or Spell(cat_form) or Spell(prowl) or Spell(savage_roar)
 - }
 - AddFunction FeralDefaultCdActions
 - {
 - #skull_bash
 - FeralInterruptActions()
 - #berserk,if=buff.tigers_fury.up
 - #incarnation,if=buff.tigers_fury.up
 - if TigersFuryConditions()
 - or BuffPresent(tigers_fury_buff)
 - {
 - Spell(berserk_cat)
 - Spell(incarnation_king_of_the_jungle)
 - }
 - #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
 - if BuffPresent(tigers_fury_buff)
 - and { target.TimeToDie() > BuffCooldownDuration(trinket_stat_any_buff) or target.TimeToDie() < 45 }
 - or BuffRemaining(incarnation_king_of_the_jungle_buff) > 20
 - or CheckBoxOn(opt_trinket_on_cd) FeralUseItemActions()
 - #call_action_list,name=generator
 - unless Enemies() > Enemies(tagged=1) and ComboPoints() < 5 and Spell(brutal_slash) or ComboPoints() <= 2 and BuffExpires(elunes_guidance_buff) and { BuffPresent(bloodtalons_buff) or not Talent(bloodtalons_talent) } and { BuffPresent(savage_roar_buff) or not Talent(savage_roar_talent) } and Spell(ashamanes_frenzy)
 - {
 - #pool_resource,if=talent.elunes_guidance.enabled&combo_points=0&energy<action.ferocious_bite.cost+25-energy.regen*cooldown.elunes_guidance.remains
 - unless Talent(elunes_guidance_talent) and ComboPoints() == 0 and Energy() < PowerCost(ferocious_bite) + 25 - EnergyRegenRate() * SpellCooldown(elunes_guidance)
 - {
 - unless Talent(elunes_guidance_talent) and ComboPoints() == 0 and Energy() >= PowerCost(ferocious_bite) + 25 and Spell(elunes_guidance)
 - {
 - #pool_resource,for_next=1
 - #thrash_cat,if=talent.brutal_slash.enabled&spell_targets.thrash_cat>=9
 - unless Talent(brutal_slash_talent) and Enemies() >= 9 and SpellUsable(thrash_cat) and SpellCooldown(thrash_cat) < TimeToEnergyFor(thrash_cat)
 - {
 - #pool_resource,for_next=1
 - #swipe_cat,if=spell_targets.swipe_cat>=6
 - unless Enemies() >= 6 and SpellUsable(swipe_cat) and SpellCooldown(swipe_cat) < TimeToEnergyFor(swipe_cat)
 - {
 - #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
 - if CheckBoxOff(opt_shadowmeld_main_action)
 - and ComboPoints() < 5
 - and Energy() >= PowerCost(rake)
 - and target.DebuffPersistentMultiplier(rake_debuff) < 2.1
 - and BuffPresent(tigers_fury_buff)
 - and { BuffPresent(bloodtalons_buff) or not Talent(bloodtalons_talent) }
 - and { not Talent(incarnation_talent) or SpellCooldown(incarnation_king_of_the_jungle) > 18 }
 - and not BuffPresent(incarnation_king_of_the_jungle_buff)
 - and target.InRange(rake) Spell(shadowmeld)
 - }
 - }
 - }
 - }
 - }
 - }
 - AddFunction FeralPrecombatCdActions
 - {
 - }
 - AddFunction FeralPrecombatCdPostConditions
 - {
 - Spell(augmentation) or Talent(bloodtalons_talent) and Spell(regrowth) or Spell(cat_form)
 - }
 - ### Feral icons.
 - AddCheckBox(opt_druid_feral_aoe L(AOE) default specialization=feral)
 - AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=shortcd specialization=feral
 - {
 - if not InCombat() FeralPrecombatShortCdActions()
 - unless not InCombat() and FeralPrecombatShortCdPostConditions()
 - {
 - FeralDefaultShortCdActions()
 - }
 - }
 - AddIcon checkbox=opt_druid_feral_aoe help=shortcd specialization=feral
 - {
 - if not InCombat() FeralPrecombatShortCdActions()
 - unless not InCombat() and FeralPrecombatShortCdPostConditions()
 - {
 - FeralDefaultShortCdActions()
 - }
 - }
 - AddIcon enemies=1 help=main specialization=feral
 - {
 - if not InCombat() FeralPrecombatMainActions()
 - unless not InCombat() and FeralPrecombatMainPostConditions()
 - {
 - FeralDefaultMainActions()
 - }
 - }
 - AddIcon checkbox=opt_druid_feral_aoe help=aoe specialization=feral
 - {
 - if not InCombat() FeralPrecombatMainActions()
 - unless not InCombat() and FeralPrecombatMainPostConditions()
 - {
 - FeralDefaultMainActions()
 - }
 - }
 - AddIcon checkbox=!opt_druid_feral_aoe enemies=1 help=cd specialization=feral
 - {
 - if not InCombat() FeralPrecombatCdActions()
 - unless not InCombat() and FeralPrecombatCdPostConditions()
 - {
 - FeralDefaultCdActions()
 - }
 - }
 - AddIcon checkbox=opt_druid_feral_aoe help=cd specialization=feral
 - {
 - if not InCombat() FeralPrecombatCdActions()
 - unless not InCombat() and FeralPrecombatCdPostConditions()
 - {
 - FeralDefaultCdActions()
 - }
 - }
 - ### Required symbols
 - # luffa_wrappings
 - # ailuro_pouncers
 - # ashamanes_frenzy
 - # augmentation
 - # berserk_cat
 - # berserk_cat_buff
 - # bloodtalons_buff
 - # bloodtalons_talent
 - # brutal_slash
 - # brutal_slash_talent
 - # cat_form
 - # cat_form_buff
 - # clearcasting_buff
 - # dash
 - # displacer_beast
 - # displacer_beast_buff
 - # elunes_guidance
 - # elunes_guidance_buff
 - # elunes_guidance_talent
 - # ferocious_bite
 - # regrowth
 - # incarnation_king_of_the_jungle
 - # incarnation_king_of_the_jungle_buff
 - # incarnation_talent
 - # jagged_wounds_talent
 - # maim
 - # mangle
 - # mighty_bash
 - # moonfire_cat
 - # moonfire_cat_debuff
 - # predatory_swiftness_buff
 - # prowl
 - # prowl_buff
 - # rake
 - # rake_debuff
 - # regrowth
 - # rip
 - # rip_debuff
 - # sabertooth_talent
 - # savage_roar
 - # savage_roar_buff
 - # savage_roar_talent
 - # shadowmeld
 - # shadowmeld_buff
 - # shred
 - # skull_bash
 - # soul_of_the_forest_talent
 - # swipe_cat
 - # t18_class_trinket
 - # thrash_cat
 - # thrash_cat_debuff
 - # tigers_fury
 - # tigers_fury_buff
 - # typhoon
 - # war_stomp
 - # wild_charge
 - # wild_charge_bear
 - # wild_charge_cat
 - # Based on SimulationCraft profile "Druid_Guardian_T19P".
 - # class=druid
 - # spec=guardian
 - # talents=3133323
 - AddCheckBox(opt_interrupt L(interrupt) default specialization=guardian)
 - AddCheckBox(opt_melee_range L(not_in_melee_range) specialization=guardian)
 - AddCheckBox(opt_suggest_maul "Suggest Maul instead of IronFur" specialization=guardian)
 - AddFunction GuardianUseItemActions
 - {
 - Item(Trinket0Slot usable=1)
 - Item(Trinket1Slot usable=1)
 - }
 - AddFunction GuardianGetInMeleeRange
 - {
 - 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)
 - {
 - if target.InRange(wild_charge) Spell(wild_charge)
 - Texture(misc_arrowlup help=L(not_in_melee_range))
 - }
 - }
 - AddFunction GuardianInterruptActions
 - {
 - if CheckBoxOn(opt_interrupt) and not target.IsFriend() and target.IsInterruptible()
 - {
 - if target.InRange(skull_bash) Spell(skull_bash)
 - if not target.Classification(worldboss)
 - {
 - if target.InRange(mighty_bash) Spell(mighty_bash)
 - Spell(typhoon)
 - if target.InRange(maim) Spell(maim)
 - Spell(war_stomp)
 - }
 - }
 - }
 - ### actions.default
 - AddFunction GuardianDefaultMainActions
 - {
 - #pulverize,cycle_targets=1,if=buff.pulverize.down
 - if BuffExpires(pulverize_buff) and target.DebuffGain(thrash_bear_debuff) <= BaseDuration(thrash_bear_debuff) Spell(pulverize)
 - #thrash_bear,if=dot.thrash_bear.remains<4.5
 - if target.DebuffRemaining(thrash_bear_debuff) < 4.5 Spell(thrash_bear)
 - #mangle
 - Spell(mangle)
 - #pulverize,cycle_targets=1,if=buff.pulverize.remains<gcd
 - if BuffRemaining(pulverize_buff) < GCD() and target.DebuffGain(thrash_bear_debuff) <= BaseDuration(thrash_bear_debuff) Spell(pulverize)
 - #thrash_bear
 - Spell(thrash_bear)
 - #pulverize,cycle_targets=1,if=buff.pulverize.remains<3.6
 - if BuffRemaining(pulverize_buff) < 3.6 and target.DebuffGain(thrash_bear_debuff) <= BaseDuration(thrash_bear_debuff) Spell(pulverize)
 - #moonfire,if=!ticking|buff.galactic_guardian.up
 - if not target.DebuffPresent(moonfire_debuff) or BuffPresent(galactic_guardian_buff) Spell(moonfire)
 - #swipe_bear
 - Spell(swipe_bear)
 - }
 - AddFunction GuardianDefaultShortCdActions
 - {
 - #auto_attack
 - GuardianGetInMeleeRange()
 - #ironfur,if=buff.ironfur.down|rage.deficit<25
 - if target.IsAggroed()
 - and { BuffExpires(ironfur_buff) or RageDeficit() < 25 }
 - and CheckBoxOff(opt_suggest_maul) Spell(ironfur)
 - #maul
 - if not target.IsAggroed()
 - and RageDeficit() < 25
 - or CheckBoxOn(opt_suggest_maul) Spell(maul)
 - #frenzied_regeneration,if=!ticking&incoming_damage_6s%health.max>0.25+(2-charges_fractional)*0.15
 - if not BuffPresent(frenzied_regeneration_buff) and IncomingDamage(5) / MaxHealth() > 0.25 + { 2 - Charges(frenzied_regeneration count=0) } * 0.15 Spell(frenzied_regeneration)
 - #bristling_fur,if=buff.ironfur.remains<2&rage<40
 - if BuffRemaining(ironfur_buff) < 2 and Rage() < 40 Spell(bristling_fur)
 - }
 - AddFunction GuardianDefaultCdActions
 - {
 - #skull_bash
 - GuardianInterruptActions()
 - #blood_fury
 - Spell(blood_fury_apsp)
 - #berserking
 - Spell(berserking)
 - #arcane_torrent
 - Spell(arcane_torrent_energy)
 - #use_item,slot=trinket2
 - GuardianUseItemActions()
 - 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)
 - {
 - #incarnation
 - Spell(incarnation_son_of_ursoc)
 - }
 - }
 - ### actions.precombat
 - AddFunction GuardianPrecombatMainActions
 - {
 - #flask,type=flask_of_the_seventh_demon
 - #food,type=azshari_salad
 - #bear_form
 - Spell(bear_form)
 - }
 - AddFunction GuardianPrecombatShortCdPostConditions
 - {
 - Spell(bear_form)
 - }
 - AddFunction GuardianPrecombatCdPostConditions
 - {
 - Spell(bear_form)
 - }
 - ### Guardian icons.
 - AddCheckBox(opt_druid_guardian_aoe L(AOE) default specialization=guardian)
 - AddIcon checkbox=!opt_druid_guardian_aoe enemies=1 help=shortcd specialization=guardian
 - {
 - unless not InCombat() and GuardianPrecombatShortCdPostConditions()
 - {
 - GuardianDefaultShortCdActions()
 - }
 - }
 - AddIcon checkbox=opt_druid_guardian_aoe help=shortcd specialization=guardian
 - {
 - unless not InCombat() and GuardianPrecombatShortCdPostConditions()
 - {
 - GuardianDefaultShortCdActions()
 - }
 - }
 - AddIcon enemies=1 help=main specialization=guardian
 - {
 - if not InCombat() GuardianPrecombatMainActions()
 - GuardianDefaultMainActions()
 - }
 - AddIcon checkbox=opt_druid_guardian_aoe help=aoe specialization=guardian
 - {
 - if not InCombat() GuardianPrecombatMainActions()
 - GuardianDefaultMainActions()
 - }
 - AddIcon checkbox=!opt_druid_guardian_aoe enemies=1 help=cd specialization=guardian
 - {
 - unless not InCombat() and GuardianPrecombatCdPostConditions()
 - {
 - GuardianDefaultCdActions()
 - }
 - }
 - AddIcon checkbox=opt_druid_guardian_aoe help=cd specialization=guardian
 - {
 - unless not InCombat() and GuardianPrecombatCdPostConditions()
 - {
 - GuardianDefaultCdActions()
 - }
 - }
 - ### Required symbols
 - # arcane_torrent_energy
 - # bear_form
 - # berserking
 - # blood_fury_apsp
 - # bristling_fur
 - # frenzied_regeneration
 - # frenzied_regeneration_buff
 - # galactic_guardian_buff
 - # incarnation_son_of_ursoc
 - # ironfur
 - # ironfur_buff
 - # thrash_bear_debuff
 - # maim
 - # mangle
 - # mighty_bash
 - # moonfire
 - # moonfire_debuff
 - # pulverize
 - # pulverize_buff
 - # shred
 - # skull_bash
 - # swipe_bear
 - # thrash_bear
 - # thrash_bear_debuff
 - # typhoon
 - # war_stomp
 - # wild_charge
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment