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)
This commit is contained in:
hondacrx
2022-08-15 11:40:14 -04:00
parent 24befcee13
commit 6efbe4b00e
+7 -7
View File
@@ -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);