diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 6869b8a14de..07ecb4052b3 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -354,6 +354,8 @@ class Spell void EffectGiveCurrency(SpellEffIndex effIndex); void EffectResurrectWithAura(SpellEffIndex effIndex); void EffectCreateAreaTrigger(SpellEffIndex effIndex); + void EffectUpdatePlayerPhase(SpellEffIndex effIndex); + void EffectUpdateZoneAurasAndPhases(SpellEffIndex effIndex); typedef std::set UsedSpellMods; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 7a2c0c7d496..5571b53bc96 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -227,10 +227,10 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]= &Spell::EffectRemoveAura, //164 SPELL_EFFECT_REMOVE_AURA &Spell::EffectDamageFromMaxHealthPCT, //165 SPELL_EFFECT_DAMAGE_FROM_MAX_HEALTH_PCT &Spell::EffectGiveCurrency, //166 SPELL_EFFECT_GIVE_CURRENCY - &Spell::EffectNULL, //167 SPELL_EFFECT_167 + &Spell::EffectUpdatePlayerPhase, //167 SPELL_EFFECT_UPDATE_PLAYER_PHASE &Spell::EffectNULL, //168 SPELL_EFFECT_168 &Spell::EffectNULL, //169 SPELL_EFFECT_DESTROY_ITEM - &Spell::EffectNULL, //170 SPELL_EFFECT_170 + &Spell::EffectUpdateZoneAurasAndPhases, //170 SPELL_EFFECT_UPDATE_ZONE_AURAS_AND_PHASES &Spell::EffectNULL, //171 SPELL_EFFECT_171 &Spell::EffectResurrectWithAura, //172 SPELL_EFFECT_RESURRECT_WITH_AURA &Spell::EffectUnlockGuildVaultTab, //173 SPELL_EFFECT_UNLOCK_GUILD_VAULT_TAB @@ -5764,3 +5764,25 @@ void Spell::EffectCreateAreaTrigger(SpellEffIndex effIndex) if (!areaTrigger->CreateAreaTrigger(m_caster->GetMap()->GenerateLowGuid(), triggerEntry, GetCaster(), GetSpellInfo(), pos)) delete areaTrigger; } + +void Spell::EffectUpdatePlayerPhase(SpellEffIndex /*effIndex*/) +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) + return; + + if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) + return; + + unitTarget->UpdateAreaPhase(); +} + +void Spell::EffectUpdateZoneAurasAndPhases(SpellEffIndex /*effIndex*/) +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) + return; + + if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) + return; + + unitTarget->ToPlayer()->UpdateAreaDependentAuras(unitTarget->GetAreaId()); +}