render_world_only calls process_game_events every frame (src/renderer.eigs:781), which spawns particle bursts from game.event_* flags. Those flags are only cleared by game_tick, which runs only in STATE_PLAYING. So on the pause and game-over screens the last tick's kill/collision/collect events re-spawn bursts every frame. It's bounded by the 100-particle cap (so cosmetic), but it's wrong.
Fix (pick one): clear game.event_* when entering pause/game-over; or only call process_game_events in STATE_PLAYING; or have process_game_events zero the flags after handling them.
Acceptance: no continuous particle emission on pause/game-over; in-play bursts unchanged; make test green.
See CLAUDE.md for the render/draw-list architecture.
render_world_onlycallsprocess_game_eventsevery frame (src/renderer.eigs:781), which spawns particle bursts fromgame.event_*flags. Those flags are only cleared bygame_tick, which runs only inSTATE_PLAYING. So on the pause and game-over screens the last tick's kill/collision/collect events re-spawn bursts every frame. It's bounded by the 100-particle cap (so cosmetic), but it's wrong.Fix (pick one): clear
game.event_*when entering pause/game-over; or only callprocess_game_eventsinSTATE_PLAYING; or haveprocess_game_eventszero the flags after handling them.Acceptance: no continuous particle emission on pause/game-over; in-play bursts unchanged;
make testgreen.See CLAUDE.md for the render/draw-list architecture.