Commit graph

127 commits

Author SHA1 Message Date
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
erik
c61912607a fixed bug with stacksize 2025-06-08 23:39:12 +02:00
erik
8cf9a59061 fixed a bug in stacksize same version 2025-06-08 23:38:22 +02:00
erik
fda5c0417e v 3.0.1.3 2025-06-08 22:47:07 +02:00