Quests: /myquests parsing and the 30-second quest stream
The backend's quest panel shows the stipend, blank aug gem and insatiable jaw timers from the `quest` frame, so the port reads /myquests the way the original did (a three-second window of chat lines matched by its regex) and streams the three priority stamps every 30 s with the same five-field frame and the same countdown strings. The name table is copied as it was, so the duplicate insatiableeaterjaw entry still resolves to the later name. Timers run on the tick scheduler instead of thread-pool timers. The session tests clear the login-time /myquests before counting the commands the backend ran. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
5dbb294a96
commit
0b5da797e0
6 changed files with 857 additions and 2 deletions
|
|
@ -9,6 +9,8 @@ public sealed class BackendSessionTests
|
|||
{
|
||||
using var harness = new PluginHarness("Mossy");
|
||||
harness.Login();
|
||||
// Login itself submits /myquests; these tests count only what the backend ran.
|
||||
harness.Host.Automation.Chat.Submitted.Clear();
|
||||
|
||||
harness.Receive("{\"player_name\":\"mossy\",\"command\":\"/a hello\"}");
|
||||
Assert.Empty(harness.Host.Automation.Chat.Submitted);
|
||||
|
|
@ -23,6 +25,8 @@ public sealed class BackendSessionTests
|
|||
{
|
||||
using var harness = new PluginHarness("Mossy");
|
||||
harness.Login();
|
||||
// Login itself submits /myquests; these tests count only what the backend ran.
|
||||
harness.Host.Automation.Chat.Submitted.Clear();
|
||||
|
||||
harness.Receive("{\"player_name\":\"Horan\",\"command\":\"/a hello\"}");
|
||||
harness.Tick(0.01);
|
||||
|
|
@ -35,6 +39,8 @@ public sealed class BackendSessionTests
|
|||
{
|
||||
using var harness = new PluginHarness("Mossy");
|
||||
harness.Login();
|
||||
// Login itself submits /myquests; these tests count only what the backend ran.
|
||||
harness.Host.Automation.Chat.Submitted.Clear();
|
||||
|
||||
harness.Receive("{\"player_name\":\"Mossy\",\"command\":\"/one\"}");
|
||||
harness.Receive("{\"player_name\":\"Mossy\",\"command\":\"/two\"}");
|
||||
|
|
@ -49,6 +55,8 @@ public sealed class BackendSessionTests
|
|||
{
|
||||
using var harness = new PluginHarness("Mossy");
|
||||
harness.Login();
|
||||
// Login itself submits /myquests; these tests count only what the backend ran.
|
||||
harness.Host.Automation.Chat.Submitted.Clear();
|
||||
var toggles = new List<bool>();
|
||||
harness.Session.RadarToggle = on => toggles.Add(on);
|
||||
|
||||
|
|
@ -68,6 +76,8 @@ public sealed class BackendSessionTests
|
|||
var seen = new List<string>();
|
||||
harness.Session.AddShareHandler(new RecordingShareHandler(seen));
|
||||
harness.Login();
|
||||
// Login itself submits /myquests; these tests count only what the backend ran.
|
||||
harness.Host.Automation.Chat.Submitted.Clear();
|
||||
|
||||
harness.Receive("{\"type\":\"share_vital_update\",\"character_name\":\"Horan\"}");
|
||||
|
||||
|
|
@ -81,6 +91,8 @@ public sealed class BackendSessionTests
|
|||
{
|
||||
using var harness = new PluginHarness("Mossy");
|
||||
harness.Login();
|
||||
// Login itself submits /myquests; these tests count only what the backend ran.
|
||||
harness.Host.Automation.Chat.Submitted.Clear();
|
||||
|
||||
harness.Receive("not json");
|
||||
harness.Receive("[1,2,3]");
|
||||
|
|
@ -94,6 +106,8 @@ public sealed class BackendSessionTests
|
|||
{
|
||||
using var harness = new PluginHarness("Mossy");
|
||||
harness.Login();
|
||||
// Login itself submits /myquests; these tests count only what the backend ran.
|
||||
harness.Host.Automation.Chat.Submitted.Clear();
|
||||
|
||||
harness.Session.OnConnected(new DateTime(2026, 9, 25, 8, 5, 9, DateTimeKind.Utc));
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue