From 4474655779fed4b5fa184ab8eca2cd98ca0bcda0 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Mon, 25 Feb 2019 00:39:28 +0100 Subject: [PATCH] Core/Objects: SetZoneScript will now use map zone coordinates instead of using the cached zone id --- src/server/game/Entities/Creature/Creature.cpp | 4 ++-- src/server/game/Entities/Object/Object.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index c34da5b0fe3..adebcf62d8d 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1047,6 +1047,8 @@ bool Creature::Create(ObjectGuid::LowType guidlow, Map* map, uint32 /*phaseMask* //! Need to be called after LoadCreaturesAddon - MOVEMENTFLAG_HOVER is set there m_positionZ += GetHoverOffset(); + UpdatePositionData(); + LastUsedScriptID = GetScriptId(); if (IsSpiritHealer() || IsSpiritGuide() || (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_GHOST_VISIBILITY)) @@ -1064,8 +1066,6 @@ bool Creature::Create(ObjectGuid::LowType guidlow, Map* map, uint32 /*phaseMask* ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK_DEST, true); } - UpdatePositionData(); - return true; } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index ae8d5a8a781..5354ec59e44 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2168,10 +2168,12 @@ void WorldObject::SetZoneScript() m_zoneScript = (ZoneScript*)((InstanceMap*)map)->GetInstanceScript(); else if (!map->IsBattlegroundOrArena()) { - if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(GetZoneId())) + uint32 zoneId = GetMap()->GetZoneId(GetPhaseShift(), GetPosition()); + + if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(zoneId)) m_zoneScript = bf; else - m_zoneScript = sOutdoorPvPMgr->GetZoneScript(GetZoneId()); + m_zoneScript = sOutdoorPvPMgr->GetZoneScript(zoneId); } } }