aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
authorGildor <gildor55@gmail.com>2019-05-24 21:44:26 +0200
committerShauren <shauren.trinity@gmail.com>2021-12-07 00:31:48 +0100
commit9752ef4d6ea311acb6a60317c270cb5c053f951d (patch)
tree3a18729ec758f872c3fb3afc3fa400ac6fe99e40 /src/server/game/Spells/SpellEffects.cpp
parent6034992dffbbd511f59e77c13285da282d9c737d (diff)
Core/Spells: Fix spells with Health Leech effect, now check damage absorb when calculate Heal (#23312)
Closes: #23311 (cherry picked from commit ad89472fe3512b4a5f4160240154fd5b11a3b07c)
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 51fd904caa4..6d1e0cbe581 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1274,6 +1274,12 @@ void Spell::EffectHealthLeech()
float healMultiplier = effectInfo->CalcValueMultiplier(unitCaster, this);
m_damage += damage;
+
+ DamageInfo damageInfo(unitCaster, unitTarget, damage, m_spellInfo, m_spellInfo->GetSchoolMask(), SPELL_DIRECT_DAMAGE, BASE_ATTACK);
+ Unit::CalcAbsorbResist(damageInfo);
+ uint32 const absorb = damageInfo.GetAbsorb();
+ damage -= absorb;
+
// get max possible damage, don't count overkill for heal
uint32 healthGain = uint32(-unitTarget->GetHealthGain(-damage) * healMultiplier);