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.

141 lines
15 KiB

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&(spell_targets.shadow_crash>1|talent.mental_decay)
actions.precombat+=/vampiric_touch,if=refreshable&(!talent.shadow_crash.enabled|spell_targets.shadow_crash>8|spell_targets.shadow_crash=1&!talent.mental_decay|!boss)
actions+=/silence
actions+=/variable,name=holding_crash,op=set,value=talent.shadow_crash&!action.shadow_crash.disabled&raid_event.adds.in<15
actions+=/variable,name=dots_up,op=set,value=(dot.shadow_word_pain.ticking&dot.vampiric_touch.ticking)|action.shadow_crash.in_flight&talent.whispering_shadows
actions+=/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+=/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+=/variable,name=vts_applied,op=set,value=dot.vampiric_touch.ticking
actions+=/run_action_list,name=aoe,strict=1,if=active_enemies>2|spell_targets.vampiric_touch>3
actions+=/run_action_list,name=main
actions.aoe+=/variable,name=max_vts,op=set,default=12,value=spell_targets.vampiric_touch>?12
actions.aoe+=/variable,name=is_vt_possible,op=set,value=true,value_else=false,condition=dot.vampiric_touch.refreshable|active_dot.vampiric_touch<cycle_enemies&fight_remains>8
## 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+=/variable,name=vts_applied,op=set,value=(active_dot.vampiric_touch+8*action.shadow_crash.in_flight&talent.whispering_shadows)>=variable.max_vts|!variable.is_vt_possible
actions.aoe+=/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&talent.whispering_shadows
actions.aoe+=/variable,name=manual_vts_applied,op=set,value=(active_dot.vampiric_touch+8*!variable.holding_crash)>=variable.max_vts|!variable.is_vt_possible
# High Priority action to put out Vampiric Touch on enemies that will live at least 18 seconds, up to 12 targets manually while prepping AoE
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|!talent.whispering_shadows)
# Use Shadow Crash to apply Vampiric Touch to as many adds as possible while being efficient with Vampiric Touch refresh windows
actions.aoe+=/shadow_crash,cycle_targets=1,if=!variable.holding_crash&(dot.vampiric_touch.refreshable|dot.vampiric_touch.remains<=target.time_to_die&!buff.voidform.up&(raid_event.adds.in-dot.vampiric_touch.remains)<15)
actions.aoe+=/call_action_list,name=cds,if=fight_remains<30|target.time_to_die>15&(!variable.holding_crash|active_enemies>2)
# Use Shadowfiend or Mindbender on cooldown if DoTs are active and sync with Dark Ascension
actions.aoe+=/mindbender,if=(dot.shadow_word_pain.ticking&variable.vts_applied|action.shadow_crash.in_flight&talent.whispering_shadows)&(fight_remains<30|target.time_to_die>15)&(!talent.dark_ascension|cooldown.dark_ascension.remains<gcd.max|fight_remains<15)
# Use Mind Blast when capped on charges and talented into Mind Devourer to fish for the buff or if Inescapable Torment is talented with Mindbender active. Only use when facing 3-7 targets.
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&active_enemies<=7&!buff.mind_devourer.up
# High Priority Shadow Word: Death is Mindbender is expiring in less than 2 seconds
actions.aoe+=/shadow_word_death,if=pet.fiend.remains<=2&pet.fiend.active&talent.inescapable_torment&active_enemies<=7
actions.aoe+=/void_bolt
# Use Devouring Plague to maximize uptime. Short circuit if you are capping on Insanity within 20 or to get out an extra Void Bolt by extending Voidform. With Distorted Reality can maintain more than one at a time in multi-target.
actions.aoe+=/devouring_plague,cycle_targets=1,if=(remains<=gcd.max|!talent.distorted_reality)&(remains<=gcd.max&!variable.pool_for_cds|insanity.deficit<=20|buff.voidform.up&cooldown.void_bolt.remains>buff.voidform.remains&cooldown.void_bolt.remains<=buff.voidform.remains+2)
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|!talent.whispering_shadows)
# Use Shadow Word: Death with Inescapable Torment and Mindbender active and not talented into Insidious Ire and Yogg or Deathspeaker is active
actions.aoe+=/shadow_word_death,if=variable.vts_applied&talent.inescapable_torment&pet.fiend.active&((!talent.insidious_ire&!talent.idol_of_yoggsaron)|buff.deathspeaker.up)
# High Priority Mind Spike: 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.aoe+=/mind_spike_insanity,if=variable.dots_up&cooldown.mind_blast.full_recharge_time>=gcd*3&talent.idol_of_cthun&(!cooldown.void_torrent.up|!talent.void_torrent)
# 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.aoe+=/mind_flay,if=buff.mind_flay_insanity.up&variable.dots_up&cooldown.mind_blast.full_recharge_time>=gcd*3&talent.idol_of_cthun&(!cooldown.void_torrent.up|!talent.void_torrent)
# # Use all charges of Mind Blast if Vampiric Touch and Shadow Word: Pain are active and Mind Devourer is not active or you are prepping Void Eruption
actions.aoe+=/mind_blast,if=variable.vts_applied&(!buff.mind_devourer.up|cooldown.void_eruption.up&talent.void_eruption)
# Void Torrent action list for AoE
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+=/void_torrent,cycle_targets=1,if=!talent.psychic_link&variable.dots_up
# High priority action for Mind Flay: Insanity to fish for Idol of C'Thun procs, cancel as soon as something else is more important and most of the channel has completed
actions.aoe+=/mind_flay,if=buff.mind_flay_insanity.up&talent.idol_of_cthun,interrupt_if=ticks>=2,interrupt_immediate=1
actions.aoe+=/call_action_list,name=filler
# 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&cooldown.fiend.remains>=4|!talent.mindbender|active_enemies>2&!talent.inescapable_torment.rank)&(cooldown.mind_blast.charges=0|time>15)
# 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&cooldown.fiend.remains>=4|!talent.mindbender&!cooldown.fiend.up|active_enemies>2&!talent.inescapable_torment
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
# Cast Vampiric Touch to consume Unfurling Darkness, prefering the target with the lowest DoT duration active
actions.filler+=/vampiric_touch,cycle_targets=1,if=buff.unfurling_darkness.up
actions.filler+=/shadow_word_death,cycle_targets=1,if=target.health.pct<20|buff.deathspeaker.up
actions.filler+=/mind_spike_insanity
actions.filler+=/mind_flay,if=buff.mind_flay_insanity.up
actions.filler+=/mindgames
actions.filler+=/shadow_word_death,cycle_targets=1,if=talent.inescapable_torment&pet.fiend.active
# Save up to 20s if adds are coming soon.
actions.filler+=/halo,if=raid_event.adds.in>20
# Save up to 10s if adds are coming soon.
actions.filler+=/devouring_plague,if=buff.voidform.up
actions.filler+=/mind_spike
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 20 seconds.
actions.filler+=/shadow_crash,if=raid_event.adds.in>20
# 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=cds,if=fight_remains<30|target.time_to_die>15&(!variable.holding_crash|active_enemies>2)
# Use Shadowfiend and Mindbender on cooldown as long as Vampiric Touch and Shadow Word: Pain are active and sync with Dark Ascension
actions.main+=/mindbender,if=variable.dots_up&(fight_remains<30|target.time_to_die>15)&(!talent.dark_ascension|cooldown.dark_ascension.remains<gcd.max|fight_remains<15)
# High priority Mind Blast action when using Inescapable Torment
actions.main+=/mind_blast,cycle_targets=1,if=(dot.devouring_plague.remains>execute_time&(cooldown.mind_blast.full_recharge_time<=gcd.max+execute_time)|pet.fiend.remains<=execute_time+gcd.max)&pet.fiend.active&talent.inescapable_torment&pet.fiend.remains>execute_time&active_enemies<=7
# High Priority Shadow Word: Death is Mindbender is expiring in less than 2 seconds
actions.main+=/shadow_word_death,cycle_targets=1,if=dot.devouring_plague.ticking&pet.fiend.remains<=2&pet.fiend.active&talent.inescapable_torment&active_enemies<=7
actions.main+=/void_bolt,if=variable.dots_up
# Spend your Insanity on Devouring Plague at will if the fight will end in less than 10s
actions.main+=/devouring_plague,if=fight_remains<=duration+4
# Use Devouring Plague to maximize uptime. Short circuit if you are capping on Insanity within 20 or to get out an extra Void Bolt by extending Voidform. With Distorted Reality can maintain more than one at a time in multi-target.
actions.main+=/devouring_plague,cycle_targets=1,if=(!talent.distorted_reality|active_enemies=1|remains<=gcd.max)&((remains<=gcd.max|remains<3&cooldown.void_torrent.up)|insanity.deficit<=20|buff.voidform.up&cooldown.void_bolt.remains>buff.voidform.remains&cooldown.void_bolt.remains<=buff.voidform.remains+2|buff.mind_devourer.up&pmultiplier<1.2)
# Use Shadow Crash as long as you are not holding for adds and Vampiric Touch is within pandemic range
actions.main+=/shadow_crash,if=!variable.holding_crash&dot.vampiric_touch.refreshable
# Use Shadow Word: Death with Inescapable Torment and Mindbender active and not talented into Insidious Ire and Yogg or Deathspeaker is active
actions.main+=/shadow_word_death,if=variable.dots_up&talent.inescapable_torment&pet.fiend.active&((!talent.insidious_ire&!talent.idol_of_yoggsaron)|buff.deathspeaker.up)
# Put out Vampiric Touch on enemies that will live at least 12s and Shadow Crash is not available soon
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|!talent.whispering_shadows)
# High Priority Mind Spike: Insanity to fish for C'Thun procs when Mind Blast is not capped and Void Torrent is not available
actions.main+=/mind_spike_insanity,if=variable.dots_up&cooldown.mind_blast.full_recharge_time>=gcd*3&talent.idol_of_cthun&(!cooldown.void_torrent.up|!talent.void_torrent)
# High Priority Mind Flay: Insanity to fish for C'Thun procs when Mind Blast is not capped and Void Torrent is not available
actions.main+=/mind_flay,if=buff.mind_flay_insanity.up&variable.dots_up&cooldown.mind_blast.full_recharge_time>=gcd*3&talent.idol_of_cthun&(!cooldown.void_torrent.up|!talent.void_torrent)
# Use all charges of Mind Blast if Vampiric Touch and Shadow Word: Pain are active and Mind Devourer is not active or you are prepping Void Eruption
actions.main+=/mind_blast,if=variable.dots_up&(!buff.mind_devourer.up|cooldown.void_eruption.up&talent.void_eruption)
# Void Torrent if you are not holding Shadow Crash for an add pack coming, prefer the target with the most DoTs active. Only cast if Devouring Plague is on that target and will last at least 2 seconds
actions.main+=/void_torrent,cycle_targets=1,if=!variable.holding_crash&variable.all_dots_up&dot.devouring_plague.remains>=2.5
# Cast Mindgames if all DoTs will be active by the time the cast finishes
actions.main+=/call_action_list,name=filler
actions.pl_torrent+=/void_bolt
actions.pl_torrent+=/vampiric_touch,if=remains<=6&cooldown.void_torrent.remains<gcd*2
# Use Devouring Plague before Void Torrent cast
actions.pl_torrent+=/devouring_plague,if=remains<=4&cooldown.void_torrent.remains<gcd*2
actions.pl_torrent+=/mind_blast,if=!prev_gcd.1.mind_blast
actions.pl_torrent+=/void_torrent,if=dot.vampiric_touch.ticking&dot.shadow_word_pain.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
# Use Erupting Spear Fragment with cooldowns, adds are currently active, or the fight will end in less than 20 seconds
actions.trinkets+=/use_item,name=erupting_spear_fragment,if=buff.power_infusion.up|raid_event.adds.up|boss&fight_remains<20
# Use Beacon to the Beyond on cooldown except to hold for incoming adds or if already facing 5 or more targets
actions.trinkets+=/use_item,name=beacon_to_the_beyond,if=!raid_event.adds.exists|raid_event.adds.up|spell_targets.beacon_to_the_beyond>=5|boss&fight_remains<20
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
actions.trinkets+=/use_item,name=desperate_invokers_codex