Rev 25: a bush or the ooze is attacked like a wall — POWER ATTACK counts, thrown weapons land at its foot
Older games took neither; both sides pinned. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
66b5c06f17
commit
5193b12b8e
@@ -727,11 +727,42 @@ describe("attacks aimed at a bush or the ooze", () => {
|
||||
expect(r.state.turn.attackUsed).toBe(true);
|
||||
});
|
||||
|
||||
it("a thrown dagger scratches a rosebush, and the scratch stays", () => {
|
||||
it("a thrown dagger scratches a rosebush, the scratch stays, and the dagger lies at its foot", () => {
|
||||
const { state, me, cell } = withContent("rosebush");
|
||||
const dagger = giveCard(state, me.id, "dagger");
|
||||
const next = must(state, me.id, { type: "cast", instanceId: dagger.instanceId, target: { kind: "cell", cell } });
|
||||
expect(next.squareContents[cellKey(cell)]).toEqual(expect.objectContaining({ kind: "rosebush", damage: 3 }));
|
||||
expect(next.groundObjects[cellKey(cell)]).toEqual([expect.objectContaining({ cardId: "dagger" })]);
|
||||
expect(next.discard.some((c) => c.instanceId === dagger.instanceId)).toBe(false);
|
||||
});
|
||||
|
||||
it("POWER ATTACK's bought points count against a bush, at the caster's cost", () => {
|
||||
const { state, me, cell } = withContent("thornbush");
|
||||
const rock = giveCard(state, me.id, "large-rock");
|
||||
giveCard(state, me.id, "power-attack", "PA", 1);
|
||||
const next = must(state, me.id, {
|
||||
type: "cast", instanceId: rock.instanceId, target: { kind: "cell", cell },
|
||||
powerAttackInstanceId: "power-attack#PA", powerAttackPoints: 2,
|
||||
});
|
||||
expect(next.squareContents[cellKey(cell)]).toEqual(expect.objectContaining({ kind: "thornbush", damage: 4 }));
|
||||
expect(next.players.find((p) => p.id === me.id)!.life).toBe(13);
|
||||
});
|
||||
|
||||
it("older games let a thrown weapon vanish and POWER ATTACK count for nothing against a bush", () => {
|
||||
const state = toRound2(createGame({ playerIds: ["alice", "bob"], seed: 42, sets: ["basic", "expansion1"], deckRev: 24 }).state);
|
||||
const me = activePlayer(state);
|
||||
const { cell } = emptyNeighborCell(state, me.position);
|
||||
state.squareContents[cellKey(cell)] = { kind: "rosebush", damage: 0, createdBy: "bob" };
|
||||
const rock = giveCard(state, me.id, "large-rock");
|
||||
giveCard(state, me.id, "power-attack", "PA", 1);
|
||||
const next = must(state, me.id, {
|
||||
type: "cast", instanceId: rock.instanceId, target: { kind: "cell", cell },
|
||||
powerAttackInstanceId: "power-attack#PA", powerAttackPoints: 2,
|
||||
});
|
||||
expect(next.squareContents[cellKey(cell)]).toEqual(expect.objectContaining({ kind: "rosebush", damage: 2 }));
|
||||
expect(next.players.find((p) => p.id === me.id)!.life).toBe(15);
|
||||
expect(next.groundObjects[cellKey(cell)]).toBeUndefined();
|
||||
expect(next.discard.some((c) => c.instanceId === rock.instanceId)).toBe(true);
|
||||
});
|
||||
|
||||
it("only fire hurts the ooze", () => {
|
||||
|
||||
Reference in New Issue
Block a user