Fixed incorrect handling of Lua hook return results

This commit is contained in:
EvilFactory
2023-01-08 17:21:52 -03:00
parent 94c68b9fe6
commit 3fe21dc782

View File

@@ -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<T>();
if (luaResult.Type == DataType.Tuple)
{
bool replaceNil = luaResult.Tuple.Length > 1 && luaResult.Tuple[1].CastToBool();
if (!luaResult.Tuple[0].IsNil() || replaceNil)
{
lastResult = luaResult.ToObject<T>();
}
}
else if (!luaResult.IsNil())
{
lastResult = luaResult.ToObject<T>();
}
}
else
{