Cogspark

Cogspark Works · Rotation

Subtlety Rogue

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
Your talents (click: talented, not talented, not set)
More conditions (3)
your Combo Points is at least the most Combo Points a finisher can spend minus (1 if Darkest Night isn't active, else 0)
stealth is true
you have more than 60 Energy
Checked
  1. The main loop
  2. Race
  3. Item
  4. Cooldowns
  5. Finish (maybe)
  6. Build (maybe)
  7. Fill (maybe)
Before the pull, done once before the fight starts (6 steps)

Before the pull6 lines

  1. Cast Apply Poison
    simcapply_poison
  2. Record your stats before the pull (sim bookkeeping)
    simcsnapshot_stats
  3. Set priority rotation to true when the following holds, otherwise false
    the sim's “priority rotation” setting is on
    simcvariable,name=priority_rotation,value=priority_rotation
  4. Set trinket sync slot to 1
    all of these:
    • trinket 1 has an on-use effect that grants a stat buff
    • any of these:
      • trinket 2 has no on-use effect that grants a stat buff
      • trinket 1's cooldown is at least trinket 2's cooldown
    Check for on-use stat trinkets and which slot has the most powerful effect (ie longest cooldown).
    simcvariable,name=trinket_sync_slot,value=1,if=trinket.1.has_use_buff&(!trinket.2.has_use_buff|trinket.1.cooldown.duration>=trinket.2.cooldown.duration)
  5. Set trinket sync slot to 2
    all of these:
    • trinket 2 has an on-use effect that grants a stat buff
    • any of these:
      • trinket 1 has no on-use effect that grants a stat buff
      • trinket 2's cooldown is more than trinket 1's cooldown
    simcvariable,name=trinket_sync_slot,value=2,if=trinket.2.has_use_buff&(!trinket.1.has_use_buff|trinket.2.cooldown.duration>trinket.1.cooldown.duration)
  6. Cast Stealth
    simcstealth

The main loop15 lines

  1. Set stealth to true when the following holds, otherwise false
    any of these:
    • Shadow Dance is active
    • Stealth is active
    • Vanish is active
    simcvariable,name=stealth,value=buff.shadow_dance.up|buff.stealth.up|buff.vanish.up
  2. Set targets to the number of enemies Shuriken Storm would hit
    simcvariable,name=targets,value=spell_targets.shuriken_storm
  3. Set racial sync to true when the following holds, otherwise false
    any of these:
    • all of these:
      • Shadow Blades is active
      • Shadow Dance is active
    • the fight ends within 20 s
    simcvariable,name=racial_sync,value=(buff.shadow_blades.up&buff.shadow_dance.up)|fight_remains<20
  4. Set dance condition to true when the following holds, otherwise false
    all of these:
    • stealth is false
    • you have 30 or more Energy
    • Slice and Dice is active
    • any of these:
      • all of these:
        • you have 2 or fewer Combo Points
        • you have Deathstalker's Mark talented
      • you have 6 or more Combo Points
    simcvariable,name=dance_condition,value=!variable.stealth&energy>=30&buff.slice_and_dice.up&(combo_points<=2&talent.deathstalkers_mark|combo_points>=6)
  5. Set build at max for apex to true when the following holds, otherwise false
    all of these:
    • you have Ancient Arts talented
    • Ancient Arts isn't active
    • Shadow Techniques has 5 or more stacks
    simcvariable,name=build_at_max_for_apex,value=talent.ancient_arts_3&!buff.ancient_arts.up&buff.shadow_techniques.stack>=5
  6. Cast Stealth
    simcstealth
  7. go through Race, then carry on below if nothing there fits

    simccall_action_list,name=race

    Race5 lines

    1. Cast Blood Fury if racial sync is trueRace Cooldowns
      simcblood_fury,if=variable.racial_sync
    2. Cast Berserking if racial sync is true
      simcberserking,if=variable.racial_sync
    3. Cast Fireblood if racial sync is true
      simcfireblood,if=variable.racial_sync
    4. Cast Ancestral Call if Shadow Blades is active
      simcancestral_call,if=buff.shadow_blades.up
    5. Get Power Infusion from an ally if racial sync is true
      simcinvoke_external_buff,name=power_infusion,if=variable.racial_sync
  8. go through Item, then carry on below if nothing there fits

    simccall_action_list,name=item

    Item4 lines

    1. Drink a potion if Shadow Blades is active or the fight ends within 30 sTrinket and Items
      simcpotion,if=buff.shadow_blades.up|fight_remains<30
    2. Use Algethar Puzzle Box if Shadow Blades is off cooldown and Secret Technique comes off cooldown within 2 s and you have 6 or more Combo Points
      simcuse_item,name=algethar_puzzle_box,if=cooldown.shadow_blades.ready&cooldown.secret_technique.remains<=2&combo_points>=6
    3. Use your trinkets if (trinket sync slot is 1 and (Shadow Blades is active or the fight ends within 20 s)) or (trinket sync slot is 2 and trinket 2 is on cooldown and Shadow Blades has more than 20 s of cooldown left) or trinket sync slot is false
      simcuse_items,slots=trinket1,if=(variable.trinket_sync_slot=1&(buff.shadow_blades.up|fight_remains<=20)|(variable.trinket_sync_slot=2&(!trinket.2.cooldown.ready&cooldown.shadow_blades.remains>20))|!variable.trinket_sync_slot)
    4. Use your trinkets if (trinket sync slot is 2 and (Shadow Blades is active or the fight ends within 20 s)) or (trinket sync slot is 1 and trinket 1 is on cooldown and Shadow Blades has more than 20 s of cooldown left) or trinket sync slot is false
      simcuse_items,slots=trinket2,if=(variable.trinket_sync_slot=2&(buff.shadow_blades.up|fight_remains<=20)|(variable.trinket_sync_slot=1&(!trinket.1.cooldown.ready&cooldown.shadow_blades.remains>20))|!variable.trinket_sync_slot)
  9. go through Cooldowns, then carry on below if nothing there fits

    simccall_action_list,name=cds

    Cooldowns7 lines

    1. Cast Goremaw's Bite if (Shadow Dance is active and Ancient Arts isn't active) or the fight ends within 14 sCooldowns
      simcgoremaws_bite,if=buff.shadow_dance.up&!buff.ancient_arts.up|fight_remains<=14
    2. Cast Shadow Blades if (dance condition is true and the charges (counting partial ones) of Shadow Dance is at least 1 plus (0.8 if you have Deathstalker's Mark talented, else 0) and (Ancient Arts is active or you don't have Unseen Blade talented)) or the fight ends within 20 s or target.time_to_die.remains is at most 20
      simcshadow_blades,if=variable.dance_condition&cooldown.shadow_dance.charges_fractional>=1+0.8*talent.deathstalkers_mark&(buff.ancient_arts.up|!talent.unseen_blade)|(fight_remains<=20|target.time_to_die.remains<=20)
    3. Cast Shadow Dance if (dance condition is true and you have Deathstalker's Mark talented and ((targets is at most 3 and (Darkest Night is active or (Secret Technique is off cooldown and Deathstalker's Mark has 1 or fewer stacks on the target))) or (targets is more than 3 and Deathstalker's Mark has 2 or more stacks on the target)) and Shadow Blades has at least 35 s minus Secret Technique's cooldown of cooldown left) or the fight ends within 10 s or the time until the target dies minus the time left on Shadow Dance is at most 9 sDeathstalker: Send Shadow Dance when Darkest Night is up on ST and when its not up on AoE.
      simcshadow_dance,if=variable.dance_condition&talent.deathstalkers_mark&(variable.targets<=3&(buff.darkest_night.up|cooldown.secret_technique.ready&debuff.deathstalkers_mark.stack<=1)|variable.targets>3&debuff.deathstalkers_mark.stack>=2)&(cooldown.shadow_blades.remains>=35-cooldown.secret_technique.duration)|(fight_remains<=10|target.time_to_die-remains<=9)
    4. Cast Shadow Dance if (dance condition is true and you have Unseen Blade talented and Secret Technique is off cooldown and Shadow Blades has at least 25 s minus Secret Technique's cooldown of cooldown left) or the fight ends within 10 s or the time until the target dies minus the time left on Shadow Dance is at most 9 sTrickster: Send Shadow Dance whenever Secret Technique is ready
      simcshadow_dance,if=variable.dance_condition&talent.unseen_blade&(cooldown.secret_technique.ready&(cooldown.shadow_blades.remains>=25-cooldown.secret_technique.duration))|(fight_remains<=10|target.time_to_die-remains<=9)
    5. Cast Shadow Dance if Shadow Blades is active and (you have Unseen Blade talented or targets is at least 3)Trickster: Second Shadow Dance later during Shadow Blades for better alignment.
      simcshadow_dance,if=buff.shadow_blades.up&(talent.unseen_blade|variable.targets>=3)
    6. Cast Vanish if stealth is false and you have 50 or more Energy and Subterfuge isn't active and you have 2 or fewer Combo PointsVanish whenever outside of CDs.
      simcvanish,if=!variable.stealth&energy>=50&!buff.subterfuge.up&combo_points<=2
    7. Cast Shadowmeld if you have 50 or more Energy and stealth is false and you are 2 or more Combo Points below maximum
      simcshadowmeld,if=energy>=50&!variable.stealth&combo_points.deficit>=2
  10. Cast Shuriken Storm if build at max for apex is true and targets is at least 3 and (Supercharge 1 is active or Secret Technique is off cooldown)
    simcshuriken_storm,if=variable.build_at_max_for_apex&variable.targets>=3&(buff.supercharge_1.up|cooldown.secret_technique.ready)
  11. Cast Gloomblade if build at max for apex is true and targets is at most 2 and (Darkest Night is active or (you have Unseen Blade talented and Supercharge 1 is active) or Secret Technique is off cooldown) and Lingering Shadow has 35 or more stacks
    simcgloomblade,if=variable.build_at_max_for_apex&variable.targets<=2&(buff.darkest_night.up|(talent.unseen_blade&buff.supercharge_1.up)|cooldown.secret_technique.ready)&buff.lingering_shadow.stack>=35
  12. Cast Shadowstrike if build at max for apex is true and targets is at most 2 and (Darkest Night is active or (you have Unseen Blade talented and Supercharge 1 is active) or Secret Technique is off cooldown)
    simcshadowstrike,if=variable.build_at_max_for_apex&variable.targets<=2&(buff.darkest_night.up|(talent.unseen_blade&buff.supercharge_1.up)|cooldown.secret_technique.ready)
  13. Is it true that your Combo Points is at least the most Combo Points a finisher can spend minus (1 if Darkest Night isn't active, else 0)?Not set

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

    simccall_action_list,name=finish,if=combo_points>=cp_max_spend-!buff.darkest_night.up
  14. Is it true that stealth is true or you have more than 60 Energy?Not set

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

    simccall_action_list,name=build,if=variable.stealth|energy>60
  15. Is it true that stealth is false?Not set

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

    simccall_action_list,name=fill,if=!variable.stealth

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