From 2132ed5178e6bc40ed9f2b7f29d32a5aa4e97fe5 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Thu, 14 May 2020 22:14:15 +0200 Subject: [PATCH] Core/Spells: Power Word: Shield will now apply its Weakened Soul debuff on its target again which got broken after cleaning up hacks in db4e832fee9543f2069b9ac084383ff27b99be67 closes #96 --- src/server/scripts/Spells/spell_priest.cpp | 31 ++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 7ecb35087cc..6fe7336fa4a 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -684,9 +684,30 @@ class spell_pri_phantasm : public AuraScript }; // 17 - Power Word: Shield -class spell_pri_power_word_shield : public AuraScript +class spell_pri_power_word_shield : public SpellScript { - PrepareAuraScript(spell_pri_power_word_shield); + PrepareSpellScript(spell_pri_power_word_shield); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_PRIEST_WEAKENED_SOUL }); + } + + void HandleWeakenedSoul(SpellEffIndex /*effIndex*/) + { + if (Unit* caster = GetCaster()) + caster->CastSpell(GetHitUnit(), SPELL_PRIEST_WEAKENED_SOUL, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_pri_power_word_shield::HandleWeakenedSoul, EFFECT_0, SPELL_EFFECT_APPLY_AURA); + } +}; + +class spell_pri_power_word_shield_AuraScript : public AuraScript +{ + PrepareAuraScript(spell_pri_power_word_shield_AuraScript); bool Validate(SpellInfo const* /*spellInfo*/) override { @@ -757,8 +778,8 @@ class spell_pri_power_word_shield : public AuraScript void Register() override { - DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_power_word_shield::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB); - AfterEffectAbsorb += AuraEffectAbsorbFn(spell_pri_power_word_shield::ReflectDamage, EFFECT_0); + DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_pri_power_word_shield_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB); + AfterEffectAbsorb += AuraEffectAbsorbFn(spell_pri_power_word_shield_AuraScript::ReflectDamage, EFFECT_0); } }; @@ -1856,7 +1877,7 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_penance); RegisterAuraScript(spell_pri_phantasm); RegisterAuraScript(spell_power_word_barrier); - RegisterAuraScript(spell_pri_power_word_shield); + RegisterSpellAndAuraScriptPair(spell_pri_power_word_shield, spell_pri_power_word_shield_AuraScript); RegisterSpellScript(spell_pri_prayer_of_mending_heal); RegisterAuraScript(spell_pri_shadow_orb); RegisterAuraScript(spell_pri_shadow_orbs);