You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
15 KiB
145 lines
15 KiB
actions.precombat+=/mark_of_the_wild,if=buff.prowl.down
|
|
actions.precombat+=/use_item,name=algethar_puzzle_box
|
|
actions.precombat+=/heart_of_the_wild,if=buff.any_form.up&buff.cat_form.down
|
|
actions.precombat+=/prowl
|
|
actions.precombat+=/cat_form
|
|
|
|
actions+=/skull_bash
|
|
actions+=/soothe
|
|
# Executed every time the actor is available.
|
|
actions+=/prowl,if=(buff.bs_inc.down|time=0)&!buff.prowl.up
|
|
actions+=/cat_form,if=!buff.cat_form.up
|
|
## <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> does not line up very well with <a href='https://www.wowhead.com/spell=106951/berserk'>Berserk</a> nor <a href='https://www.wowhead.com/spell=102543/incarnation-avatar-of-ashamane'>Incarnation</a> and <a href='https://www.wowhead.com/spell=323764/convoke-the-spirits?spellModifier=768'>Convoke</a> doesn't benefit much from haste.
|
|
## actions+=/invoke_external_buff,name=power_infusion
|
|
actions+=/variable,name=need_bt,value=talent.bloodtalons.enabled&buff.bloodtalons.stack<=1
|
|
actions+=/variable,name=align_3minutes,value=spell_targets.swipe_cat=1
|
|
actions+=/variable,name=lastconvoke,value=fight_remains>cooldown.convoke_the_spirits.remains+3&((talent.ashamanes_guidance.enabled&fight_remains<(cooldown.convoke_the_spirits.remains+60))|(!talent.ashamanes_guidance.enabled&fight_remains<(cooldown.convoke_the_spirits.remains+120)))
|
|
actions+=/variable,name=lastzerk,value=fight_remains>(30+(cooldown.bs_inc.remains%1.6))&((talent.berserk_heart_of_the_lion.enabled&fight_remains<(90+(cooldown.bs_inc.remains%1.6)))|(!talent.berserk_heart_of_the_lion.enabled&fight_remains<(180+cooldown.bs_inc.remains)))
|
|
## These are handled in Feral spec options instead.
|
|
## actions+=/variable,name=zerk_biteweave,op=reset
|
|
## actions+=/variable,name=lazy_swipe,op=reset
|
|
## actions+=/variable,name=regrowth,op=reset
|
|
actions+=/tigers_fury,if=talent.convoke_the_spirits.enabled|!talent.convoke_the_spirits.enabled&(!buff.tigers_fury.up|energy.deficit>65)|(target.time_to_die<15&talent.predator.enabled)
|
|
actions+=/rake,cycle_targets=1,if=persistent_multiplier>dot.rake.pmultiplier&(buff.prowl.up|buff.shadowmeld.up)
|
|
actions+=/natures_vigil,if=time>0
|
|
actions+=/renewal,if=filler_regrowth&health.pct<60
|
|
actions+=/adaptive_swarm,caption=@player,if=talent.unbridled_swarm&spell_targets.swipe_cat<=1&dot.adaptive_swarm_heal.stack<4&dot.adaptive_swarm_heal.remains>4
|
|
actions+=/adaptive_swarm,cycle_targets=1,if=((!dot.adaptive_swarm_damage.ticking|dot.adaptive_swarm_damage.remains<2)&(dot.adaptive_swarm_damage.stack<3)&!action.adaptive_swarm_damage.in_flight&!action.adaptive_swarm.in_flight)&target.time_to_die>5&!(variable.need_bt&active_bt_triggers=2)&(!talent.unbridled_swarm.enabled|spell_targets.swipe_cat=1)
|
|
# in reality, with unbridled talented adaptive swarm should be targeting allies out of combat, and often in single target too. This isn't supported by simc at time of writing though, so will have to settle with just this
|
|
actions+=/adaptive_swarm,cycle_targets=1,if=dot.adaptive_swarm_damage.stack<3&talent.unbridled_swarm.enabled&spell_targets.swipe_cat>1&!(variable.need_bt&active_bt_triggers=2)
|
|
actions+=/call_action_list,name=cooldown
|
|
actions+=/feral_frenzy,cycle_targets=1,if=((talent.dire_fixation.enabled&debuff.dire_fixation.up)|!talent.dire_fixation.enabled|spell_targets.swipe_cat>1)&(combo_points<2|combo_points<3&buff.bs_inc.up|time<10)
|
|
actions+=/ferocious_bite,cycle_targets=1,if=buff.apex_predators_craving.up&(spell_targets.swipe_cat=1|!talent.primal_wrath.enabled|!buff.sabertooth.up)&!(variable.need_bt&active_bt_triggers=2)
|
|
actions+=/call_action_list,name=berserk,strict=1,if=buff.bs_inc.remains>gcd.remains
|
|
actions+=/wait,sec=combo_points.time_to_max,if=combo_points=4&buff.predator_revealed.react&energy.deficit>40&spell_targets.swipe_cat=1&combo_points.time_to_max<gcd.max
|
|
# its acceptable to proc bt when at 4cps in single target for a small gain (0.1-0.2% with t30 4p)
|
|
actions+=/call_action_list,name=finisher,if=combo_points=5|combo_points=4&!(buff.bloodtalons.stack<=1&active_bt_triggers=2&spell_targets.swipe_cat=1)
|
|
actions+=/call_action_list,name=bloodtalons,if=variable.need_bt&!buff.bs_inc.up&combo_points<5
|
|
actions+=/call_action_list,name=aoe_builder,strict=1,if=spell_targets.swipe_cat>1&talent.primal_wrath.enabled
|
|
actions+=/call_action_list,name=builder,if=!buff.bs_inc.up&combo_points<5
|
|
actions+=/regrowth,if=energy<25&buff.predatory_swiftness.up&!buff.clearcasting.up&filler_regrowth
|
|
|
|
# avoid capping brs charges, and in the event of adds, offload charges within reason
|
|
actions.aoe_builder+=/brutal_slash,cycle_targets=1,if=cooldown.brutal_slash.full_recharge_time<4|target.time_to_die<5
|
|
actions.aoe_builder+=/thrash_cat,if=refreshable&(buff.clearcasting.react|(spell_targets.thrash_cat>10|(spell_targets.thrash_cat>5&!talent.double_clawed_rake.enabled))&!talent.thrashing_claws)
|
|
actions.aoe_builder+=/shadowmeld,if=action.rake.ready&!buff.sudden_ambush.up&(dot.rake.refreshable|dot.rake.pmultiplier<1.4)&!buff.prowl.up&!buff.apex_predators_craving.up
|
|
# this line checks if theres an upgradeable rake
|
|
actions.aoe_builder+=/shadowmeld,if=action.rake.ready&!buff.sudden_ambush.up&dot.rake.pmultiplier<1.4&!buff.prowl.up&!buff.apex_predators_craving.up
|
|
# not a perfect solution, but it checks lowest dot for pandemic/stealth snapshot first
|
|
actions.aoe_builder+=/rake,cycle_targets=1,if=buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier
|
|
# and if lowest dot is fine, it checks the remaining dots and targets a mob without stealth snapshot (not necessarily 2nd lowest)
|
|
actions.aoe_builder+=/rake,cycle_targets=1,if=buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier|refreshable
|
|
actions.aoe_builder+=/thrash_cat,if=refreshable
|
|
actions.aoe_builder+=/brutal_slash
|
|
# prio targets with swarm debuff for moonfire
|
|
actions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=refreshable&spell_targets.swipe_cat<5
|
|
actions.aoe_builder+=/swipe_cat
|
|
actions.aoe_builder+=/moonfire_cat,cycle_targets=1,if=dot.moonfire.refreshable
|
|
# if we have brs and nothing better to cast, refresh thrash early at 4+ targets unless dire fixation is talented
|
|
actions.aoe_builder+=/shred,cycle_targets=1,if=(spell_targets.swipe_cat<4|talent.dire_fixation.enabled)&!buff.sudden_ambush.up&!(variable.lazy_swipe&talent.wild_slashes)
|
|
actions.aoe_builder+=/thrash_cat
|
|
|
|
actions.berserk+=/ferocious_bite,cycle_targets=1,if=combo_points=5&dot.rip.remains>8&variable.zerk_biteweave&spell_targets.swipe_cat>1
|
|
# proc bt if 0/1 stack if 5/6 combo points
|
|
actions.berserk+=/call_action_list,name=finisher,if=combo_points=5&!(buff.overflowing_power.stack<=1&active_bt_triggers=2&buff.bloodtalons.stack<=1)
|
|
# its currently a gain to just contiuously try to proc bt in aoe
|
|
actions.berserk+=/call_action_list,name=bloodtalons,strict=1,if=spell_targets.swipe_cat>1
|
|
# go into stealth to buff rake snapshot-- feral frenzy line is to eliminate an edge case involving ff being casted instead due to higher prio
|
|
actions.berserk+=/prowl,if=!(buff.bt_rake.up&active_bt_triggers=2)&(action.rake.ready&!buff.sudden_ambush.up&(dot.rake.refreshable|dot.rake.pmultiplier<1.4)&!buff.shadowmeld.up&cooldown.feral_frenzy.remains<44&!buff.apex_predators_craving.up)
|
|
actions.berserk+=/shadowmeld,if=!(buff.bt_rake.up&active_bt_triggers=2)&action.rake.ready&!buff.sudden_ambush.up&(dot.rake.refreshable|dot.rake.pmultiplier<1.4)&!buff.prowl.up&!buff.apex_predators_craving.up
|
|
actions.berserk+=/rake,if=!(buff.bt_rake.up&active_bt_triggers=2)&(refreshable|(buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier))
|
|
# in single target, you just proc bt when an opportunity arises
|
|
actions.berserk+=/shred,if=(active_bt_triggers=2|(talent.dire_fixation.enabled&!debuff.dire_fixation.up))&buff.bt_shred.down
|
|
actions.berserk+=/brutal_slash,if=active_bt_triggers=2&buff.bt_brutal_slash.down
|
|
actions.berserk+=/moonfire_cat,if=active_bt_triggers=2&buff.bt_moonfire.down
|
|
actions.berserk+=/thrash_cat,if=active_bt_triggers=2&buff.bt_thrash.down&!talent.thrashing_claws&variable.need_bt&(refreshable|talent.brutal_slash.enabled)
|
|
actions.berserk+=/moonfire_cat,if=refreshable
|
|
# don't overcap brs charges, but keep it available for bt
|
|
actions.berserk+=/brutal_slash,if=cooldown.brutal_slash.charges>1
|
|
actions.berserk+=/shred
|
|
|
|
actions.berserk_builders+=/rake,cycle_targets=1,if=refreshable
|
|
actions.berserk_builders+=/swipe_cat,if=spell_targets.swipe_cat>1
|
|
actions.berserk_builders+=/brutal_slash,if=active_bt_triggers=2&buff.bt_brutal_slash.down
|
|
actions.berserk_builders+=/shred
|
|
|
|
actions.bloodtalons+=/brutal_slash,if=(cooldown.brutal_slash.full_recharge_time<4|target.time_to_die<5)&(buff.bt_brutal_slash.down&(buff.bs_inc.up|variable.need_bt))
|
|
actions.bloodtalons+=/prowl,if=action.rake.ready&!buff.sudden_ambush.up&(dot.rake.refreshable|dot.rake.pmultiplier<1.4)&!buff.shadowmeld.up&buff.bt_rake.down&!buff.prowl.up&!buff.apex_predators_craving.up
|
|
actions.bloodtalons+=/shadowmeld,if=action.rake.ready&!buff.sudden_ambush.up&(dot.rake.refreshable|dot.rake.pmultiplier<1.4)&!buff.prowl.up&buff.bt_rake.down&cooldown.feral_frenzy.remains<44&!buff.apex_predators_craving.up
|
|
actions.bloodtalons+=/rake,cycle_targets=1,if=(refreshable|buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier)&buff.bt_rake.down
|
|
actions.bloodtalons+=/rake,cycle_targets=1,if=buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier&buff.bt_rake.down
|
|
actions.bloodtalons+=/shred,if=buff.bt_shred.down&buff.clearcasting.react&spell_targets.swipe_cat=1
|
|
actions.bloodtalons+=/thrash_cat,cycle_targets=1,if=refreshable&buff.bt_thrash.down&buff.clearcasting.react&spell_targets.swipe_cat=1&!talent.thrashing_claws.enabled
|
|
actions.bloodtalons+=/brutal_slash,if=buff.bt_brutal_slash.down
|
|
actions.bloodtalons+=/moonfire_cat,if=refreshable&buff.bt_moonfire.down&spell_targets.swipe_cat=1
|
|
actions.bloodtalons+=/thrash_cat,cycle_targets=1,if=refreshable&buff.bt_thrash.down&!talent.thrashing_claws.enabled
|
|
actions.bloodtalons+=/shred,if=buff.bt_shred.down&spell_targets.swipe_cat=1&(!talent.wild_slashes.enabled|(!debuff.dire_fixation.up&talent.dire_fixation.enabled))
|
|
actions.bloodtalons+=/swipe_cat,if=buff.bt_swipe.down&talent.wild_slashes.enabled
|
|
actions.bloodtalons+=/moonfire_cat,cycle_targets=1,max_cycle_targets=3,if=buff.bt_moonfire.down&spell_targets.swipe_cat<5
|
|
actions.bloodtalons+=/swipe_cat,if=buff.bt_swipe.down
|
|
actions.bloodtalons+=/moonfire_cat,cycle_targets=1,if=buff.bt_moonfire.down
|
|
# If we have BrS and nothing better to cast, thrash at 5+ targets unless dire fixation is talented.
|
|
actions.bloodtalons+=/shred,cycle_targets=1,if=(spell_targets>5|talent.dire_fixation.enabled)&buff.bt_shred.down&!buff.sudden_ambush.up&!(variable.lazy_swipe&talent.wild_slashes)
|
|
actions.bloodtalons+=/thrash_cat,if=buff.bt_thrash.down
|
|
# This just finds the best reapplication if you really need 3rd builder for bt
|
|
actions.bloodtalons+=/rake,cycle_targets=1,if=buff.bt_rake.down&(spell_targets.swipe_cat>4&!talent.dire_fixation|talent.wild_slashes&variable.lazy_swipe)
|
|
|
|
actions.builder+=/run_action_list,name=clearcasting,strict=1,if=buff.clearcasting.react
|
|
actions.builder+=/brutal_slash,if=cooldown.brutal_slash.full_recharge_time<4
|
|
## TODO: edit this to use wait instead; stop pooling if we can use a clearcasting proc
|
|
## actions.builder+=/pool_resource,if=!action.rake.ready&(dot.rake.refreshable|(buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier&dot.rake.remains>6))&!buff.clearcasting.react
|
|
actions.builder+=/shadowmeld,if=action.rake.ready&!buff.sudden_ambush.up&(dot.rake.refreshable|dot.rake.pmultiplier<1.4)&!buff.prowl.up&!buff.apex_predators_craving.up
|
|
actions.builder+=/rake,if=refreshable|(buff.sudden_ambush.up&persistent_multiplier>dot.rake.pmultiplier)
|
|
## repeating here is necessary, otherwise moonfire will occassionally be casted instead
|
|
## actions.builder+=/run_action_list,name=clearcasting,strict=1,if=buff.clearcasting.react
|
|
actions.builder+=/moonfire_cat,cycle_targets=1,if=refreshable
|
|
actions.builder+=/thrash_cat,cycle_targets=1,if=refreshable&!talent.thrashing_claws.enabled
|
|
actions.builder+=/brutal_slash
|
|
actions.builder+=/swipe_cat,if=spell_targets.swipe_cat>1|(talent.wild_slashes.enabled&(debuff.dire_fixation.up|!talent.dire_fixation.enabled))
|
|
actions.builder+=/shred
|
|
|
|
actions.clearcasting+=/thrash_cat,if=refreshable&!talent.thrashing_claws.enabled
|
|
actions.clearcasting+=/swipe_cat,if=spell_targets.swipe_cat>1
|
|
actions.clearcasting+=/brutal_slash,if=spell_targets.brutal_slash>2
|
|
actions.clearcasting+=/shred
|
|
|
|
actions.cooldown+=/use_item,name=algethar_puzzle_box,if=boss&fight_remains<35|(!variable.align_3minutes)
|
|
actions.cooldown+=/use_item,name=algethar_puzzle_box,if=variable.align_3minutes&(cooldown.bs_inc.remains<3&(!variable.lastzerk|!variable.lastconvoke|(variable.lastconvoke&cooldown.convoke_the_spirits.remains<13)))
|
|
actions.cooldown+=/incarnation,if=boss|fight_remains>25
|
|
# its a gain to hold your last berserk cast to line it up with convoke (but not vice versa)
|
|
actions.cooldown+=/berserk,if=fight_remains>18|boss&(!variable.lastzerk|fight_remains<23|variable.lastzerk&!variable.lastconvoke|variable.lastconvoke&cooldown.convoke_the_spirits.remains<10)
|
|
actions.cooldown+=/berserking,if=!variable.align_3minutes|buff.bs_inc.up
|
|
actions.cooldown+=/use_item,name=mirror_of_fractured_tomorrows|irideus_fragment,if=!variable.align_3minutes|buff.bs_inc.up|(variable.lastconvoke&!variable.lastzerk&cooldown.convoke_the_spirits.remains=0)
|
|
actions.cooldown+=/potion,if=buff.bs_inc.up|boss&fight_remains<32|(!variable.lastzerk&variable.lastconvoke&cooldown.convoke_the_spirits.remains<10)
|
|
# checks to make sure you can actually fit convoke into the pull. this portion->(time+fight_remains+10)%%300<time%%300) is just checking if you'll get another potion use before fight ends.
|
|
actions.cooldown+=/convoke_the_spirits,cycle_targets=1,if=((target.time_to_die<fight_remains&target.time_to_die>5-talent.ashamanes_guidance.enabled)|target.time_to_die>=fight_remains)&(boss&fight_remains<5|(dot.rip.remains>5&buff.tigers_fury.up&(combo_points<2|(buff.bs_inc.up&combo_points<=3))))&(!variable.lastconvoke|buff.potion.up|(time+fight_remains+10)%%300>time%%300)&(talent.dire_fixation.enabled&debuff.dire_fixation.up|!talent.dire_fixation.enabled|spell_targets.swipe_cat>1)
|
|
actions.cooldown+=/use_item,name=manic_grieftorch,cycle_targets=1,if=energy.deficit>40
|
|
actions.cooldown+=/use_items
|
|
|
|
actions.finisher+=/primal_wrath,if=(!funneling&(dot.primal_wrath.refreshable&!talent.circle_of_life_and_death.enabled)|dot.primal_wrath.remains<6|(talent.tear_open_wounds.enabled|(spell_targets.swipe_cat>4&!talent.rampant_ferocity.enabled)))&spell_targets.primal_wrath>1&talent.primal_wrath.enabled
|
|
actions.finisher+=/rip,cycle_targets=1,if=refreshable&(!talent.primal_wrath.enabled|spell_targets.swipe_cat=1)&target.time_to_die>settings.rip_duration
|
|
actions.finisher+=/pool_resource,for_next=1,if=!action.tigers_fury.ready&buff.apex_predators_craving.down
|
|
actions.finisher+=/ferocious_bite,max_energy=1,cycle_targets=1,if=buff.apex_predators_craving.down&(!buff.bs_inc.up|(buff.bs_inc.up&!talent.soul_of_the_forest.enabled))
|
|
actions.finisher+=/ferocious_bite,cycle_targets=1,if=(buff.bs_inc.up&talent.soul_of_the_forest.enabled)|buff.apex_predators_craving.up
|
|
|
|
actions.owlweaving+=/sunfire,line_cd=4*gcd
|