Add PAPER WINDOW as the starter scenario Adventure

The six-player introductory case ships as a Foundry Adventure in a new `starter` pack,
because a scenario that arrives as nine loose documents a GM has to assemble is a
scenario that gets read rather than run.

One import brings in: the GM scenario in twelve pages; the seven player handouts as
their own journal at OBSERVER ownership so they can be revealed one at a time without
the GM editing permissions first, while the GM text stays hidden; the six pregens built
through the same buildActor path the shipped pregens use, so they arrive with full skill
lists, kit, hit points and linked tokens; the cast, including the Cancellation Man; the
Borrowed Authority as a real credential with scope, Trust 2 and its three red flags; and
the case file already at Containment 8 / Resources 8 / Clearance 6 with its four phases
loaded at the stated difficulties and modifiers.

Pregen ratings are fixed at mid-band rather than rolled — a pregen that varies between
installs is not a pregen. The expansion from posting or trade into a sheet reuses the
register and the induction rule rather than restating them, so the starter cannot drift
from the generator.

Verified by importing it: no errors, the roster resolves through stable keys, handouts
arrive player-visible, Nia has the team's highest Tradecraft as the text requires,
Callum's shield is slung so raising it is still a decision, the three probationers show
the trade/induction split, and phase one runs out of the box.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
slaguru666
2026-08-11 23:25:10 +01:00
co-authored by Claude Opus 5
parent 43508259ac
commit 49c2e9fc7b
116 changed files with 1001 additions and 29 deletions
+3 -2
View File
@@ -68,7 +68,8 @@ changing underneath a running server.
| **Bestiary** | 21 statblocks across folklore, horror and the far side |
| **Eras** | modern, antique, future, anomalous — the agency is old and never abolishes anything |
| **Icons** | 292, all generated from `tools/icons.mjs`; no external art |
| **Compendia** | pregens, NPCs, skills, weapons, armour, gear, vehicles, powers, tables, rules, a starter case |
| **Starter scenario** | **PAPER WINDOW**, a six-player introductory case, importable as a single Adventure |
| **Compendia** | pregens, NPCs, skills, weapons, armour, gear, vehicles, powers, tables, rules, the starter |
| **Rules journal** | 12 pages, generated from `rules.mjs` so the book cannot drift from the code |
<!-- box:end -->
@@ -179,7 +180,7 @@ The build runs all three guards before it writes anything:
<!-- guards:start -->
```
check-rules: OK — 87 rules, 15 files scanned, 3 aliases + 41 constant sets checked, 275 formulas verified
check-rules: OK — 87 rules, 16 files scanned, 3 aliases + 41 constant sets checked, 275 formulas verified
check-kits: OK — 25 roles, 10 trades, 218 catalogue items, every kit key resolves, every posting can use what it carries, every loadout distinct
check-lang: OK — en.json, 926 keys, no leaf/branch collisions
check-behaviour: OK — 28 behavioural tests
+40
View File
@@ -4901,3 +4901,43 @@ should sit *above* executable evidence rather than instead of it. Every numbered
that can be reproduced without a browser now has a test. Those that cannot — anything
inside the generators, the sheets or the contact engine — are named in the test file's
header as out of its reach, so the suite does not look more complete than it is.
## PAPER WINDOW — the starter scenario, as a Foundry Adventure
Codex's six-player introductory case is now in the system as an importable scenario
module. **Adventure**, not a journal: a scenario that arrives as nine loose documents a
GM has to assemble is a scenario that gets read rather than run.
`ringbrp.starter` contains one Adventure holding:
* the **GM scenario** in twelve pages, in running order;
* the **seven player handouts** as their own journal at ownership OBSERVER, so they can
be revealed one at a time without the GM changing permissions on seven pages before
the session — the GM journal stays hidden;
* the **six pregens**, built through the same `buildActor` path the shipped pregens
use, so they arrive with full skill lists, kit, hit points and linked tokens;
* the **cast** — Evelyn Vale, both Lorna Vales, Gareth Moss and the Cancellation Man —
as statblocks a GM can drag onto a scene;
* the **Borrowed Authority** as a real credential item with scope, Trust 2 and its three
red flags, rather than a paragraph in the brief;
* the **case file** already at Containment 8, Resources 8, Clearance 6 with its four
phases loaded at the scenario's stated difficulties and modifiers.
**The pregens are fixed, not rolled.** Ratings sit at the middle of each band rather
than being generated, because a pregen that varies between installs is not a pregen and
six tables running the starter should see the same six agents. Verified after a live
import: Nia carries the team's highest Tradecraft at 53 as the text requires, Callum's
riot shield is **slung** so raising it is still the player's decision, and the three
probationers show the trade/induction split the scenario is built to teach — Elin
Medicine 58 against an induction of 26, Owen Electronics 58, Sennen Sleight of Hand 58.
The expansion from a posting or trade into a full sheet reuses the register and the
induction rule rather than restating either, so the pregens cannot drift from the
generator: change `TRADE_BANDS` and the starter's doctor changes with it.
**Verified by importing it rather than by building it.** The pack builds, the Adventure
is well formed, the import completes with no errors, the case roster resolves through
stable keys after import (raw ids do not survive one), the handouts come in
player-visible and the GM text does not, and **phase one runs straight out of the box** —
Nia leading the cordon on Tradecraft 53. Then everything imported was deleted again,
which the pack does not notice.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000002
MANIFEST-000004
+5 -1
View File
@@ -1 +1,5 @@
2026/08/11-22:56:53.172229 172e3b000 Delete type=3 #1
2026/08/11-23:23:08.314417 1742cf000 Recovering log #3
2026/08/11-23:23:08.314570 1742cf000 Level-0 table #5: started
2026/08/11-23:23:08.314789 1742cf000 Level-0 table #5: 4591 bytes OK
2026/08/11-23:23:08.315089 1742cf000 Delete type=0 #3
2026/08/11-23:23:08.315117 1742cf000 Delete type=3 #2
+1
View File
@@ -0,0 +1 @@
2026/08/11-23:22:30.827615 17117f000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000002
MANIFEST-000004
+5 -1
View File
@@ -1 +1,5 @@
2026/08/11-22:56:53.204356 173647000 Delete type=3 #1
2026/08/11-23:23:08.332681 174adb000 Recovering log #3
2026/08/11-23:23:08.332779 174adb000 Level-0 table #5: started
2026/08/11-23:23:08.332918 174adb000 Level-0 table #5: 4129 bytes OK
2026/08/11-23:23:08.333190 174adb000 Delete type=0 #3
2026/08/11-23:23:08.333236 174adb000 Delete type=3 #2
+1
View File
@@ -0,0 +1 @@
2026/08/11-23:22:30.870148 17198b000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000002
MANIFEST-000004
+5 -1
View File
@@ -1 +1,5 @@
2026/08/11-22:56:53.174127 172e3b000 Delete type=3 #1
2026/08/11-23:23:08.316151 174adb000 Recovering log #3
2026/08/11-23:23:08.316320 174adb000 Level-0 table #5: started
2026/08/11-23:23:08.316628 174adb000 Level-0 table #5: 31614 bytes OK
2026/08/11-23:23:08.316965 174adb000 Delete type=0 #3
2026/08/11-23:23:08.317018 174adb000 Delete type=3 #2
+1
View File
@@ -0,0 +1 @@
2026/08/11-23:22:30.829491 170973000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000002
MANIFEST-000004
+5 -1
View File
@@ -1 +1,5 @@
2026/08/11-22:56:53.190267 173e53000 Delete type=3 #1
2026/08/11-23:23:08.298312 174adb000 Recovering log #3
2026/08/11-23:23:08.300367 174adb000 Level-0 table #5: started
2026/08/11-23:23:08.301985 174adb000 Level-0 table #5: 225945 bytes OK
2026/08/11-23:23:08.302352 174adb000 Delete type=0 #3
2026/08/11-23:23:08.302416 174adb000 Delete type=3 #2
+1
View File
@@ -0,0 +1 @@
2026/08/11-23:22:30.845061 17198b000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000002
MANIFEST-000004
+5 -1
View File
@@ -1 +1,5 @@
2026/08/11-22:56:53.198465 172e3b000 Delete type=3 #1
2026/08/11-23:23:08.309911 1742cf000 Recovering log #3
2026/08/11-23:23:08.310322 1742cf000 Level-0 table #5: started
2026/08/11-23:23:08.310473 1742cf000 Level-0 table #5: 3295 bytes OK
2026/08/11-23:23:08.310750 1742cf000 Delete type=0 #3
2026/08/11-23:23:08.310794 1742cf000 Delete type=3 #2
+1
View File
@@ -0,0 +1 @@
2026/08/11-23:22:30.862697 17198b000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000002
MANIFEST-000004
+5 -1
View File
@@ -1 +1,5 @@
2026/08/11-22:56:53.180591 173647000 Delete type=3 #1
2026/08/11-23:23:08.294604 174adb000 Recovering log #3
2026/08/11-23:23:08.295663 174adb000 Level-0 table #5: started
2026/08/11-23:23:08.296163 174adb000 Level-0 table #5: 58792 bytes OK
2026/08/11-23:23:08.296520 174adb000 Delete type=0 #3
2026/08/11-23:23:08.296610 174adb000 Delete type=3 #2
+1
View File
@@ -0,0 +1 @@
2026/08/11-23:22:30.835678 17198b000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000002
MANIFEST-000004
+5 -1
View File
@@ -1 +1,5 @@
2026/08/11-22:56:53.202660 17465f000 Delete type=3 #1
2026/08/11-23:23:08.320015 175af3000 Recovering log #3
2026/08/11-23:23:08.320173 175af3000 Level-0 table #5: started
2026/08/11-23:23:08.320528 175af3000 Level-0 table #5: 33474 bytes OK
2026/08/11-23:23:08.320923 175af3000 Delete type=0 #3
2026/08/11-23:23:08.320978 175af3000 Delete type=3 #2
+1
View File
@@ -0,0 +1 @@
2026/08/11-23:22:30.868156 17117f000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000002
MANIFEST-000004
+5 -1
View File
@@ -1 +1,5 @@
2026/08/11-22:56:53.165752 173647000 Delete type=3 #1
2026/08/11-23:23:08.305494 1742cf000 Recovering log #3
2026/08/11-23:23:08.305911 1742cf000 Level-0 table #5: started
2026/08/11-23:23:08.306128 1742cf000 Level-0 table #5: 7590 bytes OK
2026/08/11-23:23:08.306405 1742cf000 Delete type=0 #3
2026/08/11-23:23:08.306467 1742cf000 Delete type=3 #2
+1
View File
@@ -0,0 +1 @@
2026/08/11-23:22:30.820649 172197000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000002
MANIFEST-000004
+5 -1
View File
@@ -1 +1,5 @@
2026/08/11-22:56:53.196772 17465f000 Delete type=3 #1
2026/08/11-23:23:08.328983 1752e7000 Recovering log #3
2026/08/11-23:23:08.329262 1752e7000 Level-0 table #5: started
2026/08/11-23:23:08.329521 1752e7000 Level-0 table #5: 16892 bytes OK
2026/08/11-23:23:08.329805 1752e7000 Delete type=0 #3
2026/08/11-23:23:08.329838 1752e7000 Delete type=3 #2
+1
View File
@@ -0,0 +1 @@
2026/08/11-23:22:30.860796 17117f000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
MANIFEST-000004
+5
View File
@@ -0,0 +1,5 @@
2026/08/11-23:23:08.324024 1752e7000 Recovering log #3
2026/08/11-23:23:08.325074 1752e7000 Level-0 table #5: started
2026/08/11-23:23:08.325775 1752e7000 Level-0 table #5: 89206 bytes OK
2026/08/11-23:23:08.326188 1752e7000 Delete type=0 #3
2026/08/11-23:23:08.326248 1752e7000 Delete type=3 #2
+1
View File
@@ -0,0 +1 @@
2026/08/11-23:22:30.856844 17117f000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000002
MANIFEST-000004
+5 -1
View File
@@ -1 +1,5 @@
2026/08/11-22:56:53.194787 17465f000 Delete type=3 #1
2026/08/11-23:23:08.330955 1742cf000 Recovering log #3
2026/08/11-23:23:08.331078 1742cf000 Level-0 table #5: started
2026/08/11-23:23:08.331226 1742cf000 Level-0 table #5: 3739 bytes OK
2026/08/11-23:23:08.331550 1742cf000 Delete type=0 #3
2026/08/11-23:23:08.331583 1742cf000 Delete type=3 #2
+1
View File
@@ -0,0 +1 @@
2026/08/11-23:22:30.849798 17117f000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000002
MANIFEST-000004
+5 -1
View File
@@ -1 +1,5 @@
2026/08/11-22:56:53.168626 17465f000 Delete type=3 #1
2026/08/11-23:23:08.307829 174adb000 Recovering log #3
2026/08/11-23:23:08.308163 174adb000 Level-0 table #5: started
2026/08/11-23:23:08.308314 174adb000 Level-0 table #5: 5770 bytes OK
2026/08/11-23:23:08.308647 174adb000 Delete type=0 #3
2026/08/11-23:23:08.308699 174adb000 Delete type=3 #2
+1
View File
@@ -0,0 +1 @@
2026/08/11-23:22:30.823417 172197000 Delete type=3 #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
MANIFEST-000002
MANIFEST-000004

Some files were not shown because too many files have changed in this diff Show More