fix: module 10 review round 1 (module-local SpellGrid cards, cast target check, CLI without panic hook)
- SpellGrid cards move to course/10-spellgrid/cards; start-module and verify-references stage course/cards plus module-local cards up to the module, so M5-M9 workspaces get exactly the pre-M10 card set. - cast() rejects a chosen-target spell without a target (checkCast/checkPlay); new test_10_targeted_spell_needs_target. - Rust CLI pre-validates instead of swapping the global panic hook. - Catalog: CRIER noun; DEATHRATTLE/BATTLECRY note on lexicon vs catalog role. - Lesson: design note on mid-movement reparse. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a0cf9be214
commit
6f576940b7
34 files changed
+295
-79
No files matched your search
@@ -206,6 +206,21 @@ test("test_10_spawned_text_triggers_reparse", () => {
|
||||
expect(g.won()).toBe(true);
|
||||
});
|
||||
|
||||
test("test_10_targeted_spell_needs_target", () => {
|
||||
const g = newSpellGrid(level(3, 1, { cards: [["Bramble Wall", 0, 0]], hand: ["Spark"] }), []);
|
||||
const bramble = minion(g, 0, 0);
|
||||
|
||||
expect(() => g.cast("Spark")).toThrow();
|
||||
|
||||
expect(g.hand()).toEqual(["Spark"]);
|
||||
expect(g.health(bramble)).toBe(3);
|
||||
|
||||
g.cast("Spark", bramble);
|
||||
|
||||
expect(g.health(bramble)).toBe(2);
|
||||
expect(g.hand()).toEqual([]);
|
||||
});
|
||||
|
||||
test("test_10_level_1_solution", () => {
|
||||
const g = newSpellGrid(l1 as LevelDef, []);
|
||||
const keg = minion(g, 0, 4);
|
||||
|
||||
Reference in new issue
Block a user