diff --git a/OpenRA.Mods.RA/Scripting/CallLuaFunc.cs b/OpenRA.Mods.RA/Scripting/CallLuaFunc.cs index 6792fbb7df..5cd0706c9e 100644 --- a/OpenRA.Mods.RA/Scripting/CallLuaFunc.cs +++ b/OpenRA.Mods.RA/Scripting/CallLuaFunc.cs @@ -10,23 +10,33 @@ using System; using Eluant; +using OpenRA.Scripting; using OpenRA.Traits; namespace OpenRA.Mods.RA.Activities { public sealed class CallLuaFunc : Activity, IDisposable { + readonly ScriptContext context; LuaFunction function; - public CallLuaFunc(LuaFunction func) + public CallLuaFunc(LuaFunction function, ScriptContext context) { - function = (LuaFunction)func.CopyReference(); + this.function = (LuaFunction)function.CopyReference(); + this.context = context; } public override Activity Tick(Actor self) { - if (function != null) - function.Call().Dispose(); + try + { + if (function != null) + function.Call().Dispose(); + } + catch (Exception ex) + { + context.FatalError(ex.Message); + } Dispose(); return NextActivity; @@ -40,7 +50,9 @@ namespace OpenRA.Mods.RA.Activities public void Dispose() { - if (function == null) return; + if (function == null) + return; + function.Dispose(); function = null; } diff --git a/OpenRA.Mods.RA/Scripting/Properties/GeneralProperties.cs b/OpenRA.Mods.RA/Scripting/Properties/GeneralProperties.cs index 09697b5d8f..54b2d6739e 100644 --- a/OpenRA.Mods.RA/Scripting/Properties/GeneralProperties.cs +++ b/OpenRA.Mods.RA/Scripting/Properties/GeneralProperties.cs @@ -114,7 +114,7 @@ namespace OpenRA.Mods.RA.Scripting [Desc("Run an arbitrary Lua function.")] public void CallFunc(LuaFunction func) { - self.QueueActivity(new CallLuaFunc(func)); + self.QueueActivity(new CallLuaFunc(func, context)); } [ScriptActorPropertyActivity]