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 # The second Time Warp is usually best used immediately on pull with Temporal Warp so that it comes off cooldown earlier; this can sometimes be slightly worse if doing so will not result in additional Time Warp(s) throughout the encounter. Additionally, it should always be used at the end of the fight regardless of Combustion being ready if it is available. actions+=/time_warp,if=talent.temporal_warp&(buff.exhaustion.up|interpolated_fight_remainsvariable.time_to_combustion+buff.combustion.duration 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. 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+=/shifting_power,if=buff.combustion.down&(action.fire_blast.charges=0|variable.fire_blast_pooling)&(cooldown.rune_of_power.remains|!talent.rune_of_power)&!buff.hot_streak.react&variable.shifting_power_before_combustion # When using Flamestrike in Combustion, save as many charges as possible for Combustion without capping. 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+=/call_action_list,name=firestarter_fire_blasts,if=buff.combustion.down&firestarter.active&variable.time_to_combustion>0 # 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 # While casting Fireball or Pyroblast, convert Heating Up to a Hot Streak! actions.firestarter_fire_blasts+=/fire_blast,use_while_casting=1,if=!variable.fire_blast_pooling&!buff.hot_streak.react&(action.fireball.execute_remains>gcd.remains|action.pyroblast.executing)&buff.heating_up.react+hot_streak_spells_in_flight=1&(cooldown.shifting_power.ready|charges>1|buff.feel_the_burn.remains<2*gcd.max) # If not casting anything, use Fire Blast to trigger Hot Streak! only if Feel the Burn is talented and would expire before the GCD ends or if Shifting Power is available. actions.firestarter_fire_blasts+=/fire_blast,use_off_gcd=1,if=!variable.fire_blast_pooling&buff.heating_up.react+hot_streak_spells_in_flight=1&(talent.feel_the_burn&buff.feel_the_burn.remains2*gcd.max)) 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_remains15)&!firestarter.remains&!talent.tempered_flames actions.active_talents+=/dragons_breath,if=talent.alexstraszas_fury&(buff.combustion.down&!buff.hot_streak.react)&(buff.feel_the_burn.up|time>15)&talent.tempered_flames actions.combustion_cooldowns=potion actions.combustion_cooldowns+=/blood_fury actions.combustion_cooldowns+=/berserking,if=buff.combustion.up actions.combustion_cooldowns+=/fireblood actions.combustion_cooldowns+=/ancestral_call ## The addon does not invoke external buffs, because they player cannot actually choose to trigger them personally. ## actions.combustion_cooldowns+=/invoke_external_buff,name=power_infusion,if=buff.power_infusion.down ## actions.combustion_cooldowns+=/invoke_external_buff,name=blessing_of_summer,if=buff.blessing_of_summer.down actions.combustion_cooldowns+=/time_warp,if=(talent.temporal_warp|runeforge.temporal_warp)&buff.exhaustion.up actions.combustion_cooldowns+=/use_item,effect_name=gladiators_badge actions.combustion_cooldowns+=/use_item,name=irideus_fragment actions.combustion_cooldowns+=/use_item,name=spoils_of_neltharus actions.combustion_cooldowns+=/use_item,name=tome_of_unstable_power actions.combustion_cooldowns+=/use_item,name=timebreaching_talon actions.combustion_cooldowns+=/use_item,name=voidmenders_shadowgem actions.combustion_cooldowns+=/use_item,name=horn_of_valor actions.combustion_phase=lights_judgment,if=buff.combustion.down actions.combustion_phase+=/bag_of_tricks,if=buff.combustion.down actions.combustion_phase+=/living_bomb,if=active_enemies>1&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 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 # With the T30 set, Phoenix Flames should be used to maintain Charring Embers during Combustion and Flame's Fury procs should be spent. actions.combustion_phase+=/phoenix_flames,if=set_bonus.tier30_2pc&travel_timecast_time&buff.combustion.remains>cast_time&active_enemiesexecute_time|buff.heating_up.react+hot_streak_spells_in_flight<2) # Avoid capping Phoenix Flames charges during Combustion. TODO: Is there a better way to spend these? actions.combustion_phase+=/phoenix_flames,if=set_bonus.tier30_2pc&charges_fractional>2.5&(travel_timecast_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=!set_bonus.tier30_2pc&!talent.alexstraszas_fury&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+=/pyroblast,if=buff.hyperthermia.react actions.standard_rotation+=/pyroblast,if=buff.hot_streak.react&(buff.hot_streak.remains0) actions.standard_rotation+=/pyroblast,if=buff.hot_streak.react&(prev_gcd.1.fireball|fireball_hardcast_prevented|firestarter.active|action.pyroblast.in_flight) # Try to get SKB procs inside RoP phases or Combustion phases when possible. actions.standard_rotation+=/flamestrike,if=active_enemies>=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+=/call_action_list,name=active_talents actions.standard_rotation+=/dragons_breath,if=active_enemies>1 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