Add the campaign shell, pause-safe checkpoint resume, post-shift campaign continue, confirmed campaign reset, difficulty presets, searchable Help, content-matrix validation, recovery events, contextual dialogue, policy/debrief context and eligible-event previews. Extend persistence with atomic separate files and add campaign/checkpoint/tutorial smokes. Headless 247/247, Python 94/94, tutorial/campaign/session/scenario smokes green.
3.8 KiB
3.8 KiB
Smoke Test Checklist
godot --path .starts the game on the venue menu without script errors.- Choosing a venue (click or ↑/↓ + Enter) starts that venue's shift and hides the menu.
- The guard moves and looks around; the building, steps, and sidewalk are visible.
- The guard's camera sits at eye height and the guard stands on the landing, not inside the building.
- Walking into the steps carries the guard up onto the landing (steps have colliders).
- The skyline backdrop shows silhouettes against the sky, not an opaque black slab.
- The
GIG LINEmarquee is readable from the sidewalk. - NPCs spawn and approach the entrance during the first minutes.
- Looking at an NPC inside the focus cone shows a blue focus circle in front of the face, the person's name, and the HUD target line.
Spaceor left click opens the action wheel;A/Dhighlight a slice,Spaceconfirms it,Esc/right click cancels without a log entry.E/Copen the inspection/wand panels from the wheel and freeze movement until they close; walking never fires the wand.- Pressing
Qproduces a reaction log entry and reputation feedback. Eopens access inspection showing venue-correct artifacts and policy result;A/Drecord a decision.6opens the assistance form; submitting shows dispatch feedback.Ropens the emergency form; the button must be held ~1.6s or the call cancels.Gtoggles the flashlight (indicator appears in the HUD);Ltoggles the door lock (indicator turns red when locked).Ftoggles the debug overlay with NPC states and shift stats.- The wheel's
Lookslice is eye contact (Level 1) and logs as its own action. Reasonasks why the person is there and logs theirdialogue_linesreply.Recognizerecords the guard's recognition as access evidence; pressing it twice says so.Warnturns the body camera on (REC overlay appears);Btoggles it manually.Blockmoves the guard between the person and the door.- The shift review reports the incident count, including interactions left unresolved.
- Escalating on someone (or a responder arriving) makes idle bystanders stop and face the incident.
- Repeated alarms panic the crowd and nearby people clear away from the door instead of standing around.
Escwith nothing open pauses the shift; resume / restart / settings / quit-to-menu all work, and settings changes persist across a restart.- NPCs route around the building using the navigation mesh (no stuck-at-wall behavior during a smoke run).
- An unjustified emergency call (calm person, no weapon) logs an investigation and costs reputation.
- After an evacuation outcome the door is locked and NPCs are leaving the entrance.
- The shift review's "Body camera timeline" button steps through the recorded events (Left/Right or the buttons) and Esc returns to the review.
- The escalation label shows a
[###--] L3/5shape meter as well as the level name, and stays readable in grayscale. - Changing "HUD font scale" in Settings resizes the HUD text and persists across a restart.
- When the shift timer reaches 0, the shift review screen shows grade, policy, incident summary, responder outcomes, investigations, and persisted shift history; campaign Continue starts the next venue.
- On a fresh profile the tutorial starts on Hollywood, advances through its eight beats, and F1 skips it; Settings Replay tutorial restarts it.
- Pausing saves a checkpoint: returning to the menu and choosing Continue resumes elapsed time, NPCs, incidents, door/flashlight state and campaign position.
- Settings difficulty changes spawn pacing/compliance/report strictness while escalation rules stay the same; Help filters controls and shows the venue policy.
- The F debug overlay lists the next eligible events; recovery events and recently played scripted events behave as authored.