Core/GameObjects: Transport (type 11) improvements

Port From (https://github.com/TrinityCore/TrinityCore/commit/630b60eb0dcd3d9ce41582664ab822b049365431)
This commit is contained in:
hondacrx
2022-06-03 16:20:41 -04:00
parent e65ce31742
commit 40444525b2
30 changed files with 807 additions and 377 deletions
+22 -16
View File
@@ -110,31 +110,37 @@ namespace Game
if (plrMover)
{
if (!plrMover.GetTransport())
if (plrMover.GetTransport() == null)
{
Transport transport = plrMover.GetMap().GetTransport(movementInfo.transport.guid);
if (transport)
transport.AddPassenger(plrMover);
GameObject go = plrMover.GetMap().GetGameObject(movementInfo.transport.guid);
if (go != null)
{
ITransport transport = go.ToTransportBase();
if (transport != null)
transport.AddPassenger(plrMover);
}
}
else if (plrMover.GetTransport().GetGUID() != movementInfo.transport.guid)
else if (plrMover.GetTransport().GetTransportGUID() != movementInfo.transport.guid)
{
plrMover.GetTransport().RemovePassenger(plrMover);
Transport transport = plrMover.GetMap().GetTransport(movementInfo.transport.guid);
if (transport)
transport.AddPassenger(plrMover);
GameObject go = plrMover.GetMap().GetGameObject(movementInfo.transport.guid);
if (go != null)
{
ITransport transport = go.ToTransportBase();
if (transport != null)
transport.AddPassenger(plrMover);
else
movementInfo.ResetTransport();
}
else
movementInfo.ResetTransport();
}
}
if (!mover.GetTransport() && !mover.GetVehicle())
{
GameObject go = mover.GetMap().GetGameObject(movementInfo.transport.guid);
if (!go || go.GetGoType() != GameObjectTypes.Transport)
movementInfo.transport.Reset();
}
if (mover.GetTransport() == null && !mover.GetVehicle())
movementInfo.transport.Reset();
}
else if (plrMover && plrMover.GetTransport()) // if we were on a transport, leave
else if (plrMover && plrMover.GetTransport() != null) // if we were on a transport, leave
plrMover.GetTransport().RemovePassenger(plrMover);
// fall damage generation (ignore in flight case that can be triggered also at lags in moment teleportation to another map).
@@ -531,7 +537,7 @@ namespace Game
return;
}
if (!GetPlayer().GetTransport() && Math.Abs(GetPlayer().GetSpeed(move_type) - packet.Speed) > 0.01f)
if (GetPlayer().GetTransport() == null && Math.Abs(GetPlayer().GetSpeed(move_type) - packet.Speed) > 0.01f)
{
if (GetPlayer().GetSpeed(move_type) > packet.Speed) // must be greater - just correct
{