From f636141345a98569840548372dbb6030299d91b3 Mon Sep 17 00:00:00 2001 From: MitchesD Date: Wed, 18 May 2016 20:06:47 +0200 Subject: Core/Phase: phase_area table now support even parent area (known as zone) Closes https://github.com/TrinityCore/TrinityCore/issues/17025 --- src/server/game/Entities/Object/Object.cpp | 8 ++++---- src/server/game/Entities/Object/Object.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src/server/game/Entities/Object') diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 1fe1b3b73c4..f9fa1b3aeb6 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2809,16 +2809,16 @@ bool WorldObject::HasInPhaseList(uint32 phase) // Updates Area based phases, does not remove phases from auras // Phases from gm commands are not taken into calculations, they can be lost!! -void WorldObject::UpdateAreaPhase() +void WorldObject::UpdateAreaAndZonePhase() { bool updateNeeded = false; - PhaseInfo const& phases = sObjectMgr->GetAreaPhases(); + PhaseInfo const& phases = sObjectMgr->GetAreaAndZonePhases(); for (PhaseInfo::const_iterator itr = phases.begin(); itr != phases.end(); ++itr) { - uint32 areaId = itr->first; + uint32 areaOrZoneId = itr->first; for (PhaseInfoStruct const& phase : itr->second) { - if (areaId == GetAreaId()) + if (areaOrZoneId == GetAreaId() || areaOrZoneId == GetZoneId()) { if (sConditionMgr->IsObjectMeetToConditions(this, phase.Conditions)) { diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index dfb2647d760..503555037e1 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -453,7 +453,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation virtual void SetPhaseMask(uint32 newPhaseMask, bool update); virtual bool SetInPhase(uint32 id, bool update, bool apply); void CopyPhaseFrom(WorldObject* obj, bool update = false); - void UpdateAreaPhase(); + void UpdateAreaAndZonePhase(); void ClearPhases(bool update = false); void RebuildTerrainSwaps(); void RebuildWorldMapAreaSwaps(); -- cgit v1.2.3