Playtest LAST ADMISSION: five fixes, one new guard
Played it through in Foundry with the six on their civilian sheets. Five
defects, all of the house's favourite kind — a number written down that nothing
reads.
1. Pollard and Agyeman were armed and armoured as CIVILIANS. The police trade
kit carries a revolver and a stab vest, which is right for a serving
officer and wrong for a British civilian, and it ended the scenario's only
fight in a single round. expandFromRegister's civilian mode now strips
firearms and body armour from trade kit as well as induction and standing
issue, and the build throws if one gets through. Wren Finch keeps her
knife — a knife is not an issued weapon.
2. Old Marrow's shears were a utility knife. The page said 1d8+1; the actor
in the pack held 1d4+2, so a GM running off the token had a different
fight from the one written down. He now carries a billhook — an actual
garden tool that is already in the catalogue — and the page says 1d8+2,
which is what a billhook does.
3. He was too soft to be the fight the scenario promises. At the original
numbers he died in an average of 2.4 rounds and in 6 runs of 20 he was
dead before he ever swung. Retuned over thirty runs to HP 20, armour 2:
about four and a half rounds, somebody hurt in 28 of 30, somebody dropped
in 9 of 30. The verification run took four rounds and left Pollard on
eight hit points.
4. Two stat lines disagreed with the generated sheets — Marrow 16 against 15,
Enderby 13 against 12.
5. Two rolls had no failure written: the body, and Sammy's ankle pull. The
body is now marked "no roll" outright, because there is no better answer
to buy. The pull has a fumble result.
New guard: check-behaviour parses the scenario's own fight line out of the page
HTML and compares it to the actor the build will generate — hit points against
hitPoints(CON,SIZ), armour against naturalArmour, and shear damage against the
catalogue entry for whatever he is actually holding. Verified it bites by
reverting the damage to 1d8+1.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
d063b3c016
commit
1bf8d7f6fb
@@ -183,6 +183,6 @@ The build runs all three guards before it writes anything:
|
||||
check-rules: OK — 87 rules, 20 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, 927 keys, no leaf/branch collisions
|
||||
check-behaviour: OK — 42 behavioural tests
|
||||
check-behaviour: OK — 43 behavioural tests
|
||||
```
|
||||
<!-- guards:end -->
|
||||
|
||||
@@ -221,8 +221,9 @@ not orderly. Roughly **thirty people are still inside**: cast in costume, crew,
|
||||
party who went the wrong way, and three things that are not any of those.
|
||||
|
||||
**Josh Pardoe is dead.** He is in the east corridor, behind the false wall, and he has
|
||||
been for half an hour. He is not marked. `[CUS: Medicine or First Aid — nothing killed
|
||||
him that leaves a sign; Braithwaite will say cold, and will not be able to say why]`
|
||||
been for half an hour. He is not marked. **No roll:** nothing killed him that leaves a
|
||||
sign. Anyone with Medicine or First Aid says cold and cannot say why, and a good roll
|
||||
does not buy a better answer, because there is not one.
|
||||
|
||||
### The three
|
||||
|
||||
@@ -237,7 +238,7 @@ it right."*
|
||||
|
||||
- **Does:** counts people. Out loud. In a group of six she will say *six*, and then she
|
||||
will say *five*, and then she will go and make it true.
|
||||
- **Fight:** cold, strong, ignores pain. **HP 13, armour 0, Brawl 55%, 1d6 damage.** She
|
||||
- **Fight:** cold, strong, ignores pain. **HP 12, armour 0, Brawl 55%, 1d6 damage.** She
|
||||
does not defend herself. She counts while you hit her.
|
||||
- **Script break:** she stops the moment the count is right. Put a person back in the
|
||||
room and she is finished with it. *This is the cheapest kill in the scenario and the
|
||||
@@ -251,7 +252,9 @@ come in and hide with him."*
|
||||
- **Does:** laughs, moves inside the walls, and takes hold of ankles. He does not hurt
|
||||
anybody. He pulls, and he is very strong, and the hole is nine inches across.
|
||||
- **Fight:** you cannot hit him. He is in the wall. **Athletics or Brawl vs STR 17 to get
|
||||
a leg back**, or somebody else pulls with you for an automatic success.
|
||||
a leg back**, or somebody else pulls with you for an automatic success. **On a fumble**
|
||||
they go over on their face and lose whatever was in their hands under the floorboards.
|
||||
He does not get to keep the leg.
|
||||
- **Script break:** he is hiding, so he stops when he is *found*. Say his name and open
|
||||
the panel and he is not there any more.
|
||||
|
||||
@@ -262,9 +265,10 @@ coming in now, but he will see you off it."*
|
||||
|
||||
- **Does:** carries the shears, moves at a walk, and will not enter the building. He is
|
||||
the reason nobody gets to the car park.
|
||||
- **Fight:** **HP 16, armour 1 (coat), shears 1d8+1, Brawl/Melee 60%.** He is the actual
|
||||
fight in this scenario. He is slow, he never runs, and he is between them and the way
|
||||
out.
|
||||
- **Fight:** **HP 20, armour 2, shears 1d8+2, Brawl/Melee 60%.** He is the actual fight
|
||||
in this scenario. He is slow, he never runs, and he is between them and the way out.
|
||||
Expect about four and a half rounds, and expect somebody to get hurt.
|
||||
*(Tuned by playing it thirty times — see the playtest note at the foot of this file.)*
|
||||
- **Script break:** *he will not come in the house.* Going inside is a complete answer
|
||||
and it costs nothing. Reward it. He waits on the lawn.
|
||||
|
||||
@@ -275,8 +279,9 @@ Someone has to get thirty people across ninety feet of lawn past Old Marrow.
|
||||
- **Three ways to run it:** fight him, distract him (he follows anyone off the grass), or
|
||||
go back inside and out through the kitchens — Sharrock built the sets and knows there
|
||||
is a door there; the plans are pinned in the green room for anyone else.
|
||||
- **Rounds:** four is plenty. He closes at a walk, one attack a round, and he goes for
|
||||
whoever is furthest from the house.
|
||||
- **Rounds:** four or five. He closes at a walk, one attack a round, and he goes for
|
||||
whoever is furthest from the house. He drops somebody in about one fight in three —
|
||||
and *dropped* is dropped, not dying.
|
||||
- **If it goes badly:** he does not pursue anyone indoors and he does not finish anybody
|
||||
off. He sees them off the grass. That is his whole page.
|
||||
- **Idle players:** hand them the hen party — six frightened people who need telling what
|
||||
@@ -464,3 +469,33 @@ If there is time — and there usually is, because this ends early — she says
|
||||
**OPEN DAY** is the longer, quieter one — 2h15, no combat, a fixed timetable — and it is
|
||||
built for the ten-agent roster rather than these six. Run either. They are alternative
|
||||
first nights and nothing in the campaign depends on which.
|
||||
|
||||
---
|
||||
|
||||
## Playtest note — one run, six characters, 12 August
|
||||
|
||||
Played through in Foundry with the six on their civilian sheets. Five things came out
|
||||
of it, all now fixed:
|
||||
|
||||
1. **Pollard and Agyeman were armed.** The `police` trade kit contains a revolver and a
|
||||
stab vest — right for a serving officer, wrong for a British civilian, and it ended
|
||||
the only fight in one round. The civilian build now strips firearms and body armour
|
||||
from trade kit, and the build throws if one gets through. Finch keeps her knife.
|
||||
2. **Old Marrow's shears were a utility knife.** The page said 1d8+1; the actor in the
|
||||
pack carried 1d4+2. He now carries a billhook — a real garden tool in the catalogue —
|
||||
and the page says 1d8+2, which is what a billhook does.
|
||||
3. **He was too soft.** At the original numbers he died in 2.4 rounds and in 6 runs of
|
||||
20 he was dead before he swung. At **HP 20, armour 2** he lasts about four and a half
|
||||
rounds, somebody is hurt in 28 runs of 30, and somebody goes down in 9.
|
||||
4. **Two stat lines disagreed with the sheets** (Marrow 16 vs 15, Enderby 13 vs 12).
|
||||
Both corrected, and `check-behaviour` now parses this document's fight line and
|
||||
compares it to the actor the build generates.
|
||||
5. **Two rolls had no failure written.** The body (now marked *no roll*) and Sammy's
|
||||
ankle pull (now has a fumble result).
|
||||
|
||||
The run itself: Act One's optional Spot clues both missed and cost nothing, because the
|
||||
essentials are automatic. Ashcroft found Edith Crane on Research. Braithwaite failed the
|
||||
body twice, which no longer matters. Renshaw broke Sister Enderby by walking the sixth
|
||||
person back into the room without a die being rolled. Braithwaite fumbled the ankle pull
|
||||
on a 100 and Sharrock hauled him out. Marrow took four rounds and put Pollard on eight
|
||||
hit points. Renshaw talked Tunnicliffe down on a Persuade success. Panel down at 23:40.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
MANIFEST-000004
|
||||
MANIFEST-000002
|
||||
|
||||
+1
-5
@@ -1,5 +1 @@
|
||||
2026/08/12-17:49:53.368182 1740df000 Recovering log #3
|
||||
2026/08/12-17:49:53.368621 1740df000 Level-0 table #5: started
|
||||
2026/08/12-17:49:53.368768 1740df000 Level-0 table #5: 4591 bytes OK
|
||||
2026/08/12-17:49:53.369101 1740df000 Delete type=0 #3
|
||||
2026/08/12-17:49:53.369149 1740df000 Delete type=3 #2
|
||||
2026/08/12-18:21:45.126312 1700b3000 Delete type=3 #1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
2026/08/12-17:49:38.068944 170d6f000 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 @@
|
||||
MANIFEST-000004
|
||||
MANIFEST-000002
|
||||
|
||||
@@ -1,5 +1 @@
|
||||
2026/08/12-17:49:53.391934 1750f7000 Recovering log #3
|
||||
2026/08/12-17:49:53.392050 1750f7000 Level-0 table #5: started
|
||||
2026/08/12-17:49:53.392170 1750f7000 Level-0 table #5: 4129 bytes OK
|
||||
2026/08/12-17:49:53.392389 1750f7000 Delete type=0 #3
|
||||
2026/08/12-17:49:53.392428 1750f7000 Delete type=3 #2
|
||||
2026/08/12-18:21:45.197775 16f09b000 Delete type=3 #1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
2026/08/12-17:49:38.136741 17157b000 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
@@ -1 +1 @@
|
||||
MANIFEST-000004
|
||||
MANIFEST-000002
|
||||
|
||||
+1
-5
@@ -1,5 +1 @@
|
||||
2026/08/12-17:49:53.370014 1748eb000 Recovering log #3
|
||||
2026/08/12-17:49:53.370516 1748eb000 Level-0 table #5: started
|
||||
2026/08/12-17:49:53.370852 1748eb000 Level-0 table #5: 31614 bytes OK
|
||||
2026/08/12-17:49:53.371120 1748eb000 Delete type=0 #3
|
||||
2026/08/12-17:49:53.371155 1748eb000 Delete type=3 #2
|
||||
2026/08/12-18:21:45.128218 16f09b000 Delete type=3 #1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
2026/08/12-17:49:38.070939 171d87000 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 @@
|
||||
MANIFEST-000004
|
||||
MANIFEST-000002
|
||||
|
||||
@@ -1,5 +1 @@
|
||||
2026/08/12-17:49:53.383707 1740df000 Recovering log #3
|
||||
2026/08/12-17:49:53.384445 1740df000 Level-0 table #5: started
|
||||
2026/08/12-17:49:53.384803 1740df000 Level-0 table #5: 44041 bytes OK
|
||||
2026/08/12-17:49:53.385114 1740df000 Delete type=0 #3
|
||||
2026/08/12-17:49:53.385152 1740df000 Delete type=3 #2
|
||||
2026/08/12-18:21:45.182031 16e88f000 Delete type=3 #1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
2026/08/12-17:49:38.120600 170563000 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
@@ -1 +1 @@
|
||||
MANIFEST-000004
|
||||
MANIFEST-000002
|
||||
|
||||
+1
-5
@@ -1,5 +1 @@
|
||||
2026/08/12-17:49:53.355183 1748eb000 Recovering log #3
|
||||
2026/08/12-17:49:53.357363 1748eb000 Level-0 table #5: started
|
||||
2026/08/12-17:49:53.358793 1748eb000 Level-0 table #5: 225945 bytes OK
|
||||
2026/08/12-17:49:53.359057 1748eb000 Delete type=0 #3
|
||||
2026/08/12-17:49:53.359096 1748eb000 Delete type=3 #2
|
||||
2026/08/12-18:21:45.164307 16e88f000 Delete type=3 #1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
2026/08/12-17:49:38.104926 171d87000 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 @@
|
||||
MANIFEST-000004
|
||||
MANIFEST-000002
|
||||
|
||||
+1
-5
@@ -1,5 +1 @@
|
||||
2026/08/12-17:49:53.364381 175903000 Recovering log #3
|
||||
2026/08/12-17:49:53.364910 175903000 Level-0 table #5: started
|
||||
2026/08/12-17:49:53.365049 175903000 Level-0 table #5: 3295 bytes OK
|
||||
2026/08/12-17:49:53.365394 175903000 Delete type=0 #3
|
||||
2026/08/12-17:49:53.365437 175903000 Delete type=3 #2
|
||||
2026/08/12-18:21:45.192532 16e88f000 Delete type=3 #1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
2026/08/12-17:49:38.131380 17157b000 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 @@
|
||||
MANIFEST-000004
|
||||
MANIFEST-000002
|
||||
|
||||
+1
-5
@@ -1,5 +1 @@
|
||||
2026/08/12-17:49:53.343466 1740df000 Recovering log #3
|
||||
2026/08/12-17:49:53.346354 1740df000 Level-0 table #5: started
|
||||
2026/08/12-17:49:53.349680 1740df000 Level-0 table #5: 546705 bytes OK
|
||||
2026/08/12-17:49:53.350185 1740df000 Delete type=0 #3
|
||||
2026/08/12-17:49:53.350240 1740df000 Delete type=3 #2
|
||||
2026/08/12-18:21:45.149192 16f09b000 Delete type=3 #1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
2026/08/12-17:49:38.090847 170563000 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 @@
|
||||
MANIFEST-000004
|
||||
MANIFEST-000002
|
||||
|
||||
+1
-5
@@ -1,5 +1 @@
|
||||
2026/08/12-17:49:53.373813 1750f7000 Recovering log #3
|
||||
2026/08/12-17:49:53.374272 1750f7000 Level-0 table #5: started
|
||||
2026/08/12-17:49:53.374551 1750f7000 Level-0 table #5: 21613 bytes OK
|
||||
2026/08/12-17:49:53.374779 1750f7000 Delete type=0 #3
|
||||
2026/08/12-17:49:53.374812 1750f7000 Delete type=3 #2
|
||||
2026/08/12-18:21:45.189595 1700b3000 Delete type=3 #1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
2026/08/12-17:49:38.128383 170563000 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 @@
|
||||
MANIFEST-000004
|
||||
MANIFEST-000002
|
||||
|
||||
+1
-5
@@ -1,5 +1 @@
|
||||
2026/08/12-17:49:53.385969 1740df000 Recovering log #3
|
||||
2026/08/12-17:49:53.386885 1740df000 Level-0 table #5: started
|
||||
2026/08/12-17:49:53.387263 1740df000 Level-0 table #5: 43953 bytes OK
|
||||
2026/08/12-17:49:53.387509 1740df000 Delete type=0 #3
|
||||
2026/08/12-17:49:53.387539 1740df000 Delete type=3 #2
|
||||
2026/08/12-18:21:45.186121 16f09b000 Delete type=3 #1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
2026/08/12-17:49:38.124895 171d87000 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
@@ -1 +1 @@
|
||||
MANIFEST-000004
|
||||
MANIFEST-000002
|
||||
|
||||
+1
-5
@@ -1,5 +1 @@
|
||||
2026/08/12-17:49:53.375753 175903000 Recovering log #3
|
||||
2026/08/12-17:49:53.376385 175903000 Level-0 table #5: started
|
||||
2026/08/12-17:49:53.376715 175903000 Level-0 table #5: 33484 bytes OK
|
||||
2026/08/12-17:49:53.376959 175903000 Delete type=0 #3
|
||||
2026/08/12-17:49:53.376987 175903000 Delete type=3 #2
|
||||
2026/08/12-18:21:45.196269 16f09b000 Delete type=3 #1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
2026/08/12-17:49:38.135361 17157b000 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 @@
|
||||
MANIFEST-000004
|
||||
MANIFEST-000002
|
||||
|
||||
+1
-5
@@ -1,5 +1 @@
|
||||
2026/08/12-17:49:53.361533 175903000 Recovering log #3
|
||||
2026/08/12-17:49:53.361695 175903000 Level-0 table #5: started
|
||||
2026/08/12-17:49:53.361841 175903000 Level-0 table #5: 7590 bytes OK
|
||||
2026/08/12-17:49:53.362062 175903000 Delete type=0 #3
|
||||
2026/08/12-17:49:53.362096 175903000 Delete type=3 #2
|
||||
2026/08/12-18:21:45.120890 16e88f000 Delete type=3 #1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
2026/08/12-17:49:38.062885 171d87000 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
@@ -1 +1 @@
|
||||
MANIFEST-000004
|
||||
MANIFEST-000002
|
||||
|
||||
+1
-5
@@ -1,5 +1 @@
|
||||
2026/08/12-17:49:53.388330 1740df000 Recovering log #3
|
||||
2026/08/12-17:49:53.388940 1740df000 Level-0 table #5: started
|
||||
2026/08/12-17:49:53.389166 1740df000 Level-0 table #5: 16902 bytes OK
|
||||
2026/08/12-17:49:53.389390 1740df000 Delete type=0 #3
|
||||
2026/08/12-17:49:53.389423 1740df000 Delete type=3 #2
|
||||
2026/08/12-18:21:45.191070 16f09b000 Delete type=3 #1
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
2026/08/12-17:49:38.129923 17157b000 Delete type=3 #1
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user