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
committerShauren <shauren.trinity@gmail.com>2024-05-25 22:05:53 +0200
commit27e23600bb9c47440cca12a4ddaa4627166b0327 (patch)
treeb191fc2ae9179a4cefe769610db0cbac7b027078 /src/server/game/Globals/ObjectMgr.cpp
parent5b130cfb4253a94c08ff807e7f28e988651d2476 (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
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 9f8ffeb4d8e..838f5f575c1 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -7011,8 +7011,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
{
@@ -7025,9 +7025,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());