Bugs found by playing the game over the bus:
- hotspots now have positions: 'walk to precinct door' pathfinds there,
and touch verbs walk over to hotspots like they do to props/NPCs
- GameState::settle(): the MCP surface resolves walk-then-act in one call
instead of returning zero events on a distant verb
- typed 'use X on Y' walks over like a clicked use (was unlimited range)
- taking/deleting a solid prop rebakes — no more lingering invisible walls
- sergeant dialogue no longer loops back to its greeting
- serde-facing maps are BTreeMap: room JSON and --sample are byte-stable
Engine:
- sprite-sheet actor views: <name>-sheet<C>x<R>.png slices into C frames x
R direction loops (vend-bot now rolls on animated treads)
- pixel-accurate click targeting with 1px slop; typed commands click
mid-sprite (a feet click lands between an actor's legs)
- parser: compass walking (go east / n), 'bye' ends conversations,
'look' lists exits
GUI:
- hover hot-text: cursor reads the sentence a click would say
- death banner + '+N' score toast
Tests: full-playthrough regression suite (win path, death rewind,
walk-over dialogue, solid-prop footprint) + sheet slicing unit test.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>