diff --git a/Barotrauma/BarotraumaShared/Lua/LuaUserData.lua b/Barotrauma/BarotraumaShared/Lua/LuaUserData.lua index 8906b4d12..756f9967c 100644 --- a/Barotrauma/BarotraumaShared/Lua/LuaUserData.lua +++ b/Barotrauma/BarotraumaShared/Lua/LuaUserData.lua @@ -53,7 +53,14 @@ luaUserData.AddCallMetaTable = function (userdata) error("userdata was nil.", 2) end - return userdata.__new(...) + local success, result = pcall(userdata.__new, ...) + + + if not success then + error(result, 2) + end + + return result end }) end diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs index 2ac23b482..18fc1e353 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs @@ -271,6 +271,7 @@ namespace Barotrauma Lua.Options.DebugPrint = PrintMessage; Lua.Options.ScriptLoader = LuaScriptLoader; Lua.Options.CheckThreadAccess = false; + Script.GlobalOptions.ShouldPCallCatchException = (Exception ex) => { return true; }; CsScript = new CsScriptRunner(this); require = new LuaRequire(Lua); diff --git a/Libraries/moonsharp b/Libraries/moonsharp index 267b6a25c..2a70d4277 160000 --- a/Libraries/moonsharp +++ b/Libraries/moonsharp @@ -1 +1 @@ -Subproject commit 267b6a25c816c55ed4d5855437f3e400d353a40d +Subproject commit 2a70d427796379c48231ccefb5b883784ef75628