diff --git a/README.md b/README.md
index 5d5ba16..7f51e3b 100644
--- a/README.md
+++ b/README.md
@@ -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
```
diff --git a/docs/scenarios/LAST_ADMISSION.md b/docs/scenarios/LAST_ADMISSION.md
index ad362b8..fb806e9 100644
--- a/docs/scenarios/LAST_ADMISSION.md
+++ b/docs/scenarios/LAST_ADMISSION.md
@@ -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.
diff --git a/packs/armour/000003.log b/packs/armour/000003.log
new file mode 100644
index 0000000..9b6d27d
Binary files /dev/null and b/packs/armour/000003.log differ
diff --git a/packs/armour/000005.ldb b/packs/armour/000005.ldb
deleted file mode 100644
index c982555..0000000
Binary files a/packs/armour/000005.ldb and /dev/null differ
diff --git a/packs/armour/000006.log b/packs/armour/000006.log
deleted file mode 100644
index 1a1bb27..0000000
Binary files a/packs/armour/000006.log and /dev/null differ
diff --git a/packs/armour/CURRENT b/packs/armour/CURRENT
index cacca75..1a84852 100644
--- a/packs/armour/CURRENT
+++ b/packs/armour/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/armour/LOG b/packs/armour/LOG
index 1a1ad09..5fdba7b 100644
--- a/packs/armour/LOG
+++ b/packs/armour/LOG
@@ -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
diff --git a/packs/armour/LOG.old b/packs/armour/LOG.old
deleted file mode 100644
index b34de91..0000000
--- a/packs/armour/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.068944 170d6f000 Delete type=3 #1
diff --git a/packs/armour/MANIFEST-000002 b/packs/armour/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/armour/MANIFEST-000002 differ
diff --git a/packs/armour/MANIFEST-000004 b/packs/armour/MANIFEST-000004
deleted file mode 100644
index 9c05997..0000000
Binary files a/packs/armour/MANIFEST-000004 and /dev/null differ
diff --git a/packs/expedition/000003.log b/packs/expedition/000003.log
new file mode 100644
index 0000000..263295b
Binary files /dev/null and b/packs/expedition/000003.log differ
diff --git a/packs/expedition/000005.ldb b/packs/expedition/000005.ldb
deleted file mode 100644
index 4ff460d..0000000
Binary files a/packs/expedition/000005.ldb and /dev/null differ
diff --git a/packs/expedition/000006.log b/packs/expedition/000006.log
deleted file mode 100644
index 268b187..0000000
Binary files a/packs/expedition/000006.log and /dev/null differ
diff --git a/packs/expedition/CURRENT b/packs/expedition/CURRENT
index cacca75..1a84852 100644
--- a/packs/expedition/CURRENT
+++ b/packs/expedition/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/expedition/LOG b/packs/expedition/LOG
index d739dbf..95d40a6 100644
--- a/packs/expedition/LOG
+++ b/packs/expedition/LOG
@@ -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
diff --git a/packs/expedition/LOG.old b/packs/expedition/LOG.old
deleted file mode 100644
index 34670cb..0000000
--- a/packs/expedition/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.136741 17157b000 Delete type=3 #1
diff --git a/packs/expedition/MANIFEST-000002 b/packs/expedition/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/expedition/MANIFEST-000002 differ
diff --git a/packs/expedition/MANIFEST-000004 b/packs/expedition/MANIFEST-000004
deleted file mode 100644
index 47fbcd4..0000000
Binary files a/packs/expedition/MANIFEST-000004 and /dev/null differ
diff --git a/packs/gear/000003.log b/packs/gear/000003.log
new file mode 100644
index 0000000..629ba6d
Binary files /dev/null and b/packs/gear/000003.log differ
diff --git a/packs/gear/000005.ldb b/packs/gear/000005.ldb
deleted file mode 100644
index d9bac03..0000000
Binary files a/packs/gear/000005.ldb and /dev/null differ
diff --git a/packs/gear/000006.log b/packs/gear/000006.log
deleted file mode 100644
index d1deb9b..0000000
Binary files a/packs/gear/000006.log and /dev/null differ
diff --git a/packs/gear/CURRENT b/packs/gear/CURRENT
index cacca75..1a84852 100644
--- a/packs/gear/CURRENT
+++ b/packs/gear/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/gear/LOG b/packs/gear/LOG
index 0f44096..5d025c6 100644
--- a/packs/gear/LOG
+++ b/packs/gear/LOG
@@ -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
diff --git a/packs/gear/LOG.old b/packs/gear/LOG.old
deleted file mode 100644
index 55d3bae..0000000
--- a/packs/gear/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.070939 171d87000 Delete type=3 #1
diff --git a/packs/gear/MANIFEST-000002 b/packs/gear/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/gear/MANIFEST-000002 differ
diff --git a/packs/gear/MANIFEST-000004 b/packs/gear/MANIFEST-000004
deleted file mode 100644
index f7cd73c..0000000
Binary files a/packs/gear/MANIFEST-000004 and /dev/null differ
diff --git a/packs/lastadmission/000003.log b/packs/lastadmission/000003.log
new file mode 100644
index 0000000..817f360
Binary files /dev/null and b/packs/lastadmission/000003.log differ
diff --git a/packs/lastadmission/000005.ldb b/packs/lastadmission/000005.ldb
deleted file mode 100644
index 527a85d..0000000
Binary files a/packs/lastadmission/000005.ldb and /dev/null differ
diff --git a/packs/lastadmission/000006.log b/packs/lastadmission/000006.log
deleted file mode 100644
index 5530ffa..0000000
Binary files a/packs/lastadmission/000006.log and /dev/null differ
diff --git a/packs/lastadmission/CURRENT b/packs/lastadmission/CURRENT
index cacca75..1a84852 100644
--- a/packs/lastadmission/CURRENT
+++ b/packs/lastadmission/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/lastadmission/LOG b/packs/lastadmission/LOG
index 7860066..87c7871 100644
--- a/packs/lastadmission/LOG
+++ b/packs/lastadmission/LOG
@@ -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
diff --git a/packs/lastadmission/LOG.old b/packs/lastadmission/LOG.old
deleted file mode 100644
index 29226ae..0000000
--- a/packs/lastadmission/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.120600 170563000 Delete type=3 #1
diff --git a/packs/lastadmission/MANIFEST-000002 b/packs/lastadmission/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/lastadmission/MANIFEST-000002 differ
diff --git a/packs/lastadmission/MANIFEST-000004 b/packs/lastadmission/MANIFEST-000004
deleted file mode 100644
index 453e9a7..0000000
Binary files a/packs/lastadmission/MANIFEST-000004 and /dev/null differ
diff --git a/packs/npcs/000003.log b/packs/npcs/000003.log
new file mode 100644
index 0000000..09b2bf6
Binary files /dev/null and b/packs/npcs/000003.log differ
diff --git a/packs/npcs/000005.ldb b/packs/npcs/000005.ldb
deleted file mode 100644
index 29f69de..0000000
Binary files a/packs/npcs/000005.ldb and /dev/null differ
diff --git a/packs/npcs/000006.log b/packs/npcs/000006.log
deleted file mode 100644
index ac2ef10..0000000
Binary files a/packs/npcs/000006.log and /dev/null differ
diff --git a/packs/npcs/CURRENT b/packs/npcs/CURRENT
index cacca75..1a84852 100644
--- a/packs/npcs/CURRENT
+++ b/packs/npcs/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/npcs/LOG b/packs/npcs/LOG
index 5f0ecf6..9a22ffa 100644
--- a/packs/npcs/LOG
+++ b/packs/npcs/LOG
@@ -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
diff --git a/packs/npcs/LOG.old b/packs/npcs/LOG.old
deleted file mode 100644
index 69b692b..0000000
--- a/packs/npcs/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.104926 171d87000 Delete type=3 #1
diff --git a/packs/npcs/MANIFEST-000002 b/packs/npcs/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/npcs/MANIFEST-000002 differ
diff --git a/packs/npcs/MANIFEST-000004 b/packs/npcs/MANIFEST-000004
deleted file mode 100644
index 116e469..0000000
Binary files a/packs/npcs/MANIFEST-000004 and /dev/null differ
diff --git a/packs/powers/000003.log b/packs/powers/000003.log
new file mode 100644
index 0000000..d723043
Binary files /dev/null and b/packs/powers/000003.log differ
diff --git a/packs/powers/000005.ldb b/packs/powers/000005.ldb
deleted file mode 100644
index 7f540c6..0000000
Binary files a/packs/powers/000005.ldb and /dev/null differ
diff --git a/packs/powers/000006.log b/packs/powers/000006.log
deleted file mode 100644
index 43e306f..0000000
Binary files a/packs/powers/000006.log and /dev/null differ
diff --git a/packs/powers/CURRENT b/packs/powers/CURRENT
index cacca75..1a84852 100644
--- a/packs/powers/CURRENT
+++ b/packs/powers/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/powers/LOG b/packs/powers/LOG
index b11bd8e..ab5d4dd 100644
--- a/packs/powers/LOG
+++ b/packs/powers/LOG
@@ -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
diff --git a/packs/powers/LOG.old b/packs/powers/LOG.old
deleted file mode 100644
index c5eadc4..0000000
--- a/packs/powers/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.131380 17157b000 Delete type=3 #1
diff --git a/packs/powers/MANIFEST-000002 b/packs/powers/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/powers/MANIFEST-000002 differ
diff --git a/packs/powers/MANIFEST-000004 b/packs/powers/MANIFEST-000004
deleted file mode 100644
index 20de082..0000000
Binary files a/packs/powers/MANIFEST-000004 and /dev/null differ
diff --git a/packs/pregens/000003.log b/packs/pregens/000003.log
new file mode 100644
index 0000000..a5c1abe
Binary files /dev/null and b/packs/pregens/000003.log differ
diff --git a/packs/pregens/000005.ldb b/packs/pregens/000005.ldb
deleted file mode 100644
index 3049d5c..0000000
Binary files a/packs/pregens/000005.ldb and /dev/null differ
diff --git a/packs/pregens/000006.log b/packs/pregens/000006.log
deleted file mode 100644
index cf7b22d..0000000
Binary files a/packs/pregens/000006.log and /dev/null differ
diff --git a/packs/pregens/CURRENT b/packs/pregens/CURRENT
index cacca75..1a84852 100644
--- a/packs/pregens/CURRENT
+++ b/packs/pregens/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/pregens/LOG b/packs/pregens/LOG
index 8c4274c..e0f3628 100644
--- a/packs/pregens/LOG
+++ b/packs/pregens/LOG
@@ -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
diff --git a/packs/pregens/LOG.old b/packs/pregens/LOG.old
deleted file mode 100644
index 6f758ad..0000000
--- a/packs/pregens/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.090847 170563000 Delete type=3 #1
diff --git a/packs/pregens/MANIFEST-000002 b/packs/pregens/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/pregens/MANIFEST-000002 differ
diff --git a/packs/pregens/MANIFEST-000004 b/packs/pregens/MANIFEST-000004
deleted file mode 100644
index 49b29a4..0000000
Binary files a/packs/pregens/MANIFEST-000004 and /dev/null differ
diff --git a/packs/primer/000003.log b/packs/primer/000003.log
new file mode 100644
index 0000000..fff1285
Binary files /dev/null and b/packs/primer/000003.log differ
diff --git a/packs/primer/000005.ldb b/packs/primer/000005.ldb
deleted file mode 100644
index 669e7b1..0000000
Binary files a/packs/primer/000005.ldb and /dev/null differ
diff --git a/packs/primer/000006.log b/packs/primer/000006.log
deleted file mode 100644
index daa37bb..0000000
Binary files a/packs/primer/000006.log and /dev/null differ
diff --git a/packs/primer/CURRENT b/packs/primer/CURRENT
index cacca75..1a84852 100644
--- a/packs/primer/CURRENT
+++ b/packs/primer/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/primer/LOG b/packs/primer/LOG
index fb65ede..b2b4b92 100644
--- a/packs/primer/LOG
+++ b/packs/primer/LOG
@@ -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
diff --git a/packs/primer/LOG.old b/packs/primer/LOG.old
deleted file mode 100644
index af34f23..0000000
--- a/packs/primer/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.128383 170563000 Delete type=3 #1
diff --git a/packs/primer/MANIFEST-000002 b/packs/primer/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/primer/MANIFEST-000002 differ
diff --git a/packs/primer/MANIFEST-000004 b/packs/primer/MANIFEST-000004
deleted file mode 100644
index 2ce4ec2..0000000
Binary files a/packs/primer/MANIFEST-000004 and /dev/null differ
diff --git a/packs/prologue/000003.log b/packs/prologue/000003.log
new file mode 100644
index 0000000..9b97058
Binary files /dev/null and b/packs/prologue/000003.log differ
diff --git a/packs/prologue/000005.ldb b/packs/prologue/000005.ldb
deleted file mode 100644
index 03d2f7f..0000000
Binary files a/packs/prologue/000005.ldb and /dev/null differ
diff --git a/packs/prologue/000006.log b/packs/prologue/000006.log
deleted file mode 100644
index 2d03e81..0000000
Binary files a/packs/prologue/000006.log and /dev/null differ
diff --git a/packs/prologue/CURRENT b/packs/prologue/CURRENT
index cacca75..1a84852 100644
--- a/packs/prologue/CURRENT
+++ b/packs/prologue/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/prologue/LOG b/packs/prologue/LOG
index e099dca..c9d4873 100644
--- a/packs/prologue/LOG
+++ b/packs/prologue/LOG
@@ -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
diff --git a/packs/prologue/LOG.old b/packs/prologue/LOG.old
deleted file mode 100644
index 55c511a..0000000
--- a/packs/prologue/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.124895 171d87000 Delete type=3 #1
diff --git a/packs/prologue/MANIFEST-000002 b/packs/prologue/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/prologue/MANIFEST-000002 differ
diff --git a/packs/prologue/MANIFEST-000004 b/packs/prologue/MANIFEST-000004
deleted file mode 100644
index 8e0eaa0..0000000
Binary files a/packs/prologue/MANIFEST-000004 and /dev/null differ
diff --git a/packs/rules/000003.log b/packs/rules/000003.log
new file mode 100644
index 0000000..15e7e16
Binary files /dev/null and b/packs/rules/000003.log differ
diff --git a/packs/rules/000005.ldb b/packs/rules/000005.ldb
deleted file mode 100644
index c8f9c7d..0000000
Binary files a/packs/rules/000005.ldb and /dev/null differ
diff --git a/packs/rules/000006.log b/packs/rules/000006.log
deleted file mode 100644
index 7b08998..0000000
Binary files a/packs/rules/000006.log and /dev/null differ
diff --git a/packs/rules/CURRENT b/packs/rules/CURRENT
index cacca75..1a84852 100644
--- a/packs/rules/CURRENT
+++ b/packs/rules/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/rules/LOG b/packs/rules/LOG
index dc77208..799afa9 100644
--- a/packs/rules/LOG
+++ b/packs/rules/LOG
@@ -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
diff --git a/packs/rules/LOG.old b/packs/rules/LOG.old
deleted file mode 100644
index eeedb8d..0000000
--- a/packs/rules/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.135361 17157b000 Delete type=3 #1
diff --git a/packs/rules/MANIFEST-000002 b/packs/rules/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/rules/MANIFEST-000002 differ
diff --git a/packs/rules/MANIFEST-000004 b/packs/rules/MANIFEST-000004
deleted file mode 100644
index 15f0607..0000000
Binary files a/packs/rules/MANIFEST-000004 and /dev/null differ
diff --git a/packs/skills/000003.log b/packs/skills/000003.log
new file mode 100644
index 0000000..2a55440
Binary files /dev/null and b/packs/skills/000003.log differ
diff --git a/packs/skills/000005.ldb b/packs/skills/000005.ldb
deleted file mode 100644
index eb948ea..0000000
Binary files a/packs/skills/000005.ldb and /dev/null differ
diff --git a/packs/skills/000006.log b/packs/skills/000006.log
deleted file mode 100644
index 1989ee1..0000000
Binary files a/packs/skills/000006.log and /dev/null differ
diff --git a/packs/skills/CURRENT b/packs/skills/CURRENT
index cacca75..1a84852 100644
--- a/packs/skills/CURRENT
+++ b/packs/skills/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/skills/LOG b/packs/skills/LOG
index 4676a1a..82892cb 100644
--- a/packs/skills/LOG
+++ b/packs/skills/LOG
@@ -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
diff --git a/packs/skills/LOG.old b/packs/skills/LOG.old
deleted file mode 100644
index 51b565f..0000000
--- a/packs/skills/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.062885 171d87000 Delete type=3 #1
diff --git a/packs/skills/MANIFEST-000002 b/packs/skills/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/skills/MANIFEST-000002 differ
diff --git a/packs/skills/MANIFEST-000004 b/packs/skills/MANIFEST-000004
deleted file mode 100644
index 90efb97..0000000
Binary files a/packs/skills/MANIFEST-000004 and /dev/null differ
diff --git a/packs/slice/000003.log b/packs/slice/000003.log
new file mode 100644
index 0000000..39926e8
Binary files /dev/null and b/packs/slice/000003.log differ
diff --git a/packs/slice/000005.ldb b/packs/slice/000005.ldb
deleted file mode 100644
index ac4df01..0000000
Binary files a/packs/slice/000005.ldb and /dev/null differ
diff --git a/packs/slice/000006.log b/packs/slice/000006.log
deleted file mode 100644
index c25ac75..0000000
Binary files a/packs/slice/000006.log and /dev/null differ
diff --git a/packs/slice/CURRENT b/packs/slice/CURRENT
index cacca75..1a84852 100644
--- a/packs/slice/CURRENT
+++ b/packs/slice/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/slice/LOG b/packs/slice/LOG
index 8c276c0..4dacded 100644
--- a/packs/slice/LOG
+++ b/packs/slice/LOG
@@ -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
diff --git a/packs/slice/LOG.old b/packs/slice/LOG.old
deleted file mode 100644
index d316f21..0000000
--- a/packs/slice/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.129923 17157b000 Delete type=3 #1
diff --git a/packs/slice/MANIFEST-000002 b/packs/slice/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/slice/MANIFEST-000002 differ
diff --git a/packs/slice/MANIFEST-000004 b/packs/slice/MANIFEST-000004
deleted file mode 100644
index 0966a50..0000000
Binary files a/packs/slice/MANIFEST-000004 and /dev/null differ
diff --git a/packs/starter/000003.log b/packs/starter/000003.log
new file mode 100644
index 0000000..02f266f
Binary files /dev/null and b/packs/starter/000003.log differ
diff --git a/packs/starter/000005.ldb b/packs/starter/000005.ldb
deleted file mode 100644
index c0f9d9b..0000000
Binary files a/packs/starter/000005.ldb and /dev/null differ
diff --git a/packs/starter/000006.log b/packs/starter/000006.log
deleted file mode 100644
index aaf167c..0000000
Binary files a/packs/starter/000006.log and /dev/null differ
diff --git a/packs/starter/CURRENT b/packs/starter/CURRENT
index cacca75..1a84852 100644
--- a/packs/starter/CURRENT
+++ b/packs/starter/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/starter/LOG b/packs/starter/LOG
index 0f0d523..9b9c137 100644
--- a/packs/starter/LOG
+++ b/packs/starter/LOG
@@ -1,5 +1 @@
-2026/08/12-17:49:53.379303 1740df000 Recovering log #3
-2026/08/12-17:49:53.380189 1740df000 Level-0 table #5: started
-2026/08/12-17:49:53.380887 1740df000 Level-0 table #5: 82299 bytes OK
-2026/08/12-17:49:53.381137 1740df000 Delete type=0 #3
-2026/08/12-17:49:53.381171 1740df000 Delete type=3 #2
+2026/08/12-18:21:45.175057 16f09b000 Delete type=3 #1
diff --git a/packs/starter/LOG.old b/packs/starter/LOG.old
deleted file mode 100644
index 88280c7..0000000
--- a/packs/starter/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.115076 170563000 Delete type=3 #1
diff --git a/packs/starter/MANIFEST-000002 b/packs/starter/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/starter/MANIFEST-000002 differ
diff --git a/packs/starter/MANIFEST-000004 b/packs/starter/MANIFEST-000004
deleted file mode 100644
index 87687fc..0000000
Binary files a/packs/starter/MANIFEST-000004 and /dev/null differ
diff --git a/packs/tables/000003.log b/packs/tables/000003.log
new file mode 100644
index 0000000..f125b7d
Binary files /dev/null and b/packs/tables/000003.log differ
diff --git a/packs/tables/000005.ldb b/packs/tables/000005.ldb
deleted file mode 100644
index 64baa1c..0000000
Binary files a/packs/tables/000005.ldb and /dev/null differ
diff --git a/packs/tables/000006.log b/packs/tables/000006.log
deleted file mode 100644
index d5e06f3..0000000
Binary files a/packs/tables/000006.log and /dev/null differ
diff --git a/packs/tables/CURRENT b/packs/tables/CURRENT
index cacca75..1a84852 100644
--- a/packs/tables/CURRENT
+++ b/packs/tables/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/tables/LOG b/packs/tables/LOG
index 93eb909..6e67a56 100644
--- a/packs/tables/LOG
+++ b/packs/tables/LOG
@@ -1,5 +1 @@
-2026/08/12-17:49:53.390375 175903000 Recovering log #3
-2026/08/12-17:49:53.390930 175903000 Level-0 table #5: started
-2026/08/12-17:49:53.391056 175903000 Level-0 table #5: 3739 bytes OK
-2026/08/12-17:49:53.391269 175903000 Delete type=0 #3
-2026/08/12-17:49:53.391300 175903000 Delete type=3 #2
+2026/08/12-18:21:45.168964 16f8a7000 Delete type=3 #1
diff --git a/packs/tables/LOG.old b/packs/tables/LOG.old
deleted file mode 100644
index aabdd1c..0000000
--- a/packs/tables/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.109114 171d87000 Delete type=3 #1
diff --git a/packs/tables/MANIFEST-000002 b/packs/tables/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/tables/MANIFEST-000002 differ
diff --git a/packs/tables/MANIFEST-000004 b/packs/tables/MANIFEST-000004
deleted file mode 100644
index 004ff30..0000000
Binary files a/packs/tables/MANIFEST-000004 and /dev/null differ
diff --git a/packs/talents/000003.log b/packs/talents/000003.log
new file mode 100644
index 0000000..443b7ea
Binary files /dev/null and b/packs/talents/000003.log differ
diff --git a/packs/talents/000005.ldb b/packs/talents/000005.ldb
deleted file mode 100644
index fb653de..0000000
Binary files a/packs/talents/000005.ldb and /dev/null differ
diff --git a/packs/talents/000006.log b/packs/talents/000006.log
deleted file mode 100644
index 29003f7..0000000
Binary files a/packs/talents/000006.log and /dev/null differ
diff --git a/packs/talents/CURRENT b/packs/talents/CURRENT
index cacca75..1a84852 100644
--- a/packs/talents/CURRENT
+++ b/packs/talents/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/talents/LOG b/packs/talents/LOG
index 9e850ac..8e99eb2 100644
--- a/packs/talents/LOG
+++ b/packs/talents/LOG
@@ -1,5 +1 @@
-2026/08/12-17:49:53.362963 1748eb000 Recovering log #3
-2026/08/12-17:49:53.363098 1748eb000 Level-0 table #5: started
-2026/08/12-17:49:53.363267 1748eb000 Level-0 table #5: 5770 bytes OK
-2026/08/12-17:49:53.363499 1748eb000 Delete type=0 #3
-2026/08/12-17:49:53.363537 1748eb000 Delete type=3 #2
+2026/08/12-18:21:45.123309 16e88f000 Delete type=3 #1
diff --git a/packs/talents/LOG.old b/packs/talents/LOG.old
deleted file mode 100644
index e27c2b4..0000000
--- a/packs/talents/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.065656 17157b000 Delete type=3 #1
diff --git a/packs/talents/MANIFEST-000002 b/packs/talents/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/talents/MANIFEST-000002 differ
diff --git a/packs/talents/MANIFEST-000004 b/packs/talents/MANIFEST-000004
deleted file mode 100644
index f8c6b47..0000000
Binary files a/packs/talents/MANIFEST-000004 and /dev/null differ
diff --git a/packs/vehicles/000003.log b/packs/vehicles/000003.log
new file mode 100644
index 0000000..9950ce5
Binary files /dev/null and b/packs/vehicles/000003.log differ
diff --git a/packs/vehicles/000005.ldb b/packs/vehicles/000005.ldb
deleted file mode 100644
index f6b2cd4..0000000
Binary files a/packs/vehicles/000005.ldb and /dev/null differ
diff --git a/packs/vehicles/000006.log b/packs/vehicles/000006.log
deleted file mode 100644
index 47800e2..0000000
Binary files a/packs/vehicles/000006.log and /dev/null differ
diff --git a/packs/vehicles/CURRENT b/packs/vehicles/CURRENT
index cacca75..1a84852 100644
--- a/packs/vehicles/CURRENT
+++ b/packs/vehicles/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/vehicles/LOG b/packs/vehicles/LOG
index fb96f04..a096397 100644
--- a/packs/vehicles/LOG
+++ b/packs/vehicles/LOG
@@ -1,5 +1 @@
-2026/08/12-17:49:53.372199 1740df000 Recovering log #3
-2026/08/12-17:49:53.372664 1740df000 Level-0 table #5: started
-2026/08/12-17:49:53.372794 1740df000 Level-0 table #5: 6939 bytes OK
-2026/08/12-17:49:53.373008 1740df000 Delete type=0 #3
-2026/08/12-17:49:53.373046 1740df000 Delete type=3 #2
+2026/08/12-18:21:45.129984 1700b3000 Delete type=3 #1
diff --git a/packs/vehicles/LOG.old b/packs/vehicles/LOG.old
deleted file mode 100644
index f7be9ec..0000000
--- a/packs/vehicles/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.073160 171d87000 Delete type=3 #1
diff --git a/packs/vehicles/MANIFEST-000002 b/packs/vehicles/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/vehicles/MANIFEST-000002 differ
diff --git a/packs/vehicles/MANIFEST-000004 b/packs/vehicles/MANIFEST-000004
deleted file mode 100644
index d4d73b7..0000000
Binary files a/packs/vehicles/MANIFEST-000004 and /dev/null differ
diff --git a/packs/weapons/000003.log b/packs/weapons/000003.log
new file mode 100644
index 0000000..e1488ed
Binary files /dev/null and b/packs/weapons/000003.log differ
diff --git a/packs/weapons/000005.ldb b/packs/weapons/000005.ldb
deleted file mode 100644
index 742beba..0000000
Binary files a/packs/weapons/000005.ldb and /dev/null differ
diff --git a/packs/weapons/000006.log b/packs/weapons/000006.log
deleted file mode 100644
index 4d427a6..0000000
Binary files a/packs/weapons/000006.log and /dev/null differ
diff --git a/packs/weapons/CURRENT b/packs/weapons/CURRENT
index cacca75..1a84852 100644
--- a/packs/weapons/CURRENT
+++ b/packs/weapons/CURRENT
@@ -1 +1 @@
-MANIFEST-000004
+MANIFEST-000002
diff --git a/packs/weapons/LOG b/packs/weapons/LOG
index 2a3bdc8..732fc38 100644
--- a/packs/weapons/LOG
+++ b/packs/weapons/LOG
@@ -1,5 +1 @@
-2026/08/12-17:49:53.366404 1748eb000 Recovering log #3
-2026/08/12-17:49:53.366708 1748eb000 Level-0 table #5: started
-2026/08/12-17:49:53.366949 1748eb000 Level-0 table #5: 14767 bytes OK
-2026/08/12-17:49:53.367196 1748eb000 Delete type=0 #3
-2026/08/12-17:49:53.367229 1748eb000 Delete type=3 #2
+2026/08/12-18:21:45.124907 16f8a7000 Delete type=3 #1
diff --git a/packs/weapons/LOG.old b/packs/weapons/LOG.old
deleted file mode 100644
index c7c46aa..0000000
--- a/packs/weapons/LOG.old
+++ /dev/null
@@ -1 +0,0 @@
-2026/08/12-17:49:38.067337 17157b000 Delete type=3 #1
diff --git a/packs/weapons/MANIFEST-000002 b/packs/weapons/MANIFEST-000002
new file mode 100644
index 0000000..bbbc585
Binary files /dev/null and b/packs/weapons/MANIFEST-000002 differ
diff --git a/packs/weapons/MANIFEST-000004 b/packs/weapons/MANIFEST-000004
deleted file mode 100644
index 6a582af..0000000
Binary files a/packs/weapons/MANIFEST-000004 and /dev/null differ
diff --git a/tools/build-packs.mjs b/tools/build-packs.mjs
index 9965031..b9d0178 100644
--- a/tools/build-packs.mjs
+++ b/tools/build-packs.mjs
@@ -230,8 +230,20 @@ function expandFromRegister(spec, { where = "roster", civilian = false } = {}) {
const it = GEAR_LOOKUP.get(k) ?? WEAPON_LOOKUP.get(k) ?? ARMOUR_LOOKUP.get(k);
return !!it && (it.era === "anomalous" || !!it.coherence);
};
+ // No firearm and no body armour either. The police trade kit contains a sidearm and a
+ // stab vest, which is right for a serving officer and wrong for the person before the
+ // department found them — this is Britain, and the two ex-police pregens were walking
+ // into a civilian prologue armed and armoured. The department issues those. Playing
+ // LAST ADMISSION found it: its only fight was over in one round because a punter had
+ // a revolver. A criminal's knife stays; a knife is not an issued weapon.
+ const isIssuedForce = k => {
+ const w = WEAPON_LOOKUP.get(k);
+ if (w) return w.cls !== "melee";
+ return ARMOUR_LOOKUP.has(k);
+ };
const kitKeys = civilian
- ? [...R.kit, ...(spec.extraWeapons ?? []), ...(spec.extraGear ?? [])].filter(k => !isAnomalous(k))
+ ? [...R.kit, ...(spec.extraWeapons ?? []), ...(spec.extraGear ?? [])]
+ .filter(k => !isAnomalous(k) && !isIssuedForce(k))
: [...STANDING_ISSUE, ...R.kit,
...(isTrade ? INDUCTION.kit : []),
...(spec.extraWeapons ?? []), ...(spec.extraGear ?? []),
@@ -569,6 +581,9 @@ await writePack("armour", ARMOURS.map(a => {
return !!it && (it.era === "anomalous" || !!it.coherence);
});
if (odd.length) throw new Error(`${c.name} is carrying something anomalous: ${odd.join(", ")}`);
+ if (c.armour.length) throw new Error(`${c.name} is wearing armour: ${c.armour.join(", ")}`);
+ const guns = c.weapons.filter(k => WEAPON_LOOKUP.get(k)?.cls !== "melee");
+ if (guns.length) throw new Error(`${c.name} is carrying a firearm: ${guns.join(", ")}`);
// Same rule for skills: the linguist's core list contains trade cant, because it is
// a language and she is a linguist. Only a rating she could ONLY have been taught
// at the training centre is a failure.
diff --git a/tools/check-behaviour.mjs b/tools/check-behaviour.mjs
index 0cdce61..2021d8c 100644
--- a/tools/check-behaviour.mjs
+++ b/tools/check-behaviour.mjs
@@ -347,6 +347,35 @@ test("every roster agent has a before-the-department entry, and the set covers e
assert.equal(missing.length, 0, `no roster agent came out of: ${missing.join(", ")}`);
});
+// A stat line in prose that disagrees with the actor the build generates is this
+// project's oldest failure mode wearing a different hat: the number is written down and
+// nothing reads it. LAST ADMISSION shipped with "HP 16, armour 1, shears 1d8+1" on the
+// page and a 15-hit-point man carrying a 1d4+2 utility knife in the pack, so a GM running
+// off the token had a different fight from the one written. Parse the page and check it.
+test("LAST ADMISSION's fight numbers match the actor the build will generate", async () => {
+ const { LA_PAGES, LA_CAST } = await import("./scenario-lastadmission.mjs");
+ const { WEAPONS, hitPoints } = await import("./content.mjs");
+ const html = LA_PAGES.map(p => p.content).join("");
+ const m = html.match(/HP (\d+), armour (\d+), shears (\d+d\d+(?:\+\d+)?)/);
+ assert.ok(m, "the page no longer states Old Marrow's HP, armour and shear damage");
+ const [, hp, armour, dmg] = m;
+
+ const marrow = LA_CAST.find(c => c.name === "Old Marrow");
+ assert.equal(Number(hp), hitPoints(marrow.ch.con, marrow.ch.siz),
+ "the page's HP is not what CON and SIZ will actually generate");
+ assert.equal(Number(armour), marrow.naturalArmour,
+ "the page's armour is not the actor's natural armour");
+
+ // The shears are whichever real catalogue weapon he is issued — prose does not get to
+ // invent damage for an item the actor is holding.
+ const carried = marrow.weapons.filter(k => k !== "punch");
+ assert.equal(carried.length, 1, "Old Marrow should carry exactly one weapon besides his fists");
+ const w = WEAPONS.find(x => x.key === carried[0]);
+ assert.ok(w, `Old Marrow carries "${carried[0]}", which is not in the catalogue`);
+ assert.equal(dmg, w.dmg,
+ `the page says the shears do ${dmg}; the ${w.name} on his sheet does ${w.dmg}`);
+});
+
/* ---------------------------------------------------------------- */
await runAll();
diff --git a/tools/scenario-lastadmission.mjs b/tools/scenario-lastadmission.mjs
index 7ebaa3e..afebbf2 100644
--- a/tools/scenario-lastadmission.mjs
+++ b/tools/scenario-lastadmission.mjs
@@ -194,15 +194,15 @@ export const LA_PAGES = [
+ "costume, crew, a hen party who went the wrong way, and three things that are none "
+ "of those.")
+ P("Josh Pardoe is dead. Behind the false wall in the east corridor, "
- + "and 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.]")
+ + "and has 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.")
+ H(2, "Sister Enderby")
+ P("“She walked the ward at night and counted the beds, and if the count was "
+ "wrong she made it right.”")
+ UL(["Does: counts people, out loud. In a group of six she says "
+ "six, then she says five, and then she goes and makes it true.",
- "Fight: HP 13, armour 0, Brawl 55%, 1d6. She does not defend "
+ "Fight: HP 12, armour 0, Brawl 55%, 1d6. 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 "
@@ -215,7 +215,10 @@ export const LA_PAGES = [
+ "does not hurt anybody. He pulls, and he is very strong, and the hole is nine "
+ "inches across.",
"Fight: you cannot hit him. Athletics or Brawl against STR 17 to "
- + "get a leg back, or automatic if somebody pulls with you.",
+ + "get a leg back, or automatic if somebody pulls with you. On a "
+ + "fumble they go over on their face and lose whatever was in their "
+ + "hands under the floorboards — a torch, a phone, the tag list. 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."])
+ H(2, "Old Marrow")
@@ -224,8 +227,9 @@ export const LA_PAGES = [
+ "and he is not coming in now, but he will see you off it.”")
+ UL(["Does: carries the shears, moves at a walk, 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. Slow, never runs, and between them and the way out.",
+ "Fight: HP 20, armour 2, shears 1d8+2, Brawl/Melee 60%. He is the "
+ + "actual fight: slow, never runs, always between them and the way out. Expect "
+ + "about four and a half rounds and expect somebody to get hurt.",
"Script break: he will not come in the house. Going "
+ "inside is a complete answer and costs nothing. Reward it. He waits on the lawn."])
+ H(2, "The set-piece — the run to the marquee")
@@ -234,8 +238,9 @@ export const LA_PAGES = [
+ "grass); or go back in and out through the kitchens — Sharrock built the sets "
+ "and knows the door is there, and the plans are pinned up in the green room for "
+ "anyone else.",
- "Four rounds is plenty. He closes at a walk, one attack a round, "
- + "and goes for whoever is furthest from the house.",
+ "Four or five rounds. He closes at a walk, one attack a round, and "
+ + "goes for whoever is furthest from the house. He drops about one person in "
+ + "three fights — and dropped is dropped, not dying: see below.",
"If it goes badly: he does not pursue indoors and 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 "
@@ -432,7 +437,7 @@ export const LA_HANDOUTS = [
export const LA_CAST = [
{ key: "la_enderby", name: "Sister Enderby",
- role: "ENTRY. An invention that counts. HP 13, no armour.",
+ role: "ENTRY. An invention that counts. HP 12, no armour.",
chosenStyle: "reflex", naturalArmour: 0, species: "baseline",
ch: { str: 13, siz: 11, con: 13, int: 8, pow: 14, dex: 12, cha: 8, edu: 8 },
skills: [{ fam: "brawl", spec: "", val: 55 }, { fam: "spot", spec: "", val: 60 },
@@ -459,14 +464,22 @@ export const LA_CAST = [
+ "he stops when he is FOUND. Say his name and open the panel and he is not there." },
{ key: "la_marrow", name: "Old Marrow",
- role: "ENTRY. An invention that will not come indoors. HP 16, armour 1. The fight.",
- chosenStyle: "reflex", naturalArmour: 1, species: "baseline",
- ch: { str: 16, siz: 15, con: 15, int: 8, pow: 13, dex: 10, cha: 7, edu: 7 },
+ role: "ENTRY. An invention that will not come indoors. HP 20, armour 2. The fight.",
+ chosenStyle: "reflex", naturalArmour: 2, species: "baseline",
+ // Tuned by playing it thirty times. At the first numbers he died in 2.4 rounds and in
+ // six runs of twenty he was dead before he swung, which is not a fight, it is a
+ // formality. At 20 hit points and 2 armour he lasts about four and a half rounds,
+ // somebody is hurt in 28 runs of 30, and somebody goes down in 9 — dramatic without
+ // being a coin flip on a civilian's life.
+ ch: { str: 16, siz: 22, con: 18, int: 8, pow: 13, dex: 10, cha: 7, edu: 7 },
skills: [{ fam: "brawl", spec: "", val: 60 },
- { fam: "melee_weapon", spec: "knife", val: 60 },
+ { fam: "melee_weapon", spec: "polearm", val: 60 },
{ fam: "spot", spec: "", val: 50 }],
- weapons: ["punch", "dagger"],
- tactics: "Carries the shears (count them as 1d8+1), moves at a walk, and WILL NOT ENTER "
+ // A billhook, not a dagger. The shears were prose — the actor was carrying a utility
+ // knife at 1d4+2 while the page said 1d8+1, so a GM running from the token had a
+ // different fight from the one written down.
+ weapons: ["punch", "billhook"],
+ tactics: "Carries the shears (the billhook line on his sheet, 1d8+2), moves at a walk, and WILL NOT ENTER "
+ "THE BUILDING. He is the reason nobody gets to the car park, and he is the actual "
+ "fight in this scenario: slow, never runs, always between them and the way out. One "
+ "attack a round, goes for whoever is furthest from the house. He does not pursue "