aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2018-02-22 02:37:00 -0300
committerfunjoker <funjoker109@gmail.com>2021-08-08 21:21:34 +0200
commit5e7a11f88d9762fc75983ea2bbe65c598c4e51ba (patch)
tree315b4d7efc3f1ffabbcb93a752f3711b794b84bb /src
parent8e7a12a87aa6502b7bf9adc42478283859f9268a (diff)
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 (cherry picked from commit 3753ec56476d597b180968eb673cb20776785f31)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp6
-rw-r--r--src/server/scripts/Spells/spell_warlock.cpp11
2 files changed, 14 insertions, 3 deletions
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index f7bf7a68672..9efb49d5935 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -1209,8 +1209,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 f4fcb96ace5..f11802d79a5 100644
--- a/src/server/scripts/Spells/spell_warlock.cpp
+++ b/src/server/scripts/Spells/spell_warlock.cpp
@@ -904,13 +904,20 @@ class spell_warl_unstable_affliction : public SpellScriptLoader
void HandleDispel(DispelInfo* dispelInfo)
{
if (Unit* caster = GetCaster())
+ {
if (AuraEffect const* aurEff = GetEffect(EFFECT_1))
{
+ 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