Cogspark Works · Rotation
Augmentation Evoker
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
- Items
- Filler
Before the pull, done once before the fight starts (28 steps)
Before the pull28 lines
- Record your stats before the pull (sim bookkeeping)
simc
snapshot_stats - Reset spam heal to its starting valuespam heal starts each fight at 0
simc
variable,name=spam_heal,default=0,op=reset - Reset minimum opener delay to its starting valueminimum opener delay starts each fight at 0
simc
variable,name=minimum_opener_delay,op=reset,default=0 - Set opener delay to minimum opener delayyou don't have Interwoven Threads talented
simc
variable,name=opener_delay,value=variable.minimum_opener_delay,if=!talent.interwoven_threads - Set opener delay to minimum opener delay plus opener delayyou have Interwoven Threads talented
simc
variable,name=opener_delay,value=variable.minimum_opener_delay+variable.opener_delay,if=talent.interwoven_threads - Reset opener cds detected to its starting valueopener cds detected starts each fight at 0
simc
variable,name=opener_cds_detected,op=reset,default=0 - Set trinket 1 exclude to true when the following holds, otherwise falseany of these:
- trinket 1 is Ruby Whelp Shell
- trinket 1 is Whispering Incarnate Icon
- trinket 1 is Ovinaxs Mercurial Egg
- trinket 1 is Aberrant Spellforge
simc
variable,name=trinket_1_exclude,value=trinket.1.is.ruby_whelp_shell|trinket.1.is.whispering_incarnate_icon|trinket.1.is.ovinaxs_mercurial_egg|trinket.1.is.aberrant_spellforge - Set trinket 2 exclude to true when the following holds, otherwise falseany of these:
- trinket 2 is Ruby Whelp Shell
- trinket 2 is Whispering Incarnate Icon
- trinket 2 is Ovinaxs Mercurial Egg
- trinket 2 is Aberrant Spellforge
simc
variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell|trinket.2.is.whispering_incarnate_icon|trinket.2.is.ovinaxs_mercurial_egg|trinket.2.is.aberrant_spellforge - Set trinket 1 manual to true when the following holds, otherwise falseany of these:Nymues is complicated, Manual Handle
- trinket 1 is Nymues Unraveling Spindle
- trinket 1 is Spymasters Web
- trinket 1 is Treacherous Transmitter
- trinket 1 is House of Cards
- trinket 1 is Vaelgors Final Stare
- trinket 1 is Hex Lords Dooming Idol
- trinket 1 is Font of Venomous Rage
- trinket 1 is Stormbound Emblem of Dazar
simc
variable,name=trinket_1_manual,value=trinket.1.is.nymues_unraveling_spindle|trinket.1.is.spymasters_web|trinket.1.is.treacherous_transmitter|trinket.1.is.house_of_cards|trinket.1.is.vaelgors_final_stare|trinket.1.is.hex_lords_dooming_idol|trinket.1.is.font_of_venomous_rage|trinket.1.is.stormbound_emblem_of_dazar - Set trinket 2 manual to true when the following holds, otherwise falseany of these:
- trinket 2 is Nymues Unraveling Spindle
- trinket 2 is Spymasters Web
- trinket 2 is Treacherous Transmitter
- trinket 2 is House of Cards
- trinket 2 is Vaelgors Final Stare
- trinket 2 is Hex Lords Dooming Idol
- trinket 2 is Font of Venomous Rage
- trinket 2 is Stormbound Emblem of Dazar
simc
variable,name=trinket_2_manual,value=trinket.2.is.nymues_unraveling_spindle|trinket.2.is.spymasters_web|trinket.2.is.treacherous_transmitter|trinket.2.is.house_of_cards|trinket.2.is.vaelgors_final_stare|trinket.2.is.hex_lords_dooming_idol|trinket.2.is.font_of_venomous_rage|trinket.2.is.stormbound_emblem_of_dazar - Set trinket 1 ogcd cast to true when the following holds, otherwise falsetrinket 1 is Beacon to the Beyond
simc
variable,name=trinket_1_ogcd_cast,value=trinket.1.is.beacon_to_the_beyond - Set trinket 2 ogcd cast to true when the following holds, otherwise falsetrinket 2 is Beacon to the Beyond
simc
variable,name=trinket_2_ogcd_cast,value=trinket.2.is.beacon_to_the_beyond - Set trinket 1 buffs to true when the following holds, otherwise falseall of these:
- any of these:
- trinket 1 has an on-use effect that grants a stat buff
- all of these:
- any of these:
- trinket 1 can grant Intellect
- trinket 1 can grant Mastery
- trinket 1 can grant Versatility
- trinket 1 can grant Haste
- trinket 1 can grant Critical Strike
- trinket 1 exclude is false
- any of these:
- trinket 1 isn't Flarendos Pilot Light
simc
variable,name=trinket_1_buffs,value=(trinket.1.has_use_buff|(trinket.1.has_buff.intellect|trinket.1.has_buff.mastery|trinket.1.has_buff.versatility|trinket.1.has_buff.haste|trinket.1.has_buff.crit)&!variable.trinket_1_exclude)&(!trinket.1.is.flarendos_pilot_light) - any of these:
- Set trinket 2 buffs to true when the following holds, otherwise falseall of these:
- any of these:
- trinket 2 has an on-use effect that grants a stat buff
- all of these:
- any of these:
- trinket 2 can grant Intellect
- trinket 2 can grant Mastery
- trinket 2 can grant Versatility
- trinket 2 can grant Haste
- trinket 2 can grant Critical Strike
- trinket 2 exclude is false
- any of these:
- trinket 2 isn't Flarendos Pilot Light
simc
variable,name=trinket_2_buffs,value=(trinket.2.has_use_buff|(trinket.2.has_buff.intellect|trinket.2.has_buff.mastery|trinket.2.has_buff.versatility|trinket.2.has_buff.haste|trinket.2.has_buff.crit)&!variable.trinket_2_exclude)&(!trinket.2.is.flarendos_pilot_light) - any of these:
- Set trinket 1 sync to 1 when the following holds, otherwise to 0.5all of these:
- trinket 1 buffs is true
- the remainder of trinket 1's cooldown divided by 120 is 0
simc
variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%120=0) - Set trinket 2 sync to 1 when the following holds, otherwise to 0.5all of these:
- trinket 2 buffs is true
- the remainder of trinket 2's cooldown divided by 120 is 0
simc
variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%120=0) - Set trinket priority to 2 when the following holds, otherwise to 1any of these:
- all of these:
- trinket 1 buffs is false
- trinket 2 buffs is true
- any of these:
- all of these:
- trinket 2 has a cooldown
- trinket 2 exclude is false
- trinket 1 has no cooldown
- all of these:
- all of these:
- trinket 2 buffs is true
- trinket 2's cooldown divided by trinket 2's stat buff's duration times (0.5 plus (3 if trinket 2 can grant Intellect, else 0) plus (1 if trinket 2 can grant Mastery, else 0)) times trinket 2 sync is more than trinket 1's cooldown divided by trinket 1's stat buff's duration times (0.5 plus (3 if trinket 1 can grant Intellect, else 0) plus (1 if trinket 1 can grant Mastery, else 0)) times trinket 1 sync times (1 plus ((trinket 1's item level minus trinket 2's item level) divided by 100))
simc
variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&variable.trinket_2_buffs&(trinket.2.has_cooldown&!variable.trinket_2_exclude|!trinket.1.has_cooldown)|variable.trinket_2_buffs&((trinket.2.cooldown.duration%trinket.2.proc.any_dps.duration)*(0.5+trinket.2.has_buff.intellect*3+trinket.2.has_buff.mastery)*(variable.trinket_2_sync))>((trinket.1.cooldown.duration%trinket.1.proc.any_dps.duration)*(0.5+trinket.1.has_buff.intellect*3+trinket.1.has_buff.mastery)*(variable.trinket_1_sync)*(1+((trinket.1.ilvl-trinket.2.ilvl)%100))) - all of these:
- Set damage trinket priority to 2 when the following holds, otherwise to 1all of these:
- trinket 1 buffs is false
- trinket 2 buffs is false
- trinket 2's item level is at least trinket 1's item level
simc
variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=!variable.trinket_1_buffs&!variable.trinket_2_buffs&trinket.2.ilvl>=trinket.1.ilvl - Set trinket priority to 2 when the following holds, otherwise to 1any of these:Only updated when (trinket 1 is Nymues Unraveling Spindle or trinket 2 is Nymues Unraveling Spindle) and trinket 1 buffs is true and trinket 2 buffs is trueDouble on use - Priotize Intellect on use trinkets over Nymues, force overwriting the normal logic to guarantee it is correct.
- all of these:
- trinket 1 is Nymues Unraveling Spindle
- trinket 2 can grant Intellect
- all of these:
- trinket 2 is Nymues Unraveling Spindle
- trinket 1 can't grant Intellect
simc
variable,name=trinket_priority,op=setif,value=2,value_else=1,condition=trinket.1.is.nymues_unraveling_spindle&trinket.2.has_buff.intellect|trinket.2.is.nymues_unraveling_spindle&!trinket.1.has_buff.intellect,if=(trinket.1.is.nymues_unraveling_spindle|trinket.2.is.nymues_unraveling_spindle)&(variable.trinket_1_buffs&variable.trinket_2_buffs) - all of these:
- Reset ebon might pandemic threshold to its starting valueebon might pandemic threshold starts each fight at 0.4
simc
variable,name=ebon_might_pandemic_threshold,op=reset,default=0.4 - Reset enforce timings to its starting valueenforce timings starts each fight at 0
simc
variable,name=enforce_timings,op=reset,default=0 - Reset spam on use trinket to its starting valuespam on use trinket starts each fight at 1
simc
variable,name=spam_on_use_trinket,op=reset,default=1 - Reset azure st filler to its starting valueazure st filler starts each fight at 1
simc
variable,name=azure_st_filler,op=reset,default=1 - Reset bombardments pooling to its starting valuebombardments pooling starts each fight at 1
simc
variable,name=bombardments_pooling,op=reset,default=1 - Reset crit fish to its starting valuecrit fish starts each fight at 1
simc
variable,name=crit_fish,op=reset,default=1 - Use Aberrant Spellforge
simc
use_item,name=aberrant_spellforge - Cast Blistering Scalestarget on the first enemy where
target.role.tanksimc
blistering_scales,target_if=target.role.tank - Cast Living Flame
simc
living_flame
The main loop23 lines
- Set eons remains to the cooldown left on Allied Virtual Cd Time when the following holds, otherwise to the cooldown left on Breath of Eonsenforce timings is trueOnly updated when you have Breath of Eons talented
simc
variable,name=eons_remains,op=setif,value=cooldown.allied_virtual_cd_time.remains,value_else=cooldown.breath_of_eons.remains,condition=variable.enforce_timings,if=talent.breath_of_eons - Cancel Tip the Scales if Fire Breath is on cooldown and you have Temporal Burst talented and you have Time Skip talented and you don't have Interwoven Threads talented
simc
cancel_buff,name=tip_the_scales,if=cooldown.fire_breath.remains>0&talent.temporal_burst&talent.time_skip&!talent.interwoven_threads - Cast Hover if the time left on the global cooldown is at least 0.5 s and (the fight has no movement phases or the next movement phase starts within 6 s)Used without waiting for the global cooldown
simc
hover,use_off_gcd=1,if=gcd.remains>=0.5&(!raid_event.movement.exists|raid_event.movement.in<=6) - Get Power Infusion from an ally if Duplicate is active
simc
invoke_external_buff,name=power_infusion,if=buff.duplicate.up - Drink a potion if
consumable.potion_of_recklessnessand you have Double-time talentedsimc
potion,if=consumable.potion_of_recklessness&talent.doubletime - Cast Ebon Might if ((the time left on Ebon Might Self minus Ebon Might's cast time is at most Ebon Might Self's duration times ebon might pandemic threshold and (there are more than 0 enemies or the next add wave starts within 3 s)) or (you have Double-time talented and crit fish is at least 1)) and (eons remains is more than 0 or you don't have Double-time talented or Ebon Might Self is active)
simc
ebon_might,if=(((buff.ebon_might_self.remains-cast_time)<=buff.ebon_might_self.duration*variable.ebon_might_pandemic_threshold)&(active_enemies>0|raid_event.adds.in<=3)|talent.doubletime&variable.crit_fish>=1)&(variable.eons_remains>0|!talent.doubletime|buff.ebon_might_self.up) - Cast Prescience if Prescience has less than 2 global cooldowns left on the target, or isn't active and at most 8 s into the fighttarget on the enemy with the lowest time left on Prescience on the target minus (200 if (
target.role.attackortarget.role.spellortarget.role.dps), else 0) plus (50 if the target's specialization is augmentation, else 0)simc
prescience,target_if=min:(debuff.prescience.remains-200*(target.role.attack|target.role.spell|target.role.dps)+50*target.spec.augmentation),if=debuff.prescience.remains<gcd.max*2&time<=8 - Drink a potion if eons remains is at most 0 or Breath of Eons has at least 90 s of cooldown left or (the fight ends within 30 s and the sim's fight style isn't DungeonRoute)
simc
potion,if=variable.eons_remains<=0|cooldown.breath_of_eons.remains>=90|fight_remains<=30&!fight_style.dungeonroute go through Items, then carry on below if nothing there fits
simc
call_action_list,name=itemsItems12 lines
- Use Vaelgors Final Stare if (
evoker.shifting_buffsis at least 2 or (evoker.shifting_buffsis at least 1 and (Fire Breath comes off cooldown within 7 s or Upheaval comes off cooldown within 7 s)) or (Fire Breath is off cooldown and Upheaval is off cooldown)) and Breath of Eons is on cooldown andevoker.allied_cds_upis more than 0simc
use_item,name=vaelgors_final_stare,if=(evoker.shifting_buffs>=2|evoker.shifting_buffs>=1&(cooldown.fire_breath.remains<=7|cooldown.upheaval.remains<=7)|cooldown.fire_breath.up&cooldown.upheaval.up)&!cooldown.breath_of_eons.up&evoker.allied_cds_up>0 - Use Hex Lords Dooming Idol if ((Duplicate has at least 10 s left and Hex Lord's Doom has 8 or more stacks) or the fight ends within 35 s) and ((trinket 1 is Hex Lords Dooming Idol and (trinket 2's cooldown is at most 20 s or trinket 2 has at least 30 s of cooldown left)) or (trinket 2 is Hex Lords Dooming Idol and (trinket 1's cooldown is at most 20 s or trinket 1 has at least 30 s of cooldown left)) or Hex Lord's Doom has 10 or more stacks)
simc
use_item,name=hex_lords_dooming_idol,if=(buff.duplicate.remains>=10&buff.hex_lords_doom.stack>=8|fight_remains<=35)&(trinket.1.is.hex_lords_dooming_idol&(trinket.2.cooldown.duration<=20|trinket.2.cooldown.remains>=30)|trinket.2.is.hex_lords_dooming_idol&(trinket.1.cooldown.duration<=20|trinket.1.cooldown.remains>=30)|buff.hex_lords_doom.stack>=10) - Use Stormbound Emblem of Dazar
simc
use_item,name=stormbound_emblem_of_dazar - Use your trinket 1 if (trinket 1 buffs is true and trinket 1 manual is false and trinket 1 exclude is false and (Temporal Wound is active on the target or your last spell on the global cooldown was Breath of Eons or (you don't have Breath of Eons talented and Ebon Might Self is active and there are 1 or more enemies) or (spam on use trinket is true and (Breath of Eons is on cooldown or eons remains is at least 10)) or (trinket 2 buffs is true and trinket 2 is on cooldown and (your last spell on the global cooldown was Fire Breath or your last spell on the global cooldown was Upheaval) and Ebon Might Self is active)) and (trinket 2 exclude is true or trinket 2 has no cooldown or trinket 2 is on cooldown or trinket priority is 1)) or trinket 1's stat buff's duration is at least the time left in the fight
simc
use_item,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&!variable.trinket_1_exclude&((debuff.temporal_wound.up|prev_gcd.1.breath_of_eons|!talent.breath_of_eons&buff.ebon_might_self.up&active_enemies>=1|variable.spam_on_use_trinket&(!cooldown.breath_of_eons.up|variable.eons_remains>=10))|variable.trinket_2_buffs&!trinket.2.cooldown.up&(prev_gcd.1.fire_breath|prev_gcd.1.upheaval)&buff.ebon_might_self.up)&(variable.trinket_2_exclude|!trinket.2.has_cooldown|trinket.2.cooldown.remains|variable.trinket_priority=1)|trinket.1.proc.any_dps.duration>=fight_remains - Use your trinket 2 if (trinket 2 buffs is true and trinket 2 manual is false and trinket 2 exclude is false and (Temporal Wound is active on the target or your last spell on the global cooldown was Breath of Eons or (you don't have Breath of Eons talented and Ebon Might Self is active and there are 1 or more enemies) or (spam on use trinket is true and (Breath of Eons is on cooldown or eons remains is at least 10)) or (trinket 1 buffs is true and trinket 1 is on cooldown and (your last spell on the global cooldown was Fire Breath or your last spell on the global cooldown was Upheaval) and Ebon Might Self is active)) and (trinket 1 exclude is true or trinket 1 has no cooldown or trinket 1 is on cooldown or trinket priority is 2)) or trinket 2's stat buff's duration is at least the time left in the fight
simc
use_item,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&!variable.trinket_2_exclude&((debuff.temporal_wound.up|prev_gcd.1.breath_of_eons|!talent.breath_of_eons&buff.ebon_might_self.up&active_enemies>=1|variable.spam_on_use_trinket&(!cooldown.breath_of_eons.up|variable.eons_remains>=10))|variable.trinket_1_buffs&!trinket.1.cooldown.up&(prev_gcd.1.fire_breath|prev_gcd.1.upheaval)&buff.ebon_might_self.up)&(variable.trinket_1_exclude|!trinket.1.has_cooldown|trinket.1.cooldown.remains|variable.trinket_priority=2)|trinket.2.proc.any_dps.duration>=fight_remains - Cast Azure Strike if Item Cd 1141 is off cooldown and ((trinket 1 ogcd cast is true and trinket 1 is off cooldown and (damage trinket priority is 1 or trinket 2 is on cooldown)) or (trinket 2 ogcd cast is true and trinket 2 is off cooldown and (damage trinket priority is 2 or trinket 1 is on cooldown)))Azure Strike for OGCD trinkets. Ideally this would be Prescience casts in reality but this is simpler and seems to have no noticeable diferrence in DPS.
simc
azure_strike,if=cooldown.item_cd_1141.up&(variable.trinket_1_ogcd_cast&trinket.1.cooldown.up&(variable.damage_trinket_priority=1|trinket.2.cooldown.remains)|variable.trinket_2_ogcd_cast&trinket.2.cooldown.up&(variable.damage_trinket_priority=2|trinket.1.cooldown.remains)) - Use your trinket 1 if trinket 1 buffs is false and trinket 1 manual is false and trinket 1 exclude is false and (damage trinket priority is 1 or trinket 2 is on cooldown or (trinket 2 is Spymasters Web and Spymaster's Report has fewer than 30 stacks) or eons remains is at least 20 or you don't have Breath of Eons talented or trinket 2's cooldown is 0 s or trinket 2 exclude is true) and the time left on the global cooldown is more than 0.1 s and trinket 1 ogcd cast is trueUsed without waiting for the global cooldownIf only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.
simc
use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&!variable.trinket_1_exclude&(variable.damage_trinket_priority=1|trinket.2.cooldown.remains|trinket.2.is.spymasters_web&buff.spymasters_report.stack<30|variable.eons_remains>=20|!talent.breath_of_eons|trinket.2.cooldown.duration=0|variable.trinket_2_exclude)&(gcd.remains>0.1&variable.trinket_1_ogcd_cast) - Use your trinket 2 if trinket 2 buffs is false and trinket 2 manual is false and trinket 2 exclude is false and (damage trinket priority is 2 or trinket 1 is on cooldown or (trinket 1 is Spymasters Web and Spymaster's Report has fewer than 30 stacks) or eons remains is at least 20 or you don't have Breath of Eons talented or trinket 1's cooldown is 0 s or trinket 1 exclude is true) and the time left on the global cooldown is more than 0.1 s and trinket 2 ogcd cast is trueUsed without waiting for the global cooldown
simc
use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&!variable.trinket_2_exclude&(variable.damage_trinket_priority=2|trinket.1.cooldown.remains|trinket.1.is.spymasters_web&buff.spymasters_report.stack<30|variable.eons_remains>=20|!talent.breath_of_eons|trinket.1.cooldown.duration=0|variable.trinket_1_exclude)&(gcd.remains>0.1&variable.trinket_2_ogcd_cast) - Use your trinket 1 if trinket 1 buffs is false and trinket 1 manual is false and trinket 1 exclude is false and (damage trinket priority is 1 or trinket 2 is on cooldown or (trinket 2 is Spymasters Web and Spymaster's Report has fewer than 30 stacks) or eons remains is at least 20 or you don't have Breath of Eons talented or trinket 2's cooldown is 0 s or trinket 2 exclude is true) and trinket 1 ogcd cast is false
simc
use_item,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&!variable.trinket_1_exclude&(variable.damage_trinket_priority=1|trinket.2.cooldown.remains|trinket.2.is.spymasters_web&buff.spymasters_report.stack<30|variable.eons_remains>=20|!talent.breath_of_eons|trinket.2.cooldown.duration=0|variable.trinket_2_exclude)&(!variable.trinket_1_ogcd_cast) - Use your trinket 2 if trinket 2 buffs is false and trinket 2 manual is false and trinket 2 exclude is false and (damage trinket priority is 2 or trinket 1 is on cooldown or (trinket 1 is Spymasters Web and Spymaster's Report has fewer than 30 stacks) or eons remains is at least 20 or you don't have Breath of Eons talented or trinket 1's cooldown is 0 s or trinket 1 exclude is true) and trinket 2 ogcd cast is false
simc
use_item,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&!variable.trinket_2_exclude&(variable.damage_trinket_priority=2|trinket.1.cooldown.remains|trinket.1.is.spymasters_web&buff.spymasters_report.stack<30|variable.eons_remains>=20|!talent.breath_of_eons|trinket.1.cooldown.duration=0|variable.trinket_1_exclude)&(!variable.trinket_2_ogcd_cast) - Use Bestinslots if Ebon Might Self is active and (trinket 1 buffs is false or trinket 1's cooldown is at most 20 s or trinket 1 has at least 10 s of cooldown left) and (trinket 2 buffs is false or trinket 2's cooldown is at most 20 s or trinket 2 has at least 10 s of cooldown left)Used without waiting for the global cooldown
simc
use_item,name=bestinslots,use_off_gcd=1,if=buff.ebon_might_self.up&(!variable.trinket_1_buffs|trinket.1.cooldown.duration<=20|trinket.1.cooldown.remains>=10)&(!variable.trinket_2_buffs|trinket.2.cooldown.duration<=20|trinket.2.cooldown.remains>=10) - Use the item in your main hand slot if the time left on the global cooldown is at least 0.6 global cooldowns and you don't have Bestinslots equippedUsed without waiting for the global cooldownUse on use weapons
simc
use_item,slot=main_hand,use_off_gcd=1,if=gcd.remains>=gcd.max*0.6&!equipped.bestinslots
- Cast Fury of the Aspects if you have Time Convergence talented and Time Convergence Intellect isn't active and (you have 2 or more Essence or Essence Burst is active and you've had time to react to it) and eons remains is at least 8
simc
fury_of_the_aspects,if=talent.time_convergence&!buff.time_convergence_intellect.up&(essence>=2|buff.essence_burst.react)&variable.eons_remains>=8 - Cast Tip the Scales if (Breath of Eons is on cooldown or (Allied Virtual Cd Time is on cooldown and enforce timings is 1)) and (Fire Breath is off cooldown or (you have Temporal Burst talented and Fire Breath has more than 2 global cooldowns of cooldown left))
simc
tip_the_scales,if=(!cooldown.breath_of_eons.up|!cooldown.allied_virtual_cd_time.up&variable.enforce_timings=1)&(cooldown.fire_breath.up|talent.temporal_burst&cooldown.fire_breath.remains>gcd.max*2) - Cast Deep BreathCancel the channel when the global cooldown is over
simc
deep_breath,cancel_if=gcd.remains<=0 - Cast Breath of Eons if (the target lives at least 20 s longer and enforce timings is false) or (enforce timings is true and Allied Virtual Cd Time is off cooldown)Cancel the channel when the global cooldown is over
simc
breath_of_eons,if=target.time_to_die>=20&(!variable.enforce_timings)|variable.enforce_timings&cooldown.allied_virtual_cd_time.up,cancel_if=gcd.remains<=0 - Cast Eruption if you have Afterimage talented and Essence Burst is at maximum stacks
simc
eruption,if=talent.afterimage&buff.essence_burst.at_max_stacks - Cast Fire Breath if Ebon Might Self is active and Upheaval is off cooldowntarget on the first enemy where the target lives more than Fire Breath's duration plus 0.2 s longerEmpower it to rank 1
simc
fire_breath,target_if=target.time_to_die>duration+0.2,empower_to=1,if=buff.ebon_might_self.up&cooldown.upheaval.up - Cast Fire Breath if Ebon Might Self is active and Upheaval is on cooldowntarget on the first enemy where the target lives more than Fire Breath's duration plus 0.2 s longerEmpower it to rank 3
simc
fire_breath,target_if=target.time_to_die>duration+0.2,empower_to=3,if=buff.ebon_might_self.up&!cooldown.upheaval.up - Cast Upheaval if Ebon Might Self is active and Magnified Fate has at most Upheaval's duration left, or isn't activetarget on the first enemy where the target lives more than Upheaval's duration plus 0.2 s longerEmpower it to rank 1
simc
upheaval,target_if=target.time_to_die>duration+0.2,empower_to=1,if=buff.ebon_might_self.up&buff.magnified_fate.remains<=duration - Cast Prescience if (Prescience has at most 2 global cooldowns left on the target, or isn't active and (you don't have Anachronism talented or the stacks of Essence Burst is less than the maximum stacks of Essence Burst)) or (Time Skip is off cooldown and you have Time Skip talented)target on the enemy with the highest score of: ((the smaller of
target_cd_remainsand Prescience's duration) times (1 plus (0.6 if the target's specialization is marksmanship, else 0) plus (0.2 if the target's specialization is arcane, else 0) plus (0.1 if the target's specialization is subtlety, else 0))) minus (20000 times (target.role.healplustarget.role.tankplus (1 if the target's specialization is augmentation, else 0) plus (1 if Prescience has more than 2 global cooldowns left on the target, else 0)))actions+=/prescience,target_if=min:(debuff.prescience.remains-200*(target.role.attack|target.role.spell|target.role.dps)+50*target.spec.augmentation),if=debuff.prescience.remains<gcd.max*2&(!talent.anachronism|buff.essence_burst.stack<buff.essence_burst.max_stack)|cooldown.time_skip.up&talent.time_skipsimc
prescience,target_if=max:(target_cd_remains>?debuff.prescience.duration)*(1+0.6*target.spec.marksmanship+0.2*target.spec.arcane+target.spec.subtlety*0.1)-20000*(target.role.heal+target.role.tank+target.spec.augmentation+(debuff.prescience.remains>gcd.max*2)),if=(debuff.prescience.remains<=gcd.max*2)&(!talent.anachronism|buff.essence_burst.stack<buff.essence_burst.max_stack)|cooldown.time_skip.up&talent.time_skip - Cast Time Skip if (you don't have Chronoboon talented and Breath of Eons has at least 15 s of cooldown left) or (Tip the Scales has at least 6 s of cooldown left and Tip the Scales isn't active)
simc
time_skip,if=!talent.chronoboon&cooldown.breath_of_eons.remains>=15|cooldown.tip_the_scales.remains>=6&!buff.tip_the_scales.up - Cast Emerald Blossom if you have Dream of Spring talented and Essence Burst is active and you've had time to react to it and (spam heal is 2 or (spam heal is 1 and Ancient Flame isn't active and you have Ancient Flame talented)) and (Ebon Might Self is active or your Essence is full or (the stacks of Essence Burst is the maximum stacks of Essence Burst and Ebon Might has more than 4 s of cooldown left))
simc
emerald_blossom,if=talent.dream_of_spring&buff.essence_burst.react&(variable.spam_heal=2|variable.spam_heal=1&!buff.ancient_flame.up&talent.ancient_flame)&(buff.ebon_might_self.up|essence.deficit=0|buff.essence_burst.stack=buff.essence_burst.max_stack&cooldown.ebon_might.remains>4) - Cast Eruption if Ebon Might Self has more than Eruption's cast time lefttarget on the enemy with the highest time left on Bombardments on the target
simc
eruption,target_if=max:debuff.bombardments.remains,if=buff.ebon_might_self.remains>execute_time - Use Font of Venomous Rage
simc
use_item,name=font_of_venomous_rage switch to Filler, and nothing below is checked
simc
run_action_list,name=fillerFiller2 lines
- Cast Living Flame if ((Ancient Flame is active or you have 200000 or more Mana or you don't have Dream of Spring talented or spam heal is false) and ((you have Pupil of Alexstrasza talented and there is more than one enemy) or (you don't have Echoing Strike talented and azure st filler is false) or (you have Chrono Flame talented and azure st filler is less than 2))) or Leaping Flames is active
simc
living_flame,if=(buff.ancient_flame.up|mana>=200000|!talent.dream_of_spring|variable.spam_heal=0)&(talent.pupil_of_alexstrasza&active_enemies>1|!talent.echoing_strike&!variable.azure_st_filler|talent.chrono_flame&variable.azure_st_filler<2)|buff.leaping_flames.up - Cast Azure Strike
simc
azure_strike
Read from ActionPriorityLists/default/evoker_augmentation.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 (3 steps)
Before the pull3 lines
- Record your stats before the pull (sim bookkeeping)
simc
snapshot_stats - Cast Blistering Scales if you have Blistering Scales talented
simc
blistering_scales,if=talent.blistering_scales - Cast Living Flame
simc
living_flame
The main loop2 lines
go through Cooldowns, then carry on below if nothing there fits
simc
call_action_list,name=cooldownsCooldowns8 lines
- Drink a potionSome cooldowns are not used by the Assisted Combat system. This simple default cooldown usage has been provided by simc.
simc
potion - Cast Prescience if Breath of Eons is off cooldown and you have Breath of Eons talented
simc
prescience,use_auto=1,if=cooldown.breath_of_eons.up&talent.breath_of_eons - Cast Ebon Might if Breath of Eons is off cooldown and you have Breath of Eons talented
simc
ebon_might,if=cooldown.breath_of_eons.up&talent.breath_of_eons - Cast Breath of Eons
simc
breath_of_eons - Cast Deep Breath
simc
deep_breath - Cast Tip the Scales
simc
tip_the_scales - Cast Time Skip
simc
time_skip - Use your trinkets
simc
use_items
go through Assisted Combat, then carry on below if nothing there fits
simc
call_action_list,name=assisted_combatAssisted Combat13 lines
- Cast Prescience if Prescience isn't activeThis is the default action priority list from the game's Assisted Combat system.
simc
prescience,if=buff.prescience.down,use_auto=1 - Cast Ebon Might if Ebon Might Self isn't active
simc
ebon_might,if=buff.ebon_might_self.down - Cast Deep Breath if your distance to the target is at most 40(Overridden from 'buff.recall.down&target.distance<=40&buff.recall.down')
simc
deep_breath,if=target.distance<=40 - Cast Tip the Scales if Fire Breath is off cooldown
simc
tip_the_scales,if=cooldown.fire_breath.ready - Cast Fire Breath
simc
fire_breath,cooldown_allow_casting_success=1 - Cast Upheaval
simc
upheaval,cooldown_allow_casting_success=1 - Cast Eruption if you have 4 or more Essence
simc
eruption,if=essence>=4,cooldown_allow_casting_success=1 - Cast Blistering Scales if not
evoker.scales_upand your distance to the target is at most 30simc
blistering_scales,if=!evoker.scales_up&target.distance<=30 - Cast Eruption if you have 2 or more Essence and Essence Burst is active
simc
eruption,if=essence>=2&buff.essence_burst.up,cooldown_allow_casting_success=1 - Cast Time Skip
simc
time_skip - Cast Eruption
simc
eruption - Cast Living Flame
simc
living_flame,cooldown_allow_casting_success=1 - Cast Living Flame
simc
living_flame
Read from ActionPriorityLists/assisted_combat/evoker_augmentation.simc in simulationcraft/simc at 1860cd1d5763, the commit this engine build runs.