Cogspark

Cogspark Works · Rotation

Havoc 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.

Your situation
Enemies in range
  • trinket1 special: no · when never
  • trinket2 special: no · when never
Your talents (click: talented, not talented, not set)
Checked
  1. The main loop
  2. Items
Before the pull, done once before the fight starts (10 steps)

Before the pull10 lines

  1. Record your stats before the pull (sim bookkeeping)
    simcsnapshot_stats
  2. Reset tab target burning wound to its starting valuetab target burning wound starts each fight at 1
    simcvariable,name=tab_target_burning_wound,op=reset,default=1
  3. Reset rg ds to its starting valuerg ds starts each fight at 0
    simcvariable,name=rg_ds,default=0,op=reset
  4. Set trinket1 special to 0
    simcvariable,name=trinket1_special,value=0
  5. Set trinket2 special to 0
    simcvariable,name=trinket2_special,value=0
  6. Set trinket1 crit to true when the following holds, otherwise false
    all of these:
    • trinket1 special is false
    • trinket 1 has a cooldown
    • trinket 1 has an on-use effect that deals damage
    • trinket 1 isn't Font of Venomous Rage
    simcvariable,name=trinket1_crit,value=!variable.trinket1_special&trinket.1.has_cooldown&trinket.1.has_use_damage&!trinket.1.is.font_of_venomous_rage
  7. Set trinket2 crit to true when the following holds, otherwise false
    all of these:
    • trinket2 special is false
    • trinket 2 has a cooldown
    • trinket 2 has an on-use effect that deals damage
    • trinket 1 isn't Font of Venomous Rage
    simcvariable,name=trinket2_crit,value=!variable.trinket2_special&trinket.2.has_cooldown&trinket.2.has_use_damage&!trinket.1.is.font_of_venomous_rage
  8. Set trinket1 steroids to true when the following holds, otherwise false
    all of these:
    • trinket1 special is false
    • trinket 1 has a cooldown
    • trinket 1 has an on-use effect that grants a stat buff
    simcvariable,name=trinket1_steroids,value=!variable.trinket1_special&trinket.1.has_cooldown&trinket.1.has_use_buff
  9. Set trinket2 steroids to true when the following holds, otherwise false
    all of these:
    • trinket2 special is false
    • trinket 2 has a cooldown
    • trinket 2 has an on-use effect that grants a stat buff
    simcvariable,name=trinket2_steroids,value=!variable.trinket2_special&trinket.2.has_cooldown&trinket.2.has_use_buff
  10. Cast Immolation Aura
    simcimmolation_aura

