Scoreboard-first thinking, the contested bank, free-angle LOS, the illusionary-attack counter rule, router-before-sprint, and Eric's meta-warfare against bot upgrades. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF
6.3 KiB
name, description
| name | description |
|---|---|
| wizwar-duel | Play Wiz-War live against Eric — join his room as a real seat, reason about every move yourself, and duel turn by turn over the websocket. Use when Eric wants a game, gives a room code, or says "let's play". |
Playing Wiz-War against Eric
You are a PLAYER, not the automaton. Read the board, reason, and choose
every command yourself. Eric plays in his browser; you play through the
CLI seat at tools/claude-seat.mjs. He prompts "go" after his moves —
each of his messages is your cue to look and act.
The seat client
Run from the repo root (needs the workspace's ws package):
node tools/claude-seat.mjs join <ROOM> Claude # take a seat (token saved)
node tools/claude-seat.mjs view # board + hand + last events
node tools/claude-seat.mjs do '<command json>' # one engine command
node tools/claude-seat.mjs chat "text" # table talk
Seat state persists in /tmp/wizwar-claude-seat.json (override:
WIZWAR_SEAT); server defaults to production (WIZWAR_SERVER to point
elsewhere). Eric creates the room, gives you the code, and starts the
game after you join.
Commands are the engine's Command union (packages/engine/src/game.ts):
{"type":"move","direction":"N|S|E|W"}, cast (with target, optional
numberInstanceIds/params), playNumberForMovement, pickUpTreasure,
dropTreasure, warpStep, counteract, pass, punch, setAmbush,
wardChoice, endTurn (with draw). A refused command costs nothing —
probing legality is free, so when unsure, try it and read the error.
Reading the map
- The renderer prints y=0 at top; y grows SOUTH. N = y-1, S = y+1.
C2is you,P1etc. are opponents,$c/$1treasures,h?homes, two-letter codes are square contents (SA safe, RO rosebush, ST stone, DU dust).Don a line is a door,—a wall, blank is open.- WARPS line lists rim passages as
2,0N→2,9: standing at (2,0) and moving N carries you to (2,9). The warp rides one specific side of its square — check which before you walk (a wrong guess burns moves; ask me how I know). - Dimensional-warp TOKENS (cast by players) are separate: stand on one
and
warpStep. Creatures usecreatureWarpStep.
Hard-won rules knowledge (each cost me something in game one)
pickUpTreasureENDS your turn's actions AND movement — arrive with the grab as your last act, never mid-plan.dropTreasureat home too.- You can pick up ANY floor treasure, including your own stolen-and- delivered one sitting on the enemy's home square. Repossession is real.
- THIEF and punches need same-square; THIEF steals a named card and fizzles (card spent) on a wrong guess.
- MENTAL FORCE moves the victim ≤3 walked spaces — walls and relocked doors shrink its reach; rev 5+ refuses impossible destinations.
- Doors relock behind you when you pass through (rev 4+). Your own escape route can seal itself — and seal pursuers out.
- LOS threads through rim warps: you can be seen (and shot) through a warp mouth from the far side of the board. Camping one square off the mouth keeps you hidden.
- lock-in-place freezes movement AND warpStep for a full turn; REUSE SPELL retrieves only your LAST cast spell, enabling one re-lock.
- An ambush (
setAmbushinterrupt/opportunity-fire + committed attack) triggers on LOS entry transitions only — someone already in sight never springs it. It survives forever and fires out of turn. - Walking-dead bleeds ½ life per space moved, permanently. Once cursed, every plan must be priced in steps.
Game-two scars (each cost me the game or nearly)
- RECOUNT THE SCOREBOARD EVERY TURN: how many treasures does each player have banked AT HOME right now? I sprinted a "winning" delivery in game two that was actually my FIRST of two — Eric had un-banked me five rounds earlier and let me monologue. Banked counts, not vibes.
- A banked treasure is NOT safe: anyone can pick it up off your home square and carry it away. Guard the bank or count it as contested.
- LOS is FREE-ANGLE center-to-center (the rulebook's rule), not rows and columns: razor diagonals threading open gaps are legal for everyone — including at you. The board draws bent/straight traces.
- ILLUSIONARY ATTACK deals its imitated spell's damage if NOT countered; ANY counteraction dispels it entirely. Counter it with the cheapest thing you hold; never "call the bluff" by passing.
- Never trust your ASCII parse of the map for multi-step plans: run a
BFS over
view.board.edges(see tools/claude-seat.mjs view JSON, or write a quick router) before spending a number card on a sprint. I burned a 7-move turn bouncing off six misread walls. - Eric counter-plays YOUR bot upgrades: he summoned a troll bodyguard specifically against the archmage's exile-the-winner instinct, and relocated MY home sector mid-carry. Expect meta-warfare.
- 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.
Playing well
- Kestrel (Eric) is EXCELLENT: he baited my thief, saved anti-anti for my full shield, and won game one with a home-to-home dimensional-warp superhighway. Infrastructure beats sprinting — watch what he builds, and consider your own wormhole early.
- Win = 2 enemy treasures delivered to your home, or last wizard alive. Track BOTH players' step-counted delivery timelines every turn; the race is decided in tempo, not damage.
- Hold counters (full-shield, absorb) for permanent curses and lethal damage. Absorb soaks 3 points; it cannot touch durations.
- OPSEC: your prose is visible to Eric. NEVER name the cards you hold or draw, and never announce plans. (Game one: I narrated my hand like a debug log until he asked why I was making it easy.) Trash talk freely — about the board, never your hand.
- Send
chatfor table talk at dramatic moments; it's half the fun.
Cadence
- On "go":
view, read HIS events since your last turn (the client prints only NEW events;viewshows a short history tail). - Think about the whole board — his timeline, yours, threats, LOS.
- Execute your commands one at a time, checking errors.
endTurnwith a draw that respects the 7-card hand limit.- Tell Eric it's his turn — reasoning aloud is fine, hand contents are not. When a stack waits on him, say so and wait for "go".