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:
@@ -268,19 +268,19 @@ namespace Game
|
|||||||
obj.GetPhaseShift().UiMapPhaseIds.Clear();
|
obj.GetPhaseShift().UiMapPhaseIds.Clear();
|
||||||
obj.GetSuppressedPhaseShift().VisibleMapIds.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())
|
if (mapId == obj.GetMapId())
|
||||||
phaseShift.AddVisibleMapId(pair.Value.Id, pair.Value);
|
phaseShift.AddVisibleMapId(visibleMapInfo.Id, visibleMapInfo);
|
||||||
|
|
||||||
// ui map is visible on all maps
|
// ui map is visible on all maps
|
||||||
foreach (uint uiMapPhaseId in pair.Value.UiMapPhaseIDs)
|
foreach (uint uiMapPhaseId in visibleMapInfo.UiMapPhaseIDs)
|
||||||
phaseShift.AddUiMapPhaseId(uiMapPhaseId);
|
phaseShift.AddUiMapPhaseId(uiMapPhaseId);
|
||||||
}
|
}
|
||||||
else
|
else if(mapId == obj.GetMapId())
|
||||||
suppressedPhaseShift.AddVisibleMapId(pair.Value.Id, pair.Value);
|
suppressedPhaseShift.AddVisibleMapId(visibleMapInfo.Id, visibleMapInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateVisibilityIfNeeded(obj, false, true);
|
UpdateVisibilityIfNeeded(obj, false, true);
|
||||||
|
|||||||
Reference in New Issue
Block a user