Fix parking trains, freight deadlock, and Whistle Post lock-in

This commit is contained in:
Jesse
2026-07-31 15:09:16 -04:00
parent b085d5a0bb
commit d261ad7af8
15 changed files with 577 additions and 121 deletions
+14
View File
@@ -198,6 +198,15 @@ export type CrewTray = {
/** ORDERED, left-to-right. Max 4 including any caboose (§A.4). */
consist: RollingStock[];
direction: Direction;
/**
* Which way the engine points, as an actual port on the card beneath it.
*
* NOT derivable from `direction`, which only has east and west: a crew standing on a north-south
* spur points north or south, and deriving 'e'/'w' gave it an exit port the card does not have —
* so it had no legal moves at all and was stranded permanently. Left optional so a tray placed
* without one falls back to `direction`.
*/
facing?: 'n' | 's' | 'e' | 'w';
position: NodeRef;
movesUsed: number;
};
@@ -221,6 +230,11 @@ export type DivisionNode =
absSignals?: boolean;
/** Brakeman / Airbrakes / Helpers / Realignment laid on this card. */
modifiers?: string[];
/**
* Which way a train is travelling when it climbs. The Heavy Grade card prints "(Up)" and
* "Player sets orientation", so the direction is chosen when the card is placed.
*/
gradeUp?: Direction;
/** Red Flags protecting a stopped train here, by tray. */
redFlagged?: TrayId[];
}