policesquadquest/cases/case-03-big-gulch/rooms/room2.json
type-two 9bfd6ddb44 Cases Three, Four, Five and Nine — the campaign is complete
Thirteen cases, all playable, all lint clean, all verified end-to-end at
100/100 (Case One is 95 + 5 optional by design).

Case Three — Rendezvous at Big Gulch. The racket only shakes down businesses
that are doing well, so to get extorted you must run a genuinely excellent
locksmith shop. Frank reads MODERN LOCKSMITHING cover to cover and retains all
of it while understanding none of it, which for locksmithing is the correct
ratio. The street won't talk because paper doesn't stand in your doorway on a
Friday; Halloran opens up only after you offer to fix his door, and his
extortion ledger has been lying open on a public counter for two and a half
years because nobody ever asked to see his book.

Case Four — Revenge and Remorse. Section 14 paragraph 9 was written in 1949 for
a 1949 timer, and this bomber files his timing stub twice because he cannot
leave a thing not-quite-square, which shortens the contact throw and energises
the trigger first. Follow the manual and it completes. So Frank disarms it
backwards — the one time in nineteen years he departs from a written
instruction, because he can prove the instruction is wrong in four sentences.
Carries PQ1's Captain loop and an explicit refusal of PQ3's centre-pixel bug.

Case Five — The Butler Did It. Chain of custody on a birthday cake: photograph,
weigh with a witness, seal all forty forks. Eleven pounds light in the tier
nobody cuts, because she was inside it for four minutes while forty people
looked at it. And Frank will not suspect the butler because the literature says
it is always the butler, so suspecting him would be quoting rather than
investigating. It is the butler.

Case Nine — The Final Insult. The marriage is a gate, not a subplot: the finale
is locked behind actually answering the counsellor's question, and Jane's terms
are "before you go, not after". He doesn't disarm the envelope, he swaps it and
writes in a winner by hand. He picks the one he liked.

Two point budgets came in over (110, 115) and are trimmed to exactly 100.
Sprite generation needed a kill-and-restart: two overlapping runs were competing
for the farm and producing "Resource temporarily unavailable" — one clean pass
at pool 2 completed all four sets with zero failures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 00:15:47 +10:00

268 lines
7.2 KiB
JSON

