aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-04-17 00:04:41 +0200
committerShauren <shauren.trinity@gmail.com>2025-04-17 00:04:41 +0200
commit96026bfc58faa65aeef5cb1430aa2e442a43b115 (patch)
treed146353da773f663ed7ef13c89b1474f935acde8 /src/server/game/Entities/Object
parent821ecf8fa3b6b922ba178cde7593ef5d84ef734b (diff)
Core/Transports: Fixed clientside position of stoppable transports
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Object.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 21e0261ba70..8dda5aab212 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -658,9 +658,11 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags, Playe
data->FlushBits();
if (transport)
{
- *data << uint32(transport->GetTransportPeriod());
- *data << uint32(transport->GetTimer());
- data->WriteBit(transport->IsStopRequested());
+ uint32 period = transport->GetTransportPeriod();
+
+ *data << uint32((((int64(transport->GetTimer()) - int64(GameTime::GetGameTimeMS())) % period) + period) % period); // TimeOffset
+ *data << uint32(transport->GetNextStopTimestamp().value_or(0));
+ data->WriteBit(transport->GetNextStopTimestamp().has_value());
data->WriteBit(transport->IsStopped());
data->WriteBit(false);
data->FlushBits();