diff --git a/README.md b/README.md index 956f839..2bea341 100644 --- a/README.md +++ b/README.md @@ -180,7 +180,7 @@ The build runs all five guards before it writes anything: ``` -check-rules: OK — 96 rules, 21 files scanned, 3 aliases + 46 constant sets checked, 306 formulas verified +check-rules: OK — 96 rules, 22 files scanned, 3 aliases + 46 constant sets checked, 306 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, 995 keys, no leaf/branch collisions check-behaviour: OK — 67 behavioural tests diff --git a/art/scenes/tt_11_bureau.webp b/art/scenes/tt_11_bureau.webp new file mode 100644 index 0000000..48e64ce Binary files /dev/null and b/art/scenes/tt_11_bureau.webp differ diff --git a/art/scenes/tt_12_northbench.webp b/art/scenes/tt_12_northbench.webp new file mode 100644 index 0000000..48e64ce Binary files /dev/null and b/art/scenes/tt_12_northbench.webp differ diff --git a/art/scenes/tt_13_standoff.webp b/art/scenes/tt_13_standoff.webp new file mode 100644 index 0000000..48e64ce Binary files /dev/null and b/art/scenes/tt_13_standoff.webp differ diff --git a/docs/scenarios/THROUGH_TRAIN.md b/docs/scenarios/THROUGH_TRAIN.md index 469e3fa..717e3ac 100644 --- a/docs/scenarios/THROUGH_TRAIN.md +++ b/docs/scenarios/THROUGH_TRAIN.md @@ -11,62 +11,71 @@ - **System:** d100 roll-under. Special under a fifth, critical under a twentieth. 96–99 never succeed; 00 always fumbles; a 60% skill fumbles on 98–00. - **Panic is live** — 0–5, up. A trigger costs a point with no roll; relief is rolled. - **This is the case where it earns its keep.** + **This is the case where it earns its keep.** Triggers are marked per act. - **Standing Order 9 is live** — nothing modern goes through. Charge for *using*, never for carrying. Anchors are exempt. - **Runs with 4–6 agents from the duty roster.** Not the "(before)" sheets — this is the job, and it wants people who have been trained. - **The four minutes are lethal.** Webley 1d10, Martini-Henry 2d6+2, against 11–16 hit - points. **Use the exposure table** — unrestricted fire from all nine wipes the party - five times in six. + points. **Use the exposure table in Act Five** — unrestricted fire from all nine wipes + the party five times in six. - **The mission is to CLOSE it**, which releases everyone aboard into their own history — including the two men who did not survive the real four minutes. -- **Hard rule: at 2:45 on the clock, they are on the train.** +- **Hard rule: at 2:55 on the clock, they are aboard.** - **Content warnings:** gun violence at close quarters, repeatedly; entrapment and confinement; bystanders wounded on screen; a decision that lets named people die; - period hardship and labour exploitation; heights. + period hardship and labour exploitation; heights; a sibling present at a death. --- ## Overview -- **Setting:** Mercy Draw, Nevada — present day, and 3–4 November 1881. +- **Setting:** the Bureau, present day — then Cordera, Nevada Territory, 4 November 1881. - **Tone:** Procedural, then unbearable. It is a paperwork error with sixty-one people inside it. -- **Runtime:** 3h30 play + a 10 minute break. -- **The crossing:** opens at 11:40 every day, for about four minutes, on the grade. +- **Runtime:** 4h00 including a 10 minute break. +- **The crossing:** opens at 11:40 every day, for about four minutes, on the grade at + Mercy Draw. ### Design intent 1. **The supernatural is science fiction underneath.** Nobody is dead, nothing is haunting anybody, and the whole event has a mechanism the players can understand and explain back. If a table leaves thinking "ghost train", it has been run wrong. -2. **The obstacle is a physical problem, not a mystery.** They will know what is - happening by the end of Act One. Acts Two and Three are about a train that cannot - stop and an arithmetic that cannot be beaten. -3. **Standing Order 9 is the tutorial.** One shot at a time, no radio, a lantern that - runs out. The period kit *is* the difficulty setting, and it is the scene where - players learn what kind of game this is. -4. **The ending is a decision priced on both sides**, with no roll and no correct +2. **Act One is the induction.** For most tables this is the first hour they have ever + spent in the department. They should leave it knowing the building, the standing + order, what an anchor is, and who signs for them. +3. **The train has to be found.** They arrive where the paperwork says the railway is, + which is a bench of empty ground. Act Two is an investigation with a map at the end + of it, not a corridor. +4. **Standing Order 9 is the difficulty setting.** One shot at a time, no radio, a + lantern that runs out. The period kit *is* the tutorial. +5. **The ending is a decision priced on both sides**, with no roll and no correct answer, taken in front of a woman holding a manifest. -5. **There is a fight, and there is no villain in it.** Two armed parties, both with - genuine paper, both convinced the others are robbers. The players can survive it, - shape it and pull people out of it. They cannot end it — only the brakes end it. +6. **There is no villain anywhere in this case.** Not in town, not on the train. Two + armed parties aboard, both with genuine paper. A crew of unpaid miners in Cordera who + are right to be suspicious. The players can survive all of it and shape some of it. + They cannot make anybody wrong. --- ## Session Timing -| Section | Time | Cumulative | Checkpoint | +| Act | Time | Cumulative | Checkpoint | |---|---|---|---| -| Briefing — the standing order | ~20 min | 0:20 | kit swapped, somebody has complained | -| Act One — Mercy Draw, now | ~50 min | 1:10 | they know it is a survey fraud, and they have heard 11:40 | -| *Break* | *10 min* | *1:10* | lands on the whistle | -| Act Two — Cordera, 1881 | ~70 min | 2:20 | they are on the train | -| Act Three — Aboard | ~50 min | 3:10 | they have decided | -| Epilogue — the register | ~20 min | 3:30 | sixty-one names, written down | +| **One** — The Bureau | ~35 min | 0:35 | kit swapped, anchors issued, somebody has complained | +| **Two** — Cordera, and where the train went | ~50 min | 1:25 | they know where the line actually is, and when it passes | +| *Break* | *10 min* | *1:35* | — | +| **Three** — Rance Doyle's men | ~35 min | 2:10 | resolved one way or another; they still have a route to the Draw | +| **Four** — Getting aboard | ~45 min | 2:55 | **they are on the train** | +| **Five** — The four minutes | ~50 min | 3:45 | they have decided | +| Epilogue — the register | ~15 min | 4:00 | sixty-one names, written down | -**Hard rule:** at 2:45 they are aboard, by the department's wagon if not by their own wit. +**Hard rule:** at 2:55 they are aboard, by the department's wagon if not by their own wit. + +**If you are running short:** cut the town down to the telegraph office and the +roundhouse (Act Two), and play Act Three as a single street confrontation with no fight. +**Never cut the boarding.** --- @@ -94,7 +103,17 @@ three seconds old**. a train; it captured four minutes, and those four minutes contain two armed parties shooting the length of car three. It has run about two million times. -### The two sides — and neither is the villain +### Why the agents arrive in the wrong place + +**The crossing opens where the record says the line is: the north bench.** It has to — +that is the wrongness it is made of. Agents step off a real grade in the present and step +out onto a bench of empty scrub in 1881, with no rails, no ballast and no Draw in front +of them. + +This is not a trick played on them. **It is the case, stated as geography**, and a party +that works out why they came out where they did has solved half of Act Two. + +### The two sides aboard — and neither is the villain | | Who | What they have | What they believe | |---|---|---|---| @@ -122,13 +141,15 @@ of November 1881 resumes from 11:44, and every person aboard walks forward into they would have had. **Including the ones who did not survive the real four minutes.** History resumes as -history: Josiah Ambrose and a miner named Doyle died in that gunfight, and when the loop -lets go they die in it. Not because the agents killed them — because that is what -happened, and it has been prevented from happening for a hundred and forty-five years. +history: Josiah Ambrose and a miner named **Tom Doyle** died in that gunfight, and when +the loop lets go they die in it. Not because the agents killed them — because that is +what happened, and it has been prevented from happening for a hundred and forty-five +years. **That is the weight of this ending and it is the whole point.** The agents are not choosing who lives. They are choosing to stop holding history still, and they will have -met the people it lands on. +met the people it lands on — and, if Act Three went a certain way, the brother of one of +them. The department's position is unambiguous: **close it.** A crossing held open by a repeating event degrades, and when it fails on its own — Registry's read is within a @@ -147,47 +168,53 @@ direct question honestly because he has been waiting a very long time to be aske | 12 Apr 1881 | Vane files the survey. North bench. | | Apr–Oct 1881 | Line laid on the south bench. Six months of paperwork says otherwise. | | **3 Nov 1881, 11:40** | The record gives way, with No. 9 inside it. | +| 3 Nov, evening | Cordera learns No. 9 never reached Fallon. | +| **4 Nov 1881** | **Play begins on this day.** Ambrose and five men have been gone a day. | | 1889 | Rails lifted. The grade is still there. | | 1974, 1991, 2009 | Three departmental attempts. No survivors. All tried to stop it. | -| Every day, 11:40 | The crossing opens on the grade for about four minutes. | +| Every day, 11:40 | The crossing opens on the north bench for about four minutes. | ### Revelations -| # | Revelation | -|---|---| -| R1 | The filed survey puts the line on the north bench | -| R2 | There has never been a railway on the north bench | -| R3 | Six months of paperwork repeated it | -| R4 | The dispatcher's book has no 11:45 entry | -| R5 | The 11:40 sound is a train working *up* a grade — always accelerating | -| R6 | Nobody aboard is dead, and by their clocks it has been nine hours | -| R7 | The running is what holds the crossing open | -| R8 | Coal that should have lasted four hours has lasted a hundred and forty-five years | -| R9 | Kell will stop if told to, out loud, to his face — and only then | -| R10 | Vane signed it, and knows exactly what stopping it costs | -| R11 | The four minutes contain a gunfight, and it repeats exactly | -| R12 | Both sides have genuine paper, and the company sold the money twice | -| R13 | Closing it releases everyone into their own history — including the two who die in it | +| # | Revelation | Where | +|---|---|---| +| R1 | The filed survey puts the line on the north bench | Act One handout | +| R2 | There is no railway on the north bench — they are standing on it | Act Two, automatic | +| R3 | The line is on the **south** bench, four miles out | Act Two | +| R4 | Six months of paperwork repeated the wrong one | Act Two | +| R5 | The dispatcher's book has no 11:45 entry | Act Two | +| R6 | No. 9 went into the Draw and did not come out | Act Two | +| R7 | Something still passes the Draw, roughly every forty minutes | Act Two | +| R8 | Ambrose took five men out to serve a writ on it, and none came back | Act Three | +| R9 | The sound is a train working *up* a grade — always accelerating | Act Four | +| R10 | Nobody aboard is dead, and by their clocks it has been nine hours | Act Five | +| R11 | The running is what holds the crossing open | Act Five | +| R12 | Coal that should have lasted four hours has lasted a hundred and forty-five years | Act Five | +| R13 | The four minutes contain a gunfight, and it repeats exactly | Act Five | +| R14 | Both sides have genuine paper, and the company sold the money twice | Act Five | +| R15 | Kell will stop if told to, out loud, to his face — and only then | Act Five | +| R16 | Closing it releases everyone into their own history — including the two who die in it | Act Five | --- ## Player Experience -You are handed a Webley, a single-shot rifle, an oil lantern and a pocket watch, and told -that the handset stays behind. Then you stand in a dry wash in Nevada at 11:38 in the -morning and listen to a train you cannot see work a grade that has had no rails on it -since 1889. By lunchtime you know it is a survey fraud from 1881. By the evening you are -lying on the top of a water tower waiting for forty seconds of slow track, and after that -you are in a warm carriage that smells of coffee, being asked by a conductor with a -manifest whether you are from the company. She has counted sixty-one every hour for a -hundred and forty-five years. She would like that noted. +You sign a form in a building with no sign on it, and a storeman takes your phone off you +and gives you a revolver that holds six. Then you step off a railway embankment in Nevada +and come out on the wrong side of a valley in 1881, where there is no railway at all. It +takes you an afternoon and an argument with a dozen unpaid miners to find out where the +line actually is. By evening you are lying on the top of a water tower waiting for forty +seconds of slow track, and after that you are in a warm carriage that smells of coffee, +being asked by a conductor with a manifest whether you are from the company. She has +counted sixty-one every hour for a hundred and forty-five years. She would like that +noted. --- ## The Countdown — the crossing clock (0–6) -Move it on **each pass of the train**, when **somebody uses a modern object across**, and -on a **fumbled boarding attempt**. +Move it on **each pass of the train the agents watch go by**, when **somebody uses a +modern object across**, and on a **fumbled boarding attempt**. | Clock | What | |---|---| @@ -199,34 +226,103 @@ on a **fumbled boarding attempt**. | 5 | One pass left, and everybody can tell. | | 6 | It closes, with whoever is aboard. | +**Act Three does not move the clock.** Whatever happens with Rance Doyle's men, it +happens in a town four miles from the Draw and the crossing does not care. + --- ## Handouts | ID | Description | When | |---|---|---| -| TT-H01 | Case brief TT-004 | Briefing | -| TT-H02 | **Standing Order 9** — period crossings | Briefing | -| TT-H03 | Issue list, 1881 | Briefing | +| TT-H01 | Case brief TT-004 | Act One | +| TT-H02 | **Standing Order 9** — period crossings | Act One | +| TT-H03 | Issue list, 1881 | Act One | | TT-H04 | **The filed survey** — the line on the north bench | Act One | -| TT-H05 | Working timetable and the dispatcher's book | Act One | -| TT-H06 | **Passenger manifest** — sixty-one souls, nine children | Act Three | -| TT-H07 | **Letter of engagement** — found on Merritt | Act Three, when searched | -| TT-H08 | **Writ of attachment** — found on Ambrose | Act Three, when searched | +| TT-H05 | Company notice — No. 9 overdue, reward offered | Act Two | +| TT-H06 | Working timetable and the dispatcher's book | Act Two | +| TT-H07 | **The writ men's list** — six names, in Ambrose's hand | Act Three | +| TT-H08 | **Passenger manifest** — sixty-one souls, nine children | Act Five | +| TT-H09 | **Letter of engagement** — found on Merritt | Act Five, when searched | +| TT-H10 | **Writ of attachment** — found on Ambrose | Act Five, when searched | -The two papers are the ambiguity, and they only mean anything **held in the same hand**. +**H09 and H10 are the ambiguity, and they only mean anything held in the same hand.** Give them separately and let the table put them together. -The manifest is deliberately held back to Act Three. It is a list of names, and the -players should not be holding it until the moment it starts to weigh something. +**H07 is the wiring between the acts.** It is a list of six names written by a man the +players have not met. In Act Five they will be standing in a car with all six of them. +Hand it over in Act Three and never mention it again. + +The manifest is held back to Act Five. It is a list of names, and the players should not +be holding it until the moment it starts to weigh something. --- -## Briefing — the standing order *(~20 min)* +# Act One — The Bureau *(~35 min)* -> You will be crossing to November 1881. Nothing you are carrying goes with you. Stores -> has laid out what you may take instead, and I would ask you not to argue with the -> storeman, because he is right and you are in a hurry. +> **Goal:** they learn where they work, what an anchor is, why the phone stays behind, +> and what the case is. + +> Read aloud or paraphrase: +> +> The building has no sign on it. It has a commissionaire, a lift that only goes to four +> of the six floors, and a smell of floor polish and old paper that you will come to know +> very well. Somebody has left a birthday card going round the third floor for a woman in +> Accounts. You are here because a train has been missing since 1881, and it is Tuesday. + +**Play this as an ordinary morning at an ordinary job.** The horror in this game is that +the paperwork is real. Nobody is portentous. Nobody explains that the world is stranger +than they know. + +### The four stops + +Run these as four short beats. Let the players wander between them; do not queue them up. + +| Stop | Who | What happens | +|---|---|---| +| **The desk** | a commissionaire with a ledger | They sign in. Names, times, and their **anchor numbers**. He will not be hurried. | +| **Registry** | **Mr Bewley** | The case. The survey. The three previous attempts. | +| **Stores** | **Mr Prosser** | The kit swap, and the argument. | +| **Medical** | a nurse, briskly | Anchors issued. Two minutes. Do not make a scene of it. | + +### Registry — the briefing + +**Mr Bewley has the file and would prefer the players read it.** Give **TT-H01** and +**TT-H04** and let them ask. + +What he will say, if asked: + +- **The crossing opens on the grade at Mercy Draw, Nevada, at 11:40, for about four + minutes.** It has done so every day for as long as the department has watched it. +- **A train is inside it.** Cordera & Western No. 9, five cars, out of Cordera on 3 + November 1881, never arrived at Fallon. +- **Sixty-one people, by the manifest.** He will not hand the manifest over yet, and if + pressed he says so plainly: *"You will read it aboard. It reads differently there."* +- **Three attempts are on file** — 1974, 1991, 2009. **No survivors. All three tried to + stop it.** He does not know why that failed and he says so. +- **The order is to close it.** A crossing held open by a repeating event degrades. When + it fails on its own — his read is within the year — everyone inside is lost outright. +- **The survey is the case.** *"Bring me the paper. The paper is the case."* + +> **The one thing Bewley gets wrong.** He believes the crossing puts you on the grade. +> Every previous team went in expecting to arrive beside the line. **Do not correct +> this.** It is on the file wrong, and the file is what they have. + +**[CUS: Research or Insight]** on the file: the three previous attempts all logged their +last position as *"the north bench"*, which nobody has ever queried because nobody has +ever come back to be asked about it. **Optional. It is a very good catch and it should +feel like one.** + +### Stores — Standing Order 9 + +**Give TT-H02 and TT-H03.** Mr Prosser has laid the kit out on a counter and he is not +interested in negotiation. + +> Read aloud or paraphrase: +> +> Nothing you are carrying goes with you. I have laid out what you may take instead. You +> may argue with me if you like, but I have been doing this for nineteen years and you +> have been doing it since Thursday. **Nothing modern goes through.** Give both reasons: @@ -239,9 +335,11 @@ players should not be holding it until the moment it starts to weigh something. **Charge for using, never for carrying.** A player who smuggles a torch across and never switches it on has made a good decision and should get away with it. -**The anchor is exempt.** Everybody keeps theirs. +**The anchor is exempt.** Everybody keeps theirs. If nobody asks what an anchor is, the +nurse tells them: *it is the department's record that you exist and belong here, and it +is the reason you can come back.* -### The 1881 issue +#### The 1881 issue | Instead of | They get | |---|---| @@ -253,106 +351,325 @@ switches it on has made a good decision and should get away with it. | medkit | **chirurgeon's roll** and **laudanum** | | phone and GPS | **brass compass**, **pocket watch**, **spyglass** | +Plus **period coin**, which will matter in Cordera, and **iron manacles**, which will not. + +### Failure case for Act One + +**There isn't one.** Nobody can fail the Bureau. If the table is quiet, cut to Prosser +taking somebody's phone out of their hand and move on. **If it is running long at 35 +minutes, stop it** — the case is on the handouts and they can read on the drive. + +**Panic:** no triggers in Act One. Say the word "panic" once, explain the track in two +sentences, and leave it. + --- -## Act One — Mercy Draw, now *(~50 min)* +# Act Two — Cordera, and where the train went *(~50 min)* -> **Goal:** find the fraud, hear the train, understand it is on a timetable. +> **Goal:** find out where the line actually is, that something still passes it, and when. -Nevada. A dry wash four miles long with a railway grade along the south side. Rails -lifted in 1889; ballast and tie marks still there. Your watch says 11:38. +### The crossing -- **The south bench** — the grade, real and obvious. -- **The north bench** — nothing, and never anything. `[CUS: Spot or Engineering]` -- **The water tower footing**, half a mile up at the top of the grade. *Remember it.* -- **11:40.** A whistle a long way off, then four minutes of a train working a grade, - getting no nearer. **Automatic — nobody rolls for this.** +Mercy Draw, Nevada, 11:38. A dry wash four miles long. The grade runs along the **south** +side — ballast and tie marks, rails lifted in 1889. **The crossing does not open there.** + +It opens on the **north bench**: a strip of empty scrub on the wrong side of the wash, +where no railway has ever been. + +> Read aloud or paraphrase: +> +> The air over the north bench goes wrong at 11:40 — not shimmering, *creased*, like a +> page folded and opened again. Somewhere behind it a whistle sounds, a long way off, and +> a locomotive starts working a grade. You cannot see it. It does not get any nearer. + +**Everybody crosses. Nobody rolls for it.** + +> **The four minutes is the door, not the visit.** The crossing is *openable* for four +> minutes at 11:40 — that is the window to step through. Once across, the agents are in +> 1881 for as long as the crossing clock holds, which is an afternoon and an evening, not +> four minutes. **Say this to the table the moment somebody starts counting seconds.** +> The clock at 6 is the deadline, and it is measured in passes of the train, not minutes. + +> Read aloud or paraphrase: +> +> The other side is the fourth of November, 1881, at about four in the afternoon, and it +> is twenty degrees colder. You are standing on a bench of scrub and sage on the north +> side of a dry wash. There is no railway here. There is no railway anywhere you can see. + +**R2 is automatic and it should land hard.** They came out where the chart said the +railway was. The chart is in their hands. **[CUS: Navigate or Engineering]** confirms in +one roll that nothing has ever been built here — no cut, no fill, no ballast, nothing. + +**Cordera is visible**, about three miles south-west: smoke, a water tank, a grid of +roofs. + +### Cordera + +**A railroad and mining town of about eighteen hundred.** Woodsmoke, horses, coal dust, +and mud that freezes at night. Nobody is frightened yet. A train went missing yesterday +and the town is treating it as a company problem, which is to say somebody else's. + +**Nobody here can help them stop it, and almost everybody will help them get near it.** +The company wants its train back. Let the players use that. + +| Location | Who | What is here | +|---|---|---| +| **The company office** | a harried dispatcher | Orders on spikes, the working timetable, **the original survey in a drawer** | +| **The telegraph office** | **Ada Reyes** | The dispatcher's book, and the only person in town who is ahead of it | +| **The roundhouse** | fitters, a foreman | Men who know the road. One of them walked the Draw this morning and will not go back. | +| **The Bullion** (saloon) | everybody | Talk, and the wrong kind of attention. **This is where Act Three finds them.** | +| **The livery** | a liveryman who wants paying | Horses. This matters in Act Four. | +| **The assay office** | a clerk | The company's notice, and the reward. | ### Clue trail | # | Clue | How found | Type | |---|---|---|---| -| 1 | The filed survey puts the line on the **north** bench | **Automatic** — it is a handout with a line drawn on it | Essential | -| 2 | There has never been a railway on the north bench | **Automatic** to anyone who walks it | Essential | -| 3 | Six months of paperwork all say north bench | `[CUS: Research]`, or Registry provides | Essential | -| 4 | No 11:45 entry in the dispatcher's book | `[CUS: Research]` | Essential | -| 5 | E. Vane, surveyor, is on the manifest | `[CUS: Research]` | Optional | -| 6 | Three previous attempts, no survivors, all tried to stop it | Registry, if asked | Optional | -| 7 | The sound is a train *accelerating* up a grade | `[CUS: Listen or Engineering]` | Optional | +| 1 | There is no railway on the north bench, and never has been | **Automatic** — they are standing on it | Essential | +| 2 | The line is on the **south** bench, four miles out | Anyone in town, for the asking. **Automatic to a single question.** | Essential | +| 3 | No. 9 left Cordera 3 Nov and never reached Fallon | **Automatic** — it is the talk of the town, and it is on **TT-H05** | Essential | +| 4 | The filed survey and the built line disagree | Compare **TT-H04** with the ground or the drawer copy — `[CUS: Engineering, or automatic if they simply look]` | Essential | +| 5 | Six months of orders all say north bench | `[CUS: Research]` at the company office, on the spiked orders | Essential | +| 6 | **Something still passes the Draw, roughly every forty minutes** | The roundhouse man, or `[CUS: Listen]` within a mile of the wash | **Essential** | +| 7 | No 11:45 entry in the dispatcher's book | `[CUS: Research]`, or Ada Reyes volunteers it if treated civilly | Optional | +| 8 | Ada has sent the same query up the line forty times | Talk to her | Optional | +| 9 | E. Vane, surveyor, was aboard | `[CUS: Research]` on the waybills | Optional | +| 10 | Six men went out yesterday to serve a paper on the train | The saloon, `[CUS: Insight]` or buying a drink | Optional — **and it is the hook into Act Three** | -**Fallbacks.** 1 and 2 are the handout and the ground. 3 and 4 arrive from Registry by -telephone at the twenty-minute mark if nobody goes looking — Bewley is thorough and -slightly impatient. +**Clue 6 is the one the act exists for.** If they have not got it by 1:15, the roundhouse +foreman comes and finds *them*: a section hand called **Tobin Cray** walked out to the +Draw at first light to look for No. 9, heard it coming, and came back without looking. -**They cannot board at this end.** Too fast, grade against them. Let them try: a bruise, a -lesson, and the clock moves one. +> Read aloud or paraphrase: +> +> I heard her working the grade, mister. Steam and rods and all of it, close enough to +> throw a stone at. There's nothing on that line. I stood there till it came round again +> and then I stopped standing there. -> **Fast-track at 1:10:** the 11:40 comes round again and the door stays open long enough -> to walk through. That is what degrading looks like. +**Fallbacks.** Clues 1 and 3 cannot be missed. Clue 2 is one question to one person. If +the party stalls on 4 or 5, the dispatcher — who wants his train found — puts the filed +survey in their hands himself and asks them what they make of it. + +**Money.** Period coin from Stores buys drinks, a room, a liveryman's goodwill and a +roundhouse man's hour. **A party that tries to pay with anything else has used a modern +object across:** 1 Coherence, and the clock moves. + +**Panic triggers in Act Two:** +- **Arriving on ground that should have a railway on it and does not** — 1 point, if a + player wants it. Offer; do not force. +- **Hearing the train pass with nothing on the line** — 1 point, and this one is not + optional for anyone who goes and listens. + +### Failure case + +**They cannot fail to find the Draw** — the town will tell them where the line is. What +they can fail to do is find out that something still runs on it, and the roundhouse +fallback covers that. **If Act Two overruns, cut the assay office and the saloon talk and +let Act Three come to them.** --- -## Act Two — Cordera, 1881 *(~70 min)* +# Act Three — Rance Doyle's men *(~35 min)* -> **Goal:** the far side, the standing order in practice, and the boarding. +> **Goal:** a town-side obstacle with the same shape as the one on the train, and a name +> the players will meet again. -The fourth of November, 1881. A town of four hundred that smells of woodsmoke and horses. -Nobody is frightened yet — a train went into the Draw yesterday and has not come out, and -the wire says it never arrived. +**One-line essence: Rance Doyle wants his brother back, and the agents look exactly like +the people who took him.** -- **The company office** — dispatcher, orders on spikes, the original survey in a drawer. -- **The livery** — horses. This matters. -- **Ada Reyes**, telegraph, who has sent the same query forty times and has noticed the - missing 11:45. -- **The Draw**, four miles out. The train passes about every forty minutes. +### What is actually going on -**Nobody in 1881 can help them stop it, and everybody will help them get near it.** The -company wants its train back. Let the players use that. +Eleven weeks ago the Cordera & Western stopped paying the mine. Nine days ago **Josiah +Ambrose** got a writ of attachment out of a territorial judge in Fallon against the +company payroll. **On 3 November he and five men went out to serve it on No. 9**, and +none of them came back — because the train did not come back. -### The set-piece — getting aboard +The company's response was to post a **notice** (**TT-H05**) calling No. 9 overdue, +offering a reward for information, and naming Ambrose's six as wanted for interfering +with company property. There is a **company detective in town**, **Mr Shard**, buying +drinks and asking who was friendly with the writ men. -The train cannot stop and cannot be flagged. The only way on is to **match its speed**, -and the only place it is slow is **the top of the grade at the water tower** — about eight +**Then five strangers arrive in coats that do not fit, with money, asking about the +train.** + +**Rance Doyle is not stupid and he is not wrong to draw the conclusion he draws.** + +### The confrontation + +**Where:** the street outside The Bullion, or the livery, or wherever the party is when +the act needs to start. **Six men**, Rance at the front, two with revolvers, one with a +shotgun, three with what was to hand. + +> Read aloud or paraphrase: +> +> There are six of them and they have arranged themselves across the street in the way +> men do when they have talked about it first. The one at the front has a face like his +> brother's, which you have no way of knowing yet. He says: *"You've been asking after the +> train. So've we. Ours went out on it."* + +**Rance wants three things, in this order:** to know where his brother is, to know +whether the agents are Shard's, and to be taken seriously. + +### How this resolves + +**There is no roll that makes this go away, and there is no roll that makes it a fight.** +It resolves on what the players say. + +| They do | What happens | +|---|---| +| **Tell him the truth** — the train is still out there, still running, and they are going to it | **It works. No roll.** He believes them, because it matches what Cray said and nothing else has. He wants to come. | +| **Show him TT-H04 or explain the survey** | Works as well as the truth, and faster. He cannot read a chart, but he can tell when somebody is not performing. | +| Deny everything, stonewall, pull rank | `[CUS: Fast Talk or Persuade — difficult]`. Success buys an exit, not an ally. Failure goes to the standoff below. | +| **Claim to be from the company, or get caught lying** | Straight to the standoff, and Rance's men mean it | +| Draw first | The standoff, immediately, and the agents started it | + +### The standoff — and what losing costs + +**Rance's men are not trying to kill anybody.** They intend to take the agents somewhere +quiet and find out what they know. **Run it as a fight that stops early.** + +- **Rance calls it off the moment one of his men goes down**, or one of the agents does. + He has already lost a brother this week. +- **A downed agent is captured, not killed.** The dying rules apply and Rance's men will + fetch a doctor, because they are not murderers and they know what a murder charge does + to a strike. + +**MEASURED, 400 runs each, four duty-roster agents against the six:** + +| The agents | Result | +|---|---| +| **From cover, and Rance folds early** | 0.4 of 4 hurt, effectively nobody down, over in about 2 rounds | +| **In the open, and Rance folds early** | 1.25 of 4 hurt, one party in eight loses somebody to the floor | +| **Shoot to kill — fought to the finish** | **1.75 of 4 down, ten rounds, and the party is wiped in 24% of runs** | + +> **The early stop is what makes this act survivable, not the miners being weak.** Six +> armed men fought to a finish are as dangerous as the payroll box in Act Five — nearly +> one party in four does not walk out of the street. **If the agents start executing +> people, do not quietly soften it.** Let Rance's men fight for their lives, and let the +> table find out that a frontier mining town's grievance crew is not a random encounter. + +**Losing the standoff costs them the 1881 issue.** Rance's men take the Webleys, the +Martini, the spyglass and the coin, and hold the agents in a back room for two hours. +**Nobody dies and nothing is unrecoverable** — but Act Four now starts with an unarmed +party, and Act Five is a gunfight. **Say this cost out loud before the first shot**, the +way you say the payroll-box row in Act Five. + +**Getting the kit back:** ask Rance for it, once they have told him the truth. He returns +it, minus the coin, which has been spent. + +### Rance wants to come + +**This is the important part of the act and it is easy to miss.** + +Once he believes them, **Rance Doyle asks to come to the Draw**, and he will follow at a +distance if refused. He is a fit, angry, useful man with a horse and no idea what he is +walking towards. + +| The players | What it buys, what it costs | +|---|---| +| **Take him as far as the Draw** | The default. He knows the ground, he gets them horses, and he stands on the bench and watches. | +| **Take him aboard** | He is competent in the four minutes — and **he is in car three when his brother is shot, every pass.** Then they have to tell him what closing it does. **Powerful, and only run it if the table can hold it.** | +| **Refuse him** | He follows anyway, arrives late, and is on the bench at the end. | +| **Never tell him anything** | He is in the crowd at the epilogue asking a Registry man questions nobody will answer. | + +**Give TT-H07 here** — the list of six names in Ambrose's hand, which Rance has carried +in his coat since Thursday. **Do not explain it.** In Act Five they will be standing in a +car with all six. + +**Panic triggers in Act Three:** +- Being taken and held — 1 point to anyone disarmed and locked in. +- Nothing else. **This act is meant to be a hard hour in an ordinary world**, not a + supernatural one. + +### Failure case + +**If the table talks its way out in five minutes, that is a win and you have thirty +minutes back** — spend them on Act Four, which always wants more. **If it goes to a +fight and stalls,** Shard's arrival with two hired men breaks it up: everybody scatters, +and now the agents owe Rance nothing and know nothing. + +--- + +# Act Four — Getting aboard *(~45 min)* + +> **Goal:** the Draw, the arithmetic of a train that cannot stop, and forty seconds of +> slow track. + +Four miles out. The line is on the south bench, exactly where the chart says it is not. + +> Read aloud or paraphrase: +> +> The Draw is a dry wash a quarter-mile across with a made grade running the length of the +> south side. There is nothing on the line. At eleven minutes past the hour you hear a +> whistle, and then a locomotive working hard up the grade towards you, and the sound goes +> past at about thirty miles an hour, and there is nothing there. Four minutes later it is +> quiet, and your watch says it will do it again at ten to. + +**It passes roughly every forty minutes.** Let them watch two passes before they commit +to anything. **Each pass they watch moves the crossing clock one.** + +**R9 — the sound is a train *accelerating*, always** — is `[CUS: Listen or Engineering]`, +or free to anybody who was at the roundhouse. + +### What they are up against + +**The train cannot stop and cannot be flagged.** Thirty miles an hour on the level, and +the only place it is slow is **the top of the grade at the water tower** — about eight miles an hour, for perhaps forty seconds. -1. **Ride it down.** Horses alongside on the bench, step across. `[CUS: Ride, then - Athletics]` — and the horse needs its own Ride roll to go near the train at all. -2. **Drop from the tower.** Twelve feet onto a moving roof. `[CUS: Athletics — average; - **only a fumble is a fall**]`. **Do not make this difficult** — playtested at halved - skill it put four agents on 12–31% and all four missed, which stalls the one scene the - scenario is built around. -3. **The wagon on the grade.** Four horses, a plank across. Slowest to arrange, safest to - cross, and it needs the company's help. +**The water tower is half a mile up the grade** and it is still standing in 1881, which +it will not be in the present day. Anybody who looks at the ground sees the answer. + +### The three routes + +**Say which route suits whom, out loud, before they choose.** + +| Route | Roll | Suits | +|---|---|---| +| **Drop from the tower** — twelve feet onto a moving roof | `[CUS: Athletics — average; **only a fumble is a fall**]` | Containment, the criminal, the Field Lead | +| **Ride it down** — horses alongside on the bench, step across | `[CUS: Athletics — difficult]`. **A local does the riding** — Rance, one of his men, or the liveryman. No agent from 2026 rides well enough to bring a horse alongside a moving train. | Nobody, really. It is the fast option and the worst one. | +| **The wagon on the grade** — four horses, a plank across | `[CUS: Athletics — easy]`, slowest to arrange, needs the company's or Rance's help | **The doctor and the Registry officer** | + +**There is no Ride skill in this game and the agents do not have one.** Any horse work +is done by a local who is doing the players a favour, and the agent's roll is only for +the step across. Say so plainly the moment somebody suggests horses. **The wagon is easier than the tower, and the tower is easier than the horses.** A party -that spends an hour arranging the wagon has bought an easy roll and should get one. +that spends twenty minutes arranging the wagon has bought an easy roll and should get one. -**Say which route suits whom, out loud, before they choose.** Athletics on a duty-roster -sheet runs from about 25% to 60%, and the split is not subtle: the Containment officer and -the criminal take the tower, the Field Lead can, and **the doctor and the Registry officer -should be on the wagon**. Playtested by putting all five on the tower: two missed twice, -had to be carried across on the department's plank, and became passengers in their own -set-piece — at a cost of two passes on the clock. +> **Do not make the tower difficult.** Playtested at halved skill it put four agents on +> 12–31% and all four missed, which stalls the one scene the scenario is built around. +> Playtested with all five on the tower: two missed twice, had to be carried across on +> the department's plank, and became passengers in their own set-piece. -**Everybody has to get on.** A failed attempt gets the next pass, forty minutes later, and -the clock moves — not a full stop. +**Everybody has to get on.** A failed attempt gets the next pass, forty minutes later, +and the clock moves — not a full stop. **Panic:** boarding is worth a point to anybody who wants one. Offer it; do not force it. -> **At 2:45 they are aboard.** If two attempts have failed, the department's second wagon +> **At 2:55 they are aboard.** If two attempts have failed, the department's second wagon > arrives with two more agents and a plank, and the players owe somebody a favour. +### Failure case + +**They cannot fail this act, only pay for it.** Every failure is forty minutes and a +click of the clock. If the clock reaches 5 during Act Four, tell them plainly: **one +pass left.** + --- -## Act Three — Aboard, and the four minutes *(~50 min)* +# Act Five — The four minutes *(~50 min)* > **Goal:** survive a gunfight nobody started for their benefit, work out that it repeats, > and close the crossing anyway. -> It is warm. That is the first thing. Sixty-one people in five cars, and it smells of -> bodies and coal smoke and coffee. Somebody has organised a rota for the water. A child -> is asleep across two seats with a coat over her. They look up when you come through the -> door, and one of them says: *"You want to be somewhere else in about six minutes."* +> Read aloud or paraphrase: +> +> It is warm. That is the first thing. Sixty-one people in five cars and it smells of +> bodies and coal smoke and coffee, and somebody has organised a rota for the water. A +> child is asleep across two seats with a coat over her. They look up when you come +> through the door, and one of them says: *"You want to be somewhere else in about six +> minutes."* | Where | What | |---|---| @@ -363,6 +680,8 @@ the clock moves — not a full stop. | Car four | Freight, the payroll box bolted down, the signed survey in the satchel | | Car five | **Elias Vane**, alone, watching the line come out from under | +**Give TT-H08, the manifest, when Hester Bligh first speaks to them.** + ### The four minutes Starts on the whistle for the grade. Run it in rounds. **It is the same four minutes every @@ -371,10 +690,15 @@ time** — same men, same shots, same two passengers hit in the second minute. | Minute | What happens if nobody interferes | |---|---| | 1 | Ambrose's five come forward from car four. Merritt's four are at the front of car three. Somebody shouts *put it down*; both sides think they said it. | -| 2 | First volley. **Two passengers are hit** — a miner named Doyle, and Mrs Danforth's arm. Every time. | +| 2 | First volley. **Two passengers are hit** — **Tom Doyle**, and Mrs Danforth's arm. Every time. | | 3 | Merritt falls back to the car four door and holds it. Ambrose takes the overturned seats. Everybody reloads: a Webley is six, a Martini is one. | | 4 | Ambrose reaches the box. Merritt shoots him through the door. The whistle sounds, and it resets. | +> **If Rance came aboard**, he is in car three from minute one and he has seen his +> brother. He will go to him. **He cannot be talked out of it and he cannot be hurt** — +> he is not part of the loop, so he *can* be shot, and the exposure table applies to him +> as to any agent. **Play him as a man with no interest at all in the mission.** + ### HOW MUCH FIRE THE AGENTS DRAW — read before running it **The two sides are shooting at each other, not at the agents.** Getting this wrong turns @@ -455,14 +779,14 @@ Seven of the ten duty-roster agents have neither Persuade nor Status trained; pl three separate attempts on Kell all failed and the scenario had no way to end. **When the brakes go on, the loop lets go.** Four minutes finish for the first time since -1881. Doyle and Ambrose do not get up. They never did. +1881. Tom Doyle and Josiah Ambrose do not get up. They never did. ### The choices — no roll resolves this | Choice | What it costs | |---|---| | **Close it as ordered** | The mission, done. Fifty-nine released into their own century. Two men die of wounds taken in 1881, in 1881. | -| **Close it, having pulled Doyle and Mrs Danforth clear** | Works for those two. Nobody can save Ambrose — only stopping the train stops Merritt shooting him, and stopping the train is what kills him. | +| **Close it, having pulled Doyle and Mrs Danforth clear** | Works for Mrs Danforth. **It does not save Tom Doyle** — he is shot again on every pass they spend arranging it, and the wound that kills him is the one from the pass they stop on. Nobody can save Ambrose: only stopping the train stops Merritt shooting him, and stopping the train is what kills him. | | **Try to end the fight first** | Admirable, probably impossible. Every pass spent trying moves the crossing clock; at 6 it closes with everyone inside. | | **Refuse, leave it running** | Everyone lives, for a value of living four minutes long. It fails inside a year and then nobody is released at all. | @@ -476,34 +800,46 @@ three separate attempts on Kell all failed and the scenario had no way to end. --- -## Epilogue — the register *(~20 min)* +## Epilogue — the register *(~15 min)* A Registry room, a form, and somebody writing down sixty-one names. | Ending | What the register says | |---|---| | **Closed as ordered** | Fifty-nine walk forward into their own century. Ambrose and Doyle die of wounds taken on 3 November 1881, four minutes after they took them. Registry counts it a success and it is one. | -| **Closed, the two passengers pulled clear first** | As above, and Mrs Danforth keeps her arm. | +| **Closed, Mrs Danforth pulled clear first** | As above, and she keeps her arm. | | **Closed late** | The same ending, more expensively. If the clock reached 6 first, add the agents to the list. | | **Left running** | Logged, monitored, inherited. Sixty-one people continue to live four minutes. When it fails, nobody is released at all. | +**If Rance was aboard:** he is in the Registry corridor, and nobody has told him he cannot +be. He wants to know why a government he has never heard of decided his brother should +die on schedule. **Let a player answer him. Do not answer for them.** + +**If Rance was not aboard:** he is on the north bench at dusk with six horses and no +riders coming back, and he is still there when the crossing closes. + **Registry's note on any ending:** *"The department did not cause these deaths. It ceased to prevent them. The distinction matters to the file and it is not expected to matter to the agents."* --- -## Cast +## NPC Roster — quick sheet -| Who | Wants | Key line | +| Who | Essence | Key line | |---|---|---| +| **Mr Bewley**, Registry | wants the chart and the truth written down | *"Bring me the paper. The paper is the case."* | +| **Mr Prosser**, Stores | has done this nineteen years and will not be argued with | *"You may argue. I have laid out what you may take."* | +| **Ada Reyes**, telegraph | an answer up the line | *"It never got to Fallon. I've sent it forty times."* | +| **Tobin Cray**, section hand | to not go back out there | *"There's nothing on that line. I stopped standing there."* | +| **Rance Doyle**, miner | his brother back, and to be taken seriously | *"You've been asking after the train. So've we. Ours went out on it."* | +| **Mr Shard**, company detective | names, and the reward money | *"Who drank with them? That's all. Who drank with them."* | +| **Marius Kell**, engineer | to be allowed to stop | *"You tell me when. I'll not do it before you say."* | +| **Hester Bligh**, conductor | her passengers accounted for | *"Sixty-one aboard. I have counted them every hour since."* | | **Cass Merritt**, hired guard | to see the box to Fallon, as engaged | *"I have a letter. Whatever you have, I have a letter."* | | **Josiah Ambrose**, miner | eleven weeks of wages, lawfully | *"There is a judge's seal on this. Read it and then shoot me."* | -| **Marius Kell**, engineer | to be allowed to stop | *"You tell me when. I'll not do it before you say."* | +| **Tom Doyle**, miner | to go home. Dies at minute two, every time. | *"Rance said don't. I should've listened to Rance."* | | **Elias Vane**, surveyor | to be asked, at last | *"I signed it. Six months of honest men made it true."* | -| **Hester Bligh**, conductor | her passengers accounted for | *"Sixty-one aboard. I have counted them every hour since."* | -| **Ada Reyes**, telegraph | an answer up the line | *"It never got to Fallon. I've sent it forty times."* | -| **Mr Bewley**, Registry | the chart, and the truth written down | *"Bring me the paper. The paper is the case."* | --- @@ -516,15 +852,20 @@ the agents."* - **What is at the far end of the line.** Nobody aboard has reached it. - **Whether closing it was a rescue.** Fifty-nine people say yes. Two men do not get to say. +- **Whether Rance forgives them.** He does not say, and Registry does not ask. ## GM notes +- **Act One is not a briefing, it is a workplace.** The birthday card going round Accounts + is doing as much work as the case file. - **Play the passengers as people, hard** — and the nine men in the fight hardest of all. - **Never let the players win the fight.** They can survive it, shape it, and pull people out of it. They cannot end it. Only the brakes end it. - **Standing Order 9 is the tutorial.** Do not soften it and do not apologise for it. -- **Cut first:** the town, down to the livery and the telegraph office. Never cut the - boarding. +- **Rance is the emotional wiring of the whole case.** He turns a number into a surname. + If the table takes to him, take him aboard. If they do not, leave him on the bench. +- **Cut first:** the assay office, the saloon talk, and the Act Three fight. **Never cut + the boarding.** - **If they crack it early,** run the passes — six of them, forty minutes apart — and let the table feel the arithmetic they are betting on. @@ -536,8 +877,9 @@ the agents."* |---|---|---|---| | **LAST ADMISSION** | 2h | yes, one fight | no — prologue, civilians | | **OPEN DAY** | 2h15 | no | no — prologue, civilians | -| **THROUGH TRAIN** | 3h30 | no | **yes** — the first real case | +| **THROUGH TRAIN** | 4h | yes, twice | **yes** — the first real case | | **BLACK PLATFORM** | 3–4h | yes, heavily | no — a modern-day action case | -Run a prologue, then THROUGH TRAIN. BLACK PLATFORM is the one to reach for when a table -wants a fight. +THROUGH TRAIN now opens with its own induction and does not need a prologue in front of +it. Run a prologue first if the table wants to play civilians before they play agents. +BLACK PLATFORM is the one to reach for when a table wants a fight. diff --git a/package.json b/package.json index 6f7f6b9..fbe784f 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "build": "node tools/build-packs.mjs && node tools/update-readme.mjs", "icons": "node tools/make-icons.mjs", - "check": "node tools/check-rules.mjs && node tools/check-kits.mjs && node tools/check-lang.mjs && node tools/check-templates.mjs && node tools/check-behaviour.mjs", + "check": "node tools/check-rules.mjs && node tools/check-kits.mjs && node tools/check-lang.mjs && node tools/check-templates.mjs && node tools/check-behaviour.mjs && node tools/check-scenarios.mjs", "test": "npm run check", "readme": "node tools/update-readme.mjs" }, 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 3669d22..4b51090 100644 --- a/packs/armour/LOG +++ b/packs/armour/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.522827 16edc3000 Recovering log #3 -2026/08/18-23:21:42.522857 16edc3000 Level-0 table #5: started -2026/08/18-23:21:42.523016 16edc3000 Level-0 table #5: 4591 bytes OK -2026/08/18-23:21:42.523288 16edc3000 Delete type=0 #3 -2026/08/18-23:21:42.523332 16edc3000 Delete type=3 #2 +2026/08/19-19:25:20.062011 172aa7000 Delete type=3 #1 diff --git a/packs/armour/LOG.old b/packs/armour/LOG.old deleted file mode 100644 index f1db83c..0000000 --- a/packs/armour/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.000759 16ec7f000 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 331cc1f..db97f05 100644 --- a/packs/expedition/LOG +++ b/packs/expedition/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.542861 1705e7000 Recovering log #3 -2026/08/18-23:21:42.542881 1705e7000 Level-0 table #5: started -2026/08/18-23:21:42.543000 1705e7000 Level-0 table #5: 4129 bytes OK -2026/08/18-23:21:42.543233 1705e7000 Delete type=0 #3 -2026/08/18-23:21:42.543262 1705e7000 Delete type=3 #2 +2026/08/19-19:25:20.141345 173abf000 Delete type=3 #1 diff --git a/packs/expedition/LOG.old b/packs/expedition/LOG.old deleted file mode 100644 index c6c19fb..0000000 --- a/packs/expedition/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.085840 1704a3000 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 3289fc0..eea13bc 100644 --- a/packs/gear/LOG +++ b/packs/gear/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.523809 16edc3000 Recovering log #3 -2026/08/18-23:21:42.523911 16edc3000 Level-0 table #5: started -2026/08/18-23:21:42.524193 16edc3000 Level-0 table #5: 31614 bytes OK -2026/08/18-23:21:42.524392 16edc3000 Delete type=0 #3 -2026/08/18-23:21:42.524442 16edc3000 Delete type=3 #2 +2026/08/19-19:25:20.063575 173abf000 Delete type=3 #1 diff --git a/packs/gear/LOG.old b/packs/gear/LOG.old deleted file mode 100644 index 4e62250..0000000 --- a/packs/gear/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.002659 1704a3000 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..bfabd98 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 9c4e166..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 40f2dad..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 92ad3e4..b8f8abc 100644 --- a/packs/lastadmission/LOG +++ b/packs/lastadmission/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.537220 1705e7000 Recovering log #3 -2026/08/18-23:21:42.537462 1705e7000 Level-0 table #5: started -2026/08/18-23:21:42.537820 1705e7000 Level-0 table #5: 46857 bytes OK -2026/08/18-23:21:42.538102 1705e7000 Delete type=0 #3 -2026/08/18-23:21:42.538144 1705e7000 Delete type=3 #2 +2026/08/19-19:25:20.126868 1742cb000 Delete type=3 #1 diff --git a/packs/lastadmission/LOG.old b/packs/lastadmission/LOG.old deleted file mode 100644 index 5549886..0000000 --- a/packs/lastadmission/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.066464 16ec7f000 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 061c146..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..535c9fd 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 c1a43df..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 76e0001..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 f37bb6d..8e6f1dc 100644 --- a/packs/npcs/LOG +++ b/packs/npcs/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.511991 16edc3000 Recovering log #3 -2026/08/18-23:21:42.512828 16edc3000 Level-0 table #5: started -2026/08/18-23:21:42.514313 16edc3000 Level-0 table #5: 234672 bytes OK -2026/08/18-23:21:42.514681 16edc3000 Delete type=0 #3 -2026/08/18-23:21:42.514785 16edc3000 Delete type=3 #2 +2026/08/19-19:25:20.101699 172aa7000 Delete type=3 #1 diff --git a/packs/npcs/LOG.old b/packs/npcs/LOG.old deleted file mode 100644 index 65c1374..0000000 --- a/packs/npcs/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.040817 1704a3000 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 93be6b6..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 3a1ae77..16b38bd 100644 --- a/packs/powers/LOG +++ b/packs/powers/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.520180 16edc3000 Recovering log #3 -2026/08/18-23:21:42.520206 16edc3000 Level-0 table #5: started -2026/08/18-23:21:42.520334 16edc3000 Level-0 table #5: 3295 bytes OK -2026/08/18-23:21:42.520647 16edc3000 Delete type=0 #3 -2026/08/18-23:21:42.520681 16edc3000 Delete type=3 #2 +2026/08/19-19:25:20.136777 173abf000 Delete type=3 #1 diff --git a/packs/powers/LOG.old b/packs/powers/LOG.old deleted file mode 100644 index 23535aa..0000000 --- a/packs/powers/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.079222 16f48b000 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..703492d 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 3c6c0b9..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 3829ac2..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 e268a49..62881b6 100644 --- a/packs/pregens/LOG +++ b/packs/pregens/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.501500 16edc3000 Recovering log #3 -2026/08/18-23:21:42.503444 16edc3000 Level-0 table #5: started -2026/08/18-23:21:42.506554 16edc3000 Level-0 table #5: 560581 bytes OK -2026/08/18-23:21:42.506965 16edc3000 Delete type=0 #3 -2026/08/18-23:21:42.507130 16edc3000 Delete type=3 #2 +2026/08/19-19:25:20.086192 1742cb000 Delete type=3 #1 diff --git a/packs/pregens/LOG.old b/packs/pregens/LOG.old deleted file mode 100644 index 8b53a27..0000000 --- a/packs/pregens/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.025927 16fc97000 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 61a6fea..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..4a43c24 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 75e5695..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 bb91941..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 f6a0730..f6341af 100644 --- a/packs/primer/LOG +++ b/packs/primer/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.526413 16edc3000 Recovering log #3 -2026/08/18-23:21:42.526467 16edc3000 Level-0 table #5: started -2026/08/18-23:21:42.526727 16edc3000 Level-0 table #5: 24730 bytes OK -2026/08/18-23:21:42.526971 16edc3000 Delete type=0 #3 -2026/08/18-23:21:42.526999 16edc3000 Delete type=3 #2 +2026/08/19-19:25:20.134073 173abf000 Delete type=3 #1 diff --git a/packs/primer/LOG.old b/packs/primer/LOG.old deleted file mode 100644 index 5835654..0000000 --- a/packs/primer/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.075510 16fc97000 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 7f1100d..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..122ec89 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 f989b58..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 57e3987..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 412ad02..8e34220 100644 --- a/packs/prologue/LOG +++ b/packs/prologue/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.538839 16f5cf000 Recovering log #3 -2026/08/18-23:21:42.539012 16f5cf000 Level-0 table #5: started -2026/08/18-23:21:42.539381 16f5cf000 Level-0 table #5: 44887 bytes OK -2026/08/18-23:21:42.539604 16f5cf000 Delete type=0 #3 -2026/08/18-23:21:42.539638 16f5cf000 Delete type=3 #2 +2026/08/19-19:25:20.130966 172aa7000 Delete type=3 #1 diff --git a/packs/prologue/LOG.old b/packs/prologue/LOG.old deleted file mode 100644 index 36808ba..0000000 --- a/packs/prologue/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.071063 16ec7f000 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 c033d8f..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..602aa25 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 b4e6a9a..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 e5ce67c..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 e9bdaeb..3a5db23 100644 --- a/packs/rules/LOG +++ b/packs/rules/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.527792 16f5cf000 Recovering log #3 -2026/08/18-23:21:42.527874 16f5cf000 Level-0 table #5: started -2026/08/18-23:21:42.528257 16f5cf000 Level-0 table #5: 37376 bytes OK -2026/08/18-23:21:42.528527 16f5cf000 Delete type=0 #3 -2026/08/18-23:21:42.528572 16f5cf000 Delete type=3 #2 +2026/08/19-19:25:20.139904 172aa7000 Delete type=3 #1 diff --git a/packs/rules/LOG.old b/packs/rules/LOG.old deleted file mode 100644 index fcea83e..0000000 --- a/packs/rules/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.083980 16fc97000 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 bbb24de..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..d985ef5 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 2ac258b..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 3318040..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 5ecdd3f..55d7bd4 100644 --- a/packs/skills/LOG +++ b/packs/skills/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.517325 16edc3000 Recovering log #3 -2026/08/18-23:21:42.517371 16edc3000 Level-0 table #5: started -2026/08/18-23:21:42.517580 16edc3000 Level-0 table #5: 7806 bytes OK -2026/08/18-23:21:42.518061 16edc3000 Delete type=0 #3 -2026/08/18-23:21:42.518138 16edc3000 Delete type=3 #2 +2026/08/19-19:25:20.056617 172aa7000 Delete type=3 #1 diff --git a/packs/skills/LOG.old b/packs/skills/LOG.old deleted file mode 100644 index 3b01202..0000000 --- a/packs/skills/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:16.994201 1704a3000 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 39883ac..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 ecfa214..bbed8ca 100644 --- a/packs/slice/LOG +++ b/packs/slice/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.540416 16fddb000 Recovering log #3 -2026/08/18-23:21:42.540459 16fddb000 Level-0 table #5: started -2026/08/18-23:21:42.540720 16fddb000 Level-0 table #5: 16902 bytes OK -2026/08/18-23:21:42.540972 16fddb000 Delete type=0 #3 -2026/08/18-23:21:42.541026 16fddb000 Delete type=3 #2 +2026/08/19-19:25:20.135477 1732b3000 Delete type=3 #1 diff --git a/packs/slice/LOG.old b/packs/slice/LOG.old deleted file mode 100644 index c64b8c7..0000000 --- a/packs/slice/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.077585 16fc97000 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..b2f102f 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 c6c3cf0..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 dc42692..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 4ea1137..c3d36b9 100644 --- a/packs/starter/LOG +++ b/packs/starter/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.534997 16edc3000 Recovering log #3 -2026/08/18-23:21:42.535341 16edc3000 Level-0 table #5: started -2026/08/18-23:21:42.535924 16edc3000 Level-0 table #5: 84039 bytes OK -2026/08/18-23:21:42.536290 16edc3000 Delete type=0 #3 -2026/08/18-23:21:42.536355 16edc3000 Delete type=3 #2 +2026/08/19-19:25:20.112836 172aa7000 Delete type=3 #1 diff --git a/packs/starter/LOG.old b/packs/starter/LOG.old deleted file mode 100644 index f520bc2..0000000 --- a/packs/starter/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.052004 1704a3000 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 ff0842a..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 4158d77..7ec9150 100644 --- a/packs/tables/LOG +++ b/packs/tables/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.541794 1705e7000 Recovering log #3 -2026/08/18-23:21:42.541832 1705e7000 Level-0 table #5: started -2026/08/18-23:21:42.541980 1705e7000 Level-0 table #5: 3739 bytes OK -2026/08/18-23:21:42.542243 1705e7000 Delete type=0 #3 -2026/08/18-23:21:42.542288 1705e7000 Delete type=3 #2 +2026/08/19-19:25:20.105972 1732b3000 Delete type=3 #1 diff --git a/packs/tables/LOG.old b/packs/tables/LOG.old deleted file mode 100644 index 786f74a..0000000 --- a/packs/tables/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.045501 1704a3000 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 2ab73b9..39e0be6 100644 --- a/packs/talents/LOG +++ b/packs/talents/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.519065 16edc3000 Recovering log #3 -2026/08/18-23:21:42.519098 16edc3000 Level-0 table #5: started -2026/08/18-23:21:42.519276 16edc3000 Level-0 table #5: 5770 bytes OK -2026/08/18-23:21:42.519549 16edc3000 Delete type=0 #3 -2026/08/18-23:21:42.519584 16edc3000 Delete type=3 #2 +2026/08/19-19:25:20.058885 173abf000 Delete type=3 #1 diff --git a/packs/talents/LOG.old b/packs/talents/LOG.old deleted file mode 100644 index ff775fa..0000000 --- a/packs/talents/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:16.997485 1704a3000 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/throughtrain/000003.log b/packs/throughtrain/000003.log new file mode 100644 index 0000000..803aa37 Binary files /dev/null and b/packs/throughtrain/000003.log differ diff --git a/packs/throughtrain/000005.ldb b/packs/throughtrain/000005.ldb deleted file mode 100644 index 80fed13..0000000 Binary files a/packs/throughtrain/000005.ldb and /dev/null differ diff --git a/packs/throughtrain/000006.log b/packs/throughtrain/000006.log deleted file mode 100644 index 123c757..0000000 Binary files a/packs/throughtrain/000006.log and /dev/null differ diff --git a/packs/throughtrain/CURRENT b/packs/throughtrain/CURRENT index cacca75..1a84852 100644 --- a/packs/throughtrain/CURRENT +++ b/packs/throughtrain/CURRENT @@ -1 +1 @@ -MANIFEST-000004 +MANIFEST-000002 diff --git a/packs/throughtrain/LOG b/packs/throughtrain/LOG index 9db2725..9b0e77e 100644 --- a/packs/throughtrain/LOG +++ b/packs/throughtrain/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.531147 1705e7000 Recovering log #3 -2026/08/18-23:21:42.531387 1705e7000 Level-0 table #5: started -2026/08/18-23:21:42.531924 1705e7000 Level-0 table #5: 68636 bytes OK -2026/08/18-23:21:42.532247 1705e7000 Delete type=0 #3 -2026/08/18-23:21:42.532303 1705e7000 Delete type=3 #2 +2026/08/19-19:25:20.120612 1742cb000 Delete type=3 #1 diff --git a/packs/throughtrain/LOG.old b/packs/throughtrain/LOG.old deleted file mode 100644 index de05636..0000000 --- a/packs/throughtrain/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.060194 16f48b000 Delete type=3 #1 diff --git a/packs/throughtrain/MANIFEST-000002 b/packs/throughtrain/MANIFEST-000002 new file mode 100644 index 0000000..bbbc585 Binary files /dev/null and b/packs/throughtrain/MANIFEST-000002 differ diff --git a/packs/throughtrain/MANIFEST-000004 b/packs/throughtrain/MANIFEST-000004 deleted file mode 100644 index a516370..0000000 Binary files a/packs/throughtrain/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 309684b..30950d4 100644 --- a/packs/vehicles/LOG +++ b/packs/vehicles/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.525170 16edc3000 Recovering log #3 -2026/08/18-23:21:42.525197 16edc3000 Level-0 table #5: started -2026/08/18-23:21:42.525391 16edc3000 Level-0 table #5: 6939 bytes OK -2026/08/18-23:21:42.525699 16edc3000 Delete type=0 #3 -2026/08/18-23:21:42.525727 16edc3000 Delete type=3 #2 +2026/08/19-19:25:20.065415 172aa7000 Delete type=3 #1 diff --git a/packs/vehicles/LOG.old b/packs/vehicles/LOG.old deleted file mode 100644 index 7358978..0000000 --- a/packs/vehicles/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:17.004916 1704a3000 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 8157caa..04ed580 100644 --- a/packs/weapons/LOG +++ b/packs/weapons/LOG @@ -1,5 +1 @@ -2026/08/18-23:21:42.521392 16edc3000 Recovering log #3 -2026/08/18-23:21:42.521476 16edc3000 Level-0 table #5: started -2026/08/18-23:21:42.521798 16edc3000 Level-0 table #5: 14767 bytes OK -2026/08/18-23:21:42.522090 16edc3000 Delete type=0 #3 -2026/08/18-23:21:42.522134 16edc3000 Delete type=3 #2 +2026/08/19-19:25:20.060522 172aa7000 Delete type=3 #1 diff --git a/packs/weapons/LOG.old b/packs/weapons/LOG.old deleted file mode 100644 index 1d7a683..0000000 --- a/packs/weapons/LOG.old +++ /dev/null @@ -1 +0,0 @@ -2026/08/18-23:21:16.999207 1704a3000 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/system.json b/system.json index 4c6c988..6a34b4f 100644 --- a/system.json +++ b/system.json @@ -2,7 +2,7 @@ "id": "ringbrp", "title": "The Custodians", "description": "A Basic Roleplaying game of agents who cross the crossing to contain what should not be there — and who come back a little less from here each time.", - "version": "1.5.0", + "version": "1.6.0", "compatibility": { "minimum": 13, "verified": "14.364" diff --git a/tools/build-packs.mjs b/tools/build-packs.mjs index d5c03db..0ea42b5 100644 --- a/tools/build-packs.mjs +++ b/tools/build-packs.mjs @@ -547,6 +547,10 @@ async function writePack(packName, entries) { // guards cannot tell whether a rule is READ; these tests can. execFileSync(process.execPath, [new URL("check-behaviour.mjs", import.meta.url).pathname], { stdio: "inherit" }); + // And refuse a scenario that tells the GM to roll a skill nobody has. THROUGH TRAIN + // asked for Ride through several drafts and a playtest; there is no Ride skill. + execFileSync(process.execPath, [new URL("check-scenarios.mjs", import.meta.url).pathname], + { stdio: "inherit" }); } catch { console.error("build aborted: pre-build checks failed"); process.exit(1); } } @@ -918,16 +922,19 @@ function cullandScene() { for (const pg of handouts.pages) pg.ownership = { default: 2 }; const showJournal = imageJournal("THROUGH TRAIN — Show the players", "tt_show", [ - { name: "1 · Mercy Draw, now", src: "art/scenes/tt_01_draw.webp" }, + { name: "1 · The Bureau", src: "art/scenes/tt_11_bureau.webp" }, { name: "2 · Stores, and the 1881 issue", src: "art/scenes/tt_02_stores.webp" }, - { name: "3 · The grade on the south bench", src: "art/scenes/tt_03_bench.webp" }, - { name: "4 · Cordera, 1881", src: "art/scenes/tt_04_cordera.webp" }, - { name: "5 · The water tower — boarding", src: "art/scenes/tt_05_boarding.webp" }, - { name: "6 · Inside car three, between passes", src: "art/scenes/tt_06_car.webp" }, - { name: "7 · The four minutes", src: "art/scenes/tt_08_gunfight.webp" }, - { name: "8 · The payroll box, car four", src: "art/scenes/tt_09_payroll.webp" }, - { name: "9 · The gap between the cars", src: "art/scenes/tt_10_couple.webp" }, - { name: "10 · Afterwards, the register", src: "art/scenes/tt_07_after.webp" } + { name: "3 · Mercy Draw, now", src: "art/scenes/tt_01_draw.webp" }, + { name: "4 · The north bench, 1881", src: "art/scenes/tt_12_northbench.webp" }, + { name: "5 · Cordera, 1881", src: "art/scenes/tt_04_cordera.webp" }, + { name: "6 · Six men across the street", src: "art/scenes/tt_13_standoff.webp" }, + { name: "7 · The grade on the south bench", src: "art/scenes/tt_03_bench.webp" }, + { name: "8 · The water tower — boarding", src: "art/scenes/tt_05_boarding.webp" }, + { name: "9 · Inside car three, between passes", src: "art/scenes/tt_06_car.webp" }, + { name: "10 · The four minutes", src: "art/scenes/tt_08_gunfight.webp" }, + { name: "11 · The payroll box, car four", src: "art/scenes/tt_09_payroll.webp" }, + { name: "12 · The gap between the cars", src: "art/scenes/tt_10_couple.webp" }, + { name: "13 · Afterwards, the register", src: "art/scenes/tt_07_after.webp" } ]); const advId = idFor("adventure:through_train"); @@ -935,7 +942,7 @@ function cullandScene() { _id: advId, name: "THROUGH TRAIN — The Mercy Draw Crossing", img: IC("actor_case") ?? ICON.caseFile ?? ICON.actor, - caption: "The crossing starter. Three and a half hours, and nothing modern goes through.", + caption: "The crossing starter. Four hours in five acts, and nothing modern goes through.", description: "

A train has been running the same four miles of track since the third of " + "November, 1881. It has never stopped. There are sixty-one people on it and they " @@ -947,9 +954,14 @@ function cullandScene() { + "

The running is what holds the crossing open. The agents have to board a train " + "that cannot stop, get sixty-one people off it, and decide what to do about the " + "arithmetic when they find they cannot.

" + + "

Five acts, four hours. An induction at the Bureau; a crossing " + + "that puts them where the paperwork says the railway is, which is an empty bench; " + + "an investigation to find the line at all; six unpaid miners in a Cordera street " + + "who think they are company detectives; forty seconds of slow track at a water " + + "tower; and four minutes that have run about two million times.

" + "

Also the case that teaches Standing Order 9: nothing modern goes " - + "through. Seven GM pages, six handouts including the survey that started " - + "it, the case file, four of the people aboard, and seven plates to show.

", + + "through. Eight GM pages, ten handouts including the survey that started " + + "it, the case file, fourteen of the cast, and thirteen plates to show.

", actors: castDocs, items: [], journal: [ diff --git a/tools/check-scenarios.mjs b/tools/check-scenarios.mjs new file mode 100644 index 0000000..7001d23 --- /dev/null +++ b/tools/check-scenarios.mjs @@ -0,0 +1,108 @@ +/** + * check-scenarios — every skill a scenario tells the GM to roll must exist. + * + * THROUGH TRAIN asked for "[CUS: Ride, then Athletics]" through several drafts and a + * playtest. There is no Ride skill in this game and there never has been, so that whole + * boarding route was an instruction to roll a thing nobody has. Nothing caught it, + * because the four other guards check rules, kits, language and templates — and a + * scenario is prose. + * + * This reads every scenario source and GM document, pulls out the bracketed mechanic + * tags, and resolves each named skill against SKILL_CATALOGUE. A scenario that names a + * skill the catalogue does not carry fails the build. + */ + +import { readFileSync, readdirSync } from "node:fs"; +import { join, dirname } from "node:path"; +import { fileURLToPath } from "node:url"; +import { SKILL_CATALOGUE } from "./content.mjs"; + +const ROOT = join(dirname(fileURLToPath(import.meta.url)), ".."); + +const KNOWN = new Set(SKILL_CATALOGUE.map(r => (r[4] || r[0]).toLowerCase())); +// A tag may name a family without its specialisation — "Firearm", "Melee Weapon" — which +// is how a GM speaks and is not an error. +for (const r of SKILL_CATALOGUE) { + const name = r[4] || r[0]; + const bare = name.replace(/\s*\([^)]*\)\s*$/, "").trim().toLowerCase(); + if (bare) KNOWN.add(bare); +} + +/** Words that appear inside a tag but are never the skill being rolled. */ +const NOISE = new Set([ + "average", "easy", "difficult", "hard", "formidable", "impossible", + "and", "then", "or", "at", "on", "per", "each", "the", "a", "an", + "only", "a fumble is a fall", "no roll", "automatic", "opposed", + "with", "against", "for", "to", "vs", "versus", "first", "second", + // the scenario template's own placeholder, and the catch-all phrasing + "skill", "any applicable skill", "applicable skill", "any skill" +]); + +/** + * Pull the candidate skill names out of one tag body. + * "Athletics — average; only a fumble is a fall" -> ["Athletics"] + * "Spot or Engineering" -> ["Spot", "Engineering"] + * "Ride, then Athletics" -> ["Ride", "Athletics"] + * "Persuade at −30% on the first pass" -> ["Persuade"] + */ +function skillsIn(body) { + // everything before the first descriptive break belongs to the roll itself + const head = body.split(/[—–—;:]|\bat\b|\bwhen\b|\bif\b|\bfor\b|\bagainst\b/u)[0]; + return head + .split(/\bor\b|\bthen\b|\band\b|[,/]/u) + .map(x => x.replace(/[.…]+$/, "").replace(/\s+/g, " ").trim()) + .filter(x => x && !NOISE.has(x.toLowerCase()) && !/^\d/.test(x)); +} + +function tagsIn(text) { + // [CUS: ...] as written in the markdown, and the HTML-escaped form in the generators + const out = []; + for (const m of text.matchAll(/\[CUS:\s*([^\]]+)\]/g)) out.push(m[1]); + return out; +} + +function stripHtml(s) { + // The generators build these strings by concatenation, so a single tag is routinely + // split across two source lines. Rejoin before anything tries to read it. + return s.replace(/"\s*\+\s*"/g, "") + .replace(/<[^>]+>/g, " ") + .replace(/—/g, "—").replace(/–/g, "–") + .replace(/−/g, "−").replace(/&/g, "&") + .replace(/½/g, "").replace(/“|”/g, '"'); +} + +const files = [ + ...readdirSync(join(ROOT, "tools")).filter(f => f.startsWith("scenario-")) + .map(f => ["tools/" + f, join(ROOT, "tools", f)]), + ...readdirSync(join(ROOT, "docs", "scenarios")).filter(f => f.endsWith(".md")) + .map(f => ["docs/scenarios/" + f, join(ROOT, "docs", "scenarios", f)]) +]; + +const problems = []; +let tagCount = 0; + +for (const [label, path] of files) { + const raw = readFileSync(path, "utf8"); + // A line that explicitly says a skill does NOT exist is documentation, not an instruction. + const text = stripHtml(raw) + .split("\n") + .filter(l => !/there is no .* skill|NO RIDE SKILL/i.test(l)) + .join("\n"); + for (const body of tagsIn(text)) { + tagCount++; + for (const cand of skillsIn(body)) { + if (!KNOWN.has(cand.toLowerCase())) { + problems.push(`${label}: [CUS: ${body.trim()}] — "${cand}" is not a skill`); + } + } + } +} + +if (problems.length) { + console.error("check-scenarios: FAILED"); + for (const p of [...new Set(problems)]) console.error(" " + p); + process.exit(1); +} + +console.log(`check-scenarios: OK — ${files.length} scenario files, ${tagCount} mechanic ` + + `tags, every skill named resolves against ${SKILL_CATALOGUE.length} catalogue entries`); diff --git a/tools/scenario-throughtrain.mjs b/tools/scenario-throughtrain.mjs index 6019e83..cdddbc6 100644 --- a/tools/scenario-throughtrain.mjs +++ b/tools/scenario-throughtrain.mjs @@ -58,540 +58,639 @@ export const TT_PAGES = [ { name: "1 · Run this first", content: ART("tt_01_draw", "Mercy Draw, and the line that should not be there") + P("THROUGH TRAIN is the crossing starter: the case where the " - + "department sends agents through a portal and the far side is 1881. Three and a half " - + "hours. Four to six agents from the duty roster — not the civilian " - + "sheets; this one is the job.") - + READ("A train has been running the same four miles of track since the third of " - + "November, 1881. It has never stopped. There are sixty-one people on it and they " - + "are all still alive.") - + H(2, "The whole thing in seven lines") + + "department sends the agents ACROSS for the first time. It runs in " + + "four hours across five acts, and it opens with its own " + + "induction, so it does not need a prologue in front of it.") + + H(2, "The shape of it") + + TABLE(["Act", "Time", "What happens"], [ + ["One — The Bureau", "~35 min", "Where they work. The standing order. The kit swap."], + ["Two — Cordera", "~50 min", "Through the crossing, and an investigation to find the train"], + ["Three — Rance Doyle's men", "~35 min", "A town-side obstacle with a surname in it"], + ["Four — Getting aboard", "~45 min", "Forty seconds of slow track at the water tower"], + ["Five — The four minutes", "~50 min", "The gunfight, the papers, and the brakes"], + ["Epilogue", "~15 min", "Sixty-one names, written down"] + ]) + + P("Hard rule: at 2:55 on the clock they are aboard, by the " + + "department's wagon if not by their own wit.") + + H(2, "The five things to get right") + OL([ - "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.", - "Reality keeps a record of what belongs where. An argument made at " - + "a constant speed on a fixed line is the most patient argument there is.", - "On 3 November 1881 the record gave way. The running is what holds the " - + "crossing open, and the train has not stopped since.", - "What repeats is four minutes with a GUNFIGHT in it. At 11:40 two " - + "armed parties were shooting at each other over the payroll. That fight runs " - + "again on every pass and has run about two million times.", - "Two sides, and neither is the villain. The company's guards are " - + "protecting money they were hired to protect. The men who boarded are owed that " - + "money and have a court writ saying so. The company sold it twice and is not " - + "aboard.", - "The agents must board a train that cannot stop, survive four " - + "minutes of live gunfire, and close the crossing.", - "Closing it does not kill anybody. It lets them go. The loop ends, " - + "1881 resumes, and everyone aboard lives the life they would have lived — " - + "including the ones who did not survive the real four minutes." + "Nobody aboard is dead and nothing is haunting anybody. This is " + + "science fiction with a paperwork cause. If a table leaves thinking “ghost " + + "train”, it has been run wrong.", + "They arrive in the wrong place on purpose. The crossing opens " + + "where the RECORD says the line is — an empty bench of scrub. That is the " + + "case stated as geography, and it is why Act Two is an investigation.", + "Standing Order 9 is the difficulty setting. Nothing modern goes " + + "through. Charge for USING, never for carrying. Anchors are exempt.", + "There is no villain anywhere in this case. Not in the town, not " + + "on the train. Everyone the agents fight has a reason you would accept.", + "Closing the crossing does not kill anybody — it lets them go, " + + "including the two men who did not survive the real four minutes." ]) - + H(2, "How to run it") - + UL([ - "It is not a ghost train and nobody is haunting anybody. Every " - + "person aboard is a person, on both sides of the gunfight.", - "The fight is genuinely dangerous and the players are in it. A " - + "Webley does 1d10 and a Martini-Henry does 2d6+2 against agents with eleven to " - + "sixteen hit points. Nobody aboard is aiming at the agents to begin with, and " - + "everybody will once they move.", - "Do not resolve who is right. Both parties have paper, both " - + "believe the others are robbers, and the players can learn enough to see that " - + "and not enough to settle it. That is the design, not a gap.", - "The train cannot stop, and it cannot be flagged down. Not by " - + "authority, not by standing on the line, not by a red lamp. Say so early and let " - + "the table work on the real problem, which is matching its speed.", - "Let them find the fraud. The survey chart is the centre of the " - + "case and it is a piece of paper. A table that reads it properly should feel " - + "clever, not told.", - "The standing order has teeth. Anything modern taken across costs " - + "a Coherence the first time it is used, and the far side notices. Do not fine " - + "them for carrying it — charge them when they USE it.", - "Panic is live and this is where it earns its place. Boarding is " - + "frightening; four minutes of gunfire in a wooden box is worse.", - "Killing everybody does not end it. The loop replays whatever " - + "happens. A table that shoots its way through the first pass will meet all the " - + "same men alive on the next one, which is the moment the scenario lands." - ]) - + H(2, "Shape") - + TABLE(["Section", "Time", "Ends when"], [ - ["Briefing — the standing order", "20 min", "they have swapped their kit and somebody has complained about it"], - ["Act One — Mercy Draw, now", "50 min", "they know it is a survey fraud, and they have heard 11:40"], - ["Act Two — Cordera, 1881", "70 min", "they are on the train"], - ["Act Three — Aboard", "50 min", "they decide, and live with it"], - ["Epilogue — the register", "20 min", "the department writes down what happened"] - ]) - + P("Hard rule: at 2:45 on the clock, get them on the train. If the " - + "boarding has not happened by then, the department's second wagon arrives and it " - + "happens.") -}, + + H(2, "Run it with") + + P("Four to six agents from the duty roster. Not the " + + "“(before)” sheets — this is the job, and it wants people who " + + "have been trained.") + + H(2, "Content warnings") + + P("Gun violence at close quarters, repeatedly; entrapment and confinement; " + + "bystanders wounded on screen; a decision that lets named people die; period " + + "hardship and labour exploitation; heights; a sibling present at a death.") }, { name: "2 · What is actually happening", content: - P("April 1881. The Cordera & Western, a narrow-gauge line running " - + "ore out of the Cordera hills, needed four miles across a dry wash called " - + "Mercy Draw. The company's surveyor, Elias Vane, was " - + "told what the chart had to say before he went out to the ground. He filed a survey " - + "showing the line on the north bench of the draw. The line was laid on the south " - + "bench, because that is where the ground allowed it.") - + P("Nobody was hurt by that. It is a paperwork lie of the dullest possible kind, and " - + "for six months every timetable, waybill, dispatch and telegraph order in the " - + "company's operation described a train running on the north bench.") - + P("Reality keeps a record of what belongs where. It is a very good " - + "record. It can be made to get it wrong by anything patient enough — and a train is " - + "the most patient arguer there is: a fixed line, a constant speed, on the hour, " - + "every day, saying the same wrong thing about where it was.") - + H(2, "3 November 1881, 11:40 — and what was happening at the time") - + P("The record gave way. Four miles of line came loose from the date, with No. 9 and " - + "five cars on it and sixty-one people aboard — and a " - + "gunfight already three seconds old.") - + P("The loop is four minutes long and the fight is inside it. That is " - + "the important structural fact. The crossing did not capture a train; it captured " - + "four minutes, and those four minutes contain two armed parties shooting at each " - + "other the length of car three. It has run about two million times.") - + H(2, "The two sides, and why neither is the villain") + H(2, "The lie") + + P("April 1881. The Cordera & Western needed four miles of narrow " + + "gauge across a dry wash called Mercy Draw. The company surveyor, " + + "Elias Vane, was told what the chart had to say before he walked " + + "the ground. He filed a survey showing the line on the north bench. " + + "The line was laid on the south bench, because that is where the " + + "ground allowed it.") + + P("Nobody was hurt by that. It is the dullest possible paperwork lie. And for six " + + "months every timetable, waybill, dispatch and telegraph order in the company's " + + "operation described a train running along the north bench.") + + P("Reality keeps a record of what belongs where. It can be made to " + + "get it wrong by anything patient enough — and a train is the most patient " + + "arguer there is: a fixed line, a constant speed, on the hour, every day, saying the " + + "same wrong thing about where it was.") + + P("3 November 1881, 11:40. The record gave way. Four miles of line " + + "came loose from the date with No. 9 and five cars on it, sixty-one souls " + + "aboard, and a gunfight already three seconds old.") + + H(2, "Why the agents arrive in the wrong place") + + P("The crossing opens where the record says the line is: the north bench. " + + "It has to — that is the wrongness it is made of. Agents step off a real grade " + + "in the present and step out onto a bench of empty scrub in 1881, with no rails, no " + + "ballast and no Draw in front of them.") + + P("This is not a trick played on them. It is the case, stated as " + + "geography, and a party that works out why they came out where they did has " + + "solved half of Act Two.") + + H(2, "The two sides aboard — and neither is the villain") + TABLE(["", "Who", "What they have", "What they believe"], [ ["The coats", - "Four men hired by the Cordera & Western to see the payroll to Fallon. Led by Cass Merritt.", - "A letter of engagement signed by the company, and the key to the box.", - "That the men who boarded at the water stop are robbers, because that is what men who board at a water stop are."], + "Four men hired by the company to see the payroll to Fallon, led by Cass Merritt", + "A signed letter of engagement, and the key to the box", + "That men who board at a water stop are robbers"], ["The writ men", - "Five miners of the Cordera works, eleven weeks unpaid. Led by Josiah Ambrose.", - "A writ of attachment from a territorial judge in Fallon, dated and sealed, naming that payroll.", - "That they are lawfully seizing money owed to them and being shot at for it."] + "Five Cordera miners, eleven weeks unpaid, led by Josiah Ambrose", + "A sealed writ of attachment from a territorial judge, naming that payroll", + "That they are lawfully seizing wages and being shot at for it"] ]) + P("The company sold the same money twice and is not aboard. Both " - + "pieces of paper are real. Neither party has ever seen the other's. Nobody in car " - + "three is lying and nobody in car three is wrong.") - + P("The players will want to settle it. They cannot. They can learn " - + "enough to see there is nothing to settle, which is a different and better thing to " - + "carry away.") - + P("The running is what holds it open. This is the part that matters " - + "and the part the players must work out: the train is not trapped inside the " - + "crossing — the train IS the crossing. It is a standing wave, and the motion sustains " - + "it the way a bow sustains a note.") + + "papers are genuine. Neither man has seen the other's. Nobody in car three is lying " + + "and nobody is wrong. Do not adjudicate it.") + + H(2, "The running is what holds it open") + + P("The train is not trapped inside the crossing — the train is the " + + "crossing. A standing wave, sustained by its own motion the way a bow sustains a " + + "note.") + UL([ - "Nobody is dead. Between passes the fight has not started yet: they " - + "eat, they sleep in shifts, they have organised themselves. By their clocks it has " - + "been about nine hours — and four minutes of it, over and over.", - "Nobody can get off. Step down and you are on ground that is not " - + "inside the error. The department has three attempts on file and no survivors.", - "Nobody can get off while it runs. Step down between passes and " - + "you are on ground that is not inside the error. Three departmental attempts are " - + "on file and none returned.", + "Nobody is dead. They eat, sleep in shifts, and have organised a " + + "water rota. By their clocks it has been about nine hours.", + "Nobody can get off while it runs. Three departmental attempts are " + + "on file; none returned.", "Stop the train and the loop ends. This is the mission, and it is " - + "not a mercy killing." + + "not a mercy killing." ]) + H(2, "What closing it actually does — read this twice") - + P("Closing the crossing does not kill anybody. It lets them go. The " + + P("Closing the crossing does not kill anybody. It lets them go. The " + "loop ends, the third of November 1881 resumes from 11:44, and every person aboard " + "walks forward into the life they would have had.") + P("Including the ones who did not survive the real four minutes. " - + "History resumes as history: some of the men in car three died in that gunfight, and " - + "when the loop lets go they die in it. Not because the agents killed them — " - + "because that is what happened, and it has been prevented from happening for a " - + "hundred and forty-five years.") - + P("That is the weight of this ending and it is the whole point. The " - + "agents are not choosing who lives. They are choosing to stop holding history still, " - + "and they will have met the people it lands on.") + + "History resumes as history: Josiah Ambrose and a miner named Tom Doyle " + + "died in that gunfight, and when the loop lets go they die in it. Not because the " + + "agents killed them — because that is what happened, and it has been prevented " + + "from happening for a hundred and forty-five years.") + + P("The agents are not choosing who lives. They are choosing to stop " + + "holding history still, and they will have met the people it lands on — and, " + + "if Act Three went a certain way, the brother of one of them.") + P("The department's position is unambiguous: close it. A crossing " + "held open by a repeating event degrades, and when it fails on its own — " + "Registry's read is within a year — everyone inside is lost outright rather " - + "than returned. Waiting is the only option that is definitely worse.") - + H(2, "Elias Vane is on the train") - + P("He rode his own line on the third of November to see what he had signed for. He " - + "has had nine hours and a hundred and forty-five years to think about it, he knows " - + "exactly what he did, and he is the only person aboard who has worked out " - + "what closing it would mean. He has not told anyone, including the men who " - + "will die when it closes. He will tell the agents, if they ask him a question he " - + "cannot answer with a lie.") -}, + + "than returned. Waiting is the only option that is definitely worse.") + + H(2, "The crossing clock (0–6)") + + P("Move it on each pass the agents watch go by, when somebody " + + "uses a modern object across, and on a fumbled boarding " + + "attempt. Act Three does not move it — that happens " + + "in a town four miles away and the crossing does not care.") + + TABLE(["Clock", "What"], [ + ["0", "Open. Four minutes at 11:40."], + ["1", "Thinning. The whistle arrives a half-second before it should."], + ["2", "Slipping. −1 Coherence to everyone across, once."], + ["3", "The line flickers — a hundred yards of grade is briefly not there."], + ["4", "The far end stops answering. Fallon's wire goes dead in 1881."], + ["5", "One pass left, and everybody can tell."], + ["6", "It closes, with whoever is aboard."] + ]) }, -{ name: "3 · Briefing — the standing order", content: - ART("tt_02_stores", "Stores, and the 1881 issue") - + P("Goal: give them the case, take their equipment away, and let them " - + "feel it. The kit swap is not colour. It is the scene where the players learn what " - + "kind of game this is.") - + READ("You will be crossing to November 1881. Nothing you are carrying goes with you. " - + "Stores has laid out what you may take instead, and I would ask you not to argue " - + "with the storeman, because he is right and you are in a hurry.") - + H(2, "The standing order, said plainly") - + P("NOTHING MODERN GOES THROUGH. NOTHING. Not the handset, not the " - + "torch, not the vest, not the sidearm you are used to, not a lighter, not a " - + "wristwatch, not a pen with a maker's mark on it. The department does not negotiate " - + "this and never has. Two reasons, and the GM should give both:") +{ name: "3 · Act One — The Bureau", content: + ART("tt_11_bureau", "The Bureau — a corridor, a counter, a ledger") + + P("Goal: they learn where they work, what an anchor is, why the " + + "phone stays behind, and what the case is. ~35 minutes.") + + READ("The building has no sign on it. It has a commissionaire, a lift that only goes " + + "to four of the six floors, and a smell of floor polish and old paper that you will " + + "come to know very well. Somebody has left a birthday card going round the third " + + "floor for a woman in Accounts. You are here because a train has been missing since " + + "1881, and it is Tuesday.") + + P("Play this as an ordinary morning at an ordinary job. The horror in " + + "this game is that the paperwork is real. Nobody is portentous. Nobody explains that " + + "the world is stranger than they know.") + + H(2, "The four stops") + + P("Run these as four short beats. Let the players wander between them; do not queue " + + "them up.") + + TABLE(["Stop", "Who", "What happens"], [ + ["The desk", "a commissionaire with a ledger", + "They sign in. Names, times, and their anchor numbers. He will not be hurried."], + ["Registry", "Mr Bewley", + "The case. The survey. The three previous attempts."], + ["Stores", "Mr Prosser", "The kit swap, and the argument."], + ["Medical", "a nurse, briskly", + "Anchors issued. Two minutes. Do not make a scene of it."] + ]) + + H(2, "Registry — the briefing") + + P("Give TT-H01 (case brief) and TT-H04 (the filed " + + "survey) and let them ask. What Bewley will say:") + + UL([ + "The crossing opens on the grade at Mercy Draw, Nevada, at 11:40, for about " + + "four minutes. Every day, for as long as the department has watched it.", + "A train is inside it. Cordera & Western No. 9, five cars, out " + + "of Cordera on 3 November 1881, never arrived at Fallon.", + "Sixty-one people, by the manifest. He will not hand the manifest " + + "over yet: “You will read it aboard. It reads differently there.”", + "Three attempts are on file — 1974, 1991, 2009. No " + + "survivors. All three tried to stop it. He does not know why that failed " + + "and he says so.", + "The order is to close it. When it fails on its own — within " + + "the year — everyone inside is lost outright.", + "The survey is the case. “Bring me the paper. The paper is " + + "the case.”" + ]) + + P("The one thing Bewley gets wrong. He believes the crossing puts you " + + "on the grade. Every previous team went in expecting to arrive beside the line. " + + "DO NOT CORRECT THIS. It is on the file wrong, and the file is what " + + "they have.") + + P("[CUS: Research or Insight] on the file: the three previous attempts all " + + "logged their last position as “the north bench”, which nobody " + + "has ever queried because nobody has ever come back to be asked about it. " + + "Optional. It is a very good catch and it should feel like one.") + + H(2, "Stores — Standing Order 9") + + ART("tt_02_stores", "Stores, and the 1881 issue") + + P("Give TT-H02 and TT-H03. Mr Prosser has laid the " + + "kit out on a counter and he is not interested in negotiation.") + + READ("Nothing you are carrying goes with you. I have laid out what you may take " + + "instead. You may argue with me if you like, but I have been doing this for nineteen " + + "years and you have been doing it since Thursday.") + + P("Nothing modern goes through. Give both reasons:") + OL([ "It costs you. An object that does not belong is a thing the far " - + "side has to be wrong about too. Using a modern item across costs " - + "1 Coherence, the first time, every item.", - "It is a beacon. This is a place where the record is already wrong " - + "and already irritable. It notices things that do not fit. Using one moves the " - + "case clock." + + "side must also be wrong about. Using a modern item across costs " + + "1 Coherence, per object, first time.", + "It is a beacon. A crossing is a place where the record is already " + + "wrong. It notices what does not fit, and the case clock moves." ]) - + P("Charge them for USING it, never for carrying it. A player who " - + "smuggles a torch through and never switches it on has made a perfectly good " - + "decision and should get away with it.") - + H(2, "The 1881 issue") - + P("All of this is in the compendium already; hand it out as items.") + + P("Charge for using, never for carrying. A player who smuggles a " + + "torch across and never switches it on has made a good decision and should get away " + + "with it. The anchor is exempt.") + + P("If nobody asks what an anchor is, the nurse tells them: it is the department's " + + "record that you exist and belong here, and it is the reason you can come back.") + TABLE(["Instead of", "They get"], [ - ["a service pistol", "Webley revolver — 1d10, six shots, and it is slow to reload"], - ["a carbine", "Martini-Henry — 2d6+2, and ONE shot before you work the lever"], - ["a torch", "oil lantern — and lamp oil, which runs out"], - ["the handset", "nothing. You are out of contact from the moment you go through."], - ["a stab vest", "buff coat or an oilcloth coat"], - ["the medkit", "chirurgeon's roll and laudanum"], - ["GPS and a phone clock", "brass compass, pocket watch, spyglass"] + ["service pistol", "Webley revolver — 1d10, six shots, slow reload"], + ["carbine", "Martini-Henry — 2d6+2, one shot, then work the lever"], + ["torch", "oil lantern and lamp oil, which runs out"], + ["the handset", "nothing. Out of contact from the moment they cross."], + ["stab vest", "buff coat or oilcloth coat"], + ["medkit", "chirurgeon's roll and laudanum"], + ["phone and GPS", "brass compass, pocket watch, spyglass"] ]) - + P("The anchor is the exception. Everybody keeps their anchor object. " - + "It is theirs, it is of no value, and it is the one thing the department will not " - + "take off them — which is exactly why it works.") - + H(2, "The mission, in the department's own words") - + READ("You are not there to rescue anybody and you are not there to save anybody's " - + "life. Sixty-one people are being held still inside four minutes of 1881. Your job " - + "is to close the crossing so that those four minutes are allowed to finish, and " - + "those people are allowed to go on and live the rest of their lives — or not to, " - + "exactly as they would have done had this department never existed. Then you come " - + "home.") - + OL([ - "Establish what is holding the crossing open.", - "Close it, so the people aboard are released into their own history " - + "— whatever their own history then does to them.", - "Come back with the survey chart. Registry wants the paperwork.", - "Come back. If it closes with you inside it you are one more name " - + "in the register." - ]) - + P("Say the second one out loud at the table. The players must " - + "understand before they cross that closing it is the objective and that it is not a " - + "killing. What they will not understand until they are aboard is that two of the " - + "people they are about to meet did not survive the four minutes they are standing in.") - + P("There is an armed exchange aboard. Two parties, four minutes, and " - + "it repeats. Tell them that at the briefing. They should cross knowing they are " - + "walking into gunfire with a revolver and a single-shot rifle.") - + P("Containment 6 · Resources 5 · Clearance 4. Low clearance on " - + "purpose: there is nobody in 1881 to show a warrant card to.") -}, + + P("Plus period coin, which will matter in Cordera, and iron " + + "manacles, which will not.") + + H(2, "Failure case") + + P("There isn't one. Nobody can fail the Bureau. If the table is " + + "quiet, cut to Prosser taking somebody's phone out of their hand and move on. " + + "If it is running long at 35 minutes, stop it — the case is on " + + "the handouts and they can read on the drive.") + + P("Panic: no triggers in Act One. Say the word once, explain the " + + "track in two sentences, and leave it.") }, -{ name: "4 · Act One — Mercy Draw, now", content: - ART("tt_03_bench", "The south bench, and the grade that is still there") - + P("Goal: they find the fraud, they hear the train, and they work out " - + "that the crossing is on a timetable.") - + READ("Nevada, and a dry wash four miles long with a railway grade running along the " - + "south side of it. The rails were lifted in 1889. The ballast is still there, and so " - + "are the ties, and the whole thing is as quiet as anywhere you have ever stood. " - + "Your watch says 11:38.") - + H(2, "The site") - + UL([ - "The grade on the south bench — real, obvious, and where the line " - + "actually ran. Ballast, tie marks, a culvert.", - "The north bench — nothing. Never anything. No cutting, no fill, no " - + "ballast. [CUS: Spot or Engineering — there has never been a railway on this " - + "side of the draw]", - "The water tower footing, half a mile up, at the top of the grade. " - + "Remember it. It is where Act Two ends.", - "11:40. Every day. A locomotive whistle, a long way off and quite " - + "clear, and then the sound of a train working a grade, for about four minutes, " - + "getting no nearer. Automatic. Nobody has to roll for it." - ]) - + H(2, "The paperwork, which is the case") - + P("The county records office in Cordera has the company's filed survey. Registry has " - + "already pulled the timetable and a bundle of waybills.") - + TABLE(["#", "Clue", "How found", "Type"], [ - ["1", "The filed survey puts the line on the NORTH bench", "Automatic from the handout — it is a drawing with a line on it", "Essential"], - ["2", "There has never been a railway on the north bench", "Automatic to anyone who walks it", "Essential"], - ["3", "Six months of timetables and waybills all describe the north-bench line", "[CUS: Research], or Registry hands it over", "Essential"], - ["4", "The last dispatch is timed 11:38, 3 Nov 1881, and there is no 11:45", "[CUS: Research]", "Essential"], - ["5", "Elias Vane, surveyor, is on the passenger manifest", "[CUS: Research] on the manifest handout", "Optional"], - ["6", "Three previous departmental attempts, no survivors, all of them tried to STOP it", "Registry, if asked", "Optional"], - ["7", "The sound is a train working UP a grade — it is accelerating, always", "[CUS: Listen or Engineering]", "Optional"] - ]) - + P("Fallbacks. Clue 1 is a handout. Clue 2 is the ground. Clue 3 and 4 " - + "arrive from Registry by telephone at the twenty-minute mark if nobody has gone " - + "looking, because Bewley is thorough and slightly impatient.") +{ name: "4 · Act Two — Cordera, and where the train went", content: + ART("tt_12_northbench", "The north bench, 1881 — where the paperwork says the railway is") + + P("Goal: find out where the line actually is, that something still " + + "passes it, and when. ~50 minutes.") + H(2, "The crossing") - + P("It opens at 11:40, on the grade, for about four minutes, and it is " - + "the train going past. You do not step through a door — you step onto a moving line " - + "at the moment the line is there. [CUS: Athletics, and a hand from somebody]") - + P("They cannot board it here. At this end it is going too fast and the " - + "grade is against them. Let them try. It is a bruise and a lesson and it costs the " - + "case clock one.") - + H(2, "Pacing note") - + P("At 1:10 — fast-track: the 11:40 comes round again and this " - + "time the door stays open long enough to walk through, because the crossing is " - + "degrading and that is what degrading looks like.") -}, - -{ name: "5 · Act Two — Cordera, 1881", content: - ART("tt_04_cordera", "Cordera, and a company that has lost a train") - + P("Goal: the far side, the standing order in practice, and the " - + "boarding.") - + READ("Sagebrush, and a town of about four hundred people that smells of woodsmoke and " - + "horses. It is the fourth of November, 1881, and it is the day after. Nobody here " - + "is frightened yet. They are just puzzled, because a train went into Mercy Draw " - + "yesterday morning and has not come out, and the wire from the other end says it " - + "never arrived.") - + H(2, "What Cordera has") + + P("Mercy Draw, Nevada, 11:38. The grade runs along the south side " + + "— ballast and tie marks, rails lifted in 1889. The crossing does not " + + "open there. It opens on the north bench: a strip of empty " + + "scrub on the wrong side of the wash, where no railway has ever been.") + + READ("The air over the north bench goes wrong at 11:40 — not shimmering, " + + "creased, like a page folded and opened again. Somewhere behind it a whistle " + + "sounds, a long way off, and a locomotive starts working a grade. You cannot see it. " + + "It does not get any nearer.") + + P("Everybody crosses. Nobody rolls for it.") + + P("THE FOUR MINUTES IS THE DOOR, NOT THE VISIT. The crossing is " + + "openable for four minutes at 11:40 — that is the window to step " + + "through. Once across, the agents are in 1881 for as long as the crossing clock " + + "holds, which is an afternoon and an evening. Say this the moment somebody starts " + + "counting seconds. The clock at 6 is the deadline, and it is measured in " + + "passes of the train, not in minutes.") + + READ("The other side is the fourth of November, 1881, at about four in the afternoon, " + + "and it is twenty degrees colder. You are standing on a bench of scrub and sage on " + + "the north side of a dry wash. There is no railway here. There is no railway anywhere " + + "you can see.") + + P("R2 is automatic and it should land hard. They came out where the " + + "chart said the railway was, and the chart is in their hands. [CUS: Navigate or " + + "Engineering] confirms in one roll that nothing has ever been built here.") + + P("Cordera is visible, about three miles south-west: smoke, a water " + + "tank, a grid of roofs.") + + H(2, "Cordera") + + ART("tt_04_cordera", "Cordera, Nevada Territory, 1881") + + P("A railroad and mining town of about eighteen hundred. Woodsmoke, " + + "horses, coal dust, and mud that freezes at night. Nobody is frightened yet. A train " + + "went missing yesterday and the town is treating it as a company problem, which is to " + + "say somebody else's.") + + P("Nobody here can help them stop it, and almost everybody will help them get " + + "near it. The company wants its train back. Let the players use that.") + + TABLE(["Location", "Who", "What is here"], [ + ["The company office", "a harried dispatcher", + "Orders on spikes, the working timetable, the original survey in a drawer"], + ["The telegraph office", "Ada Reyes", + "The dispatcher's book, and the only person in town who is ahead of it"], + ["The roundhouse", "fitters, a foreman", + "Men who know the road. One of them walked the Draw this morning and will not go back."], + ["The Bullion (saloon)", "everybody", + "Talk, and the wrong kind of attention. This is where Act Three finds them."], + ["The livery", "a liveryman who wants paying", "Horses. This matters in Act Four."], + ["The assay office", "a clerk", "The company's notice, and the reward."] + ]) + + H(2, "Clue trail") + + TABLE(["#", "Clue", "How found", "Type"], [ + ["1", "There is no railway on the north bench, and never has been", + "Automatic — they are standing on it", "Essential"], + ["2", "The line is on the south bench, four miles out", + "Anyone in town, for the asking. Automatic to a single question.", "Essential"], + ["3", "No. 9 left Cordera 3 Nov and never reached Fallon", + "Automatic — the talk of the town, and on TT-H05", "Essential"], + ["4", "The filed survey and the built line disagree", + "Compare TT-H04 with the ground — [CUS: Engineering], or automatic if they simply look", "Essential"], + ["5", "Six months of orders all say north bench", + "[CUS: Research] at the company office, on the spiked orders", "Essential"], + ["6", "Something still passes the Draw, roughly every forty minutes", + "The roundhouse man, or [CUS: Listen] within a mile of the wash", "Essential"], + ["7", "No 11:45 entry in the dispatcher's book", + "[CUS: Research], or Ada Reyes volunteers it if treated civilly", "Optional"], + ["8", "Ada has sent the same query up the line forty times", "Talk to her", "Optional"], + ["9", "E. Vane, surveyor, was aboard", "[CUS: Research] on the waybills", "Optional"], + ["10", "Six men went out yesterday to serve a paper on the train", + "The saloon, [CUS: Insight] or buying a drink", "Optional — the hook into Act Three"] + ]) + + P("Clue 6 is the one the act exists for. If they have not got it by " + + "1:15, the roundhouse foreman comes and finds them: a section hand called " + + "Tobin Cray walked out to the Draw at first light to look for No. 9, " + + "heard it coming, and came back without looking.") + + READ("I heard her working the grade, mister. Steam and rods and all of it, close enough " + + "to throw a stone at. There's nothing on that line. I stood there till it came round " + + "again and then I stopped standing there.") + + P("Fallbacks. Clues 1 and 3 cannot be missed. Clue 2 is one question " + + "to one person. If the party stalls on 4 or 5, the dispatcher — who wants his " + + "train found — puts the filed survey in their hands himself and asks them what " + + "they make of it.") + + P("Money. Period coin buys drinks, a room, a liveryman's goodwill and " + + "a roundhouse man's hour. A party that tries to pay with anything else has " + + "used a modern object across: 1 Coherence, and the clock moves.") + + H(2, "Panic triggers") + UL([ - "The company office. A dispatcher, a wall of orders on spikes, and " - + "the filed survey in a drawer — the original of the handout.", - "The livery. Horses. This matters: horses are how you match a train.", - "Ada Reyes, who runs the telegraph and has been sending the same " - + "query up the line for a day and a half.", - "The Draw itself, four miles out, where the train can be HEARD " - + "going past on the south bench about every forty minutes, and seen if you are " - + "standing in the right place." + "Arriving on ground that should have a railway on it and does not " + + "— 1 point, if a player wants it. Offer; do not force.", + "Hearing the train pass with nothing on the line — 1 point, " + + "and this one is not optional for anyone who goes and listens." ]) - + P("Nobody in 1881 can help them stop it and everybody will help them get near " - + "it. The company wants its train back. That is leverage the agents should " - + "be allowed to use.") - + H(2, "The standing order, in practice") - + P("This is where the kit swap pays. A Webley is six shots and a slow reload. The " - + "Martini-Henry is one shot at a time. There is no torch, and the lantern needs oil. " - + "There is no radio, so a party that splits is genuinely out of contact.") - + P("If somebody uses something modern: 1 Coherence, the case clock " - + "moves, and something in the Draw turns its attention their way. Do not make it a " - + "telling-off. Make it interesting and expensive.") - + H(2, "THE SET-PIECE — getting aboard") - + ART("tt_05_boarding", "The water tower, and four minutes of grade") - + ART("tt_10_couple", "The gap between the cars") - + P("The train cannot stop and cannot be flagged. The only way on is to match " - + "its speed, and the only place it is slow is the top of the grade " - + "at the water tower, half a mile up, where it is doing about eight miles an " - + "hour for perhaps forty seconds.") - + P("Three ways, and let them invent a fourth:") - + OL([ - "Ride it down. Horses from the livery, alongside on the bench, and " - + "step across. [CUS: Ride, then Athletics]. Fast, frightening, and the " - + "horse will not go near the train without a Ride roll of its own.", - "Drop from the tower. Get up the tower and drop onto the cars as " - + "they pass under. [CUS: Athletics, AVERAGE — only a fumble is a fall]. " - + "Twelve feet onto a moving roof. Do not make this difficult. " - + "Playtested at halved skill it put four agents on 12–31% and all four missed, " - + "which stalls the one scene the scenario is built around.", - "The wagon on the grade. Company wagon, four horses, run it " - + "alongside on the wash floor and put a plank across. Slowest to set up, safest to " - + "cross, and it needs the company's cooperation." - ]) - + P("The wagon is easier than the tower and the tower is easier than the " - + "horses. A party that spends an hour arranging the wagon has bought itself " - + "an easy roll and should get one — that is what the hour was for.") - + P("Say which route suits whom, out loud, before they choose. " - + "Athletics on a duty-roster sheet runs from about 25% to 60%, and the split is not " - + "subtle: the Containment officer and the criminal take the tower, the Field Lead " - + "can, and the doctor and the Registry officer should be on the wagon. " - + "Playtested by putting all five on the tower: two of them missed twice and had to be " - + "carried by the department's plank, which cost two passes on the clock and made " - + "them passengers in their own set-piece.") - + P("Everybody has to get on. Anyone left behind is out of the scenario " - + "and watching from the bench, so give a failed attempt a second chance on the next " - + "pass rather than a full stop. The train comes round again in about forty minutes, " - + "and the case clock moves when it does.") - + P("Panic: boarding is worth a point to anybody who wants one — a " - + "moving train, twelve feet down, and nothing underneath. Do not force it. Offer it.") - + H(2, "Pacing note") - + P("At 2:45 they are on the train, one way or another. If the boarding " - + "has failed twice, the department's second wagon arrives with two more agents and a " - + "plank, and it works, and the players owe somebody a favour.") -}, + + H(2, "Failure case") + + P("They cannot fail to find the Draw — the town will tell them " + + "where the line is. What they can fail to do is find out that something still runs on " + + "it, and the roundhouse fallback covers that. If Act Two overruns, cut the assay " + + "office and the saloon talk and let Act Three come to them.") }, -{ name: "6 · Act Three — Aboard, and the four minutes", content: +{ name: "5 · Act Three — Rance Doyle's men", content: + ART("tt_13_standoff", "Six men across a muddy street") + + P("Goal: a town-side obstacle with the same shape as the one on the " + + "train, and a name the players will meet again. ~35 minutes.") + + P("One-line essence: Rance Doyle wants his brother back, and the agents look " + + "exactly like the people who took him.") + + H(2, "What is actually going on") + + P("Eleven weeks ago the Cordera & Western stopped paying the mine. Nine days ago " + + "Josiah Ambrose got a writ of attachment out of a territorial judge " + + "in Fallon against the company payroll. On 3 November he and five men went " + + "out to serve it on No. 9, and none of them came back — because the " + + "train did not come back.") + + P("The company posted a notice (TT-H05) calling No. 9 " + + "overdue, offering a reward, and naming Ambrose's six as wanted for interfering with " + + "company property. There is a company detective in town, " + + "Mr Shard, buying drinks and asking who was friendly with the writ " + + "men.") + + P("Then five strangers arrive in coats that do not fit, with money, asking " + + "about the train. Rance Doyle is not stupid and he is not wrong to draw the " + + "conclusion he draws.") + + H(2, "The confrontation") + + P("Where: the street outside The Bullion, or the livery, or wherever " + + "the party is when the act needs to start. Six men, Rance at the " + + "front, two with revolvers, one with a shotgun, three with what was to hand.") + + READ("There are six of them and they have arranged themselves across the street in the " + + "way men do when they have talked about it first. The one at the front has a face " + + "like his brother's, which you have no way of knowing yet. He says: “You've " + + "been asking after the train. So've we. Ours went out on it.”") + + P("Rance wants three things, in this order: to know where his brother " + + "is, to know whether the agents are Shard's, and to be taken seriously.") + + H(2, "How this resolves") + + P("There is no roll that makes this go away, and there is no roll that makes " + + "it a fight. It resolves on what the players say.") + + TABLE(["They do", "What happens"], [ + ["Tell him the truth — the train is still out there, still running, and they are going to it", + "It works. No roll. He believes them, because it matches what Cray said and nothing else has. He wants to come."], + ["Show him TT-H04 or explain the survey", + "Works as well as the truth, and faster. He cannot read a chart, but he can tell when somebody is not performing."], + ["Deny everything, stonewall, pull rank", + "[CUS: Fast Talk or Persuade — difficult]. Success buys an exit, not an ally. Failure goes to the standoff."], + ["Claim to be from the company, or get caught lying", + "Straight to the standoff, and Rance's men mean it"], + ["Draw first", "The standoff, immediately, and the agents started it"] + ]) + + H(2, "The standoff — and what losing costs") + + P("Rance's men are not trying to kill anybody. They intend to take the " + + "agents somewhere quiet and find out what they know. Run it as a fight that " + + "stops early.") + + UL([ + "Rance calls it off the moment one of his men goes down, or one of " + + "the agents does. He has already lost a brother this week.", + "A downed agent is captured, not killed. The dying rules apply and " + + "Rance's men will fetch a doctor, because they are not murderers and they know " + + "what a murder charge does to a strike." + ]) + + P("MEASURED, 400 runs each, four duty-roster agents against the six:") + + TABLE(["The agents", "Result"], [ + ["From cover, and Rance folds early", "0.4 of 4 hurt, effectively nobody down, over in about 2 rounds"], + ["In the open, and Rance folds early", "1.25 of 4 hurt, one party in eight loses somebody to the floor"], + ["Shoot to kill — fought to the finish", "1.75 of 4 down, ten rounds, and the party is wiped in 24% of runs"] + ]) + + P("The early stop is what makes this act survivable, not the miners being " + + "weak. Six armed men fought to a finish are as dangerous as the payroll box " + + "in Act Five — nearly one party in four does not walk out of the street. " + + "If the agents start executing people, do not quietly soften it.") + + P("Losing the standoff costs them the 1881 issue. Rance's men take the " + + "Webleys, the Martini, the spyglass and the coin, and hold the agents in a back room " + + "for two hours. Nobody dies and nothing is unrecoverable — but " + + "Act Four now starts with an unarmed party, and Act Five is a gunfight. Say " + + "this cost out loud before the first shot.") + + P("Getting the kit back: ask Rance for it, once they have told him the " + + "truth. He returns it, minus the coin, which has been spent.") + + H(2, "Rance wants to come") + + P("This is the important part of the act and it is easy to miss. Once " + + "he believes them, Rance asks to come to the Draw, and he will follow at a distance " + + "if refused. He is a fit, angry, useful man with a horse and no idea what he is " + + "walking towards.") + + TABLE(["The players", "What it buys, what it costs"], [ + ["Take him as far as the Draw", + "The default. He knows the ground, he gets them horses, and he stands on the bench and watches."], + ["Take him aboard", + "He is competent in the four minutes — and he is in car three when his brother is shot, every pass. Then they have to tell him what closing it does. Only run it if the table can hold it."], + ["Refuse him", "He follows anyway, arrives late, and is on the bench at the end."], + ["Never tell him anything", "He is in the crowd at the epilogue asking a Registry man questions nobody will answer."] + ]) + + P("Give TT-H07 here — the list of six names in Ambrose's hand, " + + "which Rance has carried in his coat since Thursday. Do not explain it. " + + "In Act Five they will be standing in a car with all six.") + + H(2, "Panic triggers") + + P("Being taken and held — 1 point to anyone disarmed and locked in. " + + "Nothing else. This act is meant to be a hard hour in an ordinary " + + "world, not a supernatural one.") + + H(2, "Failure case") + + P("If the table talks its way out in five minutes, that is a win and you have " + + "thirty minutes back — spend them on Act Four, which always wants " + + "more. If it goes to a fight and stalls, Shard's arrival with two hired men breaks it " + + "up: everybody scatters, and now the agents owe Rance nothing and know nothing.") }, + +{ name: "6 · Act Four — Getting aboard", content: + ART("tt_03_bench", "The grade on the south bench") + + P("Goal: the Draw, the arithmetic of a train that cannot stop, and " + + "forty seconds of slow track. ~45 minutes.") + + READ("The Draw is a dry wash a quarter-mile across with a made grade running the length " + + "of the south side. There is nothing on the line. At eleven minutes past the hour you " + + "hear a whistle, and then a locomotive working hard up the grade towards you, and the " + + "sound goes past at about thirty miles an hour, and there is nothing there.") + + P("It passes roughly every forty minutes. Let them watch two passes " + + "before they commit to anything. Each pass they watch moves the crossing " + + "clock one.") + + P("R9 — the sound is a train ACCELERATING, always — is " + + "[CUS: Listen or Engineering], or free to anybody who was at the roundhouse.") + + H(2, "What they are up against") + + P("The train cannot stop and cannot be flagged. Thirty miles an hour " + + "on the level, and the only place it is slow is the top of the grade at the " + + "water tower — about eight miles an hour, for perhaps forty seconds.") + + P("The water tower is half a mile up the grade and it is still " + + "standing in 1881, which it will not be in the present day. Anybody who looks at the " + + "ground sees the answer.") + + H(2, "The three routes") + + ART("tt_05_boarding", "The water tower, and forty seconds of slow track") + + P("Say which route suits whom, out loud, before they choose.") + + TABLE(["Route", "Roll", "Suits"], [ + ["Drop from the tower — twelve feet onto a moving roof", + "[CUS: Athletics — average; only a fumble is a fall]", + "Containment, the criminal, the Field Lead"], + ["Ride it down — horses alongside on the bench, step across", + "[CUS: Athletics — difficult]. A local does the riding — Rance, one of his men, or the liveryman.", + "Nobody, really. It is the fast option and the worst one."], + ["The wagon on the grade — four horses, a plank across", + "[CUS: Athletics — easy], slowest to arrange, needs the company's or Rance's help", + "The doctor and the Registry officer"] + ]) + + P("THERE IS NO RIDE SKILL IN THIS GAME and the agents do not have " + + "one. Any horse work is done by a local who is doing the players a favour, and the " + + "agent's roll is only for the step across. Say so the moment somebody suggests " + + "horses.") + + P("The wagon is easier than the tower, and the tower is easier than the " + + "horses. A party that spends twenty minutes arranging the wagon has bought " + + "an easy roll and should get one.") + + P("DO NOT MAKE THE TOWER DIFFICULT. Playtested at halved skill it put " + + "four agents on 12–31% and all four missed, which stalls the one scene the " + + "scenario is built around. Playtested with all five on the tower: two missed twice, " + + "had to be carried across on the department's plank, and became passengers in their " + + "own set-piece.") + + P("Everybody has to get on. A failed attempt gets the next pass, forty " + + "minutes later, and the clock moves — not a full stop.") + + P("Panic: boarding is worth a point to anybody who wants one. Offer " + + "it; do not force it.") + + P("At 2:55 they are aboard. If two attempts have failed, the " + + "department's second wagon arrives with two more agents and a plank, and the players " + + "owe somebody a favour.") + + H(2, "Failure case") + + P("They cannot fail this act, only pay for it. Every failure is forty " + + "minutes and a click of the clock. If the clock reaches 5 during Act Four, tell them " + + "plainly: one pass left.") }, + +{ name: "7 · Act Five — The four minutes", content: ART("tt_06_car", "Car three, between passes") - + P("Goal: survive a gunfight nobody started for their benefit, work " - + "out that it repeats, and close the crossing anyway.") - + READ("It is warm. That is the first thing. Sixty-one people in five cars, and it " - + "smells of bodies and coal smoke and coffee. Somebody has organised a rota for the " + + P("Goal: survive a gunfight nobody started for their benefit, work out " + + "that it repeats, and close the crossing anyway. ~50 minutes.") + + READ("It is warm. That is the first thing. Sixty-one people in five cars and it smells " + + "of bodies and coal smoke and coffee, and somebody has organised a rota for the " + "water. A child is asleep across two seats with a coat over her. They look up when " - + "you come through the door, and one of them says: “You want to be " - + "somewhere else in about six minutes.”") - + H(2, "Between passes — perhaps twenty minutes of quiet") - + P("The agents arrive in the calm part. Use it. Everyone aboard knows exactly what is " - + "coming and has had two million rehearsals of it.") - + TABLE(["Where", "What is there"], [ - ["Locomotive", "Marius Kell, engineer, who has not let go of the regulator."], - ["Tender, car one", "Coal that has not run out. The first hard evidence that this is sustained, not surviving."], - ["Car two", "Most of the passengers. They lie down before it starts. They have a drill."], - ["Car three", "Where the fight happens. Overturned seats at both ends. Splinter damage that is not there twenty minutes later."], - ["Car four", "Freight. The payroll box, bolted down. The signed survey in the company satchel."], - ["Car five", "Elias Vane, alone, watching the line come out from under."] + + "you come through the door, and one of them says: “You want to be somewhere " + + "else in about six minutes.”") + + TABLE(["Where", "What"], [ + ["The locomotive", "Marius Kell, who has not let go of the regulator"], + ["Tender, car one", "Coal that has not run out — the first hard evidence"], + ["Car two", "Most of the passengers. They lie down before it starts. They have a drill."], + ["Car three", "Where the fight happens. Overturned seats at both ends."], + ["Car four", "Freight, the payroll box bolted down, the signed survey in the satchel"], + ["Car five", "Elias Vane, alone, watching the line come out from under"] ]) - + H(2, "THE FOUR MINUTES — the repeating gunfight") - + ART("tt_08_gunfight", "Car three, at 11:41") - + P("It starts when the whistle sounds for the grade and it lasts four " - + "minutes. Run it in rounds. It happens on every pass, and it is " - + "the same four minutes every time: the same men, the same shots, the same two " - + "passengers hit in the second minute.") + + P("Give TT-H08, the manifest, when Hester Bligh first speaks to them.") + + H(2, "The four minutes") + + ART("tt_08_gunfight", "The four minutes") + + P("Starts on the whistle for the grade. Run it in rounds. It is the same four " + + "minutes every time — same men, same shots, same two passengers hit in " + + "the second minute.") + TABLE(["Minute", "What happens if nobody interferes"], [ - ["1", "Ambrose's five come forward from car four. Merritt's four are already at the front of car three. Somebody shouts put it down. Both sides think they said it."], - ["2", "First volley, the length of the car. Two passengers are hit — a miner named Doyle, and Mrs Danforth's arm. This happens every single time."], - ["3", "Merritt's men fall back to the car four door and hold it. Ambrose's take the overturned seats. Reloading — a Webley is six and a Martini is one."], - ["4", "Ambrose gets to the payroll box. Merritt shoots him through the door. The whistle sounds for the top of the grade, and it all resets."] + ["1", "Ambrose's five come forward from car four. Merritt's four are at the front of car three. Somebody shouts put it down; both sides think they said it."], + ["2", "First volley. Two passengers are hit — Tom Doyle, and Mrs Danforth's arm. Every time."], + ["3", "Merritt falls back to the car four door and holds it. Ambrose takes the overturned seats. Everybody reloads: a Webley is six, a Martini is one."], + ["4", "Ambrose reaches the box. Merritt shoots him through the door. The whistle sounds, and it resets."] ]) - + H(2, "HOW MUCH FIRE THE AGENTS DRAW — read this before running the fight") - + P("The two sides are shooting at each other, not at the agents. That " - + "is the single most important thing to hold on to, and getting it wrong turns this " - + "scene into a massacre. Do not have nine armed men fire at the party. Work out what " - + "each agent is DOING and give them that much fire and no more.") - + TABLE(["What the agent is doing", "Shooters on them", "Cover", "What happens, measured over 300 runs of the four minutes"], [ - ["Head down, not acting", "none", "—", - "Untouched. Nobody is interested in them. A player may sit out a pass and that is a legitimate choice."], - ["Acting from cover — talking, dragging somebody clear, working along the seat backs", - "1", "−30%", - "Two of four hurt, half a party member down, no wipes. This is the intended shape of the scene."], - ["Moving in the open — crossing the aisle, up the car", - "2", "−30%", - "Three of four hurt, one down. One party in three hundred is wiped. Properly frightening."], - ["Going for the payroll box — the one thing both sides will stop everything to prevent", - "2", "none", - "Three and a half of four down. More than half of all parties are wiped."] + + P("If Rance came aboard, he is in car three from minute one and he has " + + "seen his brother. He will go to him. He cannot be talked out of it. He is " + + "not part of the loop, so he CAN be shot, and the exposure table applies to " + + "him as to any agent. Play him as a man with no interest at all in the mission.") + + H(2, "HOW MUCH FIRE THE AGENTS DRAW — read before running it") + + P("The two sides are shooting at each other, not at the agents. " + + "Getting this wrong turns the scene into a massacre. Work out what each agent is " + + "doing and give them that much fire and no more.") + + TABLE(["The agent is", "Shooters", "Cover", "Measured over 300 runs"], [ + ["Head down, not acting", "none", "—", "Untouched. A legitimate choice for a pass."], + ["Acting from cover", "1", "−30%", "2 of 4 hurt, half a party member down, no wipes. The intended shape."], + ["Moving in the open", "2", "−30%", "3 of 4 hurt, one down. One party in 300 wiped."], + ["Going for the payroll box", "2", "none", "3½ of 4 down. More than half of all parties wiped."] ]) - + P("Tell them the last row before they commit to it, not after. Going " - + "for the box is a way to die and the players are entitled to know that it looks like " - + "one. Everything else in this list is survivable.") - + P("Nobody has to roll to hide. Taking cover and staying there is not " - + "a skill check. It is a decision, and it works.") + + P("Tell them the last row before they commit, not after. Everything " + + "else is survivable. Nobody rolls to hide — taking cover is a " + + "decision, and it works.") + H(2, "THE LOOP RESETS. THE AGENTS DO NOT.") + P("Everybody who belongs to 1881 is back on their feet at the next pass, unhurt, with " - + "no memory of having been shot. The agents are not part of the loop and " - + "their wounds are permanent. Say this at the table before the first volley: " - + "a player who thinks the reset will heal them will take risks that kill them.") - + P("A downed agent is down, not dead — the dying rules apply as normal, " - + "and the only medicine aboard is a chirurgeon's roll and a bottle of laudanum. " - + "First Aid is the whole answer and somebody has to stop shooting to give it.") - + P("A playtested pass, four agents, all acting from cover: two down at " - + "0 hit points, one on a quarter, one untouched because he stayed on the floor. That " - + "is a bad pass rather than a typical one — the average is half a party member " - + "— but it is entirely possible on the first one, and it is why the reset rule " - + "has to be said out loud in advance.") - + H(2, "The agents are in it") - + UL([ - "Nobody is aiming at them to begin with. Two armed parties who have " - + "never seen them before are firing the length of a wooden box they are standing in.", - "Everybody aims at them the moment they act. Cross the aisle, draw, " - + "shout, or move toward the box, and both sides read them as the other side's " - + "reinforcements. That is the most likely way an agent dies tonight.", - "It is lethal. Webley 1d10, Martini-Henry 2d6+2, against agents on " - + "eleven to sixteen hit points. Two hits can kill. Say so before " - + "the first round, not after — and use the exposure table above, because " - + "unrestricted fire from all nine wipes the party five times out of six.", - "Cover is real and it is wood. Overturned seats and the car ends " - + "are cover; the walls are not. A miss that would have hit the wall goes through it.", - "Panic: a point to anyone in car three at minute two, and a point " - + "to anyone who sees the two passengers go down. That is the fight doing its job." - ]) - + H(2, "What the players will try, and what happens") + + "no memory of having been shot. The agents are not part of the loop and their " + + "wounds are permanent. Say this before the first volley — a player who " + + "thinks the reset will heal them will take risks that kill them.") + + P("A downed agent is down, not dead: the dying rules apply, and the only " + + "medicine aboard is a chirurgeon's roll and a bottle of laudanum. First Aid is the " + + "whole answer, and somebody has to stop shooting to give it.") + + H(2, "What the players will try") + TABLE(["They try", "What it does"], [ - ["Shout, show a warrant card, take charge", "Nothing. There is no authority aboard that either side recognises, and the department's card means nothing in 1881. [CUS: Persuade at −30% for the first pass; it gets easier on later passes as they learn names]"], - ["Shoot one side", "It works, and it changes nothing. Everyone is back on the next pass. If the players kill men on pass one and meet them alive on pass two, let that land in silence."], - ["Get the passengers down", "Genuinely useful and completely possible. Doyle and Mrs Danforth can be pulled clear before minute two. They will be hit again next pass unless the loop ends."], - ["Get to the payroll box", "The obvious idea, and it makes them a target for both sides at once. The box is bolted and the key is on Merritt."], - ["Show one side the other's paper", "This is the good move. See below — it does not stop the fight, but it is how they find out what they are looking at."], - ["Get to the locomotive", "Through car two and the tender, under fire in the gap between cars. This is the route to the ending."] + ["Shout, show a warrant card, take charge", "Nothing. No authority aboard is recognised. [CUS: Persuade at −30% on the first pass]"], + ["Shoot one side", "It works, and changes nothing. Everyone is back next pass. Let that land in silence."], + ["Get the passengers down", "Genuinely useful. Doyle and Mrs Danforth can be pulled clear before minute two."], + ["Get to the payroll box", "The obvious idea, and the one that kills them. See the table."], + ["Show one side the other's paper", "The good move. It does not stop the fight; it is how they learn what they are looking at."], + ["Get to the locomotive", "Through car two and the tender, under fire in the gap. This is the route to the ending."] ]) - + ART("tt_09_payroll", "The payroll box, car four") + H(2, "The paper — the ambiguity, made findable") - + P("Merritt carries a letter of engagement from the Cordera & " - + "Western, signed and sealed, instructing him to see the payroll to Fallon. " - + "Ambrose carries a writ of attachment from a territorial judge, " - + "dated and sealed, naming that same payroll against eleven weeks of unpaid wages.") - + P("Both are genuine. Neither man has seen the other's. An agent who " - + "gets both in the same hand has the whole truth of it: the company sold the same " - + "money twice, and then put four men and five men on the same train with it.") - + P("NO ROLL IS NEEDED TO SEE EITHER PAPER. Between passes, Merritt " - + "shows his letter to anybody who asks — he is proud of it, it is his " - + "authority, and he has had a hundred and forty-five years with nobody to show it " - + "to. Ambrose shows the writ to anybody who is not currently shooting at him, " - + "because having it read is the entire thing he wants. Do not put Persuade " - + "in front of this. Playtested with a real team, the Field Lead's Persuade " - + "was 15% and fell to 1% under the crowd penalty, which turned the scene the " - + "scenario is proudest of into an impossible roll.") - + P("It does not stop the fight. Merritt will not stand down for a " - + "piece of paper from a judge he has never heard of while men are shooting at him, " - + "and Ambrose has eleven weeks of nothing behind him. Showing them changes " - + "nothing on this pass and everything about what the players understand.") + + ART("tt_09_payroll", "The payroll box, car four") + + P("Merritt carries a letter of engagement from the company: see the " + + "box to Fallon, surrender it to no one upon any pretext whatsoever, including the " + + "presentation of any paper. Ambrose carries a sealed writ of " + + "attachment naming that same payroll against eleven weeks of unpaid wages.") + + P("Both genuine. Neither man has seen the other's. An agent holding " + + "both has the whole truth: the company sold the same money twice, then put nine armed " + + "men on a train with it.") + + P("NO ROLL IS NEEDED TO SEE EITHER PAPER. Between passes Merritt shows " + + "his letter to anybody who asks — he is proud of it, and he has had a hundred " + + "and forty-five years with nobody to show it to. Ambrose shows the writ to anybody not " + + "currently shooting at him, because having it read is the entire thing he wants. " + + "Do not put Persuade in front of this. Playtested with a real team, " + + "the Field Lead's Persuade was 15% and fell to 1% under the crowd penalty.") + H(2, "Closing it") - + P("Kell will stop the train if a person he believes has the authority tells " - + "him to, out loud, to his face. He has been waiting a hundred and forty-five " - + "years to be told. He will not do it on a note and he will not do it for a shout " - + "from the tender.") - + P("Getting to him means crossing the tender, in the gap between the cars, during or " - + "between the four minutes. [CUS: Athletics for the gap]") + + ART("tt_10_couple", "The gap between the cars") + + P("Kell will stop the train if a person he believes has authority tells him to, " + + "out loud, to his face. Not on a note, not shouted from the tender. Getting " + + "there means the gap between the cars — [CUS: Athletics].") + P("Convincing him takes NO ROLL if they can tell him one true thing about his " - + "own train. That the coal has not run out. That it is the same four " - + "minutes. That the line was never on the north bench. Any of it. He has been " - + "waiting a hundred and forty-five years for somebody who knows what is wrong to " - + "come and say so, and the moment they do he will ask them to say when.") - + P("Only a party that can tell him nothing has to roll, and then it " - + "is Persuade or Status at average, and a failure means he wants another pass to " - + "think. Do not gate the ending on Persuade. Seven of the ten duty-roster " - + "agents have neither Persuade nor Status trained; playtested, three separate " - + "attempts on Kell all failed and the scenario had no way to end.") + + "own train. That the coal has not run out. That it is the same four minutes. " + + "That the line was never on the north bench. The moment somebody who knows what is " + + "wrong says so, he asks them to say when.") + + P("Only a party that can tell him nothing has to roll — Persuade " + + "or Status at average, and a failure means he wants another pass to think. " + + "Do not gate the ending on Persuade. Seven of the ten duty-roster " + + "agents have neither trained; playtested, three separate attempts on Kell all failed " + + "and the scenario had no way to end.") + P("When the brakes go on, the loop lets go. Four minutes finish for " - + "the first time since 1881, and everyone aboard walks forward into their own lives. " - + "Doyle and Ambrose do not get up. They never did.") - + H(2, "The choices") + + "the first time since 1881. Tom Doyle and Josiah Ambrose do not get up. They never " + + "did.") + + H(2, "The choices — no roll resolves this") + TABLE(["Choice", "What it costs"], [ - ["Close it as ordered", "The mission, done. Fifty-nine people released into their own century. Two men die of wounds they took in 1881, in 1881, four minutes after they took them."], - ["Close it, having first pulled Doyle and Mrs Danforth clear", "The compromise, and it works — for those two. The players cannot save Ambrose; Merritt shoots him at minute four every time and only stopping the train stops that."], - ["Try to end the fight first", "Admirable and probably impossible in the time. Every pass spent trying moves the crossing clock, and at 6 it closes with everybody inside."], - ["Refuse, and leave it running", "Everyone lives, today, for a value of living that is four minutes long. Registry logs it. It fails on its own inside a year and then nobody is released at all."] + ["Close it as ordered", "The mission, done. Fifty-nine released into their own century. Two men die of wounds taken in 1881, in 1881."], + ["Close it, having pulled the passengers clear", + "Works for Mrs Danforth. It does not save Tom Doyle — he is shot again on every pass they spend arranging it, and the wound that kills him is the one from the pass they stop on. Nobody can save Ambrose: only stopping the train stops Merritt shooting him, and stopping the train is what kills him."], + ["Try to end the fight first", "Admirable, probably impossible. Every pass moves the crossing clock; at 6 it closes with everyone inside."], + ["Refuse, leave it running", "Everyone lives, for a value of living four minutes long. It fails inside a year and then nobody is released at all."] ]) - + P("No roll resolves the decision. Say so if a player reaches for dice.") + H(2, "If they ask Vane") + READ("I filed a chart that said the line was somewhere it was not, because a man told " + "me to and I wanted the work. Six months of honest railwaymen repeating it made it " - + "true. Now — you have seen the middle of the car. Two of those men do not get up " - + "when it stops. They have not got up two million times and they will not get up " + + "true. Now — you have seen the middle of the car. Two of those men do not get " + + "up when it stops. They have not got up two million times and they will not get up " + "now. I would still stop it. It is not our place to hold a thing still because we " - + "have grown fond of it.") -}, + + "have grown fond of it.") }, -{ name: "7 · Epilogue, cast, and what not to resolve", content: - ART("tt_07_after", "The register, afterwards") - + P("However it ends, the last scene is the same shape: a Registry room, a form, and " - + "somebody writing down sixty-one names.") - + H(2, "Outcomes") +{ name: "8 · Epilogue, cast, and what not to resolve", content: + ART("tt_07_after", "Afterwards, the register") + + P("~15 minutes. A Registry room, a form, and somebody writing down " + + "sixty-one names.") + TABLE(["Ending", "What the register says"], [ - ["Closed as ordered", "Fifty-nine people walk forward into their own century. Josiah Ambrose and a miner named Doyle die of wounds taken on 3 November 1881, four minutes after they took them. The file is closed. Registry counts it a success and it is one."], - ["Closed, with the two passengers pulled clear first", "As above, and Mrs Danforth keeps her arm. Nobody could save Ambrose; Merritt shoots him at minute four on every pass, and only closing it stops that, and closing it is what kills him."], - ["Closed late, after several passes spent trying to end the fight", "The same ending, arrived at more expensively. If the crossing clock reached 6 first, add the agents to the list."], - ["Left running", "Logged, monitored, inherited by whoever holds the case in a year. Sixty-one people continue to live four minutes. When it fails on its own nobody is released at all. Perfectly defensible. Nobody thanks them."] + ["Closed as ordered", "Fifty-nine walk forward into their own century. Ambrose and Doyle die of wounds taken on 3 November 1881, four minutes after they took them. Registry counts it a success and it is one."], + ["Closed, Mrs Danforth pulled clear first", "As above, and she keeps her arm."], + ["Closed late", "The same ending, more expensively. If the clock reached 6 first, add the agents to the list."], + ["Left running", "Logged, monitored, inherited. Sixty-one people continue to live four minutes. When it fails, nobody is released at all."] ]) + + P("If Rance was aboard: he is in the Registry corridor, and nobody has " + + "told him he cannot be. He wants to know why a government he has never heard of " + + "decided his brother should die on schedule. Let a player answer him. Do not " + + "answer for them.") + + P("If Rance was not aboard: he is on the north bench at dusk with six " + + "horses and no riders coming back, and he is still there when the crossing closes.") + P("Registry's note on any ending: “The department did not " + "cause these deaths. It ceased to prevent them. The distinction matters to the file " + "and it is not expected to matter to the agents.”") - + H(2, "Cast") - + TABLE(["Who", "Wants", "Key line"], [ - ["Cass Merritt, hired guard", "to see the box to Fallon, as engaged", "“I have a letter. Whatever you have, I have a letter.”"], - ["Josiah Ambrose, miner", "eleven weeks of wages, lawfully", "“There is a judge's seal on this. Read it and then shoot me.”"], - ["Marius Kell, engineer", "to be allowed to stop", "“You tell me when. I'll not do it before you say.”"], - ["Elias Vane, surveyor", "to be asked, at last", "“I signed it. Six months of honest men made it true.”"], - ["Hester Bligh, conductor", "her passengers accounted for", "“Sixty-one aboard. I have counted them every hour since.”"], - ["Ada Reyes, telegraph, Cordera", "an answer up the line", "“It never got to Fallon. I've sent it forty times.”"], - ["Mr Bewley, Registry", "the chart, and the truth written down", "“Bring me the paper. The paper is the case.”"] + + H(2, "NPC roster") + + TABLE(["Who", "Essence", "Key line"], [ + ["Mr Bewley, Registry", "wants the chart and the truth written down", "“Bring me the paper. The paper is the case.”"], + ["Mr Prosser, Stores", "nineteen years of this, and will not be argued with", "“You may argue. I have laid out what you may take.”"], + ["Ada Reyes, telegraph", "an answer up the line", "“It never got to Fallon. I've sent it forty times.”"], + ["Tobin Cray, section hand", "to not go back out there", "“There's nothing on that line. I stopped standing there.”"], + ["Rance Doyle, miner", "his brother back, and to be taken seriously", "“You've been asking after the train. So've we.”"], + ["Mr Shard, company detective", "names, and the reward money", "“Who drank with them? That's all.”"], + ["Marius Kell, engineer", "to be allowed to stop", "“You tell me when. I'll not do it before you say.”"], + ["Hester Bligh, conductor", "her passengers accounted for", "“Sixty-one aboard. I have counted them every hour since.”"], + ["Cass Merritt, hired guard", "to see the box to Fallon, as engaged", "“I have a letter. Whatever you have, I have a letter.”"], + ["Josiah Ambrose, miner", "eleven weeks of wages, lawfully", "“There is a judge's seal on this. Read it and then shoot me.”"], + ["Tom Doyle, miner", "to go home. Dies at minute two, every time.", "“Rance said don't. I should've listened to Rance.”"], + ["Elias Vane, surveyor", "to be asked, at last", "“I signed it. Six months of honest men made it true.”"] ]) + H(2, "Do not resolve") + UL([ - "Who was in the right. Both papers are genuine, the company sold " - + "the money twice, and the company is not aboard to answer for it. If a player asks " - + "the GM to adjudicate, do not.", - "Why the coal has not run out. The standing wave sustains it. That " - + "is as far as anybody gets, including Vane.", - "What is at the far end of the line. Nobody aboard has ever reached " - + "it. The train works the grade and comes round. Let that stay strange.", - "Whether closing it was a rescue. Fifty-nine people say yes. Two " - + "men do not get to say." + "Who was in the right. Both papers are genuine and the company is " + + "not aboard to answer for it. If a player asks the GM to adjudicate, do not.", + "Why the coal has not run out. The wave sustains it; that is as far " + + "as anyone gets.", + "What is at the far end of the line. Nobody aboard has reached it.", + "Whether closing it was a rescue. Fifty-nine people say yes. Two men " + + "do not get to say.", + "Whether Rance forgives them. He does not say, and Registry does not ask." ]) + H(2, "GM notes") + UL([ - "Play the passengers as people, hard — and the nine men in " - + "the fight hardest of all. The scenario dies the moment anybody becomes a number.", - "Never let the players win the fight. They can survive it, shape " - + "it, and pull people out of it. They cannot end it. Only the brakes end it.", - "The standing order is the tutorial. One shot at a time, no radio, " - + "an oil lantern that runs out. Do not soften it and do not apologise for it.", - "Cut first: the town of Cordera, down to the livery and the " - + "telegraph office. Never cut the boarding.", - "If they crack it early, run the passes: six of them, forty minutes " - + "apart, and let the table feel the arithmetic they are betting on." - ]) -} + "Act One is not a briefing, it is a workplace. The birthday card " + + "going round Accounts is doing as much work as the case file.", + "Play the passengers as people, hard — and the nine men in the " + + "fight hardest of all.", + "Never let the players win the fight. They can survive it, shape it, " + + "and pull people out of it. Only the brakes end it.", + "Rance is the emotional wiring of the whole case. He turns a number " + + "into a surname.", + "Cut first: the assay office, the saloon talk, and the Act Three " + + "fight. Never cut the boarding." + ]) } + ]; /* ---------------------------------------------------------------- */ @@ -679,7 +778,24 @@ export const TT_HANDOUTS = [ + "walked on it.") }, -{ name: "5 · Working timetable and last dispatch", content: +{ name: "5 · Company notice — No. 9 overdue", content: + P("CORDERA & WESTERN RAIL ROAD COMPANY
" + + "NOTICE TO THE PUBLIC
Cordera, 4th November 1881") + + P("TRAIN NO. 9, being the scheduled service of the 3rd instant from " + + "Cordera to Fallon, five cars, is OVERDUE AND UNACCOUNTED. The said " + + "train did not arrive at Fallon and has not been reported upon any portion of the " + + "line.") + + P("ONE HUNDRED DOLLARS REWARD is offered for information leading to " + + "the recovery of the said train and the property aboard her.") + + P("WANTED FOR INTERFERENCE WITH COMPANY PROPERTY: J. AMBROSE, and " + + "five men in his company, believed to have boarded the said train at the water stop " + + "upon a pretended paper. Any person harbouring or assisting the same will be " + + "prosecuted to the full extent.") + + P("Inquiries to Mr SHARD, at the Bullion.") + + P("BY ORDER, the Superintendent.") +}, + +{ name: "6 · Working timetable and last dispatch", content: P("CORDERA & WESTERN · WORKING TIMETABLE No. 14
" + "In effect 1 October 1881") + TABLE(["Train", "Cordera", "Mercy Draw (north bench)", "Fallon"], [ @@ -701,7 +817,21 @@ export const TT_HANDOUTS = [ + "crossed out. The clerk simply had nothing to write.") }, -{ name: "6 · Passenger manifest", content: +{ name: "7 · The writ men — six names", content: + P("A leaf torn from a pocket book. Pencil, in a careful hand that is not used to " + + "writing much. Rance Doyle has carried it since Thursday.") + + P("Went out 3rd Nov. to serve the paper on No. 9:") + + UL(["Josiah Ambrose — has the writ", + "Tom Doyle", + "Wm. Sennett", + "P. Garrity", + "Halloran", + "the Swede — Nilsson"]) + + P("Underneath, in the same pencil, pressed harder:") + + P("“Tom said he would be back Friday.”") +}, + +{ name: "8 · Passenger manifest", content: P("No. 9 · 3 NOVEMBER 1881 · SIXTY-ONE SOULS
" + "Kept by H. Bligh, Conductor. Counted hourly since.") + P("Crew (4): M. Kell, engineer · J. Doss, fireman · H. Bligh, " @@ -719,7 +849,7 @@ export const TT_HANDOUTS = [ + "nobody knew.") }, -{ name: "7 · Letter of engagement — found on Merritt", content: +{ name: "9 · Letter of engagement — found on Merritt", content: P("Good paper. Company letterhead, a wax seal, and a hand that has written a " + "thousand of these.") + P("CORDERA & WESTERN RAIL ROAD CO.
" @@ -737,7 +867,7 @@ export const TT_HANDOUTS = [ + "legible.") }, -{ name: "8 · Writ of attachment — found on Ambrose", content: +{ name: "10 · Writ of attachment — found on Ambrose", content: P("Cheaper paper, folded small and carried a long time. A court seal, pressed " + "properly, and a judge's hand.") + P("IN THE DISTRICT COURT OF THE TERRITORY OF NEVADA
" @@ -759,6 +889,99 @@ export const TT_HANDOUTS = [ export const TT_CAST = [ +{ key: "tt_bewley", name: "Mr Bewley", + role: "BUREAU, present day. Registry. Holds the case file and signs for the agents.", + chosenStyle: "deliberate", naturalArmour: 0, species: "baseline", + ch: { str: 9, siz: 11, con: 11, int: 16, pow: 14, dex: 10, cha: 12, edu: 17 }, + skills: [{ fam: "research", spec: "", val: 75 }, + { fam: "knowledge", spec: "", val: 65 }, + { fam: "anomaly_lore", spec: "", val: 60 }, + { fam: "insight", spec: "", val: 50 }], + weapons: ["punch"], + tactics: "Sixties, cardigan, reading glasses pushed up. He is NOT mysterious and he is " + + "NOT withholding: he answers every question he can answer and says plainly when he " + + "cannot. HE IS WRONG ABOUT ONE THING and does not know it — he believes the crossing " + + "puts you on the grade, because the three teams who found out otherwise never came " + + "back to correct the file. Do not have him hedge about it. He is confident and he is " + + "mistaken, and that is the whole trick of Act One." }, + +{ key: "tt_prosser", name: "Mr Prosser", + role: "BUREAU, present day. Stores. Takes the modern kit off them.", + chosenStyle: "deliberate", naturalArmour: 0, species: "baseline", + ch: { str: 12, siz: 12, con: 13, int: 12, pow: 13, dex: 11, cha: 10, edu: 11 }, + skills: [{ fam: "knowledge", spec: "", val: 55 }, + { fam: "repair", spec: "mechanical", val: 50 }, + { fam: "bargain", spec: "", val: 45 }], + weapons: ["punch"], + tactics: "Nineteen years behind that counter and entirely immovable. He does not " + + "threaten and he does not explain twice. If a player argues, he waits until they " + + "have finished and then says the same thing again. He is the scenario's way of " + + "teaching Standing Order 9 without a lecture, so let him win every exchange. If " + + "asked whether people smuggle things through: 'Constantly. It costs them.'" }, + +{ key: "tt_rance", name: "Rance Doyle", + role: "1881, Cordera. Miner. His brother Tom went out on No. 9 and did not come back.", + chosenStyle: "reflex", naturalArmour: 0, species: "baseline", + ch: { str: 15, siz: 14, con: 15, int: 12, pow: 15, dex: 13, cha: 13, edu: 6 }, + skills: [{ fam: "firearm", spec: "rifle", val: 45 }, + { fam: "brawl", spec: "", val: 55 }, + { fam: "insight", spec: "", val: 50 }, + { fam: "navigate", spec: "", val: 45 }, + { fam: "athletics", spec: "", val: 50 }], + weapons: ["punch", "martini"], + tactics: "THE EMOTIONAL WIRING OF THE WHOLE CASE. Thirties, hard hands, eleven weeks " + + "unpaid, and his brother has been missing for a day. He takes the agents for company " + + "detectives and he is NOT WRONG TO. He can be talked round with the truth and ONLY " + + "with the truth — no roll needed, and no roll saves a lie. He calls off his men the " + + "moment anybody goes down, because he has already lost enough this week. If taken " + + "aboard he is in car three when Tom is shot, every pass, and he is not part of the " + + "loop, so he can be killed. He has no interest at all in the mission." }, + +{ key: "tt_shard", name: "Mr Shard", + role: "1881, Cordera. Company detective. Buying drinks and collecting names.", + chosenStyle: "reflex", naturalArmour: 0, species: "baseline", + ch: { str: 12, siz: 12, con: 12, int: 14, pow: 13, dex: 13, cha: 14, edu: 10 }, + skills: [{ fam: "firearm", spec: "pistol", val: 55 }, + { fam: "insight", spec: "", val: 60 }, + { fam: "fast_talk", spec: "", val: 55 }, + { fam: "spot", spec: "", val: 50 }], + weapons: ["punch", "webley"], + tactics: "Pleasant, patient, and paid by the day. He wants the six names and he does not " + + "much mind how he gets them. USE HIM AS PRESSURE, NOT AS A FIGHT: he is the reason " + + "Rance is jumpy and the reason strangers asking about the train are a problem. If Act " + + "Three stalls into a brawl, Shard arriving with two hired men is the button that " + + "breaks it up. He will offer the agents money for what they know." }, + +{ key: "tt_cordera_man", name: "Cordera man (town)", + role: "1881. One of Rance's five in the street. Use for all of them.", + chosenStyle: "reflex", naturalArmour: 0, species: "baseline", + ch: { str: 14, siz: 13, con: 13, int: 10, pow: 11, dex: 11, cha: 10, edu: 5 }, + skills: [{ fam: "firearm", spec: "pistol", val: 35 }, + { fam: "brawl", spec: "", val: 45 }, + { fam: "dodge", spec: "", val: 30 }], + weapons: ["punch", "webley"], + tactics: "NOT TRYING TO KILL ANYBODY. These are unpaid miners who want to take the " + + "strangers somewhere quiet and ask them questions. They aim for legs, they close to " + + "grapple, and they stop the instant Rance says stop. A downed agent is captured and " + + "a doctor is fetched. If the agents shoot to kill, these men die easily and the town " + + "closes to the party for good." }, + +{ key: "tt_tom_doyle", name: "Tom Doyle", + role: "1881, aboard. Rance's brother. Shot at minute two of every pass.", + chosenStyle: "reflex", naturalArmour: 0, species: "baseline", + ch: { str: 13, siz: 12, con: 13, int: 11, pow: 12, dex: 12, cha: 12, edu: 6 }, + skills: [{ fam: "firearm", spec: "rifle", val: 35 }, + { fam: "brawl", spec: "", val: 45 }, + { fam: "dodge", spec: "", val: 30 }], + weapons: ["punch", "martini"], + tactics: "Twenty-four, and the youngest man in the car. He is hit in the second minute " + + "of every pass and he has been hit two million times. Between passes he is friendly, " + + "embarrassed, and asks after the road home. HE DIES WHEN THE LOOP LETS GO. The agents " + + "can pull him clear of the volley on any given pass and it changes nothing — the " + + "wound that kills him is the one from the pass they stop on. If Rance is aboard, " + + "these two find each other, and that is the scene the act is really for." }, + + { key: "tt_kell", name: "Marius Kell", role: "CIVILIAN, 1881. Engineer. Has not let go of the regulator since 3 November.", chosenStyle: "deliberate", naturalArmour: 0, species: "baseline", @@ -881,7 +1104,7 @@ export const TT_CASE = { key: "tt_case", name: "TT-004 · Mercy Draw", containment: 6, resources: 5, clearance: 4, - destination: "Mercy Draw, Nevada Territory, 3 November 1881", + destination: "Mercy Draw, Nevada Territory, 4 November 1881", standings: [], notes: "

Crossing clock 0 / 6. Move it on each pass of the train, when " @@ -889,6 +1112,9 @@ export const TT_CASE = { + "

0 Open · 1 Thinning · 2 Slipping (−1 Coherence, once) · 3 The line flickers " + "· 4 The far end stops answering · 5 One pass left · 6 It closes, with whoever is " + "aboard.

" + + "

The crossing opens on the NORTH bench — where the record says " + + "the line is, not where it is. Registry's file has this wrong and Bewley believes " + + "the file.

" + "

Standing Order 9 is live: using any modern item across costs 1 " + "Coherence the first time and moves this clock. Carrying costs nothing. Anchors " + "are exempt.

" @@ -896,9 +1122,9 @@ export const TT_CASE = { + "lanterns and oil, brass compass, pocket watch, spyglass, buff coats, a chirurgeon's " + "roll, laudanum, iron manacles, and period coin.

", legs: [ - { label: "Approach — Mercy Draw, present day", kindId: "approach", difficulty: "average", mod: 0 }, - { label: "Across — Cordera, 1881", kindId: "cordon", difficulty: "average", mod: -5 }, - { label: "Containment — board the train", kindId: "containment", difficulty: "difficult", mod: -10 }, - { label: "Extraction — off the grade, and out", kindId: "extraction", difficulty: "average", mod: -10 } + { label: "Act Two — across, and find the line", kindId: "approach", difficulty: "average", mod: 0 }, + { label: "Act Three — Cordera, and Rance Doyle's men", kindId: "cordon", difficulty: "average", mod: -5 }, + { label: "Act Four — board the train", kindId: "containment", difficulty: "difficult", mod: -10 }, + { label: "Act Five — the four minutes, and out", kindId: "extraction", difficulty: "average", mod: -10 } ] };