Skip to content

Commit 7e835b5

Browse files
Update Generated Files
1 parent b1de19f commit 7e835b5

4 files changed

Lines changed: 156 additions & 116 deletions

File tree

ActionPriorityLists/default/druid_feral.simc

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@ actions.precombat+=/variable,name=easy_swipe,op=reset
2121
actions.precombat+=/prowl,if=!buff.prowl.up
2222

2323
# Executed every time the actor is available.
24-
actions=prowl,if=buff.bs_inc.down&!buff.prowl.up
24+
actions=prowl,if=buff.bs_inc.down&!buff.prowl.up&!buff.shadowmeld.up
2525
actions+=/cat_form,if=!buff.cat_form.up&!talent.fluid_form
2626
# Line up <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> with <a href='https://www.wowhead.com/spell=106951/berserk'>Berserk</a>.
2727
actions+=/invoke_external_buff,name=power_infusion,if=buff.bs_inc.up|!talent.berserk_heart_of_the_lion
2828
actions+=/auto_attack,if=!buff.prowl.up&!buff.shadowmeld.up
29-
actions+=/rake,if=time<1&buff.prowl.up
29+
# rake on pull, also rake at the start of a dungeon pull to get into combat with killing strikes
30+
actions+=/rake,if=time<1&buff.prowl.up|talent.killing_strikes&(buff.prowl.up|buff.shadowmeld.up)&combo_points=5
3031
actions+=/tigers_fury,target_if=max:time_to_die,if=(hero_tree.wildstalker&(!talent.bloodtalons|buff.bloodtalons.up)&dot.rip.refreshable&combo_points>=3&talent.rip_and_tear|combo_points=5)&(fight_remains<=15|cooldown.bs_inc.remains>20&target.time_to_die>5|cooldown.bs_inc.ready&target.time_to_die>12|target.time_to_die=fight_remains)
3132
actions+=/natures_vigil,if=spell_targets.swipe_cat>0&variable.regrowth
3233
actions+=/renewal,if=spell_targets.swipe_cat>0&variable.regrowth
@@ -36,56 +37,61 @@ actions+=/adaptive_swarm,target_if=dot.adaptive_swarm_damage.stack<3&(!dot.adapt
3637
actions+=/adaptive_swarm,target_if=max:(1+dot.adaptive_swarm_damage.stack)*dot.adaptive_swarm_damage.stack<3*time_to_die,if=buff.cat_form.up&dot.adaptive_swarm_damage.stack<3&talent.unbridled_swarm.enabled&spell_targets.swipe_cat>1&dot.rip.ticking
3738
# variable that tells us when we want to prioritize proccing bt, currently thats at 0 or 1 stack of bloodtalons
3839
actions+=/variable,name=need_bt,value=talent.bloodtalons&buff.bloodtalons.stack<=1
40+
# is this cringe? yes it is. Complain on the forums
41+
actions+=/cancel_buff,name=apex_predators_craving,if=buff.bs_inc.up&talent.saber_jaws
3942
actions+=/ferocious_bite,if=buff.apex_predators_craving.up&!(variable.need_bt&active_bt_triggers=2)&(!buff.bs_inc.up|buff.ravage.up)
4043
actions+=/call_action_list,name=cooldown,if=dot.rip.ticking
4144
# limit how often we check what rips new pandemic'd duration would be.
4245
actions+=/call_action_list,name=rip_variable,if=talent.rip_and_tear&spell_targets=1&hero_tree.wildstalker&buff.tigers_fury.up&!buff.bs_inc.up&(buff.bloodtalons.up|!talent.bloodtalons)
4346
# with rip and tear, as wildstalker, we do 3cp rips
4447
actions+=/rip,if=talent.rip_and_tear&spell_targets=1&hero_tree.wildstalker&buff.tigers_fury.up&!buff.bs_inc.up&(buff.bloodtalons.up|!talent.bloodtalons)&(combo_points>=3&refreshable&cooldown.tigers_fury.remains>25|buff.tigers_fury.remains<5&variable.rip_duration>cooldown.tigers_fury.remains&cooldown.tigers_fury.remains>=dot.rip.remains)
45-
actions+=/call_action_list,name=builder,if=(buff.bs_inc.up&!buff.ravage.up&!buff.coiled_to_spring.up&hero_tree.druid_of_the_claw&talent.coiled_to_spring&spell_targets<=2)|buff.bloodtalons.stack=0&active_bt_triggers=2
48+
actions+=/variable,name=stealth_bonus,value=buff.sudden_ambush.up|buff.prowl.up|buff.shadowmeld.up
49+
actions+=/call_action_list,name=builder,if=(buff.bs_inc.up&!buff.ravage.up&!buff.coiled_to_spring.up&hero_tree.druid_of_the_claw&talent.coiled_to_spring&spell_targets<=2)|spell_targets=1&buff.bloodtalons.stack=0&active_bt_triggers=2
50+
actions+=/call_action_list,name=aoe_builder,if=spell_targets>=2&buff.bloodtalons.stack=0&active_bt_triggers=2
4651
actions+=/wait,sec=!cooldown.tigers_fury.remains,if=combo_points=5&cooldown.tigers_fury.remains<3&spell_targets=1
4752
actions+=/call_action_list,name=finisher,if=combo_points=5
4853
actions+=/call_action_list,name=builder,if=spell_targets.swipe_cat=1&combo_points<5
4954
actions+=/call_action_list,name=aoe_builder,if=spell_targets.swipe_cat>=2&combo_points<5
5055
# if we cant do anything else, then sure, tigers fury early
51-
actions+=/tigers_fury,if=(!cooldown.bs_inc.remains|cooldown.bs_inc.remains>20)
56+
actions+=/tigers_fury,if=(!cooldown.bs_inc.remains|cooldown.bs_inc.remains>20)&(fight_remains<=15|cooldown.bs_inc.remains>20&target.time_to_die>5|cooldown.bs_inc.ready&target.time_to_die>12|target.time_to_die=fight_remains)
5257
actions+=/regrowth,if=buff.predatory_swiftness.up&variable.regrowth
5358

5459
# maintain thrash highest prio
55-
actions.aoe_builder=thrash_cat,target_if=max:time_to_die,if=refreshable&!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)&remains<time_to_die
56-
# avoid capping brs charges. Also send brutal slashes/ws swipe in aoe, even if we need to proc bloodtalons, during berserk.
57-
actions.aoe_builder+=/brutal_slash,target_if=min:time_to_die,if=(cooldown.brutal_slash.full_recharge_time<4|time_to_die<4|raid_event.adds.remains<4|(buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw))&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down|spell_targets<3-hero_tree.druid_of_the_claw))
58-
actions.aoe_builder+=/swipe_cat,target_if=min:time_to_die,if=talent.wild_slashes&(time_to_die<4|raid_event.adds.remains<4|buff.bs_inc.up&spell_targets>=3-hero_tree.druid_of_the_claw)&!(variable.need_bt&buff.bt_swipe.up&(buff.bs_inc.down|spell_targets<3-hero_tree.druid_of_the_claw))
60+
actions.aoe_builder=thrash_cat,target_if=max:time_to_die,if=refreshable&!talent.thrashing_claws&remains<time_to_die
61+
# During berserk, in aoe, we ignore bloodtalons in order to cast more brutal slashes/wild slashes swipes
62+
actions.aoe_builder+=/brutal_slash,target_if=min:time_to_die,if=(buff.bloodtalons.stack>0|!active_bt_triggers=2)&buff.bs_inc.up&spell_targets.brutal_slash>=3-hero_tree.druid_of_the_claw|!(variable.need_bt&buff.bt_swipe.up)&(cooldown.brutal_slash.full_recharge_time<4|time_to_die<4|raid_event.adds.remains<4)
63+
# TODO: recheck this line
64+
actions.aoe_builder+=/swipe_cat,target_if=min:time_to_die,if=talent.wild_slashes&((buff.bloodtalons.stack>0|!active_bt_triggers=2)&buff.bs_inc.up&spell_targets.swipe_cat>=3-hero_tree.druid_of_the_claw|!(variable.need_bt&buff.bt_swipe.up)&(time_to_die<4|raid_event.adds.remains<4))
5965
# with wild slashes we swipe at 5+ targets over raking/moonfire
60-
actions.aoe_builder+=/swipe_cat,if=time_to_die<4|(talent.wild_slashes&spell_targets.swipe_cat>4&!(variable.need_bt&buff.bt_swipe.up))
66+
actions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&spell_targets.swipe_cat>=5&!(variable.need_bt&buff.bt_swipe.up)
67+
# TODO: update/check new meld/prowl logic for aoe
6168
actions.aoe_builder+=/prowl,target_if=dot.rake.refreshable|dot.rake.pmultiplier<1.4,if=!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&gcd.remains=0&!buff.sudden_ambush.up&!buff.clearcasting.at_max_stacks
62-
actions.aoe_builder+=/shadowmeld,target_if=dot.rake.refreshable|dot.rake.pmultiplier<1.4,if=!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&!buff.sudden_ambush.up&!buff.prowl.up&!buff.clearcasting.at_max_stacks
69+
# we use prowl here just to trigger killing strikes combat reset
70+
actions.aoe_builder+=/prowl,if=buff.bs_inc.remains<1&!buff.shadowmeld.up&(fight_style.dungeonroute|fight_style.dungeonslice)
71+
# in dungeon sims, in non-boss combat, we want to save shadowmeld until we can use it to trigger a killing strikes reset
72+
actions.aoe_builder+=/shadowmeld,target_if=dot.rake.refreshable|dot.rake.pmultiplier<1.4,if=(!(variable.need_bt&buff.bt_rake.up)&action.rake.ready&!variable.stealth_bonus&!buff.clearcasting.at_max_stacks)&(!fight_style.dungeonroute&!fight_style.dungeonslice|!buff.killing_strikes_combat.up&!buff.incarnation_avatar_of_ashamane.up)
6373
# dcr rake > moonfire
6474
actions.aoe_builder+=/rake,target_if=refreshable,if=talent.doubleclawed_rake&!(variable.need_bt&buff.bt_rake.up)&!buff.clearcasting.at_max_stacks
6575
# at 3t with wild slashes, swipe is better than moonfiring/st rake
66-
actions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&spell_targets.swipe_cat>2&!(variable.need_bt&buff.bt_swipe.up)
67-
# if wildstalker make sure you have at least one rake up
76+
actions.aoe_builder+=/swipe_cat,if=talent.wild_slashes&spell_targets.swipe_cat>=3&!(variable.need_bt&buff.bt_swipe.up)
77+
# if wildstalker make sure you have at least one rake up TODO: check if this should be higher priority, or rake count should be higher
6878
actions.aoe_builder+=/rake,target_if=max:dot.rake.ticking,if=!dot.rake.ticking&hero_tree.wildstalker
69-
# li moonfire is better than non-dcr rake in aoe if we already have 1 rake
79+
# li moonfire is better than non-dcr rake in aoe if we already have 1 rake TODO: see if this is still true with real vines implementation
7080
actions.aoe_builder+=/moonfire_cat,target_if=refreshable,if=!(variable.need_bt&buff.bt_moonfire.up)&!buff.clearcasting.at_max_stacks
71-
actions.aoe_builder+=/rake,target_if=refreshable,if=!(variable.need_bt&buff.bt_rake.up)&!buff.clearcasting.at_max_stacks
7281
# fillers
7382
actions.aoe_builder+=/brutal_slash,if=!(variable.need_bt&buff.bt_swipe.up)
7483
actions.aoe_builder+=/swipe_cat,if=!(variable.need_bt&buff.bt_swipe.up)
75-
actions.aoe_builder+=/shred,if=!buff.sudden_ambush.up&!variable.easy_swipe&!(variable.need_bt&buff.bt_shred.up)
76-
actions.aoe_builder+=/thrash_cat,if=!talent.thrashing_claws&!(variable.need_bt&buff.bt_thrash.up)
84+
actions.aoe_builder+=/rake,target_if=refreshable,if=!(variable.need_bt&buff.bt_rake.up)
85+
actions.aoe_builder+=/thrash_cat,if=!(variable.need_bt&buff.bt_thrash.up)&spell_targets>=3
86+
actions.aoe_builder+=/shred,if=!(variable.need_bt&buff.bt_shred.up)
7787
# fallback bt actions
78-
actions.aoe_builder+=/rake,target_if=max:ticks_gained_on_refresh,if=talent.doubleclawed_rake&buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down
88+
actions.aoe_builder+=/thrash_cat,if=!(variable.need_bt&buff.bt_thrash.up)
7989
actions.aoe_builder+=/moonfire_cat,target_if=max:ticks_gained_on_refresh,if=variable.need_bt&buff.bt_moonfire.down
80-
actions.aoe_builder+=/rake,target_if=max:ticks_gained_on_refresh,if=buff.sudden_ambush.up&variable.need_bt&buff.bt_rake.down
8190
actions.aoe_builder+=/shred,if=variable.need_bt&buff.bt_shred.down&!variable.easy_swipe
8291
actions.aoe_builder+=/rake,target_if=pmultiplier<1.6,if=variable.need_bt&buff.bt_rake.down
83-
actions.aoe_builder+=/thrash_cat,if=variable.need_bt&buff.bt_thrash.down
8492

