actions.precombat+=/shadowform,if=!buff.shadowform.up actions.precombat+=/arcane_torrent actions.precombat+=/variable,name=mind_sear_cutoff,op=set,value=2 actions.precombat+=/variable,name=pool_amount,op=set,value=60 actions.precombat+=/shadow_crash,if=raid_event.adds.in>=25&spell_targets.shadow_crash<=8&boss actions.precombat+=/mind_blast,if=talent.damnation.enabled&(!talent.shadow_crash.enabled|raid_event.adds.in>=25&spell_targets.shadow_crash<=8|!boss) actions.precombat+=/vampiric_touch,if=!talent.damnation.enabled&(!talent.shadow_crash.enabled|raid_event.adds.in<25|spell_targets.shadow_crash>8|!boss) actions+=/silence actions+=/variable,name=dp_cutoff,op=set,value=!talent.mind_sear|(spell_targets.mind_sear<=variable.mind_sear_cutoff&(!buff.mind_devourer.up|spell_targets.mind_sear=1)) actions+=/variable,name=holding_crash,op=set,value=!action.shadow_crash.known|action.shadow_crash.disabled|raid_event.adds.in<20 actions+=/run_action_list,name=aoe,strict=1,if=spell_targets.mind_sear>2|spell_targets.vampiric_touch>3 actions+=/run_action_list,name=main actions.aoe+=/call_action_list,name=aoe_variables actions.aoe+=/vampiric_touch,cycle_targets=1,if=refreshable&target.time_to_die>=18&(dot.vampiric_touch.ticking|!variable.vts_applied)&variable.max_vts>0&!variable.manual_vts_applied&!action.shadow_crash.in_flight actions.aoe+=/shadow_crash,if=!variable.holding_crash actions.aoe+=/call_action_list,name=cds,if=fight_remains<30|time_to_die>15&(!variable.holding_crash|spell_targets.mind_sear>2) actions.aoe+=/dark_void,if=raid_event.adds.in>10 actions.aoe+=/mindbender,if=(dot.shadow_word_pain.ticking&variable.vts_applied|action.shadow_crash.in_flight)&(fight_remains<30|time_to_die>15) ## actions.aoe+=/run_action_list,name=aoe_pl_ire,if=talent.psychic_link.rank=2&talent.insidious_ire.rank=2 # Use Mind Blast when capped on charges and talented into Mind Devourer to fish for the buff. Only use when facing 3-7 targets. actions.aoe+=/mind_blast,if=cooldown.mind_blast.full_recharge_time<=gcd.max+cast_time&talent.mind_devourer.rank=2&spell_targets.mind_sear>=3&!buff.mind_devourer.up&spell_targets.mind_sear<=7 actions.aoe+=/mind_blast,if=(cooldown.mind_blast.full_recharge_time<=gcd.max+cast_time|pet.fiend.remains<=cast_time+gcd.max)&pet.fiend.active&talent.inescapable_torment&pet.fiend.remains>cast_time&spell_targets.mind_sear<=7&!buff.mind_devourer.up actions.aoe+=/void_bolt,if=insanity<=85 # Use Mind Sear on 3+ targets and either you have at least 75 insanity, 4pc buff is inactive, or 2pc buff is at 3 stacks, or mind devourer is up on 2+ targets. If Mind Devourer is up do not cancel mind sear. actions.aoe+=/mind_sear,if=buff.mind_devourer.up&spell_targets.mind_sear>1|spell_targets.mind_sear>variable.mind_sear_cutoff&(insanity>=75|((!set_bonus.tier29_4pc&!set_bonus.tier29_2pc)|!buff.dark_reveries.up)|(!set_bonus.tier29_2pc|buff.gathering_shadows.stack=3))&!variable.pool_for_cds,early_chain_if=ticks>=2&!buff.mind_devourer_ms_active.up,interrupt_immediate=1,interrupt_if=ticks>=2&!buff.mind_devourer_ms_active.up actions.aoe+=/call_action_list,name=pl_torrent,if=talent.void_torrent&talent.psychic_link&cooldown.void_torrent.remains<=3&(!variable.holding_crash|raid_event.adds.count%(active_dot.vampiric_touch+raid_event.adds.count)<1.5)&((insanity>=50|dot.devouring_plague.ticking|buff.dark_reveries.up)|buff.voidform.up|buff.dark_ascension.up) actions.aoe+=/devouring_plague,if=(refreshable&!variable.pool_for_cds|insanity>75&(!buff.mind_flay_insanity.up&talent.mind_flay_insanity|!talent.psychic_link))&variable.dp_cutoff actions.aoe+=/vampiric_touch,cycle_targets=1,if=refreshable&target.time_to_die>=18&(dot.vampiric_touch.ticking|!variable.vts_applied)&variable.max_vts>0&(cooldown.shadow_crash.remains>=dot.vampiric_touch.remains|variable.holding_crash)&!action.shadow_crash.in_flight actions.aoe+=/shadow_word_pain,if=refreshable&target.time_to_die>=18&!talent.misery.enabled # TODO: Check Yshaarj Gains for pressing this during Inescapable Torment. actions.aoe+=/shadow_word_death,cycle_targets=1,if=target.time_to_die<=5&insanity<=80&talent.death_and_madness actions.aoe+=/damnation,cycle_targets=1,if=dot.vampiric_touch.refreshable&variable.is_vt_possible|dot.shadow_word_pain.refreshable actions.aoe+=/mind_blast,if=variable.vts_applied&(!buff.mind_devourer.up|cooldown.void_eruption.up&talent.void_eruption) actions.aoe+=/mindgames,if=spell_targets.mind_sear<5&dot.devouring_plague.ticking|talent.psychic_link actions.aoe+=/void_torrent,cycle_targets=1,if=insanity<=35&!talent.psychic_link&variable.dots_up # High priority action for Mind Flay: Insanity to fish for Idol of C'Thun procs actions.aoe+=/mind_flay,if=buff.mind_flay_insanity.up&buff.surge_of_darkness.remains>=5&talent.idol_of_cthun&buff.surge_of_darkness.stack<=2,interrupt_if=ticks>=2,interrupt_immediate=1 actions.aoe+=/call_action_list,name=filler actions.aoe_variables+=/variable,name=max_vts,op=set,default=12,value=spell_targets.vampiric_touch>?12 actions.aoe_variables+=/variable,name=is_vt_possible,op=set,value=false,default=true actions.aoe_variables+=/variable,name=is_vt_possible,op=set,value=true,condition=dot.vampiric_touch.refreshable|active_dot.vampiric_touch8 ## actions.aoe_variables+=/variable,name=is_vt_possible,op=set,value=1,target_if=max(target.time_to_die*dot.vampiric_touch.refreshable),if=target.time_to_die>=18 # Todo Revamp to fix undesired behaviour with unstacked fights actions.aoe_variables+=/variable,name=vts_applied,op=set,value=(active_dot.vampiric_touch+8*action.shadow_crash.in_flight)>=variable.max_vts|!variable.is_vt_possible actions.aoe_variables+=/variable,name=holding_crash,op=set,value=(variable.max_vts-active_dot.vampiric_touch)<4|raid_event.adds.in<10&raid_event.adds.count>(variable.max_vts-active_dot.vampiric_touch),if=variable.holding_crash actions.aoe_variables+=/variable,name=manual_vts_applied,op=set,value=(active_dot.vampiric_touch+8*!variable.holding_crash)>=variable.max_vts|!variable.is_vt_possible actions.aoe_variables+=/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)|talent.void_torrent&talent.psychic_link&cooldown.void_torrent.remains<=4&(!raid_event.adds.exists&spell_targets.vampiric_touch>1|raid_event.adds.in<=5|raid_event.adds.remains>=6&!variable.holding_crash)&!buff.voidform.up # Todo Check VE/DA enter conditions based on dots actions.cds+=/potion,if=buff.voidform.up|buff.power_infusion.up|buff.dark_ascension.up&(fight_remains<=cooldown.power_infusion.remains+15)|boss&fight_remains<=30 actions.cds+=/fireblood,if=buff.power_infusion.up|boss&fight_remains<=8 actions.cds+=/berserking,if=buff.power_infusion.up|boss&fight_remains<=12 actions.cds+=/blood_fury,if=buff.power_infusion.up|boss&fight_remains<=15 actions.cds+=/ancestral_call,if=buff.power_infusion.up|boss&fight_remains<=15 # Sync Power Infusion with Voidform or Dark Ascension actions.cds+=/power_infusion,if=(buff.voidform.up|buff.dark_ascension.up) # Make sure Mindbender is active before popping Void Eruption and dump charges of Mind Blast before casting actions.cds+=/void_eruption,if=!cooldown.fiend.up&(pet.fiend.active|!talent.mindbender|spell_targets.mind_sear>2&talent.inescapable_torment.rank<2)&(cooldown.mind_blast.charges=0|time>15|buff.shadowy_insight.up&cooldown.mind_blast.charges=buff.shadowy_insight.stack) # Make sure Mindbender is active before popping Dark Ascension unless you have insignificant talent points or too many targets actions.cds+=/dark_ascension,if=pet.fiend.active|!talent.mindbender&!cooldown.fiend.up|spell_targets.mind_sear>2&talent.inescapable_torment.rank<2 actions.cds+=/call_action_list,name=trinkets actions.cds+=/mindbender,if=(dot.shadow_word_pain.ticking&variable.vts_applied|action.shadow_crash.in_flight) # Use Desperate Prayer to heal up should Shadow Word: Death or other damage bring you below 75% actions.cds+=/desperate_prayer,if=health.pct<=75 actions.filler+=/mind_flay,if=buff.mind_flay_insanity.up&dot.vampiric_touch.ticking&dot.shadow_word_pain.ticking&(!buff.surge_of_darkness.up|talent.screams_of_the_void) actions.filler+=/vampiric_touch,cycle_targets=1,if=refreshable&buff.unfurling_darkness.up actions.filler+=/mind_spike,if=buff.surge_of_darkness.up actions.filler+=/lights_judgment,if=!raid_event.adds.exists|raid_event.adds.in>75|spell_targets.lights_judgment>1 # Save up to 20s if adds are coming soon. actions.filler+=/halo,if=raid_event.adds.in>20 actions.filler+=/shadow_word_death,cycle_targets=1,if=target.health.pct<20&(spell_targets.mind_sear<4|talent.inescapable_torment.rank=2&pet.fiend.active) # Save up to 10s if adds are coming soon. actions.filler+=/divine_star,if=raid_event.adds.in>10 actions.filler+=/mind_spike,if=(!talent.mental_decay|dot.vampiric_touch.remains>=(cooldown.shadow_crash.remains+action.shadow_crash.travel_time))&!talent.idol_of_cthun actions.filler+=/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.filler+=/shadow_crash,if=raid_event.adds.in>30 # Use Shadow Word: Death while moving as a low-priority action in execute actions.filler+=/shadow_word_death,cycle_targets=1,if=target.health.pct<20 # Use Divine Star while moving as a low-priority action actions.filler+=/divine_star # Use Shadow Word: Death while moving as a low-priority action actions.filler+=/shadow_word_death # Use Shadow Word: Pain while moving as a low-priority action actions.filler+=/shadow_word_pain,cycle_targets=1 actions.main+=/call_action_list,name=main_variables actions.main+=/call_action_list,name=cds,if=fight_remains<30|time_to_die>15&(!variable.holding_crash|spell_targets.mind_sear>2) actions.main+=/mindbender,if=variable.dots_up&(fight_remains<30|time_to_die>15) # High priority Mind Blast action when using Inescapable Torment actions.main+=/mind_blast,if=(cooldown.mind_blast.full_recharge_time<=gcd.max+cast_time|pet.fiend.remains<=cast_time+gcd.max)&pet.fiend.active&talent.inescapable_torment&pet.fiend.remains>cast_time&spell_targets.mind_sear<=7 actions.main+=/damnation,cycle_targets=1,if=dot.vampiric_touch.refreshable|dot.shadow_word_pain.refreshable actions.main+=/void_bolt,if=variable.dots_up&insanity<=85 # Use Mind Devourer Procs on Mind Sear when facing 2 or more targets actions.main+=/mind_sear,if=spell_targets.mind_sear>1&buff.mind_devourer.up actions.main+=/devouring_plague,if=(refreshable&!variable.pool_for_cds|insanity>75|talent.void_torrent&cooldown.void_torrent.remains<=3*gcd)&variable.dp_cutoff actions.main+=/vampiric_touch,cycle_targets=1,if=refreshable&target.time_to_die>=12&(cooldown.shadow_crash.remains>=dot.vampiric_touch.remains&!action.shadow_crash.in_flight|variable.holding_crash) actions.main+=/shadow_word_pain,cycle_targets=1,if=refreshable&target.time_to_die>=18&!talent.misery.enabled # High Priority Mind Flay: Insanity to fish for C'Thun procs when Mind Blast is not capped and Void Torrent is not available and Mindbender is not active actions.main+=/mind_flay,if=buff.mind_flay_insanity.up&variable.dots_up&(talent.inescapable_torment.rank<2|!pet.fiend.active)&cooldown.mind_blast.full_recharge_time>=gcd*3&talent.idol_of_cthun&(!cooldown.void_torrent.up|!talent.void_torrent) actions.main+=/shadow_word_death,cycle_targets=1,if=(target.health.pct<20&spell_targets.mind_sear<4)&(talent.inescapable_torment.rank<2|cooldown.fiend.remains>=10)|(pet.fiend.active&talent.inescapable_torment.rank>1&spell_targets.mind_sear<=7)|buff.deathspeaker.up actions.main+=/mind_blast,if=variable.dots_up&(!buff.mind_devourer.up|cooldown.void_eruption.up&talent.void_eruption) # TODO: Dont use if add events are coming soon when talented into PL actions.main+=/mindgames,if=spell_targets.mind_sear<5&variable.all_dots_up actions.main+=/shadow_crash,if=!variable.holding_crash actions.main+=/dark_void,if=raid_event.adds.in>20 actions.main+=/devouring_plague,if=buff.voidform.up&variable.dots_up&variable.dp_cutoff # TODO: Dont use if add events are coming soon when talented into PL actions.main+=/void_torrent,cycle_targets=1,if=variable.all_dots_up&insanity<=35&!variable.holding_crash actions.main+=/call_action_list,name=filler actions.main_variables+=/variable,name=dots_up,op=set,value=(dot.shadow_word_pain.ticking&dot.vampiric_touch.ticking)|action.shadow_crash.in_flight actions.main_variables+=/variable,name=all_dots_up,op=set,value=target.time_to_die<8|(dot.shadow_word_pain.ticking&dot.vampiric_touch.ticking|action.shadow_crash.in_flight)&dot.devouring_plague.ticking actions.main_variables+=/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)|talent.void_torrent&talent.psychic_link&cooldown.void_torrent.remains<=4&(!raid_event.adds.exists&spell_targets.vampiric_touch>1|raid_event.adds.in<=5|raid_event.adds.remains>=6&!variable.holding_crash)&!buff.voidform.up # Set vts_applied for single-target to support Mindbender entry in cds action list. actions.main_variables+=/variable,name=vts_applied,op=set,value=dot.vampiric_touch.ticking actions.pl_torrent+=/void_bolt actions.pl_torrent+=/vampiric_touch,if=remains<=6&cooldown.void_torrent.remains=3)&!buff.mind_devourer.up actions.pl_torrent+=/mind_sear,if=!variable.dp_cutoff|buff.mind_devourer.up actions.pl_torrent+=/mind_blast,if=!talent.mindgames|cooldown.mindgames.remains>=3&!prev_gcd.1.mind_blast actions.pl_torrent+=/void_torrent,if=dot.vampiric_touch.ticking&dot.shadow_word_pain.ticking|buff.voidform.up actions.pl_torrent+=/mindgames,if=dot.vampiric_touch.ticking&dot.shadow_word_pain.ticking&dot.devouring_plague.ticking|buff.voidform.up actions.trinkets+=/use_item,name=voidmenders_shadowgem,if=buff.power_infusion.up|boss&fight_remains<20 actions.trinkets+=/use_item,name=darkmoon_deck_box_inferno actions.trinkets+=/use_item,name=darkmoon_deck_box_rime actions.trinkets+=/use_item,name=darkmoon_deck_box_dance actions.trinkets+=/use_items,if=buff.voidform.up|buff.power_infusion.up|buff.dark_ascension.up|(cooldown.void_eruption.remains>10&trinket.cooldown.duration<=60)|boss&fight_remains<20 # Sync with cooldowns for Ancient Madness or use when the fight will end soon or at full stacks actions.trinkets+=/use_item,name=desperate_invokers_codex,if=boss&fight_remains<20|!talent.ancient_madness|(cooldown.dark_ascension.remains>10&talent.dark_ascension)|(cooldown.void_eruption.remains>10&talent.void_eruption)|(!talent.void_eruption&!talent.dark_ascension)