Rev 19: breaching the rim opens a new warp across the maze

Destroying a wall on the board's outer edge used to leave a one-sided
hole into nothing. The table's physics prevail: the outer rim wraps,
so the breach goes clean through — the opposite perimeter wall in the
same row or column crumbles too (collapse damage and all), and a new
warp pair opens between the two edges, shimmering at both mouths.
Rev-gated: stored games hold one-sided breaches and replay so. Sector
moves recompute the wraparounds and forget improvised openings, as
the maze's own reshaping always has.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Eric Wagoner
2026-08-17 17:25:25 -04:00
co-authored by Claude Fable 5
parent 766ec0a726
commit a17b5238f0
6 changed files with 95 additions and 2 deletions
+5
View File
@@ -208,6 +208,11 @@ export function fxForEvents(
push({ kind: "portal-cell", at: e.to }, 150);
beat++;
break;
case "warpOpened":
push({ kind: "portal", cell: e.a.cell, side: e.a.side });
push({ kind: "portal", cell: e.b.cell, side: e.b.side }, 200);
beat++;
break;
case "wallCreated":
case "wallDestroyed":
push({ kind: "edge-dust", cell: e.edge.cell, side: e.edge.side });
+1 -1
View File
@@ -136,7 +136,7 @@ class LocalGame {
seed,
sets: expansion ? ["basic", "expansion1"] : ["basic"],
...(colors ? { colors } : {}),
deckRev: 18,
deckRev: 19,
};
const { state, events } = createGame(config);
for (const e of events) {
+1
View File
@@ -56,6 +56,7 @@ export function humanize(e: GameEvent): string | null {
case "stonesDestroyed": return `${e.player}'s magic stones are destroyed!`;
case "wallCreated": return `A wall appears!`;
case "wallDestroyed": return e.wasDoor ? `A door is blasted to rubble!` : `A wall crumbles!`;
case "warpOpened": return `The outer wall breaches clean through — a new warp opens across the maze!`;
case "extraTurnGranted": return `${e.player} speeds up — extra turn banked.`;
case "trapSprung": return e.cardId === "gift-from-below"
? `${e.player} draws GIFT FROM BELOW — it bites for 3, then deals again!`