diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2016-10-26 02:16:11 -0300 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-10-15 16:59:56 +0200 |
| commit | fe2e3b67a86be5a486c5bfd79d09986b9092a872 (patch) | |
| tree | 400abfa2e9e8c9fad1ab5d7dedb7c850426051f9 /src/server/game/Spells/SpellEffects.cpp | |
| parent | a932e448478c48f1c8f96502b73ed49e2bd4c73d (diff) | |
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
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
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) |
