Cogspark

Cogspark Works · Rotation

Enhancement Shaman

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
Your talents (click: talented, not talented, not set)
More conditions (2)
the next add wave starts in at least 60 s (or never)
the fight ends within 20 s
Checked
  1. The main loop
  2. Single sb (maybe)
  3. Cooldowns (maybe)
  4. Single totemic (maybe)
  5. AoE (maybe)
Before the pull, done once before the fight starts (9 steps)

Before the pull9 lines

  1. Cast Windfury Weapon
    simcwindfury_weapon
  2. Cast Flametongue Weapon
    simcflametongue_weapon
  3. Cast Lightning Shield
    simclightning_shield
  4. Set trinket1 is weird to true when the following holds, otherwise false
    any of these:
    • trinket 1 is Algethar Puzzle Box
    • trinket 1 is Unyielding Netherprism
    • trinket 1 is Font of Venomous Rage
    simcvariable,name=trinket1_is_weird,value=trinket.1.is.algethar_puzzle_box|trinket.1.is.unyielding_netherprism|trinket.1.is.font_of_venomous_rage
  5. Set trinket2 is weird to true when the following holds, otherwise false
    any of these:
    • trinket 2 is Algethar Puzzle Box
    • trinket 2 is Unyielding Netherprism
    • trinket 2 is Font of Venomous Rage
    simcvariable,name=trinket2_is_weird,value=trinket.2.is.algethar_puzzle_box|trinket.2.is.unyielding_netherprism|trinket.2.is.font_of_venomous_rage
  6. Record your stats before the pull (sim bookkeeping)Snapshot raid buffed stats before combat begins and pre-potting is done.
    simcsnapshot_stats
  7. Use Algethar Puzzle Box
    simcuse_item,name=algethar_puzzle_box
  8. Drink a potion if your potion isn't Liquid Luster
    simcpotion,if=!potion.liquid_luster
  9. Drink a potion if your potion is Liquid Luster
    simcpotion,pre_pot_time=12,if=potion.liquid_luster

The main loop9 lines

  1. Set target nature mod to (1 plus ((1 if Chaos Brand is active on the target, else 0) times Chaos Brand's current value)) times (1 plus ((1 if (1 if Hunter's Mark is active on the target, else 0) times the target's health is at least 80, else 0) times Hunter's Mark's current value))
    simcvariable,name=target_nature_mod,value=(1+debuff.chaos_brand.up*debuff.chaos_brand.value)*(1+(debuff.hunters_mark.up*target.health.pct>=80)*debuff.hunters_mark.value)
  2. Set expected lb funnel to the expected damage of Lightning Bolt times (1 plus (((1 if Lightning Rod is active on the target, else 0) times target nature mod) times (1 plus the number of enemies with Flame Shock) times Lightning Rod's current value))
    simcvariable,name=expected_lb_funnel,value=action.lightning_bolt.damage*(1+debuff.lightning_rod.up*variable.target_nature_mod*(1+active_dot.flame_shock)*debuff.lightning_rod.value)
  3. Set expected cl funnel to the expected damage of Chain Lightning times (1 plus (((1 if Lightning Rod is active on the target, else 0) times target nature mod) times the number of enemies times Lightning Rod's current value))
    simcvariable,name=expected_cl_funnel,value=action.chain_lightning.damage*(1+debuff.lightning_rod.up*variable.target_nature_mod*active_enemies*debuff.lightning_rod.value)
  4. Set flame shock saturated to true when the following holds, otherwise false
    any of these:
    • the number of enemies with Flame Shock is the number of enemies
    • Flame Shock is on exactly 6 enemies
    simcvariable,name=flame_shock_saturated,value=((active_dot.flame_shock=active_enemies)|(active_dot.flame_shock=6))
  5. Cast BloodlustAt most once every 600 s
    simcbloodlust,line_cd=600
  6. Start auto-attacking
    simcauto_attack
  7. Is it true that there is a single enemy and you don't have Surging Totem talented?Not set

    If so, go through Single sb, then carry on below if nothing there fits

    simccall_action_list,name=single_sb,if=active_enemies=1&!talent.surging_totem.enabled
  8. Is it true that there is a single enemy and you have Surging Totem talented?Not set

    If so, go through Single totemic, then carry on below if nothing there fits

    simccall_action_list,name=single_totemic,if=active_enemies=1&talent.surging_totem.enabled
  9. Is it true that there is more than one enemy?Not set

    If so, go through AoE, then carry on below if nothing there fits

    simccall_action_list,name=aoe,if=active_enemies>1

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