Cogspark Works · Rotation
Retribution Paladin
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
- Cooldowns
- Generators
- Finishers
Before the pull, done once before the fight starts (8 steps)
Before the pull8 lines
- Record your stats before the pull (sim bookkeeping)Snapshot raid buffed stats before combat begins and pre-potting is done.
simc
snapshot_stats - Set trinket 1 buffs to true when the following holds, otherwise falseany of these:
- trinket 1 can grant Strength
- 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.strength|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 Strength
- 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.strength|trinket.2.has_buff.mastery|trinket.2.has_buff.versatility|trinket.2.has_buff.haste|trinket.2.has_buff.crit - Set trinket 1 sync to 1 when the following holds, otherwise to 0.5all of these:
- trinket 1 buffs is true
- any of these:
- the remainder of trinket 1's cooldown divided by Avenging Wrath's cooldown is 0
- the remainder of Avenging Wrath's cooldown divided by trinket 1's cooldown is 0
simc
variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%cooldown.avenging_wrath.duration=0|cooldown.avenging_wrath.duration%%trinket.1.cooldown.duration=0) - Set trinket 2 sync to 1 when the following holds, otherwise to 0.5all of these:
- trinket 2 buffs is true
- any of these:
- the remainder of trinket 2's cooldown divided by Avenging Wrath's cooldown is 0
- the remainder of Avenging Wrath's cooldown divided by trinket 2's cooldown is 0
simc
variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%cooldown.avenging_wrath.duration=0|cooldown.avenging_wrath.duration%%trinket.2.cooldown.duration=0) - 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 cooldown divided by trinket 2's stat buff's duration times (1.5 plus (1 if trinket 2 can grant Strength, else 0)) times trinket 2 sync is more than trinket 1's cooldown divided by trinket 1's stat buff's duration times (1.5 plus (1 if trinket 1 can grant Strength, else 0)) times trinket 1 sync
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.cooldown.duration%trinket.2.proc.any_dps.duration)*(1.5+trinket.2.has_buff.strength)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(1.5+trinket.1.has_buff.strength)*(variable.trinket_1_sync)) - all of these:
- Use Algethar Puzzle Box if trinket 1 is Algethar Puzzle Box or trinket 2 is Algethar Puzzle Box
simc
use_item,name=algethar_puzzle_box,if=(trinket.1.is.algethar_puzzle_box|trinket.2.is.algethar_puzzle_box) - Reset pre es wake to its starting valuepre es wake starts each fight at 0
simc
variable,name=pre_es_wake,op=reset,default=0
The main loop4 lines
- Start auto-attacking
simc
auto_attack - Cast Rebuke
simc
rebuke go through Cooldowns, then carry on below if nothing there fits
simc
call_action_list,name=cooldownsCooldowns11 lines
- Use Algethar Puzzle Box if (Avenging Wrath is off cooldown and you don't have Radiant Glory talented) or (((you don't have Execution Sentence talented and Wake of Ashes is off cooldown) or Execution Sentence is off cooldown) and you have Radiant Glory talented)
simc
use_item,name=algethar_puzzle_box,if=(cooldown.avenging_wrath.remains=0&!talent.radiant_glory|(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0|cooldown.execution_sentence.remains=0)&talent.radiant_glory) - Drink a potion if Avenging Wrath is active or the fight ends within 30 s or (you have Radiant Glory talented and Wake of Ashes is off cooldown and (you don't have Holy Flames talented or Expurgation is on the target))
simc
potion,if=buff.avenging_wrath.up|fight_remains<30|talent.radiant_glory&cooldown.wake_of_ashes.remains=0&(!talent.holy_flames|dot.expurgation.ticking) - Use your trinket 1 if (((Avenging Wrath is active and Avenging Wrath has more than 40 s of cooldown left and you don't have Radiant Glory talented) or (you have Radiant Glory talented and ((you don't have Execution Sentence talented and Wake of Ashes is off cooldown) or Execution Sentence Debuff is active on the target))) 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
simc
use_item,slot=trinket1,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40)&!talent.radiant_glory|talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0|debuff.execution_sentence_debuff.up))&(!trinket.2.has_cooldown|trinket.2.cooldown.remains|variable.trinket_priority=1)|trinket.1.proc.any_dps.duration>=fight_remains - Use your trinket 2 if (((Avenging Wrath is active and Avenging Wrath has more than 40 s of cooldown left and you don't have Radiant Glory talented) or (you have Radiant Glory talented and ((you don't have Execution Sentence talented and Wake of Ashes is off cooldown) or Execution Sentence Debuff is active on the target))) 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
simc
use_item,slot=trinket2,if=((buff.avenging_wrath.up&cooldown.avenging_wrath.remains>40)&!talent.radiant_glory|talent.radiant_glory&(!talent.execution_sentence&cooldown.wake_of_ashes.remains=0|debuff.execution_sentence_debuff.up))&(!trinket.1.has_cooldown|trinket.1.cooldown.remains|variable.trinket_priority=2)|trinket.2.proc.any_dps.duration>=fight_remains - Use your trinket 1 if trinket 1 buffs is false and (trinket 2 is on cooldown or trinket 2 buffs is false or (Avenging Wrath isn't active and Avenging Wrath has more than 20 s of cooldown left))
simc
use_item,slot=trinket1,if=!variable.trinket_1_buffs&(trinket.2.cooldown.remains|!variable.trinket_2_buffs|!buff.avenging_wrath.up&cooldown.avenging_wrath.remains>20) - Use your trinket 2 if trinket 2 buffs is false and (trinket 1 is on cooldown or trinket 1 buffs is false or (Avenging Wrath isn't active and Avenging Wrath has more than 20 s of cooldown left))
simc
use_item,slot=trinket2,if=!variable.trinket_2_buffs&(trinket.1.cooldown.remains|!variable.trinket_1_buffs|!buff.avenging_wrath.up&cooldown.avenging_wrath.remains>20) - Get Power Infusion from an ally if Avenging Wrath is active or (you have Radiant Glory talented and Wake of Ashes is off cooldown and (you don't have Holy Flames talented or Expurgation is on the target))
simc
invoke_external_buff,name=power_infusion,if=buff.avenging_wrath.up|talent.radiant_glory&cooldown.wake_of_ashes.remains=0&(!talent.holy_flames|dot.expurgation.ticking) - Cast Light's Judgment if the fight has no add waves or the next add wave starts in more than 75 s (or never) or adds are up
simc
lights_judgment,if=!raid_event.adds.exists|raid_event.adds.in>75|raid_event.adds.up - Cast Fireblood if Avenging Wrath is active or (you have Radiant Glory talented and Wake of Ashes is off cooldown and (you don't have Holy Flames talented or Expurgation is on the target))
simc
fireblood,if=buff.avenging_wrath.up|talent.radiant_glory&cooldown.wake_of_ashes.remains=0&(!talent.holy_flames|dot.expurgation.ticking) - Cast Execution Sentence if (Avenging Wrath has more than 15 s of cooldown left or you have Radiant Glory talented) and the target lives more than 10 s longer and (Wake of Ashes comes off cooldown within one global cooldown or pre es wake is 1) and (you don't have Holy Flames talented or Expurgation is on the target) and (you don't have Crusade talented or Avenging Wrath has 7 or more stacks or pre es wake is false)
simc
execution_sentence,if=(cooldown.avenging_wrath.remains>15|talent.radiant_glory)&(target.time_to_die>10)&(cooldown.wake_of_ashes.remains<gcd|variable.pre_es_wake=1)&(!talent.holy_flames|dot.expurgation.ticking)&(!talent.crusade|buff.avenging_wrath.stack>=7|variable.pre_es_wake=0) - Cast Avenging Wrath if (no adds are up or the target lives more than 10 s longer) and (you don't have Holy Flames talented or Expurgation is on the target) and (you don't have Algethar Puzzle Box equipped or (trinket 1 is Algethar Puzzle Box and trinket 1 has more than 5 s of cooldown left) or (trinket 2 is Algethar Puzzle Box and trinket 2 has more than 5 s of cooldown left))
simc
avenging_wrath,if=(!raid_event.adds.up|target.time_to_die>10)&(!talent.holy_flames|dot.expurgation.ticking)&(!equipped.algethar_puzzle_box|trinket.1.is.algethar_puzzle_box&trinket.1.cooldown.remains>5|trinket.2.is.algethar_puzzle_box&trinket.2.cooldown.remains>5)
go through Generators, then carry on below if nothing there fits
simc
call_action_list,name=generatorsGenerators14 lines
Is it true that (you have exactly 5 Holy Power and Wake of Ashes is on cooldown) or Hammer Of Light Free has less than 2 global cooldowns left, or isn't active?Not set
If so, go through Finishers, then carry on below if nothing there fits
simc
call_action_list,name=finishers,if=holy_power=5&cooldown.wake_of_ashes.remains|buff.hammer_of_light_free.remains<gcd*2- Cast Wake of Ashes if (Avenging Wrath has more than 6 s of cooldown left or you have Radiant Glory talented) and (you don't have Execution Sentence talented or Execution Sentence has more than 4 s of cooldown left or the target dies within 10 s or pre es wake is 1) and (the fight has no add waves or the next add wave starts in more than 10 s (or never) or adds are up)
simc
wake_of_ashes,if=(cooldown.avenging_wrath.remains>6|talent.radiant_glory)&(!talent.execution_sentence|cooldown.execution_sentence.remains>4|target.time_to_die<10|variable.pre_es_wake=1)&(!raid_event.adds.exists|raid_event.adds.in>10|raid_event.adds.up) - Cast Divine Toll if (the fight has no add waves or the next add wave starts in more than 10 s (or never) or adds are up) and (Avenging Wrath has more than 15 s of cooldown left or you have Radiant Glory talented or the fight ends within 8 s)
simc
divine_toll,if=(!raid_event.adds.exists|raid_event.adds.in>10|raid_event.adds.up)&(cooldown.avenging_wrath.remains>15|talent.radiant_glory|fight_remains<8) - Cast Blade of Justice if (Art of War has exactly 2 stacks or Righteous Cause has exactly 2 stacks) and (you don't have Walk Into Light talented or Avenging Wrath isn't active)
simc
blade_of_justice,if=(buff.art_of_war.stack=2|buff.righteous_cause.stack=2)&(!talent.walk_into_light|!buff.avenging_wrath.up) - Cast Hammer of Wrath if you have Walk Into Light talented and Hammer of Wrath has exactly 2 charges
simc
hammer_of_wrath,if=talent.walk_into_light&cooldown.hammer_of_wrath.charges=2 go through Finishers, then carry on below if nothing there fits
simc
call_action_list,name=finishersFinishers4 lines
- Set ds castable to true when the following holds, otherwise falseall of these:
- any of these:
- there are 2 or more enemies
- Divine Arbiter Verdict is active
- Empyrean Legacy isn't active
- Divine Arbiter Divine Storm isn't active
simc
variable,name=ds_castable,value=(active_enemies>=2|buff.divine_arbiter_verdict.up)&!buff.empyrean_legacy.up&!buff.divine_arbiter_divine_storm.up - any of these:
- Cast Hammer of Light if Hammer Of Light Free isn't active or (Hammer Of Light Free is active and ((Undisputed Ruling has less than 1.5 global cooldowns left, or isn't active and (you have Radiant Glory talented or Avenging Wrath has more than 4 s of cooldown left)) or (Avenging Wrath is active and (Avenging Wrath has less than 2 global cooldowns left, or isn't active or Wake of Ashes is off cooldown)) or Hammer Of Light Free has less than 2 global cooldowns left, or isn't active or the target dies within 2 global cooldowns))
simc
hammer_of_light,if=!buff.hammer_of_light_free.up|buff.hammer_of_light_free.up&(buff.undisputed_ruling.remains<gcd*1.5&(talent.radiant_glory|cooldown.avenging_wrath.remains>4)|buff.avenging_wrath.up&(buff.avenging_wrath.remains<gcd*2|cooldown.wake_of_ashes.remains=0)|buff.hammer_of_light_free.remains<gcd*2|target.time_to_die<gcd*2) - Cast Divine Storm if ds castable is true
simc
divine_storm,if=variable.ds_castable - Cast Templar's Verdict
simc
templars_verdict
- Cast Hammer of Wrath if you have Walk Into Light talented
simc
hammer_of_wrath,if=talent.walk_into_light - Cast Blade of Justice
simc
blade_of_justice - Cast Hammer of Wrath
simc
hammer_of_wrath - Cast Judgment
simc
judgment - Cast Templar Strike
simc
templar_strike - Cast Templar Slash
simc
templar_slash - Cast Crusader Strike
simc
crusader_strike - Cast Arcane Torrent
simc
arcane_torrent
Read from ActionPriorityLists/default/paladin_retribution.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 Combat28 lines
- Cast Avenging WrathThis 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
avenging_wrath - Cast Execution Sentence
simc
execution_sentence - Cast Wake of Ashes if Hammer Of Light Ready is active or Hammer Of Light Free is active(Overridden from 'buff.hammer_of_light_ready.up')
simc
wake_of_ashes,if=(buff.hammer_of_light_ready.up|buff.hammer_of_light_free.up) - Cast Hammer of Light if Hammer Of Light Ready is active or Hammer Of Light Free is active(Overridden from 'buff.hammer_of_light_ready.up')
simc
hammer_of_light,if=(buff.hammer_of_light_ready.up|buff.hammer_of_light_free.up) - Cast Templar's Verdict if you have Final Verdict talented and Empyrean Legacy is active and you have 5 or more Holy Power and Hammer Of Light Ready isn't active and Hammer Of Light Free isn't active(Overridden from 'talent.final_verdict&buff.empyrean_legacy.up&holy_power>=5&buff.hammer_of_light_ready.down')
simc
templars_verdict,if=talent.final_verdict&buff.empyrean_legacy.up&holy_power>=5&!(buff.hammer_of_light_ready.up|buff.hammer_of_light_free.up) - Cast Divine Storm if there are more than 2 enemies and you have 3 or more Holy Power and Hammer Of Light Ready isn't active and Hammer Of Light Free isn't active(Overridden from 'active_enemies>2&holy_power>=3&buff.hammer_of_light_ready.down')
simc
divine_storm,if=active_enemies>2&holy_power>=3&!(buff.hammer_of_light_ready.up|buff.hammer_of_light_free.up) - Cast Templar's Verdict if you have Final Verdict talented and there are 2 or fewer enemies and Hammer Of Light Ready isn't active and Hammer Of Light Free isn't active(Overridden from 'talent.final_verdict&active_enemies<=2&buff.hammer_of_light_ready.down')
simc
templars_verdict,if=talent.final_verdict&active_enemies<=2&!(buff.hammer_of_light_ready.up|buff.hammer_of_light_free.up) - Cast Templar's Verdict if Hammer Of Light Ready isn't active and Hammer Of Light Free isn't active(Overridden from 'buff.hammer_of_light_ready.down')
simc
templars_verdict,if=!(buff.hammer_of_light_ready.up|buff.hammer_of_light_free.up) - Cast Blade of Justice if you have Expurgation talented and Expurgation isn't on the target
simc
blade_of_justice,if=talent.expurgation&!dot.expurgation.ticking - Cast Wake of Ashes if your distance to the target is at most 10
simc
wake_of_ashes,if=target.distance<=10 - Cast Hammer of Light if your distance to the target is at most 10
simc
hammer_of_light,if=target.distance<=10 - Cast Divine Toll if your distance to the target is at most 30 and there are more than 3 enemies and you have 1 or fewer Holy Power
simc
divine_toll,if=target.distance<=30&active_enemies>3&holy_power<=1 - Cast Divine Toll if your distance to the target is at most 30 and you have 3 or fewer Holy Power and there are 2 or fewer enemies
simc
divine_toll,if=target.distance<=30&holy_power<=3&active_enemies<=2 - Cast Divine Storm if Empyrean Power is active and Hammer Of Light Ready isn't active and Hammer Of Light Free isn't active(Overridden from 'buff.empyrean_power.up&buff.hammer_of_light_ready.down')
simc
divine_storm,if=buff.empyrean_power.up&!(buff.hammer_of_light_ready.up|buff.hammer_of_light_free.up) - Cast Blade of Justice if you have 3 or fewer Holy Power
simc
blade_of_justice,if=holy_power<=3 - Cast Judgment if Avenging Wrath is active and you have 3 or fewer Holy Power
simc
judgment,if=buff.avenging_wrath.up&holy_power<=3 - Cast Crusader Strike if you have Templar Strikes talented
simc
crusader_strike,if=talent.templar_strikes - Cast Hammer of the Righteous if you have Templar Strikes talented
simc
hammer_of_the_righteous,if=talent.templar_strikes - Cast Blessed Hammer if you have Templar Strikes talented
simc
blessed_hammer,if=talent.templar_strikes - Cast Templar Slash if you have Templar Strikes talented
simc
templar_slash,if=talent.templar_strikes - Cast Templar Strike if you have Templar Strikes talented
simc
templar_strike,if=talent.templar_strikes - Cast Judgment if you have 3 or fewer Holy Power
simc
judgment,if=holy_power<=3 - Cast Crusader Strike if you don't have Crusading Strikes talented
simc
crusader_strike,if=!talent.crusading_strikes - Cast Hammer of the Righteous if you don't have Crusading Strikes talented
simc
hammer_of_the_righteous,if=!talent.crusading_strikes - Cast Blessed Hammer if you don't have Crusading Strikes talented
simc
blessed_hammer,if=!talent.crusading_strikes - Cast Templar Slash if you don't have Crusading Strikes talented
simc
templar_slash,if=!talent.crusading_strikes - Cast Templar Strike if you don't have Crusading Strikes talented
simc
templar_strike,if=!talent.crusading_strikes - Cast Judgment
simc
judgment
Read from ActionPriorityLists/assisted_combat/paladin_retribution.simc in simulationcraft/simc at 1860cd1d5763, the commit this engine build runs.