diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Maps/TransportMgr.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/server/game/Maps/TransportMgr.cpp b/src/server/game/Maps/TransportMgr.cpp index 58b8b7f6342..450171d3b48 100644 --- a/src/server/game/Maps/TransportMgr.cpp +++ b/src/server/game/Maps/TransportMgr.cpp @@ -223,6 +223,29 @@ void TransportMgr::LoadTransportTemplates() if (!goInfo->moTransport.taxiPathID) continue; + if (!sTaxiPathStore.LookupEntry(goInfo->moTransport.taxiPathID)) + { + TC_LOG_ERROR("sql.sql", "Transport {} (name: {}) has an invalid path specified in `gameobject_template`.`Data0` ({}) field, skipped.", entry, goInfo->name.c_str(), goInfo->moTransport.taxiPathID); + continue; + } + + bool hasValidMaps = true; + for (uint32 mapId : _transportTemplates[entry].MapIds) + { + if (!sMapStore.LookupEntry(mapId)) + { + hasValidMaps = false; + break; + } + } + + if (!hasValidMaps) + { + TC_LOG_ERROR("sql.sql", "Transport {} (name: {}) is trying to spawn on a map which does not exist, skipped.", entry, goInfo->name.c_str()); + _transportTemplates.erase(entry); + continue; + } + // paths are generated per template, saves us from generating it again in case of instanced transports TransportTemplate& transport = _transportTemplates[entry]; |