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>
@ -256,9 +256,9 @@ in the title card** — a real object in the room whose only purpose is to die.
|
||||
|---|------|------|------|---------------|
|
||||
| 01 | **A Substantial Gift** | Ep 1 | Credit union manager shot; teller Sally Decker did it for orthodontist money and framed a customer | Sign out badge + sidearm; dust for prints; Mirandize in order — **built, see §6** |
|
||||
| 02 | **Ring of Fear** | Ep 2 | **BUILT.** Undercover as fight manager Frank Deacon; Buddy Kessler's wife taken to force a dive in the fourth | **The paperwork is what keeps you alive.** File Form 22-B in Act 1 and a clerk in Sacramento makes Frank Deacon real. Skip it and the promoter's licence check leaves you exactly one dialogue option, which is fatal. Three ways to blow the cover, all deaths. |
|
||||
| 03 | **Rendezvous at Big Gulch** | Ep 3 | Protection racket; Frank and Norberg run a **locksmith shop** as a front | The front business is graded on customer service. Real locks. Real customers. |
|
||||
| 04 | **Revenge and Remorse** | Ep 4 | Courthouse bombing, Eddie Casales framed | Bomb disposal by the manual, in order. The manual is wrong. |
|
||||
| 05 | **The Butler Did It** | Ep 5 | Kidnapping at a rich man's birthday party | Chain of custody on a birthday cake |
|
||||
| 03 | **Rendezvous at Big Gulch** | Ep 3 | **BUILT.** Protection racket on Gulch Street; Police Squad buys a locksmith's as a front | **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, retains all of it and understands none of it, which turns out to be the correct ratio. |
|
||||
| 04 | **Revenge and Remorse** | Ep 4 | **BUILT.** Courthouse bombing; Eddie Casales in a cell for standing on the steps | **The manual is wrong and you can prove it in four sentences.** Section 14 ¶9 was written in 1949 for a 1949 timer; this maker files his timing stub twice, which shortens the contact throw and energises the trigger first. Disarm it backwards. Also carries PQ1's Captain-loop (go and see the coroner) and an explicit refusal of PQ3's centre-pixel map bug. |
|
||||
| 05 | **The Butler Did It** | Ep 5 | **BUILT.** A twelve-year-old vanishes from her own party between the cake and the candles | **Chain of custody on a birthday cake** — weigh it, seal all forty forks, and it comes up eleven pounds light in the tier nobody cuts. And Frank refuses to 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. |
|
||||
| 06 | **Testimony of Evil** | Ep 6 | **BUILT.** Danny Cavanaugh dies mid-act at the Blue Grotto; poison on the rim of his own glass | **The PQ1 whiskey exploit is the intended solution** (see below). Then undercover as a stand-up: six memorised jokes, in order, and improvising is fatal. |
|
||||
|
||||
### Act II — Frank Drebin (Nielsen), the films (full colour)
|
||||
@ -267,7 +267,7 @@ in the title card** — a real object in the room whose only purpose is to die.
|
||||
|---|------|------|------|
|
||||
| 07 | **From the Files** | *Naked Gun* (1988) | **BUILT — see §7.** Nordberg shot on Ludwig's freighter; the Queen's reception; then Anaheim Stadium, where you **umpire a baseball game in order to legally frisk the players**. |
|
||||
| 08 | **The Smell of Fear** | *Naked Gun 2½* (1991) | **BUILT.** The double gives himself away by being *approximately* right — a man with an eidetic memory never says "roughly". Blue Note, SWAT tank into the zoo, mariachi infiltration, and a nuclear device disarmed by tripping over its power cable. |
|
||||
| 09 | **The Final Insult** | *33⅓* (1994) | Retired Frank goes undercover in prison as "Nick the Slasher McGurk". Bomb in the Best Picture envelope. Marriage counselling is a live stat you must not tank. |
|
||||
| 09 | **The Final Insult** | *33⅓* (1994) | **BUILT.** Retired, bored, in couples counselling. Undercover in Statesville as Nick McGurk; a device in the Best Picture envelope. **The marriage is a gate, not a subplot** — the finale is locked behind actually answering the counsellor's question, and the winning move is to swap the envelope and write in a winner by hand. He picks the one he liked, which Jane calls the most honest thing he has ever done. |
|
||||
|
||||
### Act III — Frank Drebin Jr, 2025 (full colour, cold palette)
|
||||
|
||||
|
||||
@ -12,6 +12,9 @@ itself a reimplementation of AGI, the engine Sierra shipped *Police Quest* on.
|
||||
- **[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.
|
||||
|
||||
**Thirteen cases, all playable, all verified end-to-end at 100/100** (Case One is
|
||||
95 + 5 optional). `python3 tools/lint.py` checks all thirteen clean.
|
||||
|
||||
## Play
|
||||
|
||||
```bash
|
||||
@ -35,9 +38,13 @@ cargo run -p mrpgi --manifest-path ~/Documents/MRPGI/Cargo.toml -- --game cases/
|
||||
| `cases/case-00-1958/` | **Act Zero — playable, 100 points.** Frank Drebin **Sr**, 1958, hard noir mono. Five rooms. Played completely straight; the score is the cover-up. |
|
||||
| `cases/case-00b-the-quartet/` | **Act Zero crossover — playable, 100 points.** Drebin **Sr** vs. five Ealing-comedy incompetents. Five rooms. |
|
||||
| `cases/case-01-substantial-gift/` | **Case One — playable, 100 points.** Drebin (Nielsen), 1982, monochrome. Five rooms. |
|
||||
| `cases/case-03-big-gulch/` | **Case Three — playable, 100 points.** Four rooms, the locksmith front. |
|
||||
| `cases/case-04-revenge-remorse/` | **Case Four — playable, 100 points.** Four rooms, the wrong manual. |
|
||||
| `cases/case-05-butler-did-it/` | **Case Five — playable, 100 points.** Four rooms, chain of custody on a cake. |
|
||||
| `cases/case-06-testimony-of-evil/` | **Case Six — playable, 100 points.** Drebin (Nielsen), 1982, monochrome. Five rooms, the whiskey exploit, four deaths. |
|
||||
| `cases/case-07-from-the-files/` | **Case Seven — playable, 100 points.** Drebin (Nielsen), 1988, full colour. Six rooms, the Anaheim Stadium finale. |
|
||||
| `cases/case-02-ring-of-fear/` | **Case Two — playable, 100 points.** Drebin (Nielsen), 1982, monochrome. Five rooms, undercover, three deaths. |
|
||||
| `cases/case-09-final-insult/` | **Case Nine — playable, 100 points.** Four rooms, prison undercover and the envelope. |
|
||||
| `cases/case-10-plot-device/` | **Case Ten — playable, 100 points.** Drebin Jr (Neeson), 2025, cold palette. Six rooms, the arena finale and the owl. |
|
||||
| `cases/case-08-smell-of-fear/` | **Case Eight — playable, 100 points.** Drebin (Nielsen), 1991, full colour. Five rooms, the memory test. |
|
||||
| `cases/case-11-what-he-wrote/` | **Case Eleven — playable, 100 points.** Drebin **Jr** reads his grandfather's files. Five rooms; the palette drifts from 2025 back to 1958. |
|
||||
|
||||
13
cases/case-03-big-gulch/game.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "Police Squad Quest — Case Three: Rendezvous at Big Gulch",
|
||||
"start_room": 0,
|
||||
"max_score": 100,
|
||||
"intro_text": "POLICE SQUAD. Every business on Gulch Street pays a man forty dollars a week and not one of them will say so. You cannot investigate a crime nobody will report. So Police Squad has bought a shop. My name is Drebin. From Monday I am a locksmith, and Officer Nordberg is my apprentice, and neither of us has ever cut a key. Type 'help'.",
|
||||
"death_text": "† OFFICER DOWN. The shop closes. The day restarts. †",
|
||||
"verbs": [
|
||||
{ "name": "use", "words": ["cut", "serve", "fit", "repair", "frisk", "cuff", "book", "arrest", "radio", "halt", "file", "trade"] },
|
||||
{ "name": "look", "words": ["investigate", "observe", "detect"] },
|
||||
{ "name": "talk", "words": ["interrogate", "question", "brief", "serve"] }
|
||||
],
|
||||
"flags": { "briefed": false, "shop_trading": false, "street_trusts": false, "collector_called": false }
|
||||
}
|
||||
58
cases/case-03-big-gulch/rooms/room0.json
Normal file
@ -0,0 +1,58 @@
|
||||
{
|
||||
"name": "Police Squad HQ — Squad Room",
|
||||
"enter_text": "The squad room. On your desk is a set of keys to a shop.",
|
||||
"music": 3,
|
||||
"strokes": [
|
||||
{ "Rect": { "x": 0, "y": 0, "w": 160, "h": 168, "color": 7, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 0, "w": 160, "h": 58, "color": 8, "meaning": "Wall" } },
|
||||
{ "Rect": { "x": 0, "y": 58, "w": 160, "h": 110, "color": 7, "meaning": "Floor" } },
|
||||
{ "Rect": { "x": 0, "y": 55, "w": 160, "h": 3, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 100, "y": 12, "w": 46, "h": 32, "color": 15, "meaning": "None" } },
|
||||
{ "Rect": { "x": 122, "y": 12, "w": 2, "h": 32, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 100, "y": 26, "w": 46, "h": 2, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 14, "y": 14, "w": 42, "h": 30, "color": 15, "meaning": "None" } },
|
||||
{ "Rect": { "x": 18, "y": 18, "w": 24, "h": 3, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 18, "y": 25, "w": 30, "h": 3, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 18, "y": 32, "w": 20, "h": 3, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 0, "w": 5, "h": 168, "color": 0, "meaning": "Wall" } },
|
||||
{ "Rect": { "x": 0, "y": 163, "w": 160, "h": 5, "color": 0, "meaning": "Wall" } }
|
||||
],
|
||||
"spawn": [86, 148],
|
||||
"exits": [null, 1, null, null],
|
||||
"exit_flags": ["", "briefed", "", ""],
|
||||
"exit_blocked": ["", "You do not open a business without a briefing. That is how businesses go under.", "", ""],
|
||||
"objects": [
|
||||
{ "name": "casefile", "sprite": "casefile", "x": 62, "y": 130,
|
||||
"look": "GULCH STREET — EXTORTION (SUSPECTED). Eleven businesses. Eleven refusals to make a statement. One handwriting expert's note observing that all eleven refusals are in the same eleven words.",
|
||||
"synonyms": "file folder report papers case", "takeable": true, "points": 5 },
|
||||
{ "name": "desk", "sprite": "desk", "x": 46, "y": 142,
|
||||
"look": "Your desk, and on it a ring of keys and a lease and a book called MODERN LOCKSMITHING, THIRD EDITION, with a bus ticket in it at page forty.",
|
||||
"synonyms": "table keys lease book locksmithing",
|
||||
"use_text": "You read MODERN LOCKSMITHING, THIRD EDITION, cover to cover, in one evening, and you retain all of it, because you retain everything and understand very little, which for locksmithing turns out to be exactly the correct ratio." },
|
||||
{ "name": "al", "sprite": "al", "x": 80, "y": 66,
|
||||
"look": "Officer Al. You can see his shoes and about nine inches of trouser. He is holding something up and everybody is looking at it.",
|
||||
"synonyms": "tall officer legs", "use_text": "You shake his hand. You have to jump." },
|
||||
{ "name": "guest", "sprite": "guest", "x": 118, "y": 150,
|
||||
"look": "This week's television actor, mid-wave, smiling, dead since the opening titles. Nobody has moved him.",
|
||||
"synonyms": "star actor man body", "use_text": "You check him for a pulse, as procedure requires. There isn't one. You note the time." },
|
||||
{ "name": "nordberg", "sprite": "nordberg", "x": 138, "y": 152,
|
||||
"look": "Officer Nordberg, your apprentice locksmith, both arms in casts. He has been given the fine work.",
|
||||
"synonyms": "norberg partner officer apprentice",
|
||||
"use_text": "You confirm the arrangement. He cuts, you serve. Nobody has raised the casts." },
|
||||
{ "name": "hocken", "sprite": "hocken", "x": 106, "y": 126,
|
||||
"look": "Captain Ed Hocken, holding a shop lease and an expression of a man who has signed a shop lease.",
|
||||
"synonyms": "captain ed boss",
|
||||
"dialogue": [
|
||||
{ "says": "Hocken: Eleven businesses on Gulch Street, Frank. Every one of them pays and not one of them will say a word. We've had two grand juries and eleven refusals. Hocken: So we've bought number nine. It's been a locksmith's since 1931. You're the locksmith.",
|
||||
"choices": [
|
||||
{ "text": "Why a locksmith, Captain?", "goto": 1 },
|
||||
{ "text": "How do we get him to approach us?", "goto": 2 },
|
||||
{ "text": "I'll open Monday, Captain.", "goto": 3, "sets_flag": "briefed", "points": 10 } ] },
|
||||
{ "says": "Hocken: Because a locksmith gets into every business on the street and nobody thinks twice, and because number nine was for sale, and because those are the only two reasons anything ever happens in this department.",
|
||||
"choices": [ { "text": "Fair enough.", "goto": 2 } ] },
|
||||
{ "says": "Hocken: That's the part I don't like, Frank. Hocken: A man like this doesn't shake down a shop that's struggling. There's nothing in it. He waits until a place is doing well and then he comes in and takes the difference. Hocken: You want him to come to you, that shop has to actually make money.",
|
||||
"choices": [ { "text": "Then it'll make money.", "goto": 3, "sets_flag": "briefed", "points": 10 } ] },
|
||||
{ "says": "Hocken: Monday. Hocken: Frank — cut the keys right. If that shop gets a name for bad work, nobody comes in, and if nobody comes in then neither does he, and eleven businesses go on paying forty dollars a week for the rest of their lives. You tell him you have read MODERN LOCKSMITHING, THIRD EDITION. He says: all of it? You say: all of it.",
|
||||
"choices": [] } ] }
|
||||
]
|
||||
}
|
||||
52
cases/case-03-big-gulch/rooms/room1.json
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
"name": "Drebin & Son, Locksmiths — 9 Gulch Street",
|
||||
"enter_text": "A bell over the door, a key rack, and a machine neither of you has switched on.",
|
||||
"music": 1,
|
||||
"strokes": [
|
||||
{ "Rect": { "x": 0, "y": 0, "w": 160, "h": 168, "color": 7, "meaning": "Floor" } },
|
||||
{ "Rect": { "x": 0, "y": 0, "w": 160, "h": 62, "color": 8, "meaning": "Wall" } },
|
||||
{ "Rect": { "x": 0, "y": 60, "w": 160, "h": 3, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 63, "w": 160, "h": 105, "color": 7, "meaning": "Floor" } },
|
||||
{ "Rect": { "x": 8, "y": 10, "w": 60, "h": 44, "color": 15, "meaning": "None" } },
|
||||
{ "Rect": { "x": 12, "y": 14, "w": 52, "h": 3, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 12, "y": 22, "w": 52, "h": 3, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 12, "y": 30, "w": 52, "h": 3, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 12, "y": 38, "w": 52, "h": 3, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 12, "y": 46, "w": 34, "h": 3, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 104, "y": 12, "w": 46, "h": 38, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 108, "y": 16, "w": 38, "h": 30, "color": 15, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 164, "w": 160, "h": 4, "color": 0, "meaning": "Wall" } }
|
||||
],
|
||||
"spawn": [18, 146],
|
||||
"exits": [null, 2, null, 0],
|
||||
"exit_flags": ["", "shop_trading", "", ""],
|
||||
"exit_blocked": ["", "A shop with no customers is a shop nobody shakes down. Open up and do the work.", "", ""],
|
||||
"objects": [
|
||||
{ "name": "shopcounter", "sprite": "shopcounter", "x": 46, "y": 118,
|
||||
"look": "The counter, the till, and a board of blanks going back to 1931. The previous owner left the board alphabetised and you have not changed it.",
|
||||
"synonyms": "counter till board blanks shop",
|
||||
"use_text": "You stand behind it the way a man stands behind a counter he intends to keep." },
|
||||
{ "name": "keycutter", "sprite": "keycutter", "x": 116, "y": 116,
|
||||
"look": "The cutting machine. Belt-driven, 1931, and in perfect order because somebody looked after it for twenty-seven years.",
|
||||
"synonyms": "machine cutter blade wheel vice",
|
||||
"points": 25, "sets_flag": "shop_trading",
|
||||
"use_text": "You open at eight and you do the work. You cut two hundred and eleven keys in nine days. Every one of them turns. You do not cut a single one twice, because you read MODERN LOCKSMITHING, THIRD EDITION, and retained all of it. You re-pin a lock for the woman at forty-one and do not charge her because it took four minutes. You go out on a Sunday to a man locked out of his own bakery. You fit a mortice for the barber at cost and stay to make sure it closes true. By the second Friday there is a queue on the pavement at eight in the morning and Officer Nordberg is in the window with a cast on each arm, waving at people, and the shop is taking sixty dollars a week clear. You have, in nine days, entirely by accident, built the best small business on Gulch Street. (+25)" },
|
||||
{ "name": "customer", "sprite": "customer", "x": 78, "y": 132,
|
||||
"look": "Mrs. Ostrowski from forty-one, who has locked herself out three times this month and has stopped apologising for it, which you consider progress.",
|
||||
"synonyms": "woman lady mrs ostrowski",
|
||||
"use_text": "You cut her a spare and then a second spare, and you tell her to leave one with her sister, which is the only advice in MODERN LOCKSMITHING, THIRD EDITION that you fully understood.",
|
||||
"dialogue": [
|
||||
{ "says": "Mrs. Ostrowski: You're the new man. Number nine's been shut since old Bergman went.",
|
||||
"choices": [
|
||||
{ "text": "Drebin. What can I do for you?", "goto": 1 },
|
||||
{ "text": "Do people on this street have trouble?", "goto": 2 } ] },
|
||||
{ "says": "Mrs. Ostrowski: Locked out. Again. She puts a key on the counter and does not apologise, and you decide you like this street.",
|
||||
"choices": [ { "text": "Do people on this street have trouble?", "goto": 2 } ] },
|
||||
{ "says": "Mrs. Ostrowski: ...You want to talk to Mr. Halloran at the grocer's. Mrs. Ostrowski: No. You don't. Forget I said it. It's a nice street. She takes her keys and goes, and at the door she stops and does not turn round and says: 'He's had it worst. That's all.'",
|
||||
"choices": [ { "text": "Thank you, Mrs. Ostrowski.", "goto": -1 } ] } ] },
|
||||
{ "name": "nordberg", "sprite": "nordberg", "x": 124, "y": 144,
|
||||
"look": "Officer Nordberg in the shop window with a cast on each arm, waving at passers-by. He has been doing this for nine days and takings are up.",
|
||||
"synonyms": "norberg partner officer apprentice",
|
||||
"use_text": "You ask him to stop waving. Takings drop eleven per cent. You ask him to start waving again." }
|
||||
]
|
||||
}
|
||||
268
cases/case-03-big-gulch/rooms/room2.json
Normal file
@ -0,0 +1,268 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
187
cases/case-03-big-gulch/rooms/room3.json
Normal file
@ -0,0 +1,187 @@
|
||||
{
|
||||
"name": "Drebin & Son, Locksmiths — Friday, 4:00 PM",
|
||||
"enter_text": "The bell over the door goes at four o'clock exactly, regular as church.",
|
||||
"music": 4,
|
||||
"strokes": [
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 160,
|
||||
"h": 168,
|
||||
"color": 7,
|
||||
"meaning": "Floor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 160,
|
||||
"h": 62,
|
||||
"color": 8,
|
||||
"meaning": "Wall"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 60,
|
||||
"w": 160,
|
||||
"h": 3,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 63,
|
||||
"w": 160,
|
||||
"h": 105,
|
||||
"color": 7,
|
||||
"meaning": "Floor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 8,
|
||||
"y": 10,
|
||||
"w": 60,
|
||||
"h": 44,
|
||||
"color": 15,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 12,
|
||||
"y": 14,
|
||||
"w": 52,
|
||||
"h": 3,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 12,
|
||||
"y": 22,
|
||||
"w": 52,
|
||||
"h": 3,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 12,
|
||||
"y": 30,
|
||||
"w": 52,
|
||||
"h": 3,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 12,
|
||||
"y": 38,
|
||||
"w": 52,
|
||||
"h": 3,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 104,
|
||||
"y": 12,
|
||||
"w": 46,
|
||||
"h": 38,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 108,
|
||||
"y": 16,
|
||||
"w": 38,
|
||||
"h": 30,
|
||||
"color": 15,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 164,
|
||||
"w": 160,
|
||||
"h": 4,
|
||||
"color": 0,
|
||||
"meaning": "Wall"
|
||||
}
|
||||
}
|
||||
],
|
||||
"spawn": [
|
||||
18,
|
||||
148
|
||||
],
|
||||
"exits": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
2
|
||||
],
|
||||
"objects": [
|
||||
{
|
||||
"name": "cashbox",
|
||||
"sprite": "cashbox",
|
||||
"x": 40,
|
||||
"y": 118,
|
||||
"look": "The week's takings on the counter, counted, in a tin. Sixty-one dollars clear. You have left it out where it can be seen. Everything about this shop, for nine days, has been done for exactly this minute.",
|
||||
"synonyms": "tin money takings cash box",
|
||||
"use_text": "You leave it where it is. A man who moves the money when the bell goes is a man who was expecting the bell."
|
||||
},
|
||||
{
|
||||
"name": "safe03",
|
||||
"sprite": "safe03",
|
||||
"x": 122,
|
||||
"y": 116,
|
||||
"look": "The shop safe, standing open and empty, because Bergman took the door off in 1956 and never put it back, and because you have left it exactly as he left it.",
|
||||
"synonyms": "safe wall strongbox bergman",
|
||||
"use_text": "Bergman's safe. He made a statement, and the shop was shut for two years, and nobody in this street has said his name out loud since. You have kept his key board alphabetised and you have not moved his safe, and this afternoon eleven people are going to find out why."
|
||||
},
|
||||
{
|
||||
"name": "nordberg",
|
||||
"sprite": "nordberg",
|
||||
"x": 138,
|
||||
"y": 146,
|
||||
"look": "Officer Nordberg, in the back, out of sight, with two plaster casts and a radio he cannot hold.",
|
||||
"synonyms": "norberg partner officer apprentice",
|
||||
"use_text": "You put the radio on the bench and press the transmit key down with a two-pound weight, which is not in any manual, and which works."
|
||||
},
|
||||
{
|
||||
"name": "collector",
|
||||
"sprite": "collector",
|
||||
"x": 96,
|
||||
"y": 132,
|
||||
"look": "Camelhair overcoat, hat back, toothpick. He has come in at four o'clock on a Friday because the queue on your pavement has been noticed, and he is going to say it in front of the two customers still in the shop, because that is the entire point of it.",
|
||||
"synonyms": "man racketeer overcoat hat toothpick",
|
||||
"requires_flag": "street_trusts",
|
||||
"wins": true,
|
||||
"points": 30,
|
||||
"use_text": "He does it exactly the way Halloran said he would: in the shop, out loud, in front of witnesses, because the witnesses are what he is actually selling. Forty dollars. Fridays. Regular as church. You ask him to say it again. He says it again, louder, because he thinks he is being asked by a frightened locksmith and because he has said it in eleven shops on this street every Friday since March 1956 and nobody has ever once written it down. Officer Nordberg is in the back with a transmit key held down by a two-pound weight, and Captain Hocken is in a van at the end of Gulch Street with the whole thing on a wire, and Mr. Halloran's book has been on his own counter, in public, for two and a half years, and every Friday of it says SUNDRIES — 40.00. You arrest him at ten past four and advise him of his rights in the correct order and in full. Eleven statements are made in the next nine days. The ninth is Bergman's, who comes back from his sister's in Fresno to make it. The shop stays open. Police Squad cannot lawfully trade, so the department sells number nine to Mr. Halloran's nephew for a dollar, and the boy keeps the key board alphabetised, and Officer Nordberg still comes on Saturdays to wave at people from the window. Somewhere behind you Officer Al says something and everybody laughs and everybody freezes, smiling, holding it — except the bell over the door, which is still going. (+40)"
|
||||
},
|
||||
{
|
||||
"name": "customer",
|
||||
"sprite": "customer",
|
||||
"x": 60,
|
||||
"y": 140,
|
||||
"look": "Mrs. Ostrowski, in for another spare, who has picked exactly the wrong four o'clock to be standing in this shop and exactly the right one.",
|
||||
"synonyms": "woman lady mrs ostrowski witness",
|
||||
"use_text": "You catch her eye and you do not move your head, and she does not move hers, and she stays exactly where she is, which is in earshot."
|
||||
}
|
||||
]
|
||||
}
|
||||
12
cases/case-03-big-gulch/sprites.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"_comment": "Act I, monochrome. Shared sprites copied from case-01.",
|
||||
"keycutter": { "h": 18, "prompt": "A 1950s key cutting machine on a workbench with a rack of blank keys behind it, seen from the front, black and white monochrome grayscale only" },
|
||||
"shopcounter": { "h": 20, "prompt": "A small locksmith shop counter with a till and a board of hanging keys behind it, seen from the front, black and white monochrome grayscale only" },
|
||||
"customer": { "h": 24, "prompt": "An ordinary flustered 1950s housewife facing the viewer, headscarf and coat, holding a handbag open, apologetic expression, black and white monochrome grayscale only" },
|
||||
"collector": { "h": 26, "prompt": "A slick 1950s protection racketeer facing the viewer, camelhair overcoat, hat tilted back, toothpick, one hand in pocket, black and white monochrome grayscale only" },
|
||||
"grocer": { "h": 24, "prompt": "A worried 1950s shopkeeper in an apron facing the viewer, sleeves rolled, hands wringing a cloth, black and white monochrome grayscale only" },
|
||||
"safe03": { "h": 22, "prompt": "A small 1950s wall safe with the door open and empty, set in a shop wall, seen from the front, black and white monochrome grayscale only" },
|
||||
"shopfront": { "h": 30, "prompt": "A small 1950s corner shopfront with a striped awning and a hand painted sign, seen from the street, black and white monochrome grayscale only" },
|
||||
"ledger03": { "h": 11, "prompt": "A shop accounts book lying open flat with columns of weekly figures, single object, black and white monochrome grayscale only" },
|
||||
"cashbox": { "h": 11, "prompt": "A small metal shop cash box with the lid open, single object, black and white monochrome grayscale only" }
|
||||
}
|
||||
BIN
cases/case-03-big-gulch/sprites/al.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
cases/case-03-big-gulch/sprites/badge.png
Normal file
|
After Width: | Height: | Size: 245 B |
BIN
cases/case-03-big-gulch/sprites/body.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
cases/case-03-big-gulch/sprites/casefile.png
Normal file
|
After Width: | Height: | Size: 310 B |
BIN
cases/case-03-big-gulch/sprites/cashbox.png
Normal file
|
After Width: | Height: | Size: 281 B |
BIN
cases/case-03-big-gulch/sprites/coffeepot.png
Normal file
|
After Width: | Height: | Size: 500 B |
BIN
cases/case-03-big-gulch/sprites/collector.png
Normal file
|
After Width: | Height: | Size: 789 B |
BIN
cases/case-03-big-gulch/sprites/counter.png
Normal file
|
After Width: | Height: | Size: 741 B |
BIN
cases/case-03-big-gulch/sprites/customer.png
Normal file
|
After Width: | Height: | Size: 681 B |
BIN
cases/case-03-big-gulch/sprites/desk.png
Normal file
|
After Width: | Height: | Size: 686 B |
BIN
cases/case-03-big-gulch/sprites/ego.png
Normal file
|
After Width: | Height: | Size: 713 B |
BIN
cases/case-03-big-gulch/sprites/evidence.png
Normal file
|
After Width: | Height: | Size: 270 B |
BIN
cases/case-03-big-gulch/sprites/filecabinet.png
Normal file
|
After Width: | Height: | Size: 581 B |
BIN
cases/case-03-big-gulch/sprites/grocer.png
Normal file
|
After Width: | Height: | Size: 738 B |
BIN
cases/case-03-big-gulch/sprites/guest.png
Normal file
|
After Width: | Height: | Size: 748 B |
BIN
cases/case-03-big-gulch/sprites/hocken.png
Normal file
|
After Width: | Height: | Size: 729 B |
BIN
cases/case-03-big-gulch/sprites/johnny.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
cases/case-03-big-gulch/sprites/keycutter.png
Normal file
|
After Width: | Height: | Size: 800 B |
BIN
cases/case-03-big-gulch/sprites/ledger03.png
Normal file
|
After Width: | Height: | Size: 499 B |
BIN
cases/case-03-big-gulch/sprites/microscope.png
Normal file
|
After Width: | Height: | Size: 523 B |
BIN
cases/case-03-big-gulch/sprites/nordberg.png
Normal file
|
After Width: | Height: | Size: 841 B |
BIN
cases/case-03-big-gulch/sprites/olson.png
Normal file
|
After Width: | Height: | Size: 698 B |
BIN
cases/case-03-big-gulch/sprites/phone.png
Normal file
|
After Width: | Height: | Size: 332 B |
BIN
cases/case-03-big-gulch/sprites/revolver.png
Normal file
|
After Width: | Height: | Size: 281 B |
BIN
cases/case-03-big-gulch/sprites/safe03.png
Normal file
|
After Width: | Height: | Size: 711 B |
BIN
cases/case-03-big-gulch/sprites/shopcounter.png
Normal file
|
After Width: | Height: | Size: 712 B |
BIN
cases/case-03-big-gulch/sprites/shopfront.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
cases/case-03-big-gulch/sprites/squadcar.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
13
cases/case-04-revenge-remorse/game.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "Police Squad Quest — Case Four: Revenge and Remorse",
|
||||
"start_room": 0,
|
||||
"max_score": 100,
|
||||
"intro_text": "POLICE SQUAD. Somebody put a device under the west wing of the county courthouse at nine minutes past four and a man named Eddie Casales is in a cell for it because he was on the steps at four. My name is Drebin. Detective Lieutenant Frank Drebin, and I have read the departmental bomb procedure eleven times, and today I am going to have to use it. Type 'help'.",
|
||||
"death_text": "† OFFICER DOWN. Paragraph nine was wrong. The day restarts. †",
|
||||
"verbs": [
|
||||
{ "name": "use", "words": ["dust", "cuff", "book", "frisk", "radio", "arrest", "disarm", "cut", "plot", "mark", "consult", "halt", "check" ] },
|
||||
{ "name": "look", "words": ["investigate", "observe", "detect", "read"] },
|
||||
{ "name": "talk", "words": ["interrogate", "question", "brief"] }
|
||||
],
|
||||
"flags": { "briefed": false, "casales_cleared": false, "pattern_found": false, "device_found": false }
|
||||
}
|
||||
222
cases/case-04-revenge-remorse/rooms/room0.json
Normal file
@ -0,0 +1,222 @@
|
||||
{
|
||||
"name": "Police Squad HQ — Squad Room",
|
||||
"enter_text": "The squad room. Captain Hocken has asked you to go to the coroner's office.",
|
||||
"music": 3,
|
||||
"strokes": [
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 160,
|
||||
"h": 168,
|
||||
"color": 7,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 160,
|
||||
"h": 58,
|
||||
"color": 8,
|
||||
"meaning": "Wall"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 58,
|
||||
"w": 160,
|
||||
"h": 110,
|
||||
"color": 7,
|
||||
"meaning": "Floor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 55,
|
||||
"w": 160,
|
||||
"h": 3,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 100,
|
||||
"y": 12,
|
||||
"w": 46,
|
||||
"h": 32,
|
||||
"color": 15,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 122,
|
||||
"y": 12,
|
||||
"w": 2,
|
||||
"h": 32,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 14,
|
||||
"y": 14,
|
||||
"w": 42,
|
||||
"h": 30,
|
||||
"color": 15,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 18,
|
||||
"y": 20,
|
||||
"w": 30,
|
||||
"h": 3,
|
||||
"color": 8,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 18,
|
||||
"y": 28,
|
||||
"w": 24,
|
||||
"h": 3,
|
||||
"color": 8,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 5,
|
||||
"h": 168,
|
||||
"color": 0,
|
||||
"meaning": "Wall"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 163,
|
||||
"w": 160,
|
||||
"h": 5,
|
||||
"color": 0,
|
||||
"meaning": "Wall"
|
||||
}
|
||||
}
|
||||
],
|
||||
"spawn": [
|
||||
86,
|
||||
148
|
||||
],
|
||||
"exits": [
|
||||
null,
|
||||
1,
|
||||
null,
|
||||
null
|
||||
],
|
||||
"exit_flags": [
|
||||
"",
|
||||
"briefed",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"exit_blocked": [
|
||||
"",
|
||||
"The Captain would like you to visit the coroner's office. He has mentioned it.",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"objects": [
|
||||
{
|
||||
"name": "orders",
|
||||
"sprite": "casefile",
|
||||
"x": 62,
|
||||
"y": 130,
|
||||
"look": "POLICE SQUAD STANDING ORDERS — SECTION 14: SUSPECT DEVICES. Paragraph nine sets out the order in which leads are to be separated. It has been in this manual since 1949. It is four sentences long and you can say it from memory.",
|
||||
"synonyms": "section procedure paragraph standing orders rulebook nine",
|
||||
"takeable": true,
|
||||
"points": 5
|
||||
},
|
||||
{
|
||||
"name": "al",
|
||||
"sprite": "al",
|
||||
"x": 80,
|
||||
"y": 66,
|
||||
"look": "Officer Al. Shoes, nine inches of trouser, and whatever is happening above the ceiling.",
|
||||
"synonyms": "tall officer legs",
|
||||
"use_text": "You shake his hand. You have to jump."
|
||||
},
|
||||
{
|
||||
"name": "guest",
|
||||
"sprite": "guest",
|
||||
"x": 120,
|
||||
"y": 150,
|
||||
"look": "This week's television actor, mid-wave, dead since the opening titles.",
|
||||
"synonyms": "star actor man body",
|
||||
"use_text": "You check him for a pulse, as procedure requires. There isn't one. You note the time."
|
||||
},
|
||||
{
|
||||
"name": "hocken",
|
||||
"sprite": "hocken",
|
||||
"x": 106,
|
||||
"y": 126,
|
||||
"look": "Captain Ed Hocken. He would like you to go to the coroner's office. He would like it again in a moment.",
|
||||
"synonyms": "captain ed boss",
|
||||
"dialogue": [
|
||||
{
|
||||
"says": "Hocken: Frank. Courthouse, west wing, 4:09. Two dead, one of them a bailiff with thirty years in. Hocken: Go and see the coroner.",
|
||||
"choices": [
|
||||
{
|
||||
"text": "I've been to the coroner, Captain.",
|
||||
"goto": 1
|
||||
},
|
||||
{
|
||||
"text": "Tell me about Casales.",
|
||||
"goto": 2
|
||||
},
|
||||
{
|
||||
"text": "I'm ready, Captain.",
|
||||
"goto": 3,
|
||||
"sets_flag": "briefed",
|
||||
"points": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"says": "Hocken: Then go and see the coroner. You explain, again, that you have been to the coroner, that you went at seven this morning, and that his report is on the Captain's desk under the Captain's elbow. Hocken: Good. Go and see the coroner. This has happened four times. Nobody in Police Squad has ever found a way out of it except to stop asking, and so nobody asks, and so it has been happening since 1951.",
|
||||
"choices": [
|
||||
{
|
||||
"text": "I'll go and see the coroner.",
|
||||
"goto": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"says": "Hocken: Eddie Casales. Thirty-four, unemployed, a brother inside for arson in '54, and he was photographed on the courthouse steps at four o'clock by a newspaper man who was there for something else. Hocken: Frank, he was on the steps. Everybody in this building thinks that puts him in it. Hocken: Four o'clock puts him on the steps nine minutes before it went off. It also puts him a hundred feet from a west wing he has never once been inside.",
|
||||
"choices": [
|
||||
{
|
||||
"text": "I'm ready, Captain.",
|
||||
"goto": 3,
|
||||
"sets_flag": "briefed",
|
||||
"points": 10
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"says": "Hocken: Good. Hocken: And Frank — whoever did this has done it before. A man does not build a clean device the first time. Hocken: Go and see the coroner.",
|
||||
"choices": []
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
53
cases/case-04-revenge-remorse/rooms/room1.json
Normal file
@ -0,0 +1,53 @@
|
||||
{
|
||||
"name": "County Courthouse — West Wing",
|
||||
"enter_text": "Two dead and a hole where a corridor was. The rain is getting into it.",
|
||||
"music": 2,
|
||||
"strokes": [
|
||||
{ "Rect": { "x": 0, "y": 0, "w": 160, "h": 168, "color": 8, "meaning": "Floor" } },
|
||||
{ "Rect": { "x": 0, "y": 0, "w": 160, "h": 30, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 26, "w": 160, "h": 36, "color": 15, "meaning": "Wall" } },
|
||||
{ "Rect": { "x": 48, "y": 26, "w": 52, "h": 36, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 58, "y": 30, "w": 8, "h": 28, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 78, "y": 34, "w": 6, "h": 24, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 60, "w": 160, "h": 3, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 63, "w": 160, "h": 105, "color": 8, "meaning": "Floor" } },
|
||||
{ "Rect": { "x": 8, "y": 32, "w": 30, "h": 26, "color": 7, "meaning": "None" } },
|
||||
{ "Rect": { "x": 112, "y": 32, "w": 38, "h": 26, "color": 7, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 104, "w": 160, "h": 1, "color": 7, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 164, "w": 160, "h": 4, "color": 0, "meaning": "Wall" } }
|
||||
],
|
||||
"spawn": [18, 146],
|
||||
"exits": [null, 2, null, 0],
|
||||
"exit_flags": ["", "casales_cleared", "", ""],
|
||||
"exit_blocked": ["", "There is a man in a cell for this and you have not yet established whether he could have done it.", "", ""],
|
||||
"objects": [
|
||||
{ "name": "rubble04", "sprite": "rubble04", "x": 74, "y": 132,
|
||||
"look": "The seat of it, in a service corridor the public never sees, behind a door that is locked from the corridor side and has been since 1949.",
|
||||
"synonyms": "debris seat wreckage masonry hole",
|
||||
"use_text": "You work it by hand for two hours. The device sat against the inside face of a wall in a locked service corridor. Whoever placed it was on the wrong side of a door that only opens with a courthouse key, and Eddie Casales has never been inside this building, and the newspaper photograph that puts him on the steps at four o'clock also puts him a hundred feet from a corridor he could not have entered." },
|
||||
{ "name": "clockface", "sprite": "clockface", "x": 118, "y": 122,
|
||||
"look": "The clock, thrown clear, face down, the way they always are. Two bells, a dollar and a quarter at any hardware store in the state, and the minute hand snapped off short.",
|
||||
"synonyms": "clock alarm timer bells hands",
|
||||
"points": 20, "sets_flag": "casales_cleared",
|
||||
"use_text": "You turn it over. The minute hand has been snapped off deliberately and filed flat, which is not how an amateur builds a timer and is exactly how somebody builds one who has done it before and been let down by a minute hand. The maker filed the stub. Then he filed it again, at a slightly different angle, because the first pass was not square. A man who files a timing stub twice is a man who cannot leave a thing not-quite-right. That is not a temperament. That is a signature, and it will be on every other one he has ever built. (+20)" },
|
||||
{ "name": "judge", "sprite": "judge", "x": 40, "y": 126,
|
||||
"look": "Judge Aldous Pemberton, who has sat in this building for thirty-one years and who came down to the hole in his robes and has not gone back up.",
|
||||
"synonyms": "pemberton honour court man aldous",
|
||||
"use_text": "You ask him what was listed in the west wing this afternoon. He tells you: nothing. The west wing is records. Nothing has been listed in the west wing since 1949. He says it, and then he stops, and then he says: 'Records.'",
|
||||
"dialogue": [
|
||||
{ "says": "Pemberton: Thirty-one years I have sat in this building and I have never once been afraid of it.",
|
||||
"choices": [
|
||||
{ "text": "What's in the west wing, your Honour?", "goto": 1 },
|
||||
{ "text": "Did the bailiff have enemies?", "goto": 2 } ] },
|
||||
{ "says": "Pemberton: Records. Only records. Transcripts, exhibit registers, jury lists — nothing anybody would cross the road for. Pemberton: ...Exhibit registers.",
|
||||
"choices": [ { "text": "Going back how far?", "goto": 3 } ] },
|
||||
{ "says": "Pemberton: Bailiff Kearney had no enemies. Bailiff Kearney had a garden and a wife and thirty years of standing at a door. Pemberton: If somebody wanted Kearney they would not need eleven pounds of explosive to get him. They would need a Tuesday.",
|
||||
"choices": [ { "text": "Then they wanted the room.", "goto": 1 } ] },
|
||||
{ "says": "Pemberton: 1946. Pemberton: Detective, if a man wanted a particular exhibit register to stop existing, and did not know precisely which shelf, and did not much mind about the rest of the corridor — He does not finish it. He does not need to.",
|
||||
"choices": [ { "text": "Then we find out what burned.", "goto": -1 } ] } ] },
|
||||
{ "name": "casales", "sprite": "casales", "x": 138, "y": 144,
|
||||
"look": "Eddie Casales, brought over from the cells in shirtsleeves to be looked at by people, which is not a thing the standing orders permit and is a thing everybody does.",
|
||||
"synonyms": "eddie suspect prisoner accused",
|
||||
"use_text": "You take him to the service corridor door and you ask him to open it. He cannot. It takes a courthouse key and there are eleven of them and every one is accounted for, and he was photographed on the steps at four o'clock by a newspaper man who was there for something else entirely. You take him back and you write it down, and it is the first thing anybody has written down in his favour since Tuesday." }
|
||||
]
|
||||
}
|
||||
37
cases/case-04-revenge-remorse/rooms/room2.json
Normal file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"name": "Police Squad HQ — The Map Room",
|
||||
"enter_text": "Eleven years of unsolved devices on one board, and a piece of string.",
|
||||
"music": 4,
|
||||
"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": 10, "y": 8, "w": 62, "h": 50, "color": 15, "meaning": "None" } },
|
||||
{ "Rect": { "x": 14, "y": 12, "w": 54, "h": 42, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 104, "y": 10, "w": 48, "h": 46, "color": 15, "meaning": "None" } },
|
||||
{ "Rect": { "x": 108, "y": 14, "w": 40, "h": 3, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 108, "y": 22, "w": 30, "h": 3, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 108, "y": 30, "w": 36, "h": 3, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 164, "w": 160, "h": 4, "color": 0, "meaning": "Wall" } }
|
||||
],
|
||||
"spawn": [20, 146],
|
||||
"exits": [null, 3, null, 1],
|
||||
"exit_flags": ["", "pattern_found", "", ""],
|
||||
"exit_blocked": ["", "Four devices in eleven years and you have not yet worked out where the fifth one is.", "", ""],
|
||||
"objects": [
|
||||
{ "name": "citymap", "sprite": "citymap", "x": 40, "y": 108,
|
||||
"look": "The city, pinned. Four devices in eleven years, all unsolved, all filed separately, because they were eleven years apart and nobody has ever put them on the same board. You have put them on the same board.",
|
||||
"synonyms": "map board pins string city plot",
|
||||
"points": 25, "sets_flag": "pattern_found",
|
||||
"use_text": "You plot them by address and string them together. A bonded warehouse in 1947. A magistrates' annexe in 1951. A records store at the harbour board in 1955. The courthouse west wing on Tuesday. Every one of them held paper. Every one of them held paper about the same year — 1946 — and every one of them had a filed timing stub, filed twice, at slightly different angles, because the first pass was not square. There is a fifth building in this city that still holds 1946 paper, and it is on Alameda, and it opens at nine tomorrow. (There is no trick to this. The addresses are the addresses. You do not have to click the exact centre of the road.) (+25)" },
|
||||
{ "name": "olson", "sprite": "olson", "x": 116, "y": 122,
|
||||
"look": "Ted Olson, who has brought the four filed stubs from four separate property stores in four separate envelopes and laid them out in a row.",
|
||||
"synonyms": "ted scientist lab technician",
|
||||
"use_text": "Olson puts all four under the comparison scope at once, which requires him to build a rig out of two lab stands and a child. Olson: Same file. Same hand. Same second pass at four degrees off, every single time, for eleven years. Olson: Frank, whoever this is, he cannot leave a thing not-quite-right. That's not a habit. That's the whole man." },
|
||||
{ "name": "cell", "sprite": "cell", "x": 138, "y": 138,
|
||||
"look": "Down the corridor, Eddie Casales is still in a cell, because clearing a man takes longer than arresting him and always has.",
|
||||
"synonyms": "cells bars door jail",
|
||||
"use_text": "You go down and tell him what you have, which is not yet enough, and that it will be tomorrow. He says nobody has told him anything since Tuesday. You tell him that was wrong and that you are telling him now." }
|
||||
]
|
||||
}
|
||||
191
cases/case-04-revenge-remorse/rooms/room3.json
Normal file
@ -0,0 +1,191 @@
|
||||
{
|
||||
"name": "Alameda Street Records Annexe — 8:51 AM",
|
||||
"enter_text": "Nine minutes to opening, and it is under the stairs where it was always going to be.",
|
||||
"music": 5,
|
||||
"strokes": [
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 160,
|
||||
"h": 168,
|
||||
"color": 8,
|
||||
"meaning": "Floor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 160,
|
||||
"h": 62,
|
||||
"color": 0,
|
||||
"meaning": "Wall"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 60,
|
||||
"w": 160,
|
||||
"h": 3,
|
||||
"color": 15,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 63,
|
||||
"w": 160,
|
||||
"h": 105,
|
||||
"color": 8,
|
||||
"meaning": "Floor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 6,
|
||||
"y": 8,
|
||||
"w": 30,
|
||||
"h": 50,
|
||||
"color": 7,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 40,
|
||||
"y": 8,
|
||||
"w": 30,
|
||||
"h": 50,
|
||||
"color": 7,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 74,
|
||||
"y": 8,
|
||||
"w": 30,
|
||||
"h": 50,
|
||||
"color": 7,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 6,
|
||||
"y": 8,
|
||||
"w": 98,
|
||||
"h": 3,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 36,
|
||||
"y": 8,
|
||||
"w": 4,
|
||||
"h": 50,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 70,
|
||||
"y": 8,
|
||||
"w": 4,
|
||||
"h": 50,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 118,
|
||||
"y": 10,
|
||||
"w": 36,
|
||||
"h": 48,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 122,
|
||||
"y": 14,
|
||||
"w": 28,
|
||||
"h": 40,
|
||||
"color": 7,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 164,
|
||||
"w": 160,
|
||||
"h": 4,
|
||||
"color": 0,
|
||||
"meaning": "Wall"
|
||||
}
|
||||
}
|
||||
],
|
||||
"spawn": [
|
||||
18,
|
||||
148
|
||||
],
|
||||
"exits": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
2
|
||||
],
|
||||
"objects": [
|
||||
{
|
||||
"name": "orders",
|
||||
"sprite": "casefile",
|
||||
"x": 44,
|
||||
"y": 122,
|
||||
"look": "SECTION 14, PARAGRAPH NINE. Four sentences. In this manual since 1949. 'Where a device employs a mechanical timer, the officer shall separate the leads in the following order: earth, return, feed, trigger.'",
|
||||
"synonyms": "section procedure paragraph standing orders rulebook nine",
|
||||
"points": 15,
|
||||
"sets_flag": "read_para",
|
||||
"use_text": "You read paragraph nine aloud, twice, because that is what the paragraph is for. Earth, return, feed, trigger. Then you look at the device, and then you look at the paragraph again. Paragraph nine was written in 1949, for a mechanical timer built in 1949, in which the trigger lead was the last thing energised. On this device — on all four of his devices, and you have seen the photographs of all four — the trigger lead is energised *first*, because he files the stub twice and the second pass shortens the contact throw. Take earth first on this one and it completes. The manual is wrong. The manual has been wrong since 1949. It has never been wrong before because nobody has ever reached paragraph nine and lived to file a note about it. (+15)"
|
||||
},
|
||||
{
|
||||
"name": "bomb",
|
||||
"sprite": "bomb",
|
||||
"x": 88,
|
||||
"y": 130,
|
||||
"look": "Under the stairs, against the inside face of the wall, eleven pounds of it wired to a dollar-and-a-quarter alarm clock with two bells. The minute hand has been snapped off and filed flat, and then filed again, at about four degrees off square, because the first pass was not right. Eleven minutes.",
|
||||
"synonyms": "device explosive charge timer wires",
|
||||
"requires_flag": "read_para",
|
||||
"wins": true,
|
||||
"points": 25,
|
||||
"use_text": "Standing orders require you to establish a cordon and wait for the bomb squad. The bomb squad is nineteen minutes out. The clock says eleven. So you kneel down under a staircase in an empty records annexe and you do the thing the manual tells you not to do, in the order the manual tells you not to do it, because you have read the manual eleven times and today you also read the device. Trigger. Feed. Return. Earth. Backwards. Every step of it backwards, deliberately, by a man who has never knowingly departed from a written instruction in nineteen years, and who is departing from this one because the instruction is wrong and he can prove it in four sentences. The bells do not ring. Eddie Casales is released at eleven o'clock and nobody apologises to him, because a department does not apologise, so you do it yourself, on the steps, in front of a newspaper man who is there for something else entirely. They find the man on Thursday. A court clerk, twenty-two years in, who in 1946 signed an exhibit register he should not have signed and has spent eleven years removing buildings that contained a copy of it, and who could not, at any point in those eleven years, leave a timing stub not-quite-square. Section 14, paragraph nine is amended in the spring. The amendment is four sentences long. It is signed by Captain Ed Hocken, who also asks you, that same afternoon, whether you have been to see the coroner. Somewhere behind you Officer Al says something and everybody laughs and everybody freezes, smiling, holding it — except the clock, which is still going, and which will now go on going for another forty years in a property store in a box. (+25)"
|
||||
},
|
||||
{
|
||||
"name": "casales",
|
||||
"sprite": "casales",
|
||||
"x": 130,
|
||||
"y": 146,
|
||||
"look": "Eddie Casales, brought along in the car because you were not leaving him in a cell for a fifth day, standing well back on the pavement where you put him.",
|
||||
"synonyms": "eddie suspect prisoner accused",
|
||||
"use_text": "You tell him to stand across the road and if the bells ring to run and keep running. He asks why you brought him. You tell him that a man who has been in a cell for four days for something he did not do is entitled to watch it come off him."
|
||||
},
|
||||
{
|
||||
"name": "clockface",
|
||||
"sprite": "clockface",
|
||||
"x": 62,
|
||||
"y": 148,
|
||||
"look": "The clock on the device. Two bells, a dollar and a quarter, minute hand filed twice. Nine minutes.",
|
||||
"synonyms": "clock alarm timer bells",
|
||||
"kills": true,
|
||||
"use_text": "You reach for the clock, because the clock is the part that is counting and the clock is what a reasonable man reaches for. Paragraph nine does not mention the clock. Paragraph nine has not mentioned the clock since 1949."
|
||||
}
|
||||
]
|
||||
}
|
||||
12
cases/case-04-revenge-remorse/sprites.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"_comment": "Act I, monochrome. Shared sprites copied from case-01.",
|
||||
"courthouse": { "h": 30, "prompt": "A 1950s civic courthouse building with columns, one wing blown open and smoking, seen from the street, black and white monochrome grayscale only" },
|
||||
"rubble04": { "h": 14, "prompt": "A heap of smoking broken masonry and splintered courtroom benches, seen from the side, black and white monochrome grayscale only" },
|
||||
"bomb": { "h": 16, "prompt": "A crude 1950s time bomb, sticks taped to an alarm clock with coloured wires, sitting on a floor, seen from the front, black and white monochrome grayscale only" },
|
||||
"manual": { "h": 12, "prompt": "A slim official procedure manual booklet lying open flat with numbered paragraphs, single object, black and white monochrome grayscale only" },
|
||||
"casales": { "h": 25, "prompt": "A gaunt frightened 1950s man in shirtsleeves facing the viewer, unshaven, hands at his sides, hollow eyed, black and white monochrome grayscale only" },
|
||||
"citymap": { "h": 26, "prompt": "A large city street map pinned to a board with coloured pins and string between them, seen straight on, black and white monochrome grayscale only" },
|
||||
"judge": { "h": 25, "prompt": "A stern elderly 1950s judge in robes facing the viewer, half moon spectacles, arms folded, black and white monochrome grayscale only" },
|
||||
"clockface": { "h": 13, "prompt": "A cheap 1950s wind up alarm clock with two bells on top, seen from the front, black and white monochrome grayscale only" },
|
||||
"cell": { "h": 28, "prompt": "A 1950s police cell door of heavy iron bars with a small hatch, seen straight on, closed, black and white monochrome grayscale only" }
|
||||
}
|
||||
BIN
cases/case-04-revenge-remorse/sprites/al.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
cases/case-04-revenge-remorse/sprites/badge.png
Normal file
|
After Width: | Height: | Size: 245 B |
BIN
cases/case-04-revenge-remorse/sprites/body.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
cases/case-04-revenge-remorse/sprites/bomb.png
Normal file
|
After Width: | Height: | Size: 531 B |
BIN
cases/case-04-revenge-remorse/sprites/casales.png
Normal file
|
After Width: | Height: | Size: 670 B |
BIN
cases/case-04-revenge-remorse/sprites/casefile.png
Normal file
|
After Width: | Height: | Size: 310 B |
BIN
cases/case-04-revenge-remorse/sprites/cell.png
Normal file
|
After Width: | Height: | Size: 934 B |
BIN
cases/case-04-revenge-remorse/sprites/citymap.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
cases/case-04-revenge-remorse/sprites/clockface.png
Normal file
|
After Width: | Height: | Size: 270 B |
BIN
cases/case-04-revenge-remorse/sprites/coffeepot.png
Normal file
|
After Width: | Height: | Size: 500 B |
BIN
cases/case-04-revenge-remorse/sprites/counter.png
Normal file
|
After Width: | Height: | Size: 741 B |
BIN
cases/case-04-revenge-remorse/sprites/courthouse.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
cases/case-04-revenge-remorse/sprites/desk.png
Normal file
|
After Width: | Height: | Size: 686 B |
BIN
cases/case-04-revenge-remorse/sprites/ego.png
Normal file
|
After Width: | Height: | Size: 713 B |
BIN
cases/case-04-revenge-remorse/sprites/evidence.png
Normal file
|
After Width: | Height: | Size: 270 B |
BIN
cases/case-04-revenge-remorse/sprites/filecabinet.png
Normal file
|
After Width: | Height: | Size: 581 B |
BIN
cases/case-04-revenge-remorse/sprites/guest.png
Normal file
|
After Width: | Height: | Size: 748 B |
BIN
cases/case-04-revenge-remorse/sprites/hocken.png
Normal file
|
After Width: | Height: | Size: 729 B |
BIN
cases/case-04-revenge-remorse/sprites/johnny.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
cases/case-04-revenge-remorse/sprites/judge.png
Normal file
|
After Width: | Height: | Size: 625 B |
BIN
cases/case-04-revenge-remorse/sprites/manual.png
Normal file
|
After Width: | Height: | Size: 448 B |
BIN
cases/case-04-revenge-remorse/sprites/microscope.png
Normal file
|
After Width: | Height: | Size: 523 B |
BIN
cases/case-04-revenge-remorse/sprites/nordberg.png
Normal file
|
After Width: | Height: | Size: 841 B |
BIN
cases/case-04-revenge-remorse/sprites/olson.png
Normal file
|
After Width: | Height: | Size: 698 B |
BIN
cases/case-04-revenge-remorse/sprites/phone.png
Normal file
|
After Width: | Height: | Size: 332 B |
BIN
cases/case-04-revenge-remorse/sprites/revolver.png
Normal file
|
After Width: | Height: | Size: 281 B |
BIN
cases/case-04-revenge-remorse/sprites/rubble04.png
Normal file
|
After Width: | Height: | Size: 706 B |
BIN
cases/case-04-revenge-remorse/sprites/squadcar.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
13
cases/case-05-butler-did-it/game.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "Police Squad Quest — Case Five: The Butler Did It",
|
||||
"start_room": 0,
|
||||
"max_score": 100,
|
||||
"intro_text": "POLICE SQUAD. A twelve-year-old girl went missing from her own birthday party between the cake and the candles, in a house with forty guests and one door. My name is Drebin. Detective Lieutenant Frank Drebin, and I have read the literature, and the literature is clear that in a house like this it is always the butler, which is precisely why it will not be. Type 'help'.",
|
||||
"death_text": "† OFFICER DOWN. The party continues. The day restarts. †",
|
||||
"verbs": [
|
||||
{ "name": "use", "words": ["dust", "cuff", "book", "frisk", "radio", "arrest", "seal", "bag", "label", "weigh", "halt", "search", "check"] },
|
||||
{ "name": "look", "words": ["investigate", "observe", "detect"] },
|
||||
{ "name": "talk", "words": ["interrogate", "question", "brief"] }
|
||||
],
|
||||
"flags": { "briefed": false, "cake_sealed": false, "route_found": false, "motive_found": false }
|
||||
}
|
||||
52
cases/case-05-butler-did-it/rooms/room0.json
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
"name": "Police Squad HQ — Squad Room",
|
||||
"enter_text": "The squad room. Somebody has left a book on your desk about country house murders.",
|
||||
"music": 3,
|
||||
"strokes": [
|
||||
{ "Rect": { "x": 0, "y": 0, "w": 160, "h": 168, "color": 7, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 0, "w": 160, "h": 58, "color": 8, "meaning": "Wall" } },
|
||||
{ "Rect": { "x": 0, "y": 58, "w": 160, "h": 110, "color": 7, "meaning": "Floor" } },
|
||||
{ "Rect": { "x": 0, "y": 55, "w": 160, "h": 3, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 100, "y": 12, "w": 46, "h": 32, "color": 15, "meaning": "None" } },
|
||||
{ "Rect": { "x": 122, "y": 12, "w": 2, "h": 32, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 14, "y": 14, "w": 42, "h": 30, "color": 15, "meaning": "None" } },
|
||||
{ "Rect": { "x": 18, "y": 20, "w": 30, "h": 3, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 18, "y": 28, "w": 24, "h": 3, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 0, "w": 5, "h": 168, "color": 0, "meaning": "Wall" } },
|
||||
{ "Rect": { "x": 0, "y": 163, "w": 160, "h": 5, "color": 0, "meaning": "Wall" } }
|
||||
],
|
||||
"spawn": [86, 148],
|
||||
"exits": [null, 1, null, null],
|
||||
"exit_flags": ["", "briefed", "", ""],
|
||||
"exit_blocked": ["", "A twelve-year-old is missing and you have not been briefed. Get briefed.", "", ""],
|
||||
"objects": [
|
||||
{ "name": "casefile", "sprite": "casefile", "x": 62, "y": 130,
|
||||
"look": "VANE, ELEANOR, 12. Missing from 4 Cranbourne Drive between 7:40 and 7:44 PM, being the interval between the cake being wheeled in and the candles being lit. Forty guests. One front door, watched all evening by a hired man on the step. No windows opened.",
|
||||
"synonyms": "file folder report papers case eleanor vane", "takeable": true, "points": 5 },
|
||||
{ "name": "al", "sprite": "al", "x": 80, "y": 66,
|
||||
"look": "Officer Al. Shoes, and about nine inches of trouser, and a conversation happening above the ceiling.",
|
||||
"synonyms": "tall officer legs", "use_text": "You shake his hand. You have to jump." },
|
||||
{ "name": "guest", "sprite": "guest", "x": 120, "y": 150,
|
||||
"look": "This week's television actor, mid-wave, dead since the opening titles. Nobody has moved him.",
|
||||
"synonyms": "star actor body", "use_text": "You check him for a pulse, as procedure requires. There isn't one. You note the time." },
|
||||
{ "name": "hocken", "sprite": "hocken", "x": 106, "y": 126,
|
||||
"look": "Captain Ed Hocken, holding a guest list with forty names on it and one crossed out.",
|
||||
"synonyms": "captain ed boss",
|
||||
"dialogue": [
|
||||
{ "says": "Hocken: Eleanor Vane, twelve years old, gone out of her own birthday party in four minutes. Father's Cornelius Vane — shipping, mostly. Hocken: Forty guests, one door, a man on the step the whole evening. Nobody came out of that house.",
|
||||
"choices": [
|
||||
{ "text": "Then she didn't come out of the house.", "goto": 1 },
|
||||
{ "text": "Who's on the staff?", "goto": 2 },
|
||||
{ "text": "I'll take it, Captain.", "goto": 3, "sets_flag": "briefed", "points": 10 } ] },
|
||||
{ "says": "Hocken: That's what I said. Everybody looked at me. Hocken: Frank, forty people saw a cake wheeled in and four minutes later there was a girl missing and a cake with no candles lit.",
|
||||
"choices": [ { "text": "Who's on the staff?", "goto": 2 } ] },
|
||||
{ "says": "Hocken: Cook, two hired girls for the evening, a governess, and a butler. Hocken: The butler's been with the family thirty-one years. Everybody in that house says the same three words about him and the three words are 'not the butler'.",
|
||||
"choices": [
|
||||
{ "text": "Then it isn't the butler.", "goto": 4 },
|
||||
{ "text": "I'll take it, Captain.", "goto": 3, "sets_flag": "briefed", "points": 10 } ] },
|
||||
{ "says": "Hocken: Good. And Frank — the cake's still in that house and forty people have had a fork in it. Hocken: Whatever that cake is, it is the only object in this case that was in the room at 7:40 and is still in the room now. Treat it like a body.",
|
||||
"choices": [] },
|
||||
{ "says": "Hocken: You haven't even been to the house. You explain that the literature on this class of offence is unanimous that it is the butler, that a detective who arrives at a house of this description and immediately suspects the butler is not conducting an investigation but repeating a convention, and that you therefore intend to clear every other person in the building first, on principle. Hocken: ...How many other people? You tell him forty-four.",
|
||||
"choices": [ { "text": "I'll take it, Captain.", "goto": 3, "sets_flag": "briefed", "points": 10 } ] } ] }
|
||||
]
|
||||
}
|
||||
42
cases/case-05-butler-did-it/rooms/room1.json
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
"name": "4 Cranbourne Drive — The Ballroom",
|
||||
"enter_text": "Forty guests, forty coats, and a cake that nobody has been allowed to move since a quarter to eight.",
|
||||
"music": 2,
|
||||
"strokes": [
|
||||
{ "Rect": { "x": 0, "y": 0, "w": 160, "h": 168, "color": 7, "meaning": "Floor" } },
|
||||
{ "Rect": { "x": 0, "y": 0, "w": 160, "h": 60, "color": 15, "meaning": "Wall" } },
|
||||
{ "Rect": { "x": 0, "y": 12, "w": 160, "h": 3, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 58, "w": 160, "h": 3, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 61, "w": 160, "h": 107, "color": 7, "meaning": "Floor" } },
|
||||
{ "Rect": { "x": 12, "y": 20, "w": 30, "h": 34, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 16, "y": 24, "w": 22, "h": 26, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 62, "y": 18, "w": 36, "h": 36, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 66, "y": 22, "w": 28, "h": 28, "color": 15, "meaning": "None" } },
|
||||
{ "Rect": { "x": 118, "y": 20, "w": 30, "h": 34, "color": 0, "meaning": "None" } },
|
||||
{ "Rect": { "x": 122, "y": 24, "w": 22, "h": 26, "color": 8, "meaning": "None" } },
|
||||
{ "Rect": { "x": 0, "y": 164, "w": 160, "h": 4, "color": 0, "meaning": "Wall" } }
|
||||
],
|
||||
"spawn": [18, 146],
|
||||
"exits": [null, 2, null, 0],
|
||||
"exit_flags": ["", "cake_sealed", "", ""],
|
||||
"exit_blocked": ["", "There is one object in this room that was here at 7:40 and is here now, and you have not secured it.", "", ""],
|
||||
"objects": [
|
||||
{ "name": "cake", "sprite": "cake", "x": 78, "y": 122,
|
||||
"look": "Four tiers, on a trolley, wheeled in at 7:40 by a butler and never lit. Forty guests have had a fork in it in the two hours since, because nobody thought to stop them, because it is a cake.",
|
||||
"synonyms": "trolley tiers candles birthday",
|
||||
"points": 25, "sets_flag": "cake_sealed",
|
||||
"use_text": "You treat it as an exhibit, because Captain Hocken told you to treat it like a body and you do what you are told. You photograph it in situ. You measure the trolley. You take the weight of the cake on the kitchen scales with a witness, and you seal, label and initial every one of the forty forks. Forty-one people in this house watch a police detective weigh a birthday cake, and every one of them thinks less of him, and one of them thinks a great deal less of him and cannot entirely hide it. The cake weighs eleven pounds under what a cake of that size and construction should weigh, and it weighs it in the bottom tier, which nobody cut, because nobody cuts the bottom tier at a children's party. (+25)" },
|
||||
{ "name": "tycoon", "sprite": "tycoon", "x": 42, "y": 130,
|
||||
"look": "Cornelius Vane. Shipping, mostly. He has been on the telephone to three men since eight o'clock and none of them were police.",
|
||||
"synonyms": "cornelius vane father shipping man",
|
||||
"use_text": "You ask him who he has been calling. He tells you: his lawyer, his broker, and a man in Long Beach whose name he would rather not give, and he gives it, because you asked him plainly and he is too tired to do anything else." },
|
||||
{ "name": "governess", "sprite": "governess", "x": 116, "y": 128,
|
||||
"look": "Miss Aldritch, governess, four years in the house. She was in the ballroom at 7:40 in front of forty witnesses and has said so eleven times.",
|
||||
"synonyms": "aldritch miss woman teacher",
|
||||
"use_text": "You clear her in nine minutes, thoroughly, with three independent witnesses and a photograph. You then clear the cook, the two hired girls, the man on the step, and thirty-eight of the forty guests, in order, over five hours, while a butler stands in the corner of the room holding a tray." },
|
||||
{ "name": "butler", "sprite": "butler", "x": 138, "y": 144,
|
||||
"look": "Hobbs. Thirty-one years with the family. He wheeled the cake in at 7:40 and has been standing in the corner of this room ever since, holding a tray, waiting to be asked. You are not going to ask him, because the literature is unanimous, and a detective who arrives at a house like this and immediately suspects the butler is not investigating, he is quoting.",
|
||||
"synonyms": "hobbs servant manservant tray",
|
||||
"use_text": "You do not question the butler. You have now not questioned the butler for five hours. He has brought you a cup of tea twice. The second time he stood beside you for slightly longer than a man stands who is putting down a cup." }
|
||||
]
|
||||
}
|
||||
161
cases/case-05-butler-did-it/rooms/room2.json
Normal file
@ -0,0 +1,161 @@
|
||||
{
|
||||
"name": "4 Cranbourne Drive — The Service Kitchen",
|
||||
"enter_text": "Below stairs. A range, a scale, and a hatch in the wall that goes up.",
|
||||
"music": 2,
|
||||
"strokes": [
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 160,
|
||||
"h": 168,
|
||||
"color": 8,
|
||||
"meaning": "Floor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 160,
|
||||
"h": 64,
|
||||
"color": 7,
|
||||
"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": 8,
|
||||
"meaning": "Floor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 8,
|
||||
"y": 10,
|
||||
"w": 50,
|
||||
"h": 22,
|
||||
"color": 15,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 8,
|
||||
"y": 38,
|
||||
"w": 50,
|
||||
"h": 20,
|
||||
"color": 15,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 108,
|
||||
"y": 10,
|
||||
"w": 44,
|
||||
"h": 48,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 112,
|
||||
"y": 14,
|
||||
"w": 36,
|
||||
"h": 40,
|
||||
"color": 15,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 104,
|
||||
"w": 160,
|
||||
"h": 1,
|
||||
"color": 7,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 164,
|
||||
"w": 160,
|
||||
"h": 4,
|
||||
"color": 0,
|
||||
"meaning": "Wall"
|
||||
}
|
||||
}
|
||||
],
|
||||
"spawn": [
|
||||
18,
|
||||
148
|
||||
],
|
||||
"exits": [
|
||||
null,
|
||||
3,
|
||||
null,
|
||||
1
|
||||
],
|
||||
"exit_flags": [
|
||||
"",
|
||||
"route_found",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"exit_blocked": [
|
||||
"",
|
||||
"Nobody came out of that house. Work out how she left the room.",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"objects": [
|
||||
{
|
||||
"name": "kitchenrange",
|
||||
"sprite": "kitchenrange",
|
||||
"x": 40,
|
||||
"y": 122,
|
||||
"look": "The range, and beside it the scales you weighed the cake on, and beside those a marble slab with a shape in the flour where something four-tier and heavy stood for most of the afternoon.",
|
||||
"synonyms": "range stove scales slab flour oven",
|
||||
"use_text": "You measure the shape in the flour. The cake that stood on this slab this afternoon was four inches deeper than the cake standing in the ballroom, and eleven pounds heavier, and it left at 7:38."
|
||||
},
|
||||
{
|
||||
"name": "dumbwaiter",
|
||||
"sprite": "dumbwaiter",
|
||||
"x": 122,
|
||||
"y": 118,
|
||||
"look": "The dumbwaiter. Hand-hauled, 1911, and it runs from this kitchen to the ballroom serving passage and nowhere else. The platform is twenty-two inches square. A grown man could not use it. A twelve-year-old could, if somebody she trusted asked her to get in.",
|
||||
"synonyms": "hatch lift platform ropes shaft",
|
||||
"points": 25,
|
||||
"sets_flag": "route_found",
|
||||
"use_text": "You get down and look properly. There is a ribbon caught in the runner. There is chalk from a party shoe on the platform. And there are eleven pounds of cake, in a linen sack, wedged behind the counterweight, where it has been since 7:38, because the bottom tier of that trolley had to be light enough for one man to wheel and hollow enough for a girl to sit in. She was in the cake. She was in the cake for four minutes while forty people looked at it, and then the trolley went back out through the serving passage at 7:44 and down here, and she got out and went up the dumbwaiter to the linen room, laughing, because somebody she has known her whole life told her it was the best birthday trick anybody had ever done. Nobody came out of that house. Nobody had to. (+30)"
|
||||
},
|
||||
{
|
||||
"name": "ransomnote",
|
||||
"sprite": "ransomnote",
|
||||
"x": 76,
|
||||
"y": 134,
|
||||
"look": "The note, delivered to the front step at nine o'clock, cut from a newspaper. Two hundred thousand dollars, unmarked, Thursday.",
|
||||
"synonyms": "note ransom letter demand paper",
|
||||
"requires_flag": "route_found",
|
||||
"use_text": "You look at it under the kitchen light. The letters are cut from the Tribune. The paste is kitchen paste. The cuts are square, and every one of them is square, forty-one letters and not one of them out by a degree, done at a table with a straight edge by somebody who could not bear to do it badly. Nobody who has taken a child for money cuts forty-one letters square."
|
||||
}
|
||||
]
|
||||
}
|
||||
170
cases/case-05-butler-did-it/rooms/room3.json
Normal file
@ -0,0 +1,170 @@
|
||||
{
|
||||
"name": "4 Cranbourne Drive — The Linen Room",
|
||||
"enter_text": "Top of the house. A dumbwaiter hatch, a stack of sheets, and a twelve-year-old asleep on them.",
|
||||
"music": 1,
|
||||
"strokes": [
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 160,
|
||||
"h": 168,
|
||||
"color": 7,
|
||||
"meaning": "Floor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 160,
|
||||
"h": 62,
|
||||
"color": 8,
|
||||
"meaning": "Wall"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 60,
|
||||
"w": 160,
|
||||
"h": 3,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 63,
|
||||
"w": 160,
|
||||
"h": 105,
|
||||
"color": 7,
|
||||
"meaning": "Floor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 10,
|
||||
"y": 8,
|
||||
"w": 60,
|
||||
"h": 50,
|
||||
"color": 15,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 10,
|
||||
"y": 20,
|
||||
"w": 60,
|
||||
"h": 3,
|
||||
"color": 8,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 10,
|
||||
"y": 32,
|
||||
"w": 60,
|
||||
"h": 3,
|
||||
"color": 8,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 10,
|
||||
"y": 44,
|
||||
"w": 60,
|
||||
"h": 3,
|
||||
"color": 8,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 118,
|
||||
"y": 14,
|
||||
"w": 34,
|
||||
"h": 40,
|
||||
"color": 0,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 122,
|
||||
"y": 18,
|
||||
"w": 26,
|
||||
"h": 32,
|
||||
"color": 15,
|
||||
"meaning": "None"
|
||||
}
|
||||
},
|
||||
{
|
||||
"Rect": {
|
||||
"x": 0,
|
||||
"y": 164,
|
||||
"w": 160,
|
||||
"h": 4,
|
||||
"color": 0,
|
||||
"meaning": "Wall"
|
||||
}
|
||||
}
|
||||
],
|
||||
"spawn": [
|
||||
20,
|
||||
148
|
||||
],
|
||||
"exits": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
2
|
||||
],
|
||||
"objects": [
|
||||
{
|
||||
"name": "daughter",
|
||||
"sprite": "daughter",
|
||||
"x": 50,
|
||||
"y": 128,
|
||||
"look": "Eleanor Vane, twelve, asleep on a stack of sheets in a linen room at the top of her own house, with a balloon tied to her wrist. She has been here since 7:46. She has not been frightened for one minute of it.",
|
||||
"synonyms": "eleanor girl child vane",
|
||||
"points": 10,
|
||||
"sets_flag": "found_girl",
|
||||
"use_text": "You wake her carefully and you sit on the floor so you are not standing over her. She tells you it was a trick for her father, and that she was to stay up here and be very quiet until midnight and then come down and it would be the best surprise anybody ever had, and that Hobbs said her father would laugh. She says: 'Is he laughing?' You tell her the truth, because you always do: not yet. (+15)"
|
||||
},
|
||||
{
|
||||
"name": "dumbwaiter",
|
||||
"sprite": "dumbwaiter",
|
||||
"x": 132,
|
||||
"y": 118,
|
||||
"look": "The top of the shaft. Chalk from a party shoe on the sill, going out, not in.",
|
||||
"synonyms": "hatch lift shaft ropes",
|
||||
"use_text": "She came up it herself, at 7:46, and shut the hatch behind her, because she was told it was part of the trick and she is twelve and it was the best day of her life."
|
||||
},
|
||||
{
|
||||
"name": "butler",
|
||||
"sprite": "butler",
|
||||
"x": 96,
|
||||
"y": 140,
|
||||
"look": "Hobbs, at the top of the house, standing in a linen room doorway, holding a tray with a glass of milk on it that has been on that tray for four hours. Thirty-one years. He has been waiting all evening for one police officer to ask him one question.",
|
||||
"synonyms": "hobbs servant manservant tray",
|
||||
"requires_flag": "found_girl",
|
||||
"wins": true,
|
||||
"points": 25,
|
||||
"use_text": "You ask him. It takes eleven seconds and he has been waiting five hours for it. Cornelius Vane is going under. Shipping, mostly. The house goes on Thursday and the staff went in September and Hobbs has not been paid since August and has not mentioned it, because he has been in this house thirty-one years and the girl is twelve and somebody had to give her a birthday. He wheeled her out in her own cake because she asked him for a trick to play on her father. Then, at nine o'clock, entirely on his own, he cut forty-one letters square out of the Tribune and pasted them on a sheet of paper and left it on the step, for two hundred thousand dollars, from a man who has not got two hundred dollars, so that Cornelius Vane would have to stand in his own hall in front of forty people and find out what it feels like to be about to lose something. He never intended to collect. There is nowhere in the note to send it. You arrest him and advise him of his rights in the correct order and in full, and he thanks you, and he puts the tray down first, because you do not go anywhere holding a tray. On the way out he says the only thing he says all night that is not an answer to a question: 'You were the only one who never once looked at me. Thirty-one years and I have never been so nearly invisible in my life.' You tell him you had read that it is always the butler and had therefore decided it could not be, and that this was, on reflection, the single stupidest professional decision of your career. He says: 'It usually is us, sir. There are simply not very many of us left.' Somewhere below, forty guests are still in the ballroom, and Officer Al says something, and everybody laughs, and everybody freezes, smiling, holding it — except a twelve-year-old at the top of the house, who is asking, again, whether her father is laughing yet. (+30)"
|
||||
},
|
||||
{
|
||||
"name": "tycoon",
|
||||
"sprite": "tycoon",
|
||||
"x": 26,
|
||||
"y": 142,
|
||||
"look": "Cornelius Vane, on the stairs, who has come up two flights and stopped one short of the landing and cannot make himself come up the last one.",
|
||||
"synonyms": "cornelius vane father man",
|
||||
"use_text": "You tell him she is asleep on the sheets and she is fine and she has a balloon on her wrist. He does not move for a while. Then he asks, and he asks it like a man asking about the weather: whether the staff have been paid."
|
||||
}
|
||||
]
|
||||
}
|
||||
12
cases/case-05-butler-did-it/sprites.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"_comment": "Act I, monochrome. Shared sprites copied from case-01.",
|
||||
"butler": { "h": 26, "prompt": "A tall impeccable 1950s butler facing the viewer, tailcoat and white gloves, silver tray under one arm, utterly expressionless, black and white monochrome grayscale only" },
|
||||
"cake": { "h": 16, "prompt": "An enormous tiered birthday cake with candles on a wheeled trolley, seen from the side, black and white monochrome grayscale only" },
|
||||
"tycoon": { "h": 26, "prompt": "A stout wealthy 1950s businessman facing the viewer, dinner jacket, cummerbund, cigar, florid distressed face, black and white monochrome grayscale only" },
|
||||
"daughter": { "h": 20, "prompt": "A 1950s girl of about twelve in a party dress facing the viewer, hair ribbon, holding a single balloon, black and white monochrome grayscale only" },
|
||||
"governess": { "h": 24, "prompt": "A severe 1950s governess in a dark high collared dress facing the viewer, hair scraped back, hands clasped at her waist, black and white monochrome grayscale only" },
|
||||
"mansion": { "h": 30, "prompt": "The front of a large 1950s mansion with a portico and steps, seen from the drive at night, black and white monochrome grayscale only" },
|
||||
"dumbwaiter": { "h": 22, "prompt": "An open dumbwaiter hatch in a kitchen wall with ropes and a small platform inside, seen from the front, black and white monochrome grayscale only" },
|
||||
"ransomnote": { "h": 10, "prompt": "A ransom note made of cut out newspaper letters pasted on paper, lying flat, single object, black and white monochrome grayscale only" },
|
||||
"kitchenrange": { "h": 22, "prompt": "A large 1950s institutional kitchen range with pans on it and a rack above, seen from the front, black and white monochrome grayscale only" }
|
||||
}
|
||||
BIN
cases/case-05-butler-did-it/sprites/al.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
cases/case-05-butler-did-it/sprites/badge.png
Normal file
|
After Width: | Height: | Size: 245 B |
BIN
cases/case-05-butler-did-it/sprites/body.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
cases/case-05-butler-did-it/sprites/butler.png
Normal file
|
After Width: | Height: | Size: 540 B |
BIN
cases/case-05-butler-did-it/sprites/cake.png
Normal file
|
After Width: | Height: | Size: 644 B |
BIN
cases/case-05-butler-did-it/sprites/casefile.png
Normal file
|
After Width: | Height: | Size: 310 B |
BIN
cases/case-05-butler-did-it/sprites/coffeepot.png
Normal file
|
After Width: | Height: | Size: 500 B |
BIN
cases/case-05-butler-did-it/sprites/counter.png
Normal file
|
After Width: | Height: | Size: 741 B |
BIN
cases/case-05-butler-did-it/sprites/daughter.png
Normal file
|
After Width: | Height: | Size: 582 B |
BIN
cases/case-05-butler-did-it/sprites/desk.png
Normal file
|
After Width: | Height: | Size: 686 B |
BIN
cases/case-05-butler-did-it/sprites/dumbwaiter.png
Normal file
|
After Width: | Height: | Size: 511 B |
BIN
cases/case-05-butler-did-it/sprites/ego.png
Normal file
|
After Width: | Height: | Size: 713 B |
BIN
cases/case-05-butler-did-it/sprites/evidence.png
Normal file
|
After Width: | Height: | Size: 270 B |
BIN
cases/case-05-butler-did-it/sprites/filecabinet.png
Normal file
|
After Width: | Height: | Size: 581 B |
BIN
cases/case-05-butler-did-it/sprites/governess.png
Normal file
|
After Width: | Height: | Size: 531 B |
BIN
cases/case-05-butler-did-it/sprites/guest.png
Normal file
|
After Width: | Height: | Size: 748 B |
BIN
cases/case-05-butler-did-it/sprites/hocken.png
Normal file
|
After Width: | Height: | Size: 729 B |
BIN
cases/case-05-butler-did-it/sprites/johnny.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
cases/case-05-butler-did-it/sprites/kitchenrange.png
Normal file
|
After Width: | Height: | Size: 726 B |
BIN
cases/case-05-butler-did-it/sprites/mansion.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
cases/case-05-butler-did-it/sprites/microscope.png
Normal file
|
After Width: | Height: | Size: 523 B |
BIN
cases/case-05-butler-did-it/sprites/nordberg.png
Normal file
|
After Width: | Height: | Size: 841 B |
BIN
cases/case-05-butler-did-it/sprites/olson.png
Normal file
|
After Width: | Height: | Size: 698 B |
BIN
cases/case-05-butler-did-it/sprites/phone.png
Normal file
|
After Width: | Height: | Size: 332 B |