Files
systemic-game-design-course/course/04-interceptors/expansion/README.md
T
Lucas WintherandClaude Opus 5.5 bcdaca0cd2 feat: module 04 interceptors
Trigger multipliers as aura data on cards, snapshotted by an Aura Update
(Other) after each Death Creation Step and on summon, and applied by one
generic routine (activations) when each queued trigger starts. Baron
Rivendare is content only (stacking "max"); Brann Bronzebeard is the
content-only Expansion Drop. Adds play (now required) and Battlecry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 02:54:37 +01:00

22 lines
1.8 KiB
Markdown

# Module 4 Expansion Drop: Brann Bronzebeard
The lesson's [Expansion Drop](../lesson.md#expansion-drop) beat explains the task. This file holds the scenario, the test locations and the check.
- Card: Brann Bronzebeard, 3-mana 2/4, "Your Battlecries trigger twice." ([Brann Bronzebeard, hearthstone.wiki.gg](https://hearthstone.wiki.gg/wiki/Brann_Bronzebeard)).
- Tests: `tests/rust/test_04x.rs` and `tests/ts/test_04x.test.ts`. Copy the one for your track into your workspace's `tests/`.
- Reference answer: `solution/rust/src/content/mod.rs` and `solution/ts/src/content/index.ts`. Each is the Module 4 reference content with one card added. Nothing under `src/engine/` changes, and neither does the harness.
- Check: commit your workspace before you start, then run `node tools/expansion-check.mjs <your-workspace> <that-commit>` from the course repository. It fails if any file under `src/engine/` changed.
The reference gives Brann the same stacking policy as Baron Rivendare (`"max"`). The course's sources don't state how two Branns combine, and this test uses one Brann, so the choice isn't checked.
## Scenario
### test_04x_brann_doubles_battlecry
- Setup: `newGame` with a deck of 5 `Test Filler` for player 0. Summon `Brann Bronzebeard` for player 0 (id B). Add `Novice Engineer` ("Battlecry: Draw a card.") to player 0's hand (id E). Call `clearLog()`.
- Action: `play(E)`.
- Assertions:
- `hand(0)` has 2 cards; call them C1 and C2, in hand order.
- The log is exactly, in this order: `Summoned{id: E}`, `Triggered{source: E, trigger: "battlecry"}`, `Drew{player: 0, id: C1}`, `Triggered{source: E, trigger: "battlecry"}`, `Drew{player: 0, id: C2}`. The Battlecry is queued once and activates twice back to back, exactly as a Deathrattle does under Baron Rivendare.
- `board(0)` is `[B, E]`.