|
|
|
|
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
|
|
|
|
|
actions+=/prowl,if=buff.bs_inc.down&!buff.prowl.up
|
|
|
|
|
actions+=/cat_form,if=!buff.cat_form.up
|
|
|
|
|
## berserk and power infusion cds dont line up very well, so we are better off just sending on cooldown
|
|
|
|
|
## 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)))
|
|
|
|
|
actions+=/variable,name=zerk_biteweave,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
|
|
|
|
|
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+=/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+=/run_action_list,name=aoe_builder,strict=1,if=spell_targets.swipe_cat>1&talent.primal_wrath.enabled
|
|
|
|
|
actions+=/call_action_list,name=builder,if=combo_points<5&!buff.bs_inc.up
|
|
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
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&gcd.remains=0&!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&gcd.remains=0&!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
|
|
|
|
|
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
|
|
|
|
|
actions.bloodtalons+=/thrash_cat,if=buff.bt_thrash.down
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
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+=/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.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
|