Files
station-master/docs/StationMaster-Mainline-Deck-v0.4.5.md
T
Jesse.MarkowitzandClaude Opus 5 06db36e5b5 v0.7.0 — four game types, a lobby you can read and leave, and a multiplayer game that makes a sound
The multiplayer set-up, the lobby, the start of a game, and four signals a remote client had never
been sent. Reasoning, the preset table and what was verified how: CHANGELOG.md.

- Co-op, Competitive, Cutthroat, Solitaire and Custom, on both screens, from one shared block —
  they had drifted, and each was missing a question the other asked.
- A player reads the whole rule set before taking a seat, may leave a lobby or a running game, and
  keeps a seat across a reload. The host may clear a chair. The browser remembers every game it is
  in, not just the last one.
- The start of a game is drawn: a handoff beat, an announcement, the code and type in the header.
- Sound, the timetable flash, announcements and the just-drawn badge now reach a remote client;
  justDrawn goes to the seat that drew it and nobody else.
- Played on StartOS, which found the rest: an Extra belongs to the player who played it, the board
  never named the Superintendent, bot seats were reported as absent players, and rule section
  numbers are out of every string a player reads.

Also carries the previous session's Heavy Grade documentation work — asked again, answer unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016JczK5i33ZNSf2PtzZqdhS
2026-08-23 05:46:42 -04:00

7.4 KiB
Raw Permalink Blame History

Station Master — Mainline Deck

Rules implementation reference: v0.4.5
Scope: the tarot-sized Mainline cards placed between Offices. This is an implementation reference, not a transcription of earlier prototype rules.

How Mainline cards work

At setup the game places one randomly selected Mainline card between each neighbouring pair of Offices and one beyond each end Office, between it and a Division Point. Thus, a game with N players has N + 1 Mainline cards. The implementation selects types with replacement; it does not deal them from a shuffled finite deck.

A train crossing a Mainline card spends Stages, rather than moving through its printed cells. A 60 mph card costs one Stage and a 30 mph card costs two. A Slow train adds one Stage to every crossing. On Hilly terrain, any train carrying at least one coach uses the passenger rate; a train carrying no coach uses the freight rate. No crossing can take less than one Stage.

The card does not itself determine which player owns the adjacent Office. It is part of the shared Division.

Physical card inventory in Mainline Cards.pdf

The supplied PDF has ten tarot-sized terrain cards. Plains appears twice; the other terrain types appear once each. It also includes two Division Point cards.

Physical card Copies in the PDF
Plains 2
Curves 1
Hilly 1
Heavy Grade 1
Double Track 1
Uncontrolled Siding 1
Tunnel 1
Trestle 1
Interchange 1
East Division Point 1
West Division Point 1

The PDF art labels this card “Yard”; this reference uses the implementation’s correct name, Interchange, to distinguish it from the Division Yard, Classification Yard, Yard Office, and Small Yard.

Implemented Mainline card reference

Card Implemented crossing time and feature
Plains 60 mph; one Stage for Fast, two for Slow. The implementation has one Plains type rather than the PDF’s two physical copies.
Curves 30 mph; two Stages for Fast, three for Slow.
Hilly Passenger train: 60 mph. Freight-only train: 30 mph. Add one Stage if Slow.
Heavy Grade Starts at 30 mph; two Stages for Fast, three for Slow. The card prints “Player sets orientation”; the game deliberately overrides that and rolls the uphill direction from the seed — settled in v0.5.0 and re-confirmed 2026-08-23, see the note below. Grade modifiers can reduce the time, to a minimum of one Stage.
Double Track 60 mph. Printed capability: trains may pass. The traffic-resolution rule is in Rules §4.5.
Uncontrolled Siding 60 mph. Printed capability: trains may pass. The traffic-resolution rule is in Rules §4.5.
Tunnel 30 mph.
Trestle 60 mph.
Interchange 60 mph. A train may be reordered there only through the card’s printed “sort cars” concept; the current engine does not provide a Mainline sorting action for it.

