Commit graph

130 commits

Author SHA1 Message Date
erik
a446158f63 Add DWORD properties and titles list to character stats payload
Parse augmentation, rating, mastery, society, and general DWORD properties
from the 0x0013 login message. Capture the full titles list from 0x0029.
Both are included in the character_stats WebSocket payload for the new
TreeStats-style character window in the frontend.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 14:39:08 +00:00
erik
a4d2108b3a Clean up /mm help commands
- Remove dead no-op commands (harmonyraw, debugtaper)
- Remove duplicate command (initgui, same as gui)
- Hide debug/test commands from help output (vtanktest, decalstatus,
  decaldebug, testprismatic, testdeath, testtaper, debugupdate)
- Clean up descriptions for consistency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 08:17:55 +00:00
erik
c30704aaa7 Remove files that should not be in repo
- Remove .claude/ settings (local Claude Code config)
- Remove CLAUDE.md files (local project instructions)
- Remove PluginCore.backup.cs (pre-refactoring backup, no longer needed)
- Remove FINDINGS.md (scratch analysis file)
- Add .claude/ and CLAUDE.md to .gitignore

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 08:10:39 +00:00
erik
64e690f625 Phase 6: Fix swallowed exceptions and cleanup unused usings
- Add debug logging to all empty catch blocks in DecalHarmonyClean.cs setup methods
  (prefix method catches intentionally stay silent to never break other plugins)
- Add error logging to VtankControl.VtSetSetting catch
- Add logging to DecalPatchMethods.ProcessInterceptedMessage catch
- Remove unused usings from PluginCore.cs (System.Diagnostics, System.Drawing,
  System.Text, System.Text.RegularExpressions)
- Flatten redundant nested try/catch in PatchPluginHost

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:59:34 +00:00
erik
0713e96a99 Phase 5: Extract QuestStreamingService and introduce IGameStats
- Extract QuestStreamingService.cs from PluginCore (timer, IsHighPriorityQuest, FormatCountdown)
- Create IGameStats interface for WebSocket telemetry decoupling
- PluginCore implements IGameStats, WebSocket.BuildPayloadJson reads from IGameStats
- WebSocket.cs no longer references PluginCore directly
- Update queststatus command to use QuestStreamingService
- Static bridge properties remain for VVSTabbedMainView compatibility

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:56:13 +00:00
erik
f9264f2767 Phase 4: Extract ChatEventRouter and GameEventRouter
- ChatEventRouter.cs: routes chat events to KillTracker, RareTracker, handles
  allegiance report trigger and WebSocket chat streaming
- GameEventRouter.cs: routes ServerDispatch messages (0xF7B0, 0x02CF) to CharacterStats
- PluginCore no longer contains OnChatText, AllChatText, NormalizeChatLine,
  or EchoFilter_ServerDispatch methods

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:50:41 +00:00
erik
c90e888d32 Phase 3: Extract RareTracker and InventoryMonitor
- RareTracker.cs: owns rare discovery detection, meta state toggle, WebSocket/allegiance notifications
- InventoryMonitor.cs: owns Prismatic Taper tracking with event-driven delta math
- PluginCore no longer contains inventory event handlers or rare detection logic
- Bridge properties maintain backward compat for WebSocket telemetry

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:33:44 +00:00
erik
366cca8cb6 Phase 2: Extract IPluginLogger and KillTracker
- Create IPluginLogger interface, PluginCore implements it
- CharacterStats.cs and WebSocket.cs now use IPluginLogger instead of PluginCore.WriteToChat
- Extract KillTracker.cs: owns kill detection (all 36 regex patterns), death tracking,
  rate calculation, and the 1-sec stats update timer
- Bridge properties on PluginCore maintain backward compat for WebSocket telemetry

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:29:49 +00:00
erik
4845a67c1f Phase 1: Extract Constants.cs and CommandRouter.cs
- Extract magic numbers (timer intervals, message type IDs, property keys) into Constants.cs
- Replace ~600-line HandleMmCommand switch with dictionary-based CommandRouter
- All /mm commands preserved with same behavior, now registered via lambdas
- PluginCore.cs and CharacterStats.cs updated to use named constants

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:24:43 +00:00
erik
9e9a94f159 Remove unused features: HTTP server, old telemetry, !do/!dot chat commands
- Delete HttpCommandServer.cs (localhost:8085 HTTP listener)
- Delete Telemetry.cs (old HTTP POST to mosswart.snakedesert.se/position/)
- Remove !do/!dot allegiance chat regex matching from OnChatText
- Remove RemoteCommandsEnabled, HttpServerEnabled, TelemetryEnabled settings
- Remove corresponding UI checkboxes, /mm command handlers, and wiring
- Keep: WebSocket command receive, ClientTelemetry.cs (used by WS streaming)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 07:02:07 +00:00
erik
c53aa4b31b Fix luminance: hook ServerDispatch in Startup and handle 0x02CF updates
- Move Init() and ServerDispatch hook from LoginComplete to Startup so
  event 0x0013 (character properties) is caught during login sequence
