Flag tracker: the Mossy Tracker window as a markup panel

The owner calls the flag tracker important, so the original's pages come
across with their tables unchanged: augmentations and luminance auras from
the player's own int properties (the object table carries them), recalls
from the spellbook with composited spell icons, cantrips matched from the
active enchantments to trained skills, attributes and wards, the tracked
weapons the original kept data for but never showed, and the quest timers.
Read on the tick thread at login and on each page's Refresh; the quest
page redraws every five seconds instead of from a thread-pool timer.

The root panel's visibility is the settable IsVisible so the main window
can open it; the three sections the original left as stubs stay out, and a
headless host registers nothing. The fake spell catalog learns IsKnown.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-25 12:20:52 +02:00
parent 0b5da797e0
commit 714fbfa2e8
8 changed files with 1735 additions and 0 deletions

View file

@ -446,6 +446,11 @@ public sealed class FakeSpellCatalog : ISpellCatalog
/// <summary>The full spell table, independent of what the character knows.</summary>
public IReadOnlyList<PluginSpellInfo> All { get; set; } = [];
/// <summary>The spells the character knows, for <see cref="IsKnown"/>.</summary>
public HashSet<uint> KnownSpellIds { get; } = [];
public bool IsKnown(uint spellId) => KnownSpellIds.Contains(spellId);
public bool TryGet(uint spellId, out PluginSpellInfo info)
{
foreach (PluginSpellInfo spell in KnownSelfBuffs