policesquadquest/cases/case-01-substantial-gift/rooms/room2.json
type-two 0e2523a8a9 Police Squad Quest: research, design bible, and Case One playable
A Sierra-style adventure in the Police Squad!/Naked Gun universe, on MRPGI —
which reimplements AGI, the engine Sierra shipped Police Quest on.

The premise: Police Quest's pedantic procedure x Police Squad!'s farce. The
game grades you on correct procedure with a straight face, and the reward for
perfect procedure is catastrophe anyway. Per John, the famous Police Quest II
bugs are shipped deliberately as canon gags.

- RESEARCH.md — all six Police Squad! episodes, all four films (incl. Neeson's
  Frank Drebin Jr, 2025), the recurring cast, and the ZAZ comedy grammar.
- DESIGN.md — the joke engine, the two Drebins across three eras (Drebin Sr's
  1982 cases render in a monochrome EGA subset for the 1950s M Squad look),
  an eleven-case campaign, and the PQ2 glitch-to-feature table.
- cases/case-01-substantial-gift — playable. Five rooms, 100 points, full win
  path verified headlessly at 95/100 plus four authored Sierra deaths.
  Procedure gates, dusting for latents, and Miranda rights in the correct
  order are all pure JSON; no engine features were invented for it.
- tools/sprites.py — all 24 sprites generated locally on MODELBEAST
  (flux_local -> bg_remove_local -> trim/downscale), reproducible by seed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-25 22:11:41 +10:00

137 lines
7.9 KiB
JSON