- Add handler for message 0x02CF (PrivateUpdatePropertyInt64) to capture
  runtime luminance changes when player earns/spends luminance in-game
- Uses RawData byte parsing for 0x02CF since Decal messages.xml may not
  define this message type

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 06:18:15 +00:00
erik
ad8fb3a4ba Fix luminance data lost by Init() timing: move ServerDispatch hook to LoginComplete
ServerDispatch was hooked in Startup() but Init() was called later in
LoginComplete(), clearing the luminance/title data already captured from
the 0x0013 network event. Now hook ServerDispatch after Init() so
captured data is not reset.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 16:25:28 +00:00
erik
88600db779 Enable Linux builds: bundle all Decal DLLs and fix csproj paths
- Add missing DLLs to lib/: Decal.Interop.Filters, Decal.FileService,
  Decal.Interop.D3DService, Decal.Interop.Input, Decal, DecalNet, VCS5
- Convert all Windows-absolute HintPaths to relative lib\ paths
- Convert COM references (Decal, DecalNet) to regular assembly references
- Add Microsoft.NETFramework.ReferenceAssemblies for cross-platform builds
- Add AllowUnsafeBlocks and PlatformTarget to Release configuration
- Update Release DLL with character stats streaming feature

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 16:10:38 +00:00
erik
1fdae96262 feat: wire up character stats timer, ServerDispatch, and login send
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 15:43:01 +00:00
erik
655bfd5163 feat: add CharacterStats data collection and network message handlers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 15:38:27 +00:00
erik
84462d7c92 feat: add SendCharacterStatsAsync to WebSocket
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 15:36:12 +00:00
Erik
d722deeefc added chest looter 2025-12-09 21:32:31 +01:00
erik
0d57c527dd Deleted files. 2025-12-09 21:27:37 +01:00
erik
d9a1ef9e68 deleted files 2025-12-09 21:27:30 +01:00
erik
c90a11fc29 added chest looter 2025-12-09 21:23:51 +01:00
Erik
2eb9a7773e Added chest looter 2025-12-09 17:31:27 +01:00
erik
5fe0f85369 Test for alex 2025-06-22 23:44:04 +02:00
erik
bc68d29ba5 Added loader 2025-06-22 22:35:50 +02:00
erik
8b3c800b3f v5.0.0.0 2025-06-22 22:31:21 +02:00
erik
be7e8302cd Correct version 2025-06-22 22:26:58 +02:00
erik
6120966c05 Added hashed based checking of updates. 2025-06-22 22:22:10 +02:00
erik
e9925096f0 Debug 2025-06-22 21:32:00 +02:00
erik
c174c143c6 Fixed bug in quests 2025-06-22 17:53:24 +02:00
erik
553a2388d1 Fixed quest bug when hotrealoading 2025-06-22 17:13:38 +02:00
erik
e9a113abdd Added /mm sendinventory 2025-06-22 16:56:44 +02:00
erik
ab425a04cc test7 2025-06-22 13:22:25 +02:00
erik
6b631c3fe8 test6 2025-06-22 13:21:34 +02:00
erik
130615c141 test5 2025-06-22 13:20:18 +02:00
erik
4ab0992979 test4 2025-06-22 13:17:22 +02:00
erik
741d17af0c test3 2025-06-22 13:15:44 +02:00
erik
52633e2a1a test2 2025-06-22 13:14:32 +02:00
erik
7cb917ce67 Test 2025-06-22 13:13:39 +02:00
erik
af98555052 New reload file 2025-06-22 13:10:51 +02:00
erik
7e80fff4b6 Added hotreload 2025-06-22 13:03:14 +02:00
erik
73ba7082d8 Added hot reload 2025-06-22 12:10:15 +02:00
erik
bb493febb4 added z coords for portal discovery and minster disovery 2025-06-21 10:48:53 +02:00
erik
91cd934878 version 4.0.0.2 2025-06-17 20:59:38 +02:00
erik
31c9042ed3 version 4.0.0.2 fixed flapping players in Overlord, changed how taper is counted, added safe websocket marshalling 2025-06-17 20:58:10 +02:00
erik
f9644baf1e Added taper counts, vitals streaming and tentacle porn 2025-06-10 22:40:42 +02:00
erik
ecea5af243 Version 3.0.1.5 2025-06-09 02:17:43 +02:00
erik
1142a012ef final fix 2025-06-09 02:15:27 +02:00
erik
57b2f0400e te 2025-06-09 02:03:11 +02:00
erik
01151e679b test2 2025-06-09 01:48:20 +02:00
erik
2e6ac9553f test 2025-06-09 01:34:45 +02:00
erik
a3ce9ce2df fix(websocket): stop rare “ReceiveAsync already outstanding” crashes
• Guard Start() so only one connection loop can run per client.
• Capture the socket inside each receive loop, so reconnects can’t
  leave old loops fighting over the same ClientWebSocket.
2025-06-09 00:26:05 +02:00