Oregon Trail: route snakebite, river ford, and ox-leg through SteadyHands
#16 in Riparion/riparion-retro — merged 2026-06-10
Summary
Wires the SteadyHands precision-trace minigame into three Oregon Trail catastrophes that were still pure stat hits in do_event. Each is about holding a hand steady under strain over a span of time, which fits SteadyHands and is distinct from the existing minigames (TimingBar = one clean instant, CrowdThreading = trace a route, QuickDraw = reaction speed). Follows the established Splint/Dose begin_*/resolve_*/screen pattern.
Event (do_event idx) |
SteadyHands fantasy | Loss, graded by accuracy |
|---|---|---|
| Poisonous snakebite (11) | hold the blade steady to draw the venom | bullets −10; misc −= 5 + 6·drift; death if misc < 0 — a steady hand saves the medicine that keeps you alive |
| Wagon swamped fording a river (12) | hold the wagon level against the current | food −30, clothing −20; miles −= 8 + 24·drift |
| Ox injures its leg (2) | hold the leg steady while wrapping it | oxen −20; miles −= 8 + 24·drift |
Changes
- Engine —
Mode::Steady;SteadyTask { Snakebite, Ford, OxLeg }+pending_steady;begin_steady/resolve_steady; the threedo_eventarms now pause into the minigame. - UI — new
screens/steady.rswrapper (per-task prompt/difficulty, salted per-encounter seed),app.rsdispatch,screens/mod.rs, and thesteady_handscargo feature. - Tests — seed-sweep launch of all three tasks, steady-vs-shaky cost, snakebite survive-vs-die, stale-double-tap guard;
playdriver updated. 38 engine tests pass; workspace checks clean. - Docs — checks the three off in
TODO_OREGONTRAIL_MINIGAMES.md.
Note
The river ford previously consumed one rng.uniform() for its miles roll; grading by accuracy instead drops that draw, shifting the RNG stream for later same-fortnight events — the same kind of change the Splint/Fog/Climb conversions already made. Snakebite and ox-leg draw no rng, so their streams are undisturbed.
🤖 Generated with Claude Code
Last updated 2026-06-10
Links to this note
Merged pull requests, newest first.