Go to file
type-two 906a366ba8 LANE-FLOOR round 2: fight-brewing infraction + six defect fixes
Builds the last missing v0.2 floor mechanic (design §3.2). A fight is not a
modal: two patrons square up, a 7s fuse burns through five escalating shove
rungs, and you stop it by physically standing between them — it spends the
floor's only real resource, where you are. The tell (shoving silhouettes +
pulsing marker) deliberately reads OUTSIDE the torch cone, because spotting it
is the gameplay.

Adversarially reviewed the whole lane, then hand-adjudicated the findings. Six
real defects fixed, several in code from round 1:
- PatDownOverlay compared 'Escape' against the scene's uppercased 'ESCAPE', so
  ESC was dead there while the on-screen hint promised it worked.
- The spawn cap counted departed agents (CrowdSim keeps them so find() works),
  so every ejection permanently shrank the venue and the floor drained.
- FloorView's sprite cache is keyed by patron id and outlived resetRun, while
  _resetPatronSerial recycles ids from p0 — reseeding gave the new crowd the
  old run's dolls.
- escalation's per-incident `resolved` was consumed as a permanent per-patron
  `handled`, retiring a correctly-watered `loose` patron for the whole night
  while they kept drinking. Now settles per stage and re-arms when they worsen.
- Stall busts retired the captured occupant list, but the crowd keeps simulating
  behind the modal. Re-queries at resolution.
- Stall infractions put a stall id in the frozen `patronId` field.
Also wired teardown to Phaser's SHUTDOWN event; a `shutdown()` method is never
called, so leaving the floor leaked the view, sim, overlays and bus listeners.

Fight balance was measured, not guessed: at a 20s cooldown an idle night brewed
28 fights and 28 heat strikes against a run cap of 3. Now 150s (~5/night) with a
deferred heat strike, matching §3.2's "possible Heat". An idle night ends at
vibe 0 / 5 strikes; an attentive one at vibe 54 / 0 strikes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 20:57:28 +10:00
.claude Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
docs Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
lanes Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
src LANE-FLOOR round 2: fight-brewing infraction + six defect fixes 2026-07-19 20:57:28 +10:00
tests LANE-FLOOR round 2: fight-brewing infraction + six defect fixes 2026-07-19 20:57:28 +10:00
.gitignore Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
CLAUDE.md Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
eslint.config.js Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
index.html Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
LANEHANDOVER.md LANE-FLOOR round 2: fight-brewing infraction + six defect fixes 2026-07-19 20:57:28 +10:00
package-lock.json Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
package.json Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
README.md Fleet asset notes: reusable network assets for the v0.4 art pass 2026-07-19 16:00:53 +10:00
tsconfig.json Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
vite.config.ts Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00

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

Dev (once Phase 0 lands)

npm install
npm run dev    # parade / demo scenes
npm test