From fe2e3b67a86be5a486c5bfd79d09986b9092a872 Mon Sep 17 00:00:00 2001 From: ariel- Date: Wed, 26 Oct 2016 02:16:11 -0300 Subject: Core/Spells: use DamageInfo struct to calc spell absorbs and resists, and use calculated proc hitMask on aura ticks Closes #18135 (cherry picked from commit d3a71a83387f757f87c7d27e1054498c8cc49c8f) # Conflicts: # src/server/game/Entities/Unit/Unit.cpp # src/server/game/Entities/Unit/Unit.h # src/server/game/Spells/Auras/SpellAuraEffects.cpp # src/server/game/Spells/SpellEffects.cpp # src/server/scripts/Commands/cs_misc.cpp --- src/server/game/Spells/SpellEffects.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'src/server/game/Spells/SpellEffects.cpp') diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index b36bc5ccddc..7ed906c3247 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -400,18 +400,21 @@ void Spell::EffectEnvironmentalDMG(SpellEffIndex /*effIndex*/) if (!unitTarget || !unitTarget->IsAlive()) return; - uint32 absorb = 0; - uint32 resist = 0; - - m_caster->CalcAbsorbResist(unitTarget, m_spellInfo->GetSchoolMask(), SPELL_DIRECT_DAMAGE, damage, &absorb, &resist, m_spellInfo); - SpellNonMeleeDamage log(m_caster, unitTarget, m_spellInfo->Id, m_SpellVisual, m_spellInfo->GetSchoolMask(), m_castId); - log.damage = damage - absorb - resist; - log.absorb = absorb; - log.resist = resist; + // CalcAbsorbResist already in Player::EnvironmentalDamage if (unitTarget->GetTypeId() == TYPEID_PLAYER) unitTarget->ToPlayer()->EnvironmentalDamage(DAMAGE_FIRE, damage); + else + { + DamageInfo damageInfo(m_caster, unitTarget, damage, m_spellInfo, m_spellInfo->GetSchoolMask(), SPELL_DIRECT_DAMAGE, BASE_ATTACK); + m_caster->CalcAbsorbResist(damageInfo); - m_caster->SendSpellNonMeleeDamageLog(&log); + SpellNonMeleeDamage log(m_caster, unitTarget, m_spellInfo->Id, m_SpellVisual, m_spellInfo->GetSchoolMask(), m_castId); + log.damage = damage; + log.absorb = damageInfo.GetAbsorb(); + log.resist = damageInfo.GetResist(); + + m_caster->SendSpellNonMeleeDamageLog(&log); + } } void Spell::EffectSchoolDMG(SpellEffIndex effIndex) -- cgit v1.2.3