actions.precombat+=/arcane_intellect actions.precombat+=/use_item,name=soul_igniter,if=!variable.combustion_on_use&!equipped.dreadfire_vessel&(!talent.firestarter|variable.firestarter_combustion) actions.precombat+=/use_item,name=shadowed_orb_of_torment,if=!equipped.the_first_sigil actions.precombat+=/mirror_image actions.precombat+=/fleshcraft actions.precombat+=/pyroblast # Executed every time the actor is available. actions=counterspell,if=!runeforge.disciplinary_command actions+=/shifting_power,if=buff.combustion.down&action.fire_blast.charges<=1&(cooldown.rune_of_power.remains|!talent.rune_of_power)&!buff.hot_streak.react&variable.shifting_power_before_combustion # Save Radiant Spark for Combustion, but otherwise use it on cooldown. actions+=/radiant_spark,if=buff.combustion.down&(variable.time_to_combustion>cooldown-5) # Deathborne should always be used with Combustion. With Death's Fathom, it should be used early so that Deathborne will have more stacks during Combustion. actions+=/deathborne,if=buff.combustion.down&buff.rune_of_power.down&variable.time_to_combustioncooldown-30*runeforge.sinful_delight # For Venthyr, use a Fire Blast charge during Mirrors of Torment cast to avoid capping charges. actions+=/fire_blast,use_while_casting=1,if=action.mirrors_of_torment.executing&full_recharge_time-action.mirrors_of_torment.execute_remains<4&!hot_streak_spells_in_flight&!buff.hot_streak.react actions+=/use_item,effect_name=gladiators_badge,if=variable.time_to_combustion>cooldown-5 actions+=/use_item,name=empyreal_ordnance,if=variable.time_to_combustion<=variable.empyreal_ordnance_delay&variable.time_to_combustion>variable.empyreal_ordnance_delay-5 actions+=/use_item,name=shadowed_orb_of_torment,if=(variable.time_to_combustion<=variable.combustion_precast_time+2|fight_remains40) actions+=/use_item,name=grim_eclipse,if=variable.time_to_combustion<=8|fight_remainsinterpolated_fight_remains%%(cooldown+10)) # Soul Igniter should be used in a way that doesn't interfere with other on-use trinkets. Other trinkets do not trigger a shared ICD on it, so it can be used right after any other on-use trinket. actions+=/use_item,name=soul_igniter,if=(cooldown.hyperthread_wristwraps.remains|!variable.item_cutoff_active)&(!conduit.infernal_cascade|buff.infernal_cascade.up|buff.combustion.up)&(!equipped.dreadfire_vessel|cooldown.dreadfire_vessel_349857.remains>5) # Trigger Soul Igniter early with Infernal Cascade or when it was precast. actions+=/cancel_buff,name=soul_ignition,if=!conduit.infernal_cascade&time<5|buff.infernal_cascade.stack=buff.infernal_cascade.max_stack # Items that do not benefit Combustion should just be used outside of Combustion at some point. actions+=/use_item,name=inscrutable_quantum_device,if=equipped.gladiators_badge&(buff.combustion.down&variable.time_to_combustion>=variable.on_use_cutoff|variable.on_use_cutoff=0) actions+=/use_item,name=flame_of_battle,if=equipped.gladiators_badge&!variable.item_cutoff_active actions+=/use_item,name=wakeners_frond,if=equipped.gladiators_badge&!variable.item_cutoff_active actions+=/use_item,name=instructors_divine_bell,if=equipped.gladiators_badge&!variable.item_cutoff_active actions+=/use_item,name=sunblood_amethyst,if=equipped.gladiators_badge&!variable.item_cutoff_active actions+=/use_item,name=scars_of_fraternal_strife,if=buff.scars_of_fraternal_strife_4.down actions+=/use_items,if=!variable.item_cutoff_active # Use Frost Nova to trigger Grisly Icicle. actions+=/frost_nova,if=runeforge.grisly_icicle&buff.combustion.down&(variable.time_to_combustion>cooldown|variable.time_to_combustioncooldown.buff_disciplinary_command.duration|variable.time_to_combustion<5) actions+=/arcane_explosion,if=runeforge.disciplinary_command&cooldown.buff_disciplinary_command.ready&buff.disciplinary_command_arcane.down&!buff.disciplinary_command.up&(variable.time_to_combustion+execute_time+action.frostbolt.cast_time>cooldown.buff_disciplinary_command.duration|variable.time_to_combustion<5&!talent.rune_of_power) actions+=/frostbolt,if=runeforge.disciplinary_command&cooldown.buff_disciplinary_command.remainscooldown.buff_disciplinary_command.duration|variable.time_to_combustion<5) actions+=/frost_nova,if=runeforge.disciplinary_command&cooldown.buff_disciplinary_command.ready&buff.disciplinary_command_frost.down&!buff.disciplinary_command.up&(variable.time_to_combustion>cooldown.buff_disciplinary_command.duration|variable.time_to_combustion<5) # Pool as many Fire Blasts as possible for Combustion. Subtract out of the fractional component of the number of Fire Blasts that will naturally recharge during the Combustion phase because pooling anything past that will not grant an extra Fire Blast during Combustion. actions+=/variable,use_off_gcd=1,use_while_casting=1,name=fire_blast_pooling,value=variable.extended_combustion_remains=buff.rune_of_power.duration&variable.time_to_combustion>action.fire_blast.full_recharge_time|variable.time_to_combustion>fight_remains)&(!(runeforge.sun_kings_blessing|talent.sun_kings_blessing)|active_enemies>=variable.hard_cast_flamestrike|buff.sun_kings_blessing_ready.up|buff.sun_kings_blessing.react>=buff.sun_kings_blessing.max_stack-1|fight_remains3*gcd.max,if=!variable.fire_blast_pooling&(runeforge.sun_kings_blessing|talent.sun_kings_blessing) actions+=/call_action_list,name=rop_phase,if=buff.rune_of_power.up&buff.combustion.down&variable.time_to_combustion>0 # Adjust the variable that controls Fire Blast usage to ensure its charges are also pooled for Rune of Power. actions+=/variable,use_off_gcd=1,use_while_casting=1,name=fire_blast_pooling,value=(!(runeforge.sun_kings_blessing|talent.sun_kings_blessing)|buff.sun_kings_blessing.stack>buff.sun_kings_blessing.max_stack-1)&cooldown.rune_of_power.remains0&active_enemies>=variable.hard_cast_flamestrike&!firestarter.active&!buff.hot_streak.react&(buff.heating_up.react&action.flamestrike.execute_remains<0.5|charges_fractional>=2) # During Firestarter, Fire Blasts are used similarly to during Combustion. Generally, they are used to generate Hot Streaks when crits will not be wasted and with Feel the Burn, they should be spread out to maintain the Feel the Burn buff. actions+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=firestarter.active&variable.time_to_combustion>0&!variable.fire_blast_pooling&(!action.fireball.executing&!action.pyroblast.in_flight&buff.heating_up.react|action.fireball.executing&!buff.hot_streak.react|action.pyroblast.in_flight&buff.heating_up.react&!buff.hot_streak.react) # Avoid capping Fire Blast charges while channeling Shifting Power actions+=/fire_blast,use_while_casting=1,if=action.shifting_power.executing&full_recharge_time0&buff.rune_of_power.down&buff.combustion.down actions+=/scorch actions.active_talents=living_bomb,if=active_enemies>1&buff.combustion.down&(variable.time_to_combustion>cooldown.living_bomb.duration|variable.time_to_combustion<=0) actions.active_talents+=/meteor,if=variable.time_to_combustion<=0|buff.combustion.remains>travel_time|(cooldown.meteor.durationaction.meteor.cooldown|fight_remains1&buff.combustion.down # Other cooldowns that should be used with Combustion should only be used with an actual Combustion cast and not with a Sun King's Blessing proc. actions.combustion_phase+=/call_action_list,name=combustion_cooldowns,if=buff.combustion.remains>variable.skb_duration|fight_remains<20 actions.combustion_phase+=/use_item,name=hyperthread_wristwraps,if=prev.1.fire_blast+prev.2.fire_blast+prev.3.fire_blast>=2&action.fire_blast.charges=0 actions.combustion_phase+=/use_item,name=neural_synapse_enhancer,if=variable.time_to_combustion>60 actions.combustion_phase+=/call_action_list,name=active_talents # If Sun King's Blessing stacks are high, cancel them before Combustion so that the Sun King's Blessing proc can be safely delayed until after Combustion without risk of expiration. actions.combustion_phase+=/cancel_buff,name=sun_kings_blessing,if=!set_bonus.tier28_4pc&buff.combustion.down&buff.sun_kings_blessing.stack>2&talent.rune_of_power&cooldown.rune_of_power.remains<20 # If Combustion is down, precast something before activating it. actions.combustion_phase+=/flamestrike,if=buff.combustion.down&cooldown.combustion.remains=variable.combustion_flamestrike actions.combustion_phase+=/pyroblast,if=buff.combustion.down&buff.sun_kings_blessing_ready.up&buff.sun_kings_blessing_ready.remains>cast_time&buff.sun_kings_blessing_ready.expiration_delay_remains=0 actions.combustion_phase+=/pyroblast,if=buff.combustion.down&buff.pyroclasm.react&buff.pyroclasm.remains>cast_time actions.combustion_phase+=/fireball,if=buff.combustion.down&cooldown.combustion.remainsvariable.skb_duration # Without Feel the Burn, just use Fire Blasts when they won't munch crits and when Firestorm is down. actions.combustion_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!talent.feel_the_burn&!conduit.infernal_cascade&!variable.fire_blast_pooling&(!set_bonus.tier28_4pc|debuff.mirrors_of_torment.down|buff.sun_kings_blessing_ready.down|action.pyroblast.executing)&buff.combustion.up&!(buff.firestorm.react|buff.hyperthermia.react)&!buff.hot_streak.react&hot_streak_spells_in_flight+buff.heating_up.react*(gcd.remains>0)<2 actions.combustion_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=conduit.infernal_cascade&!variable.fire_blast_pooling&(!set_bonus.tier28_4pc|debuff.mirrors_of_torment.down|buff.sun_kings_blessing_ready.down|action.pyroblast.executing)&(!equipped.hyperthread_wristwraps|!cooldown.hyperthread_wristwraps_300142.ready|charges>1|debuff.mirrors_of_torment.up)&(variable.expected_fire_blasts>=variable.needed_fire_blasts|buff.combustion.remains0)<2 actions.combustion_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=talent.feel_the_burn&!variable.fire_blast_pooling&(!set_bonus.tier28_4pc|debuff.mirrors_of_torment.down|buff.sun_kings_blessing_ready.down|action.pyroblast.executing)&(!equipped.hyperthread_wristwraps|!cooldown.hyperthread_wristwraps_300142.ready|charges>1|debuff.mirrors_of_torment.up)&(variable.expected_fire_blasts>=variable.needed_fire_blasts|buff.combustion.remains0)<2 # Spend Hot Streaks during Combustion at high priority. actions.combustion_phase+=/flamestrike,if=(buff.hot_streak.react&active_enemies>=variable.combustion_flamestrike)|((buff.firestorm.react|buff.hyperthermia.react)&active_enemies>=variable.combustion_flamestrike-(runeforge.firestorm|talent.hyperthermia)) # Radiant Spark should be used with a Hot Streak ready to use immediately after the cast finishes. This will naturally set up a Hot Streak spent for the final stack of Radiant Spark. actions.combustion_phase+=/radiant_spark,if=buff.combustion.up&2*buff.hot_streak.react+buff.heating_up.react+hot_streak_spells_in_flight=2 actions.combustion_phase+=/pyroblast,if=(buff.firestorm.react|buff.hyperthermia.react) ## With Sun King's Blessing, there is a brief delay before the Sun King's Blessing ready buff is removed after consuming it. It is beneficial to wait for this delay before spending Hot Streaks to not waste a stack. ## actions.combustion_phase+=/wait,sec=0.01,if=buff.hot_streak.react&active_enemiesexecute_time+action.flamestrike.cast_time&buff.rune_of_power.remains=variable.combustion_flamestrike actions.combustion_phase+=/flamestrike,if=buff.sun_kings_blessing_ready.up&buff.sun_kings_blessing_ready.remains>cast_time&active_enemies>=variable.combustion_flamestrike&buff.sun_kings_blessing_ready.expiration_delay_remains=0 actions.combustion_phase+=/rune_of_power,if=buff.sun_kings_blessing_ready.up&buff.sun_kings_blessing_ready.remains>execute_time+action.pyroblast.cast_time&buff.rune_of_power.remainscast_time&buff.sun_kings_blessing_ready.expiration_delay_remains=0 # Pyroclasm procs should be used in Combustion at higher priority than Phoenix Flames and Scorch. actions.combustion_phase+=/pyroblast,if=buff.pyroclasm.react&buff.pyroclasm.remains>cast_time&buff.combustion.remains>cast_time&active_enemiesexecute_time|buff.heating_up.react+hot_streak_spells_in_flight<2) actions.combustion_phase+=/fireball,if=buff.combustion.remains>cast_time&buff.flame_accelerant.react # Use Phoenix Flames and Scorch in Combustion to help generate Hot Streaks when Fire Blasts are not available or need to be conserved. actions.combustion_phase+=/phoenix_flames,if=!talent.alexstraszas_fury&buff.combustion.up&travel_timecast_time&cast_time>=gcd.max actions.combustion_phase+=/fireball,if=buff.combustion.remains>cast_time # If there isn't enough time left in Combustion for a Phoenix Flames or Scorch to hit inside of Combustion, use something else. actions.combustion_phase+=/living_bomb,if=buff.combustion.remains1 actions.combustion_phase+=/ice_nova,if=buff.combustion.remains=variable.hot_streak_flamestrike&(buff.hot_streak.react|(buff.firestorm.react|buff.hyperthermia.react)) actions.rop_phase+=/fireball,if=buff.deathborne.up&runeforge.deaths_fathom&variable.time_to_combustion=2 actions.rop_phase+=/flamestrike,if=active_enemies>=variable.hard_cast_flamestrike&buff.sun_kings_blessing_ready.up&buff.sun_kings_blessing_ready.remains>cast_time&buff.sun_kings_blessing_ready.expiration_delay_remains=0 actions.rop_phase+=/pyroblast,if=buff.sun_kings_blessing_ready.up&buff.sun_kings_blessing_ready.remains>cast_time&buff.sun_kings_blessing_ready.expiration_delay_remains=0 actions.rop_phase+=/pyroblast,if=(buff.firestorm.react|buff.hyperthermia.react) actions.rop_phase+=/pyroblast,if=buff.hot_streak.react # Use one Fire Blast early in RoP if you don't have either Heating Up or Hot Streak yet and either: (a) have more than two already, (b) have Alexstrasza's Fury ready to use, or (c) Searing Touch is active. Don't do this while hard casting Flamestrikes or when Sun King's Blessing is ready. actions.rop_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!variable.fire_blast_pooling&buff.sun_kings_blessing_ready.down&active_enemies=2|(talent.alexstraszas_fury&cooldown.dragons_breath.ready)|searing_touch.active)) # Use Fire Blast either during a Fireball/Pyroblast cast when Heating Up is active or during execute with Searing Touch. actions.rop_phase+=/fire_blast,use_off_gcd=1,use_while_casting=1,if=!variable.fire_blast_pooling&!firestarter.active&buff.sun_kings_blessing_ready.down&(((action.fireball.executing&(action.fireball.execute_remains<0.5|!(runeforge.firestorm|talent.hyperthermia))|action.pyroblast.executing&(action.pyroblast.execute_remains<0.5|!(runeforge.firestorm|talent.hyperthermia)))&buff.heating_up.react)|(searing_touch.active&(buff.heating_up.react&!action.scorch.executing|!buff.hot_streak.react&!buff.heating_up.react&action.scorch.executing&!hot_streak_spells_in_flight))) actions.rop_phase+=/call_action_list,name=active_talents # actions.rop_phase+=/scorch,if=searing_touch.active&talent.improved_scorch&debuff.improved_scorch.remains<3*gcd.max actions.rop_phase+=/pyroblast,if=buff.pyroclasm.react&cast_time1)) actions.rop_phase+=/scorch,if=searing_touch.active actions.rop_phase+=/dragons_breath,if=active_enemies>2 actions.rop_phase+=/arcane_explosion,if=active_enemies>=variable.arcane_explosion&mana.pct>=variable.arcane_explosion_mana # With enough targets, it is a gain to cast Flamestrike as filler instead of Fireball. actions.rop_phase+=/flamestrike,if=active_enemies>=variable.hard_cast_flamestrike actions.rop_phase+=/pyroblast,if=talent.tempered_flames&!buff.flame_accelerant.react actions.rop_phase+=/fireball actions.standard_rotation=flamestrike,if=active_enemies>=variable.hot_streak_flamestrike&(buff.hot_streak.react|(buff.firestorm.react|buff.hyperthermia.react)) actions.standard_rotation+=/fireball,if=buff.deathborne.up&runeforge.deaths_fathom&variable.time_to_combustion=2 actions.standard_rotation+=/pyroblast,if=(buff.firestorm.react|buff.hyperthermia.react) actions.standard_rotation+=/pyroblast,if=buff.hot_streak.react&buff.hot_streak.remains=variable.hard_cast_flamestrike&buff.sun_kings_blessing_ready.up&(cooldown.rune_of_power.remains+action.rune_of_power.execute_time+cast_time>buff.sun_kings_blessing_ready.remains|!talent.rune_of_power)&variable.time_to_combustion+cast_time>buff.sun_kings_blessing_ready.remains&buff.sun_kings_blessing_ready.expiration_delay_remains=0 actions.standard_rotation+=/pyroblast,if=buff.sun_kings_blessing_ready.up&(cooldown.rune_of_power.remains+action.rune_of_power.execute_time+cast_time>buff.sun_kings_blessing_ready.remains|!talent.rune_of_power)&variable.time_to_combustion+cast_time>buff.sun_kings_blessing_ready.remains&buff.sun_kings_blessing_ready.expiration_delay_remains=0 actions.standard_rotation+=/pyroblast,if=buff.hot_streak.react&searing_touch.active actions.standard_rotation+=/pyroblast,if=buff.pyroclasm.react&cast_time1 actions.standard_rotation+=/scorch,if=searing_touch.active actions.standard_rotation+=/arcane_explosion,if=active_enemies>=variable.arcane_explosion&mana.pct>=variable.arcane_explosion_mana # With enough targets, it is a gain to cast Flamestrike as filler instead of Fireball. actions.standard_rotation+=/flamestrike,if=active_enemies>=variable.hard_cast_flamestrike actions.standard_rotation+=/pyroblast,if=talent.tempered_flames&!buff.flame_accelerant.react actions.standard_rotation+=/fireball