diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index d270d6741fe..2e8f9960a63 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -283,19 +283,17 @@ void Spell::EffectInstaKill(SpellEffIndex /*effIndex*/) void Spell::EffectEnvirinmentalDMG(SpellEffIndex effIndex) { + if (!unitTarget || !unitTarget->isAlive()) + return; + uint32 absorb = 0; uint32 resist = 0; - // Note: this hack with damage replace required until GO casting not implemented - // environment damage spells already have around enemies targeting but this not help in case not existed GO casting support - // currently each enemy selected explicitly and self cast damage, we prevent apply self casted spell bonuses/etc - damage = m_spellInfo->Effects[effIndex].CalcValue(m_caster); + m_caster->CalcAbsorbResist(unitTarget, m_spellInfo->GetSchoolMask(), SPELL_DIRECT_DAMAGE, damage, &absorb, &resist, m_spellInfo); - m_caster->CalcAbsorbResist(m_caster, m_spellInfo->GetSchoolMask(), SPELL_DIRECT_DAMAGE, damage, &absorb, &resist, m_spellInfo); - - m_caster->SendSpellNonMeleeDamageLog(m_caster, m_spellInfo->Id, damage, m_spellInfo->GetSchoolMask(), absorb, resist, false, 0, false); - if (m_caster->GetTypeId() == TYPEID_PLAYER) - m_caster->ToPlayer()->EnvironmentalDamage(DAMAGE_FIRE, damage); + m_caster->SendSpellNonMeleeDamageLog(unitTarget, m_spellInfo->Id, damage, m_spellInfo->GetSchoolMask(), absorb, resist, false, 0, false); + if (unitTarget->GetTypeId() == TYPEID_PLAYER) + unitTarget->ToPlayer()->EnvironmentalDamage(DAMAGE_FIRE, damage); } void Spell::EffectSchoolDMG(SpellEffIndex /*effIndex*/) |