v0.1.0 — undo, the crew's reach on the board, workers on the card, and four engine bugs
Fifteen items from two playtest sessions. Three that read as drawing faults were engine bugs: cars could be added to a train that was not being made up (50 offers in 8 games), the make-up panel merged two trains and could couple a car to the wrong one, and an Office upgrade silently deleted what a Modifier had added. A fourth was a sentinel inside a coordinate's own value range — a Mainline placement travelling as row -1, which is an ordinary district row. Trains are now drawn the way they stand: west on the left, nose toward the way the engine faces, on both the district card and the Division chip. Undo steps back through the game by replaying the save without its last intent. The switching walk keeps its rejections, so the board can say why a square is not offered. Laborers and Porters are on the card, and the rule that a district only grows outwards is finally written down. Versions start here: third digit for fixes, second for a feature set, 1.0 for a release. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GgtkX8JnvKa8y2tuJ8aQf4
This commit is contained in:
+12
-1
@@ -38,8 +38,17 @@ export type Intent =
|
||||
* `variant` indexes `variantsFor(geometry, hand)` — 0° or 180°, the only two ways a printed card
|
||||
* can be laid. Track is played through here like every other card; there is no separate lay
|
||||
* intent, because there is no separate supply to lay from.
|
||||
*
|
||||
* `placement` is a square in the player's Office Area; `node` indexes `division.nodes` and is for
|
||||
* the one card that goes out on the Mainline instead (ABS Signals). They are alternatives, and
|
||||
* they are SEPARATE FIELDS on purpose. A Mainline placement used to travel as the fake coordinate
|
||||
* `{ row: -1, col: node }`, and row −1 is an ordinary district row — the first one below the
|
||||
* Running Track, where most districts start. So a real placement on row −1 was labelled "out on
|
||||
* the Mainline, node −2", and an ABS Signals placement highlighted whichever district card
|
||||
* happened to sit at that column. A sentinel inside a coordinate's own value range is not a
|
||||
* sentinel.
|
||||
*/
|
||||
| { type: 'card.play'; cardId: CardId; placement?: GridCoord; variant?: number }
|
||||
| { type: 'card.play'; cardId: CardId; placement?: GridCoord; variant?: number; node?: number }
|
||||
| { type: 'card.discard'; cardId: CardId; toSlot: number }
|
||||
| { type: 'draw.end' }
|
||||
// -- freight agent (§6.3)
|
||||
@@ -108,6 +117,8 @@ export type RejectionCode =
|
||||
| 'BOX_EMPTY'
|
||||
| 'NO_SUITABLE_CAR'
|
||||
| 'SUITABLE_CAR_EXISTS'
|
||||
/** §7 — cars go onto the train being assembled at a Division Point, not onto one already running. */
|
||||
| 'NOT_BEING_MADE_UP'
|
||||
| 'WRONG_CAR_TYPE'
|
||||
| 'NOT_SUPERINTENDENT'
|
||||
| 'NO_PENDING_DECISION'
|
||||
|
||||
Reference in New Issue
Block a user