Skip to content
Merged
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
33 changes: 10 additions & 23 deletions engine/class_modules/warlock/sc_warlock_actions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4028,6 +4028,8 @@ using namespace helpers;
{
double m = warlock_spell_t::composite_da_multiplier( s );

m *= 1.0 + player->cache.spell_crit_chance();

// The base effect of Through the Felvine is automatically applied by the parse_effects system
// However, it is necessary to manually apply its duplicate effect during Malevolence
if ( p()->hero.through_the_felvine.ok() && p()->hero.malevolence.ok() && p()->buffs.malevolence->check() )
Expand All @@ -4041,15 +4043,6 @@ using namespace helpers;

double composite_crit_chance() const override
{ return 1.0; }

double calculate_direct_amount( action_state_t* s ) const override
{
warlock_spell_t::calculate_direct_amount( s );

s->result_total *= 1.0 + player->cache.spell_crit_chance();

return s->result_total;
}
};

struct conflagrate_t : public warlock_spell_t
Expand Down Expand Up @@ -4137,17 +4130,14 @@ using namespace helpers;
p()->buffs.backdraft->trigger();
}

double calculate_direct_amount( action_state_t* s ) const override
double composite_da_multiplier( const action_state_t* s ) const override
{
double amt = warlock_spell_t::calculate_direct_amount( s );
double m = warlock_spell_t::composite_da_multiplier( s );

if ( p()->buffs.conflagration_of_chaos->check() )
{
s->result_total *= 1.0 + player->cache.spell_crit_chance();
return s->result_total;
}
m *= 1.0 + player->cache.spell_crit_chance();

return amt;
return m;
}
};

Expand Down Expand Up @@ -4468,18 +4458,15 @@ using namespace helpers;
p()->buffs.fiendish_cruelty->decrement();
}

double calculate_direct_amount( action_state_t* state ) const override
double composite_da_multiplier( const action_state_t* s ) const override
{
double amt = warlock_spell_t::calculate_direct_amount( state );
double m = warlock_spell_t::composite_da_multiplier( s );

// NOTE: 2026-04-25 Conflagration of Chaos crit damage bonus is not applied to Shadowburn (bug)
if ( p()->buffs.conflagration_of_chaos->check() && !p()->bugs )
{
state->result_total *= 1.0 + player->cache.spell_crit_chance();
return state->result_total;
}
m *= 1.0 + player->cache.spell_crit_chance();

return amt;
return m;
}
};

Expand Down
16 changes: 8 additions & 8 deletions engine/class_modules/warlock/sc_warlock_pets.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2233,13 +2233,13 @@ struct rift_chaos_bolt_t : public warlock_pet_spell_t
debug_cast<chaos_tear_t*>( p() )->bolts--;
}

double calculate_direct_amount( action_state_t* s ) const override
double composite_da_multiplier( const action_state_t* s ) const override
{
warlock_pet_spell_t::calculate_direct_amount( s );
double m = warlock_pet_spell_t::composite_da_multiplier( s );

s->result_total *= 1.0 + p()->current_pet_stats.composite_spell_crit;
m *= 1.0 + p()->current_pet_stats.composite_spell_crit;

return s->result_total;
return m;
}

double action_multiplier() const override
Expand Down Expand Up @@ -2300,13 +2300,13 @@ struct overfiend_chaos_bolt_t : public warlock_pet_spell_t
double composite_crit_chance() const override
{ return 1.0; }

double calculate_direct_amount( action_state_t* s ) const override
double composite_da_multiplier( const action_state_t* s ) const override
{
warlock_pet_spell_t::calculate_direct_amount( s );
double m = warlock_pet_spell_t::composite_da_multiplier( s );

s->result_total *= 1.0 + p()->current_pet_stats.composite_spell_crit;
m *= 1.0 + p()->current_pet_stats.composite_spell_crit;

return s->result_total;
return m;
}

double action_multiplier() const override
Expand Down