From 23e0ff7aa68eccfa277bf0d3aaf5325f5ab15480 Mon Sep 17 00:00:00 2001 From: Evil Factory <36804725+evilfactory@users.noreply.github.com> Date: Sun, 22 Mar 2026 12:42:23 -0300 Subject: [PATCH] Remove types that have been registered when unloading --- .../LuaCs/_Services/LuaScriptManagementService.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs index b3770a90a..7542b1bd0 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs @@ -23,10 +23,11 @@ using System.Threading.Tasks; using Barotrauma.LuaCs; using Barotrauma.LuaCs.Events; using System.Diagnostics; +using System.Reflection; namespace Barotrauma.LuaCs; -class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService +class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService, IEventAssemblyUnloading { public Script? InternalScript => _script; @@ -463,8 +464,6 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService _script = null; - // todo unregister everything - return FluentResults.Result.Ok(); } @@ -509,4 +508,12 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService return _script.Globals[tableName]; } + + public void OnAssemblyUnloading(Assembly assembly) + { + foreach (Type type in assembly.SafeGetTypes()) + { + UserData.UnregisterType(type, deleteHistory: true); + } + } }