Cogspark

Cogspark Works · Rotation

Fire 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
  • cast remains time: yes · when always
Your talents (click: talented, not talented, not set)
More conditions (14)
at least combustion delay into the fight
Combustion comes off cooldown within combustion precast time
Combustion is active
Combustion is off cooldown
Pyroclasm has fewer than 2 stacks
you are casting or channeling Pyroblast
your Pyroblast cast has more than 0.2 s left
Pyroclasm has exactly 2 stacks
Fire Blast has 2.9 or more charges
Combustion has less than Pyroblast's cast time left, or isn't active
the number of enemies is less than sf combustion flamestrike
Pyroclasm isn't active
you are casting or channeling Flamestrike
Combustion comes off cooldown within combustion precast time plus (one global cooldown times (1 if (you have Sunfury Execution talented and Meteor comes off cooldown within one global cooldown), else 0))
Checked
  1. The main loop
  2. Cooldowns
  3. Ff combustion (maybe)
  4. Fireblast (maybe)
  5. Sf combustion (maybe)
  6. Ff filler (maybe)
  7. Sf filler (maybe)
Before the pull, done once before the fight starts (9 steps)

Before the pull9 lines

  1. Cast Arcane Intellect
    simcarcane_intellect
  2. Set cast remains time to 0.2
    simcvariable,name=cast_remains_time,value=0.2
  3. Reset flamestriking to its starting valueflamestriking starts each fight at 1flamestriking is the on/off switch, overridable via apl_variable.flamestriking=0
    simcvariable,name=flamestriking,op=reset,default=1
  4. Set combustion delay to (18 if you have Firestarter talented, else 0) minus ((10 if the expected fight length is less than 60 s, else 0) plus (10 if the expected fight length is less than 30 s, else 0)) minus (10 if (the remainder of the expected fight length divided by 60 is at least 25 and the remainder of the expected fight length divided by 60 is at most 40), else 0)Delay Combustion if playing Firestarter until the target is >=90% HP unless it means losing casts of Combustion. Do not do so if fight length is short.
    simcvariable,name=combustion_delay,value=(18*talent.firestarter)-(10*(expected_combat_length<60)+10*(expected_combat_length<30))-10*(((expected_combat_length%%60)>=25)&((expected_combat_length%%60)<=40))
  5. Set steroid trinket equipped to true when the following holds, otherwise false
    any of these:
    • you have Freightrunners Flask equipped
    • you have Emberwing Feather equipped
    • you have Vaelgors Final Stare equipped
    • you have Galactic Gladiators Badge of Ferocity equipped
    • you have Nevermelting Ice Crystal equipped
    • you have Ever Collapsing Void Fissure equipped
    • you have Signet of the Priory equipped
    • you have Sealed Chaos Urn equipped
    • you have Stormbound Emblem of Dazar equipped
    • you have Hex Lords Dooming Idol equipped
    • you have Vile Vial of Volatile Venom equipped
    • you have Venomous Gladiators Badge of Ferocity equipped
    simcvariable,name=steroid_trinket_equipped,op=set,value=equipped.freightrunners_flask|equipped.emberwing_feather|equipped.vaelgors_final_stare|equipped.galactic_gladiators_badge_of_ferocity|equipped.nevermelting_ice_crystal|equipped.ever_collapsing_void_fissure|equipped.signet_of_the_priory|equipped.sealed_chaos_urn|equipped.stormbound_emblem_of_dazar|equipped.hex_lords_dooming_idol|equipped.vile_vial_of_volatile_venom|equipped.venomous_gladiators_badge_of_ferocity
  6. Set nonsteroid trinket equipped to true when the following holds, otherwise false
    any of these:
    • you have Wraps of Cosmic Madness equipped
    • you have Astalors Anguish Agitator equipped
    • you have Font of Venomous Rage equipped
    • you have Vexhuls Everflowing Gland equipped
    • you have Spiritrending Poison equipped
    • you have Ophidian Bone Whistle equipped
    simcvariable,name=nonsteroid_trinket_equipped,op=set,value=equipped.wraps_of_cosmic_madness|equipped.astalors_anguish_agitator|equipped.font_of_venomous_rage|equipped.vexhuls_everflowing_gland|equipped.spiritrending_poison|equipped.ophidian_bone_whistle
  7. Record your stats before the pull (sim bookkeeping)
    simcsnapshot_stats
  8. Cast Mirror Image
    simcmirror_image
  9. Cast Pyroblast
    simcpyroblast

