From 10d7c962689f7c0773a90eec5838a834b9777806 Mon Sep 17 00:00:00 2001 From: Birk Magnussen <6238428+BMagnu@users.noreply.github.com> Date: Sat, 10 Jan 2026 10:45:10 +0900 Subject: [PATCH 1/2] Add metatable to correctly handle FSO objects --- code/def_files/data/scripts/forwarders.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/code/def_files/data/scripts/forwarders.lua b/code/def_files/data/scripts/forwarders.lua index 88f35856423..c4815e90dfa 100644 --- a/code/def_files/data/scripts/forwarders.lua +++ b/code/def_files/data/scripts/forwarders.lua @@ -84,3 +84,21 @@ setmetatable(Globals, mt) Globals.nullVec = ba.createVector(0, 0, 0) Globals.zeroVec = Globals.nullVec Globals.identityOrient = ba.createOrientationFromVectors(ba.createVector(0, 0, 1), ba.createVector(0, 1, 0), ba.createVector(1, 0, 0)) +Globals.FSOObjectsTableMetatable = { + __newindex = function(tbl, key, value) + for k, v in pairs(tbl) do + if k == key then + tbl[k] = value + return + end + end + tbl[key] = value + end, + __index = function(tbl, key) + for k, v in pairs(tbl) do + if k == key then + return v + end + end + end + } \ No newline at end of file From 25eacc2312cd637fd31318d0724998f6a625b3d7 Mon Sep 17 00:00:00 2001 From: Birk Magnussen <6238428+BMagnu@users.noreply.github.com> Date: Tue, 13 Jan 2026 08:22:27 +0900 Subject: [PATCH 2/2] Avoid infinite recursion --- code/def_files/data/scripts/forwarders.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/def_files/data/scripts/forwarders.lua b/code/def_files/data/scripts/forwarders.lua index c4815e90dfa..a7d5511792a 100644 --- a/code/def_files/data/scripts/forwarders.lua +++ b/code/def_files/data/scripts/forwarders.lua @@ -88,11 +88,11 @@ Globals.FSOObjectsTableMetatable = { __newindex = function(tbl, key, value) for k, v in pairs(tbl) do if k == key then - tbl[k] = value + rawset(tbl, k, value) return end end - tbl[key] = value + rawset(tbl, key, value) end, __index = function(tbl, key) for k, v in pairs(tbl) do