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
178 lines
12 KiB
Markdown
178 lines
12 KiB
Markdown
# Station Master — the cards as built
|
|
|
|
> **Generated from `src/engine/content.ts` by `scripts/build-card-reference.ts`. Do not edit by
|
|
> hand** — `npm run build:cards` rewrites it, and `test/card-reference.test.ts` fails 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`](rules-v0.1.md)
|
|
transcribes the prototype PDFs, [`open-questions.md`](open-questions.md) tracks how the gaps in
|
|
them were decided, and [`rules-v0.2.md`](rules-v0.2.md) and
|
|
[`card-reference.md`](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.
|
|
|