Scaffold project and author 14-phase roadmap
Browser co-op kitchen game: FastAPI + native WebSockets, server-authoritative 20 Hz simulation, in-memory anonymous lobbies, data-driven YAML levels, Canvas 2D vanilla ES-module client with locally authored SVG art and no external CDNs. .agents/PLAN.md records the LOCKED decisions; .agents/user_stories/ holds the 12 flow contracts; .agents/phases/todo/ breaks them into 14 sequential, test-gated phases (71 task files), each leaving the app launchable and the suite green. LLM-Generated: true
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
# US-08 — Handle hazards and pressure without losing control
|
||||
|
||||
**As a** player in a late level,
|
||||
**I want to** deal with fires, spills, moving obstacles, and order surges,
|
||||
**so that** the escalation is a fair test of teamwork rather than random unfairness.
|
||||
|
||||
## Acceptance criteria
|
||||
1. **Fire** starts on a station per level probability, spreads to an adjacent station
|
||||
after its burn timer unless dealt with, blocks its tile, and ruins items on it; it is
|
||||
extinguished by a sink-filled douse (carry water) with visible steam.
|
||||
2. **Spill** makes its tile slippery (accel/brake reduced, cook slides ~0.5 tile) and is
|
||||
cleaned by a wipe action; a cook leaving the kitchen with a spill under a station
|
||||
does not propagate it.
|
||||
3. **Moving obstacles** (cart, boat mast) follow their authored path and stun on contact
|
||||
for 0.6 s with a visible telegraph 0.5 s before entering a tile.
|
||||
4. **Rush waves** spawn a burst of orders with a HUD "RUSH" banner and a wave counter.
|
||||
5. Every hazard is data-driven (level YAML): type, location/station reference, rate, and
|
||||
mitigation — no hard-coded hazard placement in Python.
|
||||
6. Hazard effects are deterministic under a fixed seed (replay test covers all four).
|
||||
7. Client FX exist for each hazard and respect `prefers-reduced-motion` (reduced: static
|
||||
markers instead of flicker/shake).
|
||||
8. Hazard penalties never soft-lock a round: the round always ends by timer or target.
|
||||
|
||||
## E2E suite
|
||||
`tests/e2e/test_us08_hazards.py` — level fixture with fire + spill: extinguish, clean,
|
||||
avoid a mover; asserts hazard states in the snapshot and reduced-motion rendering.
|
||||
|
||||
## Phases
|
||||
`10_hazards_and_escalation_mechanics`, `11_campaign_levels_and_progression`
|
||||
Reference in New Issue
Block a user