From 15880d27eadbd3cdabf2ff2df607caf1229f48c9 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 2 Sep 2010 15:34:36 +0200 Subject: Core/Spells: Fixed Health Leech effect, should not apply healing multiplier to damage done --HG-- branch : trunk --- src/server/game/Spells/SpellEffects.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/server/game') 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)); } } -- cgit v1.2.3