Commit Graph
7 Commits
Author SHA1 Message Date
slaguru666andClaude Opus 5 5bc46879c7 THROUGH TRAIN: put the gunfight inside the loop
The loop is no longer just a train going round. It is FOUR MINUTES with a
gunfight in it, and those four minutes have run about two million times.

Two sides, and neither is the villain. Cass Merritt and three hired men have a
signed letter of engagement from the company telling them to surrender the
payroll to nobody "upon any pretext whatsoever, including the presentation of
any paper". Josiah Ambrose and four Cordera miners have a sealed writ of
attachment from a territorial judge naming that same payroll against eleven
weeks of unpaid wages. Both documents are genuine. Neither man has seen the
other's. The company sold the same money twice and is not aboard. Both are
handouts now, and they only mean anything held in the same hand.

The mission is restated everywhere it appears — briefing page, case brief, GM
essentials: CLOSE IT. Closing the crossing does not kill anybody, it lets them
go. The loop ends, 3 November 1881 resumes from 11:44, and everyone aboard walks
forward into the life they would have had — including Ambrose and a miner named
Doyle, who did not survive the real four minutes. The agents are not choosing
who lives; they are choosing to stop holding history still, having met the
people it lands on.

The standing order is louder in three places: NOTHING MODERN GOES THROUGH.

Two things the playtest found, both now written into the text:

  - THE FIGHT WAS A TPK GENERATOR. Modelled with all nine shooters firing at the
    party it wiped them 171 times in 200. The model was wrong — the two sides
    are shooting at EACH OTHER — so the scenario now carries a measured exposure
    table: head down draws nothing, acting from cover costs half a party member
    and no wipes over 300 runs, moving in the open costs one, and going for the
    payroll box wipes more than half of all parties. The GM is told to say that
    last row out loud BEFORE anybody commits to it.

  - THE LOOP RESETS AND THE AGENTS DO NOT. Everyone who belongs to 1881 is back
    up unhurt on the next pass. The agents keep their wounds. Nothing said so,
    and a player who assumes otherwise takes risks that kill them. It is now
    stated in capitals in both documents, with the played pass that prompted it
    — two of four down at 0 hit points, one untouched because he stayed on the
    floor.

Nine cast members, eight handouts, ten plates.

Version 1.4.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 22:20:00 +01:00
slaguru666andClaude Opus 5 774e95dea8 THROUGH TRAIN — the crossing starter, and two more playtest fixes
A train has been running the same four miles of track since 3 November 1881. It
has never stopped. Sixty-one people are aboard and all of them are alive.

The supernatural is science fiction underneath, which is the point. A railway
company laid track to a filed survey instead of to the ground, then described the
line as being where it was not — ten thousand times, in timetables and waybills
and telegraph orders, for six months, at a constant speed. Reality keeps a record
of what belongs where, and that is the most patient argument there is. The record
gave way with No. 9 inside it, and the RUNNING is what holds the crossing open: a
standing wave sustained by its own motion the way a bow sustains a note.

So the players must board a train that cannot stop, and then find that sixty-one
people at six passes is four hours they do not have. The ending is what they
choose to do about arithmetic they cannot beat, in front of a conductor holding
the manifest. No roll resolves it.

It is also the case that teaches Standing Order 9: NOTHING MODERN GOES THROUGH.
Using a modern object across costs a Coherence and moves the clock; carrying it
costs nothing; anchors are exempt. The catalogue already had the 1881 issue —
Webley, Martini-Henry, oil lantern, brass compass, pocket watch, buff coat,
laudanum — so the constraint needed no new content and gives the table something
to feel in the first twenty minutes.

Ships as docs/scenarios/THROUGH_TRAIN.md and a Foundry Adventure: 7 GM pages, 6
handouts including the survey that started it and a manifest deliberately held
back to Act Three, the case file at Containment 6 / Resources 5 / Clearance 4
with its four legs loaded, four of the people aboard, and 7 plates to show.

Two fixes from playing it:

  - Bhattacharya's RESEARCH was 1%. Placing the new skills last night I swapped
    Occult into Registry's core and took Research out — a records office that
    cannot look anything up. Research is back in core; Antiquities gets its
    Knowledge back the same way.

  - The boarding was unrunnable. At halved skill the set-piece put four agents on
    12–31% and all four missed, which stalls the one scene the scenario is built
    around. It is an average roll now and only a fumble is a fall, with the
    reason written into the text so nobody "fixes" it back. Re-run: 3 of 4 aboard
    on the first pass and one waiting for the next, which is the shape it wanted.

Version 1.3.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 00:25:19 +01:00
slaguru666andClaude Opus 5 51bd8e618a Audit every remaining sheet and dialog; add the Culland Hall scene
Opened all of it this time, rather than driving the system through its API.

