Updated Nov 4, 2026

Assassination Rogue

PvE guide, updated for Patch 12.1.5

DPS Rotation & Cooldowns

How to play Assassination Rogue in each rotation style: the full rotation SimulationCraft sims play by default, and the game’s Assisted Highlight and One Button rotations beside it.

Rotation style comparison

How Assassination Rogue’s DPS compares when using the game’s assisted modes instead of the full rotation, based on Single Target simulations.

  • Full rotationBaseline
  • Assisted Highlight-6.7%
  • One Button-11.2%
Compare in rankings

The full rotation is the one SimulationCraft’s sims play by default. Its priority list is SimC’s own for the spec, read here for one build and one kind of fight.

Rotation

Beta

Assassination Rogue’s list reads best as SimC writes it

With this build, 11 of its 25 rows would show an expression as SimC writes it, which is too many to follow as steps. The abilities it uses are below in the order the list first uses them, and the list itself under them.

Abilities the list uses

14 abilities

Before the pull

Things to do before entering combat.

  1. 1Apply Poison
  2. 2Stealth
  3. 3Slice and Dice

Cooldowns

When each cooldown was used across the sample fight, so you can see how often each comes back and which ones line up.

  • Light's PotentialLight's Potential: 2 casts, at 0:03, 5:252
  • BerserkingBerserking: 2 casts, at 0:07, 4:072
  • DeathmarkDeathmark: 3 casts, at 0:07, 2:07, 4:073
  • On-use itemsOn-use items: 4 casts, at 0:08, 2:08, 4:08, 5:394
  • KingsbaneKingsbane: 6 casts, at 0:08, 1:09, 2:09, 3:09, 4:09, 5:096
  • Font of Venomous RageFont of Venomous Rage: 2 casts, at 0:28, 4:282
  • Fan of KnivesFan of Knives: 3 casts, at 1:43, 2:29, 3:533
  • AmbushAmbush: 1 cast, at 2:081
  • VanishVanish: 2 casts, at 2:08, 4:082

Sample opener

One simulated fight from the start, played by this list on the profile in the Gear section with the guide’s Single target build, whichever build the list above is read for. Procs and timing change the order from fight to fight, so use it to get a feel for the start rather than as a script.

Time
Ability
New
Gone
Up
Pre-pull
0:00.000
Pull
0:00.000
0:01.005
0:02.009
0:03.013

The full priority list

simc@ff0d07f

Everything above is read from this SimulationCraft list, including the steps the page hides (the potion and on-use items) and the branches your build and fight leave out.

rogue_assassination.simc, 99 lines
# This default action priority list is automatically created based on your character.
# It is a attempt to provide you with a action list that is both simple and practicable,
# while resulting in a meaningful and good simulation. It may not result in the absolutely highest possible dps.
# Feel free to edit, adapt and improve it to your own needs.
# SimulationCraft is always looking for updates and improvements to the default action lists.

# Executed before combat begins. Accepts non-harmful actions only.
actions.precombat=apply_poison
actions.precombat+=/snapshot_stats
# Check which trinket slots have Stat Values
actions.precombat+=/variable,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)
actions.precombat+=/variable,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)
# Pre-cast Slice and Dice if possible
actions.precombat+=/stealth
actions.precombat+=/slice_and_dice,precombat_seconds=1

