Applying a Damage to one target now runs DAMAGE_STEPS = [redirect, armor]
first. A damageRedirect aura (Bolf Ramshield, fetched from the wiki) sends
damage meant for its owner's hero to the oldest such minion; Armor absorbs
damage to a hero before Health, logged as the new ArmorLost{player, amount}
just before a full-amount Damaged. Four new Module 4 tests; propagated to the
references of Modules 4-10 in both tracks; card schema, catalog, card JSON,
harness.md, Lessons 2, 4 and 5 updated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Module 4 Expansion Drop: Brann Bronzebeard
The lesson's 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).
- Tests:
tests/rust/test_04x.rsandtests/ts/test_04x.test.ts. Copy the one for your track into your workspace'stests/. - Reference answer:
solution/rust/src/content/mod.rsandsolution/ts/src/content/index.ts. Each is the Module 4 reference content with one card added. Nothing undersrc/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 undersrc/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:
newGamewith a deck of 5Test Fillerfor player 0. SummonBrann Bronzebeardfor player 0 (id B). AddNovice Engineer("Battlecry: Draw a card.") to player 0's hand (id E). CallclearLog(). - 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].