Two more defects of the same family as the NPC sheet, and in the same place —
the types added last:

  - Talent and Art had no TYPES.Item.* label, so their sheets printed the raw
    key "TYPES.Item.talent" under the name.
  - Neither had a branch in item-sheet.hbs or an isTalent/isPower flag, so the
    Detail tab rendered EMPTY over a document holding category, rule, uses per
    case, Coherence cost, push cost and origin. Eleven of thirteen types were
    handled, which is exactly the shape an eye skips.

Both now have a header statline and a full Detail section, and a guard walks
template.json: every declared type must have a label, a flag set in ringbrp.mjs,
and an {{#if isX}} section in the sheet.

One hardening fix: loseCoherence applies the cost and THEN announces it, so
anything that throws in between leaves the actor quietly poorer with no message.
localize() throws on a non-string, which an unrecognised reason key is.

Everything else came back clean, and it is worth recording what was checked so
the next audit knows what "checked" meant: 13 item types opened, all render; the
expedition sheet (4 tabs); all 7 chat cards driven through their real entry
points — roll, coherence, reaction via Combat.rollAll, hit location, weapon
damage, major wound, and contact through a case file that actually has a group;
all 3 dialogs opened by clicking the controls a player clicks. No errors, no raw
localisation keys anywhere.

Also: Culland Hall as a playable Scene. Drawn as SVG rather than generated,
because a room count, a door position and a label are all load-bearing here and
a generator cannot be trusted with any of them — three label-collision passes in
the browser before it was clean, which is the documented cost of doing it this
way. 2800x2000 at 100px to the square so the Foundry grid lands on the grid
drawn into the image; 5ft squares; no walls, because half-done walls are worse
than none and a GM who wants vision can add them in ten minutes.

Verified in Foundry: the scene imports, activates, and draws.

Version 1.0.2.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 19:02:18 +01:00
slaguru666andClaude Opus 5 d063b3c016 Add LAST ADMISSION, a two-hour haunted-house prologue
OPEN DAY was too complex for a first night: a fixed timetable the GM narrates
minute by minute, three things that must be left unresolved, ten serial approach
scenes, and no combat. This is the replacement opener — same premise engine,
a third of the moving parts, and something to hit.

A cheap scare attraction on the last night of its six-week run, in a real empty
hall, with paying public still inside. Three of the ghosts on the poster were
invented in an afternoon by a marketing agency, printed on the tickets and the
wall panel and the call sheets, and performed forty times a night to twelve
thousand people who agreed to believe them for eighteen pounds each. They are
in the building now. They are not ghosts, they are entries, and they have
exactly as much inside them as was written down — a page each, which they do,
and nothing else. That makes them simple to run and simple to stop: hurt them,
or break the script. Both work; the script is faster and cheaper, and a table
that finds it should feel clever.

The fourth name on the panel was copied off a memorial in the parish church
because the layout needed four. Edith Crane was real, died in a real fire here
in 1963, and nobody wrote her a page because nobody had to. She never attacks,
cannot be hurt, and will not speak until she is asked her name. She wants her
name off a poster. The night ends on whether it comes down tonight or on Monday
— and Monday is two performances away.

Written for the second intake specifically, on their civilian sheets, with each
one's job as their way in: Renshaw is IN the show and knows the running order,
Ferriby wired it, Sharrock built the sets, Pollard is on the door, Braithwaite
and Ashcroft paid to get in. Each shortcuts a different part of the middle and
none of them is required.

Art: eight plates commissioned, seven kept. The wall panel plate was cut after
two attempts both produced three frames instead of four — a picture that
contradicts a count the scenario turns on is worse than no picture, so the panel
is a handout the GM shows rather than describes. The freed green-room plate went
onto the Act One page, where the call sheet is.

OPEN DAY stays in the repo as the longer, quieter alternative; both scenarios
say plainly which is which and that nothing depends on the choice.

Verified in Foundry: the adventure imports, six cast, seven GM pages, five
handouts, plates load.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 17:50:52 +01:00
slaguru666andClaude Opus 5 f576c7977d Add a second intake: six more agents, with portraits
Written for the group that actually plays. Three postings and three trades
again, and none of the six repeats a posting or a trade already on the sheet,
so the roster now covers sixteen different jobs and no two players can pick the
same character by accident.

  Gareth Pollard      Night Warden          Field Officer
  Dominic Ashcroft    Anchor Officer        Senior Field Officer
  Neil Braithwaite    Pathology Officer     Field Officer
  Kate Renshaw        Interview Officer     Senior Field Officer
  Danny Sharrock      Construction Worker   Probationary
  Colin Ferriby       IT Specialist         Probationary

Each also gets a before-the-department entry, because without one they cannot
play OPEN DAY — the prologue builds its civilians off the BEFORE table, and the
build throws on a roster agent that has no entry in it. Two of the six were
already trades, so their civilian self is the same job with none of the kit.

Two guards had to be corrected rather than satisfied, both for the same reason:
they had encoded an accident of the roster being exactly ten.

  - "the ten cover all ten trades exactly once" cannot survive a sixteenth
    agent. The property that actually matters is that no trade is missing, so
    that is what it asserts now.
  - "the roster should be half trades" would mean picking characters to satisfy
    a ratio. It now asserts both halves are present and neither dwarfs the
    other, and separately that no job appears twice — which is the check with
    real teeth, and it passes.

The portrait pass caught an arithmetic slip of mine: Sharrock came back looking
early forties against a sheet that said 35, and his biography says twenty years
on sites, which would have him starting at fifteen. He is 42.

Verified in Foundry: 36 pregens in the pack, all twelve import, sheets render
with their portraits.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 17:19:58 +01:00
slaguru666andClaude Opus 5 f185c92088 Add OPEN DAY, the recruitment prologue
Ten civilians, one decommissioned telephone exchange, and eleven minutes during
which the building went back to being on the street it was built on. Nothing
attacks anybody. Nothing wants anything. That is the horror, and it is the whole
design.

The premise was already in the pregens. Wren Finch's biography said she was
inside a building "on the night it stopped being on the street it was on", and
Soraya Rahimi's said she talked a caller down on air "for eleven minutes, and
the recording does not play back the same way twice". Those are two views of one
afternoon, so the scenario is built at the intersection and the other eight
"How they found her/him" lines are the same afternoon from eight more jobs.
Nothing in the prologue contradicts a sheet, because the sheets came first.

The reconciliation pass, which is most of the work:

  - Finch's line said "night". The open day is an afternoon. One word changed on
    the pregen, and both are true. Her line also says she was the only witness
    who could describe the inside, so she is the one who goes into number 11 —
    written into the location note rather than left to chance.
  - Rahimi's line says she was ON AIR. So the disconnected telephone that rings
    at 15:45 is patched through to her outside broadcast, which makes the canon
    line and the scene the same event instead of two coincidences.
  - Okonkwo carries two men out; Nkemdirim's patient has a forearm that healed
    crooked over a break he took six minutes ago. Both seams needed an injury in
    Act Two and there was none, so 15:50 and 15:51 now have one.
  - Sandoval's forty minutes of traffic sit inside an eleven-minute window. That
    is the anomaly, so it is on the handout in those words.
  - "Prine" collided with an NPC already in the world. The engineer is Kearsley.

Structure: 2h15 against the house 3h30, stated in the design intent, because a
prologue exists to make the first real case land. No combat, no antagonist, no
Coherence — the last one is thematic, not a simplification: Coherence is what it
costs to keep looking once you know what you are looking at, and these ten do
not know yet. The Briefing is the first time the word is said aloud.

Ships as docs/scenarios/OPEN_DAY.md (the full GM document) and a Foundry
Adventure in a new `prologue` pack: 8 GM pages, 7 handouts, 5 NPCs, and ten
generated plates. The PCs are the "(before)" pregens already in the Pregens
pack — a second copy here would give a GM two sets of the same ten people and
no way to know which one their notes were on.

Verified in Foundry: the adventure imports, both journals render branded, the
countdown table reads as a table, and all ten plates load.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 17:03:49 +01:00
slaguru666andClaude Opus 5 c15b13c3b9 Add the duty roster: ten ready-to-play agents with generated portraits
Five postings and five trades, so a group choosing from this sheet meets both
halves of character creation without anyone having to explain them.

Skills and kit are not written out per agent. They are expanded from the
register at build time by the same helper the starter scenario uses, which is
hoisted out of the BLACK PLATFORM block for the purpose — two copies of that
expansion is two places for the induction rule to drift. Ratings sit at the
middle of each band rather than being rolled, because a pregen that varies
between installs is not a pregen.

Portraits are generated art, resized to 512 and stored as webp (12MB of PNG
became 210KB). buildActor now takes a portrait and gives the same face to the
prototype token: a pregen you can recognise on the map is worth more at a
convention table than a correct one you cannot tell apart. It throws on a
portrait that is not on disk, because a broken image on a pregen sheet is the
sort of thing that is first noticed on a projector.

Guard: check-behaviour gains a test that every roster agent names a real
posting or trade and has its portrait on disk, verified to bite. It caught
"archive", which is not a posting — Bhattacharya is Registry.

Verified in a running Foundry: 14 pregens in the pack, sheets render with the
portraits, coherence and hit points fill from the template, no system errors.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 11:06:04 +01:00