Cogspark

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.

Your situation
Enemies in range
Your talents (click: talented, not talented, not set)
Checked
  1. The main loop
  2. Cooldowns
  3. Frostfire (maybe)
  4. Movement (maybe)
  5. Spellslinger (maybe)
Before the pull, done once before the fight starts (6 steps)

Before the pull6 lines

  1. Cast Arcane Intellect
    simcarcane_intellect
  2. Record your stats before the pull (sim bookkeeping)
    simcsnapshot_stats
  3. Cast Summon Water Elemental
    simcsummon_water_elemental
  4. 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.
    simcblizzard,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)
  5. Cast Glacial Spike
    simcglacial_spike
  6. Cast Frostbolt
    simcfrostbolt

The main loop3 lines

  1. go through Cooldowns, then carry on below if nothing there fits

    simccall_action_list,name=cds

    Cooldowns25 lines

    1. Set ff trinket timing to true when the following holds, otherwise false
      all of these:
      • 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
      Frostfire uses potions, items and racials after Frozen Orb, Comet Storm or Glacial Spike, or together with Ray of Frost.
      simcvariable,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))
    2. Set ss trinket timing to true when the following holds, otherwise false
      all of these:
      • 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
      Spellslinger uses potions, items and racials after Frozen Orb or together with Ray of Frost.
      simcvariable,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))
    3. 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.
      simcinvoke_external_buff,name=power_infusion,if=buff.power_infusion.down&(variable.ff_trinket_timing|variable.ss_trinket_timing)
    4. Cast Blood Fury if ff trinket timing is true or ss trinket timing is trueRacials.
      simcblood_fury,if=variable.ff_trinket_timing|variable.ss_trinket_timing
    5. Cast Berserking if ff trinket timing is true or ss trinket timing is true
      simcberserking,if=variable.ff_trinket_timing|variable.ss_trinket_timing
    6. Cast Fireblood if ff trinket timing is true or ss trinket timing is true
      simcfireblood,if=variable.ff_trinket_timing|variable.ss_trinket_timing
    7. Cast Ancestral Call if ff trinket timing is true or ss trinket timing is true
      simcancestral_call,if=variable.ff_trinket_timing|variable.ss_trinket_timing
    8. 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.
      simcuse_item,name=font_of_venomous_rage,if=cooldown.potion.remains|!potion.potion_of_recklessness
    9. Use Vexhuls Everflowing Gland if your potion is on cooldown or your potion isn't Potion of Recklessness
      simcuse_item,name=vexhuls_everflowing_gland,if=cooldown.potion.remains|!potion.potion_of_recklessness
    10. 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.
      simcuse_item,name=nevermelting_ice_crystal,if=variable.ff_trinket_timing|variable.ss_trinket_timing
    11. Use Freightrunners Flask if ff trinket timing is true or ss trinket timing is true
      simcuse_item,name=freightrunners_flask,if=variable.ff_trinket_timing|variable.ss_trinket_timing
    12. 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)
      simcuse_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)
    13. 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
      simcpotion,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
    14. Use Vaelgors Final Stare if ff trinket timing is true or ss trinket timing is true
      simcuse_item,name=vaelgors_final_stare,if=variable.ff_trinket_timing|variable.ss_trinket_timing
    15. Use Vile Vial of Volatile Venom if ff trinket timing is true or ss trinket timing is true
      simcuse_item,name=vile_vial_of_volatile_venom,if=variable.ff_trinket_timing|variable.ss_trinket_timing
    16. Use your trinkets
      simcuse_items
    17. Use Hex Lords Dooming Idol if ff trinket timing is true or ss trinket timing is true
      simcuse_item,name=hex_lords_dooming_idol,if=variable.ff_trinket_timing|variable.ss_trinket_timing
    18. 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.
      simcray_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
    19. Cast Flurry if you have Frostfire Bolt talented and you have Wintertide talentedAt most once every 9999 s
      simcflurry,if=talent.frostfire_bolt&talent.wintertide,line_cd=9999
    20. Cast Frozen Orb if you have Frostfire Bolt talentedAt most once every 9999 s
      simcfrozen_orb,if=talent.frostfire_bolt,line_cd=9999
    21. 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.
      simcflurry,if=!talent.frostfire_bolt&talent.wintertide,line_cd=9999
    22. Cast Frozen Orb if you don't have Frostfire Bolt talentedAt most once every 9999 s
      simcfrozen_orb,if=!talent.frostfire_bolt,line_cd=9999
    23. Cast Ray of Frost if you don't have Frostfire Bolt talentedAt most once every 9999 s
      simcray_of_frost,if=!talent.frostfire_bolt,line_cd=9999
    24. 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.
      simcray_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
    25. Cast Comet Storm if the fight ends within 8 s
      simccomet_storm,if=fight_remains<8
  2. Is it true that you have Frostfire Bolt talented?Not set

    If so, switch to Frostfire, and nothing below is checked

    simcrun_action_list,name=frostfire,if=talent.frostfire_bolt

    Frostfire16 lines

    1. 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.
      simcglacial_spike,if=buff.glacial_spike.react|time-buff.rapid_refreezing.last_trigger<1.5
    2. 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.
      simccomet_storm,if=active_enemies<=2|prev_gcd.2.glacial_spike&(time-buff.rapid_refreezing.last_trigger>1.5|!set_bonus.midnight_season_2_4pc)
    3. Cast Flurry if Brain Freeze is active and you've had time to react to it and Thermal Void isn't active
      simcflurry,if=buff.brain_freeze.react&buff.thermal_void.down
    4. Cast Ice Lance if Fingers of Frost has exactly 2 stacks (counting only what you've had time to react to)
      simcice_lance,if=buff.fingers_of_frost.react=2
    5. 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.
      simcray_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
    6. Cast Frozen Orb
      simcfrozen_orb
    7. 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)
      simcblizzard,if=active_enemies>=(8-3*talent.freezing_winds-2*talent.freezing_rain)|active_enemies>=3&buff.freezing_rain.up
    8. 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.
      simcice_lance,if=buff.fingers_of_frost.react&buff.thermal_void.up
    9. Cast Ice Lance if Freezing has 12 or more stacks on the target
      simcice_lance,if=debuff.freezing.stack>=12
    10. Cast Flurry if Flurry is off cooldown
      simcflurry,if=cooldown_react
    11. 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
      simcice_nova,if=active_enemies>=5&talent.cone_of_frost&!buff.frostfire_empowerment.react&cooldown.ray_of_frost.charges>=1
    12. 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
      simccone_of_cold,if=active_enemies>=5&talent.cone_of_frost&!buff.frostfire_empowerment.react&cooldown.ray_of_frost.charges>=1
    13. 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.
      simcray_of_frost,if=active_enemies<=2|!buff.frostfire_empowerment.react
    14. Cast Glacial Spike
      simcglacial_spike
    15. Cast Frostbolt
      simcfrostbolt
    16. go through Movement, then carry on below if nothing there fits

      simccall_action_list,name=movement

      Movement5 lines

      1. Cast Any Blink if the distance you still have to move is more than 5
        simcany_blink,if=movement.distance>5
      2. Cast Blizzard if Freezing Rain is active
        simcblizzard,if=buff.freezing_rain.up
      3. Cast Ice Nova if you have Cone of Frost talented
        simcice_nova,if=talent.cone_of_frost
      4. Cast Cone of Cold if you have Cone of Frost talented
        simccone_of_cold,if=talent.cone_of_frost
      5. Cast Ice Lance
        simcice_lance
  3. switch to Spellslinger, and nothing below is checked

    simcrun_action_list,name=spellslinger

    Spellslinger16 lines

    1. Cast Comet Storm
      simccomet_storm
    2. Cast Flurry if Brain Freeze is active and you've had time to react to it and Thermal Void isn't active
      simcflurry,if=buff.brain_freeze.react&buff.thermal_void.down
    3. Cast Ice Lance if Fingers of Frost has exactly 2 stacks (counting only what you've had time to react to)
      simcice_lance,if=buff.fingers_of_frost.react=2
    4. Cast Frozen Orb
      simcfrozen_orb
    5. 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.
      simcglacial_spike,if=buff.glacial_spike.react|time-buff.rapid_refreezing.last_trigger<1.5
    6. 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
      simcblizzard,if=active_enemies>=(5-2*talent.freezing_winds)&buff.freezing_rain.up
    7. Cast Ice Lance if Fingers of Frost is active and you've had time to react to it
      simcice_lance,if=buff.fingers_of_frost.react
    8. Cast Ice Lance if Freezing has 6 or more stacks on the target (counting only what you've had time to react to)
      simcice_lance,if=debuff.freezing.react>=6
    9. 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.
      simcray_of_frost,if=buff.icicles.react<=3|active_enemies>=3
    10. Cast Flurry if Flurry is off cooldown
      simcflurry,if=cooldown_react
    11. Cast Ice Nova if there are 4 or more enemies and you have Cone of Frost talented
      simcice_nova,if=active_enemies>=4&talent.cone_of_frost
    12. Cast Cone of Cold if there are 4 or more enemies and you have Cone of Frost talented
      simccone_of_cold,if=active_enemies>=4&talent.cone_of_frost
    13. 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)
      simcblizzard,if=active_enemies>=(7-2*talent.freezing_winds-2*talent.freezing_rain)
    14. Cast Glacial Spike
      simcglacial_spike
    15. Cast Frostbolt
      simcfrostbolt
    16. go through Movement, then carry on below if nothing there fits

      simccall_action_list,name=movement

      Movement5 lines

      1. Cast Any Blink if the distance you still have to move is more than 5
        simcany_blink,if=movement.distance>5
      2. Cast Blizzard if Freezing Rain is active
        simcblizzard,if=buff.freezing_rain.up
      3. Cast Ice Nova if you have Cone of Frost talented
        simcice_nova,if=talent.cone_of_frost
      4. Cast Cone of Cold if you have Cone of Frost talented
        simccone_of_cold,if=talent.cone_of_frost
      5. Cast Ice Lance
        simcice_lance

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