Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion engine/action/parse_effects.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1888,6 +1888,7 @@ void parse_action_base_t::parsed_effects_html( report::sc_html_stream& os ) cons
};

using VEC = parse_action_base_t;
print_parsed_type( os, &VEC::persistent_multiplier_effects, "Persistent Multiplier" );
print_parsed_type( os, &VEC::da_multiplier_effects, "Direct Damage" );
print_parsed_type( os, &VEC::ta_multiplier_effects, "Periodic Damage" );
print_parsed_type( os, &VEC::crit_chance_effects, "Critical Strike Chance" );
Expand Down Expand Up @@ -1916,7 +1917,8 @@ void parse_action_base_t::parsed_effects_html( report::sc_html_stream& os ) cons

size_t parse_action_base_t::total_effects_count() const
{
return ta_multiplier_effects.size() +
return persistent_multiplier_effects.size() +
ta_multiplier_effects.size() +
da_multiplier_effects.size() +
execute_time_effects.size() +
flat_execute_time_effects.size() +
Expand Down
12 changes: 12 additions & 0 deletions engine/action/parse_effects.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -801,6 +801,7 @@ struct parse_player_effects_t : public player_t, public parse_effects_t

struct parse_action_base_t : public parse_effects_t
{
std::vector<player_effect_t> persistent_multiplier_effects;
std::vector<player_effect_t> ta_multiplier_effects;
std::vector<player_effect_t> da_multiplier_effects;
std::vector<player_effect_t> execute_time_effects;
Expand Down Expand Up @@ -971,6 +972,7 @@ struct parse_action_effects_t : public BASE, public parse_action_base_t
// the final derived constructor.
if ( !BASE::does_direct_damage() && !BASE::does_periodic_damage() )
{
remove_damage_entries( persistent_multiplier_effects, "persistent_multiplier_effects" );
remove_damage_entries( ta_multiplier_effects, "tick damage" );
remove_damage_entries( da_multiplier_effects, "direct damage" );
remove_damage_entries( crit_bonus_effects, "crit bonus multiplier" );
Expand Down Expand Up @@ -1045,6 +1047,16 @@ struct parse_action_effects_t : public BASE, public parse_action_base_t
return da;
}

double composite_persistent_multiplier( const action_state_t* s ) const override
{
auto p = BASE::composite_persistent_multiplier( s );

for ( const auto& i : persistent_multiplier_effects )
p *= 1.0 + get_effect_value( i, true );

return p;
}

double composite_crit_chance() const override
{
auto cc = BASE::composite_crit_chance();
Expand Down
Loading
Loading