kaintuck: boat hull-damage & repair system
kaintuck: boat hull-damage & repair system
#47 in Riparion/riparion-retro — merged 2026-06-13
Summary
Adds a persistent hull-damage stat to the kaintuck flatboat that river hazards accumulate and the player must manage.
Damage has four teeth:
- Sinks her at 100 — game over (
BoatWrecked). - Worse hazard outcomes — a battered hull adds to every river mishap's severity drift.
- Cargo seepage — leaks cargo each leg above a threshold.
- Lower salvage — discounts the Natchez lumber cash-out.
Two ways to repair:
- Boatwright at Louisville/Memphis — mends her whole for a damage-scaled fee.
- Self-repair at any landing — the
Sequenceminigame (length scaled to severity) at the cost of days lying up + a moored-hazard roll. Perfect → full, slip → proportional, bomb → worse (and can sink her).
Implementation
Built on the data-driven trail-kit seams:
- New
Effect::AdjustBoatDamagewith a default-emptyEffectTargethook, so fort-nash (its own effect module) is unaffected. - A
RepairParamsscenario block (boatyards, costs, seepage/drift coeffs, self-repair tuning, moored-hazard table). - All hull mutations funnel through one
Game::adjust_boat_damagechokepoint owning the clamp + wreck-at-100 rule.
Tests
- 11 new unit tests (damage from hazards, wreck-at-100 via effect and bomb paths, seepage, port repair + gating, self-repair perfect/partial/bomb, length scaling, salvage haircut) + a damage invariant.
- Golden trace re-blessed for the new river-outcome damage effects + per-leg seepage (a real behavior change).
- kaintuck 61 / fort-nash 53 / trail-kit all pass.
Incorporates fixes from a self-review pass (payout/display match, single-chokepoint wreck rule, banter-while-docked, engine-owned sequence length, units-based seepage notice, effect ordering).
🤖 Generated with Claude Code
Last updated 2026-06-14
Links to this note
Credits
Merged pull requests, newest first.