Implement clientless transports, Lua reload and same-map portals
Add native transport recording and execution with grid lifecycle handling, clientless teleport acknowledgements, and regression tests. Support targeted same-map portal imports and preserve disabled taxi nodes. Document live transport and portal verification and the remaining portal inventory.
This commit is contained in:
1 parent
01a9ba4b0b
commit
1164a72ea3
40 files changed
+4533
-163
No files matched your search
@@ -116,6 +116,27 @@ void Map::LoadAllCells()
|
||||
LoadGrid((cellX + 0.5f - CENTER_GRID_CELL_ID) * SIZE_OF_GRID_CELL, (cellY + 0.5f - CENTER_GRID_CELL_ID) * SIZE_OF_GRID_CELL);
|
||||
}
|
||||
|
||||
void Map::LoadTransportGameObjectGrids()
|
||||
{
|
||||
auto spawns = sObjectMgr->GetTransportGameObjectSpawns(GetId());
|
||||
if (!spawns)
|
||||
return;
|
||||
|
||||
uint32 grids = 0;
|
||||
for (ObjectGuid::LowType spawnId : *spawns)
|
||||
{
|
||||
GameObjectData const* data = sObjectMgr->GetGameObjectData(spawnId);
|
||||
if (!data || data->mapId != GetId() || !(data->spawnMask & (1u << GetSpawnMode())))
|
||||
continue;
|
||||
// Use the normal loader: respawns, pools, phases and spawn groups retain
|
||||
// their existing rules. Loading an already loaded grid is idempotent.
|
||||
if (EnsureGridLoaded(Cell(data->spawnPoint.GetPositionX(), data->spawnPoint.GetPositionY())))
|
||||
++grids;
|
||||
}
|
||||
TC_LOG_INFO("server.loading", "Initialized transport GameObject grids: map=%u instance=%u grids=%u candidates=%u",
|
||||
GetId(), GetInstanceId(), grids, uint32(spawns->size()));
|
||||
}
|
||||
|
||||
void Map::InitStateMachine()
|
||||
{
|
||||
si_GridStates[GRID_STATE_INVALID] = new InvalidState();
|
||||
|
||||
Reference in new issue
Block a user