# MORPQUEST — Record Store Day ### A Beyond Morp graphical adaptation for MRPGI You're on a quick cat-food run. Your Uncle's list is in the glovebox. The record shop's front door is a wall of Taylor Swift superfans. Morp is not cruel; Morp is accurate. Adapted from the Beyond Morp text adventure (RSD storyline). Fourteen screens, one day, five words, one white label. ## The map (room / exits N,E,S,W — as built, matching the art) ``` [4 Toilet]--(W door)--[3 Alley]--(N)--[5 Yard]--(E, vine)--[6 Roof] | | (S) (N, side door) | | [0 Car]-(E)-[1 Car Park]-(N)-[2 Entrance] [7 Kitchen] (E->alley) | (N) | [9 Rock]-(E)-[8 Shop Floor]-(E)-[10 Dance]-(N)-[11 Listening] | (N) | [12 Counter]-(N, beads)-[13 Back Room] ``` | # | room | N | E | S | W | music | |---|------|---|---|---|---|-------| | 0 | Your Car (interior) | – | 1 | – | – | calm | | 1 | Car Park | 2 | – | – | 0 | calm | | 2 | Shop Entrance (BeckyWall) | – | 3 | 1 | – | tense | | 3 | Alley — "Scenic Rim" | 5 | – | 2 | 4 | eerie | | 4 | Toilet — "Pacific Rim" | – | – | 3 | – | spooky | | 5 | Yard behind shop | 7 | 6 | 3 | – | eerie | | 6 | Roof — "Above the Rim" | – | – | – | 5 | calm | | 7 | Kitchen | 8 | – | 5 | – | tense | | 8 | Shop Floor (hub) | 12 | 10 | 7 | 9 | jolly | | 9 | Rock Aisle | – | 8 | – | – | jolly | | 10 | Dance Racks | 11 | – | – | 8 | jolly | | 11 | Listening Station | – | – | 10 | – | calm | | 12 | Counter | 13 | – | 8 | – | tense | | 13 | Back Room | – | – | 12 | – | spooky | Progression is gated through flags, dialogue, and the win condition — plus four real flag-gated exits (engine feature added for this game): the car door (`seatbelt-freed`), the kitchen side door (`side-door-open`), the vine climb (`noticed-vine`), and the beaded curtain (`back-room-open`). **Scoring:** 250 points on offer (`max_score` in game.json), Sierra-style — takes, first successful uses, and dialogue-choice flag flips all pay out. **Deaths:** the mouldy kebab (eat it despite two warnings), and improvising the five words at the hive (the Becky-grue). Death restarts the day. **Vanishings:** the poster fragments exist only after the frenzy (`visible_flag`), and the Beckies leave the entrance for good after dispersal (`hidden_by_flag`). The lollipop is consumed when given (`consumes`). ## Main chain (flags in order) 1. Car: take `paperclip` (under seat). **seatbelt** `needs paperclip` → `seatbelt-freed`. Take `car-keys`, `wallet`, `45-adapter`, `tote-bag`. (Kebab: examine-only warning.) 2. Entrance: Becky Theologian dialogue → ask which variant is canon → `poster-frenzy` (the hive shreds a Taylor poster). 3. Entrance: **shredded poster fragments** use `requires poster-frenzy` → `knows-yard-door-secret` (fragments spell YARD DOOR SECRET). 4. Toilet: take `elastic-band` (cupboard). Yard: **vinyl vine** use `requires knows-yard-door-secret` → `noticed-vine` ("It isn't a ladder. But it's climbable.") — narratively unlocks the roof (east edge). 5. Roof: **door-shaped absence** use → `seen-door-outline`. 6. Entrance: Dave dialogue, choice gated on `seen-door-outline` → `side-door-open` ("Yeah nah. That was NOT there." He shoulders it anyway.) 7. Kitchen: take `consolation-lollipop` (sink bench, under a soggy flyer). 8. Listening Station: **turntable** `needs 45-adapter` → `station-working`. **sad balloon** `needs elastic-band` → `eyepatch-made`. 9. Shop Floor: take `clean-sleeve` (by the crates). **half-sleeved record** `needs clean-sleeve` → `shop-tidied` ("Clerk notices. Pretends not to. But it counts.") 10. Counter: Clerk dialogue — favour 1 gated on `shop-tidied` → `clerk-warm`; favour 2 gated on `eyepatch-made` (node reachable once warm) → `back-room-open` ("The beaded curtain is no longer purely decorative.") 11. Back Room: **hidden seam** use `requires back-room-open` → `found-grail`; take `white-label` + `delay-notice` (they were "always there"; the seam look points at them). 12. Counter: **card terminal** `needs wallet` → `paid`. 13. Entrance: **notice board** `needs delay-notice` → `notice-posted`. Becky Crier dialogue: read-the-notice choice gated on `notice-posted`, then lollipop choice → `beckies-dispersed`. 14. Car: **ignition** `requires beckies-dispersed`, `needs car-keys`, **wins**. ## True-ending layer — the five words (strict order via flag chain) `use` each surface; each requires the previous word: - Car **rear-view mirror** → `word-rsd` ("RSD", scratched in the plastic) - Toilet **lipstick mirror** `requires word-rsd` → `word-first` - Kitchen **greasy splashback** `requires word-first` → `word-global` - Listening **spinning record** `requires word-global` (and station fixed, narratively) → `word-ambassador` - Counter **receipt spike** `requires word-ambassador` → `word-version` Becky Crier's final node: bonus choice "SAY THE WORDS" `requires word-version` → `curse-broken` → the hive blinks awake ("…why are we here?" The door is a door again.) ## Side quests - **S1 Rock Aisle:** take `mystery-disc` from the chud box; **yellow Daly-Wilson sleeve** `needs mystery-disc` → `break-ancestor-revealed`; Clerk dialogue bonus choice. - **S2 Dance Racks:** **overstuffed crate** `needs tote-bag` → `made-space`; DJ Someguy dialogue choice gated on it ("Keep your face normal. Your face is loud.") - **S3 Mirror liturgy** is the word chain above. ## Voice rules (from the tone bible) Second person, present tense, parser-deadpan. Short declaratives; the last beat turns. Colon-verdicts. Parenthetical counter-voice. Morp is accurate, not cruel. Never zany, never explains a joke, never punches down, no exclamation marks in narration. ## Build pipeline - `tools/gen_art.py` — nano banana (OpenRouter) backgrounds + NPC sprites, squeezed to 160×168 (the GUI shows 2×-wide pixels, so art is generated wide). - `tools/gen_items.py` — deterministic tiny item sprites (PIL, hand-placed pixels). - Engine quantizes PNGs to EGA on load; walls/priority painted as strokes over the art. - Playtest: `mrpgi-headless --script tools/playtest.jsonl --game .`