Correct 15 cards against photos of the actual 6e card faces
Eric spotted mismatches between the 5e-database-derived card data and his physical 6e cards (photos IMG_4688-4690). All 15 texts are now verbatim from the faces. Four were mechanical, now fixed in the engine: BLIND's 6e text adds "engage in combat" — blinded punches flail on a die roll; PICK LOCK's face states "This is not a spell" — the lock cards and thrown weapons are physical actions NO SPELL cannot silence; MIST-BODY passes doors and drifts through thornbushes but does NOT pass the maze's stone walls (was backwards); WALL OF FIRE's counteraction mode stops a Waterbolt (previously deferred). Metadata: UGLY is L.O.S.-marked, MASTER KEY is NEUTRAL/ADJACENT, WIZARDBLADE and PICK LOCK carry ADJACENT markings (new `adjacent` field), LARGE ROCK is rethrowable by any player (already engine behavior), BRAINSTONE's face has no corner type. 84 tests passing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
1924114b6d
commit
5a0003f4ce
@@ -297,14 +297,23 @@ describe("control effects", () => {
|
||||
type: "cast", instanceId: mist.instanceId, numberInstanceIds: ["number-3#N"],
|
||||
});
|
||||
|
||||
// Misted wizard walks through a wall if one is adjacent.
|
||||
const view = boardView(state);
|
||||
const d = state.players.find((p) => p.id === defender)!;
|
||||
for (const side of SIDES) {
|
||||
const k = edgeKey(d.position, side);
|
||||
if (view.edges[k] === "wall" && view.cells[cellKey(neighbor(d.position, side))]) {
|
||||
state = must(state, defender, { type: "move", direction: side });
|
||||
break;
|
||||
// Mist passes through locked DOORS but NOT the maze's stone walls.
|
||||
{
|
||||
const view = boardView(state);
|
||||
const d = state.players.find((p) => p.id === defender)!;
|
||||
const doorEntry = Object.entries(view.edges).find(([, st]) => st === "door")!;
|
||||
const [kind, coords] = doorEntry[0].split(":") as [string, string];
|
||||
const [dx, dy] = coords.split(",").map(Number) as [number, number];
|
||||
d.position = { x: dx, y: dy };
|
||||
state = must(state, defender, { type: "move", direction: kind === "V" ? "E" : "S" });
|
||||
for (const side of SIDES) {
|
||||
const k = edgeKey(state.players.find((p) => p.id === defender)!.position, side);
|
||||
const view2 = boardView(state);
|
||||
if (view2.edges[k] === "wall" &&
|
||||
view2.cells[cellKey(neighbor(state.players.find((p) => p.id === defender)!.position, side))]) {
|
||||
expect(applyCommand(state, defender, { type: "move", direction: side }).ok).toBe(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
state = must(state, defender, { type: "endTurn", draw: 0 });
|
||||
|
||||
Reference in New Issue
Block a user