aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index ce0afca879f..3b177cfc57f 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -2436,14 +2436,14 @@ void Spell::EffectHealthLeech(SpellEffIndex effIndex)
float healMultiplier = SpellMgr::CalculateSpellEffectValueMultiplier(m_spellInfo, effIndex, m_originalCaster, this);
- int32 newDamage = int32(damage * healMultiplier);
- newDamage = std::min(int32(unitTarget->GetHealth()), newDamage);
- m_damage += newDamage;
+ m_damage += damage;
+ // get max possible damage, don't count overkill for heal
+ uint32 healthGain = uint32(-unitTarget->GetHealthGain(-damage) * healMultiplier);
if (m_caster->isAlive())
{
- newDamage = m_caster->SpellHealingBonus(m_caster, m_spellInfo, newDamage, HEAL);
- m_caster->HealBySpell(m_caster, m_spellInfo, uint32(newDamage));
+ healthGain = m_caster->SpellHealingBonus(m_caster, m_spellInfo, healthGain, HEAL);
+ m_caster->HealBySpell(m_caster, m_spellInfo, uint32(healthGain));
}
}