aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanVS <33371360+DanVS@users.noreply.github.com>2018-03-31 15:13:33 +0300
committerShauren <shauren.trinity@gmail.com>2021-09-23 20:55:30 +0200
commitbc34fd2f6575aedb54a3779518a95671d225594a (patch)
treebb5dd88a0e27ea6fd282ef737ab3b0e1baa7acf7
parent2e3f387d6117c627fcdf2b114e83c277ad28f9e3 (diff)
[3.3.5] Scripts/Spells: handle auras on unequipping scripted items (#21643)
Ref: #20415 (cherry picked from commit c2f16579888bb7973c1d32ad9efe6058acafb8d6)
-rw-r--r--src/server/scripts/Spells/spell_item.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index 33f61663b07..37d2664ec72 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -257,9 +257,15 @@ class spell_item_anger_capacitor : public SpellScriptLoader
caster->CastSpell(target, spellId, aurEff);
}
+ void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_MOTE_OF_ANGER);
+ }
+
void Register() override
{
OnEffectProc += AuraEffectProcFn(spell_item_anger_capacitor_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_item_anger_capacitor_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
@@ -1774,10 +1780,16 @@ class spell_item_shadowmourne : public AuraScript
}
}
+ void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(SPELL_SHADOWMOURNE_SOUL_FRAGMENT);
+ }
+
void Register() override
{
DoCheckProc += AuraCheckProcFn(spell_item_shadowmourne::CheckProc);
OnEffectProc += AuraEffectProcFn(spell_item_shadowmourne::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_item_shadowmourne::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
@@ -3432,9 +3444,15 @@ public:
caster->CastSpell(target, _triggerSpell, aurEff);
}
+ void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAurasDueToSpell(_stackSpell);
+ }
+
void Register() override
{
OnEffectProc += AuraEffectProcFn(spell_item_trinket_stack_AuraScript::HandleProc, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_item_trinket_stack_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
}
uint32 _stackSpell;