From 3fe21dc78203909eaa9b9d3c53dd0d57ed01cd37 Mon Sep 17 00:00:00 2001 From: EvilFactory Date: Sun, 8 Jan 2023 17:21:52 -0300 Subject: [PATCH] Fixed incorrect handling of Lua hook return results --- .../SharedSource/LuaCs/LuaCsHook.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsHook.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsHook.cs index 311779926..08d5c33cc 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsHook.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsHook.cs @@ -790,10 +790,22 @@ namespace Barotrauma } var result = tuple.Item1.func(args); - // TODO(BREAKING): change this to !result.IsVoid() - if (result is DynValue luaResult && !luaResult.IsNil()) + + if (result is DynValue luaResult) { - lastResult = luaResult.ToObject(); + if (luaResult.Type == DataType.Tuple) + { + bool replaceNil = luaResult.Tuple.Length > 1 && luaResult.Tuple[1].CastToBool(); + + if (!luaResult.Tuple[0].IsNil() || replaceNil) + { + lastResult = luaResult.ToObject(); + } + } + else if (!luaResult.IsNil()) + { + lastResult = luaResult.ToObject(); + } } else {