Both leaks were found while planning the common board (Gitea#20 step 1), and both are live multiplayer bugs with or without that display, so they are fixed now rather than with 0.8.0. `game.log` is one shared list and `linesSince(seat)` slices it with no per-seat filter, so every line reaches every player. It carried the SEED in the opening line of each multiplayer game — the whole future of the deal — and the NAME OF A CARD DRAWN BLIND from the face-down Home Office deck. Solitaire deliberately keeps both: a one-seat table has nobody to leak to, the seed is what a bug report quotes, and a player's own history naming their own draw is the record. A Department slot is face up and stays named. The drawer still learns their card through `justDrawn`, which already goes to that seat alone. Neither was found by a test. Every test in `redaction.test.ts` passes an empty log, so the whole of narration has sat outside the redaction net since the net was built. Both now have tests there; TODO #91 carries what is still owed and supersedes #78, which described a gap that had already been closed and never mentioned this one. `docs/rules/` had no current description of the game, and `content.ts` named `card-reference.md` as the file that carries what the cards say — a file whose own banner says not to use its numbers, describing the v0.4.5 deck where 3/4 is a Mail-Express with three coaches. Every file in that directory is a deliberate historical record, so none of them is rewritten. `as-built.md` is new and GENERATED from the same catalogues the engine instantiates from, with a test that re-runs the generator and fails when the checked-in file disagrees. A hand-written replacement would have drifted the same way, for the same reason. TODO.md: #32 closed — the playtest migration note did its job and the jump is made; the durable fact it carried is kept. #78 retired in favour of #91. The "play it at a table" section now records that 0.7.4-0.7.9 were test-run without change requests, and that more testing comes at the end of the 0.7.9 series. 897 tests pass, up from 891. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E3Qk7uresKCHksdZajXCLg
12 KiB
Station Master — the cards as built
Generated from
src/engine/content.tsbyscripts/build-card-reference.ts. Do not edit by hand —npm run build:cardsrewrites it, andtest/card-reference.test.tsfails if this file and the code disagree.
This is the one file in docs/rules/ that describes the game as it currently is. Everything
else in this directory is a historical record and marked as such: rules-v0.1.md
transcribes the prototype PDFs, open-questions.md tracks how the gaps in
them were decided, and rules-v0.2.md and
card-reference.md both describe superseded card sets. Read those for the
reasoning; read this for the numbers.
The engine instantiates from the same constants this is emitted from, so a disagreement between this page and the game is a bug in the generator, not a stale table.
Trains
12 timetabled and 10 Extras, 22 in all. Odd numbers run west, even run east; a pair shares a class and is the same card face in two directions. A Crew Tray holds four pieces and a caboose counts toward the four, which is why no train with a caboose carries more than three revenue cars.
Timetabled
| # | Class | Speed | Runs | Consist | Printed rules |
|---|---|---|---|---|---|
| 1 | Crack Limited | fast | west | 2 coaches (2 pieces) | terminals only; no switching; expedite; "Stop at Terminals only." |
| 2 | Crack Limited | fast | east | 2 coaches (2 pieces) | terminals only; no switching; expedite; "Stop at Terminals only." |
| 3 | Express | fast | west | 2 freight (2 pieces) | one freight per location; expedite; "May drop or pick up one freight car at every location." |
| 4 | Express | fast | east | 2 freight (2 pieces) | one freight per location; expedite; "May drop or pick up one freight car at every location." |
| 5 | The Sparrow | fast | west | 3 coaches (3 pieces) | no switching; expedite |
| 6 | The Sparrow | fast | east | 3 coaches (3 pieces) | no switching; expedite |
| 7 | Local | slow | west | 1 freight + 1 coach (2 pieces) | coach stays on station track; "Maximum one freight, one coach." |
| 8 | Local | slow | east | 1 freight + 1 coach (2 pieces) | coach stays on station track; "Maximum one freight, one coach." |
| 9 | Heavy Freight | slow | west | 3 freight + 1 caboose (4 pieces) | — |
| 10 | Heavy Freight | slow | east | 3 freight + 1 caboose (4 pieces) | — |
| 11 | Drag Freight | slow | west | 2 freight + 1 caboose (3 pieces) | — |
| 12 | Drag Freight | slow | east | 2 freight + 1 caboose (3 pieces) | — |
Extras
| # | Class | Speed | Runs | Consist | Printed rules |
|---|---|---|---|---|---|
| X13 | Appleseed Extra | slow | player's choice | 3 freight + 1 caboose (4 pieces), empties only | drop only; "May drop MTs but not pick up anything." |
| X14 | Fruit Growers Express | fast | player's choice | 2 reefers + 1 caboose (3 pieces) | expedite; "Reefers only. May pick up one extra loaded reefer." |
| X15 | Yard Xfer | slow | player's choice | 2 freight + 1 caboose (3 pieces) | — |
| X16 | Light Engine Move | fast | player's choice | engine only | no switching; "No cars at all." |
| X17 | Campaign Train | fast | player's choice | 1 coach (1 piece) | no switching; stop then expedite; stop earns point; must run loaded; "One turn at station (speeches) then expedite. Earns a point per Office Area if the candidate is aboard." |
| X18 | Circus Train | slow | player's choice | 2 freight + 1 coach + 1 caboose (4 pieces) | no switching; stop earns point; must run loaded; "One turn stopped in an Office Area (circus set-up) earns 1 point, once per Area, if fully loaded." |
| X19 | Military Train | slow | player's choice | 1 freight + 2 coaches (3 pieces) | no switching; no passenger work; expedite; must run loaded; "Troops and materiel: runs loaded where the yard can supply it." |
| X20 | Director's private car | slow | player's choice | 2 freight + 1 coach (3 pieces) | no passenger work |
| X21 | Freight Extra | slow | player's choice | 3 freight + 1 caboose (4 pieces) | — |
| X22 | Pee-Dee | slow | player's choice | 1 caboose (1 piece) | pick up empties only; "Per-diem train. May only pick up MTs." |
Mainline cards
A card is divided into regions, and a train advances one region per Stage — so the regions a card prints are what it costs to cross. Where a train enters is what the rules move: a fast train on Hilly, a Heavy Grade with Helpers, or a card whose back region is a siding rather than part of the road all change the entry point rather than the card's length.
| Card | Regions | Default entry | Fast / slow entry | Trains may pass | Sorts cars |
|---|---|---|---|---|---|
| Plains | 1 | 0 | — | — | — |
| Curves | 2 | 0 | — | — | — |
| Hilly | 2 | 0 | 1 / 0 | — | — |
| Heavy Grade | 3 | 0 | — | — | — |
| Double Track | 1 | 0 | — | yes | — |
| Uncontrolled Siding | 2 | 1 | — | — | — |
| Tunnel | 2 | 0 | — | — | — |
| Trestle | 1 | 0 | — | — | — |
| Interchange | 2 | 1 | — | — | yes |
The Mainline deck is 10 cards; the two Division Points are the fixed ends of the Division and are not dealt. What each card does, in the words the game uses on screen:
- Plains — 1 region — one Stage each. · 1 Stage for every train — the printed speed is scenery. · One train at a time — anything following has to wait for it to clear.
- Curves — 2 regions — one Stage each. · 2 Stages for every train — the printed speed is scenery. · One train at a time — anything following has to wait for it to clear.
- Hilly — 2 regions — one Stage each. · This card reads the train's FAST/SLOW rating: a fast train starts further along and crosses in 1 Stage, a slow one in 2 Stages. No other card cares which it is. · One train at a time — anything following has to wait for it to clear.
- Heavy Grade — 3 regions — one Stage each. · A grade, climbing eastward. 3 Stages to climb it and 3 Stages to run down, before help. Helpers start an UPHILL train a region further on; Brakeman does the same DOWNHILL and Airbrakes another again, and Airbrakes cannot be played without Brakeman. Never less than one Stage. · One train at a time — anything following has to wait for it to clear.
- Double Track — 1 region — one Stage each. · 1 Stage for every train — the printed speed is scenery. · TRAINS MAY PASS — two trains may stand on this card at once, so a following train is not held behind a slower one.
- Uncontrolled Siding — 2 regions — one Stage each. · A train with the card to itself starts past the back region and is across in 1 Stage. · UNCONTROLLED SIDING — arrive to find a train already here and you take the siding, a region behind it. You are not in the same place, so you do not run into it; it costs you the extra Stage instead. · One train at a time — anything following has to wait for it to clear.
- Tunnel — 2 regions — one Stage each. · 2 Stages for every train — the printed speed is scenery. · One train at a time — anything following has to wait for it to clear.
- Trestle — 1 region — one Stage each. · 1 Stage for every train — the printed speed is scenery. · One train at a time — anything following has to wait for it to clear.
- Interchange — 2 regions — one Stage each. · A train with the card to itself starts past the back region and is across in 1 Stage. · An Extra beginning its run here starts in the back region and takes the extra Stage. · One train at a time — anything following has to wait for it to clear. · Cars may be sorted into any new order here.
Office cards
Upgrades are strictly sequential — no skipping a tier — so a Terminal needs all three cards in order. Green slots are outbound passengers, red are inbound, and the design gives slots equal to Porters rather than one more.
| Office | Control point | Passenger facility | A/D tracks | Porters | Green | Red | In deck |
|---|---|---|---|---|---|---|---|
| Whistle Post | — | — | 1 | 0 | 0 | 0 | — |
| Depot | yes | yes | 2 | 1 | 1 | 1 | 4 |
| Station | yes | yes | 3 | 2 | 2 | 2 | 2 |
| Terminal | yes | yes | 4 | 3 | 3 | 3 | 1 |
Whistle Posts are a fixed supply of 4 outside the deck, and Limits signs a supply of 8.
Freight facilities
Each lists the car types it works, which way its traffic flows, and the industries it may not sit beside. Every lockout pair is a producer and the consumer of the same commodity — you may build one end of a chain or the other, never both, which is what forces traffic to run between districts rather than in circles inside one. No two of the same industry may share an Office Area, and that rule is enforced for every kind rather than repeated in each row.
| Industry | Cars | Flow | Green | Red | Laborers | Locked out with | Copies |
|---|---|---|---|---|---|---|---|
| Freight House | boxcar | both | 1 | 1 | 1 | Grocer's Warehouse | 2 |
| Mine Tipple | hopper | outbound | 1 | 0 | 1 | Power Plant | 2 |
| Refinery | tank | outbound | 1 | 0 | 1 | Power Plant | 1 |
| Power Plant | hopper, tank | inbound | 0 | 1 | 1 | Mine Tipple, Refinery | 2 |
| Packing Sheds | reefer | outbound | 1 | 0 | 1 | Grocer's Warehouse | 1 |
| Grocer's Warehouse | boxcar, reefer | inbound | 0 | 1 | 1 | Packing Sheds, Freight House | 1 |
Modifier cards
Each sits beside a host and raises one of its capacities. office as a host means any Passenger
Facility — so a modifier that adds a green slot to an Office adds nothing to a Whistle Post, which
is not one.
| Modifier | Hosts | +Green | +Red | +Laborers | +Porters | Copies |
|---|---|---|---|---|---|---|
| Waiting area | any Passenger Facility | 1 | — | — | 1 | 3 |
| Restaurant | any Passenger Facility | 1 | — | — | 1 | 2 |
| Hotel | any Passenger Facility | 1 | — | — | 1 | 1 |
| Truck dock | Freight House, Packing Sheds, Grocer's Warehouse | — | 1 | — | — | 2 |
| Railroad Express Agency | Freight House | 1 | — | 1 | — | 1 |
| Forklifts | Freight House, Packing Sheds | 1 | — | 1 | — | 2 |
| Prep Plant | Mine Tipple | 1 | — | 1 | — | 1 |
| Coal Piles | Mine Tipple | 1 | — | 1 | — | 1 |
| Conveyor Belts | Mine Tipple | 1 | — | 1 | — | 1 |
| Pipelines | Refinery | 1 | — | 1 | — | 1 |
| Oil Depot | Refinery | 1 | — | 1 | — | 1 |
| Viscosity breakers | Refinery | 1 | — | 1 | — | 1 |
| Transmission lines | Power Plant | — | — | 1 | — | 1 |
| Rotary Dumps | Power Plant | — | — | 1 | — | 1 |
| Steam Turbines | Power Plant | — | — | 1 | — | 1 |
| Ice House | Packing Sheds, Grocer's Warehouse | 1 | — | 1 | — | 2 |
| Local small groceries | Grocer's Warehouse | — | — | 1 | — | 1 |
Track cards
Track is in the Home Office deck and is drawn and played like any other card — not a separate per-player supply. Operational Rail is the flag that says a train may stop on the card; a turnout may be run through but not stopped on.
| Track | Geometry | Hand | Operational rail | Move cost | In deck |
|---|---|---|---|---|---|
| Straight track | straight | none | yes | 1 | 16 |
| Curved track (right) | curved | right | yes | 1 | 8 |
| Curved track (left) | curved | left | yes | 1 | 8 |
| Sharp Curved Track (right) | sharpCurved | right | yes | 2 | — |
| Sharp Curved Track (left) | sharpCurved | left | yes | 2 | — |
| Turnout (right) | turnout | right | — | 1 | 8 |
| Turnout (left) | turnout | left | — | 1 | 8 |
48 track cards are dealt in total. Rows showing no copies are shapes the engine understands but the deck does not currently print.