From 4c7633097b658388a487c15d2736c7678cd2e02b Mon Sep 17 00:00:00 2001 From: Eric Wagoner Date: Wed, 26 Aug 2026 10:58:59 -0400 Subject: [PATCH] The seat client sees wormholes; the skill records defeat three MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Kestrel has won two of three duels through dimensional-warp tokens the ASCII view never rendered — a !! line now names every token pair. The skill's game-three scars: never lead the attack against him, destroy walls from range, and count deliveries, not flourishes. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF --- .claude/skills/wizwar-duel/SKILL.md | 19 +++++++++++++++++++ tools/claude-seat.mjs | 4 ++++ 2 files changed, 23 insertions(+) diff --git a/.claude/skills/wizwar-duel/SKILL.md b/.claude/skills/wizwar-duel/SKILL.md index c04df1a..5141d5f 100644 --- a/.claude/skills/wizwar-duel/SKILL.md +++ b/.claude/skills/wizwar-duel/SKILL.md @@ -93,6 +93,25 @@ probing legality is free, so when unsure, try it and read the error. - In 4p with automatons: the bots are chaos agents — they stun, exile, disease, and con. Herd them at Eric; never assume they're on script. +## Game-three scars (lost in four rounds) + +- **CHECK `dimWarps` EVERY SINGLE VIEW** — Kestrel has won two games + with quietly-placed wormholes ending beside his home. The client now + prints a !! line for them; treat any new token pair as a five-alarm + fire and recompute both players' delivery distances through it. +- **Never lead the attack against Kestrel.** Three games, three saved + counters sprung at the perfect moment (anti-anti, full-shield bait, + full-reflection held three rounds for my lightning). Force his + counters out with throwaways or positional threats before committing + a real spell; his patience is perfect and he telegraphs nothing. +- DESTROY WALL showers the ADJACENT caster with rubble (4 damage) — + cast it from range, never on your own square's edge. +- Wading a rosebush costs 3. A reflected LIGHTNING BLAST still stuns + its caster even at 1 reflected damage — the stun is the payload, and + a lost turn against Kestrel is a lost game. +- Grab-turn-one openings feel great and prove nothing: deliveries are + the only score. He banked quietly both times while I showboated. + ## Playing well - Kestrel (Eric) is EXCELLENT: he baited my thief, saved anti-anti for diff --git a/tools/claude-seat.mjs b/tools/claude-seat.mjs index 2fd3ec0..289ea65 100644 --- a/tools/claude-seat.mjs +++ b/tools/claude-seat.mjs @@ -72,6 +72,10 @@ function renderView(v) { out.push(`ROOM ${seat?.roomId} — you are ${v.you} (round ${v.turn.round}, ${v.activePlayerId}'s turn)`); out.push(lines.join("\n")); out.push("WARPS (rim passages): " + B.warps.map((w) => `${cellK(w.from.cell)}${w.from.side}→${cellK(w.to.cell)}`).join(" ")); + if (v.dimWarps.length) { + out.push("!! DIMENSIONAL WARP TOKENS (player wormholes — CHECK EVERY TURN): " + + v.dimWarps.map((w) => `${cellK(w.a)}↔${cellK(w.b)}`).join(" ")); + } for (const p of v.players) { const t = p.carriedTreasureId ? " CARRYING TREASURE" : ""; out.push(` ${p.id === v.you ? "ME " : " "}${p.id}: ${p.life} life @${cellK(p.position)} home@${cellK(p.home)} hand:${p.handCount}${t}${p.alive ? "" : " DEAD"} displayed:[${p.displayed.map((c) => c.cardId).join(",")}]`);