diff options
author | Ovahlord <dreadkiller@gmx.de> | 2024-03-10 06:16:59 +0100 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-03-10 06:16:59 +0100 |
commit | 263bae78eeee729670294dfb69a563e569e786b6 (patch) | |
tree | 6830f0fbdfdfa45773099795100c68851625d913 /src | |
parent | 850255803733f72b6e64d2df8368bf60c2198796 (diff) |
Core/Transports: no longer allow transports to spawn on invalid 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]; |