diff --git a/AGENTS.md b/AGENTS.md index 44efafc..b213bcc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -298,11 +298,11 @@ Labor/staffing simulation for structures. Collections in `src/collections/game/` ## Training Minigames -Four XP-earning minigames, each with a page + server actions + a pure client-safe game-rules lib, recording stats under Profiles `progression.minigames.*`: +Five XP-earning minigames under one parent: routes live at `/minigames/*` (moved from `/qualification`, `/radio`, `/flappy`, `/eod`, `/opord`; `next.config.mjs` redirects keep the old URLs working), components under `src/components/frontend/minigames//` (shared bits like `UnlockNotice.tsx` at the root), game-rule libs under `src/lib/minigames/` (custom-content libs in `src/lib/minigames/custom/`), stats under Profiles `progression.minigames.*`. The realtime presence channel strings (`"eod"`, `"radio"`, ...) are unchanged: -- **Qualification Course (aim trainer)** — `/qualification` (`src/app/(frontend)/qualification/`), game rules in `src/lib/aim-trainer.ts` (recruit/veteran/elite difficulties, civilian targets, scoring/accuracy/XP, injected rng). Components: `src/components/frontend/qualification/` (`AimTrainerArena`, `AimTrainerGame`, `AimTrainerCanvas`, `AimTrainerLeaderboard`). Action `submitAimTrainerResult` validates result bounds, updates profile stats, awards XP, emits `minigame:aim-trainer`. -- **Radio Traffic** — `/radio`, sprint + watch modes, procedural message generation (`src/components/frontend/radio/messageGenerator.ts`). Action `submitRadioResult` emits `minigame:radio-traffic`; stats under `progression.minigames.radioTraffic` (incl. `bestSprintTimeMs`). -- **Flight Simulator** — `/flappy` (canvas game + leaderboard). **Minefield Clearance (EOD)** — `/eod`. +- **Qualification Course (aim trainer)**: `/minigames/qualification` (`src/app/(frontend)/minigames/qualification/`), game rules in `src/lib/minigames/aim-trainer.ts` (recruit/veteran/elite difficulties, civilian targets, scoring/accuracy/XP, injected rng). Components: `src/components/frontend/minigames/qualification/` (`AimTrainerArena`, `AimTrainerGame`, `AimTrainerCanvas`, `AimTrainerLeaderboard`). Action `submitAimTrainerResult` validates result bounds, updates profile stats, awards XP, emits `minigame:aim-trainer`. +- **Radio Traffic**: `/minigames/radio`, sprint + watch modes, procedural message generation (`src/components/frontend/minigames/radio/messageGenerator.ts`). Action `submitRadioResult` emits `minigame:radio-traffic`; stats under `progression.minigames.radioTraffic` (incl. `bestSprintTimeMs`). +- **Flight Simulator**: `/minigames/flappy` (canvas game + leaderboard). **Minefield Clearance (EOD)**: `/minigames/eod`. **OPORD Recall**: `/minigames/opord` (`src/lib/minigames/opord-recall.ts`). - Leaderboards match active players by user id (not display name) — see commit 72715c4 if leaderboard queries look wrong. ## Discord Bot