aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOvahlord <dreadkiller@gmx.de>2023-11-15 15:14:54 +0100
committerOvahlord <dreadkiller@gmx.de>2023-11-15 15:14:54 +0100
commit1aa9346a99aff0247340a861121d11fe005789a4 (patch)
tree7b0c39044ce9c745656d6bee04510903da0fa84f /src
parentf2f0c266493ee8f49d497d60cd30cfd3a3c65b13 (diff)
Core/Transports: prevent transports from spawning on non-existing maps
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Maps/TransportMgr.cpp23
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];