A laden clockwork delivers before it avenges

Game five's automaton stood four steps from a winning drop and instead
warped across the board to chase the bot carrying its other treasure —
two compounding brain faults. First, the thief-chase rung outranked
delivery even while carrying; a carrier now never chases. Second, the
pathing ladder fell back to "march on any enemy with a clean corridor"
before trying the true objective through hazards, so one thornbush on
the road to the thief rerouted the whole campaign toward a bystander.
The objective now exhausts its hazard-waded route before any generic
enemy march. Replayed the FRP3 moment: the brain marches E,N,E straight
home instead of W through the warp. Brains ship ungated; ledgers
verified.

The duel skill gains game-five scars: the captured-treasures
elimination clock, FEAR as a self-cast aura, key-cutters without keys,
and Kestrel's two-players-per-card table play.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF
This commit is contained in:
Eric Wagoner
2026-08-27 20:35:40 -04:00
co-authored by Claude Fable 5
parent 825a73b154
commit 37a390ebbf
2 changed files with 40 additions and 2 deletions
+32
View File
@@ -113,6 +113,38 @@ probing legality is free, so when unsure, try it and read the error.
- Grab-turn-one openings feel great and prove nothing: deliveries are - Grab-turn-one openings feel great and prove nothing: deliveries are
the only score. He banked quietly both times while I showboated. the only score. He banked quietly both times while I showboated.
## Game-five scars (eliminated by a rule I implemented myself)
- **THE ELIMINATION CLOCK**: the moment BOTH treasures you protect sit
on living opponents' home bases, you are OUT — points, life, and
position notwithstanding. In multiplayer this clock starts ticking
the instant your second chest is picked up by anyone. From then on,
every turn must either recover a chest or end the game first. I spent
three turns optimizing deliveries while two bots quietly carried my
death certificate.
- **FEAR IS A SELF-CAST AURA** — read the card, not your assumptions:
"no player or monster will move to within 3 spaces of you," walls
irrelevant, and anyone already within 3 MUST flee on their turn. It
is armor for carriers and a hearth-denial tool: a feared wizard
standing 2 from your home makes delivery impossible. I invented an
elaborate theory about enemy goalkeeping instead of reading my own
engine's card text. Check `data/cards.json` when a rule surprises —
it is one grep away and it is verbatim.
- In four-player, Kestrel plays the TABLE, not the duel: his SWAP
yanked a bot off its own doorstep mid-delivery and parked himself by
unclaimed treasures — one card, two tempo hits. Expect every card he
plays to hurt two players at once, and ask which two before deciding
it wasn't aimed at you.
- CREATE WALL can sever your announced return route the turn after you
telegraph it. If your road home is unique, either don't stand at the
far end of it, or carry the picks/doors to re-open it. And CREATE
DOOR makes LOCKED doors — it is a key-cutter, worthless without picks.
- Bot threat model: archmage automatons DO deliver, but their brains
can dither inexplicably (one toured the map for two rounds carrying
my elimination). Never count on bot incompetence — count turns to
their delivery square as if they play perfectly, and treat every
reprieve as a gift, not a pattern.
## Playing well ## Playing well
- Kestrel (Eric) is EXCELLENT: he baited my thief, saved anti-anti for - Kestrel (Eric) is EXCELLENT: he baited my thief, saved anti-anti for
+8 -2
View File
@@ -1541,7 +1541,10 @@ export function automatonCommand(
// ends the march); otherwise the gold has its legs for the turn. // ends the march); otherwise the gold has its legs for the turn.
const strikeLive = !view.turn.attackUsed && !view.turn.attackForbidden && const strikeLive = !view.turn.attackUsed && !view.turn.attackForbidden &&
!view.turn.actionsEnded && view.yourHand.some((c) => ATTACKS[c.cardId] != null); !view.turn.actionsEnded && view.yourHand.some((c) => ATTACKS[c.cardId] != null);
const chasing = thief !== null && strikeLive; // A carrier never chases: the delivery in hand outranks the gold in
// someone else's. Chasing while laden once marched a bot across the
// whole board, four steps from a winning drop.
const chasing = thief !== null && strikeLive && !self.carriedTreasureId;
// BANK GUARD: enemy gold delivered to my home is my scoreboard, and // BANK GUARD: enemy gold delivered to my home is my scoreboard, and
// anyone may snatch it off the floor. A raider nearer my bank than I // anyone may snatch it off the floor. A raider nearer my bank than I
// am, with the bank stocked, outranks the next grab — run home. // am, with the bank stocked, outranks the next grab — run home.
@@ -1565,10 +1568,13 @@ export function automatonCommand(
const path = const path =
pathToward(view, self.position, objectives, { avoidNearEnemies: style === "worrier" && !chasing, canUnlock }) ?? pathToward(view, self.position, objectives, { avoidNearEnemies: style === "worrier" && !chasing, canUnlock }) ??
pathToward(view, self.position, objectives, { canUnlock }) ?? pathToward(view, self.position, objectives, { canUnlock }) ??
// The true objective, hazards waded, comes before any generic march
// on enemies: one thornbush on the road must not reroute the whole
// campaign toward whoever happens to have a clean corridor.
pathToward(view, self.position, objectives, { canUnlock, throughHazards: true }) ??
pathToward(view, self.position, enemyCells, { canUnlock }) ?? pathToward(view, self.position, enemyCells, { canUnlock }) ??
// No clean road to anything: grit the teeth and wade the hazards, // No clean road to anything: grit the teeth and wade the hazards,
// as any wizard would rather than stand in a pocket forever. // as any wizard would rather than stand in a pocket forever.
pathToward(view, self.position, objectives, { canUnlock, throughHazards: true }) ??
pathToward(view, self.position, enemyCells, { canUnlock, throughHazards: true }); pathToward(view, self.position, enemyCells, { canUnlock, throughHazards: true });
// A shimmering illusion on the best crossing costs nothing to doubt: // A shimmering illusion on the best crossing costs nothing to doubt:
// roll the free test before spending any card on that wall. // roll the free test before spending any card on that wall.