From 6efbe4b00e2da792b6bb3a81cb13ad2d9fc1130a Mon Sep 17 00:00:00 2001 From: hondacrx Date: Mon, 15 Aug 2022 11:40:14 -0400 Subject: [PATCH] Core/Phasing: Fixed terrain swaps appearing on incorrect maps when player is added to a map wilth not meeting its condition but later condition gets satisfied Port From (https://github.com/TrinityCore/TrinityCore/commit/71e885cd4b0098f38ca360a35361a6e867556542) --- Source/Game/Phasing/PhasingHandler.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Source/Game/Phasing/PhasingHandler.cs b/Source/Game/Phasing/PhasingHandler.cs index fedbc45d4..291206c61 100644 --- a/Source/Game/Phasing/PhasingHandler.cs +++ b/Source/Game/Phasing/PhasingHandler.cs @@ -268,19 +268,19 @@ namespace Game obj.GetPhaseShift().UiMapPhaseIds.Clear(); obj.GetSuppressedPhaseShift().VisibleMapIds.Clear(); - foreach (var pair in Global.ObjectMgr.GetTerrainSwaps()) + foreach (var (mapId, visibleMapInfo) in Global.ObjectMgr.GetTerrainSwaps()) { - if (Global.ConditionMgr.IsObjectMeetingNotGroupedConditions(ConditionSourceType.TerrainSwap, pair.Value.Id, srcInfo)) + if (Global.ConditionMgr.IsObjectMeetingNotGroupedConditions(ConditionSourceType.TerrainSwap, visibleMapInfo.Id, srcInfo)) { - if (pair.Key == obj.GetMapId()) - phaseShift.AddVisibleMapId(pair.Value.Id, pair.Value); + if (mapId == obj.GetMapId()) + phaseShift.AddVisibleMapId(visibleMapInfo.Id, visibleMapInfo); // ui map is visible on all maps - foreach (uint uiMapPhaseId in pair.Value.UiMapPhaseIDs) + foreach (uint uiMapPhaseId in visibleMapInfo.UiMapPhaseIDs) phaseShift.AddUiMapPhaseId(uiMapPhaseId); } - else - suppressedPhaseShift.AddVisibleMapId(pair.Value.Id, pair.Value); + else if(mapId == obj.GetMapId()) + suppressedPhaseShift.AddVisibleMapId(visibleMapInfo.Id, visibleMapInfo); } UpdateVisibilityIfNeeded(obj, false, true);