From ed0b621d1569a14174a9802027b68dbe4329da69 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 13 Feb 2024 00:46:42 +0100 Subject: Core/Auras: Allow SPELL_AURA_MECHANIC_IMMUNITY_MASK to apply aoe/chain targeting immunity --- src/server/game/Spells/Spell.cpp | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) (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 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; } } } -- cgit v1.2.3