# Module 10 Expansion Drop: BATTLECRY IS DOUBLE The lesson's [Expansion Drop](../lesson.md#expansion-drop) beat explains the task. This file holds the scenario, the test locations and the check. - Word: `BATTLECRY`, a noun that names a trigger, as `DEATHRATTLE` does. With it, `BATTLECRY IS DOUBLE` written on the grid makes every Battlecry trigger twice, like Brann Bronzebeard ("Your Battlecries trigger twice.", Module 4). - Card: Town Crier, a SpellGrid card that is already in `course/10-spellgrid/cards/`, the module's own cards (`"game": "spellgrid"`): a 1-cost 1/1 minion, noun `CRIER`, "Battlecry: Deal 1 damage to the enemy hero." - Tests: `tests/rust/test_10x.rs` and `tests/ts/test_10x.test.ts`. Copy the one for your track into your workspace's `tests/`. - Reference answer, two data files and no code: - `solution/words.json`: the Module 10 reference's `src/content/words.json` with one entry added, `{ "name": "BATTLECRY", "role": "noun" }`. - `solution/seams.json`: the Module 10 reference's `src/content/seams.json` with one entry added to `triggerWords`, `"BATTLECRY": "battlecry"`. - Nothing under `src/engine/` changes, and neither does the harness. The seam compiles any trigger word joined to any multiplier word; Module 4's one `activations` routine already multiplies Battlecries. - Check: commit your workspace before you start, then run `node tools/expansion-check.mjs ` from the course repository. It fails if any file under `src/engine/` changed. ## Scenario ### test_10x_battlecry_is_double - Setup: `newSpellGrid` with a level 5 wide and 3 high holding `BATTLECRY (0,0) IS (1,0) DOUBLE (2,0)`, no cards on the grid, and hand `["Town Crier"]`. - Assertions 1: `activeRules()` contains `"BATTLECRY IS DOUBLE"`. - Action: `clearLog()`, then `play("Town Crier", 0, 2)`, returning `crier`. - Assertions 2: - The log holds exactly two `Triggered { source: crier, trigger: "battlecry" }`. - `health(hero(1))` is 28: two Battlecries of 1 damage each. - `kindsAt(0,2)` is `["crier"]`: the minion entered the grid as its card's noun. Before the drop the lexicon doesn't know `BATTLECRY`, so the text spells no rule, and the first assertion fails. (Without that assertion the Battlecry would trigger once and the hero would have 29 Health.)