diff --git a/engine/class_modules/warlock/sc_warlock_actions.cpp b/engine/class_modules/warlock/sc_warlock_actions.cpp index e2b26ace6c3..af996ae7ee8 100644 --- a/engine/class_modules/warlock/sc_warlock_actions.cpp +++ b/engine/class_modules/warlock/sc_warlock_actions.cpp @@ -836,6 +836,9 @@ using namespace helpers; base_td_multiplier *= 1.0 + p->talents.kindled_malice->effectN( 3 ).percent(); base_td_multiplier *= 1.0 + p->talents.sacrolashs_dark_strike->effectN( 1 ).percent(); + if ( soul_harvester() && p->hero.sataiels_volition.ok() ) + base_tick_time *= 1.0 + p->hero.sataiels_volition->effectN( 1 ).percent(); + triggers.ravenous_afflictions = p->talents.ravenous_afflictions.ok(); affected_by.deaths_embrace = p->talents.deaths_embrace.ok(); @@ -2168,6 +2171,14 @@ using namespace helpers; return m; } + void execute() override + { + warlock_spell_t::execute(); + + if ( soul_harvester() && p()->hero.sataiels_volition.ok() ) + p()->buffs.nightfall->trigger(); + } + void impact( action_state_t* s ) override { warlock_spell_t::impact( s ); diff --git a/engine/class_modules/warlock/sc_warlock_init.cpp b/engine/class_modules/warlock/sc_warlock_init.cpp index ab5535c162f..70639326ea9 100644 --- a/engine/class_modules/warlock/sc_warlock_init.cpp +++ b/engine/class_modules/warlock/sc_warlock_init.cpp @@ -577,6 +577,8 @@ namespace warlock hero.wicked_reaping_dmg = find_spell( 449826 ); hero.quietus = find_talent_spell( talent_tree::HERO, "Quietus" ); // Should be ID 449634 + + hero.sataiels_volition = find_talent_spell( talent_tree::HERO, "Sataiel's Volition" ); // Should be ID 449637 } void warlock_t::init_base_stats() diff --git a/engine/class_modules/warlock/sc_warlock_pets.cpp b/engine/class_modules/warlock/sc_warlock_pets.cpp index ef8a80b7ff8..2472987b89c 100644 --- a/engine/class_modules/warlock/sc_warlock_pets.cpp +++ b/engine/class_modules/warlock/sc_warlock_pets.cpp @@ -1123,6 +1123,16 @@ struct fel_firebolt_t : public warlock_pet_spell_t return m; } + + double composite_da_multiplier( const action_state_t* s ) const override + { + double m = warlock_pet_spell_t::composite_da_multiplier( s ); + + if ( p()->o()->hero.sataiels_volition.ok() ) + m *= 1.0 + p()->o()->hero.sataiels_volition->effectN( 2 ).percent(); + + return m; + } }; void wild_imp_pet_t::create_actions() @@ -1199,6 +1209,9 @@ void wild_imp_pet_t::demise() { double core_chance = o()->talents.demonic_core_spell->effectN( 1 ).percent(); + if ( imploded ) + core_chance += o()->hero.sataiels_volition->effectN( 3 ).percent(); + if ( !o()->talents.demoniac.ok() ) core_chance = 0.0;