aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-02-13 00:46:42 +0100
committerShauren <shauren.trinity@gmail.com>2024-02-13 00:46:42 +0100
commited0b621d1569a14174a9802027b68dbe4329da69 (patch)
tree1e6211d6f30dd433840ddd611d9fd8ffbe3a957d /src/server/game/Spells/Spell.cpp
parent96191b9ce259df7a234c55d06b97bb5b8ee0848f (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.cpp28
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;
}
}
}