{
"name": "Sixth Street Credit Union",
"enter_text": "The credit union. Twelve thousand dollars left this room this morning and so did the manager.",
"music": 2,
"strokes": [
{ "Rect": { "x": 0, "y": 0, "w": 160, "h": 168, "color": 7, "meaning": "Floor" } },
{ "Rect": { "x": 0, "y": 0, "w": 160, "h": 64, "color": 8, "meaning": "Wall" } },
{ "Rect": { "x": 0, "y": 62, "w": 160, "h": 3, "color": 0, "meaning": "None" } },
{ "Rect": { "x": 0, "y": 65, "w": 160, "h": 103, "color": 7, "meaning": "Floor" } },
{ "Rect": { "x": 8, "y": 10, "w": 40, "h": 30, "color": 15, "meaning": "None" } },
{ "Rect": { "x": 14, "y": 16, "w": 28, "h": 3, "color": 0, "meaning": "None" } },
{ "Rect": { "x": 14, "y": 24, "w": 20, "h": 3, "color": 0, "meaning": "None" } },
{ "Rect": { "x": 14, "y": 32, "w": 24, "h": 3, "color": 0, "meaning": "None" } },
{ "Rect": { "x": 60, "y": 8, "w": 40, "h": 16, "color": 0, "meaning": "None" } },
{ "Rect": { "x": 64, "y": 12, "w": 32, "h": 3, "color": 15, "meaning": "None" } },
{ "Rect": { "x": 64, "y": 18, "w": 22, "h": 3, "color": 15, "meaning": "None" } },
{ "Rect": { "x": 0, "y": 88, "w": 160, "h": 1, "color": 8, "meaning": "None" } },
{ "Rect": { "x": 156, "y": 0, "w": 4, "h": 168, "color": 0, "meaning": "Wall" } },
{ "Rect": { "x": 0, "y": 164, "w": 160, "h": 4, "color": 0, "meaning": "Wall" } }
],
"spawn": [20, 120],
"exits": [null, null, null, 1],
"objects": [
{
"name": "vault",
"sprite": "vault",
"x": 128,
"y": 100,
"look": "The vault. Eighteen inches of hardened steel, a time lock, and a combination known to two people. It was not touched. The money left through the window at the front, in a handbag.",
"synonyms": "safe door steel",
"use_text": "The vault is secure. The vault has always been secure. The vault is not the problem and never was."
},
{
"name": "counter",
"sprite": "counter",
"x": 58,
"y": 112,
"look": "The teller counter. Brass bars, a small arched opening, and a laminate surface that a great many hands touch every day. Exactly one set of them matters.",
"synonyms": "window teller desk brass laminate",
"use_text": "You dust the counter for latents. A clean thumb comes up off the inside ledge — the customer's side is smeared to uselessness, but the inside ledge is where somebody leaned who had no reason to lean there. You lift it and bag it. (The department pays out on a lifted print once. You may dust this counter as many times as you like. It has been looked into.)",
"sets_flag": "print_found",
"points": 10
},
{
"name": "evidence",
"sprite": "evidence",
"x": 74,
"y": 116,
"look": "A sealed evidence bag. One latent thumbprint, lifted from the inside ledge. Chain of custody begins with you and, regulations are clear, ends with you.",
"synonyms": "bag print thumbprint latent",
"takeable": true,
"visible_flag": "print_found",
"points": 5
},
{
"name": "body",
"sprite": "body",
"x": 92,
"y": 150,
"look": "The manager. Two entry wounds, close group, chest. Whoever fired this was steady, and standing near enough to be handed a withdrawal slip. Captain Hocken played racquetball with this man every Thursday for eleven years.",
"synonyms": "manager victim corpse deceased sheet",
"use_text": "You examine the body as procedure requires. Powder stippling on the shirt: the shot came from inside arm's reach. Nobody reaches through brass bars. Whoever shot him was already behind the counter.",
"sets_flag": "examined_body",
"points": 5
},
{
"name": "sally",
"sprite": "sally",
"x": 32,
"y": 128,
"look": "Sally Decker. Eleven years at that window. She is holding her handbag with both hands, the way you hold a thing you are thinking about. She smiles at you without opening her mouth.",
"synonyms": "decker teller woman miss",
"needs": "",
"requires_flag": "mirandized",
"use_text": "You place Sally Decker under arrest for the murder of the manager of the Sixth Street Credit Union. She goes quietly, and she goes with her mouth shut, which by now you understand is not the same as going quietly. Captain Hocken will not have to play racquetball on Thursday. He will not have to lose, either. Somewhere behind you, Officer Al says something that everybody laughs at, and everybody freezes, smiling, holding it — except the phone, which is still ringing, and Officer Nordberg, who is still on fire.",
"wins": true,
"points": 10,
"dialogue": [
{
"says": "Sally Decker: Oh — Detective. Have you found him? The man who did it? He was a big man. Bigger than you.",
"choices": [
{ "text": "Tell me about the customer.", "goto": 1 },
{ "text": "Tell me about your teeth, Miss Decker.", "goto": 2, "requires_flag": "motive_found" },
{ "text": "You have the right to remain silent.", "goto": 3, "requires_flag": "motive_found", "sets_flag": "miranda1", "points": 5 },
{ "text": "You're under arrest, Decker.", "goto": 9, "kills": true },
{ "text": "Nothing yet, Miss Decker.", "goto": -1 }
]
},
{
"says": "Sally: He was at the window. He asked for a withdrawal slip. Then there was shouting, and I hid, and when I came up he was gone and Mr. Bowman was on the floor.",
"choices": [
{ "text": "Which window?", "goto": 8 },
{ "text": "You hid behind the counter.", "goto": 0 }
]
},
{
"says": "Sally: My teeth? She puts a hand flat over her mouth. The wire behind it is three weeks old and cost more than the car outside.",
"choices": [{ "text": "Four thousand dollars of new, Miss Decker.", "goto": 0 }]
},
{
"says": "Sally: ...I know my rights, Detective.",
"choices": [
{ "text": "Anything you say can and will be used against you in a court of law.", "goto": 4, "requires_flag": "miranda1", "sets_flag": "miranda2", "points": 5 },
{ "text": "Then you'll know the rest. Let's save some time.", "goto": 9, "kills": true }
]
},
{
"says": "Sally: This is ridiculous. I have worked here eleven years.",
"choices": [
{ "text": "You have the right to an attorney.", "goto": 5, "requires_flag": "miranda2", "sets_flag": "miranda3", "points": 5 },
{ "text": "You have the right to an orthodontist.", "goto": 9, "kills": true }
]
},
{
"says": "Sally: ...and if I can't afford one?",
"choices": [
{ "text": "If you cannot afford an attorney, one will be appointed for you.", "goto": 6, "requires_flag": "miranda3", "sets_flag": "mirandized", "points": 5 },
{ "text": "You should have thought about that before the braces.", "goto": 9, "kills": true }
]
},
{
"says": "Sally: Do you know what they cost, Detective? Four thousand dollars. He kept twelve in that drawer and he wouldn't advance me four. Eleven years I stood at that window and smiled at people. She stops holding the handbag with both hands.",
"choices": []
},
{ "says": "", "choices": [] },
{
"says": "Sally: The... the far one. Or the near one. It was very confusing, with all the shouting.",
"choices": [{ "text": "It usually is.", "goto": 0 }]
},
{
"says": "Sally: I'd like to speak to my attorney. You have arrested a suspect without advising her of her rights, in the correct order, in full. The statement is suppressed. Skalany goes to trial for a murder he cried through. Captain Hocken never beats his friend at racquetball, and now he never will. You finish your career in the property room, where the coffee is better."
}
]
}
]
}