The main loop30 lines

  1. Start auto-attacking
    simcauto_attack
  2. Switch your auto-attacks to this target if you have Burning Wound talented and the number of enemies with Burning Wound is less than the smaller of the number of enemies and 3 and tab target burning wound is truetarget on the enemy with the lowest time left on Burning Wound on the targetAt most once every 1 sDefault auto attack to spread Burning Wound, use tab_target_burning_wound=0 to spread with Throw Glaive instead
    simcretarget_auto_attack,line_cd=1,target_if=min:debuff.burning_wound.remains,if=talent.burning_wound&active_dot.burning_wound<(spell_targets>?3)&variable.tab_target_burning_wound
  3. Switch your auto-attacks to this target if you have Burning Wound talented and the number of enemies with Burning Wound is the smaller of the number of enemies and 3 and tab target burning wound is truetarget preferring an enemy where this doesn't hold: the target isn't a boss; otherwise any enemyAt most once every 1 s
    simcretarget_auto_attack,line_cd=1,target_if=min:!target.is_boss,if=talent.burning_wound&active_dot.burning_wound=(spell_targets>?3)&variable.tab_target_burning_wound
  4. Cast Immolation Aura if you have Violent Transformation talented and you have A Fire Inside talented and Metamorphosis comes off cooldown within 3 global cooldowns
    simcimmolation_aura,if=talent.violent_transformation&talent.a_fire_inside&cooldown.metamorphosis.remains<gcd.max*3
  5. Cast Metamorphosis if (you don't have Chaotic Transformation talented or (Blade Dance is on cooldown and Eye Beam has more than 8 s of cooldown left)) and Death Sweep can't trigger Demonsurge and Annihilation can't trigger Demonsurge
    simcmetamorphosis,if=(!talent.chaotic_transformation|!cooldown.blade_dance.up&cooldown.eye_beam.remains>8)&!action.death_sweep.demonsurge_available&!action.annihilation.demonsurge_available
  6. Cast The Hunt if (you don't have Eternal Hunt talented or (Eye Beam comes off cooldown within 10 s and Metamorphosis has more than 15 s of cooldown left) or (Eye Beam is on cooldown and Metamorphosis is off cooldown) or you don't use the Felscarred hero talents) and Reaver's Glaive isn't activeactions+=/metamorphosis,if=!talent.chaotic_transformation|!cooldown.blade_dance.up&!cooldown.eye_beam.up
    simcthe_hunt,if=(!talent.eternal_hunt|cooldown.eye_beam.remains<10&cooldown.metamorphosis.remains>15|!cooldown.eye_beam.up&cooldown.metamorphosis.up|!hero_tree.felscarred)&!buff.reavers_glaive.up
  7. Cast Vengeful Retreat if (the global cooldown ends within 0.3 s and Metamorphosis is on cooldown and Eye Beam comes off cooldown within 0.3 global cooldowns and Initiative isn't active) or (Metamorphosis is off cooldown and Eye Beam is on cooldown and Blade Dance is on cooldown and Eternal Hunt isn't active)Used without waiting for the global cooldown
    simcvengeful_retreat,use_off_gcd=1,if=gcd.remains<0.3&cooldown.metamorphosis.remains&cooldown.eye_beam.remains<gcd.max*0.3&!buff.initiative.up|cooldown.metamorphosis.up&cooldown.eye_beam.remains&cooldown.blade_dance.remains&!buff.eternal_hunt.up
  8. go through Items, then carry on below if nothing there fits

    simccall_action_list,name=items

    Items6 lines

    1. Drink a potion if (Metamorphosis is off cooldown and (Eye Beam is off cooldown or you don't have Chaotic Transformation talented)) or the fight ends within 30 sUsed without waiting for the global cooldown
      simcpotion,use_off_gcd=1,if=cooldown.metamorphosis.up&(cooldown.eye_beam.up|!talent.chaotic_transformation)|fight_remains<=30
    2. Use your trinket 1 if trinket1 steroids is true or the fight ends within 15 sUsed without waiting for the global cooldown
      simcuse_item,slot=trinket1,use_off_gcd=1,if=variable.trinket1_steroids&(!variable.trinket2_special|trinket.2.cooldown.remains>20)|fight_remains<15
    3. Use your trinket 1 if (trinket1 crit is true and (Initiative is active or you don't have Initiative talented)) or the fight ends within 15 sUsed without waiting for the global cooldown
      simcuse_item,slot=trinket1,use_off_gcd=1,if=variable.trinket1_crit&(buff.initiative.up|!talent.initiative)&(!variable.trinket2_special|trinket.2.cooldown.remains>20)|fight_remains<15
    4. Use Font of Venomous Rage if (Initiative is active and Initiative has more than 2 s left and (Metamorphosis isn't active or the fight ends within the time left on Metamorphosis) and Essence Break isn't active on the target) or the fight ends within 19 s
      simcuse_item,name=font_of_venomous_rage,if=buff.initiative.up&buff.initiative.remains>2&(!buff.metamorphosis.up|fight_remains<buff.metamorphosis.remains)&!debuff.essence_break.up|fight_remains<19
    5. Use your trinket 2 if trinket2 steroids is true or the fight ends within 15 sUsed without waiting for the global cooldown
      simcuse_item,slot=trinket2,use_off_gcd=1,if=variable.trinket2_steroids&(!variable.trinket1_special|trinket.1.cooldown.remains>20)|fight_remains<15
    6. Use your trinket 2 if (trinket2 crit is true and (Initiative is active or you don't have Initiative talented)) or the fight ends within 15 sUsed without waiting for the global cooldown
      simcuse_item,slot=trinket2,use_off_gcd=1,if=variable.trinket2_crit&(buff.initiative.up|!talent.initiative)&(!variable.trinket1_special|trinket.1.cooldown.remains>20)|fight_remains<15
  9. Cast Pick Up Fragment if you have 40 or less FuryUsed without waiting for the global cooldown
    simcpick_up_fragment,type=all,use_off_gcd=1,if=fury<=40
  10. Cast Reaver's Glaive if Rending Strike isn't active and Glaive Flurry isn't active
    simcreavers_glaive,if=buff.rending_strike.down&buff.glaive_flurry.down
  11. Cast Annihilation if (Rending Strike is active and Glaive Flurry isn't active and Reaver's Mark has fewer than 2 stacks on the target) or (Rending Strike is active and there are 2 or more enemies)
    simcannihilation,if=buff.rending_strike.up&buff.glaive_flurry.down&debuff.reavers_mark.stack<2|buff.rending_strike.up&active_enemies>=2
  12. Cast Essence Break if Death Sweep can trigger Demonsurge or Annihilation can trigger Demonsurge
    simcessence_break,if=action.death_sweep.demonsurge_available|action.annihilation.demonsurge_available
  13. Cast Death Sweep if Essence Break is active on the target or Death Sweep can trigger Demonsurge
    simcdeath_sweep,if=debuff.essence_break.up|action.death_sweep.demonsurge_available
  14. Cast Annihilation if Essence Break is active on the target or Annihilation can trigger Demonsurge
    simcannihilation,if=debuff.essence_break.up|action.annihilation.demonsurge_available
  15. Cast Throw Glaive if there is more than one enemy and you have Burning Wound talented and you don't have Screaming Brutality talented and the number of enemies with Burning Wound is less than the smaller of the number of enemies Throw Glaive would hit and 3 and tab target burning wound is false
    simcthrow_glaive,if=active_enemies>1&talent.burning_wound&!talent.screaming_brutality&active_dot.burning_wound<(spell_targets>?3)&!variable.tab_target_burning_wound
  16. Cast Immolation Aura if you have A Fire Inside talented and you have Burning Wound talented and (Immolation Aura has exactly 2 charges or Immolation Aura is fully recharged within 2 global cooldowns)
    simcimmolation_aura,if=talent.a_fire_inside&talent.burning_wound&(charges=2|full_recharge_time<gcd.max*2)
  17. Cast Abyssal Gaze if Death Sweep can't trigger Demonsurge and Annihilation can't trigger Demonsurge
    simcabyssal_gaze,if=!action.death_sweep.demonsurge_available&!action.annihilation.demonsurge_available
  18. Cast Eye Beam
    simceye_beam
  19. Cast Immolation Aura if Immolation Aura can trigger Demonsurge and Demonsurge has less than one global cooldown left, or isn't active
    simcimmolation_aura,,if=action.immolation_aura.demonsurge_available&buff.demonsurge.remains<gcd.max
  20. Cast Felblade if Inertia Trigger is active
    simcfelblade,if=buff.inertia_trigger.up
  21. Cast Essence Break if Eye Beam has more than 4 s of cooldown left
    simcessence_break,if=cooldown.eye_beam.remains>4
  22. Cast Death Sweep
    simcdeath_sweep
  23. Cast Blade Dance
    simcblade_dance
  24. Cast Immolation Aura if there is more than one enemy and (you have A Fire Inside talented or you have Burning Wound talented)
    simcimmolation_aura,if=active_enemies>1&(talent.a_fire_inside|talent.burning_wound)
  25. Cast Annihilation
    simcannihilation
  26. Cast Felblade if you use the Felscarred hero talents and you have 100 or less Fury
    simcfelblade,if=hero_tree.felscarred&fury<=100
  27. Cast Chaos Strike
    simcchaos_strike
  28. Cast Felblade
    simcfelblade
  29. Cast Immolation Aura
    simcimmolation_aura
  30. Cast Arcane Torrent
    simcarcane_torrent

Read from ActionPriorityLists/default/demonhunter_havoc.simc in simulationcraft/simc at 1860cd1d5763, the commit this engine build runs.