From 3753ec56476d597b180968eb673cb20776785f31 Mon Sep 17 00:00:00 2001 From: ariel- Date: Thu, 22 Feb 2018 02:37:00 -0300 Subject: Core/Scripts: apply resilience on Vampiric Touch and Unstable Affliction dispel effect - Spell with SPELL_ATTR4_FIXED_DAMAGE won't do it by itself to avoid applying resilience twice, but because those are triggered from a periodic aura, those apply resilience on tick, not saved to amount. - This is one of the cases where you have to call Unit::SpellDamageBonusTaken directly Closes #21393 --- src/server/scripts/Spells/spell_priest.cpp | 6 +++++- src/server/scripts/Spells/spell_warlock.cpp | 11 +++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 6d8812ecf43..336b2d54be6 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -1263,8 +1263,12 @@ class spell_pri_vampiric_touch : public SpellScriptLoader if (AuraEffect const* aurEff = GetEffect(EFFECT_1)) { // backfire damage + int32 bp = aurEff->GetAmount(); + bp = target->SpellDamageBonusTaken(caster, aurEff->GetSpellInfo(), bp, DOT); + bp *= 8; + CastSpellExtraArgs args(aurEff); - args.AddSpellBP0(aurEff->GetAmount() * 8); + args.AddSpellBP0(bp); caster->CastSpell(target, SPELL_PRIEST_VAMPIRIC_TOUCH_DISPEL, args); } } diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 1232d524999..2746dc65144 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -1472,13 +1472,20 @@ class spell_warl_unstable_affliction : public SpellScriptLoader void HandleDispel(DispelInfo* dispelInfo) { if (Unit* caster = GetCaster()) + { if (AuraEffect const* aurEff = GetEffect(EFFECT_0)) { + Unit* target = dispelInfo->GetDispeller(); + int32 bp = aurEff->GetAmount(); + bp = target->SpellDamageBonusTaken(caster, aurEff->GetSpellInfo(), bp, DOT); + bp *= 9; + // backfire damage and silence CastSpellExtraArgs args(aurEff); - args.AddSpellBP0(aurEff->GetAmount() * 9); - caster->CastSpell(dispelInfo->GetDispeller(), SPELL_WARLOCK_UNSTABLE_AFFLICTION_DISPEL, args); + args.AddSpellBP0(bp); + caster->CastSpell(target, SPELL_WARLOCK_UNSTABLE_AFFLICTION_DISPEL, args); } + } } void Register() override -- cgit v1.2.3