Rev 7: sight passes only through the aisle warps
The cards settle what the morning's feature got wrong. DIMENSIONAL WARP: "There is no L.O.S. through the warp." The AUTO WARP: "for all purposes, treat the connected board edges as though they are adjacent" — an explicit grant, for edges that physically meet at a corner. The lettered wraparounds get no grant at all: their rule is about walking. So the pattern is that warps carry movement, not sight, unless the text says otherwise — and only the aisle corners say otherwise. Warps now carry an aisle flag (the 3-player AUTO WARP and the 5-player corner arcs); hasWarpLineOfSight honors only those, with the adjacency geometry — diagonals through the corner mouth — unchanged from this morning where it rightfully applies. Games begun before rev 7 keep the wider sight their logged commands were validated against, via a legacy flag boardView stamps from the game's rules revision. Tests pin all three states: lettered mouths see nothing, aisle mouths see the corner fan, legacy games see everything they used to. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
8af8962330
commit
493f3bc567
@@ -68,7 +68,7 @@ export function setupBoard(playerCount: number, rng: RngState): SetupResult {
|
||||
];
|
||||
const board = assembleBoard(placements, {
|
||||
warpPairs: [
|
||||
[{ sector: 0, side: "W" }, { sector: 1, side: "N" }], // AUTO WARP corner
|
||||
[{ sector: 0, side: "W" }, { sector: 1, side: "N" }, "aisle"], // AUTO WARP corner
|
||||
[{ sector: 0, side: "N" }, { sector: 2, side: "S" }],
|
||||
[{ sector: 1, side: "W" }, { sector: 2, side: "E" }],
|
||||
[{ sector: 0, side: "E" }, { sector: 1, side: "S" }],
|
||||
@@ -106,10 +106,10 @@ export function setupBoard(playerCount: number, rng: RngState): SetupResult {
|
||||
warpPairs: [
|
||||
[{ sector: 0, side: "N" }, { sector: 4, side: "S" }], // tip to tip
|
||||
[{ sector: 1, side: "W" }, { sector: 3, side: "E" }],
|
||||
[{ sector: 0, side: "W" }, { sector: 1, side: "N" }], // aisle-warp corners
|
||||
[{ sector: 0, side: "E" }, { sector: 3, side: "N" }],
|
||||
[{ sector: 4, side: "W" }, { sector: 1, side: "S" }],
|
||||
[{ sector: 4, side: "E" }, { sector: 3, side: "S" }],
|
||||
[{ sector: 0, side: "W" }, { sector: 1, side: "N" }, "aisle"], // aisle-warp corners
|
||||
[{ sector: 0, side: "E" }, { sector: 3, side: "N" }, "aisle"],
|
||||
[{ sector: 4, side: "W" }, { sector: 1, side: "S" }, "aisle"],
|
||||
[{ sector: 4, side: "E" }, { sector: 3, side: "S" }, "aisle"],
|
||||
],
|
||||
});
|
||||
return { board, rng: rngN };
|
||||
|
||||
Reference in New Issue
Block a user