From 572be7d69f8b9a0100d95ecaa045247e574c38a4 Mon Sep 17 00:00:00 2001 From: Andrew <47818697+Nyeriah@users.noreply.github.com> Date: Fri, 18 Oct 2024 08:43:51 -0300 Subject: [PATCH] =?UTF-8?q?fix(Core/Spells):=20SPELL=5FATTR1=5FIMMUNITY=5F?= =?UTF-8?q?PURGES=5FEFFECT=20should=20not=20remov=E2=80=A6=20(#20032)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(Core/Spells): SPELL_ATTR1_IMMUNITY_PURGES_EFFECT should not remove spells with no immunities --- src/server/game/Entities/Unit/Unit.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 45f38d2fc..8e0f5667a 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5122,6 +5122,9 @@ void Unit::RemoveAurasByType(AuraType auraType, ObjectGuid casterGUID, Aura* exc if (aura != except && (!casterGUID || aura->GetCasterGUID() == casterGUID) && ((negative && !aurApp->IsPositive()) || (positive && aurApp->IsPositive()))) { + if (aura->GetSpellInfo()->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES)) + continue; + uint32 removedAuras = m_removedAurasCount; RemoveAura(aurApp); if (m_removedAurasCount > removedAuras + 1) @@ -5257,11 +5260,12 @@ void Unit::RemoveAurasWithMechanic(uint32 mechanic_mask, AuraRemoveMode removemo Aura const* aura = iter->second->GetBase(); if (!except || aura->GetId() != except) { - if (aura->GetSpellInfo()->GetAllEffectsMechanicMask() & mechanic_mask) - { - RemoveAura(iter, removemode); - continue; - } + if (!aura->GetSpellInfo()->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES)) + if (aura->GetSpellInfo()->GetAllEffectsMechanicMask() & mechanic_mask) + { + RemoveAura(iter, removemode); + continue; + } } ++iter; }