The main loop10 lines

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

    simccall_action_list,name=cds

    Cooldowns18 lines

    1. Set combustion precast time to ((Scorch's cast time times (1 if Pyroclasm isn't active, else 0)) times (1 if the target's health is at or below Scorch's threshold, else 0)) plus ((Fireball's cast time times (1 if Pyroclasm isn't active, else 0)) times (1 if the target's health isn't at or below Scorch's threshold, else 0)) plus (Pyroblast's cast time times (1 if Pyroclasm is active, else 0)) minus cast remains time
      simcvariable,name=combustion_precast_time,value=(action.scorch.cast_time*!buff.pyroclasm.up*scorch_execute.active)+(action.fireball.cast_time*!buff.pyroclasm.up*!scorch_execute.active)+(action.pyroblast.cast_time*buff.pyroclasm.up)-variable.cast_remains_time
    2. Drink a potion if at least 8 if (you have Firestarter talented and you have Spellfire Spheres talented), else 0 into the fight or Combustion has more than 6 s left or the fight ends within 35 sUse Potion on pull. Delay by about 8 seconds if playing with Firestarter as Sunfury.
      simcpotion,if=time>=(8*(talent.firestarter&talent.spellfire_spheres))|buff.combustion.remains>6|fight_remains<35
    3. Use Vile Vial of Volatile Venom if Combustion has more than 6 s left or the fight ends within 20 s
      simcuse_item,name=vile_vial_of_volatile_venom,if=buff.combustion.remains>6|fight_remains<20
    4. Use Stormbound Emblem of Dazar if (at least combustion delay into the fight and Combustion comes off cooldown within 2 s and Combustion isn't active and (Bloodlust isn't active or (one global cooldown is more than 0.76 s and you don't have Hex Lords Dooming Idol equipped and (you don't have Vile Vial of Volatile Venom equipped or (trinket 1 is Vile Vial of Volatile Venom and trinket 1 has more than 20 s of cooldown left) or (trinket 2 is Vile Vial of Volatile Venom and trinket 2 has more than 20 s of cooldown left))))) or the fight ends within 25 s
      simcuse_item,name=stormbound_emblem_of_dazar,if=time>=variable.combustion_delay&cooldown.combustion.remains<2&buff.combustion.down&(buff.bloodlust.down|gcd.max>0.76&!equipped.hex_lords_dooming_idol&(!equipped.vile_vial_of_volatile_venom|trinket.1.is.vile_vial_of_volatile_venom&trinket.1.cooldown.remains>20|trinket.2.is.vile_vial_of_volatile_venom&trinket.2.cooldown.remains>20))|fight_remains<25
    5. Use Sethraliss Defiled Relic if Combustion has more than 6 s left or the fight ends within 20 s
      simcuse_item,name=sethraliss_defiled_relic,if=buff.combustion.remains>6|fight_remains<20
    6. Use Hex Lords Dooming Idol if Combustion has more than 6 s left or the fight ends within 30 s
      simcuse_item,name=hex_lords_dooming_idol,if=buff.combustion.remains>6|fight_remains<30
    7. Use Vaelgors Final Stare if Combustion has more than 6 s left or the fight ends within 20 s
      simcuse_item,name=vaelgors_final_stare,if=buff.combustion.remains>6|fight_remains<20
    8. Use Emberwing Feather if Combustion has more than 6 s left or the fight ends within 20 s
      simcuse_item,name=emberwing_feather,if=buff.combustion.remains>6|fight_remains<20
    9. Use Venomous Gladiators Badge of Ferocity if Combustion has more than 6 s left or the fight ends within 20 s
      simcuse_item,name=venomous_gladiators_badge_of_ferocity,if=buff.combustion.remains>6|fight_remains<20
    10. Use Galactic Gladiators Badge of Ferocity if Combustion has more than 6 s left or the fight ends within 20 s
      simcuse_item,name=galactic_gladiators_badge_of_ferocity,if=buff.combustion.remains>6|fight_remains<20
    11. Use Ever Collapsing Void Fissure if Combustion has more than 6 s left or the fight ends within 20 s
      simcuse_item,name=ever_collapsing_void_fissure,if=buff.combustion.remains>6|fight_remains<20
    12. Use Freightrunners Flask if Combustion has more than 6 s left or the fight ends within 20 s
      simcuse_item,name=freightrunners_flask,if=buff.combustion.remains>6|fight_remains<20
    13. Use your trinkets if nonsteroid trinket equipped is true and ((more than combustion delay into the fight and Combustion has more than 20 s of cooldown left) or (at most combustion delay into the fight and (combustion delay is at least 18 or steroid trinket equipped is false))) and Combustion isn't active and Hyperthermia isn't activeNon-steroid trinkets are used outside cooldowns. They can be used on pull if Combustion is delayed an ample amount of time or you don't have a steroid trinket equipped.
      simcuse_items,if=variable.nonsteroid_trinket_equipped&(time>variable.combustion_delay&cooldown.combustion.remains>20|time<=variable.combustion_delay&(variable.combustion_delay>=18|!variable.steroid_trinket_equipped))&buff.combustion.down&buff.hyperthermia.down
    14. Cast Ancestral Call if Combustion has more than 6 s left or the fight ends within 20 s
      simcancestral_call,if=buff.combustion.remains>6|fight_remains<20
    15. Cast Berserking if Combustion has more than 6 s left or the fight ends within 20 s
      simcberserking,if=buff.combustion.remains>6|fight_remains<20
    16. Cast Blood Fury if Combustion has more than 6 s left or the fight ends within 20 s
      simcblood_fury,if=buff.combustion.remains>6|fight_remains<20
    17. Cast Fireblood if Combustion has more than 6 s left or the fight ends within 10 s
      simcfireblood,if=buff.combustion.remains>6|fight_remains<10
    18. Get Power Infusion from an ally if Power Infusion isn't active and (Combustion has more than 6 s left or the fight ends within 25 s)
      simcinvoke_external_buff,name=power_infusion,if=buff.power_infusion.down&(buff.combustion.remains>6|fight_remains<25)
  2. Set flamestriking active to true when the following holds, otherwise false
    all of these:
    • flamestriking is true
    • any of these:
      • more than combustion delay into the fight
      • all of these:
        • you have Firestarter talented
        • Pyroclasm is active
        • Hot Streak isn't active, or only just appeared
    Turns off flamestriking during Firestarter, but allows Flamestrike with Pyroclasm.
    simcvariable,name=flamestriking_active,op=set,value=variable.flamestriking&(time>variable.combustion_delay|talent.firestarter&buff.pyroclasm.up&buff.hot_streak.react=0)
  3. Set ff combustion flamestrike to 3 plus (999 if you don't have Fuel the Fire talented, else 0) plus (999 if flamestriking active is false, else 0)
    you don't have Spellfire Spheres talented
    Modifiable target count cutoffs for when to cast Flamestrike. Always turned off if missing Fuel the Fire or during Firestarter.
    simcvariable,name=ff_combustion_flamestrike,op=set,if=!talent.spellfire_spheres,value=3+(999*!talent.fuel_the_fire+999*!variable.flamestriking_active)
  4. Set ff filler flamestrike to 3 plus (999 if you don't have Fuel the Fire talented, else 0) plus (999 if flamestriking active is false, else 0)
    you don't have Spellfire Spheres talented
    simcvariable,name=ff_filler_flamestrike,op=set,if=!talent.spellfire_spheres,value=3+(999*!talent.fuel_the_fire+999*!variable.flamestriking_active)
  5. Set sf combustion flamestrike to 3 plus (999 if you don't have Fuel the Fire talented, else 0) plus (999 if flamestriking active is false, else 0)
    you have Spellfire Spheres talented
    simcvariable,name=sf_combustion_flamestrike,op=set,if=talent.spellfire_spheres,value=3+(999*!talent.fuel_the_fire+999*!variable.flamestriking_active)
  6. Set sf filler flamestrike to 3 plus (999 if you don't have Fuel the Fire talented, else 0) plus (999 if flamestriking active is false, else 0)
    you have Spellfire Spheres talented
    simcvariable,name=sf_filler_flamestrike,op=set,if=talent.spellfire_spheres,value=3+(999*!talent.fuel_the_fire+999*!variable.flamestriking_active)
  7. Is it true that you have Frostfire Bolt talented and at least combustion delay into the fight and (Combustion comes off cooldown within combustion precast time or Combustion is active or Combustion is off cooldown)?Not set

    If so, switch to Ff combustion, and nothing below is checked

    Combustion is delayed 18 seconds on pull for all Firestarter builds to simulate realistic timings for when a boss drops below 90% HP.
    simcrun_action_list,name=ff_combustion,if=talent.frostfire_bolt&((time>=variable.combustion_delay)&(cooldown.combustion.remains<=variable.combustion_precast_time|buff.combustion.up|cooldown.combustion.ready))

    Ff combustion12 lines

    1. Cast Combustion if (Combustion isn't active and you are casting or channeling Fireball and you aren't casting Fireball, or it finishes within cast remains time) or (Meteor is in flight and the time until Meteor lands is less than 0.3 s) or (you are casting or channeling Pyroblast and you aren't casting Pyroblast, or it finishes within cast remains time) or your last spell on the global cooldown was MeteorUsed without waiting for the global cooldownCan be used while casting
      simccombustion,use_off_gcd=1,use_while_casting=1,if=buff.combustion.down&action.fireball.executing&(action.fireball.execute_remains<variable.cast_remains_time)|action.meteor.in_flight&(action.meteor.in_flight_remains<0.3)|action.pyroblast.executing&(action.pyroblast.execute_remains<variable.cast_remains_time)|prev_gcd.1.meteor
    2. Cast Flamestrike if Pyroclasm is active and Hot Streak isn't active, or only just appeared and Combustion isn't active and the number of enemies is at least ff combustion flamestrikePrecast into Combustion. Prioritize Pyroclasm if available.
      simcflamestrike,if=buff.pyroclasm.up&!buff.hot_streak.react&buff.combustion.down&active_enemies>=variable.ff_combustion_flamestrike
    3. Cast Pyroblast if Pyroclasm is active and Hot Streak isn't active, or only just appeared and Combustion isn't active
      simcpyroblast,if=buff.pyroclasm.up&!buff.hot_streak.react&buff.combustion.down
    4. Cast Fireball if Combustion isn't active
      simcfireball,if=buff.combustion.down
    5. Cast Meteor if (you have Burnout talented and Combustion has less than 8 s left, or isn't active) or (you don't have Burnout talented and Combustion has more than 2 s left)Meteor is used towards the end of Combustion to maximize the Ignite bank for Burnout. If not playing Burnout, just make sure the Meteor lands during Combustion at any time.
      simcmeteor,if=talent.burnout&buff.combustion.remains<8|!talent.burnout&buff.combustion.remains>2
    6. Cast Flamestrike if Hot Streak is active and you've had time to react to it and the number of enemies is at least ff combustion flamestrikeSpend Hot Streaks on Pyroblast in ST or Flamestrike in AoE.
      simcflamestrike,if=buff.hot_streak.react&active_enemies>=variable.ff_combustion_flamestrike
    7. Cast Pyroblast if Hot Streak is active and you've had time to react to it
      simcpyroblast,if=buff.hot_streak.react
    8. Cast Flamestrike if Pyroclasm is active and Flamestrike's cast time is less than the time left on Combustion and the number of enemies is at least ff filler flamestrike minus 1Make sure Pyroclasm FINISHES its cast before Combustion ends.
      simcflamestrike,if=buff.pyroclasm.up&cast_time<buff.combustion.remains&active_enemies>=(variable.ff_filler_flamestrike-1)
    9. Cast Pyroblast if Pyroclasm is active and Pyroblast's cast time is less than the time left on Combustion
      simcpyroblast,if=buff.pyroclasm.up&cast_time<buff.combustion.remains
    10. Cast Scorch if Heat Shimmer is active and you've had time to react to it or (you have Scald talented and the target's health is at or below Scorch's threshold and Frostfire Empowerment isn't active)
      simcscorch,if=buff.heat_shimmer.react|talent.scald&scorch_execute.active&buff.frostfire_empowerment.down
    11. Cast Fireball
      simcfireball
    12. Is it true that you don't have Pyroclasm talented or ((Pyroclasm has fewer than 2 stacks or (you are casting or channeling Pyroblast and your Pyroblast cast has more than 0.2 s left and Pyroclasm has exactly 2 stacks) or Fire Blast has 2.9 or more charges or Combustion has less than Pyroblast's cast time left, or isn't active) and (the number of enemies is less than sf combustion flamestrike or Pyroclasm isn't active or you aren't casting or channeling Flamestrike))?Not set

      If so, go through Fireblast, then carry on below if nothing there fits

      simccall_action_list,name=fireblast,if=!talent.pyroclasm|(buff.pyroclasm.stack<2|action.pyroblast.executing&action.pyroblast.execute_remains>0.2&buff.pyroclasm.stack=2|cooldown.fire_blast.charges_fractional>=2.9|buff.combustion.remains<action.pyroblast.cast_time)&(active_enemies<variable.sf_combustion_flamestrike|buff.pyroclasm.down|!action.flamestrike.executing)
  8. Is it true that you don't have Frostfire Bolt talented and at least combustion delay into the fight and (Combustion comes off cooldown within combustion precast time plus (one global cooldown times (1 if (you have Sunfury Execution talented and Meteor comes off cooldown within one global cooldown), else 0)) or Combustion is active or Combustion is off cooldown)?Not set

    If so, switch to Sf combustion, and nothing below is checked

    simcrun_action_list,name=sf_combustion,if=!talent.frostfire_bolt&((time>=variable.combustion_delay)&(cooldown.combustion.remains<=variable.combustion_precast_time+gcd.max*(talent.sunfury_execution&cooldown.meteor.remains<gcd.max)|buff.combustion.up|cooldown.combustion.ready))

    Sf combustion15 lines

    1. Cast Combustion if (you are casting or channeling Scorch and you aren't casting Scorch, or it finishes within cast remains time) or (you are casting or channeling Fireball and you aren't casting Fireball, or it finishes within cast remains time) or (you are casting or channeling Pyroblast and you aren't casting Pyroblast, or it finishes within cast remains time and Meteor is on cooldown) or (you are casting or channeling Flamestrike and you aren't casting Flamestrike, or it finishes within cast remains time) or (Meteor is in flight and the time until Meteor lands is less than 0.3 s and (you are casting or channeling Pyroblast or you are casting or channeling Flamestrike or Pyroclasm isn't active))Used without waiting for the global cooldownCan be used while casting
      simccombustion,use_off_gcd=1,use_while_casting=1,if=action.scorch.executing&(action.scorch.execute_remains<variable.cast_remains_time)|action.fireball.executing&(action.fireball.execute_remains<variable.cast_remains_time)|action.pyroblast.executing&(action.pyroblast.execute_remains<variable.cast_remains_time)&!cooldown.meteor.ready|action.flamestrike.executing&(action.flamestrike.execute_remains<variable.cast_remains_time)|action.meteor.in_flight&action.meteor.in_flight_remains<0.3&(action.pyroblast.executing|action.flamestrike.executing|buff.pyroclasm.down)
    2. Cast Flamestrike if Combustion isn't active and Hot Streak is active and you've had time to react to it and the number of enemies is at least sf combustion flamestrikeSpend Hot Streak before going into your precast.
      simcflamestrike,if=buff.combustion.down&buff.hot_streak.react&active_enemies>=variable.sf_combustion_flamestrike
    3. Cast Pyroblast if Combustion isn't active and Hot Streak is active and you've had time to react to it
      simcpyroblast,if=buff.combustion.down&buff.hot_streak.react
    4. Cast Meteor if Combustion isn't active and you have Sunfury Execution talentedPrecast one of these into Combustion.
      simcmeteor,if=buff.combustion.down&talent.sunfury_execution
    5. Cast Flamestrike if the number of enemies is at least sf combustion flamestrike and Combustion isn't active and Hot Streak isn't active, or only just appeared and Pyroclasm is active
      simcflamestrike,if=active_enemies>=variable.sf_combustion_flamestrike&(buff.combustion.down&!buff.hot_streak.react&buff.pyroclasm.up)
    6. Cast Pyroblast if Combustion isn't active and Hot Streak isn't active, or only just appeared and Pyroclasm is active
      simcpyroblast,if=buff.combustion.down&!buff.hot_streak.react&buff.pyroclasm.up
    7. Cast Scorch if Combustion isn't active and (the target's health is at or below Scorch's threshold or there are 4 or more enemies)
      simcscorch,if=buff.combustion.down&(scorch_execute.active|active_enemies>=4)
    8. Cast Fireball if Combustion isn't active and (your last spell on the global cooldown wasn't Meteor or Bloodlust isn't active)
      simcfireball,if=buff.combustion.down&(!prev_gcd.1.meteor|buff.bloodlust.down)
    9. Cast Meteor if Combustion has more than 2 s leftMake sure Meteor lands during Combustion.
      simcmeteor,if=buff.combustion.remains>2
    10. Cast Flamestrike if (Hot Streak is active and you've had time to react to it or (your last spell on the global cooldown was Scorch and Heating Up is active and you've had time to react to it and the time since the fight started minus the fight time when you last used Scorch is less than 0.2 s)) and the number of enemies is at least sf combustion flamestrikeSpend Hot Streaks on Pyroblast in ST or Flamestrike in AoE. The Scorch condition is simply to simulate predictable guaranteed crits during Combustion.
      simcflamestrike,if=(buff.hot_streak.react|prev_gcd.1.scorch&buff.heating_up.react&time-action.scorch.last_used<0.2)&active_enemies>=variable.sf_combustion_flamestrike
    11. Cast Pyroblast if Hot Streak is active and you've had time to react to it or (your last spell on the global cooldown was Scorch and Heating Up is active and you've had time to react to it and the time since the fight started minus the fight time when you last used Scorch is less than 0.2 s)
      simcpyroblast,if=buff.hot_streak.react|prev_gcd.1.scorch&buff.heating_up.react&time-action.scorch.last_used<0.2
    12. Cast Flamestrike if Pyroclasm is active and you've had time to react to it and Flamestrike's cast time is less than the time left on Combustion and the number of enemies is at least sf combustion flamestrikeMake sure Pyroclasm FINISHES its cast before Combustion ends.
      simcflamestrike,if=buff.pyroclasm.react&cast_time<buff.combustion.remains&active_enemies>=variable.sf_combustion_flamestrike
    13. Cast Pyroblast if Pyroclasm is active and you've had time to react to it and Pyroblast's cast time is less than the time left on Combustion
      simcpyroblast,if=buff.pyroclasm.react&cast_time<buff.combustion.remains
    14. Cast Scorch
      simcscorch
    15. Is it true that you don't have Pyroclasm talented or ((Pyroclasm has fewer than 2 stacks or (you are casting or channeling Pyroblast and your Pyroblast cast has more than 0.2 s left and Pyroclasm has exactly 2 stacks) or Fire Blast has 2.9 or more charges or Combustion has less than Pyroblast's cast time left, or isn't active) and (the number of enemies is less than sf combustion flamestrike or Pyroclasm isn't active or you aren't casting or channeling Flamestrike))?Not set

      If so, go through Fireblast, then carry on below if nothing there fits

      We prioritize starting to cast Pyroclasm (on 2 stacks) over Fire Blast if there's no risk of overcapping. In AoE, we also do not want to cast Fire Blast during a hardcast Flamestrike.
      simccall_action_list,name=fireblast,if=!talent.pyroclasm|(buff.pyroclasm.stack<2|action.pyroblast.executing&action.pyroblast.execute_remains>0.2&buff.pyroclasm.stack=2|cooldown.fire_blast.charges_fractional>=2.9|buff.combustion.remains<action.pyroblast.cast_time)&(active_enemies<variable.sf_combustion_flamestrike|buff.pyroclasm.down|!action.flamestrike.executing)
  9. Is it true that you have Frostfire Bolt talented?Not set

    If so, switch to Ff filler, and nothing below is checked

    simcrun_action_list,name=ff_filler,if=talent.frostfire_bolt

    Ff filler8 lines

    1. Cast Meteor if at least combustion delay minus one global cooldown into the fightCast Meteor on CD starting from the precast of your first Combustion.
      simcmeteor,if=time>=(variable.combustion_delay-gcd.max)
    2. Cast Flamestrike if Hot Streak is active and you've had time to react to it and (Combustion has at least 5 s of cooldown left or less than combustion delay into the fight) and the number of enemies is at least ff filler flamestrikeHold Hot Streak if Combustion is coming up soon. Do not hold if intentionally delaying Combustion.
      simcflamestrike,if=(buff.hot_streak.react&(cooldown.combustion.remains>=5|time<variable.combustion_delay))&active_enemies>=variable.ff_filler_flamestrike
    3. Cast Pyroblast if Hot Streak is active and you've had time to react to it and (Combustion has at least 5 s minus (5 if Pyroclasm is active, else 0) of cooldown left or less than combustion delay into the fight)
      simcpyroblast,if=buff.hot_streak.react&(cooldown.combustion.remains>=(5-5*buff.pyroclasm.up)|time<variable.combustion_delay)
    4. Cast Flamestrike if ((Pyroclasm is active and Combustion has more than 12 s of cooldown left) or Pyroclasm has exactly 2 stacks) and the number of enemies is at least ff filler flamestrikeSpend Pyroclasm immediately if you have 2 stacks available. Otherwise, hold one stack if it lasts until Combustion comes up.
      simcflamestrike,if=(buff.pyroclasm.up&cooldown.combustion.remains>12|buff.pyroclasm.stack=2)&active_enemies>=variable.ff_filler_flamestrike
    5. Cast Pyroblast if (Pyroclasm is active and Combustion has more than 12 s of cooldown left) or Pyroclasm has exactly 2 stacks
      simcpyroblast,if=buff.pyroclasm.up&cooldown.combustion.remains>12|buff.pyroclasm.stack=2
    6. Cast Scorch if Heat Shimmer is active and you've had time to react to it
      simcscorch,if=buff.heat_shimmer.react
    7. Cast Fireball
      simcfireball
    8. go through Fireblast, then carry on below if nothing there fits

      simccall_action_list,name=fireblast

      Fireblast8 lines

      1. Cast Fire Blast if Fire Blast is off cooldown and Fire Blast has 2.9 or more charges and you have Firestarter talentedUsed without waiting for the global cooldownCan be used while castingCast Fire Blast if close to overcapping charges. This can result in casting Fire Blast twice during one cast, if you have ample time left of your cast.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&cooldown.fire_blast.charges_fractional>=2.9&talent.firestarter
      2. Cast Fire Blast if Fire Blast is off cooldown and Hot Streak isn't active, or only just appeared and (Combustion is active or Hyperthermia is active) and the spells in flight that can trigger Hot Streak plus the stacks of Heating Up (counting only what you've had time to react to) is 1 and the global cooldown ends within one global cooldownUsed without waiting for the global cooldownCan be used while castingDuring Combustion/Hyperthermia, spend Fire Blasts with Heating Up.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&(buff.combustion.up|buff.hyperthermia.up)&(hot_streak_spells_in_flight+buff.heating_up.react=1)&gcd.remains<gcd.max
      3. Cast Fire Blast if Fire Blast is off cooldown and Hot Streak isn't active, or only just appeared and you are casting or channeling Pyroblast and Pyroclasm is active and the global cooldown ends within one global cooldownUsed without waiting for the global cooldownCan be used while castingCast Fire Blast during a hardcasted Pyroblast with Pyroclasm. Doing this can result in casting Fire Blast twice during one cast.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&action.pyroblast.executing&buff.pyroclasm.up&gcd.remains<gcd.max
      4. Cast Fire Blast if Fire Blast is off cooldown and Hot Streak isn't active, or only just appeared and ((you are casting or channeling Fireball and your Fireball cast has more than 0.1 s left) or (Pyroclasm is active and you've had time to react to it and you are casting or channeling Pyroblast and your Pyroblast cast has more than 0.1 s left) or (you are casting or channeling Flamestrike and your Flamestrike cast has more than 0.1 s left)) and (the target's health isn't at or below Scorch's threshold or you don't have Scorch talented) and Heating Up is active and you've had time to react to it and the spells in flight that can trigger Hot Streak plus the stacks of Heating Up (counting only what you've had time to react to) is 1 and the global cooldown ends within one global cooldownUsed without waiting for the global cooldownCan be used while castingDuring non-execute filler, use Fire Blast with Heating Up while hardcasting Fireball/Frostfire Bolt/Pyroblast/Flamestrike.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&(action.fireball.executing&action.fireball.execute_remains>0.1|buff.pyroclasm.react&action.pyroblast.executing&action.pyroblast.execute_remains>0.1|action.flamestrike.executing&action.flamestrike.execute_remains>0.1)&(!scorch_execute.active|!talent.scorch)&buff.heating_up.react&(hot_streak_spells_in_flight+buff.heating_up.react=1)&gcd.remains<gcd.max
      5. Cast Fire Blast if Fire Blast is off cooldown and Hot Streak isn't active, or only just appeared and the target's health is at or below Scorch's threshold and the spells in flight that can trigger Hot Streak plus the stacks of Heating Up (counting only what you've had time to react to) is 0 and ((you are casting or channeling Scorch and Heat Shimmer isn't active) or (you are casting or channeling Pyroblast and Pyroclasm is active and you have the 2-piece set bonus (midnight_season_2))) and the global cooldown ends within one global cooldownUsed without waiting for the global cooldownCan be used while castingDuring execute, spend Fire Blasts while casting Scorch, or consuming Pyroclasm with 12.1 2pc, if you don't have Heating Up.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&scorch_execute.active&(hot_streak_spells_in_flight+buff.heating_up.react=0)&(action.scorch.executing&buff.heat_shimmer.down|action.pyroblast.executing&buff.pyroclasm.up&set_bonus.midnight_season_2_2pc)&gcd.remains<gcd.max
      6. Cast Fire Blast if Fire Blast is off cooldown and Hot Streak isn't active, or only just appeared and less than combustion delay into the fight and (you have Firestarter talented or (you are casting or channeling Fireball and your Fireball cast has more than 0.1 s left) or (Pyroclasm is active and you've had time to react to it and you are casting or channeling Pyroblast and your Pyroblast cast has more than 0.1 s left)) and the spells in flight that can trigger Hot Streak plus the stacks of Heating Up (counting only what you've had time to react to) is 1 and the global cooldown ends within one global cooldown and Combustion is off cooldownUsed without waiting for the global cooldownCan be used while castingWhile delaying Combustion on pull (Firestarter or not), spend Fire Blasts with Heating Up freely. If not playing Firestarter, only do so during hardcasts.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&time<variable.combustion_delay&(talent.firestarter|action.fireball.executing&action.fireball.execute_remains>0.1|buff.pyroclasm.react&action.pyroblast.executing&action.pyroblast.execute_remains>0.1)&(hot_streak_spells_in_flight+buff.heating_up.react=1)&gcd.remains<gcd.max&cooldown.combustion.ready
      7. Cast Fire Blast if Fire Blast is off cooldown and at least combustion delay into the fight and Combustion comes off cooldown within combustion precast time and Combustion isn't active and you have Spontaneous Combustion talented and (you are casting or channeling Scorch or you are casting or channeling Fireball or you are casting or channeling Pyroblast or you are casting or channeling Flamestrike)Used without waiting for the global cooldownCan be used while castingWhen talented into Spontaneous Combustion, spend all Fire Blasts during the pre-cast going into Combustion regardless of Heating Up / Hot Streak status.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&(time>=variable.combustion_delay&(cooldown.combustion.remains<=variable.combustion_precast_time))&buff.combustion.down&talent.spontaneous_combustion&(action.scorch.executing|action.fireball.executing|action.pyroblast.executing|action.flamestrike.executing)
      8. Cast Fire Blast if the fight ends within 1 sUsed without waiting for the global cooldownCan be used while castingSpend all available Fire Blasts if fight is ending.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=fight_remains<1
  10. switch to Sf filler, and nothing below is checked

    simcrun_action_list,name=sf_filler

    Sf filler8 lines

    1. Cast Meteor if you have Blast Zone talented and more than combustion delay into the fightMeteor is used immediately when ready after the first Combustion, if you have Blast Zone.
      simcmeteor,if=talent.blast_zone&time>variable.combustion_delay
    2. Cast Flamestrike if (Hot Streak is active and you've had time to react to it or (your last spell on the global cooldown was Scorch and Heating Up is active and you've had time to react to it and the time since the fight started minus the fight time when you last used Scorch is less than 0.2 s) or Hyperthermia is active) and the number of enemies is at least sf filler flamestrikeSpend Hot Streaks on Pyroblast in ST or Flamestrike in AoE. The Scorch condition is simply to simulate predictable guaranteed crits during execute.
      simcflamestrike,if=(buff.hot_streak.react|prev_gcd.1.scorch&buff.heating_up.react&time-action.scorch.last_used<0.2|buff.hyperthermia.up)&active_enemies>=variable.sf_filler_flamestrike
    3. Cast Pyroblast if Hot Streak is active and you've had time to react to it or (your last spell on the global cooldown was Scorch and Heating Up is active and you've had time to react to it and the time since the fight started minus the fight time when you last used Scorch is less than 0.2 s) or Hyperthermia is active
      simcpyroblast,if=buff.hot_streak.react|prev_gcd.1.scorch&buff.heating_up.react&time-action.scorch.last_used<0.2|buff.hyperthermia.up
    4. Cast Flamestrike if Pyroclasm is active and the number of enemies is at least sf filler flamestrikeSpend Pyroclasm immediately.
      simcflamestrike,if=buff.pyroclasm.up&active_enemies>=variable.sf_filler_flamestrike
    5. Cast Pyroblast if Pyroclasm is active
      simcpyroblast,if=buff.pyroclasm.up
    6. Cast Scorch if (you have Scald talented and the target's health is at or below Scorch's threshold) or (Heat Shimmer is active and you've had time to react to it and (the target's health is at or above Firestarter's threshold or your last spell on the global cooldown was Pyroblast or your last spell on the global cooldown was Flamestrike))Cast Scorch in execute or with a Heat Shimmer proc.
      simcscorch,if=talent.scald&scorch_execute.active|buff.heat_shimmer.react&(firestarter.active|prev_gcd.1.pyroblast|prev_gcd.1.flamestrike)
    7. Cast Fireball
      simcfireball
    8. go through Fireblast, then carry on below if nothing there fits

      simccall_action_list,name=fireblast

      Fireblast8 lines

      1. Cast Fire Blast if Fire Blast is off cooldown and Fire Blast has 2.9 or more charges and you have Firestarter talentedUsed without waiting for the global cooldownCan be used while castingCast Fire Blast if close to overcapping charges. This can result in casting Fire Blast twice during one cast, if you have ample time left of your cast.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&cooldown.fire_blast.charges_fractional>=2.9&talent.firestarter
      2. Cast Fire Blast if Fire Blast is off cooldown and Hot Streak isn't active, or only just appeared and (Combustion is active or Hyperthermia is active) and the spells in flight that can trigger Hot Streak plus the stacks of Heating Up (counting only what you've had time to react to) is 1 and the global cooldown ends within one global cooldownUsed without waiting for the global cooldownCan be used while castingDuring Combustion/Hyperthermia, spend Fire Blasts with Heating Up.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&(buff.combustion.up|buff.hyperthermia.up)&(hot_streak_spells_in_flight+buff.heating_up.react=1)&gcd.remains<gcd.max
      3. Cast Fire Blast if Fire Blast is off cooldown and Hot Streak isn't active, or only just appeared and you are casting or channeling Pyroblast and Pyroclasm is active and the global cooldown ends within one global cooldownUsed without waiting for the global cooldownCan be used while castingCast Fire Blast during a hardcasted Pyroblast with Pyroclasm. Doing this can result in casting Fire Blast twice during one cast.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&action.pyroblast.executing&buff.pyroclasm.up&gcd.remains<gcd.max
      4. Cast Fire Blast if Fire Blast is off cooldown and Hot Streak isn't active, or only just appeared and ((you are casting or channeling Fireball and your Fireball cast has more than 0.1 s left) or (Pyroclasm is active and you've had time to react to it and you are casting or channeling Pyroblast and your Pyroblast cast has more than 0.1 s left) or (you are casting or channeling Flamestrike and your Flamestrike cast has more than 0.1 s left)) and (the target's health isn't at or below Scorch's threshold or you don't have Scorch talented) and Heating Up is active and you've had time to react to it and the spells in flight that can trigger Hot Streak plus the stacks of Heating Up (counting only what you've had time to react to) is 1 and the global cooldown ends within one global cooldownUsed without waiting for the global cooldownCan be used while castingDuring non-execute filler, use Fire Blast with Heating Up while hardcasting Fireball/Frostfire Bolt/Pyroblast/Flamestrike.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&(action.fireball.executing&action.fireball.execute_remains>0.1|buff.pyroclasm.react&action.pyroblast.executing&action.pyroblast.execute_remains>0.1|action.flamestrike.executing&action.flamestrike.execute_remains>0.1)&(!scorch_execute.active|!talent.scorch)&buff.heating_up.react&(hot_streak_spells_in_flight+buff.heating_up.react=1)&gcd.remains<gcd.max
      5. Cast Fire Blast if Fire Blast is off cooldown and Hot Streak isn't active, or only just appeared and the target's health is at or below Scorch's threshold and the spells in flight that can trigger Hot Streak plus the stacks of Heating Up (counting only what you've had time to react to) is 0 and ((you are casting or channeling Scorch and Heat Shimmer isn't active) or (you are casting or channeling Pyroblast and Pyroclasm is active and you have the 2-piece set bonus (midnight_season_2))) and the global cooldown ends within one global cooldownUsed without waiting for the global cooldownCan be used while castingDuring execute, spend Fire Blasts while casting Scorch, or consuming Pyroclasm with 12.1 2pc, if you don't have Heating Up.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&scorch_execute.active&(hot_streak_spells_in_flight+buff.heating_up.react=0)&(action.scorch.executing&buff.heat_shimmer.down|action.pyroblast.executing&buff.pyroclasm.up&set_bonus.midnight_season_2_2pc)&gcd.remains<gcd.max
      6. Cast Fire Blast if Fire Blast is off cooldown and Hot Streak isn't active, or only just appeared and less than combustion delay into the fight and (you have Firestarter talented or (you are casting or channeling Fireball and your Fireball cast has more than 0.1 s left) or (Pyroclasm is active and you've had time to react to it and you are casting or channeling Pyroblast and your Pyroblast cast has more than 0.1 s left)) and the spells in flight that can trigger Hot Streak plus the stacks of Heating Up (counting only what you've had time to react to) is 1 and the global cooldown ends within one global cooldown and Combustion is off cooldownUsed without waiting for the global cooldownCan be used while castingWhile delaying Combustion on pull (Firestarter or not), spend Fire Blasts with Heating Up freely. If not playing Firestarter, only do so during hardcasts.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&!buff.hot_streak.react&time<variable.combustion_delay&(talent.firestarter|action.fireball.executing&action.fireball.execute_remains>0.1|buff.pyroclasm.react&action.pyroblast.executing&action.pyroblast.execute_remains>0.1)&(hot_streak_spells_in_flight+buff.heating_up.react=1)&gcd.remains<gcd.max&cooldown.combustion.ready
      7. Cast Fire Blast if Fire Blast is off cooldown and at least combustion delay into the fight and Combustion comes off cooldown within combustion precast time and Combustion isn't active and you have Spontaneous Combustion talented and (you are casting or channeling Scorch or you are casting or channeling Fireball or you are casting or channeling Pyroblast or you are casting or channeling Flamestrike)Used without waiting for the global cooldownCan be used while castingWhen talented into Spontaneous Combustion, spend all Fire Blasts during the pre-cast going into Combustion regardless of Heating Up / Hot Streak status.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&(time>=variable.combustion_delay&(cooldown.combustion.remains<=variable.combustion_precast_time))&buff.combustion.down&talent.spontaneous_combustion&(action.scorch.executing|action.fireball.executing|action.pyroblast.executing|action.flamestrike.executing)
      8. Cast Fire Blast if the fight ends within 1 sUsed without waiting for the global cooldownCan be used while castingSpend all available Fire Blasts if fight is ending.
        simcfire_blast,use_off_gcd=1,use_while_casting=1,if=fight_remains<1

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