X22 is the PeeDee, which picks up empty cars in a sweep. Cool. So I had a second train in the station and I moved it out of the way so X22 could dump its caboose way out east, then run around to pick up two unloaded hopper cars from the power plant. This I did. But when I went to couple up to the caboose and finish the job, guess what? Wouldn't couple up. Wouldn't let me select the eastern limit square.
Why?
Because I think the program sees the caboose as a "loaded" car and won't let me pick it up.
X22 is the PeeDee, which picks up empty cars in a sweep. Cool. So I had a second train in the station and I moved it out of the way so X22 could dump its caboose way out east, then run around to pick up two unloaded hopper cars from the power plant. This I did. But when I went to couple up to the caboose and finish the job, guess what? Wouldn't couple up. Wouldn't let me select the eastern limit square.
Why?
Because I think the program sees the caboose as a "loaded" car and won't let me pick it up.
Claude says: your guess is right, confirmed in the source. pickUpEmptiesOnly rejects any car with loaded: true, and ROLLING_STOCK_SUPPLY mints all six cabooses as { loaded: 6, empty: 0 }. X22 can never couple a caboose, including its own. The fix is to exempt cabooses from the empties test, not to change the supply table — the loaded/empty split is doubling as a piece count.
Claude says: your guess is right, confirmed in the source. pickUpEmptiesOnly rejects any car with loaded: true, and ROLLING_STOCK_SUPPLY mints all six cabooses as { loaded: 6, empty: 0 }. X22 can never couple a caboose, including its own. The fix is to exempt cabooses from the empties test, not to change the supply table — the loaded/empty split is doubling as a piece count.
Confirmed — your guess is exactly right, and it is a data bug, not a rules one.
X22's restriction is enforced here (src/engine/apply.ts:780):
if (rules.pickUpEmptiesOnly && fresh.some((c) => c.loaded)) return 'EMPTIES_ONLY';
And every caboose in the game is minted loaded (ROLLING_STOCK_SUPPLY, src/engine/content.ts:955):
{ type: 'caboose', loaded: 6, empty: 0 },
There are six cabooses and zero empty ones, because §2.2's "a coloured car is loaded, a white car is empty" is being used to count pieces — a caboose has no white version, so the supply table records all six on the loaded side. Which means the empties-only test sees loaded: true on every caboose and refuses it.
Consequence: X22 can never couple a caboose at all — including the one it started with. Drop it and it is stranded. That is why the eastern Limit square would not select: the move existed, but the pick-up it implied was illegal, so the button was never offered.
The fix is to make the empties-only test ignore cabooses rather than to flip the supply table — "may only pick up MTs" is about freight cars, and the supply's loaded/empty split is doing double duty as a piece count that other code depends on.
Nicely diagnosed from the table.
**Confirmed — your guess is exactly right, and it is a data bug, not a rules one.**
X22's restriction is enforced here (`src/engine/apply.ts:780`):
```
if (rules.pickUpEmptiesOnly && fresh.some((c) => c.loaded)) return 'EMPTIES_ONLY';
```
And every caboose in the game is minted loaded (`ROLLING_STOCK_SUPPLY`, `src/engine/content.ts:955`):
```
{ type: 'caboose', loaded: 6, empty: 0 },
```
There are six cabooses and zero empty ones, because §2.2's "a coloured car is loaded, a white car is empty" is being used to count *pieces* — a caboose has no white version, so the supply table records all six on the loaded side. Which means the empties-only test sees `loaded: true` on every caboose and refuses it.
**Consequence: X22 can never couple a caboose at all — including the one it started with.** Drop it and it is stranded. That is why the eastern Limit square would not select: the move existed, but the pick-up it implied was illegal, so the button was never offered.
The fix is to make the empties-only test ignore cabooses rather than to flip the supply table — "may only pick up MTs" is about *freight* cars, and the supply's loaded/empty split is doing double duty as a piece count that other code depends on.
Nicely diagnosed from the table.
Fixed in v0.7.1 (4414476) and ported to the playtest line as v0.4.9g (9735468).
Your diagnosis was right: the program did see the caboose as loaded. All six cabooses are minted loaded: true, because §2.2's "a coloured car is loaded, a white car is empty" is doing double duty
in the supply table as a piece count, and there is no white caboose to make a train up from. So the
flag carries two meanings, and exactly one place read the wrong one — the empties-only check.
A caboose carries the crew, not freight, so it is never a load. The restriction itself is untouched:
a loaded car sitting alongside the caboose still refuses. And the card now says so out loud —
"EMPTIES ONLY — it may not couple a loaded car. A caboose is not a load." — because reading
"EMPTIES ONLY" gave you no way to know which reading the game had taken.
Worth noting this made X22 Pee-Dee unplayable rather than merely restricted: set the caboose out at
the end of a sweep and the train could never pick it up again.
Fixed in **v0.7.1** (`4414476`) and ported to the playtest line as **v0.4.9g** (`9735468`).
Your diagnosis was right: the program did see the caboose as loaded. All six cabooses are minted
`loaded: true`, because §2.2's "a coloured car is loaded, a white car is empty" is doing double duty
in the supply table as a *piece count*, and there is no white caboose to make a train up from. So the
flag carries two meanings, and exactly one place read the wrong one — the empties-only check.
A caboose carries the crew, not freight, so it is never a load. The restriction itself is untouched:
a loaded car sitting alongside the caboose still refuses. And the card now says so out loud —
"EMPTIES ONLY — it may not couple a loaded car. **A caboose is not a load.**" — because reading
"EMPTIES ONLY" gave you no way to know which reading the game had taken.
Worth noting this made X22 Pee-Dee *unplayable* rather than merely restricted: set the caboose out at
the end of a sweep and the train could never pick it up again.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
X22 is the PeeDee, which picks up empty cars in a sweep. Cool. So I had a second train in the station and I moved it out of the way so X22 could dump its caboose way out east, then run around to pick up two unloaded hopper cars from the power plant. This I did. But when I went to couple up to the caboose and finish the job, guess what? Wouldn't couple up. Wouldn't let me select the eastern limit square.
Why?
Because I think the program sees the caboose as a "loaded" car and won't let me pick it up.
Claude says: your guess is right, confirmed in the source. pickUpEmptiesOnly rejects any car with loaded: true, and ROLLING_STOCK_SUPPLY mints all six cabooses as { loaded: 6, empty: 0 }. X22 can never couple a caboose, including its own. The fix is to exempt cabooses from the empties test, not to change the supply table — the loaded/empty split is doubling as a piece count.
Confirmed — your guess is exactly right, and it is a data bug, not a rules one.
X22's restriction is enforced here (
src/engine/apply.ts:780):And every caboose in the game is minted loaded (
ROLLING_STOCK_SUPPLY,src/engine/content.ts:955):There are six cabooses and zero empty ones, because §2.2's "a coloured car is loaded, a white car is empty" is being used to count pieces — a caboose has no white version, so the supply table records all six on the loaded side. Which means the empties-only test sees
loaded: trueon every caboose and refuses it.Consequence: X22 can never couple a caboose at all — including the one it started with. Drop it and it is stranded. That is why the eastern Limit square would not select: the move existed, but the pick-up it implied was illegal, so the button was never offered.
The fix is to make the empties-only test ignore cabooses rather than to flip the supply table — "may only pick up MTs" is about freight cars, and the supply's loaded/empty split is doing double duty as a piece count that other code depends on.
Nicely diagnosed from the table.
Fixed in v0.7.1 (
4414476) and ported to the playtest line as v0.4.9g (9735468).Your diagnosis was right: the program did see the caboose as loaded. All six cabooses are minted
loaded: true, because §2.2's "a coloured car is loaded, a white car is empty" is doing double dutyin the supply table as a piece count, and there is no white caboose to make a train up from. So the
flag carries two meanings, and exactly one place read the wrong one — the empties-only check.
A caboose carries the crew, not freight, so it is never a load. The restriction itself is untouched:
a loaded car sitting alongside the caboose still refuses. And the card now says so out loud —
"EMPTIES ONLY — it may not couple a loaded car. A caboose is not a load." — because reading
"EMPTIES ONLY" gave you no way to know which reading the game had taken.
Worth noting this made X22 Pee-Dee unplayable rather than merely restricted: set the caboose out at
the end of a sweep and the train could never pick it up again.