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:
Erik 2026-09-25 12:14:25 +02:00
parent 5dbb294a96
commit 0b5da797e0
6 changed files with 857 additions and 2 deletions

View file

@ -1,4 +1,5 @@
using OpenAC.MosswartMassacre.Backend;
using OpenAC.MosswartMassacre.Quests;
namespace OpenAC.MosswartMassacre;
@ -10,8 +11,10 @@ internal static class FeatureCatalog
{
public static void AddFeatures(MmContext context, BackendSession session, List<IMmFeature> features)
{
_ = context;
_ = session;
_ = features;
// Quests, flag tracker, meta sync.
var quests = new QuestManager(context);
features.Add(quests);
}
}