aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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)