Automatons wield Pass Through Wall and deny roads with terrain
Pass Through Wall joins the march: the bot banks a crossing when stepping through one wall beats the walk by 4+ steps (or no road exists), walks to the chosen wall, and spends the charge stepping through. passWallCharges is now in PlayerPublicView — the cast is public at a physical table. Path denial for guardGold tiers: when an enemy carries the bot's treasure toward home, or closes on its gold on the floor, the bot reconstructs the threat's shortest path and prices every corridor line and empty square on it; CREATE WALL, FILL SQUARE WITH STONE, or THORNBUSH lands wherever the detour costs the enemy 3+ steps, legality mirrored from the engine (sighted, empty, off homes and warp tokens). All five cards leave the bottom discard tier (2 -> 6). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0138A8CjeQRpvzKxuMfz1Bqc
This commit is contained in:
co-authored by
Claude Fable 5
parent
2d53ba4bc0
commit
78085e26fb
@@ -28,6 +28,8 @@ export interface PlayerPublicView {
|
||||
carriedTreasureId: string | null;
|
||||
lostTurns: number;
|
||||
extraTurns: number;
|
||||
/** Banked PASS THROUGH WALL crossings — cast openly, so public knowledge. */
|
||||
passWallCharges: number;
|
||||
displayed: CardInstance[];
|
||||
/** Which of the six physical wizard colors this player plays. */
|
||||
colorIndex: number;
|
||||
@@ -118,6 +120,7 @@ export function viewFor(state: GameState, playerId: PlayerId): GameView {
|
||||
carriedTreasureId: p.carriedTreasureId,
|
||||
lostTurns: p.lostTurns,
|
||||
extraTurns: p.extraTurns,
|
||||
passWallCharges: p.passWallCharges,
|
||||
displayed: p.hand.filter((c) => p.displayed.includes(c.instanceId)),
|
||||
})),
|
||||
yourHand: you ? [...you.hand] : [],
|
||||
|
||||
Reference in New Issue
Block a user