From 7ed15235327fa3ba2351f81324a272d29b0af51d Mon Sep 17 00:00:00 2001 From: Meji Date: Sun, 13 Apr 2025 00:38:21 +0200 Subject: [PATCH] Scripts/Spells: Implemented generic script to update phases on aura application/removal --- src/server/scripts/Spells/spell_generic.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index c414d8100e..f2186a1d07 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -41,6 +41,7 @@ #include "NPCPackets.h" #include "ObjectMgr.h" #include "Pet.h" +#include "PhasingHandler.h" #include "ReputationMgr.h" #include "PathGenerator.h" #include "SkillDiscovery.h" @@ -5555,6 +5556,25 @@ struct at_gen_spatial_rift : AreaTriggerAI } }; +class spell_gen_force_phase_update : public AuraScript +{ + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) const + { + PhasingHandler::OnConditionChange(GetTarget()); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) const + { + PhasingHandler::OnConditionChange(GetTarget()); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_gen_force_phase_update::AfterApply, EFFECT_FIRST_FOUND, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_gen_force_phase_update::AfterRemove, EFFECT_FIRST_FOUND, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_generic_spell_scripts() { RegisterSpellScript(spell_gen_absorb0_hitlimit1); @@ -5740,4 +5760,5 @@ void AddSC_generic_spell_scripts() RegisterSpellScript(spell_gen_saddlechute); RegisterSpellScript(spell_gen_spatial_rift); RegisterAreaTriggerAI(at_gen_spatial_rift); + RegisterSpellScript(spell_gen_force_phase_update); }