Cogspark Works · Rotation
Affliction Warlock
The priority list SimulationCraft plays this spec with · engine build 20261019-1860cd1-w8a2c73d · game data 12.1.5.70448
§1How to read this
A rotation in SimulationCraft is a priority list, not a sequence. Every time the character can act, the sim starts at the top of The main loop and does the first line whose conditions hold. Lower lines only happen when nothing above them fits.
- The page shows the list as a decision tree: set what you know about the fight and your talents, and it lights the lists the sim checks, in order.
- Cast lines use the ability. Hover, focus or tap an icon or a name for its tooltip.
- Go through another list: its lines are checked in order; when none of them fits, the sim comes back and carries on with the next line here.
- Switch to another list: the rest of this list is skipped and the choice is made from that list alone.
- Helpers are values the list works out on the spot, such as “are we holding a cooldown”. Setting one takes no time and the list carries on. The tree works out the ones your situation settles.
The list is written to perform well in the sim, not to be the only right way to play. Every line keeps its original simc text under the simc toggle at its right, and the list author’s note where there is one.
§2Decision tree
Set what you know. The tree lights the lists the sim checks, top to bottom; in each list it presses the first ability whose conditions hold and that is ready. Readiness (cooldowns, resources) isn’t in the list, so a lit ability is the first one allowed, not a promise it is cast.
- The main loop
- Helpers
- End of fight
- Ogcd
- Items
- Soul harvester (maybe)
- SH st (maybe)
- SH cleave (maybe)
- SH AoE (maybe)
- Hellcaller (maybe)
- HC st (maybe)
- HC cleave (maybe)
- HC AoE (maybe)
Before the pull, done once before the fight starts (8 steps)
Before the pull8 lines
- Cast Summon Pet
simc
summon_pet - Set trinket 1 buffs to true when the following holds, otherwise falseall of these:
- any of these:
- trinket 1 can grant Intellect
- trinket 1 can grant Mastery
- trinket 1 can grant Versatility
- trinket 1 can grant Haste
- trinket 1 can grant Critical Strike
- trinket 1 is Signet of the Priory
- trinket 1's cooldown is at least 20 s
simc
variable,name=trinket_1_buffs,value=(trinket.1.has_buff.intellect|trinket.1.has_buff.mastery|trinket.1.has_buff.versatility|trinket.1.has_buff.haste|trinket.1.has_buff.crit|trinket.1.is.signet_of_the_priory)&(trinket.1.cooldown.duration>=20) - any of these:
- Set trinket 2 buffs to true when the following holds, otherwise falseall of these:
- any of these:
- trinket 2 can grant Intellect
- trinket 2 can grant Mastery
- trinket 2 can grant Versatility
- trinket 2 can grant Haste
- trinket 2 can grant Critical Strike
- trinket 2 is Signet of the Priory
- trinket 2's cooldown is at least 20 s
simc
variable,name=trinket_2_buffs,value=(trinket.2.has_buff.intellect|trinket.2.has_buff.mastery|trinket.2.has_buff.versatility|trinket.2.has_buff.haste|trinket.2.has_buff.crit|trinket.2.is.signet_of_the_priory)&(trinket.2.cooldown.duration>=20) - any of these:
- Record your stats before the pull (sim bookkeeping)
simc
snapshot_stats - Cast Grimoire of Sacrifice if you have Grimoire of Sacrifice talented
simc
grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice - Cast Seed of Corruption if (you use the Soul Harvester hero talents and there is more than one enemy) or there are more than 2 enemies
simc
seed_of_corruption,if=(hero_tree.soul_harvester&active_enemies>1)|active_enemies>2 - Cast Haunt if there are fewer than 2 enemies or (you use the Hellcaller hero talents and there are fewer than 3 enemies)
simc
haunt,if=active_enemies<2|(hero_tree.hellcaller&active_enemies<3) - Drink a potion if your potion is Liquid Luster
simc
potion,if=potion.liquid_luster
The main loop9 lines
go through Helpers, then carry on below if nothing there fits
simc
call_action_list,name=variablesHelpers5 lines
- Set cds active to true when the following holds, otherwise falseany of these:
- you don't have Summon Darkglare talented
- your Darkglare is out
simc
variable,name=cds_active,op=set,value=!talent.summon_darkglare|pet.darkglare.remains - Set darkglare active to true when the following holds, otherwise falseany of these:
- your Darkglare is out
- Summon Darkglare's cooldown minus the cooldown left on Summon Darkglare is less than 20 s
simc
variable,name=darkglare_active,op=set,value=pet.darkglare.active|(cooldown.summon_darkglare.duration-cooldown.summon_darkglare.remains)<20 - Set min agony to the smaller of itself and the time left on Agony plus (99 if Agony isn't on the target, else 0)Worked out across every enemy
simc
cycling_variable,name=min_agony,op=min,value=dot.agony.remains+(99*!dot.agony.remains) - Set malevolence from cast to 01 if Malevolence is active, else 0 is 0
simc
variable,name=malevolence_from_cast,value=0,op=set,if=buff.malevolence.up=0 - Set malevolence from cast to 1your last spell on the global cooldown was Malevolence
simc
variable,name=malevolence_from_cast,value=1,op=set,if=prev_gcd.1.malevolence
go through End of fight, then carry on below if nothing there fits
simc
call_action_list,name=end_of_fightEnd of fight4 lines
- Cast Unstable Affliction if you have at least one Soul Shard and the fight ends within 8 s and there are fewer than 3 enemies
simc
unstable_affliction,if=soul_shard&fight_remains<8&active_enemies<3 - Cast Seed of Corruption if you have at least one Soul Shard and the fight ends within 8 s and there are more than 2 enemies
simc
seed_of_corruption,if=soul_shard&fight_remains<8&active_enemies>2 - Cast Drain Soul if Nightfall is active and you've had time to react to it and the fight ends within 5 s
simc
drain_soul,if=buff.nightfall.react&fight_remains<5 - Cast Shadow Bolt if Nightfall is active and you've had time to react to it and the fight ends within 5 s
simc
shadow_bolt,if=buff.nightfall.react&fight_remains<5
go through Ogcd, then carry on below if nothing there fits
simc
call_action_list,name=ogcdOgcd6 lines
- Drink a potion if cds active is true or the fight ends within 32 sUsed without waiting for the global cooldown
simc
potion,use_off_gcd=1,if=variable.cds_active|fight_remains<32 - Get Power Infusion from an ally if cds active is true or the fight ends within 16 s
simc
invoke_external_buff,name=power_infusion,if=variable.cds_active|fight_remains<16 - Cast Berserking if cds active is true or the fight ends within 14 sUsed without waiting for the global cooldown
simc
berserking,use_off_gcd=1,if=variable.cds_active|fight_remains<14 - Cast Blood Fury if cds active is true or the fight ends within 17 sUsed without waiting for the global cooldown
simc
blood_fury,use_off_gcd=1,if=variable.cds_active|fight_remains<17 - Cast Fireblood if cds active is true or the fight ends within 10 sUsed without waiting for the global cooldown
simc
fireblood,use_off_gcd=1,if=variable.cds_active|fight_remains<10 - Cast Ancestral Call if cds active is true or the fight ends within 17 sUsed without waiting for the global cooldown
simc
ancestral_call,use_off_gcd=1,if=variable.cds_active|fight_remains<17
go through Items, then carry on below if nothing there fits
simc
call_action_list,name=itemsItems5 lines
- Use Stormbound Emblem of Dazar if Summon Darkglare comes off cooldown within 4 s and Agony is on the target and (Corruption is on the target or Wither is on the target) and Dark Harvest has more than 1 s of cooldown left
simc
use_item,name=stormbound_emblem_of_dazar,if=cooldown.summon_darkglare.remains<=4&dot.agony.remains&(dot.corruption.remains|dot.wither.remains)&cooldown.dark_harvest.remains>1 - Use Galactic Gladiators Badge of Ferocity if Malevolence is active or your Darkglare is out or the fight ends within 20 s
simc
use_item,name=galactic_gladiators_badge_of_ferocity,if=(buff.malevolence.up|pet.darkglare.active)|fight_remains<20 - Use Hex Lords Dooming Idol if your Darkglare is out or Hex Lord's Doom has more than 19 stacks or the fight ends within 30 s
simc
use_item,name=hex_lords_dooming_idol,if=pet.darkglare.active|buff.hex_lords_doom.stack>19|fight_remains<=30 - Use your trinkets if Malevolence is active or your Darkglare is out or the fight ends within 20 s
simc
use_items,if=(buff.malevolence.up|pet.darkglare.active)|fight_remains<20 - Use the item in your main hand slotUsed without waiting for the global cooldown
simc
use_item,use_off_gcd=1,slot=main_hand
Is it true that you use the Soul Harvester hero talents?Not set
If so, go through Soul harvester, then carry on below if nothing there fits
simc
call_action_list,name=soul_harvester,if=hero_tree.soul_harvesterIs it true that you use the Hellcaller hero talents?Not set
If so, go through Hellcaller, then carry on below if nothing there fits
simc
call_action_list,name=hellcaller,if=hero_tree.hellcaller- Cast Malefic Grasp if your Darkglare is outRecast it on its last tick to keep the channel goingRecast it early to keep the channel going when Nightfall is active and you've had time to react to it
simc
malefic_grasp,chain=1,early_chain_if=buff.nightfall.react,if=pet.darkglare.active - Cast Drain SoulStop channeling when the time between Drain Soul's ticks is more than 0.5 s and something higher in the list is readyRecast it on its last tick to keep the channel goingRecast it early to keep the channel going when Nightfall is active and you've had time to react to it
simc
drain_soul,chain=1,early_chain_if=buff.nightfall.react,interrupt_if=tick_time>0.5 - Cast Shadow Bolt
simc
shadow_bolt
Read from ActionPriorityLists/default/warlock_affliction.simc in simulationcraft/simc at 1860cd1d5763, the commit this engine build runs.
Blizzard’s own suggestion system (the one-button rotation), as simc carries it. It is simpler than SimulationCraft’s list and is not what Cogspark simulates.
§2Decision tree
Set what you know. The tree lights the lists the sim checks, top to bottom; in each list it presses the first ability whose conditions hold and that is ready. Readiness (cooldowns, resources) isn’t in the list, so a lit ability is the first one allowed, not a promise it is cast.
- The main loop
- Cooldowns
- Assisted Combat
Before the pull, done once before the fight starts (5 steps)
Before the pull5 lines
- Record your stats before the pull (sim bookkeeping)
simc
snapshot_stats - Cast Summon Pet
simc
summon_pet - Cast Grimoire of Sacrifice if you have Grimoire of Sacrifice talented
simc
grimoire_of_sacrifice,if=talent.grimoire_of_sacrifice.enabled - Cast Haunt
simc
haunt - Cast Unstable Affliction
simc
unstable_affliction
The main loop2 lines
go through Cooldowns, then carry on below if nothing there fits
simc
call_action_list,name=cooldownsCooldowns7 lines
- Drink a potionSome cooldowns are not used by the Assisted Combat system. This simple default cooldown usage has been provided by simc.
simc
potion - Cast Blood Fury
simc
blood_fury - Cast Berserking
simc
berserking - Cast Fireblood
simc
fireblood - Cast Ancestral Call
simc
ancestral_call - Use your trinkets
simc
use_items - Cast Summon Darkglare
simc
summon_darkglare
go through Assisted Combat, then carry on below if nothing there fits
simc
call_action_list,name=assisted_combatAssisted Combat25 lines
- Cast Grimoire of Sacrifice if you have a pet out and Grimoire of Sacrifice isn't activeThis is the default action priority list from the game's Assisted Combat system.
simc
grimoire_of_sacrifice,if=pet.any.active&buff.grimoire_of_sacrifice.down - Cast Agony if Agony has at most 4 s left on the target, or isn't on it
simc
agony,if=dot.agony.remains<=4 - Cast Seed of Corruption if there are more than 3 enemies and Corruption isn't on the target and you don't have Wither talented and Seed of Corruption isn't on the target and Seed of Corruption Is Out [DNT] isn't active
simc
seed_of_corruption,if=active_enemies>3&!dot.corruption.ticking&!talent.wither&!dot.seed_of_corruption.ticking&buff.seed_of_corruption_is_out_dnt.down - Cast Seed of Corruption if there are more than 3 enemies and Wither isn't on the target and you have Wither talented and Seed of Corruption isn't on the target and Seed of Corruption Is Out [DNT] isn't active
simc
seed_of_corruption,if=active_enemies>3&!dot.wither.ticking&talent.wither&!dot.seed_of_corruption.ticking&buff.seed_of_corruption_is_out_dnt.down - Cast Wither if Corruption isn't on the target and you don't have Wither talented and Seed of Corruption isn't on the target and Seed of Corruption Is Out [DNT] isn't active
simc
wither,if=!dot.corruption.ticking&!talent.wither&!dot.seed_of_corruption.ticking&buff.seed_of_corruption_is_out_dnt.down - Cast Corruption if Corruption isn't on the target and you don't have Wither talented and Seed of Corruption isn't on the target and Seed of Corruption Is Out [DNT] isn't active
simc
corruption,if=!dot.corruption.ticking&!talent.wither&!dot.seed_of_corruption.ticking&buff.seed_of_corruption_is_out_dnt.down - Cast Wither if Wither isn't on the target and you have Wither talented and Seed of Corruption isn't on the target and Seed of Corruption Is Out [DNT] isn't active
simc
wither,if=!dot.wither.ticking&talent.wither&!dot.seed_of_corruption.ticking&buff.seed_of_corruption_is_out_dnt.down - Cast Corruption if Wither isn't on the target and you have Wither talented and Seed of Corruption isn't on the target and Seed of Corruption Is Out [DNT] isn't active
simc
corruption,if=!dot.wither.ticking&talent.wither&!dot.seed_of_corruption.ticking&buff.seed_of_corruption_is_out_dnt.down - Cast Agony if Agony isn't on the target
simc
agony,if=!dot.agony.ticking - Cast Unstable Affliction if you have 5 or more Soul Shards
simc
unstable_affliction,if=soul_shard>=5 - Cast Infernal Bolt if Nightfall has 2 or more stacks
simc
infernal_bolt,if=buff.nightfall.stack>=2 - Cast Shadow Bolt if Nightfall has 2 or more stacks
simc
shadow_bolt,if=buff.nightfall.stack>=2 - Cast Infernal Bolt if Nightfall is active and Nightfall has at most 3 s left, or isn't active
simc
infernal_bolt,if=buff.nightfall.up&buff.nightfall.remains<=3 - Cast Shadow Bolt if Nightfall is active and Nightfall has at most 3 s left, or isn't active
simc
shadow_bolt,if=buff.nightfall.up&buff.nightfall.remains<=3 - Cast Haunt
simc
haunt - Cast Malevolence
simc
malevolence - Cast Dark Harvest
simc
dark_harvest - Cast Unstable Affliction if Shard Instability is active
simc
unstable_affliction,if=buff.shard_instability.up - Cast Unstable Affliction if you have 2 or more Soul Shards
simc
unstable_affliction,if=soul_shard>=2,cooldown_allow_casting_success=1 - Cast Unstable Affliction
simc
unstable_affliction - Cast Summon DarkglareThis is for Blizzard automation and is not included in the game's Assisted Combat system.
simc
summon_darkglare - Cast Infernal Bolt
simc
infernal_bolt,cooldown_allow_casting_success=1 - Cast Shadow Bolt
simc
shadow_bolt,cooldown_allow_casting_success=1 - Cast Infernal Bolt
simc
infernal_bolt - Cast Shadow Bolt
simc
shadow_bolt
Read from ActionPriorityLists/assisted_combat/warlock_affliction.simc in simulationcraft/simc at 1860cd1d5763, the commit this engine build runs.