Transports¶
Boats and zeppelins between continents are moving game objects
(src/game/Transports/TransportMgr.cpp). Their routes come from client data; SQL only tweaks
timing.
How a Transport Is Assembled¶
- Template -
gameobject_templateentry withtype = 15(MO_TRANSPORT - boats/zeppelins). Itsdata0holds the taxi path id. - Route -
TransportMgr::GenerateWaypointsreads that path from clientTaxiPathNode.dbc(sTaxiPathNodesByPath) and builds a smoothed spline with map-change teleport points between continents. - Timing - stop frames, acceleration and cruise segments are computed automatically from path geometry.
- Override -
transportsmay correct the result: a non-zeroperiodreplaces the computed round-trip duration. Rows are selected per client build.
Passengers¶
- Players and NPCs board by walking onto the object; their movement updates stream relative to
the transport while attached (
GenericTransport::AddFollower…). - Disembarking happens automatically at stop frames or on logout.
- Being on a transport affects spell/LOs handling - transports count as the passenger's map position anchor.
Adding / Fixing a Route¶
You cannot draw new routes in SQL: they require a taxi path in the client data. In SQL you can:
- point a custom GO template of type 15 (MO_TRANSPORT) at an existing taxi path id,
- adjust the cycle time via
transports.period, - gate variants per client build (
buildcolumn).