diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-02-06 12:34:29 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-02-06 12:34:29 +0100 |
commit | 99320464997a5411b7245cb952eaf6cdf8a2a978 (patch) | |
tree | c6becec24b41769edb903ddfdf1f4e2988cadef0 /src | |
parent | 592e01cf7a5d7b6f7ec63d30edc09dd9d4062b62 (diff) |
Core/Spells: Implemented SPELL_EFFECT_REMOVE_AURA_BY_SPELL_LABEL
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/Spell.h | 1 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 16 |
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) |