Cogspark Works · Rotation
Devourer Demon Hunter
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
- Cooldowns
- Reaps (maybe)
- Annihilator (maybe)
- Annihilator meta (maybe)
- Annihilator out (maybe)
- Voidscarred (maybe)
- Voidscarred meta (maybe)
- Voidscarred out (maybe)
- Voidscarred hunt entry (maybe)
Before the pull, done once before the fight starts (8 steps)
Before the pull8 lines
- Record your stats before the pull (sim bookkeeping)
simc
snapshot_stats - Set trinket 1 buffs to true when the following holds, otherwise falseany 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
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 - Set trinket 2 buffs to true when the following holds, otherwise falseany 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
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 - Set trinket priority to 2 when the following holds, otherwise to 1any of these:
- all of these:
- trinket 1 buffs is false
- trinket 2 buffs is true
- all of these:
- trinket 2 buffs is true
- trinket 2's stat buff's duration times trinket 2's stat buff's base value is more than trinket 1's stat buff's duration times trinket 1's stat buff's base value
simc
variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs|variable.trinket_2_buffs&((trinket.2.proc.any_dps.duration)*trinket.2.proc.any_dps.default_value)>((trinket.1.proc.any_dps.duration)*trinket.1.proc.any_dps.default_value) - all of these:
- Set damage trinket priority to 2 when the following holds, otherwise to 1all of these:
- trinket 1 buffs is false
- trinket 2 buffs is false
- trinket 2's item level is at least trinket 1's item level
simc
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 - Cast Arcane Torrent
simc
arcane_torrent - Cast Soul Immolation
simc
soul_immolation - Cast Consume
simc
consume
The main loop6 lines
- Switch your targettarget on the enemy with the highest time until the target diesAt most once every 0.25 s
simc
retarget,target_if=max:target.time_to_die,line_cd=0.25 go through Helpers, then carry on below if nothing there fits
simc
call_action_list,name=variablesHelpers2 lines
- Set voidfall dump to true when the following holds, otherwise falseall of these:
- Eradicate isn't active
- any of these:
- all of these:
- Voidfall Spending has 3 or more stacks
- your last spell on the global cooldown was Void Ray
- Voidfall Spending has 3 or more stacks (counting only what you've had time to react to)
- all of these:
simc
variable,name=voidfall_dump,op=set,value=!buff.eradicate.up&(buff.voidfall_spending.stack>=3&prev_gcd.1.void_ray|buff.voidfall_spending.react>=3) - Set no ray this window to true when the following holds, otherwise falsethe fight time when you last used Void Ray is less than the fight time when Metamorphosis last triggered
simc
variable,name=no_ray_this_window,op=set,value=action.void_ray.last_used<buff.metamorphosis.last_trigger
go through Cooldowns, then carry on below if nothing there fits
simc
call_action_list,name=cooldownsCooldowns8 lines
- Get Power Infusion from an ally if Metamorphosis is active and Power Infusion isn't active
simc
invoke_external_buff,name=power_infusion,if=buff.metamorphosis.up&!buff.power_infusion.up - Drink a potion if Metamorphosis is active or the fight ends within 30 s
simc
potion,if=buff.metamorphosis.up|fight_remains<=30 - Use your trinket 1 if (Metamorphosis is active and (no ray this window is true or you use the Annihilator hero talents) and (trinket 2 has no cooldown or trinket 2 is on cooldown or trinket priority is 1)) or trinket 1's stat buff's duration is at least the time left in the fight or the fight ends within trinket 1's stat buff's duration
simc
use_item,slot=trinket1,if=buff.metamorphosis.up&(variable.no_ray_this_window|hero_tree.annihilator)&(!trinket.2.has_cooldown|trinket.2.cooldown.remains|variable.trinket_priority=1)|trinket.1.proc.any_dps.duration>=fight_remains|fight_remains<=trinket.1.buff.any_dps.duration - Use your trinket 2 if (Metamorphosis is active and (no ray this window is true or you use the Annihilator hero talents) and (trinket 1 has no cooldown or trinket 1 is on cooldown or trinket priority is 2)) or trinket 2's stat buff's duration is at least the time left in the fight or the fight ends within trinket 2's stat buff's duration
simc
use_item,slot=trinket2,if=buff.metamorphosis.up&(variable.no_ray_this_window|hero_tree.annihilator)&(!trinket.1.has_cooldown|trinket.1.cooldown.remains|variable.trinket_priority=2)|trinket.2.proc.any_dps.duration>=fight_remains|fight_remains<=trinket.2.buff.any_dps.duration - Use your trinket 1 if trinket 1 buffs is false and (damage trinket priority is 1 or trinket 2 is on cooldown or trinket 2's cooldown is 0 s) and the time left on the global cooldown is more than 0.1 sUsed without waiting for the global cooldown
simc
use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&(variable.damage_trinket_priority=1|trinket.2.cooldown.remains|trinket.2.cooldown.duration=0)&gcd.remains>0.1 - Use your trinket 2 if trinket 2 buffs is false and (damage trinket priority is 2 or trinket 1 is on cooldown or trinket 1's cooldown is 0 s) and the time left on the global cooldown is more than 0.1 sUsed without waiting for the global cooldown
simc
use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&(variable.damage_trinket_priority=2|trinket.1.cooldown.remains|trinket.1.cooldown.duration=0)&gcd.remains>0.1 - Use your trinket 1 if trinket 1 buffs is false and (damage trinket priority is 1 or trinket 2 is on cooldown or trinket 2's cooldown is 0 s)
simc
use_item,slot=trinket1,if=!variable.trinket_1_buffs&(variable.damage_trinket_priority=1|trinket.2.cooldown.remains|trinket.2.cooldown.duration=0) - Use your trinket 2 if trinket 2 buffs is false and (damage trinket priority is 2 or trinket 1 is on cooldown or trinket 1's cooldown is 0 s)
simc
use_item,slot=trinket2,if=!variable.trinket_2_buffs&(variable.damage_trinket_priority=2|trinket.1.cooldown.remains|trinket.1.cooldown.duration=0)
Is it true that the target dies within 4 s and the Soul Fragments Reap would consume is at least 1 and Soulburst isn't active?Not set
If so, go through Reaps, then carry on below if nothing there fits
simc
call_action_list,name=reaps,if=target.time_to_die<=4&action.reap.souls_consumed>=1&!buff.soulburst.upIs it true that you use the Annihilator hero talents?Not set
If so, switch to Annihilator, and nothing below is checked
simc
run_action_list,name=annihilator,if=hero_tree.annihilatorAnnihilator2 lines
Is it true that Metamorphosis is active?Not set
If so, switch to Annihilator meta, and nothing below is checked
simc
run_action_list,name=annihilator_meta,if=buff.metamorphosis.upAnnihilator meta14 lines
- Cast Pick Up Fragment if Reap is on cooldown and ((you have Eradicate talented and the target dies within 15 s) or (your Soul Fragments plus the stacks of Collapsing Star Stacking is at least 30 and Collapsing Star Stacking has fewer than 30 stacks))Used without waiting for the global cooldown
simc
pick_up_fragment,use_off_gcd=1,if=cooldown.reap.remains&(talent.eradicate&target.time_to_die<15|soul_fragments+buff.collapsing_star_stacking.stack>=30&buff.collapsing_star_stacking.stack<30) - Cast Devour if Soulburst is active and there is a single enemy
simc
devour,if=buff.soulburst.up&active_enemies=1 - Cast The Hunt if you have Devourer's Bite talented
simc
the_hunt,if=talent.devourers_bite - Cast Voidblade if you have Devourer's Bite talented and there are 3 or fewer enemies
simc
voidblade,if=talent.devourers_bite&active_enemies<=3 - Cast Collapsing Star if the fight ends within 10 s
simc
collapsing_star,if=fight_remains<10 - Cast Void Ray if you have Eradicate talented and there is more than one enemy and Eradicate isn't active
simc
void_ray,if=talent.eradicate&active_enemies>1&!buff.eradicate.up - Cast Collapsing Star if there is more than one enemy or Void Ray is on cooldown
simc
collapsing_star,if=active_enemies>1|cooldown.void_ray.remains Is it true that (there is a single enemy or Eradicate is active) and the Soul Fragments Reap would consume is at least 4?Not set
If so, go through Reaps, then carry on below if nothing there fits
simc
call_action_list,name=reaps,if=(active_enemies=1|buff.eradicate.up)&action.reap.souls_consumed>=4Is it true that you don't have Eradicate talented and the stacks of Collapsing Star Stacking plus the Soul Fragments Reap would consume is at least 30 and the Soul Fragments Reap would consume is at least 4?Not set
If so, go through Reaps, then carry on below if nothing there fits
simc
call_action_list,name=reaps,if=!talent.eradicate&buff.collapsing_star_stacking.stack+action.reap.souls_consumed>=30&action.reap.souls_consumed>=4- Cast Void Ray if there is more than one enemy or you have Eradicate talented or you have 100 or more Fury or you have less than 55 Fury
simc
void_ray,if=active_enemies>1|talent.eradicate|fury>=100|fury<55 Is it true that voidfall dump is true?Not set
If so, go through Reaps, then carry on below if nothing there fits
simc
call_action_list,name=reaps,if=variable.voidfall_dumpIs it true that the stacks of Collapsing Star Stacking plus the Soul Fragments Reap would consume is at least 30 and the Soul Fragments Reap would consume is at least 4 and the fight ends within 45 s?Not set
If so, go through Reaps, then carry on below if nothing there fits
simc
call_action_list,name=reaps,if=buff.collapsing_star_stacking.stack+action.reap.souls_consumed>=30&action.reap.souls_consumed>=4&fight_remains<45- Cast Soul Immolation if Soul Immolation isn't on any enemy and your Fury is less than
void_metamorphosis_base_drain_psand (Reap is on cooldown or there is a single enemy)simc
soul_immolation,if=active_dot.soul_immolation=0&fury<void_metamorphosis_base_drain_ps&(cooldown.reap.remains|active_enemies=1) - Cast Devour
simc
devour
switch to Annihilator out, and nothing below is checked
simc
run_action_list,name=annihilator_outAnnihilator out10 lines
- Cast Pick Up Fragment if Void Metamorphosis Stack isn't at maximum stacks and the stacks of Void Metamorphosis Stack is at least the maximum stacks of Void Metamorphosis Stack minus 2At most once every 0.6 sUsed without waiting for the global cooldown
simc
pick_up_fragment,mode=nearest,type=all,use_off_gcd=1,line_cd=0.6,if=!buff.void_metamorphosis_stack.at_max_stacks&buff.void_metamorphosis_stack.stack>=buff.void_metamorphosis_stack.max_stack-2 - Cast Voidblade if you have Devourer's Bite talented and there are 3 or fewer enemies and Void Metamorphosis Stack is at maximum stacks
simc
voidblade,if=talent.devourers_bite&active_enemies<=3&buff.void_metamorphosis_stack.at_max_stacks - Cast Metamorphosis
simc
metamorphosis - Cast Consume if Soulburst is active
simc
consume,if=buff.soulburst.up Is it true that (there is a single enemy or Eradicate is active) and the Soul Fragments Reap would consume is at least 4?Not set
If so, go through Reaps, then carry on below if nothing there fits
simc
call_action_list,name=reaps,if=(active_enemies=1|buff.eradicate.up)&action.reap.souls_consumed>=4Is it true that you don't have Eradicate talented and the Soul Fragments Reap would consume is at least 8?Not set
If so, go through Reaps, then carry on below if nothing there fits
simc
call_action_list,name=reaps,if=!talent.eradicate&action.reap.souls_consumed>=8- Cast Void Ray
simc
void_ray Is it true that voidfall dump is true?Not set
If so, go through Reaps, then carry on below if nothing there fits
simc
call_action_list,name=reaps,if=variable.voidfall_dump- Cast Soul Immolation if Soul Immolation isn't on any enemy and (there is more than one enemy or you have Eradicate talented)
simc
soul_immolation,if=active_dot.soul_immolation=0&(active_enemies>1|talent.eradicate) - Cast Consume
simc
consume
Is it true that you use the Voidscarred hero talents?Not set
If so, switch to Voidscarred, and nothing below is checked
simc
run_action_list,name=voidscarred,if=hero_tree.voidscarredVoidscarred2 lines
Is it true that Metamorphosis is active?Not set
If so, switch to Voidscarred meta, and nothing below is checked
simc
run_action_list,name=voidscarred_meta,if=buff.metamorphosis.upVoidscarred meta20 lines
- Cast Pick Up Fragment if Void Ray comes off cooldown within 2 global cooldowns and your Fury is less than
void_metamorphosis_base_drain_pstimes the cooldown left on Void RayAt most once every 0.35 sUsed without waiting for the global cooldownsimc
pick_up_fragment,mode=nearest,type=all,use_off_gcd=1,line_cd=0.35,if=cooldown.void_ray.remains<gcd.max*2&fury<void_metamorphosis_base_drain_ps*cooldown.void_ray.remains - Cast Vengeful Retreat if Voidstep is activeUsed without waiting for the global cooldown
simc
vengeful_retreat,use_off_gcd=1,if=buff.voidstep.up - Cast Void Ray if no ray this window is true and (you don't have Eradicate talented or there is a single enemy)
simc
void_ray,if=variable.no_ray_this_window&(!talent.eradicate|active_enemies=1) - Cast Eradicate if Void Ray comes off cooldown within one global cooldown and Soulburst isn't active
simc
eradicate,if=cooldown.void_ray.remains<gcd.max&!buff.soulburst.up - Cast Void Ray if you have Eradicate talented and Eradicate isn't active and (there is more than one enemy or you have less than 30 Fury)
simc
void_ray,if=talent.eradicate&!buff.eradicate.up&(active_enemies>1|fury<30) - Cast Reaper's Toll if there is more than one enemy and Hungering Slash has less than 2 global cooldowns left, or isn't active
simc
reapers_toll,if=active_enemies>1&buff.hungering_slash.remains<gcd.max*2 - Cast Predator's Wake if Collapsing Star is active
simc
predators_wake,if=buff.collapsing_star.up - Cast Reaper's Toll if you have Voidrush talented and Collapsing Star is active and Voidblade comes off cooldown within one global cooldown
simc
reapers_toll,if=talent.voidrush&buff.collapsing_star.up&cooldown.voidblade.remains<gcd.max - Cast Pierce the Veil if you have Voidrush talented and Collapsing Star is active
simc
pierce_the_veil,if=talent.voidrush&buff.collapsing_star.up - Cast Collapsing Star
simc
collapsing_star - Cast Devour if Soulburst is active
simc
devour,if=buff.soulburst.up - Cast Reaper's Toll if there are more than 3 enemies and your Fury is less than
void_metamorphosis_base_drain_pstimes the cooldown left on Void Raysimc
reapers_toll,if=active_enemies>3&fury<void_metamorphosis_base_drain_ps*cooldown.void_ray.remains - Cast Reaper's Toll if you have 8 or fewer Soul Fragments
simc
reapers_toll,if=soul_fragments<=8 - Cast Pierce the Veil if there are fewer than 4 enemies
simc
pierce_the_veil,if=active_enemies<4 - Cast Predator's Wake if Hungering Slash isn't active
simc
predators_wake,if=!buff.hungering_slash.up - Cast Pierce the Veil
simc
pierce_the_veil Is it true that the Soul Fragments Reap would consume is at least 4 plus (4 if (there is more than one enemy and Eradicate is active), else 0) and Soulburst isn't active?Not set
If so, go through Reaps, then carry on below if nothing there fits
simc
call_action_list,name=reaps,if=action.reap.souls_consumed>=4+4*(active_enemies>1&buff.eradicate.up)&!buff.soulburst.up- Cast Void Ray
simc
void_ray - Cast Soul Immolation if Soul Immolation isn't on any enemy and your Fury is less than
void_metamorphosis_base_drain_pssimc
soul_immolation,if=active_dot.soul_immolation=0&fury<void_metamorphosis_base_drain_ps - Cast Devour
simc
devour
switch to Voidscarred out, and nothing below is checked
simc
run_action_list,name=voidscarred_outVoidscarred out15 lines
- Cast Pick Up Fragment if Void Metamorphosis Stack isn't at maximum stacks and the stacks of Void Metamorphosis Stack is at least the maximum stacks of Void Metamorphosis Stack minus 3At most once every 0.3 sUsed without waiting for the global cooldown
simc
pick_up_fragment,mode=nearest,type=all,use_off_gcd=1,line_cd=0.3,if=!buff.void_metamorphosis_stack.at_max_stacks&buff.void_metamorphosis_stack.stack>=buff.void_metamorphosis_stack.max_stack-3 - Wait 0.05 s if Void Metamorphosis Stack isn't at maximum stacks and the stacks of Void Metamorphosis Stack is at least the maximum stacks of Void Metamorphosis Stack minus 1 and ((there is a single enemy and you have 1 or more Soul Fragments) or (there is more than one enemy and the time since the fight started minus the fight time when you last used Pick Up Fragment is less than 1.5 s))
simc
wait,sec=0.05,if=!buff.void_metamorphosis_stack.at_max_stacks&buff.void_metamorphosis_stack.stack>=buff.void_metamorphosis_stack.max_stack-1&(active_enemies=1&soul_fragments>=1|active_enemies>1&time-action.pick_up_fragment.last_used<1.5) - Cast Vengeful Retreat if Voidstep is activeUsed without waiting for the global cooldown
simc
vengeful_retreat,use_off_gcd=1,if=buff.voidstep.up - Cast Consume if Soulburst is active and (there is a single enemy or you have Eradicate talented or Soulburst has less than one global cooldown left, or isn't active)
simc
consume,if=buff.soulburst.up&(active_enemies=1|talent.eradicate|buff.soulburst.remains<gcd.max) Is it true that you have The Hunt talented and there is a single enemy and Void Metamorphosis Stack is at maximum stacks?Not set
If so, go through Voidscarred hunt entry, then carry on below if nothing there fits
simc
call_action_list,name=voidscarred_hunt_entry,if=talent.the_hunt&active_enemies=1&buff.void_metamorphosis_stack.at_max_stacks- Cast Voidblade if your last spell on the global cooldown was Void Ray and (there is more than one enemy or you don't have The Hunt talented or The Hunt is on cooldown)
simc
voidblade,if=prev_gcd.1.void_ray&(active_enemies>1|!talent.the_hunt|!cooldown.the_hunt.ready) - Cast Metamorphosis if Eradicate is active or you don't have Eradicate talented or there is a single enemy or the fight ends within 15 s
simc
metamorphosis,if=buff.eradicate.up|!talent.eradicate|active_enemies=1|fight_remains<15 - Cast Void Ray if you have Eradicate talented and there is more than one enemy and Eradicate isn't active
simc
void_ray,if=talent.eradicate&active_enemies>1&!buff.eradicate.up Is it true that you have less than 100 Fury and your Fury plus (4 times the Soul Fragments Reap would consume) plus (10 if you have Scythe's Embrace talented, else 0) is at least 100 and the Soul Fragments Reap would consume is at least 1 and Soulburst isn't active?Not set
If so, go through Reaps, then carry on below if nothing there fits
simc
call_action_list,name=reaps,if=fury<100&fury+4*action.reap.souls_consumed+10*talent.scythes_embrace>=100&action.reap.souls_consumed>=1&!buff.soulburst.up- Cast Hungering Slash
simc
hungering_slash - Cast Soul Immolation if there is more than one enemy and Soul Immolation isn't on any enemy
simc
soul_immolation,if=active_enemies>1&active_dot.soul_immolation=0 Is it true that the Soul Fragments Reap would consume is at least 4 plus (4 if (there is more than one enemy and Eradicate is active), else 0) and Soulburst isn't active?Not set
If so, go through Reaps, then carry on below if nothing there fits
simc
call_action_list,name=reaps,if=action.reap.souls_consumed>=4+4*(active_enemies>1&buff.eradicate.up)&!buff.soulburst.up- Cast Void Ray
simc
void_ray - Cast Soul Immolation if there is a single enemy and Soul Immolation isn't on any enemy
simc
soul_immolation,if=active_enemies=1&active_dot.soul_immolation=0 - Cast Consume
simc
consume
Read from ActionPriorityLists/default/demonhunter_devourer.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 (1 steps)
Before the pull1 line
- Record your stats before the pull (sim bookkeeping)
simc
snapshot_stats
The main loop3 lines
- Start auto-attacking
simc
auto_attack go through Cooldowns, then carry on below if nothing there fits
simc
call_action_list,name=cooldownsCooldowns6 lines
- Use your trinketsSome cooldowns are not used by the Assisted Combat system. This simple default cooldown usage has been provided by simc.
simc
use_items - Drink a potion
simc
potion - Cast Blood Fury
simc
blood_fury - Cast Berserking
simc
berserking - Cast Fireblood
simc
fireblood - Cast Ancestral Call
simc
ancestral_call
go through Assisted Combat, then carry on below if nothing there fits
simc
call_action_list,name=assisted_combatAssisted Combat11 lines
- Cast Metamorphosis if your distance to the target is at most 25 and Metamorphosis isn't activeThis is the default action priority list from the game's Assisted Combat system. This is for Blizzard automation and is not included in the game's Assisted Combat system.
simc
metamorphosis,if=target.distance<=25&buff.metamorphosis.down - Cast Metamorphosis if Collapsing Star is active and your distance to the target is at most 30
simc
metamorphosis,if=buff.collapsing_star.up&target.distance<=30 - Cast Void Ray if your distance to the target is at most 25 and Metamorphosis is active
simc
void_ray,if=target.distance<=25&buff.metamorphosis.up - Cast Reap if Moment of Craving is active and Stun would hit more than 0 enemies
simc
reap,if=buff.moment_of_craving.up&spell_targets.unknown_spell_25>0 - Cast Void Ray if your distance to the target is at most 30
simc
void_ray,if=target.distance<=30 - Cast The Hunt if Stun would hit more than 0 enemiesThis is for Blizzard automation and is not included in the game's Assisted Combat system.
simc
the_hunt,if=spell_targets.unknown_spell_25>0 - Cast Voidblade if Stun would hit more than 0 enemiesThis is for Blizzard automation and is not included in the game's Assisted Combat system.
simc
voidblade,if=spell_targets.unknown_spell_25>0 - Cast Immolation Aura if you don't have Spontaneous Immolation talented and
dot.soul_immolation.downsimc
immolation_aura,if=!talent.spontaneous_immolation&dot.soul_immolation.down - Cast Reap if Soul Fragments has 4 or more stacks
simc
reap,if=buff.soul_fragments.stack>=4 - Cast Consume
simc
consume
Read from ActionPriorityLists/assisted_combat/demonhunter_devourer.simc in simulationcraft/simc at 1860cd1d5763, the commit this engine build runs.