mrpquest/DESIGN.md
type-two f421448919 Sierra soul: 250-point scoring, real gated exits, two deaths, vanishing Beckies
Uses the new MRPGI features (room names/enter prose, exit_flags, points,
kills, consumes, visible_flag/hidden_by_flag). Golden path re-verified:
250/250 and the win; gate tests cover all four locked exits, the kebab
death, and the improvised-words Becky-grue.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 15:15:54 +10:00

6.4 KiB
Raw Blame History

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 paperclipseatbelt-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-frenzyknows-yard-door-secret (fragments spell YARD DOOR SECRET).
  4. Toilet: take elastic-band (cupboard). Yard: vinyl vine use requires knows-yard-door-secretnoticed-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-outlineside-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-adapterstation-working. sad balloon needs elastic-bandeyepatch-made.
  9. Shop Floor: take clean-sleeve (by the crates). half-sleeved record needs clean-sleeveshop-tidied ("Clerk notices. Pretends not to. But it counts.")
  10. Counter: Clerk dialogue — favour 1 gated on shop-tidiedclerk-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-openfound-grail; take white-label + delay-notice (they were "always there"; the seam look points at them).
  12. Counter: card terminal needs walletpaid.
  13. Entrance: notice board needs delay-noticenotice-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 mirrorword-rsd ("RSD", scratched in the plastic)
  • Toilet lipstick mirror requires word-rsdword-first
  • Kitchen greasy splashback requires word-firstword-global
  • Listening spinning record requires word-global (and station fixed, narratively) → word-ambassador
  • Counter receipt spike requires word-ambassadorword-version

Becky Crier's final node: bonus choice "SAY THE WORDS" requires word-versioncurse-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-discbreak-ancestor-revealed; Clerk dialogue bonus choice.
  • S2 Dance Racks: overstuffed crate needs tote-bagmade-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 .