Rev 22: TELEPORT crosses the maze's outer edge anywhere
A teleporter ignores walls, and the outer edge is no more than a wall to it: a line leaving the maze at any square's edge re-enters at the opposite edge on the same row or column, one space on. The lettered openings connect as they always did. Older games crossed the edge only at the openings, and replay so; U3U2, dealt at rev 21 with no teleport yet cast, was re-stamped to 22 at its table's request. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
7a6aa3d2a1
commit
803c51415e
@@ -6,6 +6,7 @@ import { neighbor, SIDES, edgeKey, sightBetween, bentSightThroughGap, traceSight
|
||||
import { cardDef, type CardInstance } from "./cards";
|
||||
import {
|
||||
boardView,
|
||||
edgeReentry,
|
||||
LOS_BLOCKING_CONTENT,
|
||||
type AmbushState,
|
||||
type CastStack,
|
||||
@@ -530,8 +531,13 @@ export function eligibleCellsFor(view: GameView, cardId: string, bentCorner = fa
|
||||
let n = neighbor(cur, side);
|
||||
if (!view.board.cells[key(n.x, n.y)]) {
|
||||
const w = view.board.warps.find((w) => w.from.cell.x === cur.x && w.from.cell.y === cur.y && w.from.side === side);
|
||||
if (!w) continue;
|
||||
n = w.to.cell;
|
||||
if (w) n = w.to.cell;
|
||||
else if (view.deckRev >= 22) {
|
||||
// Rev 22: the outer edge is no more than a wall to a teleporter.
|
||||
const back = edgeReentry(view.board, cur, side);
|
||||
if (!back) continue;
|
||||
n = back;
|
||||
} else continue;
|
||||
}
|
||||
const nk = key(n.x, n.y);
|
||||
if (dist.has(nk)) continue;
|
||||
|
||||
Reference in New Issue
Block a user