A warp mouth is a wallable line — and the tunnel seals whole

Create Wall refused the board-edge openings: no far cell, so "walls
must be created between two spaces". But bricking over a lettered
opening is a classic play, and the far space is the tunnel itself.
A warp mouth now counts as wallable — with the wall raised at BOTH
mouths, since a tunnel has one passage: no walking in from the far
board, no warp sight through a sealed pair, and tearing down either
end reopens both. The client grows edge hitboxes at the perimeter
mouths so the line is clickable at all.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Eric Wagoner
2026-08-17 17:22:49 -04:00
co-authored by Claude Fable 5
parent bed7d849eb
commit 766ec0a726
4 changed files with 87 additions and 2 deletions
+3
View File
@@ -372,6 +372,9 @@ export function hasWarpLineOfSight(
// A filled mouth chokes the tunnel unless the viewer/target IS the mouth.
if (blockedCells?.[cellKey(mouthA)] && cellKey(from) !== cellKey(mouthA)) continue;
if (blockedCells?.[cellKey(mouthB)] && cellKey(to) !== cellKey(mouthB)) continue;
// A wall built over either mouth seals the tunnel to sight entirely.
if (edgeState(board, mouthA, sideA) !== "open") continue;
if (edgeState(board, mouthB, w.to.side) !== "open") continue;
// Rotation taking the far board's inward direction onto sideA.
const u = DIR[inward], v = DIR[sideA];