Cogspark Works · Rotation
Frost Mage
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
- Frostfire (maybe)
- Movement (maybe)
- Spellslinger (maybe)
Before the pull, done once before the fight starts (6 steps)
Before the pull6 lines
- Cast Arcane Intellect
simc
arcane_intellect - Record your stats before the pull (sim bookkeeping)
simc
snapshot_stats - Cast Summon Water Elemental
simc
summon_water_elemental - Cast Blizzard if (you have Frostfire Bolt talented and the number of enemies is at least 8 minus (3 if you have Freezing Winds talented, else 0) minus (2 if you have Freezing Rain talented, else 0)) or (you don't have Frostfire Bolt talented and the number of enemies is at least 7 minus (2 if you have Freezing Winds talented, else 0) minus (2 if you have Freezing Rain talented, else 0))Blizzard is only used as a precast when it is also hardcasted in the regular rotation at the given number of enemies.
simc
blizzard,if=talent.frostfire_bolt&active_enemies>=(8-3*talent.freezing_winds-2*talent.freezing_rain)|!talent.frostfire_bolt&active_enemies>=(7-2*talent.freezing_winds-2*talent.freezing_rain) - Cast Glacial Spike
simc
glacial_spike - Cast Frostbolt
simc
frostbolt
The main loop3 lines
go through Cooldowns, then carry on below if nothing there fits
simc
call_action_list,name=cdsCooldowns25 lines
- Set ff trinket timing to true when the following holds, otherwise falseall of these:Frostfire uses potions, items and racials after Frozen Orb, Comet Storm or Glacial Spike, or together with Ray of Frost.
- you have Frostfire Bolt talented
- any of these:
- the fight ends within 15 s
- your last spell on the global cooldown was Frozen Orb
- your last spell on the global cooldown was Comet Storm
- your last spell on the global cooldown was Glacial Spike
- all of these:
- Ray of Frost has 1 or more charges
- Freezing has fewer than 12 stacks on the target (counting only what you've had time to react to)
- Fingers of Frost has fewer than 2 stacks (counting only what you've had time to react to)
- Icicles has fewer than 5 stacks (counting only what you've had time to react to)
- any of these:
- Frostfire Empowerment isn't active, or only just appeared
- there are 2 or fewer enemies
- any of these:
- Brain Freeze isn't active, or only just appeared
- Thermal Void is active
simc
variable,name=ff_trinket_timing,value=talent.frostfire_bolt&(fight_remains<15|prev_gcd.1.frozen_orb|prev_gcd.1.comet_storm|prev_gcd.1.glacial_spike|cooldown.ray_of_frost.charges>=1&debuff.freezing.react<12&buff.fingers_of_frost.react<2&buff.icicles.react<5&(!buff.frostfire_empowerment.react|active_enemies<=2)&(!buff.brain_freeze.react|buff.thermal_void.up)) - Set ss trinket timing to true when the following holds, otherwise falseall of these:Spellslinger uses potions, items and racials after Frozen Orb or together with Ray of Frost.
- you don't have Frostfire Bolt talented
- any of these:
- the fight ends within 15 s
- your last spell on the global cooldown was Frozen Orb
- all of these:
- more than 1.5 s into the fight
- Ray of Frost has 1 or more charges
- Freezing has fewer than 6 stacks on the target (counting only what you've had time to react to)
- Fingers of Frost isn't active, or only just appeared
- Icicles has 3 or fewer stacks (counting only what you've had time to react to)
- any of these:
- Brain Freeze isn't active, or only just appeared
- Thermal Void is active
simc
variable,name=ss_trinket_timing,value=!talent.frostfire_bolt&(fight_remains<15|prev_gcd.1.frozen_orb|time>1.5&cooldown.ray_of_frost.charges>=1&debuff.freezing.react<6&!buff.fingers_of_frost.react&buff.icicles.react<=3&(!buff.brain_freeze.react|buff.thermal_void.up)) - Get Power Infusion from an ally if Power Infusion isn't active and (ff trinket timing is true or ss trinket timing is true)Externals.
simc
invoke_external_buff,name=power_infusion,if=buff.power_infusion.down&(variable.ff_trinket_timing|variable.ss_trinket_timing) - Cast Blood Fury if ff trinket timing is true or ss trinket timing is trueRacials.
simc
blood_fury,if=variable.ff_trinket_timing|variable.ss_trinket_timing - Cast Berserking if ff trinket timing is true or ss trinket timing is true
simc
berserking,if=variable.ff_trinket_timing|variable.ss_trinket_timing - Cast Fireblood if ff trinket timing is true or ss trinket timing is true
simc
fireblood,if=variable.ff_trinket_timing|variable.ss_trinket_timing - Cast Ancestral Call if ff trinket timing is true or ss trinket timing is true
simc
ancestral_call,if=variable.ff_trinket_timing|variable.ss_trinket_timing - Use Font of Venomous Rage if your potion is on cooldown or your potion isn't Potion of RecklessnessFlat-damage on-use trinkets are used immediately, after Potion of Recklessness on combat start.
simc
use_item,name=font_of_venomous_rage,if=cooldown.potion.remains|!potion.potion_of_recklessness - Use Vexhuls Everflowing Gland if your potion is on cooldown or your potion isn't Potion of Recklessness
simc
use_item,name=vexhuls_everflowing_gland,if=cooldown.potion.remains|!potion.potion_of_recklessness - Use Nevermelting Ice Crystal if ff trinket timing is true or ss trinket timing is trueHaste trinkets are used after using potion (of recklessness). Crit trinkets are used before using potion. Mastery trinkets are used after using potion if Crit is your highest secondary stat, and before otherwise.
simc
use_item,name=nevermelting_ice_crystal,if=variable.ff_trinket_timing|variable.ss_trinket_timing - Use Freightrunners Flask if ff trinket timing is true or ss trinket timing is true
simc
use_item,name=freightrunners_flask,if=variable.ff_trinket_timing|variable.ss_trinket_timing - Use Vaelgors Final Stare if (ff trinket timing is true or ss trinket timing is true) and (your Haste is more than your Critical Strike or your Versatility is more than your Critical Strike)
simc
use_item,name=vaelgors_final_stare,if=(variable.ff_trinket_timing|variable.ss_trinket_timing)&(stat.haste_rating>stat.crit_rating|stat.versatility_rating>stat.crit_rating) - Drink a potion if ff trinket timing is true or ss trinket timing is true or ((Font of Venomous Rage is off cooldown or Vexhuls Everflowing Gland is off cooldown) and your potion is Potion of Recklessness) or the fight ends within 35 s
simc
potion,if=variable.ff_trinket_timing|variable.ss_trinket_timing|(trinket.font_of_venomous_rage.cooldown.ready|trinket.vexhuls_everflowing_gland.cooldown.ready)&potion.potion_of_recklessness|fight_remains<35 - Use Vaelgors Final Stare if ff trinket timing is true or ss trinket timing is true
simc
use_item,name=vaelgors_final_stare,if=variable.ff_trinket_timing|variable.ss_trinket_timing - Use Vile Vial of Volatile Venom if ff trinket timing is true or ss trinket timing is true
simc
use_item,name=vile_vial_of_volatile_venom,if=variable.ff_trinket_timing|variable.ss_trinket_timing - Use your trinkets
simc
use_items - Use Hex Lords Dooming Idol if ff trinket timing is true or ss trinket timing is true
simc
use_item,name=hex_lords_dooming_idol,if=variable.ff_trinket_timing|variable.ss_trinket_timing - Cast Ray of Frost if you have Frostfire Bolt talentedAt most once every 9999 sStop channeling when you don't have Hand of Frost talented and there are 2 or more enemies and the time between Ray of Frost's ticks is more than the time left on the global cooldown and (you don't have Crystalline Refraction talented or (you have Crystalline Refraction talented and Fingers of Frost has exactly 2 stacks (counting only what you've had time to react to))) and something higher in the list is ready, without waiting for the global cooldownFrostfire Opener: precast Frostfire Bolt/Blizzard --> Ray of Frost --> Flurry --> Frozen Orb.
simc
ray_of_frost,if=talent.frostfire_bolt,interrupt_if=!talent.hand_of_frost_4&active_enemies>=2&tick_time>gcd.remains&(!talent.crystalline_refraction|talent.crystalline_refraction&buff.fingers_of_frost.react=2),interrupt_global=1,interrupt_immediate=1,line_cd=9999 - Cast Flurry if you have Frostfire Bolt talented and you have Wintertide talentedAt most once every 9999 s
simc
flurry,if=talent.frostfire_bolt&talent.wintertide,line_cd=9999 - Cast Frozen Orb if you have Frostfire Bolt talentedAt most once every 9999 s
simc
frozen_orb,if=talent.frostfire_bolt,line_cd=9999 - Cast Flurry if you don't have Frostfire Bolt talented and you have Wintertide talentedAt most once every 9999 sSpellslinger Opener: precast Frostbolt/Blizzard --> Flurry --> Frozen Orb --> Ray of Frost.
simc
flurry,if=!talent.frostfire_bolt&talent.wintertide,line_cd=9999 - Cast Frozen Orb if you don't have Frostfire Bolt talentedAt most once every 9999 s
simc
frozen_orb,if=!talent.frostfire_bolt,line_cd=9999 - Cast Ray of Frost if you don't have Frostfire Bolt talentedAt most once every 9999 s
simc
ray_of_frost,if=!talent.frostfire_bolt,line_cd=9999 - Cast Ray of Frost if the fight ends within 12 s or Ray of Frost has exactly 2 chargesStop channeling when you have Frostfire Bolt talented and you don't have Hand of Frost talented and there are 2 or more enemies and the time between Ray of Frost's ticks is more than the time left on the global cooldown and (you don't have Crystalline Refraction talented or (you have Crystalline Refraction talented and Fingers of Frost has exactly 2 stacks (counting only what you've had time to react to))) and something higher in the list is ready, without waiting for the global cooldownEnd-Of-Fight actions and overcap protection.
simc
ray_of_frost,if=fight_remains<12|charges=2,interrupt_if=talent.frostfire_bolt&!talent.hand_of_frost_4&active_enemies>=2&tick_time>gcd.remains&(!talent.crystalline_refraction|talent.crystalline_refraction&buff.fingers_of_frost.react=2),interrupt_global=1,interrupt_immediate=1 - Cast Comet Storm if the fight ends within 8 s
simc
comet_storm,if=fight_remains<8
Is it true that you have Frostfire Bolt talented?Not set
If so, switch to Frostfire, and nothing below is checked
simc
run_action_list,name=frostfire,if=talent.frostfire_boltFrostfire16 lines
- Cast Glacial Spike if Glacial Spike is active and you've had time to react to it or the time since the fight started minus the fight time when Rapid Refreezing last triggered is less than 1.5 sThese Glacial Spike conditions prevent super-human behaviour. Chaincasting 4p proccs as GS --> X --> GS --> X is reasonable, as long as the cast time/gcd of X is longer than 1 second.
simc
glacial_spike,if=buff.glacial_spike.react|time-buff.rapid_refreezing.last_trigger<1.5 - Cast Comet Storm if there are 2 or fewer enemies or (your 2nd-last spell on the global cooldown was Glacial Spike and (the time since the fight started minus the fight time when Rapid Refreezing last triggered is more than 1.5 s or you don't have the 4-piece set bonus (midnight_season_2)))In AoE, Comet Storm can quickly refill Icicles through the 2pc bonus. Cast it second-to-last after Glacial Spike, allowing time to react to a 4pc proc first.
simc
comet_storm,if=active_enemies<=2|prev_gcd.2.glacial_spike&(time-buff.rapid_refreezing.last_trigger>1.5|!set_bonus.midnight_season_2_4pc) - Cast Flurry if Brain Freeze is active and you've had time to react to it and Thermal Void isn't active
simc
flurry,if=buff.brain_freeze.react&buff.thermal_void.down - Cast Ice Lance if Fingers of Frost has exactly 2 stacks (counting only what you've had time to react to)
simc
ice_lance,if=buff.fingers_of_frost.react=2 - Cast Ray of Frost if you don't have Hand of Frost talentedStop channeling when there are 2 or more enemies and the time between Ray of Frost's ticks is more than the time left on the global cooldown and (you don't have Crystalline Refraction talented or (you have Crystalline Refraction talented and Fingers of Frost has exactly 2 stacks (counting only what you've had time to react to))) and something higher in the list is ready, without waiting for the global cooldownWithout the final Apex Talent, Ray of Frost is cast at higher priority. Against 2+ targets, cancel Ray of Frost on your next gcd. With Crystalline Refraction, wait until 2 Fingers of Frost before cancelling it.
simc
ray_of_frost,if=!talent.hand_of_frost_4,interrupt_if=active_enemies>=2&tick_time>gcd.remains&(!talent.crystalline_refraction|talent.crystalline_refraction&buff.fingers_of_frost.react=2),interrupt_global=1,interrupt_immediate=1 - Cast Frozen Orb
simc
frozen_orb - Cast Blizzard if the number of enemies is at least 8 minus (3 if you have Freezing Winds talented, else 0) minus (2 if you have Freezing Rain talented, else 0) or (there are 3 or more enemies and Freezing Rain is active)
simc
blizzard,if=active_enemies>=(8-3*talent.freezing_winds-2*talent.freezing_rain)|active_enemies>=3&buff.freezing_rain.up - Cast Ice Lance if Fingers of Frost is active and you've had time to react to it and Thermal Void is activeSingle Finger of Frost procs are held unless Thermal Void is active. They may still get spent passively when the enemy has 12+ stacks of Freezing.
simc
ice_lance,if=buff.fingers_of_frost.react&buff.thermal_void.up - Cast Ice Lance if Freezing has 12 or more stacks on the target
simc
ice_lance,if=debuff.freezing.stack>=12 - Cast Flurry if Flurry is off cooldown
simc
flurry,if=cooldown_react - Cast Ice Nova if there are 5 or more enemies and you have Cone of Frost talented and Frostfire Empowerment isn't active, or only just appeared and Ray of Frost has 1 or more charges
simc
ice_nova,if=active_enemies>=5&talent.cone_of_frost&!buff.frostfire_empowerment.react&cooldown.ray_of_frost.charges>=1 - Cast Cone of Cold if there are 5 or more enemies and you have Cone of Frost talented and Frostfire Empowerment isn't active, or only just appeared and Ray of Frost has 1 or more charges
simc
cone_of_cold,if=active_enemies>=5&talent.cone_of_frost&!buff.frostfire_empowerment.react&cooldown.ray_of_frost.charges>=1 - Cast Ray of Frost if there are 2 or fewer enemies or Frostfire Empowerment isn't active, or only just appearedWith the final Apex Talent, spend Frostfire Empowerment in AoE before casting Ray of Frost. This builds Freezing stacks before the following Comet Storm.
simc
ray_of_frost,if=active_enemies<=2|!buff.frostfire_empowerment.react - Cast Glacial Spike
simc
glacial_spike - Cast Frostbolt
simc
frostbolt go through Movement, then carry on below if nothing there fits
simc
call_action_list,name=movementMovement5 lines
- Cast Any Blink if the distance you still have to move is more than 5
simc
any_blink,if=movement.distance>5 - Cast Blizzard if Freezing Rain is active
simc
blizzard,if=buff.freezing_rain.up - Cast Ice Nova if you have Cone of Frost talented
simc
ice_nova,if=talent.cone_of_frost - Cast Cone of Cold if you have Cone of Frost talented
simc
cone_of_cold,if=talent.cone_of_frost - Cast Ice Lance
simc
ice_lance
switch to Spellslinger, and nothing below is checked
simc
run_action_list,name=spellslingerSpellslinger16 lines
- Cast Comet Storm
simc
comet_storm - Cast Flurry if Brain Freeze is active and you've had time to react to it and Thermal Void isn't active
simc
flurry,if=buff.brain_freeze.react&buff.thermal_void.down - Cast Ice Lance if Fingers of Frost has exactly 2 stacks (counting only what you've had time to react to)
simc
ice_lance,if=buff.fingers_of_frost.react=2 - Cast Frozen Orb
simc
frozen_orb - Cast Glacial Spike if Glacial Spike is active and you've had time to react to it or the time since the fight started minus the fight time when Rapid Refreezing last triggered is less than 1.5 sThese Glacial Spike conditions prevent super-human behaviour. Chaincasting 4p proccs as GS --> X --> GS --> X is reasonable, as long as the cast time/gcd of X is longer than 1 second.
simc
glacial_spike,if=buff.glacial_spike.react|time-buff.rapid_refreezing.last_trigger<1.5 - Cast Blizzard if the number of enemies is at least 5 minus (2 if you have Freezing Winds talented, else 0) and Freezing Rain is active
simc
blizzard,if=active_enemies>=(5-2*talent.freezing_winds)&buff.freezing_rain.up - Cast Ice Lance if Fingers of Frost is active and you've had time to react to it
simc
ice_lance,if=buff.fingers_of_frost.react - Cast Ice Lance if Freezing has 6 or more stacks on the target (counting only what you've had time to react to)
simc
ice_lance,if=debuff.freezing.react>=6 - Cast Ray of Frost if Icicles has 3 or fewer stacks (counting only what you've had time to react to) or there are 3 or more enemiesThis Ray of Frost optimization improves ressource overflow slightly. It is neutral in AoE.
simc
ray_of_frost,if=buff.icicles.react<=3|active_enemies>=3 - Cast Flurry if Flurry is off cooldown
simc
flurry,if=cooldown_react - Cast Ice Nova if there are 4 or more enemies and you have Cone of Frost talented
simc
ice_nova,if=active_enemies>=4&talent.cone_of_frost - Cast Cone of Cold if there are 4 or more enemies and you have Cone of Frost talented
simc
cone_of_cold,if=active_enemies>=4&talent.cone_of_frost - Cast Blizzard if the number of enemies is at least 7 minus (2 if you have Freezing Winds talented, else 0) minus (2 if you have Freezing Rain talented, else 0)
simc
blizzard,if=active_enemies>=(7-2*talent.freezing_winds-2*talent.freezing_rain) - Cast Glacial Spike
simc
glacial_spike - Cast Frostbolt
simc
frostbolt go through Movement, then carry on below if nothing there fits
simc
call_action_list,name=movementMovement5 lines
- Cast Any Blink if the distance you still have to move is more than 5
simc
any_blink,if=movement.distance>5 - Cast Blizzard if Freezing Rain is active
simc
blizzard,if=buff.freezing_rain.up - Cast Ice Nova if you have Cone of Frost talented
simc
ice_nova,if=talent.cone_of_frost - Cast Cone of Cold if you have Cone of Frost talented
simc
cone_of_cold,if=talent.cone_of_frost - Cast Ice Lance
simc
ice_lance
Read from ActionPriorityLists/default/mage_frost.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 loop2 lines
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 Combat17 lines
- Cast Arcane Intellect if Arcane Intellect isn't activeThis is the default action priority list from the game's Assisted Combat system.
simc
arcane_intellect,if=aura.arcane_intellect.down - Cast Comet Storm if Comet Storm is active
simc
comet_storm,if=buff.comet_storm.up - Cast Frozen Orb
simc
frozen_orb - Cast Blizzard if there are more than 3 enemies
simc
blizzard,if=active_enemies>3 - Cast Ray of Frost if Freezing has 5 or fewer stacks on the target
simc
ray_of_frost,if=debuff.freezing.stack<=5 - Cast Ice Lance if Fingers of Frost is active and Freezing is active on the target
simc
ice_lance,if=buff.fingers_of_frost.up&debuff.freezing.up - Cast Glacial Spike if Glacial Spike is active and Freezing has 16 or fewer stacks on the target
simc
glacial_spike,if=buff.glacial_spike.up&debuff.freezing.stack<=16 - Cast Frostbolt if Glacial Spike is active and Freezing has 16 or fewer stacks on the target
simc
frostbolt,if=buff.glacial_spike.up&debuff.freezing.stack<=16 - Cast Flurry if Brain Freeze is active and Freezing has 16 or fewer stacks on the target
simc
flurry,if=buff.brain_freeze.up&debuff.freezing.stack<=16 - Cast Ice Lance if Freezing has 5 or more stacks on the target
simc
ice_lance,if=debuff.freezing.stack>=5 - Cast Flurry
simc
flurry - Cast Glacial Spike if Frostfire Empowerment is active
simc
glacial_spike,if=buff.frostfire_empowerment.up - Cast Frostbolt if Frostfire Empowerment is active
simc
frostbolt,if=buff.frostfire_empowerment.up - Cast Glacial Spike
simc
glacial_spike,cooldown_allow_casting_success=1 - Cast Frostbolt
simc
frostbolt,cooldown_allow_casting_success=1 - Cast Glacial Spike
simc
glacial_spike - Cast Frostbolt
simc
frostbolt
Read from ActionPriorityLists/assisted_combat/mage_frost.simc in simulationcraft/simc at 1860cd1d5763, the commit this engine build runs.