Core/Transports: Localized transport objects within each map

Port From (https://github.com/TrinityCore/TrinityCore/commit/cace41449771bbe692e1a45c4d38b15a12f6496e)
This commit is contained in:
hondacrx
2022-06-16 14:08:22 -04:00
parent 30525b4567
commit 37d62e3a32
9 changed files with 208 additions and 208 deletions
+13
View File
@@ -255,6 +255,11 @@ namespace Game
Map oldMap = player.GetMap();
Map newMap = GetPlayer().GetTeleportDestInstanceId().HasValue ? Global.MapMgr.FindMap(loc.GetMapId(), GetPlayer().GetTeleportDestInstanceId().Value) : Global.MapMgr.CreateMap(loc.GetMapId(), GetPlayer());
MovementInfo.TransportInfo transportInfo = player.m_movementInfo.transport;
ITransport transport = player.GetTransport();
if (transport != null)
transport.RemovePassenger(player);
if (player.IsInWorld)
{
Log.outError(LogFilter.Network, $"Player (Name {player.GetName()}) is still in world when teleported from map {oldMap.GetId()} to new map {loc.GetMapId()}");
@@ -286,6 +291,14 @@ namespace Game
if (!seamlessTeleport)
player.SendInitialPacketsBeforeAddToMap();
// move player between transport copies on each map
Transport newTransport = newMap.GetTransport(transportInfo.guid);
if (newTransport != null)
{
player.m_movementInfo.transport = transportInfo;
newTransport.AddPassenger(player);
}
if (!player.GetMap().AddPlayerToMap(player, !seamlessTeleport))
{
Log.outError(LogFilter.Network, $"WORLD: failed to teleport player {player.GetName()} ({player.GetGUID()}) to map {loc.GetMapId()} ({(newMap ? newMap.GetMapName() : "Unknown")}) because of unknown reason!");