fixed train# specific rules. cleaned up display topline and train display on division map

This commit is contained in:
Jesse
2026-08-09 19:44:18 -04:00
parent 4a800a053a
commit 6ead39c530
14 changed files with 316 additions and 57 deletions
+33
View File
@@ -175,9 +175,42 @@ Ordered within each section by how much it is currently costing us.
Blocked on a decision, not on work.
- [ ] **PROPOSED RULE — deal each player six track cards at the start.** Jesse's proposal, and it
aims squarely at the measured problem above: a run-around needs five specific pieces and the
bot holds a turnout and a matching curve together on 0.2% of turns. Six pieces in the opening
hand is roughly the private supply the prototype had, in a form that does not reintroduce an
unbounded one — and it would make the opening district a decision rather than a wait. Questions
before it goes in: are the six drawn from the track cards in the deck (thinning it for
everyone) or from outside it; do they sit in the hand, against the three-card limit, or in a
separate track hand that does not compete; and does the bot's opening change enough to need
re-measuring (it will — this is the one change that could move the run-around numbers).
- [ ] **PROPOSED RULE — one Revenue point for every train that exits your section.** Jesse's
proposal. Worth noting what it would do to the economy as measured: arrivals run at 5.4 a game
and completed runs at about the same, so this is roughly **+5 Revenue a game** against a
current mean of 2.6 — it would more than triple the score and, unlike freight or passengers, it
pays for traffic the player does not have to work. That may be exactly the intent (it rewards
keeping the line clear, which is the Superintendent's job) but it changes what the game is
about, and it interacts with the victory-target question below: 20 over 5 Days becomes
reachable almost on traffic alone. Cheap to measure once decided.
- [x] ~~**Q13 — rear-end collisions on a Mainline card.**~~ Answered: collide on catching up.
Implemented, and not on cards that print "trains may pass". Invisible to a bot that always
denies clearance; a bot that always allows drops from 7.34 revenue to **-5.13**.
- [ ] **NINE OF THE TWELVE SPECIAL-TRAIN RULES ARE DECLARED AND READ BY NOTHING.** Found by grepping
each flag on `TrainRules` for a reader outside `content.ts`. Only `expedite`, `emptiesOnly` and
`freightTypes` are enforced; `stopEarnsPoint` now is too, after a playtest reported the Circus
Train standing still for a Stage and earning nothing. Still unbuilt:
`noSwitching` · `terminalsOnly` · `coachStaysOnStationTrack` · `oneFreightPerLocation` ·
`noPassengerWork` · `dropOnly` · `pickUpEmptiesOnly` · `stopThenExpedite` · `copiesNextScheduled`
These are what make a special train special — a Circus Train that may not switch, a per-diem
train that may only pick up empties, a Second Section that copies the train ahead. Until they
are enforced, `trainRules()` marks them **NOT YET ENFORCED BY THE ENGINE** in the train's
tooltip rather than listing them as if they applied, because telling a player a rule is in
force when it is not is worse than saying nothing. Each is small on its own; the question is
whether they are worth building before the rebalance, since several of them restrict switching
and would move the freight numbers.
- [ ] **Poling.** The only card in the deck with no defined behaviour — the sheet records its effect
as "TBD in the source". A test asserts it stays TBD so nobody invents one.
- [ ] **Heavy Grade orientation at setup.** The card says "Player sets orientation", but `createGame`