applyLocation() only moved flags — it never announced the move. FloorDemoScene latches `present` when it binds the night context, which (now the night preloads every prop texture) happens BEFORE the initial applyLocation runs, so every floor-start shift — bartender, glassie, DJ — came up visible but completely inert, with the audio filter still in door mode. The night now emits night:phaseChange and audio:location for the starting post. Phaser reuses scene instances across restarts, so class-field initialisers run once per GAME, not once per night: a DJ shift left djMode set and the next night's floor booted with movement locked and the keyboard eaten, last night's puddles kept slipping people through destroyed sprites, and the handled-patron sets marked fresh arrivals as already dealt with. resetNightState() now wipes all of it in create(). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| art_incoming | ||
| docs | ||
| lanes | ||
| public/props | ||
| src | ||
| tests | ||
| tools | ||
| .gitignore | ||
| CLAUDE.md | ||
| eslint.config.js | ||
| index.html | ||
| LANEHANDOVER.md | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
NOT TONIGHT
A hospitality power trip. Papers, Please meets a Saturday night in Fortitude Valley: you're the head of security at a volatile, pretentious nightclub. Protect the Vibe. Watch the queue Aggro. Don't let the Liquor Licensing Inspector catch you slipping.
Browser game — Phaser 3 · TypeScript · Vite. Pixel art, synthesized techno, one very loud DENIED stamp.
Docs
- Game design — what the game is
- Build plan — architecture, phases, milestones
- Contracts — shared types & events (law)
- Fleet asset notes — what existing network assets the art pass can reuse
- Lane handover log — build coordination
- Lane instructions: scaffold · door · floor · juice
Dev (once Phase 0 lands)
npm install
npm run dev # parade / demo scenes
npm test