public static int CallLuaStatusEffectFunction(Character actor, StatusEffect effect, string functionName, params object[] args) { // todo: this is stupid, load the actual effect name from db table string path = $"./scripts/effects/{effect.GetName()}.lua"; if (File.Exists(path)) { var script = LoadGlobals(); try { script.DoFile(path); } catch (Exception e) { Program.Log.Error($"LuaEngine.CallLuaStatusEffectFunction [{functionName}] {e.Message}"); } DynValue res = new DynValue(); if (!script.Globals.Get(functionName).IsNil()) { res = script.Call(script.Globals.Get(functionName), args); if (res != null) { return((int)res.Number); } } } else { Program.Log.Error($"LuaEngine.CallLuaStatusEffectFunction [{effect.GetName()}] Unable to find script {path}"); } return(-1); }
// searching certain StatusEffect public bool HasStatusEffect(StatusEffect statusEffect) { bool hasStatusEffect = false; if (statusEffectList.Any(k => k.GetName().Equals(statusEffect.GetName()))) { hasStatusEffect = true; } return(hasStatusEffect); }
public bool IsSameStatusEffect(StatusEffect statusEffect) { bool isSameStatusEffect = false; if (this.name.Equals(statusEffect.GetName())) { if (this.IsOfType(statusEffect.GetStatusEffectType())) { isSameStatusEffect = true; } } return(isSameStatusEffect); }
public static void LoadStatusEffectScript(StatusEffect effect) { string path = $"./scripts/effects/{effect.GetName()}.lua"; if (File.Exists(path)) { var script = LoadGlobals(); try { script.DoFile(path); } catch (Exception e) { Program.Log.Error($"LuaEngine.CallLuaBattleCommandFunction {e.Message}"); } effect.script = script; } else { path = $"./scripts/effects/default.lua"; //Program.Log.Error($"LuaEngine.CallLuaBattleCommandFunction [{command.name}] Unable to find script {path}"); var script = LoadGlobals(); try { script.DoFile(path); } catch (Exception e) { Program.Log.Error($"LuaEngine.CallLuaBattleCommandFunction {e.Message}"); } effect.script = script; } }