actions.precombat+=/fleshcraft,if=soulbind.pustule_eruption|soulbind.volatilall_dots_upe_solvent actions.precombat+=/shadowform,if=!buff.shadowform.up actions.precombat+=/arcane_torrent actions.precombat+=/use_item,name=shadowed_orb_of_torment actions.precombat+=/variable,name=mind_sear_cutoff,op=set,value=2 actions.precombat+=/shadow_crash,if=talent.shadow_crash.enabled actions.precombat+=/mind_blast,if=talent.damnation.enabled&!talent.shadow_crash.enabled actions.precombat+=/vampiric_touch,if=!talent.damnation.enabled&!talent.shadow_crash.enabled actions+=/silence actions+=/potion,if=buff.voidform.up|buff.power_infusion.up|buff.dark_ascension.up actions+=/variable,name=dots_up,op=set,value=target.time_to_die<8|dot.shadow_word_pain.ticking&dot.vampiric_touch.ticking actions+=/variable,name=all_dots_up,op=set,value=target.time_to_die<8|dot.shadow_word_pain.ticking&dot.vampiric_touch.ticking&dot.devouring_plague.ticking actions+=/variable,name=max_vts,op=set,default=1,value=spell_targets.vampiric_touch actions+=/variable,name=max_vts,op=set,value=(spell_targets.mind_sear<=5)*spell_targets.mind_sear,if=buff.voidform.up actions+=/variable,name=is_vt_possible,op=set,value=0,default=1 actions+=/variable,name=is_vt_possible,op=set,value=1,if=active_dot.vampiric_touch=18 actions+=/variable,name=vts_applied,op=set,value=active_dot.vampiric_touch>=variable.max_vts|!variable.is_vt_possible actions+=/variable,name=sfp,op=set,value=runeforge.shadowflame_prism.equipped|talent.inescapable_torment actions+=/variable,name=pool_for_cds,op=set,value=(cooldown.void_eruption.remains<=gcd.max*3&talent.void_eruption|cooldown.dark_ascension.up&talent.dark_ascension) actions+=/fireblood,if=buff.power_infusion.up|boss&fight_remains<=8 actions+=/berserking,if=buff.power_infusion.up|boss&fight_remains<=12 actions+=/blood_fury,if=buff.power_infusion.up|boss&fight_remains<=15 actions+=/ancestral_call,if=buff.power_infusion.up|boss&fight_remains<=15 actions+=/variable,name=pool_amount,op=set,value=60 actions+=/run_action_list,name=main actions.boon=ascended_blast,if=spell_targets.mind_sear<=3 actions.boon+=/ascended_nova,if=spell_targets.ascended_nova>1&spell_targets.mind_sear>1 actions.cds=power_infusion,if=(buff.voidform.up|buff.dark_ascension.up) actions.cds+=/void_eruption,if=!cooldown.fiend.up&(pet.fiend.active|!talent.mindbender|action.fae_guardians.known)&(cooldown.mind_blast.charges=0|time>15|buff.shadowy_insight.up&cooldown.mind_blast.charges=buff.shadowy_insight.stack) actions.cds+=/dark_ascension,if=pet.fiend.active&cooldown.mind_blast.charges<2|!talent.mindbender&!cooldown.fiend.up|action.fae_guardians.known&cooldown.fiend.remains>=15&cooldown.fae_guardians.remains>=4*gcd.max actions.cds+=/boon_of_the_ascended,if=!buff.voidform.up&!cooldown.void_eruption.up&spell_targets.mind_sear>1&!talent.searing_nightmare.enabled|(buff.voidform.up&spell_targets.mind_sear<2&!talent.searing_nightmare.enabled&(prev_gcd.1.void_bolt|equipped.empyreal_ordnance&trinket.empyreal_ordnance.cooldown.remains<=162))|(buff.voidform.up&talent.searing_nightmare.enabled) actions.cds+=/call_action_list,name=trinkets actions.cds+=/unholy_nova,if=dot.shadow_word_pain.ticking&variable.vts_applied|action.shadow_crash.in_flight actions.cds+=/fae_guardians,if=(dot.shadow_word_pain.ticking&variable.vts_applied|action.shadow_crash.in_flight)&(!talent.void_eruption|buff.voidform.up&!cooldown.void_bolt.up&cooldown.mind_blast.full_recharge_time>gcd.max|!cooldown.void_eruption.up) actions.cds+=/mindbender,if=(dot.shadow_word_pain.ticking&variable.vts_applied|action.shadow_crash.in_flight) actions.cds+=/desperate_prayer,if=health.pct<=75 actions.main+=/call_action_list,name=boon,if=buff.boon_of_the_ascended.up actions.main+=/call_action_list,name=cds actions.main+=/shadow_word_death,if=pet.fiend.active&variable.sfp&(pet.fiend.remains<=gcd|target.health.pct<20)&spell_targets.mind_sear<=7 actions.main+=/mind_blast,if=(cooldown.mind_blast.full_recharge_time<=gcd.max|pet.fiend.remains<=cast_time+gcd.max)&pet.fiend.active&variable.sfp&pet.fiend.remains>cast_time&spell_targets.mind_sear<=7 actions.main+=/damnation,cycle_targets=1,if=dot.vampiric_touch.refreshable&variable.is_vt_possible|dot.shadow_word_pain.refreshable actions.main+=/void_bolt,if=variable.dots_up&insanity<=85 actions.main+=/mind_sear,cycle_targets=1,if=(spell_targets.mind_sear>variable.mind_sear_cutoff|buff.voidform.up)&buff.mind_devourer.up actions.main+=/mind_sear,cycle_targets=1,if=spell_targets.mind_sear>variable.mind_sear_cutoff,chain=1,interrupt_immediate=1,interrupt_if=ticks>=2 actions.main+=/devouring_plague,if=(refreshable&!variable.pool_for_cds|insanity>75|talent.void_torrent&cooldown.void_torrent.remains<=3*gcd|buff.mind_devourer.up&cooldown.mind_blast.full_recharge_time<=2*gcd.max&!cooldown.void_eruption.up&talent.void_eruption) actions.main+=/shadow_word_death,cycle_targets=1,if=(target.health.pct<20&spell_targets.mind_sear<4)&(!variable.sfp|cooldown.fiend.remains>=10)|(pet.fiend.active&variable.sfp&spell_targets.mind_sear<=7)|buff.deathspeaker.up&(cooldown.fiend.remains+gcd.max)>buff.deathspeaker.remains actions.main+=/vampiric_touch,cycle_targets=1,if=(refreshable&target.time_to_die>=18&(dot.vampiric_touch.ticking|!variable.vts_applied)&variable.max_vts>0|(talent.misery.enabled&dot.shadow_word_pain.refreshable))&cooldown.shadow_crash.remains>=dot.vampiric_touch.remains&!action.shadow_crash.in_flight actions.main+=/shadow_word_pain,cycle_targets=1,if=refreshable&target.time_to_die>=18&!talent.misery.enabled actions.main+=/mind_blast,if=variable.vts_applied&(!buff.mind_devourer.up|cooldown.void_eruption.up&talent.void_eruption) actions.main+=/mindgames,if=spell_targets.mind_sear<5&variable.all_dots_up actions.main+=/shadow_crash,if=raid_event.adds.in>10 actions.main+=/dark_void,if=raid_event.adds.in>20 actions.main+=/devouring_plague,if=buff.voidform.up&variable.dots_up actions.main+=/void_torrent,if=insanity<=35,cycle_targets=1,if=variable.dots_up actions.main+=/mind_blast,if=raid_event.movement.in>cast_time+0.5&(!variable.sfp|!cooldown.fiend.up&variable.sfp|variable.vts_applied) actions.main+=/vampiric_touch,if=buff.unfurling_darkness.up actions.main+=/mind_flay,if=buff.mind_flay_insanity.up&variable.dots_up&(!buff.surge_of_darkness.up|talent.screams_of_the_void) # Use Halo if all DoTS are active and you are not in Voidform or it will hit at least 2 targets. Save up to 20s if adds are coming soon. actions.main+=/halo,if=raid_event.adds.in>20&(spell_targets.halo>1|(variable.all_dots_up&!buff.voidform.up)) # Use when it will hit at least 2 targets. actions.main+=/divine_star,if=spell_targets.divine_star>1 actions.main+=/lights_judgment,if=spell_targets.lights_judgment>=2|(!raid_event.adds.exists|raid_event.adds.in>75) actions.main+=/mind_spike,if=buff.surge_of_darkness.up|!conduit.dissonant_echoes&(!talent.mental_decay|dot.vampiric_touch.remains>=(cooldown.shadow_crash.remains+action.shadow_crash.travel_time))&(talent.mind_melt|!talent.idol_of_cthun) actions.main+=/mind_flay,chain=1,interrupt_immediate=1,interrupt_if=ticks>=2 # Use Shadow Crash while moving as a low-priority action when adds will not come in 30 seconds. actions.main+=/shadow_crash,if=raid_event.adds.in>30 # Use Shadow Word: Death while moving as a low-priority action in execute actions.main+=/shadow_word_death,cycle_targets=1,if=target.health.pct<20 # Use Divine Star while moving as a low-priority action actions.main+=/divine_star # Use Shadow Word: Death while moving as a low-priority action actions.main+=/shadow_word_death # Use Shadow Word: Pain while moving as a low-priority action actions.main+=/shadow_word_pain actions.trinkets=use_item,name=scars_of_fraternal_strife,if=(!buff.scars_of_fraternal_strife_4.up&time>1)|(buff.voidform.up|buff.power_infusion.up|buff.dark_ascension.up|cooldown.void_eruption.remains>10) actions.trinkets+=/use_item,name=macabre_sheet_music,if=cooldown.void_eruption.remains>10|cooldown.dark_ascension.remains>10 actions.trinkets+=/use_item,name=soulletting_ruby,cycle_targets=1,if=buff.voidform.up|buff.power_infusion.up|buff.dark_ascension.up|cooldown.void_eruption.remains>10 # Use this on CD for max CDR actions.trinkets+=/use_item,name=architects_ingenuity_core # Default fallback for usable items: Use on cooldown in order by trinket slot. actions.trinkets+=/use_items,if=buff.voidform.up|buff.power_infusion.up|buff.dark_ascension.up|cooldown.void_eruption.remains>10