You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
17 KiB

## https://github.com/simulationcraft/simc/blob/thewarwithin/ActionPriorityLists/default/evoker_augmentation.simc
## Up to date with SimC: April 12 2025 - 72033f9
actions.precombat+=/variable,name=spam_heal,default=1,op=reset
actions.precombat+=/variable,name=minimum_opener_delay,op=reset,default=0
actions.precombat+=/variable,name=opener_delay,value=variable.minimum_opener_delay,if=!talent.interwoven_threads
actions.precombat+=/variable,name=opener_delay,value=variable.minimum_opener_delay+variable.opener_delay,if=talent.interwoven_threads
actions.precombat+=/variable,name=opener_cds_detected,op=reset,default=0
actions.precombat+=/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
actions.precombat+=/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
# Nymues is complicated, Manual Handle
actions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.nymues_unraveling_spindle|trinket.1.is.spymasters_web|trinket.1.is.treacherous_transmitter
actions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.nymues_unraveling_spindle|trinket.2.is.spymasters_web|trinket.2.is.treacherous_transmitter
actions.precombat+=/variable,name=trinket_1_ogcd_cast,value=trinket.1.is.beacon_to_the_beyond
actions.precombat+=/variable,name=trinket_2_ogcd_cast,value=trinket.2.is.beacon_to_the_beyond
actions.precombat+=/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)
actions.precombat+=/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)
actions.precombat+=/variable,name=trinket_1_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_1_buffs&(trinket.1.cooldown.duration%%120=0)
actions.precombat+=/variable,name=trinket_2_sync,op=setif,value=1,value_else=0.5,condition=variable.trinket_2_buffs&(trinket.2.cooldown.duration%%120=0)
actions.precombat+=/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)))
actions.precombat+=/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
# Double on use - Priotize Intellect on use trinkets over Nymues, force overwriting the normal logic to guarantee it is correct.
actions.precombat+=/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)
actions.precombat+=/variable,name=hold_empower_for,op=reset,default=6
actions.precombat+=/variable,name=ebon_might_pandemic_threshold,op=reset,default=0.4
actions.precombat+=/variable,name=wingleader_force_timings,op=reset,default=0
actions.precombat+=/use_item,name=aberrant_spellforge
actions.precombat+=/blistering_scales,if=active_dot.blistering_scales=0
actions.precombat+=/living_flame
actions+=/quell
actions+=/unravel
actions+=/variable,name=temp_wound,value=debuff.temporal_wound.remains
actions+=/variable,name=eons_remains,op=set,value=cooldown.breath_of_eons.remains
actions+=/variable,name=pool_for_id,if=talent.imminent_destruction,default=0,op=set,value=(variable.eons_remains<8&talent.breath_of_eons|cooldown.deep_breath.remains<8&!talent.breath_of_eons)&essence.deficit>=1&!buff.essence_burst.up
actions+=/prescience,cycle_targets=1,if=(solo&buff.prescience.remains<1|group&active_dot.prescience<2)&((full_recharge_time<=gcd.max*3|cooldown.ebon_might.remains<=gcd.max*3&(buff.ebon_might_self.remains-gcd.max*3)<=buff.ebon_might_self.duration*variable.ebon_might_pandemic_threshold|boss&fight_remains<=30)|variable.eons_remains<=8|talent.anachronism&buff.imminent_destruction.up&essence<1&!cooldown.fire_breath.up&!cooldown.upheaval.up)&(solo&buff.prescience.remains<gcd.max*2|active_dot.prescience<active_allies)&(!talent.anachronism|buff.essence_burst.stack<buff.essence_burst.max_stack|time<=10)
## actions+=/prescience,cycle_targets=1,if=full_recharge_time<=gcd.max*3&debuff.prescience.remains<gcd.max*2&(target.spec.augmentation|target.role.tank)&(!talent.anachronism|buff.essence_burst.stack<buff.essence_burst.max_stack|time<=5)
actions+=/hover,use_off_gcd=1,if=gcd.remains>=0.5&(!raid_event.movement.exists&(trinket.1.is.ovinaxs_mercurial_egg|trinket.2.is.ovinaxs_mercurial_egg)|raid_event.movement.in<=6)
actions+=/potion,if=variable.eons_remains<=0|boss&fight_remains<=30
actions+=/ebon_might,if=(buff.ebon_might_self.remains-action.ebon_might.cast_time)<=buff.ebon_might_self.duration*variable.ebon_might_pandemic_threshold&(variable.eons_remains>0|!talent.breath_of_eons&cooldown.deep_breath.remains>0|talent.overlord&!talent.breath_of_eons&cooldown.deep_breath.up)&(!buff.imminent_destruction.up|buff.ebon_might_self.remains<=gcd.max)
actions+=/call_action_list,name=items
actions+=/run_action_list,name=opener_filler,if=variable.opener_delay>0&boss
## [Syrif] - Don't actually recommend the lust
## actions+=/fury_of_the_aspects,if=talent.time_convergence&!buff.time_convergence_intellect.up&(essence>=2|buff.essence_burst.react)
actions+=/tip_the_scales,if=talent.threads_of_fate&(prev_gcd.1.breath_of_eons|prev_gcd.1.deep_breath|boss&fight_remains<=30)
actions+=/call_action_list,name=fb,if=empowering.fire_breath|((raid_event.adds.remains>13|raid_event.adds.in>20|evoker.allied_cds_up>0|!raid_event.adds.exists)&(variable.eons_remains>=variable.hold_empower_for|!talent.breath_of_eons|variable.eons_remains=0)&(!talent.overlord|active_enemies=1|talent.breath_of_eons|cooldown.deep_breath.remains<=gcd.max|cooldown.deep_breath.remains>=25))
actions+=/deep_breath,if=talent.overlord&buff.mass_eruption_stacks.up|!talent.overlord|!talent.mass_eruption|active_enemies=1
actions+=/upheaval,empower_to=1,if=empowering.upheaval|target.time_to_die>cast_time+0.2&buff.ebon_might_self.remains>duration&(!talent.molten_embers|dot.fire_breath_damage.ticking|cooldown.fire_breath.remains>=10|!talent.breath_of_eons&talent.overlord&active_enemies>1&cooldown.deep_breath.up&!buff.mass_eruption_stacks.up)&(cooldown.breath_of_eons.remains>=variable.hold_empower_for|!talent.breath_of_eons|talent.wingleader&cooldown.breath_of_eons.remains>=variable.hold_empower_for)&(buff.essence_burst.stack<buff.essence_burst.max_stack|!set_bonus.tww2_4pc&!talent.rockfall|!buff.essence_burst.up)
actions+=/breath_of_eons,if=talent.wingleader&fight_remains>=15&!variable.wingleader_force_timings&(time%%240<=190&time%%240>=3)|boss&fight_remains<=30
actions+=/breath_of_eons,if=((cooldown.ebon_might.remains<=4|buff.ebon_might_self.up)&fight_remains>15|boss&fight_remains<30)|boss&evoker.allied_cds_up>0|boss&fight_remains<=15&(talent.imminent_destruction|talent.melt_armor)
actions+=/breath_of_eons,if=evoker.allied_cds_up>0&((cooldown.ebon_might.remains<=4|buff.ebon_might_self.up)&fight_remains>15|boss&fight_remains<30)&!boss
actions+=/variable,name=fire_breath_cdr,value=cooldown.fire_breath.remains>?20
actions+=/variable,name=upheaval_cdr,value=cooldown.upheaval.remains>?20
actions+=/time_skip,if=variable.fire_breath_cdr+variable.upheaval_cdr>=30&(cooldown.breath_of_eons.remains>=20&talent.breath_of_eons|!talent.breath_of_eons&cooldown.deep_breath.remains>=20)
actions+=/emerald_blossom,if=talent.dream_of_spring&buff.essence_burst.up&(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)
actions+=/living_flame,cycle_targets=1,if=talent.mass_eruption&buff.mass_eruption_stacks.up&!buff.imminent_destruction.up&buff.essence_burst.stack<buff.essence_burst.max_stack&essence.deficit>1&(buff.ebon_might_self.remains>=6|cooldown.ebon_might.remains<=6)&debuff.bombardments.remains<action.eruption.execute_time&(talent.pupil_of_alexstrasza|active_enemies=1)
actions+=/azure_strike,cycle_targets=1,if=talent.mass_eruption&buff.mass_eruption_stacks.up&!buff.imminent_destruction.up&buff.essence_burst.stack<buff.essence_burst.max_stack&essence.deficit>1&(buff.ebon_might_self.remains>=6|cooldown.ebon_might.remains<=6)&debuff.bombardments.remains<action.eruption.execute_time&(talent.echoing_strike&active_enemies>1)
## [Syrif] - Don't recommend these utility spells for a self buff
## actions+=/time_spiral,if=talent.time_convergence&!buff.time_convergence_intellect.up&(essence>=2|buff.essence_burst.react)
## actions+=/oppressing_roar,if=talent.time_convergence&!buff.time_convergence_intellect.up&(essence>=2|buff.essence_burst.react)
actions+=/eruption,cycle_targets=1,if=(buff.ebon_might_self.remains>execute_time|essence.deficit=0|buff.essence_burst.stack=buff.essence_burst.max_stack&cooldown.ebon_might.remains>4)&!variable.pool_for_id&(buff.imminent_destruction.up|essence.deficit<=2|buff.essence_burst.up|variable.ebon_might_pandemic_threshold>0)
actions+=/blistering_scales,if=active_dot.blistering_scales=0&buff.ebon_might_self.down
actions+=/run_action_list,name=filler
actions.fb+=/tip_the_scales,if=cooldown.fire_breath.ready&buff.ebon_might_self.up
actions.fb+=/fire_breath,empower_to=4,cycle_targets=1,if=fight_remains>4&talent.font_of_magic&(buff.ebon_might_self.remains>cast_time&(!talent.molten_embers|cooldown.upheaval.remains<=(20+4*talent.blast_furnace-6*3))|buff.tip_the_scales.up)
actions.fb+=/fire_breath,empower_to=3,cycle_targets=1,if=fight_remains>8&(buff.ebon_might_self.remains>cast_time&(!talent.molten_embers|cooldown.upheaval.remains<=(20+4*talent.blast_furnace-6*2))|buff.tip_the_scales.up|empowering.fire_breath)
actions.fb+=/fire_breath,empower_to=2,cycle_targets=1,if=fight_remains>12&(buff.ebon_might_self.remains>cast_time&(!talent.molten_embers|cooldown.upheaval.remains<=(20+4*talent.blast_furnace-6*1))|empowering.fire_breath)
actions.fb+=/fire_breath,empower_to=1,cycle_targets=1,if=fight_remains>16&(buff.ebon_might_self.remains>cast_time&(!talent.molten_embers|cooldown.upheaval.remains<=(20+4*talent.blast_furnace-6*0))|empowering.fire_breath)
actions.fb+=/fire_breath,empower_to=max,cycle_targets=1,if=fight_remains>4&talent.font_of_magic&(buff.ebon_might_self.remains>cast_time)|empowering.fire_breath
actions.fb+=/fire_breath,empower_to=3,cycle_targets=1,if=fight_remains>8&(talent.font_of_magic&set_bonus.tww2_2pc&talent.molten_embers)
actions.filler+=/living_flame,if=(buff.ancient_flame.up|mana>=200000|!talent.dream_of_spring|variable.spam_heal=0)&(active_enemies=1|talent.pupil_of_alexstrasza|buff.leaping_flames.up)
actions.filler+=/emerald_blossom,if=!buff.ebon_might_self.up&talent.ancient_flame&talent.scarlet_adaptation&!talent.dream_of_spring&!buff.ancient_flame.up&active_enemies=1
actions.filler+=/verdant_embrace,if=!buff.ebon_might_self.up&talent.ancient_flame&talent.scarlet_adaptation&!buff.ancient_flame.up&(!talent.dream_of_spring|mana>=200000)&active_enemies=1
actions.filler+=/azure_strike
actions.items+=/use_item,name=nymues_unraveling_spindle,if=cooldown.breath_of_eons.remains<=3&(trinket.1.is.nymues_unraveling_spindle&variable.trinket_priority=1|trinket.2.is.nymues_unraveling_spindle&variable.trinket_priority=2)|(cooldown.fire_breath.remains<=4|cooldown.upheaval.remains<=4)&cooldown.breath_of_eons.remains>10&!(debuff.temporal_wound.up|prev_gcd.1.breath_of_eons)&(trinket.1.is.nymues_unraveling_spindle&variable.trinket_priority=2|trinket.2.is.nymues_unraveling_spindle&variable.trinket_priority=1)
actions.items+=/use_item,name=aberrant_spellforge
actions.items+=/use_item,name=flarendos_pilot_light,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&trinket.2.is.flarendos_pilot_light|!variable.trinket_2_buffs&!variable.trinket_2_manual&trinket.1.is.flarendos_pilot_light
actions.items+=/use_item,name=treacherous_transmitter,if=cooldown.breath_of_eons.remains<=10&talent.wingleader|boss&fight_remains<=15
## actions.items+=/do_treacherous_transmitter_task,use_off_gcd=1,if=(debuff.temporal_wound.up|prev_gcd.1.breath_of_eons|fight_remains<=15)
actions.items+=/use_item,name=spymasters_web,if=(debuff.temporal_wound.up|prev_gcd.1.breath_of_eons)&(fight_remains<=130-(30+12*talent.interwoven_threads)*talent.wingleader-20*talent.time_skip*(cooldown.time_skip.remains<=90)*!talent.interwoven_threads)|(boss&fight_remains<=20|active_dot.breath_of_eons>0&fight_remains<=60)&(trinket.1.is.spymasters_web&(trinket.2.cooldown.duration=0|trinket.2.cooldown.remains>=10|variable.trinket_2_exclude)|trinket.2.is.spymasters_web&(trinket.1.cooldown.duration=0|trinket.1.cooldown.remains>=10|variable.trinket_1_exclude))&!buff.spymasters_web.up
actions.items+=/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.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&boss
actions.items+=/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.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&boss
## 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.
## actions.items+=/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))
# If only one on use trinket provides a buff, use the other on cooldown. Or if neither trinket provides a buff, use both on cooldown.
actions.items+=/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)
actions.items+=/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)
actions.items+=/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)
actions.items+=/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)
actions.items+=/use_item,name=bestinslots,use_off_gcd=1,if=buff.ebon_might_self.up
# Use on use weapons
actions.items+=/use_item,slot=main_hand,use_off_gcd=1,if=gcd.remains>=gcd.max*0.6&!equipped.bestinslots
actions.opener_filler+=/variable,name=opener_delay,value=variable.opener_delay>?variable.minimum_opener_delay,if=!variable.opener_cds_detected&(solo|active_dot.breath_of_eons>0)
actions.opener_filler+=/variable,name=opener_delay,value=variable.opener_delay-1
actions.opener_filler+=/variable,name=opener_cds_detected,value=cooldown.breath_of_eons.remains>0|action.breath_of_eons.time_since<time
actions.opener_filler+=/eruption,if=variable.opener_delay>=3
actions.opener_filler+=/living_flame,if=active_enemies=1|talent.pupil_of_alexstrasza|buff.leaping_flames.up
actions.opener_filler+=/azure_strike