Add Santa Paravia and Fiumaccio: the 1978 city-state sim
#6 in Riparion/riparion-retro — merged 2026-06-09
A mobile-first, fully client-side WASM Dioxus port of Santa Paravia and Fiumaccio (George Blank, 1978), following the repo's conventions (NOTES.md) and modelled structurally on Dukedom.
You rule a 15th-century Italian city-state. Each year you trade grain and land, distribute grain to feed the populace (driving births, deaths, and migration), set three taxes and the severity of your justice, and invest in marketplaces, mills, palaces, and cathedrals. Rise from Sir/Lady to King/Queen to win — before a 20–55 year lifespan runs out. A sprawling, poorly-defended city invites Baron Peppone's raid.
Engine
Pure Rust, host-tested. A serialized Phase cursor walks the year (harvest → market → release → invasion → taxes → purchases → title check → year-end); the four decision phases are Mode screens and narration rides a tap-through queue, so a refresh resumes mid-year. Formulas are a faithful reimplementation of the C port (darkf/paravia), with two deliberate clean-ups:
- the natural eight-rung Sir → King title ladder (the C port's off-by-one quietly skipped Baron);
- a genuine uniform RNG (the C port's
rand()/RAND_MAXinteger-divides to ~0, collapsing its randomness).
Shared widgets extracted to retro-kit
ErrorBanner(was duplicated in dukedom) →retro_kit::components::error_bannerSegButton(dukedom's inline buy/sell toggle + this game's market/new-game selectors) →retro_kit::components::seg_button
Version bumps per NOTES.md: retro-kit 0.1.1 → 0.1.2, dukedom 0.1.0 → 0.1.1 (santa-paravia is a brand-new crate at 0.1.0).
Verification
cargo test— 10 santa-paravia tests incl. exact-spec revenue numbers and a 160-reign multi-seed smoke test; full workspace green.cargo clippy --all-targets— zero warnings.- Driven in a real browser at 390×844: full playthrough, save/resume, and the win path end-to-end (no console errors).
dx build --release+ static-bundle smoke (only the benign favicon 404).- PWA icon set + in-game screenshot shipped; both READMEs wired.
🤖 Generated with Claude Code
Last updated 2026-06-10
Links to this note
Merged pull requests, newest first.