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.
- The main loop
- Cooldowns
- Ff combustion (maybe)
- Fireblast (maybe)
- Sf combustion (maybe)
- Ff filler (maybe)
- Sf filler (maybe)
Before the pull, done once before the fight starts (9 steps)
Before the pull9 lines
- Cast Arcane Intellect
simc
arcane_intellect - Set cast remains time to 0.2
simc
variable,name=cast_remains_time,value=0.2 - Reset flamestriking to its starting valueflamestriking starts each fight at 1flamestriking is the on/off switch, overridable via apl_variable.flamestriking=0
simc
variable,name=flamestriking,op=reset,default=1 - 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.
simc
variable,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)) - Set steroid trinket equipped to true when the following holds, otherwise falseany 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
simc
variable,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 - Set nonsteroid trinket equipped to true when the following holds, otherwise falseany 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
simc
variable,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 - Record your stats before the pull (sim bookkeeping)
simc
snapshot_stats - Cast Mirror Image
simc
mirror_image - Cast Pyroblast
simc
pyroblast
The main loop10 lines
go through Cooldowns, then carry on below if nothing there fits
simc
call_action_list,name=cdsCooldowns18 lines
- 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
simc
variable,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 - 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.
simc
potion,if=time>=(8*(talent.firestarter&talent.spellfire_spheres))|buff.combustion.remains>6|fight_remains<35 - Use Vile Vial of Volatile Venom if Combustion has more than 6 s left or the fight ends within 20 s
simc
use_item,name=vile_vial_of_volatile_venom,if=buff.combustion.remains>6|fight_remains<20 - 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
simc
use_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 - Use Sethraliss Defiled Relic if Combustion has more than 6 s left or the fight ends within 20 s
simc
use_item,name=sethraliss_defiled_relic,if=buff.combustion.remains>6|fight_remains<20 - Use Hex Lords Dooming Idol if Combustion has more than 6 s left or the fight ends within 30 s
simc
use_item,name=hex_lords_dooming_idol,if=buff.combustion.remains>6|fight_remains<30 - Use Vaelgors Final Stare if Combustion has more than 6 s left or the fight ends within 20 s
simc
use_item,name=vaelgors_final_stare,if=buff.combustion.remains>6|fight_remains<20 - Use Emberwing Feather if Combustion has more than 6 s left or the fight ends within 20 s
simc
use_item,name=emberwing_feather,if=buff.combustion.remains>6|fight_remains<20 - Use Venomous Gladiators Badge of Ferocity if Combustion has more than 6 s left or the fight ends within 20 s
simc
use_item,name=venomous_gladiators_badge_of_ferocity,if=buff.combustion.remains>6|fight_remains<20 - Use Galactic Gladiators Badge of Ferocity if Combustion has more than 6 s left or the fight ends within 20 s
simc
use_item,name=galactic_gladiators_badge_of_ferocity,if=buff.combustion.remains>6|fight_remains<20 - Use Ever Collapsing Void Fissure if Combustion has more than 6 s left or the fight ends within 20 s
simc
use_item,name=ever_collapsing_void_fissure,if=buff.combustion.remains>6|fight_remains<20 - Use Freightrunners Flask if Combustion has more than 6 s left or the fight ends within 20 s
simc
use_item,name=freightrunners_flask,if=buff.combustion.remains>6|fight_remains<20 - 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.
simc
use_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 - Cast Ancestral Call if Combustion has more than 6 s left or the fight ends within 20 s
simc
ancestral_call,if=buff.combustion.remains>6|fight_remains<20 - Cast Berserking if Combustion has more than 6 s left or the fight ends within 20 s
simc
berserking,if=buff.combustion.remains>6|fight_remains<20 - Cast Blood Fury if Combustion has more than 6 s left or the fight ends within 20 s
simc
blood_fury,if=buff.combustion.remains>6|fight_remains<20 - Cast Fireblood if Combustion has more than 6 s left or the fight ends within 10 s
simc
fireblood,if=buff.combustion.remains>6|fight_remains<10 - 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)
simc
invoke_external_buff,name=power_infusion,if=buff.power_infusion.down&(buff.combustion.remains>6|fight_remains<25)
- Set flamestriking active to true when the following holds, otherwise falseall of these:Turns off flamestriking during Firestarter, but allows Flamestrike with Pyroclasm.
- 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
simc
variable,name=flamestriking_active,op=set,value=variable.flamestriking&(time>variable.combustion_delay|talent.firestarter&buff.pyroclasm.up&buff.hot_streak.react=0) - 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 talentedModifiable target count cutoffs for when to cast Flamestrike. Always turned off if missing Fuel the Fire or during Firestarter.
simc
variable,name=ff_combustion_flamestrike,op=set,if=!talent.spellfire_spheres,value=3+(999*!talent.fuel_the_fire+999*!variable.flamestriking_active) - 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
simc
variable,name=ff_filler_flamestrike,op=set,if=!talent.spellfire_spheres,value=3+(999*!talent.fuel_the_fire+999*!variable.flamestriking_active) - 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
simc
variable,name=sf_combustion_flamestrike,op=set,if=talent.spellfire_spheres,value=3+(999*!talent.fuel_the_fire+999*!variable.flamestriking_active) - 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
simc
variable,name=sf_filler_flamestrike,op=set,if=talent.spellfire_spheres,value=3+(999*!talent.fuel_the_fire+999*!variable.flamestriking_active) 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.simc
run_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
- 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
simc
combustion,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 - 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.
simc
flamestrike,if=buff.pyroclasm.up&!buff.hot_streak.react&buff.combustion.down&active_enemies>=variable.ff_combustion_flamestrike - Cast Pyroblast if Pyroclasm is active and Hot Streak isn't active, or only just appeared and Combustion isn't active
simc
pyroblast,if=buff.pyroclasm.up&!buff.hot_streak.react&buff.combustion.down - Cast Fireball if Combustion isn't active
simc
fireball,if=buff.combustion.down - 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.
simc
meteor,if=talent.burnout&buff.combustion.remains<8|!talent.burnout&buff.combustion.remains>2 - 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.
simc
flamestrike,if=buff.hot_streak.react&active_enemies>=variable.ff_combustion_flamestrike - Cast Pyroblast if Hot Streak is active and you've had time to react to it
simc
pyroblast,if=buff.hot_streak.react - 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.
simc
flamestrike,if=buff.pyroclasm.up&cast_time<buff.combustion.remains&active_enemies>=(variable.ff_filler_flamestrike-1) - Cast Pyroblast if Pyroclasm is active and Pyroblast's cast time is less than the time left on Combustion
simc
pyroblast,if=buff.pyroclasm.up&cast_time<buff.combustion.remains - 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)
simc
scorch,if=buff.heat_shimmer.react|talent.scald&scorch_execute.active&buff.frostfire_empowerment.down - Cast Fireball
simc
fireball 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
simc
call_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)
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
simc
run_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
- 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
simc
combustion,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) - 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.
simc
flamestrike,if=buff.combustion.down&buff.hot_streak.react&active_enemies>=variable.sf_combustion_flamestrike - Cast Pyroblast if Combustion isn't active and Hot Streak is active and you've had time to react to it
simc
pyroblast,if=buff.combustion.down&buff.hot_streak.react - Cast Meteor if Combustion isn't active and you have Sunfury Execution talentedPrecast one of these into Combustion.
simc
meteor,if=buff.combustion.down&talent.sunfury_execution - 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
simc
flamestrike,if=active_enemies>=variable.sf_combustion_flamestrike&(buff.combustion.down&!buff.hot_streak.react&buff.pyroclasm.up) - Cast Pyroblast if Combustion isn't active and Hot Streak isn't active, or only just appeared and Pyroclasm is active
simc
pyroblast,if=buff.combustion.down&!buff.hot_streak.react&buff.pyroclasm.up - 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)
simc
scorch,if=buff.combustion.down&(scorch_execute.active|active_enemies>=4) - Cast Fireball if Combustion isn't active and (your last spell on the global cooldown wasn't Meteor or Bloodlust isn't active)
simc
fireball,if=buff.combustion.down&(!prev_gcd.1.meteor|buff.bloodlust.down) - Cast Meteor if Combustion has more than 2 s leftMake sure Meteor lands during Combustion.
simc
meteor,if=buff.combustion.remains>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)) 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.
simc
flamestrike,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 - 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)
simc
pyroblast,if=buff.hot_streak.react|prev_gcd.1.scorch&buff.heating_up.react&time-action.scorch.last_used<0.2 - 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.
simc
flamestrike,if=buff.pyroclasm.react&cast_time<buff.combustion.remains&active_enemies>=variable.sf_combustion_flamestrike - 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
simc
pyroblast,if=buff.pyroclasm.react&cast_time<buff.combustion.remains - Cast Scorch
simc
scorch 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.simc
call_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)
Is it true that you have Frostfire Bolt talented?Not set
If so, switch to Ff filler, and nothing below is checked
simc
run_action_list,name=ff_filler,if=talent.frostfire_boltFf filler8 lines
- 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.
simc
meteor,if=time>=(variable.combustion_delay-gcd.max) - 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.
simc
flamestrike,if=(buff.hot_streak.react&(cooldown.combustion.remains>=5|time<variable.combustion_delay))&active_enemies>=variable.ff_filler_flamestrike - 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)
simc
pyroblast,if=buff.hot_streak.react&(cooldown.combustion.remains>=(5-5*buff.pyroclasm.up)|time<variable.combustion_delay) - 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.
simc
flamestrike,if=(buff.pyroclasm.up&cooldown.combustion.remains>12|buff.pyroclasm.stack=2)&active_enemies>=variable.ff_filler_flamestrike - Cast Pyroblast if (Pyroclasm is active and Combustion has more than 12 s of cooldown left) or Pyroclasm has exactly 2 stacks
simc
pyroblast,if=buff.pyroclasm.up&cooldown.combustion.remains>12|buff.pyroclasm.stack=2 - Cast Scorch if Heat Shimmer is active and you've had time to react to it
simc
scorch,if=buff.heat_shimmer.react - Cast Fireball
simc
fireball go through Fireblast, then carry on below if nothing there fits
simc
call_action_list,name=fireblastFireblast8 lines
- 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.
simc
fire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&cooldown.fire_blast.charges_fractional>=2.9&talent.firestarter - 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.
simc
fire_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 - 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.
simc
fire_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 - 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.
simc
fire_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 - 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.
simc
fire_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 - 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.
simc
fire_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 - 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.
simc
fire_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) - 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.
simc
fire_blast,use_off_gcd=1,use_while_casting=1,if=fight_remains<1
switch to Sf filler, and nothing below is checked
simc
run_action_list,name=sf_fillerSf filler8 lines
- 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.
simc
meteor,if=talent.blast_zone&time>variable.combustion_delay - 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.
simc
flamestrike,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 - 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
simc
pyroblast,if=buff.hot_streak.react|prev_gcd.1.scorch&buff.heating_up.react&time-action.scorch.last_used<0.2|buff.hyperthermia.up - Cast Flamestrike if Pyroclasm is active and the number of enemies is at least sf filler flamestrikeSpend Pyroclasm immediately.
simc
flamestrike,if=buff.pyroclasm.up&active_enemies>=variable.sf_filler_flamestrike - Cast Pyroblast if Pyroclasm is active
simc
pyroblast,if=buff.pyroclasm.up - 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.
simc
scorch,if=talent.scald&scorch_execute.active|buff.heat_shimmer.react&(firestarter.active|prev_gcd.1.pyroblast|prev_gcd.1.flamestrike) - Cast Fireball
simc
fireball go through Fireblast, then carry on below if nothing there fits
simc
call_action_list,name=fireblastFireblast8 lines
- 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.
simc
fire_blast,use_off_gcd=1,use_while_casting=1,if=cooldown_react&cooldown.fire_blast.charges_fractional>=2.9&talent.firestarter - 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.
simc
fire_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 - 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.
simc
fire_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 - 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.
simc
fire_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 - 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.
simc
fire_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 - 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.
simc
fire_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 - 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.
simc
fire_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) - 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.
simc
fire_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.
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 Combat18 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 Flamestrike if Hyperthermia is active and there are more than 3 enemies
simc
flamestrike,if=buff.hyperthermia.up&active_enemies>3 - Cast Flamestrike if Hyperthermia is active and there are more than 3 enemies
simc
flamestrike,if=buff.hyperthermia.up&active_enemies>3 - Cast Pyroblast if Hyperthermia is active
simc
pyroblast,if=buff.hyperthermia.up - Cast Meteor
simc
meteor - Cast CombustionThis is for Blizzard automation and is not included in the game's Assisted Combat system.
simc
combustion - Cast Fire Blast if Heating Up is active and Hyperthermia isn't active
simc
fire_blast,if=buff.heating_up.up&buff.hyperthermia.down - Cast Flamestrike if Hot Streak is active and there are more than 3 enemies
simc
flamestrike,if=buff.hot_streak.up&active_enemies>3 - Cast Flamestrike if Hot Streak is active and there are more than 3 enemies
simc
flamestrike,if=buff.hot_streak.up&active_enemies>3 - Cast Pyroblast if Hot Streak is active
simc
pyroblast,if=buff.hot_streak.up - Cast Flamestrike if there are more than 3 enemies and Pyroclasm is active
simc
flamestrike,if=active_enemies>3&buff.pyroclasm.up,cooldown_allow_casting_success=1 - Cast Flamestrike if Pyroclasm is active and there are more than 3 enemies
simc
flamestrike,if=buff.pyroclasm.up&active_enemies>3,cooldown_allow_casting_success=1 - Cast Pyroblast if Pyroclasm is active
simc
pyroblast,if=buff.pyroclasm.up,cooldown_allow_casting_success=1 - Cast Scorch if Heat Shimmer is active
simc
scorch,if=buff.heat_shimmer.up,cooldown_allow_casting_success=1 - Cast Scorch if the target is at or below 30% health
simc
scorch,if=target.health.pct<=30,cooldown_allow_casting_success=1 - Cast Frostfire Bolt
simc
frostfire_bolt,cooldown_allow_casting_success=1 - Cast Fireball
simc
fireball,cooldown_allow_casting_success=1 - Cast Fireball
simc
fireball
Read from ActionPriorityLists/assisted_combat/mage_fire.simc in simulationcraft/simc at 1860cd1d5763, the commit this engine build runs.