diff options
| author | Golrag <golrag.jeremy@gmail.com> | 2024-05-25 21:05:14 +0200 |
|---|---|---|
| committer | Ovahlord <dreadkiller@gmx.de> | 2024-06-20 01:02:30 +0200 |
| commit | 3619b6e6ff0a23d818af76627416e237a6c0c001 (patch) | |
| tree | 9d984b511fe673d73afc1307d97f2542e9f171bc /src/server/game/Globals/ObjectMgr.cpp | |
| parent | c7374b620ba1c8d89203242614e9c0aba67b6461 (diff) | |
Core/Players: Extended world_safe_locs with transport guid - this allows teleporting to a different map directly to a transport and having graveyards on transports
(cherry picked from commit 27e23600bb9c47440cca12a4ddaa4627166b0327)
# Conflicts:
# sql/old/4.4.x/world/24021_2024_06_02/2024_05_25_08_world.sql
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 2ba5a758db3..d7cb4e739bd 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -7015,8 +7015,8 @@ void ObjectMgr::LoadWorldSafeLocs() { uint32 oldMSTime = getMSTime(); - // 0 1 2 3 4 5 - if (QueryResult result = WorldDatabase.Query("SELECT ID, MapID, LocX, LocY, LocZ, Facing FROM world_safe_locs")) + // 0 1 2 3 4 5 6 + if (QueryResult result = WorldDatabase.Query("SELECT ID, MapID, LocX, LocY, LocZ, Facing, TransportSpawnId FROM world_safe_locs")) { do { @@ -7029,9 +7029,22 @@ void ObjectMgr::LoadWorldSafeLocs() continue; } + Optional<ObjectGuid::LowType> transportSpawnId = {}; + if (!fields[6].IsNull()) + { + if (!sTransportMgr->GetTransportSpawn(fields[6].GetUInt64())) + { + TC_LOG_ERROR("sql.sql", "World location (ID: {}) has a invalid transportSpawnID {}, skipped.", id, fields[6].GetUInt64()); + continue; + } + + transportSpawnId = fields[6].GetUInt64(); + } + WorldSafeLocsEntry& worldSafeLocs = _worldSafeLocs[id]; worldSafeLocs.ID = id; worldSafeLocs.Loc.WorldRelocate(loc); + worldSafeLocs.TransportSpawnId = transportSpawnId; } while (result->NextRow()); |
