diff --git a/engine/class_modules/warlock/sc_warlock.cpp b/engine/class_modules/warlock/sc_warlock.cpp index 0cc223b5c54..5d135f5f79e 100644 --- a/engine/class_modules/warlock/sc_warlock.cpp +++ b/engine/class_modules/warlock/sc_warlock.cpp @@ -119,6 +119,7 @@ warlock_td_t::warlock_td_t( player_t* target, warlock_t& p ) debuffs_shared_fate = make_buff( *this, "shared_fate", p.hero.shared_fate_debuff ) ->set_tick_zero( false ) + ->set_tick_time_behavior( buff_tick_time_behavior::HASTED ) ->set_period( p.hero.shared_fate_debuff->effectN( 1 ).period() ) ->set_tick_callback( [ this, target ]( buff_t*, int, timespan_t ) { warlock.proc_actions.shared_fate->execute_on_target( target ); } ); diff --git a/engine/class_modules/warlock/sc_warlock_actions.cpp b/engine/class_modules/warlock/sc_warlock_actions.cpp index b86c897396e..b88e04ec5e9 100644 --- a/engine/class_modules/warlock/sc_warlock_actions.cpp +++ b/engine/class_modules/warlock/sc_warlock_actions.cpp @@ -944,10 +944,7 @@ using namespace helpers; } if ( p->talents.cunning_cruelty.ok() ) - { volley = new shadow_bolt_volley_t( p ); - add_child( volley ); - } } bool ready() override @@ -1595,12 +1592,8 @@ using namespace helpers; if ( p()->talents.malefic_touch.ok() ) touch->execute_on_target( s->target ); - // TOCHECK: Demonic Soul is proc'd based on impact, but this makes redundant decrement() calls in AoE. - // Is there a good way around this? if ( soul_harvester() && p()->buffs.succulent_soul->check() ) { - make_event( *sim, 1_ms, [ this ] { p()->buffs.succulent_soul->decrement(); } ); - bool fervor = td( s->target )->dots_unstable_affliction->is_ticking(); debug_cast( p()->proc_actions.demonic_soul )->demoniacs_fervor = fervor; p()->proc_actions.demonic_soul->execute_on_target( s->target ); @@ -1682,6 +1675,14 @@ using namespace helpers; warlock_spell_t::impact( s ); debug_cast( impact_action )->target_count = as( s->n_targets ); + + if ( soul_harvester() && p()->buffs.succulent_soul->check() ) + { + bool primary = ( s->chain_target == 0 ); + + if ( primary ) + make_event( *sim, 1_ms, [ this ] { p()->buffs.succulent_soul->decrement(); } ); + } } size_t available_targets( std::vector& tl ) const override @@ -2031,10 +2032,7 @@ using namespace helpers; base_td_multiplier *= 1.0 + p->talents.dark_virtuosity->effectN( 2 ).percent(); if ( p->talents.cunning_cruelty.ok() ) - { volley = new shadow_bolt_volley_t( p ); - add_child( volley ); - } } action_state_t* new_state() override