aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Globals/ObjectMgr.cpp
diff options
context:
space:
mode:
authorGolrag <golrag.jeremy@gmail.com>2024-05-25 21:05:14 +0200
committerOvahlord <dreadkiller@gmx.de>2024-06-20 01:02:30 +0200
commit3619b6e6ff0a23d818af76627416e237a6c0c001 (patch)
tree9d984b511fe673d73afc1307d97f2542e9f171bc /src/server/game/Globals/ObjectMgr.cpp
parentc7374b620ba1c8d89203242614e9c0aba67b6461 (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.cpp17
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());