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.

197 lines
31 KiB

## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/default/deathknight_unholy.simc
## Up to date with SimC: April 22 2025 - 42dc633
actions.precombat+=/raise_dead
actions.precombat+=/army_of_the_dead,precombat_time=2
actions.precombat+=/variable,name=trinket_1_buffs,value=trinket.1.has_use_buff|trinket.1.is.treacherous_transmitter
actions.precombat+=/variable,name=trinket_2_buffs,value=trinket.2.has_use_buff|trinket.2.is.treacherous_transmitter
actions.precombat+=/variable,name=trinket_1_duration,op=setif,value=trinket.1.is.treacherous_transmitter*15+trinket.1.is.funhouse_lens*15+trinket.1.is.signet_of_the_priory*20,value_else=trinket.1.proc.any_dps.duration,condition=trinket.1.is.treacherous_transmitter|trinket.1.is.funhouse_lens|trinket.1.is.signet_of_the_priory
actions.precombat+=/variable,name=trinket_2_duration,op=setif,value=trinket.2.is.treacherous_transmitter*15+trinket.2.is.funhouse_lens*15+trinket.2.is.signet_of_the_priory*20,value_else=trinket.2.proc.any_dps.duration,condition=trinket.2.is.treacherous_transmitter|trinket.2.is.funhouse_lens|trinket.2.is.signet_of_the_priory
actions.precombat+=/variable,name=trinket_1_high_value,op=setif,value=2,value_else=1,condition=trinket.1.is.treacherous_transmitter
actions.precombat+=/variable,name=trinket_2_high_value,op=setif,value=2,value_else=1,condition=trinket.2.is.treacherous_transmitter
actions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(talent.apocalypse&trinket.1.cooldown.duration%%cooldown.apocalypse.duration=0|talent.dark_transformation&trinket.1.cooldown.duration%%cooldown.dark_transformation.duration=0)|trinket.1.is.treacherous_transmitter
actions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(talent.apocalypse&trinket.2.cooldown.duration%%cooldown.apocalypse.duration=0|talent.dark_transformation&trinket.2.cooldown.duration%%cooldown.dark_transformation.duration=0)|trinket.2.is.treacherous_transmitter
actions.precombat+=/variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.2.has_cooldown|!trinket.1.has_cooldown)|variable.trinket_2_buffs&((trinket.2.cooldown.duration%variable.trinket_2_duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync)*(variable.trinket_2_high_value)*(1+((trinket.2.ilvl-trinket.1.ilvl)%100)))>((trinket.1.cooldown.duration%variable.trinket_1_duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync)*(variable.trinket_1_high_value)*(1+((trinket.1.ilvl-trinket.2.ilvl)%100)))
actions.precombat+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>=trinket.1.ilvl
actions+=/mind_freeze
actions+=/variable,name=st_planning,op=set,value=active_enemies=1
actions+=/variable,name=adds_remain,op=set,value=active_enemies>1
actions+=/variable,name=apoc_timing,op=set,value=3,value_else=0,condition=cooldown.apocalypse.remains<5&debuff.festering_wound.down&cooldown.unholy_assault.remains>5
actions+=/variable,name=pop_wounds,op=set,value=(cooldown.apocalypse.remains>variable.apoc_timing|!talent.apocalypse)&(debuff.festering_wound.up&cooldown.unholy_assault.remains<20&talent.unholy_assault&active_enemies=1|debuff.rotten_touch.up&debuff.festering_wound.up|debuff.festering_wound.stack>=4-pet.abomination.active)|fight_remains<5&debuff.festering_wound.up
actions+=/variable,name=pooling_runic_power,op=set,value=talent.vile_contagion&cooldown.vile_contagion.remains<5&runic_power<30
actions+=/variable,name=spend_rp,op=setif,value=(!talent.rotten_touch|talent.rotten_touch&!debuff.rotten_touch.up|runic_power.deficit<20)&((talent.improved_death_coil&(active_enemies=2|talent.coil_of_devastation)|rune<3|pet.gargoyle.active|buff.sudden_doom.up|!variable.pop_wounds&debuff.festering_wound.stack>=4))
actions+=/variable,name=san_coil_mult,op=setif,value=2,value_else=1,condition=buff.essence_of_the_blood_queen.stack>=4
actions+=/variable,name=epidemic_targets,value=3+talent.improved_death_coil+(talent.frenzied_bloodthirst*variable.san_coil_mult)+(talent.hungering_thirst&talent.harbinger_of_doom&buff.sudden_doom.up)
## Call Action Lists
actions+=/call_action_list,name=san_trinkets,strict=1,if=talent.vampiric_strike
actions+=/call_action_list,name=trinkets,strict=1,if=!talent.vampiric_strike
## Racials
actions+=/arcane_torrent,if=runic_power<20&rune<2
actions+=/blood_fury,if=(buff.blood_fury.duration+3>=pet.gargoyle.remains&pet.gargoyle.active)|(!talent.summon_gargoyle|cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=buff.blood_fury.duration+3|pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.blood_fury.duration+3|active_enemies>=2&death_and_decay.ticking)|boss&fight_remains<=buff.blood_fury.duration+3
actions+=/berserking,if=(buff.berserking.duration+3>=pet.gargoyle.remains&pet.gargoyle.active)|(!talent.summon_gargoyle|cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=buff.berserking.duration+3|pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.berserking.duration+3|active_enemies>=2&death_and_decay.ticking)|boss&fight_remains<=buff.berserking.duration+3
actions+=/lights_judgment,if=buff.unholy_strength.up&(!talent.festermight|buff.festermight.remains<target.time_to_die|buff.unholy_strength.remains<target.time_to_die)
actions+=/ancestral_call,if=(18>=pet.gargoyle.remains&pet.gargoyle.active)|(!talent.summon_gargoyle|cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=18|pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=18|active_enemies>=2&death_and_decay.ticking)|boss&fight_remains<=18
actions+=/arcane_pulse,if=active_enemies>=2|(rune.deficit>=5&runic_power.deficit>=60)
actions+=/fireblood,if=(buff.fireblood.duration+3>=pet.gargoyle.remains&pet.gargoyle.active)|(!talent.summon_gargoyle|cooldown.summon_gargoyle.remains>60)&(pet.army_ghoul.active&pet.army_ghoul.remains<=buff.fireblood.duration+3|pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=buff.fireblood.duration+3|active_enemies>=2&death_and_decay.ticking)|boss&fight_remains<=buff.fireblood.duration+3
actions+=/bag_of_tricks,if=active_enemies=1&(buff.unholy_strength.up|boss&fight_remains<5)
# Shared Cooldowns
actions+=/potion,if=active_enemies>=1&(!talent.summon_gargoyle|cooldown.summon_gargoyle.remains>60)&(buff.dark_transformation.up&30>=buff.dark_transformation.remains|pet.army_ghoul.active&pet.army_ghoul.remains<=30|pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=30|pet.abomination.active&pet.abomination.remains<=30)|boss&fight_remains<=30
## Use <a href='https://www.wowhead.com/spell=10060/power-infusion'>Power Infusion</a> while <a href='https://www.wowhead.com/spell=49206/summon-gargoyle'>Gargoyle</a> is up, as well as <a href='https://www.wowhead.com/spell=275699/apocalypse'>Apocalypse</a> or with <a href='https://www.wowhead.com/spell=63560/dark-transformation'>Dark Transformation</a> if <a href='https://www.wowhead.com/spell=275699/apocalypse'>Apocalypse</a> or <a href='https://www.wowhead.com/spell=49206/summon-gargoyle'>Gargoyle</a> are not talented
## actions+=/invoke_external_buff,name=power_infusion,if=active_enemies>=1&(pet.gargoyle.active&pet.gargoyle.remains<=22|!talent.summon_gargoyle&talent.army_of_the_dead&(talent.raise_abomination&pet.abomination.active&pet.abomination.remains<18|!talent.raise_abomination&pet.army_ghoul.active&pet.army_ghoul.remains<=18)|!talent.summon_gargoyle&!talent.army_of_the_dead&buff.dark_transformation.up|!talent.summon_gargoyle&buff.dark_transformation.up|!pet.gargoyle.active&cooldown.summon_gargoyle.remains+10>cooldown.invoke_external_buff_power_infusion.duration|active_enemies>=3&(buff.dark_transformation.up|death_and_decay.ticking))
## [Syrif] - (variable.st_planning|variable.adds_remain) removed from 3 lines here, too redundant
actions+=/army_of_the_dead,if=(talent.commander_of_the_dead&cooldown.dark_transformation.remains<5|!talent.commander_of_the_dead&active_enemies>=1)|boss&fight_remains<35
actions+=/raise_abomination,if=(variable.st_planning|variable.adds_remain)&(!talent.vampiric_strike|(pet.apoc_ghoul.active|!talent.apocalypse))|boss&fight_remains<30
actions+=/summon_gargoyle,use_off_gcd=1,if=(variable.st_planning|variable.adds_remain)&(buff.commander_of_the_dead.up|!talent.commander_of_the_dead&active_enemies>=1)|boss&fight_remains<25
actions+=/antimagic_shell,if=death_knight.ams_absorb_percent>0&runic_power<30&rune<2
actions+=/call_action_list,name=cds_aoe_san,strict=1,if=talent.vampiric_strike&active_enemies>=3
actions+=/call_action_list,name=cds_aoe,strict=1,if=!talent.vampiric_strike&active_enemies>=2
actions+=/call_action_list,name=cds_cleave_san,strict=1,if=talent.vampiric_strike&active_enemies=2
actions+=/call_action_list,name=cds_san,strict=1,if=talent.vampiric_strike&active_enemies=1
actions+=/call_action_list,name=cds,strict=1,if=!talent.vampiric_strike&active_enemies=1
actions+=/call_action_list,name=cleave,strict=1,if=active_enemies=2
actions+=/call_action_list,name=aoe_setup,strict_if=active_enemies>=3,if=active_enemies>=3&cooldown.any_dnd.remains<10&!death_and_decay.ticking
actions+=/call_action_list,name=aoe_burst,strict_if=active_enemies>=3,if=active_enemies>=3&(death_and_decay.ticking|buff.death_and_decay.up&(death_knight.fwounded_targets>=(cycle_enemies*0.5)|talent.vampiric_strike&active_enemies<16))
actions+=/call_action_list,name=aoe,strict_if=active_enemies>=3,if=active_enemies>=3&!buff.death_and_decay.up
actions+=/run_action_list,name=san_fishing,strict_if=active_enemies=1&talent.gift_of_the_sanlayn,if=active_enemies=1&talent.gift_of_the_sanlayn&!cooldown.dark_transformation.ready&!buff.gift_of_the_sanlayn.up&buff.essence_of_the_blood_queen.remains<cooldown.dark_transformation.remains+3
actions+=/call_action_list,name=san_st,strict=1,if=active_enemies=1&talent.vampiric_strike
actions+=/call_action_list,name=st,strict=1,if=active_enemies=1&!talent.vampiric_strike
## AOE
actions.aoe+=/festering_strike,if=buff.festering_scythe.up
actions.aoe+=/death_coil,cycle_targets=1,if=rune<4&active_enemies<variable.epidemic_targets&buff.gift_of_the_sanlayn.up&gcd<=1.0&fight_remains>buff.dark_transformation.remains*2
actions.aoe+=/epidemic,if=rune<4&active_enemies>variable.epidemic_targets&buff.gift_of_the_sanlayn.up&gcd<=1.0&fight_remains>buff.dark_transformation.remains*2
actions.aoe+=/wound_spender,cycle_targets=1,if=debuff.festering_wound.up&buff.death_and_decay.up&talent.bursting_sores&cooldown.apocalypse.remains>variable.apoc_timing
actions.aoe+=/death_coil,cycle_targets=1,if=!variable.pooling_runic_power&active_enemies<variable.epidemic_targets
actions.aoe+=/epidemic,if=!variable.pooling_runic_power
actions.aoe+=/wound_spender,cycle_targets=1,if=debuff.chains_of_ice_trollbane_slow.up
actions.aoe+=/festering_strike,cycle_targets=1,if=cooldown.apocalypse.remains<variable.apoc_timing|buff.festering_scythe.up
actions.aoe+=/festering_strike,cycle_targets=1,if=debuff.festering_wound.stack<2
actions.aoe+=/wound_spender,cycle_targets=1,if=debuff.festering_wound.up&cooldown.apocalypse.remains>gcd|buff.vampiric_strike.up&dot.virulent_plague.ticking
## AoE Burst
actions.aoe_burst+=/festering_strike,if=buff.festering_scythe.up
actions.aoe_burst+=/death_coil,cycle_targets=1,if=!buff.vampiric_strike.up&active_enemies<variable.epidemic_targets&(!talent.bursting_sores|talent.bursting_sores&death_knight.fwounded_targets<active_enemies&death_knight.fwounded_targets<active_enemies*0.4&buff.sudden_doom.up|buff.sudden_doom.up&(talent.doomed_bidding&talent.menacing_magus|talent.rotten_touch|debuff.death_rot.remains<gcd)|rune<2)|(rune<4|active_enemies<4|boss)&active_enemies<variable.epidemic_targets&buff.gift_of_the_sanlayn.up&gcd<=1.0&(fight_remains>buff.dark_transformation.remains*2)
actions.aoe_burst+=/epidemic,if=!buff.vampiric_strike.up&(!talent.bursting_sores|talent.bursting_sores&death_knight.fwounded_targets<active_enemies&death_knight.fwounded_targets<active_enemies*0.4&buff.sudden_doom.up|buff.sudden_doom.up&(buff.a_feast_of_souls.up|debuff.death_rot.remains<gcd|debuff.death_rot.stack<10)|rune<2)|(rune<4|boss)&active_enemies>variable.epidemic_targets&buff.gift_of_the_sanlayn.up&gcd<=1.0&fight_remains>buff.dark_transformation.remains*2
actions.aoe_burst+=/wound_spender,cycle_targets=1,if=debuff.chains_of_ice_trollbane_slow.up
actions.aoe_burst+=/wound_spender,cycle_targets=1,if=debuff.festering_wound.up|buff.vampiric_strike.up|buff.death_and_decay.up
actions.aoe_burst+=/death_coil,cycle_targets=1,if=active_enemies<variable.epidemic_targets
actions.aoe_burst+=/epidemic,if=variable.epidemic_targets<active_enemies
actions.aoe_burst+=/festering_strike,cycle_targets=1,if=debuff.festering_wound.stack<=2
actions.aoe_burst+=/wound_spender,cycle_targets=1
## AoE Setup
actions.aoe_setup+=/festering_strike,if=buff.festering_scythe.up
actions.aoe_setup+=/festering_strike,cycle_targets=1,if=talent.vile_contagion&cooldown.vile_contagion.remains<5&!debuff.festering_wound.at_max_stacks
actions.aoe_setup+=/festering_strike,cycle_targets=1,if=death_knight.fwounded_targets=0&cooldown.apocalypse.remains<gcd
actions.aoe_setup+=/wound_spender,cycle_targets=1,if=debuff.chains_of_ice_trollbane_slow.up
actions.aoe_setup+=/death_coil,cycle_targets=1,if=!variable.pooling_runic_power&active_enemies<variable.epidemic_targets&rune<4
actions.aoe_setup+=/epidemic,if=!variable.pooling_runic_power&variable.epidemic_targets<=active_enemies&rune<4
# [Hekili] Added fallback use based on time to max charges; this is in case you have target swaps enabled but...aren't swapping targets to apply Festering Wounds.
actions.aoe_setup+=/any_dnd,if=!buff.death_and_decay.up&(!talent.bursting_sores&!talent.vile_contagion|death_knight.fwounded_targets>=cycle_enemies|full_recharge_time<2*gcd.max|death_knight.fwounded_targets>=8|active_enemies>1&raid_event.adds.remains<=11&raid_event.adds.remains>5|!buff.death_and_decay.up&talent.defile&rune>3)
actions.aoe_setup+=/death_coil,cycle_targets=1,if=!variable.pooling_runic_power&active_enemies<variable.epidemic_targets&(buff.sudden_doom.up|death_knight.fwounded_targets=active_enemies|death_knight.fwounded_targets>=8)
actions.aoe_setup+=/epidemic,if=!variable.pooling_runic_power&variable.epidemic_targets<=active_enemies&(buff.sudden_doom.up|death_knight.fwounded_targets=active_enemies|death_knight.fwounded_targets>=8)
actions.aoe_setup+=/death_coil,cycle_targets=1,if=!variable.pooling_runic_power&active_enemies<variable.epidemic_targets
actions.aoe_setup+=/epidemic,if=!variable.pooling_runic_power
actions.aoe_setup+=/festering_strike,cycle_targets=1,if=death_knight.fwounded_targets<8&!death_knight.fwounded_targets=active_enemies
actions.aoe_setup+=/wound_spender,cycle_targets=1,if=buff.vampiric_strike.up
## Non-San'layn Cooldowns
actions.cds+=/dark_transformation,if=variable.st_planning&(cooldown.apocalypse.remains<8|!talent.apocalypse|active_enemies>=1)|boss&fight_remains<20
actions.cds+=/unholy_assault,if=variable.st_planning&(cooldown.apocalypse.remains<gcd*2|!talent.apocalypse|active_enemies>=2&buff.dark_transformation.up)|boss&fight_remains<20
actions.cds+=/apocalypse,if=variable.st_planning|boss&fight_remains<20
actions.cds+=/outbreak,cycle_targets=1,if=target.time_to_die>dot.virulent_plague.remains&dot.virulent_plague.ticks_remain<5&(dot.virulent_plague.refreshable|talent.superstrain&(dot.frost_fever.refreshable|dot.blood_plague.refreshable))&(!talent.unholy_blight|talent.plaguebringer)&(!talent.raise_abomination|talent.raise_abomination&cooldown.raise_abomination.remains>dot.virulent_plague.ticks_remain*3)
actions.cds+=/abomination_limb,if=variable.st_planning&!buff.sudden_doom.up&(buff.festermight.up&buff.festermight.stack>8|!talent.festermight)&(pet.apoc_ghoul.remains<5|!talent.apocalypse)&debuff.festering_wound.stack<=2|boss&fight_remains<12
## Non-San'layn AoE Cooldowns
actions.cds_aoe+=/vile_contagion,cycle_targets=1,if=debuff.festering_wound.stack>=4&variable.adds_remain
actions.cds_aoe+=/unholy_assault,cycle_targets=1,if=variable.adds_remain&(debuff.festering_wound.stack>=2&cooldown.vile_contagion.remains<3|!talent.vile_contagion)
actions.cds_aoe+=/dark_transformation,if=variable.adds_remain&(cooldown.vile_contagion.remains>5|!talent.vile_contagion|death_and_decay.ticking|cooldown.death_and_decay.remains<3)
actions.cds_aoe+=/outbreak,if=dot.virulent_plague.ticks_remain<5&dot.virulent_plague.refreshable&(!talent.unholy_blight|talent.unholy_blight&cooldown.dark_transformation.remains)&(!talent.raise_abomination|talent.raise_abomination&cooldown.raise_abomination.remains)
actions.cds_aoe+=/apocalypse,cycle_targets=1,if=variable.adds_remain&rune<=3
actions.cds_aoe+=/abomination_limb,if=variable.adds_remain
## San'layn AoE Cooldowns
actions.cds_aoe_san+=/vile_contagion,cycle_targets=1,if=debuff.festering_wound.stack>=4&variable.adds_remain
actions.cds_aoe_san+=/dark_transformation,if=variable.adds_remain&(buff.death_and_decay.up|active_enemies<=3)
actions.cds_aoe_san+=/unholy_assault,cycle_targets=1,if=debuff.festering_wound.stack<3&variable.adds_remain&talent.vile_contagion&debuff.festering_wound.stack<=2&cooldown.vile_contagion.remains<6
actions.cds_aoe_san+=/unholy_assault,cycle_targets=1,if=variable.adds_remain&!talent.vile_contagion&buff.dark_transformation.up&buff.dark_transformation.remains<12
actions.cds_aoe_san+=/outbreak,if=dot.virulent_plague.ticks_remain<5&(dot.virulent_plague.refreshable|talent.morbidity&!buff.gift_of_the_sanlayn.up&talent.superstrain&dot.frost_fever.refreshable&dot.blood_plague.refreshable)&(!dot.virulent_plague.ticking&variable.epidemic_targets<active_enemies|(!talent.unholy_blight|talent.unholy_blight&cooldown.dark_transformation.remains>5)&(!talent.raise_abomination|talent.raise_abomination&cooldown.raise_abomination.remains>6))
actions.cds_aoe_san+=/apocalypse,cycle_targets=1,if=variable.adds_remain&rune<=3
actions.cds_aoe_san+=/abomination_limb,if=variable.adds_remain
## San'layn Cleave Cooldowns
actions.cds_cleave_san+=/dark_transformation,if=buff.death_and_decay.up&(talent.apocalypse&pet.apoc_ghoul.active|!talent.apocalypse)|boss&fight_remains<20|active_enemies>1&raid_event.adds.remains<20
actions.cds_cleave_san+=/unholy_assault,if=buff.dark_transformation.up&buff.dark_transformation.remains<12|boss&fight_remains<20|active_enemies>1&raid_event.adds.remains<20
actions.cds_cleave_san+=/apocalypse,cycle_targets=1
actions.cds_cleave_san+=/outbreak,cycle_targets=1,if=(dot.virulent_plague.refreshable|talent.morbidity&buff.infliction_of_sorrow.up&talent.superstrain&dot.frost_fever.refreshable&dot.blood_plague.refreshable)&(!talent.unholy_blight|talent.unholy_blight&cooldown.dark_transformation.remains>6)&(!talent.raise_abomination|talent.raise_abomination&cooldown.raise_abomination.remains>5)
## [Syrif] This line may be changed soon
actions.cds_cleave_san+=/abomination_limb,if=!buff.gift_of_the_sanlayn.up&!buff.sudden_doom.react&buff.festermight.up&debuff.festering_wound.stack<=2|!buff.gift_of_the_sanlayn.up&boss&fight_remains<12
# San'layn Cooldowns
actions.cds_san+=/dark_transformation,if=variable.st_planning&(talent.apocalypse&pet.apoc_ghoul.active|!talent.apocalypse)|boss&fight_remains<20
actions.cds_san+=/unholy_assault,if=variable.st_planning&(buff.dark_transformation.up&buff.dark_transformation.remains<12)|boss&fight_remains<20
actions.cds_san+=/apocalypse,if=variable.st_planning|boss&fight_remains<20
actions.cds_san+=/outbreak,cycle_targets=1,if=target.time_to_die>dot.virulent_plague.remains&dot.virulent_plague.ticks_remain<5&(dot.virulent_plague.refreshable|talent.morbidity&buff.infliction_of_sorrow.up&talent.superstrain&dot.frost_fever.refreshable&dot.blood_plague.refreshable)&(!talent.unholy_blight|talent.unholy_blight&cooldown.dark_transformation.remains)&(!talent.raise_abomination|talent.raise_abomination&cooldown.raise_abomination.remains)
actions.cds_san+=/abomination_limb,if=variable.st_planning&!buff.gift_of_the_sanlayn.up&!buff.sudden_doom.up&buff.festermight.up&debuff.festering_wound.stack<=2|!buff.gift_of_the_sanlayn.up&fight_remains<12
## Cleave
actions.cleave+=/any_dnd,if=!death_and_decay.ticking&variable.adds_remain&(cooldown.apocalypse.remains|!talent.apocalypse)
actions.cleave+=/death_coil,if=!variable.pooling_runic_power&talent.improved_death_coil
actions.cleave+=/wound_spender,if=buff.vampiric_strike.up
actions.cleave+=/death_coil,if=!variable.pooling_runic_power&!talent.improved_death_coil
actions.cleave+=/festering_strike,cycle_targets=1,if=buff.vampiric_strike.down&!variable.pop_wounds&debuff.festering_wound.stack<2|buff.festering_scythe.react
actions.cleave+=/festering_strike,cycle_targets=1,if=buff.vampiric_strike.down&cooldown.apocalypse.remains<variable.apoc_timing&debuff.festering_wound.down
actions.cleave+=/wound_spender,if=variable.pop_wounds
## San'layn Fishing
actions.san_fishing+=/antimagic_shell,if=death_knight.ams_absorb_percent>0&runic_power<40
actions.san_fishing+=/wound_spender,if=buff.infliction_of_sorrow.up
actions.san_fishing+=/any_dnd,if=!buff.death_and_decay.up&!buff.vampiric_strike.up
actions.san_fishing+=/death_coil,if=buff.sudden_doom.up&talent.doomed_bidding|set_bonus.tww2_4pc&buff.essence_of_the_blood_queen.at_max_stacks&talent.frenzied_bloodthirst&!buff.vampiric_strike.up
actions.san_fishing+=/soul_reaper,if=target.health.pct<=35&target.time_to_die>5
actions.san_fishing+=/death_coil,if=!buff.vampiric_strike.up
actions.san_fishing+=/wound_spender,if=(debuff.festering_wound.stack>=3-pet.abomination.active&cooldown.apocalypse.remains>variable.apoc_timing)|buff.vampiric_strike.up
actions.san_fishing+=/festering_strike,if=debuff.festering_wound.stack<3-pet.abomination.active
## Single Target San'layn
actions.san_st+=/any_dnd,if=!death_and_decay.ticking&talent.unholy_ground&cooldown.dark_transformation.remains<5
actions.san_st+=/wound_spender,if=buff.infliction_of_sorrow.up
actions.san_st+=/death_coil,if=buff.sudden_doom.up&buff.gift_of_the_sanlayn.remains&(talent.doomed_bidding|talent.rotten_touch)|rune<3&!buff.runic_corruption.up|set_bonus.tww2_4pc&runic_power>80|buff.gift_of_the_sanlayn.up&buff.essence_of_the_blood_queen.at_max_stacks&talent.frenzied_bloodthirst&set_bonus.tww2_4pc&buff.winning_streak_unholy.at_max_stacks&rune<=3&buff.essence_of_the_blood_queen.remains>3
actions.san_st+=/wound_spender,if=buff.vampiric_strike.up&debuff.festering_wound.up|buff.gift_of_the_sanlayn.up|talent.gift_of_the_sanlayn&buff.dark_transformation.up&buff.dark_transformation.remains<gcd
actions.san_st+=/soul_reaper,if=target.health.pct<=35&!buff.gift_of_the_sanlayn.up&target.time_to_die>5
actions.san_st+=/festering_strike,if=(debuff.festering_wound.stack=0&cooldown.apocalypse.remains<variable.apoc_timing)|(talent.gift_of_the_sanlayn&!buff.gift_of_the_sanlayn.up|!talent.gift_of_the_sanlayn)&(buff.festering_scythe.up|debuff.festering_wound.stack<=1)
actions.san_st+=/wound_spender,if=(!talent.apocalypse|cooldown.apocalypse.remains>variable.apoc_timing)&(debuff.festering_wound.stack>=3-pet.abomination.active|buff.vampiric_strike.up)
actions.san_st+=/death_coil,if=!variable.pooling_runic_power&debuff.death_rot.remains<gcd|(buff.sudden_doom.up&debuff.festering_wound.up|rune<2)
actions.san_st+=/wound_spender,if=debuff.festering_wound.stack>4
actions.san_st+=/death_coil,if=!variable.pooling_runic_power
## Trinkets San'layn
actions.san_trinkets+=/use_item,name=fyralath_the_dreamrender,if=dot.mark_of_fyralath.ticking&(active_enemies<5|active_enemies>21|boss&fight_remains<4)&(pet.abomination.active|pet.army_ghoul.active|!talent.raise_abomination&!talent.army_of_the_dead|time>15)
## actions.san_trinkets+=/do_treacherous_transmitter_task,use_off_gcd=1,if=buff.errant_manaforge_emission.up&buff.dark_transformation.up&buff.errant_manaforge_emission.remains<2|buff.cryptic_instructions.up&buff.dark_transformation.up&buff.cryptic_instructions.remains<2|buff.realigning_nexus_convergence_divergence.up&buff.dark_transformation.up&buff.realigning_nexus_convergence_divergence.remains<2
actions.san_trinkets+=/use_item,name=treacherous_transmitter,if=(active_enemies>1|active_enemies=1)&cooldown.dark_transformation.remains<10
actions.san_trinkets+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&(buff.dark_transformation.up&buff.dark_transformation.remains<variable.trinket_1_duration*0.73&(variable.trinket_priority=1|trinket.2.cooldown.remains|!trinket.2.has_cooldown))|variable.trinket_1_duration>=fight_remains&boss
actions.san_trinkets+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&(buff.dark_transformation.up&buff.dark_transformation.remains<variable.trinket_2_duration*0.73&(variable.trinket_priority=2|trinket.1.cooldown.remains|!trinket.1.has_cooldown))|variable.trinket_2_duration>=fight_remains&boss
actions.san_trinkets+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.1.cast_time>0&!buff.gift_of_the_sanlayn.up|!trinket.1.cast_time>0)&(variable.damage_trinket_priority=1|trinket.2.cooldown.remains|!trinket.2.has_cooldown|!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination|!talent.summon_gargoyle&talent.army_of_the_dead&(!talent.raise_abomination&cooldown.army_of_the_dead.remains>20|talent.raise_abomination&cooldown.raise_abomination.remains>20)|!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination&cooldown.dark_transformation.remains>20|talent.summon_gargoyle&cooldown.summon_gargoyle.remains>20&!pet.gargoyle.active)|boss&fight_remains<15
actions.san_trinkets+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.2.cast_time>0&!buff.gift_of_the_sanlayn.up|!trinket.2.cast_time>0)&(variable.damage_trinket_priority=2|trinket.1.cooldown.remains|!trinket.1.has_cooldown|!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination|!talent.summon_gargoyle&talent.army_of_the_dead&(!talent.raise_abomination&cooldown.army_of_the_dead.remains>20|talent.raise_abomination&cooldown.raise_abomination.remains>20)|!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination&cooldown.dark_transformation.remains>20|talent.summon_gargoyle&cooldown.summon_gargoyle.remains>20&!pet.gargoyle.active)|boss&fight_remains<15
actions.san_trinkets+=/use_item,slot=main_hand,if=(!variable.trinket_1_buffs&!variable.trinket_2_buffs|trinket.1.cooldown.remains>20&!variable.trinket_2_buffs|trinket.2.cooldown.remains>20&!variable.trinket_1_buffs|trinket.1.cooldown.remains>20&trinket.2.cooldown.remains>20)&(buff.dark_transformation.up&buff.dark_transformation.remains>10)&(!talent.raise_abomination&!talent.army_of_the_dead|!talent.raise_abomination&talent.army_of_the_dead&pet.army_ghoul.active|talent.raise_abomination&pet.abomination.active|(variable.trinket_1_buffs|variable.trinket_2_buffs|boss&fight_remains<15))
## Single Target Non-San'layn
actions.st+=/soul_reaper,if=target.health.pct<=35&target.time_to_die>5
actions.st+=/wound_spender,if=debuff.chains_of_ice_trollbane_slow.up
actions.st+=/any_dnd,if=talent.unholy_ground&!buff.death_and_decay.up&(pet.apoc_ghoul.active|pet.abomination.active|pet.gargoyle.active)
actions.st+=/death_coil,if=!variable.pooling_runic_power&variable.spend_rp|fight_remains<10
actions.st+=/festering_strike,if=debuff.festering_wound.stack<4&(!variable.pop_wounds|buff.festering_scythe.up)
actions.st+=/wound_spender,if=variable.pop_wounds
actions.st+=/death_coil,if=!variable.pooling_runic_power
actions.st+=/wound_spender,if=!variable.pop_wounds&debuff.festering_wound.stack>=4
## Trinkets Non-San'layn
actions.trinkets+=/use_item,name=fyralath_the_dreamrender,if=dot.mark_of_fyralath.ticking&(active_enemies<5|active_enemies>21|boss&fight_remains<4)&(pet.abomination.active|pet.army_ghoul.active|!talent.raise_abomination&!talent.army_of_the_dead|time>15)
## actions.trinkets+=/do_treacherous_transmitter_task,use_off_gcd=1,if=buff.errant_manaforge_emission.up&(pet.apoc_ghoul.active|!talent.apocalypse&buff.dark_transformation.up)|buff.cryptic_instructions.up&(pet.apoc_ghoul.active|!talent.apocalypse&buff.dark_transformation.up)|buff.realigning_nexus_convergence_divergence.up&(pet.apoc_ghoul.active|!talent.apocalypse&buff.dark_transformation.up)
actions.trinkets+=/use_item,name=treacherous_transmitter,if=(active_enemies>1|active_enemies=1)&cooldown.dark_transformation.remains<10
actions.trinkets+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&(variable.trinket_priority=1|!trinket.2.has_cooldown|trinket.2.cooldown.remains>20&(!talent.apocalypse&buff.dark_transformation.up|pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=variable.trinket_1_duration&pet.apoc_ghoul.remains>5))&(talent.army_of_the_dead&!talent.raise_abomination&pet.army_ghoul.active&pet.army_ghoul.remains<=variable.trinket_1_duration&pet.army_ghoul.remains>10|talent.raise_abomination&pet.abomination.active&pet.abomination.remains<=variable.trinket_1_duration&pet.abomination.remains>10|talent.apocalypse&pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=variable.trinket_1_duration+3&pet.apoc_ghoul.remains>5|!talent.raise_abomination&!talent.apocalypse&buff.dark_transformation.up|trinket.2.cooldown.remains)|fight_remains<=variable.trinket_1_duration&boss
actions.trinkets+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&(variable.trinket_priority=2|!trinket.1.has_cooldown|trinket.1.cooldown.remains>20&(!talent.apocalypse&buff.dark_transformation.up|pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=variable.trinket_2_duration&pet.apoc_ghoul.remains>5))&(talent.army_of_the_dead&!talent.raise_abomination&pet.army_ghoul.active&pet.army_ghoul.remains<=variable.trinket_2_duration&pet.army_ghoul.remains>10|talent.raise_abomination&pet.abomination.active&pet.abomination.remains<=variable.trinket_2_duration&pet.abomination.remains>10|talent.apocalypse&pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=variable.trinket_2_duration+3&pet.apoc_ghoul.remains>5|!talent.raise_abomination&!talent.apocalypse&buff.dark_transformation.up|trinket.1.cooldown.remains)|fight_remains<=variable.trinket_2_duration&boss
actions.trinkets+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&(variable.damage_trinket_priority=1|trinket.2.cooldown.remains|!trinket.2.has_cooldown|!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination|!talent.summon_gargoyle&talent.army_of_the_dead&(!talent.raise_abomination&cooldown.army_of_the_dead.remains>20|talent.raise_abomination&cooldown.raise_abomination.remains>20)|!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination&cooldown.dark_transformation.remains>20|talent.summon_gargoyle&cooldown.summon_gargoyle.remains>20&!pet.gargoyle.active)|boss&fight_remains<15
actions.trinkets+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&(variable.damage_trinket_priority=2|trinket.1.cooldown.remains|!trinket.1.has_cooldown|!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination|!talent.summon_gargoyle&talent.army_of_the_dead&(!talent.raise_abomination&cooldown.army_of_the_dead.remains>20|talent.raise_abomination&cooldown.raise_abomination.remains>20)|!talent.summon_gargoyle&!talent.army_of_the_dead&!talent.raise_abomination&cooldown.dark_transformation.remains>20|talent.summon_gargoyle&cooldown.summon_gargoyle.remains>20&!pet.gargoyle.active)|boss&fight_remains<15
actions.trinkets+=/use_item,slot=main_hand,if=(!variable.trinket_1_buffs&!variable.trinket_2_buffs|trinket.1.cooldown.remains&!variable.trinket_2_buffs|trinket.2.cooldown.remains&!variable.trinket_1_buffs|trinket.1.cooldown.remains&trinket.2.cooldown.remains)&(pet.apoc_ghoul.active&pet.apoc_ghoul.remains<=18|!talent.apocalypse&buff.dark_transformation.up)&((trinket.1.cooldown.duration=90|trinket.2.cooldown.duration=90)|!talent.raise_abomination&!talent.army_of_the_dead|!talent.raise_abomination&talent.army_of_the_dead&pet.army_ghoul.active|talent.raise_abomination&pet.abomination.active)