diff options
| author | Ovahlord <dreadkiller@gmx.de> | 2023-11-15 15:14:54 +0100 |
|---|---|---|
| committer | Ovahlord <dreadkiller@gmx.de> | 2023-11-15 15:14:54 +0100 |
| commit | 1aa9346a99aff0247340a861121d11fe005789a4 (patch) | |
| tree | 7b0c39044ce9c745656d6bee04510903da0fa84f /src | |
| parent | f2f0c266493ee8f49d497d60cd30cfd3a3c65b13 (diff) | |
Core/Transports: prevent transports from spawning on non-existing maps
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]; |