# Executed every time the actor is available.
# Restealth if possible (no vulnerable enemies in combat)
actions=stealth
# Interrupt on cooldown to allow simming interactions with that
actions+=/kick
# Helper Variable to check for single target in combat
actions+=/variable,name=single_target,value=spell_targets.fan_of_knives=1
# Edge-case check to dump thistle tea at the end of fights
actions+=/thistle_tea,if=energy.pct<30|fight_remains<10
# Special Ambush condition for the start of fights when applicable
actions+=/ambush,if=stealthed.rogue&variable.single_target&talent.blindside&talent.improved_ambush&!talent.shrouded_suffocation
# Cooldown list takes priority
actions+=/call_action_list,name=cds,if=variable.single_target|!talent.scent_of_blood|buff.scent_of_blood.stack>=(2*talent.scent_of_blood.rank*spell_targets.fan_of_knives>?20)
# Maintain dots when possible
actions+=/call_action_list,name=core_dot
# Build combo points until 5, max with darkest night
actions+=/call_action_list,name=generate,if=!buff.darkest_night.up&combo_points<5|buff.darkest_night.up&combo_points.deficit>0
# If combo point threshold is reached, spend them
actions+=/call_action_list,name=spend,if=!buff.darkest_night.up&combo_points>=5|buff.darkest_night.up&combo_points.deficit=0

# Cooldown list Deathmark if bleeds are active, kingsbane is ready, and we have envenom
actions.cds=deathmark,if=dot.garrote.ticking&dot.rupture.ticking&cooldown.kingsbane.remains<=2&buff.envenom.remains>2&(target.time_to_die>10|fight_remains<20)
actions.cds+=/invoke_external_buff,name=power_infusion,if=dot.deathmark.ticking
# Check for on-use trinket usage
actions.cds+=/call_action_list,name=items
# Check for Racial abilties, potions, and any other misc cooldowns
actions.cds+=/call_action_list,name=misc_cds
# Kingsbane if bleeds are active and Deathmark is either on cooldown or active.
actions.cds+=/kingsbane,if=dot.garrote.ticking&dot.rupture.ticking&(dot.deathmark.ticking|cooldown.deathmark.remains>52)&buff.envenom.up&(target.time_to_die>10|fight_remains<20)
# Vanish conditions for Improved Garrote
actions.cds+=/call_action_list,name=vanish,if=!stealthed.rogue

# DoT list Garrote for improved garrote when applicable
actions.core_dot=garrote,if=(buff.improved_garrote.up|stealthed.rogue)&(pmultiplier<=1|remains<=14+6*talent.razor_wire+4*!variable.single_target)
# Normal Garrote Maintanence
actions.core_dot+=/garrote,if=combo_points.deficit>=1&(pmultiplier<=1|!variable.single_target)&refreshable&target.time_to_die-remains>12
# Cycle
actions.core_dot+=/garrote,cycle_targets=1,if=!talent.crimson_tempest&combo_points.deficit>=1&(pmultiplier<=1|!variable.single_target)&refreshable&target.time_to_die-remains>12
# Normal Rupture Maintanence, making sure to not waste Darkest Night
actions.core_dot+=/rupture,if=combo_points>=5&refreshable&target.time_to_die-remains>12&(!buff.darkest_night.up|!dot.rupture.ticking)
actions.core_dot+=/rupture,cycle_targets=1,if=!talent.crimson_tempest&combo_points>=5&refreshable&target.time_to_die-remains>12&(!buff.darkest_night.up|!dot.rupture.ticking)

# Generator List Crimson Tempest to spread bleeds to everything in AoE
actions.generate=crimson_tempest,target_if=max:dot.rupture.remains,if=!variable.single_target&(active_dot.garrote<spell_targets.fan_of_knives|active_dot.rupture<spell_targets.fan_of_knives)&(dot.rupture.remains>5|energy.regen_combined>40)
# Special Edge Case to use Shiv and Fan of Knives in ST as Toxic Stiletto makes it very efficient
actions.generate+=/shiv,if=spell_targets.fan_of_knives<=1&talent.toxic_stiletto&talent.darkest_night
actions.generate+=/fan_of_knives,if=buff.darkest_night.up&combo_points.deficit=1&spell_targets.fan_of_knives<=1
# Fan of Knives in AoE
actions.generate+=/fan_of_knives,if=spell_targets.fan_of_knives>1+(talent.blindside&!talent.clear_the_witnesses)
# Ambush on low target counts when available
actions.generate+=/ambush,if=spell_targets.fan_of_knives<=1+(talent.blindside&!talent.clear_the_witnesses)
# Mutilate on low target counts
actions.generate+=/mutilate,if=spell_targets.fan_of_knives<=1+(talent.blindside&!talent.clear_the_witnesses)
# Fan of Knives fallback for non-dagger weapon swaps
actions.generate+=/fan_of_knives,if=!(main_hand.dagger&off_hand.dagger)

