BIG MAN pushes around corners; at a fork the pushed wizard chooses
Eric, a giant on his first turn, could only shove a wizard in a straight line: the engine shoved in the giant's own direction or refused. The FAQ says otherwise — "If Big Man pushes someone to an intersection, then the other player gets to decide which direction to go." Now a pushed wizard leaves by any open side but the way the giant came. One open side is taken. Several are theirs to choose: the stride hangs in a pushPending window like the Ward's, the pushed wizard answers with pushChoice (a dialog offers the ways; an automaton steps out of the giant's line), and the stride resumes with the answer — a blinded giant's roll is not rolled twice. Rounding a corner was a refusal before, so every game may do it now. Only the case that used to resolve — straight ahead open — keeps its old reading in games dealt before rev 15; from rev 15 the pushed wizard chooses there too. Tests pin the corner, the fork's window and its refusals, and the older reading; 84 ledgers replay. 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
c6913ea1bc
commit
e724267b0a
@@ -395,6 +395,7 @@ function actingSeat(room: Room): PlayerId | null {
|
||||
if (!s || s.phase !== "playing") return null;
|
||||
return (
|
||||
s.wardPending?.ownerId ??
|
||||
s.pushPending?.pusheeId ??
|
||||
s.slowDeathPending?.playerId ??
|
||||
s.stack?.waitingOn ??
|
||||
s.pendingDiscard ??
|
||||
@@ -466,11 +467,12 @@ function turnFacts(s: GameState | null): {
|
||||
waitKind: "counteract" | "discard" | "interrupt" | null;
|
||||
} {
|
||||
const active = s && s.phase === "playing" ? s.players[s.turn.activeIndex]!.id : null;
|
||||
const waitingOn = s?.wardPending?.ownerId ?? s?.slowDeathPending?.playerId ??
|
||||
const waitingOn = s?.wardPending?.ownerId ?? s?.pushPending?.pusheeId ?? s?.slowDeathPending?.playerId ??
|
||||
s?.stack?.waitingOn ?? s?.pendingDiscard ?? s?.chaosPending?.queue[0] ??
|
||||
s?.outOfTurnWindow?.playerId ?? null;
|
||||
const waitKind = s == null ? null
|
||||
: s.wardPending != null ? "counteract" as const
|
||||
: s.pushPending != null ? "counteract" as const
|
||||
: s.slowDeathPending != null ? "counteract" as const
|
||||
: s.stack?.waitingOn != null ? "counteract" as const
|
||||
: s.pendingDiscard != null ? "discard" as const
|
||||
|
||||
Reference in New Issue
Block a user