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.

144 lines
14 KiB

5 years ago
## Feral Druid
## May 13, 2022
5 years ago
## Changes:
## - druid.owlweave_cat=1 checks to druid.owlweave_cat.
4 years ago
## - Convert BT pool_resource to wait expression (x2).
5 years ago
## - Add interruptible Fleshcraft if you have nothing else to do.
4 years ago
## - Don't hold Convoke for Rip unless you'll really Rip.
## - Support filler Regrowth while pooling for Bloodtalons.
## - Work on Adaptive Swarm support.
5 years ago
actions.precombat+=/variable,name=fourcp_bite,value=0
# Defines what ability to use as a filler. Shred = 0, Non-snapshot Rake = 1, Snapshot Rake = 2, LI = 3, Swipe = 4
5 years ago
actions.precombat+=/variable,name=filler,value=1
actions.precombat+=/variable,name=rip_ticks,value=7
actions.precombat+=/kindred_spirits
actions.precombat+=/bottled_flayedwing_toxin
actions.precombat+=/fleshcraft,if=soulbind.pustule_eruption.enabled|soulbind.volatile_solvent.enabled
actions.precombat+=/prowl,if=buff.moonkin_form.down
actions.precombat+=/cat_form,if=buff.moonkin_form.down
# Cache of acquired treasures does not seem to work yet and has to be seen
actions.precombat+=/variable,name=on_use_trinket,value=0
actions.precombat+=/variable,name=on_use_trinket,op=add,if=(trinket.1.has_use_buff&trinket.1.cooldown.duration)|trinket.1.is.inscrutable_quantum_device,value=1
actions.precombat+=/variable,name=on_use_trinket,op=add,if=(trinket.2.has_use_buff&trinket.2.cooldown.duration)|trinket.2.is.inscrutable_quantum_device,value=2
actions.precombat+=/variable,name=max_trinket_hold,value=61
5 years ago
4 years ago
actions=run_action_list,name=balance,strict=1,if=buff.moonkin_form.up&!druid.owlweave_cat
actions+=/call_action_list,name=owlweave,strict=1,if=druid.owlweave_cat
5 years ago
# Prowl whenever possible
actions+=/prowl
actions+=/tigers_fury,if=buff.cat_form.down
actions+=/cat_form,if=buff.cat_form.down
4 years ago
## actions+=/variable,name=shortest_ttd,value=target.time_to_die
## actions+=/cycling_variable,name=shortest_ttd,op=min,value=target.time_to_die
5 years ago
# One shot stealth
4 years ago
actions+=/run_action_list,name=stealth,strict=1,if=buff.shadowmeld.up|buff.prowl.up
5 years ago
actions+=/skull_bash
4 years ago
actions+=/call_action_list,name=setup,strict=1,if=active_dot.rip=0
5 years ago
actions+=/call_action_list,name=cooldown
# Necrolord: Cast 3 or 4 combo point rips on single target outside of berserk or during berserk if feral frenzy is up OR apply a 5cp Rip when TF is up and will soon fall off.
4 years ago
actions+=/rip,if=covenant.necrolord&(!talent.bloodtalons.enabled|buff.bloodtalons.up)&spell_targets.thrash_cat=1&(combo_points>2&refreshable&druid.rip.ticks_gained_on_refresh>variable.rip_ticks&(!buff.bs_inc.up|cooldown.bs_inc.up|(buff.bs_inc.up&cooldown.feral_frenzy.up))|combo_points=5&buff.tigers_fury.up&buff.tigers_fury.remains<4&druid.rip.ticks_gained_on_refresh>5)
actions+=/run_action_list,name=finisher,strict=1,if=combo_points>=(5-variable.fourcp_bite)
5 years ago
actions+=/primal_wrath,if=druid.primal_wrath.ticks_gained_on_refresh>=20&combo_points>=2,line_cd=5
# Multi-gcd stealth
4 years ago
actions+=/call_action_list,name=stealth,strict=1,if=buff.bs_inc.up
actions+=/regrowth,if=settings.filler_regrowth&talent.bloodtalons.enabled&buff.bloodtalons.down&active_bt_triggers=0&1.5*gcd.max<(((115-23*buff.incarnation_king_of_the_jungle.up)-(energy.current+3.5*energy.regen+(40*buff.clearcasting.up)))/energy.regen)
5 years ago
# The most expensive BT cycle (Thresh Shred Swipe cost 115 energy, make sure we can make that in 4 globals)
actions+=/wait,sec=((115-23*buff.incarnation_king_of_the_jungle.up)-(energy.current+3.5*energy.regen+(40*buff.clearcasting.up)))/energy.regen,if=talent.bloodtalons.enabled&buff.bloodtalons.down&active_bt_triggers=0
4 years ago
## actions+=/pool_resource,if=talent.bloodtalons.enabled&buff.bloodtalons.down&(energy+3.5*energy.regen+(40*buff.clearcasting.up))<(115-23*buff.incarnation_king_of_the_jungle.up)&active_bt_triggers=0
actions+=/run_action_list,name=bloodtalons,if=talent.bloodtalons.enabled&buff.bloodtalons.down
5 years ago
actions+=/ferocious_bite,cycle_targets=1,if=buff.apex_predators_craving.up
actions+=/pool_resource,for_next=1
actions+=/rake,cycle_targets=1,if=(refreshable|persistent_multiplier>dot.rake.pmultiplier)&druid.rake.ticks_gained_on_refresh>spell_targets.swipe_cat*2-2
actions+=/lunar_inspiration,cycle_targets=1,if=(refreshable|persistent_multiplier>dot.lunar_inspiration.pmultiplier)&druid.lunar_inspiration.ticks_gained_on_refresh>spell_targets.swipe_cat*2-2
actions+=/pool_resource,for_next=1
actions+=/thrash_cat,cycle_targets=1,if=refreshable&druid.thrash_cat.ticks_gained_on_refresh>(4+spell_targets.thrash_cat*4)%(1+mastery_value)-conduit.taste_for_blood.enabled-covenant.necrolord&(!buff.bs_inc.up|spell_targets.thrash_cat>1)
actions+=/pool_resource,for_next=1
actions+=/brutal_slash,if=(raid_event.adds.in>(1+max_charges-charges_fractional)*recharge_time)&(spell_targets.brutal_slash*action.brutal_slash.damage%action.brutal_slash.cost)>(action.shred.damage%action.shred.cost)
actions+=/swipe_cat,if=spell_targets.swipe_cat>1+buff.bs_inc.up*2
actions+=/thrash_cat,if=spell_targets.thrash_cat>3
actions+=/shred,if=buff.clearcasting.up&(buff.sudden_ambush.down&buff.shadowmeld.down|buff.bs_inc.up)
actions+=/call_action_list,name=filler
actions.bloodtalons=rake,cycle_targets=1,if=(!ticking|(1.2*persistent_multiplier>=dot.rake.pmultiplier)|(active_bt_triggers=2&refreshable))&buff.bt_rake.down
actions.bloodtalons+=/lunar_inspiration,cycle_targets=1,if=refreshable&buff.bt_moonfire.down
actions.bloodtalons+=/thrash_cat,cycle_targets=1,if=refreshable&buff.bt_thrash.down&druid.thrash_cat.ticks_gained_on_refresh>(4+spell_targets.thrash_cat*4)%(1+mastery_value)-conduit.taste_for_blood.enabled
actions.bloodtalons+=/brutal_slash,if=buff.bt_brutal_slash.down
actions.bloodtalons+=/swipe_cat,if=buff.bt_swipe.down&spell_targets.swipe_cat>1
actions.bloodtalons+=/shred,if=buff.bt_shred.down
actions.bloodtalons+=/swipe_cat,if=buff.bt_swipe.down
actions.bloodtalons+=/thrash_cat,if=buff.bt_thrash.down
actions.cooldown=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)&!buff.adaptive_swarm_heal_in_flight.up&!buff.adaptive_swarm_damage_in_flight.up)&target.time_to_die>5|active_enemies>2&!dot.adaptive_swarm_damage.ticking&energy<35&target.time_to_die>5
actions.cooldown+=/fleshcraft,if=(soulbind.pustule_eruption|soulbind.volatile_solvent),interrupt_immediate=1,interrupt_global=1,interrupt_if=soulbind.volatile_solvent
actions.cooldown+=/use_items,slots=trinket1,if=((cooldown.convoke_the_spirits.remains<2&(buff.bs_inc.up|cooldown.bs_inc.remains>10))|boss&fight_remains<20)|(cooldown.convoke_the_spirits.remains-2>variable.max_trinket_hold)|variable.on_use_trinket=0|(variable.on_use_trinket=2&(cooldown.convoke_the_spirits.remains>22|boss&fight_remains<20|trinket.2.cooldown.remains>20))
actions.cooldown+=/use_items,slots=trinket2,if=((cooldown.convoke_the_spirits.remains<2&(buff.bs_inc.up|cooldown.bs_inc.remains>10)&(trinket.1.cooldown.remains>=2|variable.on_use_trinket=2))|boss&fight_remains<20)|((cooldown.convoke_the_spirits.remains-2+60*((trinket.1.cooldown.remains<cooldown.convoke_the_spirits.remains-2)&(variable.on_use_trinket=1|variable.on_use_trinket>=3)))>variable.max_trinket_hold)|variable.on_use_trinket=0|(variable.on_use_trinket=1&(cooldown.convoke_the_spirits.remains>22|boss&fight_remains<20|trinket.1.cooldown.remains>20))
4 years ago
# Cast Tiger's Fury before (or immediatly after) casting Feral Frenzy if Berserk is NOT on cooldown.
actions.cooldown+=/tigers_fury,sync=feral_frenzy,if=cooldown.bs_inc.up
4 years ago
actions.cooldown+=/feral_frenzy,cycle_targets=1,if=combo_points<3&target.time_to_die>7&(buff.savage_roar.up|!talent.savage_roar.enabled)&(!cooldown.tigers_fury.up|cooldown.bs_inc.up)|boss&fight_remains<8&fight_remains>2
5 years ago
# TODO: Need to sync with with ravenous frenzy when we run frenzyband, or atleast check if its worth it
actions.cooldown+=/berserk,if=active_dot.rip>0&(cooldown.convoke_the_spirits.up|cooldown.convoke_the_spirits.remains>32|boss&fight_remains<20)
actions.cooldown+=/incarnation,if=active_dot.rip>0&(cooldown.convoke_the_spirits.up|boss&fight_remains<30)
5 years ago
# Try and not waste TF energy, but also just use it for zerk and incarns
actions.cooldown+=/tigers_fury,if=energy.deficit>40|buff.bs_inc.up|(talent.predator.enabled&shortest_ttd<3)|(active_dot.rip=0&buff.bloodtalons.up)
5 years ago
# Might be wrong to use Smeld on Rake in very very niche situations, but very rarely
actions.cooldown+=/shadowmeld,if=buff.tigers_fury.up&buff.bs_inc.down&combo_points<4&buff.sudden_ambush.down&dot.rake.pmultiplier<1.6&energy>40&druid.rake.ticks_gained_on_refresh>spell_targets.swipe_cat*2-2&target.time_to_die>5
actions.cooldown+=/berserking,if=buff.tigers_fury.up|buff.bs_inc.up
actions.cooldown+=/potion,if=buff.bs_inc.up|boss&fight_remains<cooldown.bs_inc.remains|boss&fight_remains<25
actions.cooldown+=/ravenous_frenzy,if=buff.bs_inc.up|fight_remains<21
# TODO: Check moonkin hotw and stuff like this, and maybe better combat remain resync
actions.cooldown+=/convoke_the_spirits,if=(dot.rip.remains>4&combo_points<5&(dot.rake.ticking|spell_targets.thrash_cat>1)&energy.deficit>=20&cooldown.bs_inc.remains>10)|boss&fight_remains<5|(buff.bs_inc.up&buff.bs_inc.remains>12)
5 years ago
# Maybe there should be more conditions on the conduit
actions.cooldown+=/empower_bond,if=buff.tigers_fury.up|(conduit.deep_allegiance.enabled)
# Give priority to on-use weapon
actions.cooldown+=/use_item,name=jotungeirr_destinys_call,if=equipped.jotungeirr_destinys_call
actions.cooldown+=/use_items
actions.filler=rake,cycle_targets=1,if=variable.filler=1&refreshable&dot.rake.pmultiplier<=1.2*persistent_multiplier
actions.filler+=/rake,if=variable.filler=2
actions.filler+=/lunar_inspiration,if=variable.filler=3
actions.filler+=/swipe,if=variable.filler=4
actions.filler+=/swipe_cat,if=spell_targets.swipe_cat=1&!buff.clearcasting.up
5 years ago
actions.filler+=/shred,if=buff.sudden_ambush.down
actions.filler+=/regrowth,if=settings.filler_regrowth&selection_time>1.5*gcd.max
4 years ago
## actions.filler+=/fleshcraft,if=soulbind.pustule_eruption.enabled|soulbind.volatile_solvent.enabled,interrupt_immediate=1,interrupt_global=1,interrupt_if=soulbind.volatile_solvent
5 years ago
actions.finisher=pool_resource,for_next=1
actions.finisher+=/savage_roar,if=buff.savage_roar.remains<3
actions.finisher+=/primal_wrath,if=(druid.primal_wrath.ticks_gained_on_refresh>3*(spell_targets.primal_wrath+1)&spell_targets.primal_wrath>1)|spell_targets.primal_wrath>(3+1*talent.sabertooth.enabled)
actions.finisher+=/rip,cycle_targets=1,if=refreshable&druid.rip.ticks_gained_on_refresh>variable.rip_ticks&((buff.tigers_fury.up|!ticking)&(buff.bloodtalons.up|!talent.bloodtalons.enabled)|!talent.sabertooth.enabled)&(spell_targets.primal_wrath=1|!talent.primal_wrath.enabled)&(active_dot.rip=0|ticking&active_dot.rip=1|!runeforge.draught_of_deep_focus|!talent.sabertooth.enabled)
actions.finisher+=/savage_roar,if=buff.savage_roar.remains<(combo_points+1)*6*0.3
actions.finisher+=/ferocious_bite,max_energy=1,cycle_targets=1
4 years ago
actions.finisher+=/ferocious_bite,cycle_targets=1,if=buff.bs_inc.up&talent.soul_of_the_forest.enabled|cooldown.convoke_the_spirits.remains<1&covenant.night_fae
actions.finisher+=/regrowth,if=settings.filler_regrowth&selection_time>1.5*gcd.max
5 years ago
actions.owlweave=starsurge,if=buff.heart_of_the_wild.up
actions.owlweave+=/sunfire,line_cd=4*gcd
actions.owlweave+=/moonfire,line_cd=4*gcd,if=buff.moonkin_form.up&spell_targets.thrash_cat<2&!talent.lunar_inspiration.enabled&energy<60&!buff.clearcasting.up
5 years ago
actions.owlweave+=/heart_of_the_wild,if=energy<30&dot.rip.remains>4.5&(cooldown.tigers_fury.remains>=6.5|runeforge.cateye_curio)&buff.clearcasting.stack<1&!buff.apex_predators_craving.up&!buff.bloodlust.up&!buff.bs_inc.up&(cooldown.convoke_the_spirits.remains>6.5|!covenant.night_fae)&(!covenant.necrolord|cooldown.adaptive_swarm.remains>=5|dot.adaptive_swarm_damage.remains>7)
4 years ago
actions.owlweave+=/moonkin_form,if=energy<30&dot.rip.remains>4.5&(cooldown.tigers_fury.remains>=4.5|runeforge.cateye_curio)&buff.clearcasting.stack<1&!buff.apex_predators_craving.up&!buff.bloodlust.up&(!buff.bs_inc.up|covenant.necrolord&talent.savage_roar.enabled&buff.bs_inc.remains>6)&(cooldown.convoke_the_spirits.remains>6.5|!covenant.night_fae)&(!covenant.necrolord|cooldown.adaptive_swarm.remains>=5|dot.adaptive_swarm_damage.remains>7)&fight_remains>7
actions.setup=lunar_inspiration,if=covenant.necrolord&spell_targets.thrash_cat<4&combo_points<5&!ticking&!buff.bs_inc.up
actions.setup+=/pool_resource,for_next=1
actions.setup+=/savage_roar,if=talent.feral_frenzy.enabled&cooldown.feral_frenzy.up&!buff.savage_roar.up&combo_points>1&dot.rake.ticking&(dot.lunar_inspiration.ticking|!talent.lunar_inspiration.enabled)
4 years ago
## actions.setup+=/pool_resource,if=talent.bloodtalons.enabled&buff.bloodtalons.down&(energy+3.5*energy.regen+(40*buff.clearcasting.up))<(115-23*buff.incarnation_king_of_the_jungle.up)&active_bt_triggers=0
actions.setup+=/wait,sec=((115-23*buff.incarnation_king_of_the_jungle.up)-(energy.current+3.5*energy.regen+(40*buff.clearcasting.up)))/energy.regen,if=talent.bloodtalons.enabled&buff.bloodtalons.down&active_bt_triggers=0
actions.setup+=/call_action_list,name=bloodtalons,if=talent.bloodtalons.enabled&buff.bloodtalons.down&(combo_points<5|spell_targets.thrash_cat=1)
4 years ago
actions.setup+=/call_action_list,name=cooldown
actions.setup+=/call_action_list,name=finisher,strict=1,if=combo_points>3&(buff.bloodtalons.up|!talent.bloodtalons.enabled)
5 years ago
actions.stealth=pool_resource,for_next=1
actions.stealth+=/swipe_cat,if=buff.bs_inc.up&spell_targets.swipe_cat>3&runeforge.frenzyband
5 years ago
# Rake needs roughly 50% of its length at a minimum to surpass shreds dpe
actions.stealth+=/rake,cycle_targets=1,if=(dot.rake.pmultiplier<1.5|refreshable)&druid.rake.ticks_gained_on_refresh>2|(persistent_multiplier>dot.rake.pmultiplier&buff.bs_inc.up&spell_targets.thrash_cat<3&covenant.necrolord)|buff.bs_inc.remains<1
actions.stealth+=/lunar_inspiration,if=spell_targets.thrash_cat<3&refreshable&druid.lunar_inspiration.ticks_gained_on_refresh>5&(combo_points=4|dot.lunar_inspiration.remains<5|!dot.lunar_inspiration.ticking)
# Brutal Slash is better than stealth Shred at 3 targets
actions.stealth+=/brutal_slash,if=spell_targets.brutal_slash>2
actions.stealth+=/pool_resource,for_next=1
actions.stealth+=/shred,if=combo_points<4&spell_targets.thrash_cat<5
actions.balance=sunfire,if=buff.eclipse_solar.down&buff.eclipse_lunar.down&(refreshable|(active_enemies>1&active_dot.sunfire<active_enemies))
4 years ago
actions.balance+=/starsurge,if=buff.eclipse_solar.remains>10+cast_time|buff.eclipse_lunar.remains>10+cast_time
actions.balance+=/starfire,if=buff.eclipse_lunar.remains>cast_time|buff.eclipse_solar.down&solar_eclipse>0|buff.eclipse_solar.down&lunar_eclipse-action.wrath.in_flight<1
actions.balance+=/wrath,if=buff.eclipse_solar.remains>cast_time|buff.eclipse_lunar.down&lunar_eclipse-action.wrath.in_flight>0