From 7f103fa6dab3c044d4feae3c8de5d69792fa5d5d Mon Sep 17 00:00:00 2001 From: AconiteX <63141077+AconiteX@users.noreply.github.com> Date: Mon, 7 Jun 2021 16:47:50 -0400 Subject: [PATCH] Track Original OID in Buildout Objects --- .../src/shared/core/ServerBuildoutManager.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/engine/server/library/serverGame/src/shared/core/ServerBuildoutManager.cpp b/engine/server/library/serverGame/src/shared/core/ServerBuildoutManager.cpp index 53e6063c..7bbbb1a9 100755 --- a/engine/server/library/serverGame/src/shared/core/ServerBuildoutManager.cpp +++ b/engine/server/library/serverGame/src/shared/core/ServerBuildoutManager.cpp @@ -662,6 +662,7 @@ void ServerBuildoutManagerNamespace::loadArea(AreaInfo &areaInfo) std::set< int64 > objects; + int64 originalObjId = 0; for (int buildoutRow = 0; buildoutRow < buildoutRowCount; ++buildoutRow) { int64 objId = 0; @@ -726,7 +727,8 @@ void ServerBuildoutManagerNamespace::loadArea(AreaInfo &areaInfo) } else { - objId = areaBuildoutTable.getIntValue(objIdColumn, buildoutRow); + originalObjId = areaBuildoutTable.getIntValue(objIdColumn, buildoutRow); + objId = originalObjId; containerId = areaBuildoutTable.getIntValue(containerColumn, buildoutRow); // with new buildout files, the object id is a random 31-bit negative value @@ -776,6 +778,10 @@ void ServerBuildoutManagerNamespace::loadArea(AreaInfo &areaInfo) if (containerId == 0 || objects.find(containerId) != objects.end()) { + // store original ObjId from buildout table as ObjVar on item for reference in-game if needed + std::string objVars = areaBuildoutTable.getStringValue(objvarsColumn, buildoutRow); + objVars.insert(0, "buildoutObjectId|0|" + std::to_string(originalObjId) + "|"); + areaInfo.buildoutRows.push_back( BuildoutRow( objId, @@ -784,7 +790,7 @@ void ServerBuildoutManagerNamespace::loadArea(AreaInfo &areaInfo) transform_p, serverTemplate, areaBuildoutTable.getStringValue(scriptsColumn, buildoutRow), - areaBuildoutTable.getStringValue(objvarsColumn, buildoutRow), + objVars, eventRequired, requiredLoadLevel)); }