PDF/code mismatch — CORRECTED

Was: src/engine/content.ts defines nine MAINLINE_PROFILES types: one Plains entry plus the eight other terrain types above. setup.ts selected uniformly from that nine-type list, with replacement. The second Plains card shown in Mainline Cards.pdf was therefore not represented as a duplicate card or as extra Plains weight in setup — and, worse than a weighting error, a Division could be dealt two Interchanges, two Tunnels or two Trestles, none of which the deck contains.

Now: MAINLINE_DECK in content.ts is the inventory table above — ten drawable cards, Plains twice and the other eight once each — and buildDivision deals from it without replacement. The two Division Point cards are not in that deck: they are the fixed ends of the Division, laid by buildDivision itself rather than drawn.

The Interchange is what forced the correction. §7 lets an Extra be started at the Interchange "if one is on the board" (see docs/rules/implications.md, §7), which only reads as a rule if the board can hold at most one.

The executable state represents East and West Division Points as fixed end nodes, not as card records. They are functionally present at the ends of the Division, but are not represented as the two PDF cards in the deck/state model.

Heavy Grade modifiers

These cards come from the Home Office deck and are played onto a Mainline card during a player’s Draw option.

Card Copies Placement and actual effect
Brakeman 1 Heavy Grade only. Reduces a downhill crossing by one Stage.
Airbrakes 1 Heavy Grade only, and Brakeman must already be on that card. Reduces a downhill crossing by one additional Stage.
Helpers 1 Heavy Grade only. Reduces an uphill crossing by one Stage.
Realignment 2 May be played only onto an unoccupied Mainline card. Changes Plains → Double Track, Curves → Plains, Uncontrolled Siding → Double Track, or Trestle → Uncontrolled Siding. It cannot be played on any other card type.

For the grade cards, “uphill” should be the direction selected by the player when the card is placed. In v0.4.5 it is the seeded gradeUp direction because setup has no player-choice step.

What is not implemented

  • There is no player choice or physical placement interaction for Mainline cards; setup deals them automatically from the seeded random stream. There is a finite draw pile as of v0.6.2 — the deck above, dealt without replacement, so no Division can hold two of a card printed once.
  • Interchange is catalogued as a “sort cars” card, but v0.4.5 has no operation that reorders a train on the Interchange. The Small Yard in an Office Area is the implemented sorting mechanism.
  • Interchange now has one player-facing use: an Extra Train may be started there, made up in its yard and highballing onto the Mainline when the Subdivision is clear (§7, v0.6.2). Car sorting remains unimplemented.

Heavy Grade orientation is settled, not missing

Heavy Grade orientation is rolled from the seed rather than chosen by a player. This is a decision, not a gap, and it is not awaiting a player-selection step.

The card prints “(Up)” and “Player sets orientation”, which assumes the card has an owner. This one does not: buildDivision lays the Division as DP · Mainline · Office · Mainline · … · DP, so a Heavy Grade always sits between two districts, or beyond an end Division Point next to one — never inside a single player’s own district.

Orientation is not cosmetic: Brakeman and Airbrakes each take a Stage off a train running downhill, Helpers takes one off a train running uphill, and odd-numbered trains run west while even run east. Turning the card around therefore decides which of those modifier cards are worth anything and which direction of traffic is favoured — permanently, for the whole game. Handing that to one of the two neighbours advantages them over the other, and no player has a fair claim to it.

Re-opened and closed again on 2026-08-23, when the option of giving the choice to the Superintendent was considered and rejected. Jesse’s call: v0.5.0’s ruling stands. Rolling from the seed is deterministic, roughly even (51/49 east/west over 400 games), identical for solitaire and multiplayer, and keeps setup non-interactive — the game has no setup phase, so the question would have to interrupt play before the first Local Operations, in the minority of games that deal the card at all (20% at one player, rising to 50% at four).