Cogspark

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.

Your situation
Enemies in range
Your talents (click: talented, not talented, not set)
More conditions (3)
you have exactly 5 Holy Power
Wake of Ashes is on cooldown
Hammer Of Light Free has less than 2 global cooldowns left, or isn't active
Checked
  1. The main loop
  2. Cooldowns
  3. Generators
  4. Finishers
Before the pull, done once before the fight starts (8 steps)

Before the pull8 lines

  1. Record your stats before the pull (sim bookkeeping)Snapshot raid buffed stats before combat begins and pre-potting is done.
    simcsnapshot_stats
  2. Set trinket 1 buffs to true when the following holds, otherwise false
    any 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
    simcvariable,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
  3. Set trinket 2 buffs to true when the following holds, otherwise false
    any 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
    simcvariable,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
  4. Set trinket 1 sync to 1 when the following holds, otherwise to 0.5
    all 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
    simcvariable,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)
  5. Set trinket 2 sync to 1 when the following holds, otherwise to 0.5
    all 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
    simcvariable,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)
  6. Set trinket priority to 2 when the following holds, otherwise to 1
    any 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
    simcvariable,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))
  7. Use Algethar Puzzle Box if trinket 1 is Algethar Puzzle Box or trinket 2 is Algethar Puzzle Box
    simcuse_item,name=algethar_puzzle_box,if=(trinket.1.is.algethar_puzzle_box|trinket.2.is.algethar_puzzle_box)
  8. Reset pre es wake to its starting valuepre es wake starts each fight at 0
    simcvariable,name=pre_es_wake,op=reset,default=0

The main loop4 lines

  1. Start auto-attacking
    simcauto_attack
  2. Cast Rebuke
    simcrebuke
  3. go through Cooldowns, then carry on below if nothing there fits

    simccall_action_list,name=cooldowns

    Cooldowns11 lines

    1. 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)
      simcuse_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)
    2. 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))
      simcpotion,if=buff.avenging_wrath.up|fight_remains<30|talent.radiant_glory&cooldown.wake_of_ashes.remains=0&(!talent.holy_flames|dot.expurgation.ticking)
    3. 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
      simcuse_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
    4. 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
      simcuse_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
    5. 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))
      simcuse_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)
    6. 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))
      simcuse_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)
    7. 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))
      simcinvoke_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)
    8. 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
      simclights_judgment,if=!raid_event.adds.exists|raid_event.adds.in>75|raid_event.adds.up
    9. 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))
      simcfireblood,if=buff.avenging_wrath.up|talent.radiant_glory&cooldown.wake_of_ashes.remains=0&(!talent.holy_flames|dot.expurgation.ticking)
    10. 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)
      simcexecution_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)
    11. 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))
      simcavenging_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)
  4. go through Generators, then carry on below if nothing there fits

    simccall_action_list,name=generators

    Generators14 lines

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

      simccall_action_list,name=finishers,if=holy_power=5&cooldown.wake_of_ashes.remains|buff.hammer_of_light_free.remains<gcd*2
    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)
      simcwake_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)
    3. 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)
      simcdivine_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)
    4. 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)
      simcblade_of_justice,if=(buff.art_of_war.stack=2|buff.righteous_cause.stack=2)&(!talent.walk_into_light|!buff.avenging_wrath.up)
    5. Cast Hammer of Wrath if you have Walk Into Light talented and Hammer of Wrath has exactly 2 charges
      simchammer_of_wrath,if=talent.walk_into_light&cooldown.hammer_of_wrath.charges=2
    6. go through Finishers, then carry on below if nothing there fits

      simccall_action_list,name=finishers

      Finishers4 lines

      1. Set ds castable to true when the following holds, otherwise false
        all 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
        simcvariable,name=ds_castable,value=(active_enemies>=2|buff.divine_arbiter_verdict.up)&!buff.empyrean_legacy.up&!buff.divine_arbiter_divine_storm.up
      2. 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))
        simchammer_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)
      3. Cast Divine Storm if ds castable is true
        simcdivine_storm,if=variable.ds_castable
      4. Cast Templar's Verdict
        simctemplars_verdict
    7. Cast Hammer of Wrath if you have Walk Into Light talented
      simchammer_of_wrath,if=talent.walk_into_light
    8. Cast Blade of Justice
      simcblade_of_justice
    9. Cast Hammer of Wrath
      simchammer_of_wrath
    10. Cast Judgment
      simcjudgment
    11. Cast Templar Strike
      simctemplar_strike
    12. Cast Templar Slash
      simctemplar_slash
    13. Cast Crusader Strike
      simccrusader_strike
    14. Cast Arcane Torrent
      simcarcane_torrent

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