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 {