Oregon Trail: BucketBrigade minigame for fire, rains, and blizzards
#17 in Riparion/riparion-retro — merged 2026-06-10
What
Adds the BucketBrigade triage-against-spread minigame to minigames-kit and wires it into the four spreading-threat catastrophes in Oregon Trail:
- Fire in the wagon — stamp out the flames before they reach the supplies
- Heavy rains (below the mountains) — bail and cover the load as leaks spread
- South Pass & Blue Mountains blizzards — keep the fire fed against the wind
Each catastrophe pauses into a 5×5 grid where threats flare and spread if ignored; tapping knocks them out. resolve_brigade grades the supply/mileage loss by how much was still spreading at the buzzer — contain it for the floor, let it run for the full toll. The blizzard variant additionally runs the cold-weather illness check and falls through to the remaining pass, mirroring resolve_climb.
This retires four entries from TODO_OREGONTRAIL_MINIGAMES.md.
Design / review follow-ups
- Loss grading lives in the engine.
resolve_brigade(contained, leaked, capacity)computes severity itself;capacitynow rides back onBucketBrigadeResult, so the grid size lives in one place and the mapping is unit-tested instead of living in the UI. - Shared seed helper. Extracted the per-encounter
turn·const ^ miles ^ saltformula intoGame::encounter_seed(salt)and adopted it across the existing minigame screens (salts preserved byte-for-byte → no behavior/save change). - Fire/Rains arms deduped, dead
leakedbranch removed, per-render allocations in the component trimmed (grid_stylememoized, per-cell icon borrowed instead of cloned).
Versioning
Bumps minigames-kit and oregon-trail to 0.1.4.
Testing
cargo test -p oregon-trail→ 44 pass (incl. new brigade + normalization tests)cargo test -p minigames-kit --lib→ 35 passcargo clippyclean;cargo check --workspacegreen- Release
dx build+ browser drive: Brigade screen renders and resolves end-to-end
🤖 Generated with Claude Code
Last updated 2026-06-11
Links to this note
Merged pull requests, newest first.