aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOvahlord <dreadkiller@gmx.de>2024-03-10 06:16:59 +0100
committerOvahlord <dreadkiller@gmx.de>2024-03-10 06:16:59 +0100
commit263bae78eeee729670294dfb69a563e569e786b6 (patch)
tree6830f0fbdfdfa45773099795100c68851625d913 /src
parent850255803733f72b6e64d2df8368bf60c2198796 (diff)
Core/Transports: no longer allow transports to spawn on invalid 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];