diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/ACsMod.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/ACsMod.cs index 29c4caf1c..51cd49f37 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/ACsMod.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Cs/ACsMod.cs @@ -29,8 +29,17 @@ namespace Barotrauma LoadedMods.Add(this); } - public void Dispose() { - Stop(); + public void Dispose() + { + try + { + Stop(); + } + catch (Exception e) + { + GameMain.LuaCs.HandleException(e, null, LuaCsSetup.ExceptionType.CSharp); + } + LoadedMods.Remove(this); IsDisposed = true; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs index a07ae053c..4c16cde7c 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs @@ -318,9 +318,13 @@ namespace Barotrauma { UserData.UnregisterType(type, true); } - foreach (var mod in ACsMod.LoadedMods.ToArray()) mod.Dispose(); - ACsMod.LoadedMods.Clear(); + foreach (var mod in ACsMod.LoadedMods.ToArray()) + { + mod.Dispose(); + } + + ACsMod.LoadedMods.Clear(); if (Thread.CurrentThread == GameMain.MainThread) {