# Special Case Trinkets
actions.items=variable,name=base_trinket_condition,value=dot.rupture.ticking&cooldown.deathmark.remains<2|dot.deathmark.ticking|fight_remains<=22
actions.items+=/use_item,name=astral_gladiators_badge_of_ferocity,use_off_gcd=1,if=dot.kingsbane.ticking|dot.deathmark.ticking|(cooldown.kingsbane.remains>60|cooldown.deathmark.remains>60)
actions.items+=/use_item,name=algethar_puzzle_box,use_off_gcd=1,if=variable.base_trinket_condition&buff.envenom.up&(target.time_to_die>10|fight_remains<20)
actions.items+=/use_item,name=font_of_venomous_rage,use_off_gcd=1,if=buff.lingering_darkness.up|!dot.deathmark.ticking&!cooldown.deathmark.ready&cooldown.deathmark.remains>20
actions.items+=/use_items,slots=trinket1,if=(variable.trinket_sync_slot=1&(debuff.deathmark.up)|(variable.trinket_sync_slot=2&!trinket.2.cooldown.ready&cooldown.deathmark.remains>20))|!variable.trinket_sync_slot|fight_remains<=20
actions.items+=/use_items,slots=trinket2,if=(variable.trinket_sync_slot=2&(debuff.deathmark.up)|(variable.trinket_sync_slot=1&!trinket.1.cooldown.ready&cooldown.deathmark.remains>20))|!variable.trinket_sync_slot|fight_remains<=20

# Miscellaneous Cooldowns Potion
actions.misc_cds=potion,if=dot.rupture.ticking&(buff.bloodlust.react|fight_remains<30|debuff.deathmark.up)
# Various special racials to be synced with cooldowns
actions.misc_cds+=/blood_fury,use_off_gcd=1,if=debuff.deathmark.up
actions.misc_cds+=/berserking,use_off_gcd=1,if=debuff.deathmark.up
actions.misc_cds+=/fireblood,use_off_gcd=1,if=debuff.deathmark.up
actions.misc_cds+=/ancestral_call,use_off_gcd=1,if=debuff.deathmark.up

# Spend List   Spend with envenom as per normal, clipping the last second to maintain uptime
actions.spend=envenom,if=buff.envenom.remains<=1|buff.deathmark.up
# Envenom if we are going to overcap on energy
actions.spend+=/envenom,if=energy.pct>70|fight_remains<15
# In AoE with mob cycles, we want to start envenoming sooner to avoid wasting time/energy
actions.spend+=/envenom,if=energy.pct>30&(target.time_to_die<12|spell_targets.fan_of_knives>=4)

# Vanish list Single Target vanish check to line up improved garrote with Deathmark, making sure there are no adds soon. TODO Check after ImpGar fixes
actions.vanish=vanish,if=variable.single_target&talent.improved_garrote&dot.garrote.pmultiplier<=1&(dot.deathmark.ticking|cooldown.deathmark.remains>target.time_to_die-10)&!raid_event.adds.in<=30
# AoE vanish check to spread improved garrote in multitarget
actions.vanish+=/vanish,if=!variable.single_target&talent.improved_garrote&dot.garrote.pmultiplier<=1&(raid_event.adds.remains>=10|!raid_event.adds.in<=30)

Is this rotation built for your talents?

The rotation follows your talent build. Sim your highest-DPS build on your own gear, for the mode and rotation style you play.