From c45908231323852b8fe466b9d4799e1355eb5700 Mon Sep 17 00:00:00 2001 From: Publik Date: Mon, 10 Aug 2026 16:22:52 -0500 Subject: [PATCH 1/2] [Priest] remove PTR checks for the launch of MID2 --- engine/class_modules/apl/apl_priest.cpp | 17 ++- .../class_modules/priest/sc_priest_shadow.cpp | 127 +++++++----------- 2 files changed, 55 insertions(+), 89 deletions(-) diff --git a/engine/class_modules/apl/apl_priest.cpp b/engine/class_modules/apl/apl_priest.cpp index 82a6d8965bb..2d204f280f4 100644 --- a/engine/class_modules/apl/apl_priest.cpp +++ b/engine/class_modules/apl/apl_priest.cpp @@ -57,6 +57,7 @@ void shadow( player_t* p ) precombat->add_action( "variable,name=max_vts,default=12,op=reset" ); precombat->add_action( "variable,name=is_vt_possible,default=0,op=reset" ); precombat->add_action( "arcane_torrent" ); + precombat->add_action( "mind_blast,if=set_bonus.mid2_4pc", "Crushing Void from Tentacle Slam is reset on pull, open with Mind Blast instead." ); precombat->add_action( "tentacle_slam" ); default_->add_action( "variable,name=holding_tentacle_slam,op=set,value=raid_event.adds.in<15" ); @@ -72,7 +73,7 @@ void shadow( player_t* p ) aoe_variables->add_action( "variable,name=holding_tentacle_slam,op=set,value=(variable.max_vts-active_dot.vampiric_touch)<4&raid_event.adds.in>15|raid_event.adds.in<10&raid_event.adds.count>(variable.max_vts-active_dot.vampiric_touch),if=variable.holding_tentacle_slam&action.tentacle_slam.enabled&raid_event.adds.exists" ); aoe_variables->add_action( "variable,name=manual_vts_applied,op=set,value=(active_dot.vampiric_touch+6*!variable.holding_tentacle_slam)>=variable.max_vts|!variable.is_vt_possible" ); - cds->add_action( "potion,if=((buff.voidform.up|!talent.voidform)&buff.power_infusion.up)&(fight_remains>=320|time_to_bloodlust>=320|buff.bloodlust.react)|fight_remains<=30", "TODO: Add holding condition for weird fight times to potion with execute" ); + cds->add_action( "potion,if=(((buff.voidform.up|!talent.voidform)&buff.power_infusion.up)&(fight_remains>=320|time_to_bloodlust>=320|buff.bloodlust.react)|fight_remains<=30)", "TODO: Add holding condition for weird fight times to potion with execute" ); cds->add_action( "fireblood,if=((buff.voidform.up|!talent.voidform)&buff.power_infusion.up)|fight_remains<=8" ); cds->add_action( "berserking,if=((buff.voidform.up|!talent.voidform)&buff.power_infusion.up)|fight_remains<=12" ); cds->add_action( "blood_fury,if=((buff.voidform.up|!talent.voidform)&buff.power_infusion.up)|fight_remains<=15" ); @@ -91,27 +92,29 @@ void shadow( player_t* p ) main->add_action( "variable,name=dots_up,op=set,value=active_dot.vampiric_touch=active_enemies&active_dot.shadow_word_pain>=active_dot.vampiric_touch,if=active_enemies<3" ); main->add_action( "call_action_list,name=cds,if=fight_remains<30|target.time_to_die>15&(!variable.holding_tentacle_slam|active_enemies>2)&variable.dots_up" ); main->add_action( "shadow_word_death,target_if=max:(target.health.pct<=20)*100+dot.shadow_word_madness.ticking,if=(priest.force_devour_matter|target.has_absorb)&talent.devour_matter", "High Priority Shadow Word: Death when Devour Matter is active (target shielded or forced)" ); - main->add_action( "shadow_word_madness,target_if=max:target.time_to_die*(dot.shadow_word_madness.remains<=gcd.max|variable.dr_force_prio|!talent.distorted_reality&variable.me_force_prio),if=active_dot.shadow_word_madness<=1&dot.shadow_word_madness.remains<=gcd.max|insanity.deficit<=35|buff.mind_devourer.react|!raid_event.adds.exists&target.time_to_die<=10|buff.entropic_rift.up&action.shadow_word_madness.cost>0", "Do not overcap on insanity" ); - main->add_action( "void_volley" ); + main->add_action( "shadow_word_madness,target_if=max:target.time_to_die*(dot.shadow_word_madness.remains<=gcd.max|variable.dr_force_prio|!talent.distorted_reality&variable.me_force_prio),if=active_dot.shadow_word_madness<=1&dot.shadow_word_madness.remains<=gcd.max|insanity.deficit<=35&(cooldown.voidform.remains>25|target.time_to_die<25|active_enemies>1|insanity.deficit<=5)|buff.mind_devourer.react|!raid_event.adds.exists&target.time_to_die<=10|buff.entropic_rift.up&(cooldown.voidform.remains>=75|!talent.ancient_madness)|buff.voidform.up", "Do not overcap on insanity, but hold it for Voidform on a single long-lived target" ); main->add_action( "void_blast,target_if=max:(dot.shadow_word_madness.remains*1000+target.time_to_die)", "Blast more burst :wicked:" ); - main->add_action( "tentacle_slam,target_if=min:dot.vampiric_touch.remains,if=dot.vampiric_touch.refreshable|cooldown.tentacle_slam.full_recharge_time<=gcd.max*2", "Use Tentacle Slam to prevent capping charges or to refresh Vampiric Touch" ); + main->add_action( "tentacle_slam,target_if=min:dot.vampiric_touch.remains,if=dot.vampiric_touch.refreshable&(!in_flight|active_dot.vampiric_touch+6add_action( "void_torrent,target_if=max:(dot.shadow_word_madness.remains*1000+target.time_to_die),if=!variable.holding_tentacle_slam&variable.dots_up", "Use Void Torrent if it will get near full Mastery Value" ); - main->add_action( "shadow_word_pain,target_if=max:(refreshable*100000+target.time_to_die+dot.vampiric_touch.ticking*10000),if=talent.invoked_nightmare&refreshable&target.time_to_die>12&dot.vampiric_touch.ticking", "Put out Shadow Word: Pain on enemies that will live at least 12s as a filler when talented into Invoked Nightmare." ); + main->add_action( "shadow_word_pain,target_if=max:(refreshable*100000+target.time_to_die+dot.vampiric_touch.ticking*10000),if=talent.invoked_nightmare&refreshable&target.time_to_die>12&(dot.vampiric_touch.ticking|action.tentacle_slam.in_flight)", "Put out Shadow Word: Pain on enemies that will live at least 12s as a filler when talented into Invoked Nightmare." ); + main->add_action( "void_volley,if=cooldown.voidform.up" ); main->add_action( "mind_blast,target_if=max:dot.shadow_word_madness.remains,if=(!buff.mind_devourer.react|!talent.mind_devourer)", "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" ); - main->add_action( "mind_flay_insanity,target_if=max:dot.shadow_word_madness.remains", "MFI is a good button" ); + main->add_action( "mind_flay_insanity,target_if=max:dot.shadow_word_madness.remains" ); main->add_action( "tentacle_slam,target_if=min:dot.vampiric_touch.remains,if=(talent.void_apparitions|talent.maddening_tentacles)&(raid_event.adds.in>30|raid_event.adds.in>5&cooldown.tentacle_slam.full_recharge_time<=gcd.max*2)", "Use Tentacle Slam for Void Apparitions or Maddening Tentacles value, holding for adds if needed" ); main->add_action( "vampiric_touch,target_if=max:(refreshable*10000+target.time_to_die)*(dot.vampiric_touch.ticking|!variable.dots_up),if=refreshable&target.time_to_die>12&(dot.vampiric_touch.ticking|!variable.dots_up)&(variable.max_vts>0|active_enemies=1)&(action.tentacle_slam.usable_in>=dot.vampiric_touch.remains|variable.holding_tentacle_slam|!action.tentacle_slam.enabled)", "Put out Vampiric Touch on enemies that will live at least 12s and Tentacle Slam is not available soon" ); main->add_action( "call_action_list,name=heal_for_tof,if=!buff.twist_of_fate.up&buff.twist_of_fate_can_trigger_on_ally_heal.up&talent.halo", "Healing spell action list for proccing Twist of Fate. Set priest.twist_of_fate_heal_rppm= to make this be used." ); main->add_action( "vampiric_touch,target_if=max:(refreshable*10000+target.time_to_die),if=refreshable&target.time_to_die>12", "Put out Vampiric Touch on enemies that will live at least 12s as a filler action." ); main->add_action( "shadow_word_death,target_if=min:target.health.pct,if=(pet.mindbender.active|pet.voidwraith.active|pet.shadowfiend.active)&talent.inescapable_torment|target.health.pct<(20+15*talent.deathspeaker)&talent.shadowfiend&talent.idol_of_yshaarj" ); main->add_action( "shadow_word_death,target_if=min:target.health.pct,if=(target.health.pct<(20+15*talent.deathspeaker))" ); - main->add_action( "mind_flay,target_if=max:dot.shadow_word_madness.remains,chain=1,interrupt_immediate=1,interrupt_if=ticks>=3,interrupt_global=1" ); + main->add_action( "void_volley,if=!talent.resonant_energy|cooldown.voidform.remains<60|buff.voidform.up|buff.resonant_energy_damage.up|buff.crushing_void.stack>=4|fight_remains<45", "Bank Void Volley charges for the Resonant Energy window, dumping once Voidform is within a Halo cycle, in Voidform, or if charges would overcap" ); + main->add_action( "mind_flay,target_if=max:dot.shadow_word_madness.remains,chain=1,interrupt_immediate=1,interrupt_if=ticks>=2,interrupt_global=1" ); main->add_action( "tentacle_slam,if=raid_event.adds.in>20", "Use Tentacle Slam while moving as a low-priority action when adds will not spawn in 20 seconds." ); main->add_action( "shadow_word_death,target_if=target.health.pct<20", "Use Shadow Word: Death while moving as a low-priority action in execute" ); main->add_action( "shadow_word_death,target_if=max:dot.shadow_word_madness.remains", "Use Shadow Word: Death while moving as a low-priority action" ); main->add_action( "shadow_word_pain,target_if=min:remains", "Use Shadow Word: Pain while moving as a low-priority action" ); trinkets->add_action( "use_item,name=galactic_gladiators_badge_of_ferocity,if=(buff.voidform.up|buff.power_infusion.remains>=10|(talent.voidform&cooldown.voidform.remains>10))|fight_remains<20" ); + trinkets->add_action( "use_item,name=hex_lords_dooming_idol,if=buff.power_infusion.up&buff.hex_lords_doom.stack>5|fight_remains<=30" ); trinkets->add_action( "use_items,if=(buff.voidform.up|buff.power_infusion.remains>=10|equipped.neural_synapse_enhancer&buff.entropic_rift.up)|fight_remains<20" ); } //shadow_apl_end diff --git a/engine/class_modules/priest/sc_priest_shadow.cpp b/engine/class_modules/priest/sc_priest_shadow.cpp index 848fd8e6559..56193933013 100644 --- a/engine/class_modules/priest/sc_priest_shadow.cpp +++ b/engine/class_modules/priest/sc_priest_shadow.cpp @@ -436,8 +436,8 @@ struct shadowy_apparition_base_t : public priest_spell_t auto* apparition_state = cast_state( s ); - if ( priest().is_ptr() && priest().background_actions.shadeburst && apparition_state->parent_target && - apparition_state->parent_target->is_enemy() && s->target == apparition_state->parent_target ) + if ( priest().background_actions.shadeburst && apparition_state->parent_target && + apparition_state->parent_target->is_enemy() && s->target == apparition_state->parent_target ) { player->sim->print_debug( "{} triggering shadeburst from {}. target={} parent={}", priest(), apparition_state->trigger_source_name, s->target->name(), @@ -959,12 +959,7 @@ struct void_volley_base_t : public priest_spell_t bool ready() override { - if ( !priest().is_ptr() && !priest().buffs.voidform->check() && !priest().buffs.crushing_void->check() ) - { - return false; - } - - if ( priest().is_ptr() && ( !priest().buffs.crushing_void->check() && !priest().buffs.void_volley->check() ) ) + if ( !priest().buffs.crushing_void->check() && !priest().buffs.void_volley->check() ) { return false; } @@ -1354,8 +1349,7 @@ struct shadow_word_madness_t final : public priest_spell_t priest().expand_entropic_rift(); } - if ( priest().is_ptr() && priest().talents.archon.focused_outburst.enabled() && casted && - priest().buffs.voidform->check() ) + if ( priest().talents.archon.focused_outburst.enabled() && casted && priest().buffs.voidform->check() ) { void_volley_swm->execute(); } @@ -1378,7 +1372,7 @@ struct voidform_t final : public priest_spell_t may_miss = false; idol_of_nzoth_execute_stacks = 10; - if ( !priest().is_ptr() && priest().talents.shadow.improved_voidform.enabled() ) + if ( priest().talents.shadow.improved_voidform.enabled() ) { energize_amount = priest().talents.shadow.improved_voidform->effectN( 1 ).base_value(); energize_type = action_energize::ON_CAST; @@ -1394,7 +1388,7 @@ struct voidform_t final : public priest_spell_t void_volley->execute(); - if ( priest().is_ptr() && priest().talents.shadow.voidform->effect_count() >= 3 ) + if ( priest().talents.shadow.voidform->effect_count() >= 3 ) { int voidform_charges = as( priest().talents.shadow.voidform->effectN( 3 ).base_value() ); priest().buffs.void_volley->trigger( voidform_charges ); @@ -1853,7 +1847,7 @@ struct tentacle_slam_t final : public priest_spell_t priest_spell_t::execute(); if ( const spell_data_t* set_bonus = priest().sets->set( PRIEST_SHADOW, MID2, B4 ); - priest().is_ptr() && priest().sets->has_set_bonus( PRIEST_SHADOW, MID2, B4 ) && set_bonus->ok() && + priest().sets->has_set_bonus( PRIEST_SHADOW, MID2, B4 ) && set_bonus->ok() && set_bonus->effect_count() >= 1 && rng().roll( set_bonus->effectN( 1 ).percent() ) ) { priest().procs.midnight_s2_4pc_void_volley->occur(); @@ -2013,7 +2007,7 @@ struct voidform_t final : public priest_buff_t priest().buffs.crushing_void->trigger( tierset_procs_left ); } - if ( priest().is_ptr() && priest().buffs.ancient_madness_extension->check() ) + if ( priest().buffs.ancient_madness_extension->check() ) { priest().trigger_ancient_madness( priest().buffs.ancient_madness_extension->check() ); } @@ -2285,36 +2279,32 @@ void priest_t::create_buffs_shadow() buffs.ancient_madness_extension = make_buff( this, "ancient_madness_extension", talents.shadow.ancient_madness ) ->set_duration( timespan_t::zero() ) - ->set_max_stack( is_ptr() ? as( buffs.voidform->data().effectN( 13 ).base_value() ) : 99 ); + ->set_max_stack( as( buffs.voidform->data().effectN( 13 ).base_value() ) ); - if ( is_ptr() ) - { - buffs.ancient_madness_extension->set_pct_buff_type( STAT_PCT_BUFF_HASTE ) - ->set_default_value( buffs.voidform->data().effectN( 12 ).percent() ); + buffs.ancient_madness_extension->set_pct_buff_type( STAT_PCT_BUFF_HASTE ) + ->set_default_value( buffs.voidform->data().effectN( 12 ).percent() ); - buffs.ancient_madness = make_buff( this, "ancient_madness", talents.shadow.ancient_madness_buff ) - ->set_pct_buff_type( STAT_PCT_BUFF_HASTE ) - ->set_default_value_from_effect_type( A_HASTE_ALL ) - ->set_duration( talents.shadow.ancient_madness_buff->duration() ) - ->set_max_stack( 1 ) - ->set_freeze_stacks( true ) - ->set_period( talents.shadow.ancient_madness_buff->effectN( 2 ).period() ); + buffs.ancient_madness = make_buff( this, "ancient_madness", talents.shadow.ancient_madness_buff ) + ->set_pct_buff_type( STAT_PCT_BUFF_HASTE ) + ->set_default_value_from_effect_type( A_HASTE_ALL ) + ->set_duration( talents.shadow.ancient_madness_buff->duration() ) + ->set_max_stack( 1 ) + ->set_freeze_stacks( true ) + ->set_period( talents.shadow.ancient_madness_buff->effectN( 2 ).period() ); - // PTR Ancient Madness starts from the accumulated extension stacks and decays linearly over the aura duration. - const double ancient_madness_tick_count = as( talents.shadow.ancient_madness_buff->duration() / - talents.shadow.ancient_madness_buff->effectN( 2 ).period() ); + const double ancient_madness_tick_count = as( talents.shadow.ancient_madness_buff->duration() / + talents.shadow.ancient_madness_buff->effectN( 2 ).period() ); - buffs.ancient_madness->set_tick_callback( [ ancient_madness_tick_count ]( buff_t* buff, int, timespan_t ) { - if ( buff->default_value <= 0.0 ) - { - return; - } + buffs.ancient_madness->set_tick_callback( [ ancient_madness_tick_count ]( buff_t* buff, int, timespan_t ) { + if ( buff->default_value <= 0.0 ) + { + return; + } - double decay = buff->default_value / ancient_madness_tick_count; - double value = std::max( 0.0, buff->current_value - decay ); - buff->bump( 0, value ); - } ); - } + double decay = buff->default_value / ancient_madness_tick_count; + double value = std::max( 0.0, buff->current_value - decay ); + buff->bump( 0, value ); + } ); buffs.void_volley = make_buff( this, "void_volley", talents.shadow.void_volley_buff ); } // namespace priestspace @@ -2434,16 +2424,9 @@ void priest_t::init_spells_shadow() talents.shadow.maddening_touch_insanity = find_spell( 391232 ); talents.shadow.improved_voidform = ST( "Improved Voidform" ); talents.shadow.ancient_madness = ST( "Ancient Madness" ); - if ( is_ptr() ) - { - talents.shadow.ancient_madness_buff = find_spell( 1304485 ); - talents.shadow.shadeburst = ST( "Shadeburst" ); - talents.shadow.shadeburst_spell = find_spell( 1231479 ); - } - else - { - talents.shadow.phantom_menace = ST( "Phantom Menace" ); - } + talents.shadow.ancient_madness_buff = find_spell( 1304485 ); + talents.shadow.shadeburst = ST( "Shadeburst" ); + talents.shadow.shadeburst_spell = find_spell( 1231479 ); talents.shadow.dark_evangelism = ST( "Dark Evangelism" ); talents.shadow.shattered_psyche = ST( "Shattered Psyche" ); // Row 7 @@ -2697,7 +2680,7 @@ void priest_t::trigger_shadow_weaving( action_state_t* s ) void priest_t::trigger_ancient_madness( int stacks ) { - if ( !is_ptr() || !talents.shadow.ancient_madness.enabled() || !buffs.ancient_madness ) + if ( !talents.shadow.ancient_madness.enabled() || !buffs.ancient_madness ) { return; } @@ -2731,43 +2714,23 @@ void priest_t::trigger_ancient_madness_extension() return; } - if ( is_ptr() ) - { - int old_stacks = buffs.ancient_madness_extension->check(); - timespan_t extension = 0_ms; - bool extended_voidform = false; - - // PTR: +1.5s Voidform duration per SW:M cast, but only while stacking up to 5. - if ( !buffs.ancient_madness_extension->at_max_stacks() ) - { - extension = buffs.voidform->data().effectN( 14 ).time_value(); - buffs.voidform->extend_duration( extension ); - extended_voidform = true; - } + int old_stacks = buffs.ancient_madness_extension->check(); + timespan_t extension = 0_ms; + bool extended_voidform = false; - buffs.ancient_madness_extension->trigger(); - sim->print_debug( - "ancient_madness_extension: stacks {}->{} extended_voidform={} extension_s={} voidform_remains_s={}", - old_stacks, buffs.ancient_madness_extension->check(), extended_voidform, extension.total_seconds(), - buffs.voidform->remains().total_seconds() ); - return; - } - - // Live: preserve diminishing extension behavior. - timespan_t base_duration = talents.shadow.voidform->effectN( 2 ).time_value(); - - if ( buffs.ancient_madness_extension->check() ) - { - double factor = std::pow( 1 - talents.shadow.ancient_madness->effectN( 3 ).percent(), - buffs.ancient_madness_extension->check() ); - buffs.voidform->extend_duration( base_duration * factor ); - } - else + // Voidform duration extends by 1.5s per SW:M cast, stacking up to 5. + if ( !buffs.ancient_madness_extension->at_max_stacks() ) { - buffs.voidform->extend_duration( base_duration ); + extension = buffs.voidform->data().effectN( 14 ).time_value(); + buffs.voidform->extend_duration( extension ); + extended_voidform = true; } buffs.ancient_madness_extension->trigger(); + sim->print_debug( + "ancient_madness_extension: stacks {}->{} extended_voidform={} extension_s={} voidform_remains_s={}", + old_stacks, buffs.ancient_madness_extension->check(), extended_voidform, extension.total_seconds(), + buffs.voidform->remains().total_seconds() ); } // Helper function to refresh insidious ire buff From 7f75a9ab50dbe96c16e398f16e597bef8ffb14b7 Mon Sep 17 00:00:00 2001 From: Publik Date: Mon, 10 Aug 2026 16:23:53 -0500 Subject: [PATCH 2/2] format --- engine/class_modules/priest/sc_priest.cpp | 5 +- engine/class_modules/priest/sc_priest.hpp | 2 +- .../priest/sc_priest_discipline.cpp | 12 +-- .../class_modules/priest/sc_priest_holy.cpp | 4 +- .../class_modules/priest/sc_priest_shadow.cpp | 97 ++++++++++--------- 5 files changed, 59 insertions(+), 61 deletions(-) diff --git a/engine/class_modules/priest/sc_priest.cpp b/engine/class_modules/priest/sc_priest.cpp index 7f5af317560..eb442de41eb 100644 --- a/engine/class_modules/priest/sc_priest.cpp +++ b/engine/class_modules/priest/sc_priest.cpp @@ -136,7 +136,7 @@ struct expiation_t final : public priest_spell_t void impact( action_state_t* s ) override { priest_td_t& td = get_td( s->target ); - dot_t* dot = td.dots.shadow_word_pain; + dot_t* dot = td.dots.shadow_word_pain; auto dot_damage = priest().tick_damage_over_time( consume_time, dot ); if ( dot_damage > 0 ) @@ -902,7 +902,7 @@ struct void_blast_disc_t final : public smite_base_t void execute() override { smite_base_t::execute(); - + p().extend_entropic_rift(); } }; @@ -2170,7 +2170,6 @@ struct void_shield_t final : public priest_absorb_t void execute() override { - if ( priest().talents.discipline.borrowed_time.enabled() ) { priest().buffs.borrowed_time->trigger(); diff --git a/engine/class_modules/priest/sc_priest.hpp b/engine/class_modules/priest/sc_priest.hpp index 937ffd7afb2..5ab0b5b62c5 100644 --- a/engine/class_modules/priest/sc_priest.hpp +++ b/engine/class_modules/priest/sc_priest.hpp @@ -199,7 +199,7 @@ struct priest_t final : public player_t propagate_const holy_ray; propagate_const greater_smite; propagate_const master_the_darkness; - propagate_const dark_transference; // MID2 4pc 1307795 + propagate_const dark_transference; // MID2 4pc 1307795 // Holy propagate_const apotheosis; propagate_const empyreal_blaze; diff --git a/engine/class_modules/priest/sc_priest_discipline.cpp b/engine/class_modules/priest/sc_priest_discipline.cpp index 1733687853f..d42e3dab320 100644 --- a/engine/class_modules/priest/sc_priest_discipline.cpp +++ b/engine/class_modules/priest/sc_priest_discipline.cpp @@ -147,8 +147,8 @@ struct pain_suppression_t final : public priest_spell_t buff_t* create_debuff( player_t* t ) override { return priest_spell_t::create_debuff( t ) - ->set_default_value_from_effect_type( A_MOD_DAMAGE_PERCENT_TAKEN ) - ->set_cooldown( 0_ms ); // Let the ability handle the CD + ->set_default_value_from_effect_type( A_MOD_DAMAGE_PERCENT_TAKEN ) + ->set_cooldown( 0_ms ); // Let the ability handle the CD } void execute() override @@ -276,7 +276,6 @@ struct penance_base_t : public priest_spell_t return d; } - double composite_atonement_multiplier( action_state_t* s ) override { double mul = priest_spell_t::composite_atonement_multiplier( s ); @@ -629,8 +628,7 @@ struct ultimate_penitence_t : public priest_spell_t public: ultimate_penitence_t( priest_t& p, util::string_view options_str ) - : priest_spell_t( "ultimate_penitence", p, p.talents.discipline.ultimate_penitence ), - nested_action( nullptr ) + : priest_spell_t( "ultimate_penitence", p, p.talents.discipline.ultimate_penitence ), nested_action( nullptr ) { add_option( opt_string( "nested_action", nested_action_name ) ); parse_options( options_str ); @@ -807,8 +805,8 @@ void priest_t::init_spells_discipline() // General Spells specs.penance = find_spell( 47540 ); - specs.penance_channel = find_spell( 47758 ); // Channel spell, triggered by 47540, executes 47666 every tick - specs.penance_tick = find_spell( 47666 ); // Not triggered from 47540, only 47758 + specs.penance_channel = find_spell( 47758 ); // Channel spell, triggered by 47540, executes 47666 every tick + specs.penance_tick = find_spell( 47666 ); // Not triggered from 47540, only 47758 specs.plea = find_spell( 200829 ); diff --git a/engine/class_modules/priest/sc_priest_holy.cpp b/engine/class_modules/priest/sc_priest_holy.cpp index b2788aae36a..9f4e7c1c160 100644 --- a/engine/class_modules/priest/sc_priest_holy.cpp +++ b/engine/class_modules/priest/sc_priest_holy.cpp @@ -453,8 +453,8 @@ struct guardian_spirit_t final : public priest_spell_t buff_t* create_debuff( player_t* t ) override { auto gs_buff = priest_spell_t::create_debuff( t ) - ->set_default_value_from_effect_type( A_MOD_HEALING_RECEIVED_PCT ) - ->set_cooldown( 0_ms ); // Let the ability handle the CD + ->set_default_value_from_effect_type( A_MOD_HEALING_RECEIVED_PCT ) + ->set_cooldown( 0_ms ); // Let the ability handle the CD t->assessor_out_damage.add( assessor::LOG - 1, [ gs_buff, t ]( auto, action_state_t* s ) { auto max_hp = t->resources.max[ RESOURCE_HEALTH ]; diff --git a/engine/class_modules/priest/sc_priest_shadow.cpp b/engine/class_modules/priest/sc_priest_shadow.cpp index 56193933013..e085040149d 100644 --- a/engine/class_modules/priest/sc_priest_shadow.cpp +++ b/engine/class_modules/priest/sc_priest_shadow.cpp @@ -436,8 +436,8 @@ struct shadowy_apparition_base_t : public priest_spell_t auto* apparition_state = cast_state( s ); - if ( priest().background_actions.shadeburst && apparition_state->parent_target && - apparition_state->parent_target->is_enemy() && s->target == apparition_state->parent_target ) + if ( priest().background_actions.shadeburst && apparition_state->parent_target && + apparition_state->parent_target->is_enemy() && s->target == apparition_state->parent_target ) { player->sim->print_debug( "{} triggering shadeburst from {}. target={} parent={}", priest(), apparition_state->trigger_source_name, s->target->name(), @@ -825,7 +825,7 @@ struct vampiric_touch_t final : public priest_spell_t // ========================================================================== struct void_volley_damage_base_t : public priest_spell_t { - bool set_bonus_effectiveness_active = false; + bool set_bonus_effectiveness_active = false; double cast_effectiveness_multiplier = 1.0; void_volley_damage_base_t( util::string_view n, priest_t& p, const spell_data_t* s ) : priest_spell_t( n, p, s ) @@ -892,8 +892,8 @@ struct void_volley_damage_aoe_t final : public void_volley_damage_base_t void_volley_damage_aoe_t( util::string_view n, priest_t& p, const spell_data_t* s, double _radius ) : void_volley_damage_base_t( n, p, s ) { - aoe = -1; - radius = _radius; + aoe = -1; + radius = _radius; } size_t available_targets( std::vector& tl ) const override @@ -974,14 +974,15 @@ struct void_volley_base_t : public priest_spell_t player_t* volley_target = s->target; // fire s1 bolts at main target - make_repeating_event( sim, 50_ms, - [ this, set_bonus_effectiveness, cast_effectiveness, volley_target ] { - void_volley_damage->set_bonus_effectiveness_active = set_bonus_effectiveness; - void_volley_damage->cast_effectiveness_multiplier = cast_effectiveness; - void_volley_damage->target = volley_target; - void_volley_damage->execute(); - }, - as( data().effectN( 1 ).base_value() ) ); + make_repeating_event( + sim, 50_ms, + [ this, set_bonus_effectiveness, cast_effectiveness, volley_target ] { + void_volley_damage->set_bonus_effectiveness_active = set_bonus_effectiveness; + void_volley_damage->cast_effectiveness_multiplier = cast_effectiveness; + void_volley_damage->target = volley_target; + void_volley_damage->execute(); + }, + as( data().effectN( 1 ).base_value() ) ); if ( void_volley_damage_aoe->target != volley_target ) { @@ -993,20 +994,21 @@ struct void_volley_base_t : public priest_spell_t // fire s3 bolts at secondary targets with s1 radius if ( !void_volley_damage_aoe->target_list().empty() ) { - make_repeating_event( sim, 50_ms, - [ this, set_bonus_effectiveness, cast_effectiveness, volley_target ] { - void_volley_damage_aoe->set_bonus_effectiveness_active = set_bonus_effectiveness; - void_volley_damage_aoe->cast_effectiveness_multiplier = cast_effectiveness; + make_repeating_event( + sim, 50_ms, + [ this, set_bonus_effectiveness, cast_effectiveness, volley_target ] { + void_volley_damage_aoe->set_bonus_effectiveness_active = set_bonus_effectiveness; + void_volley_damage_aoe->cast_effectiveness_multiplier = cast_effectiveness; - if ( void_volley_damage_aoe->target != volley_target ) - { - void_volley_damage_aoe->target = volley_target; - void_volley_damage_aoe->target_cache.is_valid = false; - } + if ( void_volley_damage_aoe->target != volley_target ) + { + void_volley_damage_aoe->target = volley_target; + void_volley_damage_aoe->target_cache.is_valid = false; + } - void_volley_damage_aoe->execute(); - }, - as( data().effectN( 3 ).base_value() ) ); + void_volley_damage_aoe->execute(); + }, + as( data().effectN( 3 ).base_value() ) ); } } @@ -1056,7 +1058,7 @@ struct void_volley_t final : public void_volley_base_t double composite_energize_amount( const action_state_t* s ) const override { double ea = void_volley_base_t::composite_energize_amount( s ); - + if ( priest().buffs.void_volley_set_bonus_effectiveness->check() ) { ea *= priest().buffs.void_volley_set_bonus_effectiveness->default_value; @@ -1409,7 +1411,8 @@ struct voidform_t final : public priest_spell_t bool ready() override { - if ( priest().buffs.voidform->check() || priest().buffs.crushing_void->check() || priest().buffs.void_volley->check() ) + if ( priest().buffs.voidform->check() || priest().buffs.crushing_void->check() || + priest().buffs.void_volley->check() ) { return false; } @@ -1695,7 +1698,7 @@ struct shadow_weaving_t final : public priest_spell_t static bool in_tentacle_slam_area( const player_t* caster, const player_t* primary, const player_t* candidate, const spell_data_t* slam_data ) { - double around_radius = slam_data->effectN( 1 ).radius(); + double around_radius = slam_data->effectN( 1 ).radius(); double line_half_width = slam_data->line_width() / 2; if ( candidate == primary ) @@ -1729,11 +1732,10 @@ struct tentacle_slam_damage_t final : public priest_spell_t std::vector& check_distance_targeting( std::vector& tl ) const override { - tl.erase( std::remove_if( tl.begin(), tl.end(), - [ this ]( player_t* t ) { - return !in_tentacle_slam_area( player, target, t, &data() ); - } ), - tl.end() ); + tl.erase( + std::remove_if( tl.begin(), tl.end(), + [ this ]( player_t* t ) { return !in_tentacle_slam_area( player, target, t, &data() ); } ), + tl.end() ); return tl; } }; @@ -1847,8 +1849,8 @@ struct tentacle_slam_t final : public priest_spell_t priest_spell_t::execute(); if ( const spell_data_t* set_bonus = priest().sets->set( PRIEST_SHADOW, MID2, B4 ); - priest().sets->has_set_bonus( PRIEST_SHADOW, MID2, B4 ) && set_bonus->ok() && - set_bonus->effect_count() >= 1 && rng().roll( set_bonus->effectN( 1 ).percent() ) ) + priest().sets->has_set_bonus( PRIEST_SHADOW, MID2, B4 ) && set_bonus->ok() && set_bonus->effect_count() >= 1 && + rng().roll( set_bonus->effectN( 1 ).percent() ) ) { priest().procs.midnight_s2_4pc_void_volley->occur(); @@ -1979,8 +1981,8 @@ struct voidform_t final : public priest_buff_t void expire_override( int expiration_stacks, timespan_t remaining_duration ) override { - int void_volley_charges = priest().buffs.void_volley->check(); - int tierset_procs_left = priest().buffs.void_volley_set_bonus->check(); + int void_volley_charges = priest().buffs.void_volley->check(); + int tierset_procs_left = priest().buffs.void_volley_set_bonus->check(); if ( priest().buffs.shadowform_state->check() ) { @@ -2276,10 +2278,9 @@ void priest_t::create_buffs_shadow() ->set_max_stack( void_volley_max_stacks ) ->set_default_value( shadow_mid2_4pc_effectiveness ); - buffs.ancient_madness_extension = - make_buff( this, "ancient_madness_extension", talents.shadow.ancient_madness ) - ->set_duration( timespan_t::zero() ) - ->set_max_stack( as( buffs.voidform->data().effectN( 13 ).base_value() ) ); + buffs.ancient_madness_extension = make_buff( this, "ancient_madness_extension", talents.shadow.ancient_madness ) + ->set_duration( timespan_t::zero() ) + ->set_max_stack( as( buffs.voidform->data().effectN( 13 ).base_value() ) ); buffs.ancient_madness_extension->set_pct_buff_type( STAT_PCT_BUFF_HASTE ) ->set_default_value( buffs.voidform->data().effectN( 12 ).percent() ); @@ -2424,11 +2425,11 @@ void priest_t::init_spells_shadow() talents.shadow.maddening_touch_insanity = find_spell( 391232 ); talents.shadow.improved_voidform = ST( "Improved Voidform" ); talents.shadow.ancient_madness = ST( "Ancient Madness" ); - talents.shadow.ancient_madness_buff = find_spell( 1304485 ); - talents.shadow.shadeburst = ST( "Shadeburst" ); - talents.shadow.shadeburst_spell = find_spell( 1231479 ); - talents.shadow.dark_evangelism = ST( "Dark Evangelism" ); - talents.shadow.shattered_psyche = ST( "Shattered Psyche" ); + talents.shadow.ancient_madness_buff = find_spell( 1304485 ); + talents.shadow.shadeburst = ST( "Shadeburst" ); + talents.shadow.shadeburst_spell = find_spell( 1231479 ); + talents.shadow.dark_evangelism = ST( "Dark Evangelism" ); + talents.shadow.shattered_psyche = ST( "Shattered Psyche" ); // Row 7 talents.shadow.subservient_shadows = ST( "Subservient Shadows" ); talents.shadow.mastermind = ST( "Mastermind" ); @@ -2728,8 +2729,8 @@ void priest_t::trigger_ancient_madness_extension() buffs.ancient_madness_extension->trigger(); sim->print_debug( - "ancient_madness_extension: stacks {}->{} extended_voidform={} extension_s={} voidform_remains_s={}", - old_stacks, buffs.ancient_madness_extension->check(), extended_voidform, extension.total_seconds(), + "ancient_madness_extension: stacks {}->{} extended_voidform={} extension_s={} voidform_remains_s={}", old_stacks, + buffs.ancient_madness_extension->check(), extended_voidform, extension.total_seconds(), buffs.voidform->remains().total_seconds() ); }