policesquadquest/tools
type-two 72815f8c55 Case Six: Testimony of Evil — the whiskey exploit is the puzzle
Act I, monochrome. Five rooms, 100 points, verified at 100/100 with four
verified deaths.

Built out of John's Police Quest material. PQ1's famous 8-bit integer underflow
is not an easter egg here, it is the central puzzle: Frank signs for a $40
operational float clipped to a note reading DO NOT EXCEED YOUR FLOAT, the back
room costs $2,500, and exceeding the float by one dollar wraps the department
ledger's eight-bit field to 255 — the terminal appends the cents column and
authorises $2,550.00. He keeps drinking to 132 because it will not do to stop
suddenly. Accounts raise it in March; it goes to a hearing.

PQ1's Gremlin runs through the whole case and is never resolved: chickens on the
Captain's desk, on Al's shoulder, on the murdered guest star, and one in the
winning freeze-frame. Nobody has said the word "chicken" out loud in eleven
years. No file was ever opened.

Then the stage: six memorised jokes, in order, and every "improvise" option is
fatal — plus a full glass on a stool three feet from the microphone, which is
how Danny Cavanaugh died and which you must not touch.

Linter gained the rule that actually caused this session's bug: MRPGI's
obj_matches is a BIDIRECTIONAL substring test over name AND synonyms, and
match_obj takes the first hit in array order, so an earlier object can make a
later one unreachable by its own name. `talk barman` was addressing `clubbar`.
It found two more: `sideboard` swallowing `cardtable`, and `bouncer` swallowing
`bunkerdoor` — the last of which shipped broken in Case Ten. All six cases lint
clean and all six still win.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-25 23:11:22 +10:00
..
__pycache__ Case Seven: From the Files (1988) — the umpire problem 2026-07-25 22:29:27 +10:00
lint.py Case Six: Testimony of Evil — the whiskey exploit is the puzzle 2026-07-25 23:11:22 +10:00
sprites.py Case Two: Ring of Fear — the paperwork is what keeps you alive 2026-07-25 22:47:23 +10:00