diff --git a/engine/action/action.cpp b/engine/action/action.cpp index 92ddb0a31fc..904d28809f7 100644 --- a/engine/action/action.cpp +++ b/engine/action/action.cpp @@ -2570,10 +2570,10 @@ void action_t::init() if ( may_crit || tick_may_crit ) snapshot_flags |= STATE_CRIT | STATE_TGT_CRIT; - if ( ( base_td > 0 || spell_power_mod.tick > 0 || attack_power_mod.tick > 0 ) && dot_duration > 0_ms ) + if ( ( base_td > 0 || spell_power_mod.tick > 0 || attack_power_mod.tick > 0 || rolling_periodic ) && dot_duration > 0_ms ) snapshot_flags |= STATE_MUL_TA | STATE_TGT_MUL_TA | STATE_MUL_PERSISTENT | STATE_VERSATILITY; - if ( base_dd_min > 0 || ( spell_power_mod.direct > 0 || attack_power_mod.direct > 0 ) || weapon_multiplier > 0 ) + if ( base_dd_min > 0 || spell_power_mod.direct > 0 || attack_power_mod.direct > 0 || weapon_multiplier > 0 ) snapshot_flags |= STATE_MUL_DA | STATE_TGT_MUL_DA | STATE_MUL_PERSISTENT | STATE_VERSATILITY; if ( player->is_pet() && ( snapshot_flags & ( STATE_MUL_DA | STATE_MUL_TA | STATE_TGT_MUL_DA | STATE_TGT_MUL_TA | diff --git a/engine/action/residual_action.hpp b/engine/action/residual_action.hpp index c65ec170cd5..44950f2e3f3 100644 --- a/engine/action/residual_action.hpp +++ b/engine/action/residual_action.hpp @@ -57,21 +57,17 @@ struct residual_periodic_action_t : public Base void initialize_() { ab::background = true; - - ab::tick_may_crit = false; - ab::hasted_ticks = false; ab::may_crit = false; + ab::attack_power_mod.tick = 0; ab::spell_power_mod.tick = 0; // Current assumption is that residual based rolling periodics behave the same way as coeff based rolling periodics. - // If this is disproven in the future, rolling_periodic & dot_behavior overrides below may need to be reactivated, + // If this is disproven in the future, the overrides below may need to be reactivated. + // ab::tick_may_crit = false; + // ab::hasted_ticks = false; // ab::rolling_periodic = false; // ab::dot_behavior = dot_behavior_e::DOT_REFRESH_DURATION; - - // As residual actions have no base damage in the spell data, they do not get caster damage multiplier state flags - // properly set. By default rolling periodics scale with multipliers unless they also have the Ignore X multiplier - // flags, which is handled by action_t::init() - ab::snapshot_flags |= STATE_MUL_TA | STATE_MUL_DA | STATE_VERSATILITY; + // ab::snapshot_flags |= STATE_MUL_TA | STATE_TGT_MUL_TA | STATE_MUL_PERSISTENT | STATE_VERSATILITY; } action_state_t* new_state() override