aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-02-06 12:34:29 +0100
committerShauren <shauren.trinity@gmail.com>2023-02-06 12:34:29 +0100
commit99320464997a5411b7245cb952eaf6cdf8a2a978 (patch)
treec6becec24b41769edb903ddfdf1f4e2988cadef0
parent592e01cf7a5d7b6f7ec63d30edc09dd9d4062b62 (diff)
Core/Spells: Implemented SPELL_EFFECT_REMOVE_AURA_BY_SPELL_LABEL
-rw-r--r--src/server/game/Spells/Spell.h1
-rw-r--r--src/server/game/Spells/SpellEffects.cpp16
2 files changed, 16 insertions, 1 deletions
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h
index acaf5bd2487..be421b21182 100644
--- a/src/server/game/Spells/Spell.h
+++ b/src/server/game/Spells/Spell.h
@@ -373,6 +373,7 @@ class TC_GAME_API Spell
void EffectRemoveTalent();
void EffectDestroyItem();
void EffectLearnGarrisonBuilding();
+ void EffectRemoveAuraBySpellLabel();
void EffectCreateGarrison();
void EffectCreateConversation();
void EffectCancelConversation();
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 780445220f1..e2aca6adda0 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -298,7 +298,7 @@ NonDefaultConstructible<SpellEffectHandlerFn> SpellEffectHandlers[TOTAL_SPELL_EF
&Spell::EffectUnused, //209 SPELL_EFFECT_209
&Spell::EffectLearnGarrisonBuilding, //210 SPELL_EFFECT_LEARN_GARRISON_BUILDING
&Spell::EffectNULL, //211 SPELL_EFFECT_LEARN_GARRISON_SPECIALIZATION
- &Spell::EffectNULL, //212 SPELL_EFFECT_REMOVE_AURA_BY_SPELL_LABEL
+ &Spell::EffectRemoveAuraBySpellLabel, //212 SPELL_EFFECT_REMOVE_AURA_BY_SPELL_LABEL
&Spell::EffectJumpDest, //213 SPELL_EFFECT_JUMP_DEST_2
&Spell::EffectCreateGarrison, //214 SPELL_EFFECT_CREATE_GARRISON
&Spell::EffectNULL, //215 SPELL_EFFECT_UPGRADE_CHARACTER_SPELLS
@@ -5251,6 +5251,20 @@ void Spell::EffectLearnGarrisonBuilding()
garrison->LearnBlueprint(effectInfo->MiscValue);
}
+void Spell::EffectRemoveAuraBySpellLabel()
+{
+ if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
+ return;
+
+ if (!unitTarget)
+ return;
+
+ unitTarget->RemoveAppliedAuras([&](AuraApplication const* aurApp)
+ {
+ return aurApp->GetBase()->GetSpellInfo()->HasLabel(effectInfo->MiscValue);
+ });
+}
+
void Spell::EffectCreateGarrison()
{
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)