{
"name": "Gulch Street",
"enter_text": "Eleven businesses, one street, and a Friday that everybody on it is quietly dreading.",
"music": 2,
"strokes": [
{
"Rect": {
"x": 0,
"y": 0,
"w": 160,
"h": 168,
"color": 7,
"meaning": "Floor"
}
},
{
"Rect": {
"x": 0,
"y": 0,
"w": 160,
"h": 34,
"color": 15,
"meaning": "None"
}
},
{
"Rect": {
"x": 6,
"y": 6,
"w": 44,
"h": 46,
"color": 8,
"meaning": "None"
}
},
{
"Rect": {
"x": 12,
"y": 12,
"w": 12,
"h": 10,
"color": 15,
"meaning": "None"
}
},
{
"Rect": {
"x": 30,
"y": 12,
"w": 12,
"h": 10,
"color": 15,
"meaning": "None"
}
},
{
"Rect": {
"x": 110,
"y": 4,
"w": 46,
"h": 48,
"color": 8,
"meaning": "None"
}
},
{
"Rect": {
"x": 116,
"y": 10,
"w": 14,
"h": 10,
"color": 15,
"meaning": "None"
}
},
{
"Rect": {
"x": 136,
"y": 10,
"w": 14,
"h": 10,
"color": 15,
"meaning": "None"
}
},
{
"Rect": {
"x": 0,
"y": 52,
"w": 160,
"h": 2,
"color": 0,
"meaning": "None"
}
},
{
"Rect": {
"x": 0,
"y": 128,
"w": 160,
"h": 2,
"color": 0,
"meaning": "None"
}
},
{
"Rect": {
"x": 0,
"y": 130,
"w": 160,
"h": 38,
"color": 8,
"meaning": "None"
}
},
{
"Rect": {
"x": 16,
"y": 147,
"w": 18,
"h": 3,
"color": 15,
"meaning": "None"
}
},
{
"Rect": {
"x": 52,
"y": 147,
"w": 18,
"h": 3,
"color": 15,
"meaning": "None"
}
},
{
"Rect": {
"x": 88,
"y": 147,
"w": 18,
"h": 3,
"color": 15,
"meaning": "None"
}
},
{
"Rect": {
"x": 124,
"y": 147,
"w": 18,
"h": 3,
"color": 15,
"meaning": "None"
}
}
],
"spawn": [
22,
110
],
"exits": [
null,
3,
null,
1
],
"exit_flags": [
"",
"street_trusts",
"",
""
],
"exit_blocked": [
"",
"Eleven people have refused to make a statement. You are not going anywhere until one of them changes their mind.",
"",
""
],
"objects": [
{
"name": "shopfront",
"sprite": "shopfront",
"x": 62,
"y": 100,
"look": "Halloran's grocery, four doors down from you. Awning patched, window clean, and a hand-painted sign that somebody repaints every spring.",
"synonyms": "storefront awning window display",
"use_text": "You look at the window display. It is done properly. Everything about this shop is done properly by a man who has done it properly for thirty years and is going under anyway."
},
{
"name": "ledger03",
"sprite": "ledger03",
"x": 116,
"y": 118,
"look": "Halloran's book, open on his counter where anybody could read it, because it has stopped mattering to him whether anybody reads it.",
"synonyms": "book accounts figures takings",
"requires_flag": "spoke_grocer",
"points": 10,
"sets_flag": "street_trusts",
"use_text": "Thirty years of a grocery in one book. Every Friday since March 1956 there is a line in the outgoings column reading SUNDRIES — 40.00. Every Friday. Never a week missed, never a different figure, in a shop that in a bad week clears fifty-one. It is the most complete extortion record you have ever seen and it has been sitting on a counter on a public street for two and a half years. (+10)"
},
{
"name": "grocer",
"sprite": "grocer",
"x": 92,
"y": 126,
"look": "Mr. Halloran. Thirty years behind that counter, apron on, sleeves rolled, wringing a cloth he is not using.",
"synonyms": "halloran shopkeeper man mister",
"points": 20,
"sets_flag": "spoke_grocer",
"use_text": "You do not ask him anything. You tell him what you cut this week and what you charged for it, and that the machine at number nine is belt-driven and 1931 and in perfect order because Bergman looked after it, and that you have not had to cut a key twice. He listens to all of it. Then he says, to the cloth: 'You'll be shut by Christmas, son. They come when you're doing well.' And then, because you did not ask, he tells you the rest. (+20)",
"dialogue": [
{
"says": "Halloran: You're number nine. I heard. Queue on the pavement, they say. Halloran: I'm not making a statement, if that's what this is. I've told two grand juries I've nothing to say and I've nothing to say.",
"choices": [
{
"text": "I'm not here about a statement.",
"goto": 1
},
{
"text": "Why won't anybody on this street talk?",
"goto": 2
},
{
"text": "Mr. Halloran, I'm a police officer.",
"goto": 3
}
]
},
{
"says": "Halloran: Then what are you here about? You tell him you re-pinned a lock for Mrs. Ostrowski and didn't charge her, and ask whether his back door still drops on the hinge, because you noticed it dropping when you walked past on Tuesday. He looks up from the cloth.",
"choices": [
{
"text": "It drops. I can fix it Thursday.",
"goto": 4
}
]
},
{
"says": "Halloran: Because a statement's a piece of paper and a piece of paper doesn't stand in your doorway on a Friday. Halloran: Bergman made a statement. Number nine. That's why it's been shut two years and that's why you got it cheap.",
"choices": [
{
"text": "Bergman made a statement.",
"goto": 4
}
]
},
{
"says": "Halloran: ...I know what you are. Halloran: Son, everybody on this street knew what you were on the second morning. You cut two hundred keys in nine days and you never once asked anybody a question. Police don't do that. Halloran: We've been waiting to see if you'd fix my door before you asked me anything.",
"choices": [
{
"text": "I'll fix it Thursday.",
"goto": 4
}
]
},
{
"says": "Halloran: Thursday. He puts the cloth down. Halloran: Friday afternoons. Four o'clock, regular as church. Forty dollars, and he takes it in the shop, in front of whoever's in, because that's the point of it. Halloran: My book's on the counter. It always has been. Nobody ever asked to see my book.",
"choices": [
{
"text": "May I see your book?",
"goto": -1
}
]
}
]
}
]
}