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.
142 lines
14 KiB
142 lines
14 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<2
|
|
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&(!buff.tigers_fury.up|energy.deficit>65)
|
|
actions+=/tigers_fury,if=talent.convoke_the_spirits.enabled&(!variable.lastconvoke|(variable.lastconvoke&!buff.tigers_fury.up))
|
|
actions+=/rake,cycle_targets=1,if=1.4*persistent_multiplier>dot.rake.pmultiplier&(buff.prowl.up|buff.shadowmeld.up)
|
|
actions+=/natures_vigil,if=time>0
|
|
actions+=/adaptive_swarm,cycle_targets=1,if=((!dot.adaptive_swarm_damage.ticking|dot.adaptive_swarm_damage.remains<2)&(dot.adaptive_swarm_damage.stack<3|!dot.adaptive_swarm_heal.stack>1)&!action.adaptive_swarm_heal.in_flight&!action.adaptive_swarm_damage.in_flight&!action.adaptive_swarm.in_flight)&target.time_to_die>5|active_enemies>2&!dot.adaptive_swarm_damage.ticking&energy<35&target.time_to_die>5&!(variable.need_bt&active_bt_triggers=2)
|
|
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=combo_points<2|combo_points<3&buff.bs_inc.up
|
|
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<20&buff.predatory_swiftness.up&!buff.clearcasting.up&variable.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
|
|
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=refreshable
|
|
# if we have brs and nothing better to cast, check if thrash DD beats shred (or if SA is up)
|
|
actions.aoe_builder+=/shred,cycle_targets=1,if=action.shred.damage>action.thrash_cat.damage&!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&!dot.rake.refreshable))
|
|
# in single target, you just proc bt when an opportunity arises
|
|
actions.berserk+=/shred,if=active_bt_triggers=2&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, check if shred beats thrash DD (or if SA is up)
|
|
actions.bloodtalons+=/shred,cycle_targets=1,if=action.shred.damage>action.thrash_cat.damage&buff.bt_shred.down&!buff.sudden_ambush.up&!(variable.lazy_swipe&talent.wild_slashes)
|
|
actions.bloodtalons+=/thrash_cat,if=buff.bt_thrash.down
|
|
# this line is for the lazy-swipe build only, basically the idea is to only use swipe thrash and rake in aoe. 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&variable.lazy_swipe&talent.wild_slashes
|
|
|
|
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&dot.rake.remains>6)
|
|
## 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
|
|
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|(boss&fight_remains<cooldown.bs_inc.remains&variable.lastconvoke&cooldown.convoke_the_spirits.remains<10)
|
|
actions.cooldown+=/convoke_the_spirits,if=target.time_to_die>5|boss&(fight_remains<5|dot.rip.remains>5&buff.tigers_fury.up&(combo_points<2|buff.bs_inc.up&combo_points=2)&(!variable.lastconvoke|!variable.lastzerk|buff.bs_inc.up))
|
|
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&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
|