aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGildor <gildor55@gmail.com>2020-04-18 18:04:45 +0200
committerShauren <shauren.trinity@gmail.com>2022-01-01 20:01:16 +0100
commitaa38443cf388799a5debd9cbcb787f882b840530 (patch)
treef2a4d273d1e1c3a6d0c3d0cd90bab6767720febb /src
parent97ed31fe76e4e240354b1ff1af4405af487dee3b (diff)
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)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Spell.cpp6
1 files changed, 5 insertions, 1 deletions
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<DamageInfo> spellDamageInfo;
std::unique_ptr<HealInfo> 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);