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>
6.4 KiB
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)
- Car: take
paperclip(under seat). seatbeltneeds paperclip→seatbelt-freed. Takecar-keys,wallet,45-adapter,tote-bag. (Kebab: examine-only warning.) - Entrance: Becky Theologian dialogue → ask which variant is canon →
poster-frenzy(the hive shreds a Taylor poster). - Entrance: shredded poster fragments use
requires poster-frenzy→knows-yard-door-secret(fragments spell YARD DOOR SECRET). - Toilet: take
elastic-band(cupboard). Yard: vinyl vine userequires knows-yard-door-secret→noticed-vine("It isn't a ladder. But it's climbable.") — narratively unlocks the roof (east edge). - Roof: door-shaped absence use →
seen-door-outline. - Entrance: Dave dialogue, choice gated on
seen-door-outline→side-door-open("Yeah nah. That was NOT there." He shoulders it anyway.) - Kitchen: take
consolation-lollipop(sink bench, under a soggy flyer). - Listening Station: turntable
needs 45-adapter→station-working. sad balloonneeds elastic-band→eyepatch-made. - Shop Floor: take
clean-sleeve(by the crates). half-sleeved recordneeds clean-sleeve→shop-tidied("Clerk notices. Pretends not to. But it counts.") - Counter: Clerk dialogue — favour 1 gated on
shop-tidied→clerk-warm; favour 2 gated oneyepatch-made(node reachable once warm) →back-room-open("The beaded curtain is no longer purely decorative.") - Back Room: hidden seam use
requires back-room-open→found-grail; takewhite-label+delay-notice(they were "always there"; the seam look points at them). - Counter: card terminal
needs wallet→paid. - Entrance: notice board
needs delay-notice→notice-posted. Becky Crier dialogue: read-the-notice choice gated onnotice-posted, then lollipop choice →beckies-dispersed. - 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-discfrom the chud box; yellow Daly-Wilson sleeveneeds 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 .