4.0 KiB
4.0 KiB
TODO
Bug Fixes
LATE shift phase never fires
- Add a
Rules.Phase.LATEentry (e.g.{"start_s": 900.0}) toshift_phasesinhollywood_building(),joke_shop(), andtv_studio()insrc/content/scenario_factory.gd. - Confirm
violent_emergency_event(taggedPhase.LATE,time_range_s760–880) can now be pulled byEventScheduler.pull_due. - Add a test asserting the LATE-phase event is reachable (e.g. tick a coordinator past 900s and check the event pool is eligible).
Missing PLAN Features — NPCs and Reactions
PROTESTER archetype
- Add
PROTESTERtoRules.NpcTypeand a"Protester"entry toNPC_TYPE_NAMESinsrc/core/rules.gd. - Add a protester profile in
ScenarioFactory.shared_profiles()(id"protester", temperament ~0.5, base_compliance ~0.4, reactions favoring ARGUE/IGNORE/RECORD). - Add a
TYPE_COLORSentry forPROTESTERinsrc/game/npc_avatar.gd. - Add routine protester events (e.g.
"protest_gather", intent"protest") to the Hollywood Boulevard and TV Studio event pools. - Add a scenario test asserting the protester profile exists and is referenced by an event.
"Call someone else" NPC reaction
- Add
CALL_SOMEONEtoRules.Reactioninsrc/core/rules.gd. - Handle
CALL_SOMEONEinNPCController._update_state_for_reaction(e.g. transition toARGUINGor a newCALLINGstate). - Give relevant profiles (influencer, trespasser) a weight for
CALL_SOMEONEin theirreactions_by_level. - Add a reaction log line in
GameManager._react_to_outcomeand aStringsentry. - Add a test asserting
CALL_SOMEONEcan be rolled and updates the FSM.
Missing PLAN Features — Equipment and Environment
Door lock/secure mechanic
- Add a door state (locked/unlocked) to
WorldBuilder(or a smallDoornode) with a visible indicator. - Add a player action + key binding (e.g.
L) to toggle the door lock inGameManager. - Make
FORCE_ENTRYreactions fail (or be delayed) while the door is locked; log the consequence. - Add a
Stringsentry and a headless test for the lock state transition.
Flashlight interaction
- Add a flashlight toggle + key binding (e.g.
G) inGameManager. - Attach a
SpotLight3Dto the guard that toggles with the flashlight. - Make the flashlight affect NPC perception at night (e.g. widen
AWARE_RADIUSor raise notice probability when lit). - Add a
Stringsentry and a headless test for the perception effect.
Persistence
Persist shift results
- Call
Save.save_shift_result(review)fromGameManager._on_shift_ended. - Load past results (
Save.load_shift_results()) and show a short history (count + last grade) on the shift review screen. - Add a test that a saved review round-trips through
Save(or verify manually in the smoke test).
Navigation
Navmesh-based NPC movement
- Add a
NavigationRegion3Dwith a baked navmesh covering the sidewalk, steps, and entrance inWorldBuilder. - Switch
NpcAvatarfrom directmove_and_slidetowardtarget_positiontoNavigationAgent3Dpath following. - Keep the per-intent waypoint and returning-trespasser re-targeting behavior working on the navmesh.
- Verify NPCs route around the building/steps in a manual smoke test.
Localization
Move Strings to JSON
- Create a
res://JSON file (e.g.res://content/strings.en.json) containing the currentStrings.TABLEentries. - Load the JSON at startup and keep
Strings.lookup/Strings.fmtsignatures unchanged. - Update
test_strings.gdto load from the JSON-backed table and confirm all keys still resolve.
Future Systems (design-level backlog)
- Body-camera replay timeline in the shift review.
- Long (10-15 minute) shift lengths and phase-based lighting.
- Venue selection screen; export presets for desktop targets.
- IDE/editor-based GUT integration when a Godot editor workflow is introduced.
- Reduce RefCounted reference cycles (NPCController <-> FSM) noted in
MEMORY.md.