Skip to content

Commit e85c83e

Browse files
committed
Monk: Fix Purifying Brew, now reduces stagger.
Fixes #4424
1 parent 416dabe commit e85c83e

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

engine/class_modules/sc_monk.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3678,7 +3678,7 @@ struct rjw_tick_action_t : public monk_melee_attack_t
36783678
rjw_tick_action_t( const std::string& name, monk_t* p, const spell_data_t* data )
36793679
: monk_melee_attack_t( name, p, data )
36803680
{
3681-
ww_mastery = true;
3681+
ww_mastery = true;
36823682

36833683
dual = background = true;
36843684
aoe = -1;
@@ -5355,11 +5355,15 @@ struct stagger_self_damage_t : public residual_action::residual_periodic_action_
53555355

53565356
if ( d->is_ticking() )
53575357
{
5358-
damage_remaining += d->state->result_amount; // Assumes base_td == damage, no modifiers or crits
5358+
auto dot_state = debug_cast<residual_action::residual_periodic_state_t*>( d->state );
5359+
damage_remaining += dot_state -> tick_amount; // Assumes base_td == damage, no modifiers or crits
53595360
damage_remaining *= percent_amount;
5360-
d->state->result_amount -= damage_remaining;
5361+
dot_state -> tick_amount -= damage_remaining;
53615362
}
53625363

5364+
sim->print_debug( "{} partially clears stagger by {:.2f}% ({} / tick).", player->name(), percent_amount * 100.0,
5365+
damage_remaining );
5366+
53635367
p()->stagger_damage_changed();
53645368

53655369
return damage_remaining;
@@ -5545,6 +5549,9 @@ struct purifying_brew_t : public monk_spell_t
55455549
{
55465550
p()->buff.fit_to_burst->trigger( p()->buff.fit_to_burst->max_stack() );
55475551
}
5552+
5553+
// Reduce stagger damage
5554+
p()->active_actions.stagger_self_damage->clear_partial_damage( data().effectN( 1 ).percent() );
55485555
}
55495556
};
55505557

@@ -9616,12 +9623,13 @@ double monk_t::stagger_pct( int target_level )
96169623
{
96179624
double stagger_base = stagger_base_value();
96189625

9619-
double k_value = 0;
9620-
double lvl = level();
9626+
double k_value = 0;
9627+
double lvl = level();
96219628
double level_check = target_level - lvl;
96229629

96239630
// End game raiding of each expansion uses the player's level for +1, +2, and +3 level targets
9624-
if ( ( lvl == 60 || lvl == 70 || lvl == 80 || lvl == 85 || lvl == 90 || lvl == 100 || lvl == 110 ) && 0 <= level_check && level_check <= 3 )
9631+
if ( ( lvl == 60 || lvl == 70 || lvl == 80 || lvl == 85 || lvl == 90 || lvl == 100 || lvl == 110 ) &&
9632+
0 <= level_check && level_check <= 3 )
96259633
k_value = dbc.npc_armor_mitigation_constant( lvl );
96269634
else
96279635
k_value = dbc.npc_armor_mitigation_constant( target_level );

0 commit comments

Comments
 (0)