From aa38443cf388799a5debd9cbcb787f882b840530 Mon Sep 17 00:00:00 2001 From: Gildor Date: Sat, 18 Apr 2020 18:04:45 +0200 Subject: Core/Spells: Improve check for non damage/heal spells in Spell::TargetInfo::DoDamageAndTriggers (#24467) * this prevent cases like full absorb damage that override proper hitMask (cherry picked from commit 247151b470e6b4950c8d63094c1b8fbf797ad246) --- src/server/game/Spells/Spell.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 656865a5ccc..27537aaee41 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2582,10 +2582,12 @@ void Spell::TargetInfo::DoDamageAndTriggers(Spell* spell) // All calculated do it! // Do healing + bool hasHealing = false; std::unique_ptr spellDamageInfo; std::unique_ptr healInfo; if (spell->m_healing > 0) { + hasHealing = true; uint32 addhealth = spell->m_healing; if (IsCrit) { @@ -2604,8 +2606,10 @@ void Spell::TargetInfo::DoDamageAndTriggers(Spell* spell) } // Do damage + bool hasDamage = false; if (spell->m_damage > 0) { + hasDamage = true; // Fill base damage struct (unitTarget - is real spell target) SpellNonMeleeDamage damageInfo(caster, spell->unitTarget, spell->m_spellInfo, spell->m_SpellVisual, spell->m_spellSchoolMask, spell->m_castId); // Check damage immunity @@ -2646,7 +2650,7 @@ void Spell::TargetInfo::DoDamageAndTriggers(Spell* spell) } // Passive spell hits/misses or active spells only misses (only triggers) - if (spell->m_damage <= 0 && spell->m_healing <= 0) + if (!hasHealing && !hasDamage) { // Fill base damage struct (unitTarget - is real spell target) SpellNonMeleeDamage damageInfo(caster, spell->unitTarget, spell->m_spellInfo, spell->m_SpellVisual, spell->m_spellSchoolMask); -- cgit v1.2.3