85-
actions.builder=variable,name=stealth_bonus,value=buff.sudden_ambush.up|buff.prowl.up|buff.shadowmeld.up
86-
actions.builder+=/prowl,if=!variable.stealth_bonus&(prev_gcd.1.ferocious_bite|prev_gcd.1.rip)
87-
# TODO: with incarnation and dungeonslice/dungeonroute, we almost certainly want to split meld use away from prowl use to take advantage of Killing Strikes
88-
actions.builder+=/shadowmeld,if=!variable.stealth_bonus&(prev_gcd.1.ferocious_bite|prev_gcd.1.rip)&buff.bs_inc.up
93+
actions.builder=prowl,if=!variable.stealth_bonus&(prev_gcd.1.ferocious_bite|prev_gcd.1.rip|prev_gcd.1.primal_wrath)
94+
actions.builder+=/shadowmeld,if=!variable.stealth_bonus&(prev_gcd.1.ferocious_bite|prev_gcd.1.rip|prev_gcd.1.primal_wrath)&buff.bs_inc.up
8995
# freely upgrade rakes unless you're dotc inside berserk-- in which case only upgrade to stealth rakes
9096
actions.builder+=/rake,if=(refreshable&persistent_multiplier>=pmultiplier|remains<2|persistent_multiplier>pmultiplier)&!(variable.need_bt&buff.bt_rake.up)&(hero_tree.wildstalker|!buff.bs_inc.up|variable.stealth_bonus)
9197
actions.builder+=/shred,if=variable.stealth_bonus&buff.bs_inc.up
@@ -165,16 +171,20 @@ actions.cooldown+=/feral_frenzy,if=combo_points<=1+buff.bs_inc.up
165171
# always line up convoke with berserk if you can
166172
actions.cooldown+=/convoke_the_spirits,if=fight_remains<5|buff.bs_inc.up&buff.bs_inc.remains<5-talent.ashamanes_guidance|buff.tigers_fury.up&!variable.holdConvoke&(combo_points<=4|buff.bs_inc.up&combo_points<=3)
167173

