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.umbrelskuls_fractured_heart|trinket.1.is.neltharions_call_to_chaos|trinket.1.is.vessel_of_searing_shadow|trinket.1.is.screaming_black_dragonscale actions.precombat+=/variable,name=trinket_2_exclude,value=trinket.2.is.ruby_whelp_shell|trinket.2.is.whispering_incarnate_icon|trinket.2.is.umbrelskuls_fractured_heart|trinket.2.is.neltharions_call_to_chaos|trinket.2.is.vessel_of_searing_shadow|trinket.2.is.screaming_black_dragonscale # Nymues is complicated, Manual Handle actions.precombat+=/variable,name=trinket_1_manual,value=trinket.1.is.nymues_unraveling_spindle actions.precombat+=/variable,name=trinket_2_manual,value=trinket.2.is.nymues_unraveling_spindle actions.precombat+=/variable,name=trinket_1_ogcd_cast,value=0 actions.precombat+=/variable,name=trinket_2_ogcd_cast,value=0 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.nymues_unraveling_spindle 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.nymues_unraveling_spindle 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_1_exclude|trinket.2.ilvl>=trinket.1.ilvl)&!variable.trinket_2_buffs # Double on use - Priotize Intellect on use trinkets over Nymues, force overwriting the normal logic to guarantee it is correct. actions.precombat+=/variable,name=damage_trinket_priority,op=setif,value=2,value_else=1,condition=trinket.2.is.nymues_unraveling_spindle,if=trinket.2.is.nymues_unraveling_spindle|trinket.1.is.nymues_unraveling_spindle 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&!variable.trinket_2_exclude|trinket.2.is.nymues_unraveling_spindle&!trinket.1.has_buff.intellect&!variable.trinket_1_exclude,if=(trinket.1.is.nymues_unraveling_spindle|trinket.2.is.nymues_unraveling_spindle)&(!variable.trinket_1_buffs&!variable.trinket_2_buffs) actions.precombat+=/blessing_of_the_bronze,if=buff.blessing_of_the_bronze.down actions.precombat+=/source_of_magic,if=group&active_dot.source_of_magic=0 actions.precombat+=/black_attunement,if=buff.black_attunement.down actions.precombat+=/bronze_attunement,if=buff.bronze_attunement.down&buff.black_attunement.up&!buff.black_attunement.mine actions.precombat+=/blistering_scales,if=buff.blistering_scales.stack<10&active_dot.blistering_scales=0 actions+=/quell actions+=/unravel,if=settings.use_unravel actions+=/cauterizing_flame actions+=/hover,if=settings.use_hover&moving&buff.hover.down&buff.breath_of_eons.down actions+=/variable,name=temp_wound,value=debuff.temporal_wound.remains actions+=/prescience,if=full_recharge_time<=gcd.max*3|active_dot.prescience=0&cooldown.ebon_might.remains<=gcd.max*4 actions+=/ebon_might,if=(buff.ebon_might.remains-cast_time)<=buff.ebon_might.duration*0.4|buff.ebon_might.remains>=action.ebon_might.cast_time|solo actions+=/run_action_list,name=opener_filler,if=variable.opener_delay>0 actions+=/potion,if=debuff.temporal_wound.up&buff.ebon_might.up actions+=/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&(trinket.1.is.nymues_unraveling_spindle&variable.trinket_priority=2|trinket.2.is.nymues_unraveling_spindle&variable.trinket_priority=1) actions+=/use_item,slot=trinket1,if=variable.trinket_1_buffs&!variable.trinket_1_manual&(debuff.temporal_wound.up|variable.trinket_2_buffs&!trinket.2.cooldown.up&(prev_gcd.1.fire_breath|prev_gcd.1.upheaval)&buff.ebon_might.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 actions+=/use_item,slot=trinket2,if=variable.trinket_2_buffs&!variable.trinket_2_manual&(debuff.temporal_wound.up|variable.trinket_1_buffs&!trinket.1.cooldown.up&(prev_gcd.1.fire_breath|prev_gcd.1.upheaval)&buff.ebon_might.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 ### 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&(!variable.trinket_2_buffs|variable.trinket_2_exclude)|trinket.2.cooldown.remains)|variable.trinket_2_ogcd_cast&trinket.2.cooldown.up&(variable.damage_trinket_priority=2&(!variable.trinket_1_buffs|variable.trinket_1_exclude)|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+=/use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&(variable.damage_trinket_priority=1&(!variable.trinket_2_buffs|variable.trinket_2_exclude)|trinket.2.cooldown.remains|trinket.2.cooldown.duration=0)&gcd.remains>0.1&variable.trinket_1_ogcd_cast actions+=/use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(variable.damage_trinket_priority=2&(!variable.trinket_1_buffs|variable.trinket_1_exclude)|trinket.1.cooldown.remains|trinket.1.cooldown.duration=0)&gcd.remains>0.1&variable.trinket_2_ogcd_cast # Use non OGCD trinkets. actions+=/use_item,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&(variable.damage_trinket_priority=1&(!variable.trinket_2_buffs|variable.trinket_2_exclude)|trinket.2.cooldown.remains|trinket.2.cooldown.duration=0)&!variable.trinket_1_ogcd_cast actions+=/use_item,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(variable.damage_trinket_priority=2&(!variable.trinket_1_buffs|variable.trinket_1_exclude)|trinket.1.cooldown.remains|trinket.1.cooldown.duration=0)&!variable.trinket_2_ogcd_cast # Use on use weapons actions+=/use_item,slot=main_hand,use_off_gcd=1,if=gcd.remains>=gcd.max*0.6 actions+=/call_action_list,name=fb,if=empowering.fire_breath|cooldown.time_skip.up&talent.time_skip&!talent.interwoven_threads actions+=/upheaval,cycle_targets=1,empower_to=1,if=empowering.upheaval|target.time_to_die>cast_time+0.2&buff.ebon_might.remains>cast_time&cooldown.time_skip.up&talent.time_skip&!talent.interwoven_threads actions+=/breath_of_eons,if=((cooldown.ebon_might.remains<=4|buff.ebon_might.up)&target.time_to_die>15&raid_event.adds.in>15&(!equipped.nymues_unraveling_spindle|trinket.nymues_unraveling_spindle.cooldown.remains>=20|fight_remains<30|trinket.1.is.nymues_unraveling_spindle&variable.trinket_priority=2|trinket.2.is.nymues_unraveling_spindle&variable.trinket_priority=1)|boss&fight_remains<30) actions+=/living_flame,if=buff.leaping_flames.up&cooldown.fire_breath.up actions+=/call_action_list,name=fb,if=empowering.fire_breath|(raid_event.adds.remains>13|!raid_event.adds.exists) actions+=/upheaval,cycle_targets=1,empower_to=1,if=empowering.upheaval|target.time_to_die>cast_time+0.2&buff.ebon_might.remains>cast_time&(raid_event.adds.remains>13|!raid_event.adds.exists) actions+=/time_skip,if=(cooldown.fire_breath.remains+cooldown.upheaval.remains+cooldown.prescience.full_recharge_time)>=35 actions+=/emerald_blossom,if=talent.dream_of_spring&buff.essence_burst.up&(variable.spam_heal=2|variable.spam_heal=1&!buff.ancient_flame.up)&(buff.ebon_might.up|essence.deficit=0|buff.essence_burst.stack=buff.essence_burst.max_stack&cooldown.ebon_might.remains>4)&((buff.trembling_earth.stack+evoker.prescience_buffs)<=5|essence>=2) actions+=/eruption,if=buff.ebon_might.remains>execute_time|essence.deficit=0&buff.essence_burst.down|buff.essence_burst.stack=buff.essence_burst.max_stack&cooldown.ebon_might.remains>4 actions+=/blistering_scales,cycle_targets=1,if=group_members>1&!active_dot.blistering_scales&buff.ebon_might.down actions+=/emerald_blossom,if=!buff.ebon_might.up&talent.ancient_flame&talent.scarlet_adaptation&!talent.dream_of_spring&!buff.ancient_flame.up&active_enemies=1 actions+=/verdant_embrace,if=!buff.ebon_might.up&talent.ancient_flame&talent.scarlet_adaptation&!buff.ancient_flame.up&(!talent.dream_of_spring|mana>=100000)&active_enemies=1 actions+=/run_action_list,name=filler actions.opener_filler+=/variable,name=opener_delay,value=variable.opener_delay>?variable.minimum_opener_delay,if=!variable.opener_cds_detected actions.opener_filler+=/variable,name=opener_delay,value=variable.opener_delay-1 actions.opener_filler+=/variable,name=opener_cds_detected,value=1,if=!variable.opener_cds_detected actions.opener_filler+=/use_item,name=nymues_unraveling_spindle,if=cooldown.breath_of_eons.remains<=3 actions.opener_filler+=/living_flame,if=active_enemies=1|talent.pupil_of_alexstrasza actions.opener_filler+=/azure_strike actions.fb+=/tip_the_scales,if=cooldown.fire_breath.ready&buff.ebon_might.up actions.fb+=/fire_breath,empower_to=2,cycle_targets=1,if=fight_remains>12&buff.ebon_might.remains>cast_time&equipped.neltharions_call_to_chaos actions.fb+=/fire_breath,empower_to=3,cycle_targets=1,if=fight_remains>8&buff.ebon_might.remains>cast_time&equipped.neltharions_call_to_chaos actions.fb+=/fire_breath,empower_to=4,cycle_targets=1,if=fight_remains>4&talent.font_of_magic&(buff.ebon_might.remains>cast_time|buff.tip_the_scales.up) actions.fb+=/fire_breath,empower_to=3,cycle_targets=1,if=fight_remains>8&(buff.ebon_might.remains>cast_time|buff.tip_the_scales.up)&!equipped.neltharions_call_to_chaos actions.fb+=/fire_breath,empower_to=2,cycle_targets=1,if=fight_remains>12&buff.ebon_might.remains>cast_time&!equipped.neltharions_call_to_chaos actions.fb+=/fire_breath,empower_to=1,cycle_targets=1,if=fight_remains>16&buff.ebon_might.remains>cast_time&!equipped.neltharions_call_to_chaos actions.fb+=/fire_breath,empower_to=max,cycle_targets=1,if=empowering.fire_breath actions.filler+=/living_flame,if=(buff.ancient_flame.up|mana>=100000|!talent.dream_of_spring|variable.spam_heal=0)&(active_enemies=1|talent.pupil_of_alexstrasza|buff.ancient_flame.up) actions.filler+=/azure_strike