feat: port all six scenarios' NPC cast rosters into the data model

Populate cast[] (kind:'npc') for every Continuum scenario, transcribed
from the gm-utility NPC sources — normalising the two schemas (console
{id,name,ess,sec} and module {name,tag,secret}) into
{ id, name, kind, note, secret? }. 57 NPCs total. Pregens/PCs excluded
(separate character-sheet system).

No cast UI consumer yet — the design reserves scenario.cast for a future
cast dashboard, so this is a data-model port guarded by
tests/scenarios/cast.test.js (shape + unique ids). 131 tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
slaguru666
2026-07-20 22:18:52 +01:00
co-authored by Claude Opus 4.8
parent ce91b4ce98
commit 4096291b1d
9 changed files with 104 additions and 8 deletions
@@ -59,7 +59,13 @@ jsdom. No new dependencies. Fully offline.
clue `essential: true` (their source is a single curated spine); day-one and princes-bride carry
the source's own essential/optional split.
- **All six scenarios' cast rosters ported** (NPCs, `kind: 'npc'`) via `extract-cast.mjs`, normalising
the two source schemas (`{id,name,ess,sec}` consoles and `{name,tag,secret}` modules) to
`{ id, name, kind, note, secret? }`. `tests/scenarios/cast.test.js` guards shape + unique ids.
Note: the `cast` field has no UI consumer yet (the design reserves it for a future cast dashboard) —
this is a data-model port. Pregens/PCs are intentionally excluded (separate character-sheet/handout system).
## Still deferred (backlog)
- Porting each scenario's **cast** into the data model (still `cast: []`).
- A **cast dashboard** UI to surface `scenario.cast` (parallels `<clue-net>`).
- A dedicated **BRP** dice pack — Day One currently borrows `coc-d100` (d100 roll-under).