A bare wand lights a single charge

'ANY CARD MAY BE PLAYED WITHOUT A NUMBER CARD, but its power is only 1.'
The wand first-use gate was the engine's one remaining missing-number
refusal — everything else already defaults its power to 1. A wand cast
bare now charges to one, fires once, and crumbles; the client hint says
so. Ungated: the refused casts never reached a ledger.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0138A8CjeQRpvzKxuMfz1Bqc
This commit is contained in:
Eric Wagoner
2026-08-18 10:47:05 -04:00
co-authored by Claude Fable 5
parent 1e5b7ee985
commit 4720ec25ff
3 changed files with 21 additions and 8 deletions
+17 -5
View File
@@ -12,11 +12,6 @@ describe("magic wands", () => {
const wand = giveCard(state, attacker, "blaster-wand");
giveCard(state, attacker, "number-2", "N", 1);
// First use without a number card is refused.
expect(applyCommand(state, attacker, {
type: "cast", instanceId: wand.instanceId, target: { kind: "player", playerId: defender },
}).ok).toBe(false);
// Charged with a 2: fires (3 damage), one charge left, wand displayed.
state = must(state, attacker, {
type: "cast", instanceId: wand.instanceId, numberInstanceIds: ["number-2#N"],
@@ -210,3 +205,20 @@ describe("dropping objects", () => {
expect(refused.ok).toBe(false);
});
});
describe("a bare wand lights a single charge", () => {
it("'played without a number card, its power is only 1': one shot, then dust", () => {
let { state } = newGame();
state = toRound2(state);
const { attacker, defender } = faceOff(state);
const bw = giveCard(state, attacker, "blaster-wand");
state = must(state, attacker, {
type: "cast", instanceId: bw.instanceId, target: { kind: "player", playerId: defender },
});
state = must(state, defender, { type: "pass" });
// The single charge fired (3 flat damage) and the wand crumbled.
expect(state.players.find((p) => p.id === defender)!.life).toBe(12);
expect(state.players.find((p) => p.id === attacker)!.hand.some((c) => c.cardId === "blaster-wand")).toBe(false);
expect(state.wandCharges[bw.instanceId]).toBeUndefined();
});
});