Fix rare detection broken on hot reload / DLL update

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 <noreply@anthropic.com>
This commit is contained in:
erik 2026-02-27 14:52:19 +00:00
parent a446158f63
commit 1fff36e3f7
2 changed files with 10 additions and 2 deletions

View file

@ -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;