From 1fff36e3f7b9f5bd486713d9103f9efe9f5d1880 Mon Sep 17 00:00:00 2001 From: erik Date: Fri, 27 Feb 2026 14:52:19 +0000 Subject: [PATCH] Fix rare detection broken on hot reload / DLL update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit InitializeForHotReload() never created a RareTracker — it only ran if one already existed. When the new DLL is loaded on an already- logged-in character, LoginComplete doesn't fire, so _rareTracker stayed null and the null-check in ChatEventRouter.OnChatText silently skipped all rare detection. Now InitializeForHotReload creates and wires the RareTracker if it hasn't been set yet, matching what LoginComplete does. Co-Authored-By: Claude Opus 4.6 --- MosswartMassacre/PluginCore.cs | 12 ++++++++++-- .../bin/Release/MosswartMassacre.dll | Bin 1675776 -> 1675776 bytes 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/MosswartMassacre/PluginCore.cs b/MosswartMassacre/PluginCore.cs index fafbc9d..746c81d 100644 --- a/MosswartMassacre/PluginCore.cs +++ b/MosswartMassacre/PluginCore.cs @@ -495,8 +495,16 @@ namespace MosswartMassacre WriteToChat($"[ChestLooter] Initialization failed: {ex.Message}"); } - // 2. Apply the values from settings - if (_rareTracker != null) _rareTracker.RareMetaEnabled = PluginSettings.Instance.RareMetaEnabled; + // 2. Initialize rare tracker if not already set (missed when LoginComplete doesn't fire) + if (_rareTracker == null) + { + _rareTracker = new RareTracker(this); + _staticRareTracker = _rareTracker; + _chatEventRouter.SetRareTracker(_rareTracker); + } + + // Apply the values from settings + _rareTracker.RareMetaEnabled = PluginSettings.Instance.RareMetaEnabled; WebSocketEnabled = PluginSettings.Instance.WebSocketEnabled; CharTag = PluginSettings.Instance.CharTag; diff --git a/MosswartMassacre/bin/Release/MosswartMassacre.dll b/MosswartMassacre/bin/Release/MosswartMassacre.dll index ee3856c1fe2742e34f45577dd01e6295c7d5d464..cbffd582a067a9a3dd85a918f00bc041fedbfe02 100644 GIT binary patch delta 8185 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 aP0q>necy0?U-%qa{)w7KYyS_JuTH@L delta 8264 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 R!q$lTr;5FPq?R!4{{g>wW2688