From e6d6b74f20f2e35cb4ddb60a6b203683cb6a22f6 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Sun, 10 Sep 2017 16:51:53 +0200 Subject: [PATCH] Revert "Core/Player: Resequence Player::UpdateZone some more to hopefully prevent future edge cases like #20289 from occurring." This reverts commit 2fc3ddec1db132da4a8676aca93261aa34fb5b77. --- src/server/game/Entities/Player/Player.cpp | 27 +++++++++++----------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 33f6b4305c..f6f709937c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7396,10 +7396,24 @@ void Player::UpdateZone(uint32 newZone, uint32 newArea) { GetMap()->UpdatePlayerZoneStats(m_zoneUpdateId, newZone); + if (m_zoneUpdateId != newZone) + { + sOutdoorPvPMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId); + sOutdoorPvPMgr->HandlePlayerEnterZone(this, newZone); + sBattlefieldMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId); + sBattlefieldMgr->HandlePlayerEnterZone(this, newZone); + SendInitWorldStates(newZone, newArea); // only if really enters to new zone, not just area change, works strange... + if (Guild* guild = GetGuild()) + guild->UpdateMemberData(this, GUILD_MEMBER_DATA_ZONEID, newZone); + } + // group update if (GetGroup()) SetGroupUpdateFlag(GROUP_UPDATE_FULL); + m_zoneUpdateId = newZone; + m_zoneUpdateTimer = ZONE_UPDATE_INTERVAL; + // zone changed, so area changed as well, update it UpdateArea(newArea); @@ -7465,19 +7479,6 @@ void Player::UpdateZone(uint32 newZone, uint32 newArea) UpdateZoneDependentAuras(newZone); - m_zoneUpdateTimer = ZONE_UPDATE_INTERVAL; - if (m_zoneUpdateId != newZone) - { - m_zoneUpdateId = newZone; - sOutdoorPvPMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId); - sOutdoorPvPMgr->HandlePlayerEnterZone(this, newZone); - sBattlefieldMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId); - sBattlefieldMgr->HandlePlayerEnterZone(this, newZone); - SendInitWorldStates(newZone, newArea); // only if really enters to new zone, not just area change, works strange... - if (Guild* guild = GetGuild()) - guild->UpdateMemberData(this, GUILD_MEMBER_DATA_ZONEID, newZone); - } - UpdateAreaPhase(); }