diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-02-13 00:46:42 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2024-02-13 00:46:42 +0100 |
| commit | ed0b621d1569a14174a9802027b68dbe4329da69 (patch) | |
| tree | 1e6211d6f30dd433840ddd611d9fd8ffbe3a957d /src/server/game/Spells/Spell.cpp | |
| parent | 96191b9ce259df7a234c55d06b97bb5b8ee0848f (diff) | |
Core/Auras: Allow SPELL_AURA_MECHANIC_IMMUNITY_MASK to apply aoe/chain targeting immunity
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 6bbea868124..2aed9e672b8 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -9217,24 +9217,20 @@ bool WorldObjectSpellAreaTargetCheck::operator()(WorldObject* target) const if (!isInsideCylinder) return false; - if (Creature* creatureTarget = target->ToCreature()) + if (Unit* unitTarget = target->ToUnit()) { - if (CreatureImmunities const* immunities = SpellMgr::GetCreatureImmunities(creatureTarget->GetCreatureTemplate()->CreatureImmunitiesId)) + switch (_searchReason) { - switch (_searchReason) - { - case WorldObjectSpellAreaTargetSearchReason::Area: - if (immunities->ImmuneAoE) - return false; - break; - case WorldObjectSpellAreaTargetSearchReason::Chain: - if (immunities->ImmuneChain) - return false; - break; - default: - break; - } - + case WorldObjectSpellAreaTargetSearchReason::Area: + if (unitTarget->GetSpellOtherImmunityMask().HasFlag(SpellOtherImmunity::AoETarget)) + return false; + break; + case WorldObjectSpellAreaTargetSearchReason::Chain: + if (unitTarget->GetSpellOtherImmunityMask().HasFlag(SpellOtherImmunity::ChainTarget)) + return false; + break; + default: + break; } } } |