168-
# maintain/upgrade pws, if we have 6.5+s left on pw, we will instead bite if we have rampant ferocity talented. Without rampant, we will bite a vined target with 6 or fewer targets. If we have Ravage, we use specifically Ravage at 7 or fewer targets.
169-
actions.finisher=primal_wrath,target_if=max:dot.bloodseeker_vines.ticking,if=spell_targets.primal_wrath>1&((dot.primal_wrath.remains<6.5&!buff.bs_inc.up|dot.primal_wrath.refreshable)|(!talent.rampant_ferocity.enabled&(spell_targets.primal_wrath>1&!dot.bloodseeker_vines.ticking&!buff.ravage.up|spell_targets.primal_wrath>6+talent.ravage)))
170-
# rip if single target or pw isnt up. Rip with bloodtalons if talented. If tigers fury will be up before rip falls off, then delay refresh
174+
# primal wrath in pandemic during berserk, or with 6.5s left outside berserk
175+
actions.finisher=primal_wrath,target_if=min:dot.primal_wrath.ticking,if=spell_targets.primal_wrath>1&(dot.primal_wrath.remains<6.5&!buff.bs_inc.up|dot.primal_wrath.refreshable)
176+
# rip instead in single target
171177
actions.finisher+=/rip,target_if=refreshable,if=(!talent.primal_wrath|spell_targets=1)&(buff.bloodtalons.up|!talent.bloodtalons)&(buff.tigers_fury.up|dot.rip.remains<cooldown.tigers_fury.remains)&(remains<fight_remains|remains<4&buff.ravage.up)
172-
# only bite with ravage in aoe with berserk
178+
# only bite with ravage in aoe during berserk
173179
actions.finisher+=/call_action_list,name=aoe_builder,if=hero_tree.druid_of_the_claw&buff.bs_inc.up&!buff.ravage.up&spell_targets>=2
180+
# bite > clip pw if pw isnt talented / its single target / sub-7 targets + vine up / sub 8 targets + ravage up / rampant talented
174181
actions.finisher+=/pool_resource,for_next=1
175-
actions.finisher+=/ferocious_bite,target_if=max:dot.bloodseeker_vines.ticking,if=buff.bs_inc.up|spell_targets>1&hero_tree.wildstalker
182+
# low energy bite during berserk/wildstalker aoe
183+
actions.finisher+=/ferocious_bite,target_if=max:dot.bloodseeker_vines.ticking,if=(hero_tree.wildstalker&spell_targets>1|buff.bs_inc.up)&(spell_targets=1|!talent.primal_wrath|talent.rampant_ferocity|buff.ravage.up|dot.bloodseeker_vines.ticking&spell_targets<7)
176184
actions.finisher+=/pool_resource,for_next=1
177-
actions.finisher+=/ferocious_bite,max_energy=1,target_if=max:dot.bloodseeker_vines.ticking,if=!buff.bs_inc.up
185+
actions.finisher+=/ferocious_bite,max_energy=1,if=(!talent.primal_wrath|spell_targets=1|talent.rampant_ferocity|buff.ravage.up)
186+
# primal wrath fallback (2+ targets, no vine or 7+ targets, wildstalker, no rampant)
187+
actions.finisher+=/primal_wrath,if=spell_targets.primal_wrath>1
178188

179189
# what rips new duration would be if applied in current state
180190
actions.rip_variable=variable,name=rip_duration,value=((4+(4*combo_points))*(1-(0.2*talent.circle_of_life_and_death))*(1+(0.25*talent.veinripper)))+(variable.rip_max_pandemic_duration>?dot.rip.remains)

0 commit comments

Comments
 (0)