policesquadquest/README.md
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

69 lines
2.5 KiB
Markdown

# Police Squad Quest
A Sierra-style adventure game set in the *Police Squad!* / *Naked Gun* universe,
built on the [MRPGI](https://github.com/) engine (`~/Documents/MRPGI`) — which is
itself a reimplementation of AGI, the engine Sierra shipped *Police Quest* on.
> The game grades you on correct police procedure with a completely straight
> face. The reward for perfect procedure is catastrophe anyway.
- **[RESEARCH.md](RESEARCH.md)** — the source material: all six *Police Squad!*
episodes, all four films, the recurring cast, and the ZAZ comedy grammar.
- **[DESIGN.md](DESIGN.md)** — the game bible: the joke engine, the two Drebins,
the eleven-case campaign, and how it all maps onto MRPGI data.
## Play
```bash
./play.sh
```
Or directly:
```bash
cargo run -p mrpgi --manifest-path ~/Documents/MRPGI/Cargo.toml -- --game cases/case-01-substantial-gift
```
`Tab` switches between play and the room editor. Type `help` in play.
## What's here
| | |
|---|---|
| `cases/case-01-substantial-gift/` | **Case One — playable, 100 points.** Five rooms, full win path, four Sierra deaths. |
| `tools/sprites.py` | Generates every sprite on the MODELBEAST farm (free, local). |
| `RESEARCH.md` / `DESIGN.md` | Source research and the campaign bible. |
## Case One — A Substantial Gift
*Police Squad!* episode 1. A credit union manager is dead, the wrong man is in a
cell, and the teller has new braces.
Sign out your badge and sidearm (the door will not let you leave without them),
get briefed, tip Johnny, dust the counter, match the print, find the bill, and
Mirandize the suspect **in the correct order**. Get the order wrong and the
statement is suppressed, which is a Sierra death card, which is the joke.
## Regenerating art
Sprites are generated locally on MODELBEAST (`flux_local` → `bg_remove_local`
downscale). Prompts live in each case's `sprites.json`.
```bash
python3 tools/sprites.py cases/case-01-substantial-gift # fill gaps
python3 tools/sprites.py cases/case-01-substantial-gift --force # redo all
MB_POOL=1 python3 tools/sprites.py cases/... # if the farm 401s
```
Seeds derive from the sprite name, so reruns reproduce the same art.
## Engine changes
Two small, general-purpose additions were made upstream in MRPGI for this
project — both benefit any game:
- `sprites/ego.png` in a game folder replaces the default party robot as the
player avatar (`ego1.png` optional second walk cel).
- `death_text` in `game.json` overrides the death banner, which was previously
hardcoded to another game's flavour text.