wishbringer/shoppe.zil

928 lines
25 KiB
Plaintext

"SHOPPE for WISHBRINGER: (C)1985 Infocom, Inc. All rights reserved."
"*** CLIFF EDGE ***"
<OBJECT CLIFF-EDGE
(IN ROOMS)
(DESC "Cliff Edge")
(FLAGS ONBIT RLANDBIT RMUNGBIT)
(GLOBAL CLIFF MAGICK-SHOPPE SHOPPE-DOOR TOWER SIGN POST-OFFICE
TRAIL HILL)
(NORTH PER BUMP-CLIFF)
(EAST PER TUMBLE)
(SOUTH PER TUMBLE)
(WEST PER ENTER-SHOPPE)
(DOWN PER ENTER-FOG?)
(IN PER ENTER-SHOPPE)
(ACTION CLIFF-EDGE-F)
(PSEUDO "FOG" CLIFF-FOG-PSEUDO)>
; "RMUNGBIT = Cliff Edge not yet visited"
<ROUTINE CLIFF-EDGE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<STANDING>
<TELL "high on a rocky cliff, at the top of a steep " D ,TRAIL
" leading downward.">
<COND (,SUCCESS?
<TELL
" Looking southeast, you see a friendly orange sun rising from a bank of morning clouds." CR CR D ,POST-OFFICE " Hill is visible " <TO-S> ", topped as usual by the Festeron " D ,POST-OFFICE ".">)>
<COND (<FSET? ,MAGICK-SHOPPE ,TOUCHBIT>
<SHOPPE-IS-NEARBY>)
(T
<FSET ,MAGICK-SHOPPE ,TOUCHBIT>
<COND (,ENDING?
<RTRUE>)
(,SKEWED?
<TELL CR CR
"The surrounding landscape has disappeared under a " D ,BLANKET " of evening fog. All the familiar buildings and landmarks are completely hidden; only the summit of " D ,POST-OFFICE " Hill is high enough to pierce the cloud, rising like a lonely " D ,ISLE " in a sea of mist...|
|
... an " D ,ISLE " with a " D ,TOWER " on it.|
|
There's a TOWER where the " D ,POST-OFFICE " used to be! The massive outline is hard to make out against the twilight sky. But the longer you stare, the clearer and more frightening it becomes.">
<SHOPPE-IS-NEARBY>)
(T
<TELL
" Looking southwest, you can see the shadow of " D ,POST-OFFICE " Hill creeping across the " D ,FESTERON " as the sun sinks into a bank of clouds.|
|
The peaceful scenery is disturbed by a tiny figure emerging from the distant "
D ,POST-OFFICE ". It stares in your direction for a few moments, checks its wrist and shakes a threatening little fist at you.|
|
A little old-fashioned store stands nearby. Its brightly painted shutters and thatched roof remind you of something out of a fairy tale. ">
<DESCRIBE-SIGN>)>)>)>>
<ROUTINE SHOPPE-IS-NEARBY ()
<CRLF>
<CRLF>
<SAY-THE ,MAGICK-SHOPPE>
<TELL " stands nearby." CR>>
<ROUTINE DESCRIBE-SIGN ()
<TELL
"A curiously painted sign over the " D ,HOUSE-DOOR " reads, \"Ye Olde "
D ,MAGICK-SHOPPE ".\"" CR>>
<ROUTINE CLIFF-FOG-PSEUDO ()
<COND (<OR <NOT ,SKEWED?>
,SUCCESS?>
<CANT-SEE-ANY>
<RFATAL>)
(<VERB? EXAMINE LOOK-INSIDE LOOK-ON>
<V-LOOK>
<RTRUE>)
(<VERB? WALK-TO THROUGH ENTER>
<DO-WALK ,P?DOWN>
<RTRUE>)
(T
<YOU-DONT-NEED "fog" T>
<RFATAL>)>>
<OBJECT MAGICK-SHOPPE
(IN LOCAL-GLOBALS)
(DESC "Magick Shoppe")
(SYNONYM SHOPPE SHOP STORE BUILDING)
(ADJECTIVE MAGICK MAGIC)
(ACTION MAGICK-SHOPPE-F)>
<ROUTINE MAGICK-SHOPPE-F ()
<COND (<ENTER-FROM? ,CLIFF-EDGE ,INSIDE-SHOPPE ,MAGICK-SHOPPE>
<RTRUE>)
(<VERB? EXAMINE>
<COND (<EQUAL? ,HERE ,INSIDE-SHOPPE>
<V-LOOK>)
(T
<DESCRIBE-SIGN>)>
<RTRUE>)
(<VERB? LOOK-INSIDE LOOK-THRU>
<COND (<FSET? ,SHOPPE-DOOR ,OPENBIT>
<GO-INSIDE>
<RTRUE>)
(T
<ITS-CLOSED ,SHOPPE-DOOR>
<RFATAL>)>)
(T
<RFALSE>)>>
<OBJECT SHOPPE-DOOR
(IN LOCAL-GLOBALS)
(DESC "Magick Shoppe door")
(SYNONYM DOOR ENTRANCE ENTRY LOCK)
(ADJECTIVE FRONT SHOPPE SHOP MAGICK MAGIC)
(FLAGS DOORBIT NDESCBIT)
(ACTION SHOPPE-DOOR-F)>
; <GLOBAL CLOSED-IN-SHOPPE? <>>
<ROUTINE SHOPPE-DOOR-F ()
<COND (<AND <VERB? OPEN MOVE PULL PUSH>
<EQUAL? ,PRSO ,SHOPPE-DOOR>
<NOT <FSET? ,SHOPPE-DOOR ,OPENBIT>>>
<COND (<OR <EQUAL? ,HERE ,INSIDE-SHOPPE>
,SKEWED?>
<BEST-EFFORTS ,HOUSE-DOOR "refuses to budge">
<COND (<IN? ,OLD-WOMAN ,HERE>
<TELL CR
"\"That door always sticks this time of year,\" notes the "
D ,OLD-WOMAN " drily." CR>)>
<RTRUE>)
(T
<BELL-TINKLES>
<CRLF>
<RFALSE>)>)
(<AND <VERB? CLOSE>
<FSET? ,SHOPPE-DOOR ,OPENBIT>>
; <COND (<EQUAL? ,HERE ,INSIDE-SHOPPE>
<SETG CLOSED-IN-SHOPPE? T>)>
<BELL-TINKLES>
<RFALSE>)
(<VERB? KNOCK>
<COND (<FSET? ,SHOPPE-DOOR ,OPENBIT>
<ALREADY-OPEN>)
(<EQUAL? ,HERE ,INSIDE-SHOPPE>
<WASTE-OF-TIME>)
(,ENDING?
<SETG WOMAN-SCRIPT 5>)
(,SKEWED?
<RFALSE>)
(T
<TELL "A voice cries, \"Come in!\"" CR>)>
<RTRUE>)
(<USE-DOOR? ,CLIFF-EDGE>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE BELL-TINKLES ()
<TELL "A concealed bell tinkles merrily." CR>>
"*** INSIDE SHOPPE ***"
<ROUTINE ENTER-SHOPPE ()
<COND (<FSET? ,SHOPPE-DOOR ,OPENBIT>
<COND (<HELD? ,ENVELOPE>
<ENABLE <QUEUE I-WOMAN-SCRIPT -1>>
<DISABLE <INT I-BEFORE-FIVE>>
<RETURN ,INSIDE-SHOPPE>)
(T
<FCLEAR ,SHOPPE-DOOR ,OPENBIT>
<SAY-THE ,SHOPPE-DOOR>
<TELL ", sensing that you have no mail to deliver, slams itself shut in your face. ">
<BELL-TINKLES>
<RFALSE>)>)
(T
<ITS-CLOSED ,SHOPPE-DOOR>
<RFALSE>)>>
<ROUTINE MOBILE? ()
<COND (,IMMOBILIZED?
<UNWILLING-TO-MOVE>
<RFALSE>)
; (<FSET? ,SHOPPE-DOOR ,OPENBIT>
<SETG CLOSED-IN-SHOPPE? T>
<TELL "Bang! ">
<SUDDEN-GUST>
<TELL "slams the ">
<PRINTD ,SHOPPE-DOOR>
<TELL " shut. ">
<BELL-TINKLES>
<FCLEAR ,SHOPPE-DOOR ,OPENBIT>
<RFALSE>)
(T
<ITS-CLOSED ,SHOPPE-DOOR>
<RFALSE>)>>
<ROUTINE UNWILLING-TO-MOVE ()
<TELL <PICK-ONE ,FROZENS> "." CR>
<RFALSE>>
<GLOBAL FROZENS
<LTABLE 0
"Your feet seem unwilling to move in that direction"
"A subtle pressure against your body prevents you from moving that way">>
<ROUTINE APPROACH-CURTAIN ()
<COND (,IMMOBILIZED?
<UNWILLING-TO-MOVE>)
(T
<TELL
"As you approach the " D ,CURTAIN "ed exit, the " D ,MAGICK-SHOPPE " subtly rearranges itself until you find yourself facing the other way.">
<COND (<IN? ,OLD-WOMAN ,INSIDE-SHOPPE>
<TELL " The " D ,OLD-WOMAN
" watches with wry amusement.">)>
<CRLF>)>
<RFALSE>>
<OBJECT INSIDE-SHOPPE
(IN ROOMS)
(DESC "Magick Shoppe")
(FLAGS ONBIT RLANDBIT INDOORSBIT)
(GLOBAL MAGICK-SHOPPE SHOPPE-DOOR CORNER)
(EAST PER MOBILE?)
(WEST PER APPROACH-CURTAIN)
(IN PER APPROACH-CURTAIN)
(OUT PER MOBILE?)
(ACTION INSIDE-SHOPPE-F)>
<ROUTINE INSIDE-SHOPPE-F (CONTEXT)
<COND (<EQUAL? .CONTEXT ,M-LOOK>
<TELL
"You're in the front showroom of the " D ,MAGICK-SHOPPE ".|
|
Every inch of wall space is crowded with magic tricks, puzzles and mystical paraphernalia. A glass case offers a selection of obscene jokes and naughty birthday cards.|
|
In the " D ,CORNER " stands an ancient " D ,CLOCK
", its dial ornamented with a " <PICK-ONE ,FACES> "ing crescent moon and other celestial symbols.|
|
The " D ,HOUSE-DOOR " of the " D ,MAGICK-SHOPPE " is ">
<COND (<FSET? ,SHOPPE-DOOR ,OPENBIT>
<TELL "wide open">)
(T
<TELL "closed">)>
<TELL ". At the west end of the room, you can see another exit concealed by a " D ,CURTAIN "." CR>)>>
<OBJECT CLOCK
(IN INSIDE-SHOPPE)
(DESC "grandfather clock")
(SYNONYM CLOCK MOON TIME DIAL)
(ADJECTIVE GRANDFATHER)
(FLAGS NDESCBIT TRYTAKEBIT CONTBIT TRANSBIT
LOCKEDBIT READBIT RMUNGBIT)
(ACTION CLOCK-F)>
; "RMUNGBIT = clock running"
<GLOBAL FACES <LTABLE 0 "frown" "smil" "sneer" "grinn" "star">>
<ROUTINE CLOCK-F ()
<COND (<VERB? EXAMINE READ>
<TELL "The " <PICK-ONE ,FACES> "ing " D ,CLOCK " ">
<COND (<FSET? ,CLOCK ,RMUNGBIT>
<TELL "says it's ">)
(T
<TELL "is stopped at ">)>
<TELL-TIME>
<TELL "." CR>
<RTRUE>)
(<VERB? LOOK-INSIDE>
<TELL "Inside the " D ,CLOCK
" you see an intricate brass mechanism." CR>
<RTRUE>)
(<AND <VERB? LISTEN>
<FSET? ,CLOCK ,RMUNGBIT>>
<SAY-THE ,CLOCK>
<TELL " is ticking noisily." CR>
<RTRUE>)
(<MOVING? ,CLOCK>
<TOO-LARGE ,CLOCK>
<RTRUE>)
(<OR <HURT? ,CLOCK>
<VERB? OPEN>>
<RUIN ,CLOCK>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE RUIN (THING)
<TELL "You'd probably ruin the " D .THING>
<IF-YOU-TRIED>>
<OBJECT STOCK
(IN INSIDE-SHOPPE)
(DESC "magic tricks")
(SYNONYM TRICK TRICKS PUZZLE PARAPH)
(ADJECTIVE MAGIC MYSTIC)
(FLAGS NDESCBIT NARTICLEBIT)
(ACTION STOCK-F)>
<ROUTINE STOCK-F ()
<COND (<VERB? EXAMINE LOOK-ON LOOK-INSIDE READ>
<TELL "They look like fun." CR>
<RTRUE>)
(<TRY-HANDLING-STOCK>
<RTRUE>)
(<VERB? BUY>
<RFALSE>)
(T
<YOU-DONT-NEED ,STOCK>
<RFATAL>)>>
<OBJECT NAUGHTY-STOCK
(IN GLASS-CASE)
(DESC "naughty jokes")
(SYNONYM JOKE JOKES CARD CARDS)
(ADJECTIVE OBSCENE PRACTICAL NAUGHTY BIRTHDAY)
(FLAGS READBIT NDESCBIT NARTICLEBIT)
(ACTION NAUGHTY-STOCK-F)>
<ROUTINE NAUGHTY-STOCK-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE READ LOOK-ON>
<TELL <PICK-ONE ,NAUGHTY-BITS> CR>
<RTRUE>)
(<TRY-HANDLING-STOCK>
<RTRUE>)
(<VERB? BUY>
<RFALSE>)
(T
<YOU-DONT-NEED ,NAUGHTY-STOCK>
<RFATAL>)>>
<ROUTINE TRY-HANDLING-STOCK ()
<COND (<VERB? TAKE>
<TELL D ,MACGUFFIN
" takes a dim view of shoplifters." CR>
<RTRUE>)
(<OR <HURT? ,PRSO>
<VERB? STAND-ON POUR EMPTY>>
<TELL
"The proprietor of the " D ,MAGICK-SHOPPE>
<MIGHT-NOT-LIKE>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE MIGHT-NOT-LIKE ()
<TELL " might not like it">
<IF-YOU-TRIED>>
<OBJECT GLASS-CASE
(IN INSIDE-SHOPPE)
(DESC "glass case")
(SYNONYM CASE)
(ADJECTIVE GLASS)
(FLAGS NDESCBIT CONTBIT DOORBIT TRANSBIT LOCKEDBIT)
(CAPACITY 25)
(ACTION GLASS-CASE-F)>
<ROUTINE GLASS-CASE-F ()
<COND (<VERB? EXAMINE>
<TELL "The naughty " D ,GLASS-CASE " is">
<CLOSED-AND-LOCKED>
<RTRUE>)
(<VERB? LOOK-INSIDE LOOK-DOWN>
<TELL <PICK-ONE ,NAUGHTY-BITS> CR>
<RTRUE>)
(<TRY-HANDLING-STOCK>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT CURTAIN
(IN INSIDE-SHOPPE)
(DESC "curtain")
(SYNONYM CURTAIN)
(ADJECTIVE DARK)
(FLAGS NDESCBIT)
(ACTION CURTAIN-F)>
<ROUTINE CURTAIN-F ()
<COND (<VERB? THROUGH ENTER WALK-TO LOOK-INSIDE LOOK-BEHIND
OPEN CLOSE PUSH MOVE>
<DO-WALK ,P?IN>
<RTRUE>)
(<TRY-HANDLING-STOCK>
<RTRUE>)
(T
<RFALSE>)>>
<GLOBAL NAUGHTY-BITS
<LTABLE 0
"Can't keep your mind off that stuff, eh?"
"Tsk, tsk, tsk!"
"Intriguing, aren't they?">>
<OBJECT ENVELOPE
(DESC "mysterious envelope")
(SYNONYM ENVELOPE MAIL LETTER)
(ADJECTIVE MYSTERIOUS)
(ACTION ENVELOPE-F)
(FLAGS TAKEBIT READBIT CONTBIT)
(VALUE 5)
(SIZE 3)
(CAPACITY 1)>
; "RMUNGBIT = envelope given by Crisp"
<GLOBAL WOMAN-SEEN-ENVELOPE? <>>
<ROUTINE ENVELOPE-F ()
<COND (<VERB? EXAMINE READ>
<FIND-IN-PACKAGE "envelope">
<RTRUE>)
(<HURT? ,ENVELOPE>
<HOW-WOULD-YOU-LIKE-IT ,ENVELOPE>
<RTRUE>)
(<VERB? OPEN>
<COND (<DONT-HAVE? ,ENVELOPE>
<RTRUE>)
(,WOMAN-SEEN-ENVELOPE?
<SETG ANGER 4>
<MOVE ,ENVELOPE ,STEEP-TRAIL>
<MOVE ,OPEN-ENVELOPE ,PROTAGONIST>
<FSET ,OPEN-ENVELOPE ,TOUCHBIT>
<MOVE ,RANSOM-LETTER ,PROTAGONIST>
<SETG L-PRSO ,OPEN-ENVELOPE>
<SETG PRSO ,OPEN-ENVELOPE>
<THIS-IS-IT ,RANSOM-LETTER>
<TELL "(You should now open the " D ,ENVELOPE
" in your " ,GAME " package.)|
|
Opening the " D ,ENVELOPE " reveals a letter.">)
(T
<TELL "(You're not supposed to open the " D ,ENVELOPE
" until the story tells you to do so.)">)>
<CRLF>
<RTRUE>)
(<AND <VERB? TAKE>
<NOT <FSET? ,ENVELOPE ,TOUCHBIT>>>
<SETG ANGER 4>
<RFALSE>)
(T
<RFALSE>)>>
<ROUTINE IVE-ALREADY-SEEN-IT ()
<TELL "\"I've already seen it.\"" CR>>
<OBJECT OPEN-ENVELOPE
(DESC "mysterious envelope")
(SYNONYM ENVELOPE)
(ADJECTIVE MYSTERIOUS)
(FLAGS TAKEBIT READBIT CONTBIT OPENBIT)
(VALUE 0)
(CAPACITY 1)
(SIZE 5)
(ACTION OPEN-ENVELOPE-F)>
<ROUTINE OPEN-ENVELOPE-F ()
<COND (<VERB? EXAMINE READ>
<FIND-IN-PACKAGE "envelope">
<RTRUE>)
(<HURT? ,OPEN-ENVELOPE>
<HOW-WOULD-YOU-LIKE-IT ,ENVELOPE>
<RTRUE>)
(<OR <AND <VERB? CLOSE>
<FSET? ,OPEN-ENVELOPE ,OPENBIT>>
<AND <VERB? PUT THROW>
<EQUAL? ,PRSI ,OPEN-ENVELOPE>>>
<UNFORTUNATELY>
<TELL "you ripped the " D ,ENVELOPE " when you opened it." CR>
<RTRUE>)
(T
<RFALSE>)>>
<OBJECT RANSOM-LETTER
; (IN OPEN-ENVELOPE)
(DESC "letter")
(SYNONYM LETTER MAIL)
(ADJECTIVE RANSOM)
(FLAGS TAKEBIT READBIT)
(ACTION RANSOM-LETTER-F)
(SIZE 1)
(VALUE 0)>
<ROUTINE RANSOM-LETTER-F ()
<COND (<VERB? READ>
; <COND (<AND <IN? ,RANSOM-LETTER ,OPEN-ENVELOPE>
<IN? ,OPEN-ENVELOPE ,PROTAGONIST>>
<MOVE ,RANSOM-LETTER ,PROTAGONIST>
<TELL "(taking the " D ,RANSOM-LETTER
" out of the " D ,OPEN-ENVELOPE " first)" CR>)>
<COND (<DONT-HAVE? ,RANSOM-LETTER>
<RTRUE>)
(<IN? ,OLD-WOMAN ,HERE>
<TELL "(to the " D ,OLD-WOMAN ")" CR>
<READ-LETTER-TO-WOMAN>)
(T
<FIND-IN-PACKAGE "letter">)>
<RFATAL>)
(<VERB? READ-TO>
<COND (<EQUAL? ,PRSI ,OLD-WOMAN>
<READ-LETTER-TO-WOMAN>
<RFATAL>)
(<EQUAL? ,PRSI ,ME>
<FIND-IN-PACKAGE "letter">
<RFATAL>)
(T
<RFALSE>)>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,OLD-WOMAN>>
<COND (,LETTER-READ-TO-WOMAN?
<READ-LETTER-TO-WOMAN>)
(T
<TELL "She politely refuses your offer." CR>)>
<RFATAL>)
(<VERB? EXAMINE>
<FIND-IN-PACKAGE "letter">
<RFATAL>)
(<HURT? ,RANSOM-LETTER>
<HOW-WOULD-YOU-LIKE-IT ,RANSOM-LETTER>
<RFATAL>)
(T
<RFALSE>)>>
<OBJECT SNAKE-CAN
(DESC "metal can")
(SYNONYM CAN NUTS LID)
(ADJECTIVE METAL SMALL LITTLE TRINKET GIFT)
(FLAGS TAKEBIT CONTBIT READBIT)
(CAPACITY 1)
(VALUE 3)
(SIZE 3)
(CONTFCN IN-CAN)
(ACTION SNAKE-CAN-F)>
<ROUTINE IN-CAN (CONTEXT)
<COND (<AND <EQUAL? .CONTEXT ,M-CONT>
<NOT <IN? ,SNAKE-CAN ,PROTAGONIST>>
<NOT <SEE-VERB?>>
<NOT <EQUAL? ,PRSO ,CAN-BOTTOM>>>
<YOUD-HAVE-TO "pick up" ,SNAKE-CAN>
<RTRUE>)
(T
<RFALSE>)>>
<SYNONYM NUTS NUT MIXED>
<OBJECT SQUASHED-CAN
(DESC "squashed can")
(SYNONYM CAN NUTS LID)
(ADJECTIVE METAL SMALL FLAT SQUASH)
(FLAGS TOUCHBIT TAKEBIT CONTBIT OPENBIT READBIT)
(ACTION SQUASHED-CAN-F)
(CAPACITY 1)
(VALUE 0)
(SIZE 3)>
<ROUTINE SNAKE-CAN-F ()
<COND (<AND ,BOTTOM?
<CAN-BOTTOM-F>>
<RTRUE>)
(<VERB? EXAMINE LOOK-ON READ>
<TELL "It's a round " D ,SNAKE-CAN " with a">
<OPEN-CLOSED ,SNAKE-CAN T>
<TELL
"lid, illustrated with a tasty-looking assortment of mixed nuts." CR>
<RTRUE>)
(<AND <VERB? OPEN TAKE-OFF>
<NOT <FSET? ,SNAKE-CAN ,OPENBIT>>>
<COND (<DONT-HAVE? ,SNAKE-CAN>
<RTRUE>)
(,SNAKE-GONE?
<NOW-CLOSED-OR-OPEN ,SNAKE-CAN T>)
(T
<TELL "Yow! When you open">
<SNAKE-LEAPS-OUT-AT "you">
<COND (<AND ,SKEWED?
<EQUAL? ,HERE ,NORTH-OF-BRIDGE>
<IN? ,TROLL ,NORTH-OF-BRIDGE>>
<CAN-FALLS>
<FRIGHTEN-TROLL>
<CRLF>
<UPDATE-SCORE 3>)>)>
<RTRUE>)
(<VERB? LISTEN SHAKE SPIN>
<COND (<DONT-HAVE? ,SNAKE-CAN>
<RTRUE>)>
<SAY-THE ,GCAN>
<TELL
" rattles again. It sounds like there are nuts inside">
<COND (<FSET? ,SNAKE-CAN ,OPENBIT>
<TELL ", although it seems to be empty">)>
<TELL "." CR>
<RTRUE>)
(<VERB? READ>
<READ-CAN>
<RTRUE>)
(<VERB? LOOK-INSIDE SEARCH LOOK-DOWN>
<LOOK-IN-CAN>
<RTRUE>)
(<AND <VERB? DROP>
<EQUAL? ,PRSO ,SNAKE-CAN>>
<TELL "It hits the ">
<GROUND-OR-FLOOR>
<TELL " with a rattle">
<AND-DROPS-OUT ,SNAKE-CAN>
<COND (<EQUAL? ,HERE ,INSIDE-SHOPPE>
<MOVE ,SNAKE-CAN ,PROTAGONIST>
<CRLF>
<SAY-THE ,OLD-WOMAN>
<TELL " picks up the " D ,SNAKE-CAN " and hands it back to you. \"I think you dropped this.\"" CR>)>
<RTRUE>)
(<VERB? SQUEEZE>
<PERFORM ,V?SQUEEZE ,CAN-BOTTOM>
<RTRUE>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSO ,SNAKE-CAN>
<IN? ,SNAKE-CAN ,OLD-WOMAN>>
<COND (<V-TAKE>
<ENABLE <QUEUE I-RATTLE -1>>)>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE LOOK-IN-CAN ()
<COND (<NOT <IN? ,SNAKE-CAN ,PROTAGONIST>>
<YOUD-HAVE-TO "be holding" ,SNAKE-CAN>)
(<FSET? ,SNAKE-CAN ,OPENBIT>
<SAY-THE ,SNAKE-CAN>
<TELL
" appears to have a " D ,CAN-BOTTOM
". You could probably get it out by squeezing the can." CR>)
(T
<ITS-CLOSED ,SNAKE-CAN>)>>
<ROUTINE SQUASHED-CAN-F ()
<COND (<AND <VERB? OPEN CLOSE EXAMINE LOOK-INSIDE
LOOK-DOWN SQUEEZE MUNG>
<EQUAL? ,PRSO ,SQUASHED-CAN>>
<SAY-BOTTOM>
<RTRUE>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,GCAN>>
<NO-ROOM>
<SAY-BOTTOM>
<RTRUE>)
(<VERB? READ>
<READ-CAN>
<RTRUE>)
(<VERB? LISTEN SHAKE SPIN>
<COND (<DONT-HAVE? ,GCAN>
<RTRUE>)>
<SAY-THE ,GCAN>
<TELL " makes no sound." CR>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE READ-CAN ()
<SAY-THE ,GCAN>
<TELL " says, 'Mixed Nuts.'" CR>>
<GLOBAL GCAN SNAKE-CAN>
<OBJECT CAN-BOTTOM
(IN SNAKE-CAN)
(DESC "false bottom")
(SYNONYM BOTTOM)
(ADJECTIVE FALSE)
(FLAGS NDESCBIT TRYTAKEBIT)
(ACTION CAN-BOTTOM-F)>
<ROUTINE CAN-BOTTOM-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE>
<LOOK-IN-CAN>
<RTRUE>)
(<AND <VERB? OPEN SQUEEZE MOVE PULL PUSH TAKE-OFF>
<EQUAL? ,PRSO ,CAN-BOTTOM ,GCAN>>
<COND (<DONT-HAVE? ,GCAN>
<RTRUE>)
(<NOT <FSET? ,SNAKE-CAN ,OPENBIT>>
<YOUD-HAVE-TO "open" ,SNAKE-CAN>
<RTRUE>)
(<NOT <IN? ,CAN-BOTTOM ,SQUASHED-CAN>>
<MOVE ,SQUASHED-CAN ,PROTAGONIST>
<REMOVE ,SNAKE-CAN>
<SETG GCAN ,SQUASHED-CAN>
<DISABLE <INT I-RATTLE>>
<ENABLE <QUEUE I-GLOW -1>>
<MOVE ,WISHBRINGER ,PROTAGONIST>
<THIS-IS-IT ,WISHBRINGER>
<SAY-THE ,CAN-BOTTOM>
<TELL
" is wedged tightly into the " D ,SNAKE-CAN ". You might be able to loosen it by squeezing harder... harder!...|
|
Pop! A " D ,WISHBRINGER " drops out of the " D ,SQUASHED-CAN>
<AND-DROPS-OUT ,WISHBRINGER>)
(T
<SAY-BOTTOM>)>
<RTRUE>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSO ,CAN-BOTTOM ,GCAN>
,PRSI>
<COND (<DONT-HAVE? ,GCAN>
<RTRUE>)>
<HOW?>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE SAY-BOTTOM ()
<TELL "You squashed the " D ,SNAKE-CAN " flat when you removed the "
D ,CAN-BOTTOM "." CR>>
<ROUTINE I-RATTLE ()
<COND (<AND <IN? ,SNAKE-CAN ,PROTAGONIST>
<PROB 5>>
<TELL CR <PICK-ONE ,GIVE-AWAYS> "." CR>)>>
<GLOBAL GIVE-AWAYS
<LTABLE 0
"The can rattles in your hand"
"Something rattles in the can"
"You hear a rattling noise in the can">>
<GLOBAL ENDING? <>>
<ROUTINE TO-FINISH ()
<SETG ENDING? T>
<SETG FUZZY? <>>
<SETG FUZZY-FROM ,CLIFF-EDGE>
<DISABLE <INT I-GLOW>>
<FCLEAR ,WISHBRINGER ,ONBIT>
<COND (<ENABLED? ,I-DRINK>
<SETG MILK-SCRIPT 1>)>
<COND (<ENABLED? ,I-DIGEST-CHOCOLATE>
<SETG CHOCOLATE-SCRIPT 1>)>
<DISABLE <INT I-VULTURE>>
<SETG WOMAN-SCRIPT 0>
<ENABLE <QUEUE I-FINALE -1>>
<FSET ,MAGICK-SHOPPE ,TOUCHBIT>
<DISABLE <INT I-BEFORE-MOONSET>>
<SETG HERE ,CLIFF-EDGE>
<MOVE ,PROTAGONIST ,CLIFF-EDGE>
<CARRIAGE-RETURNS>>
<OBJECT CHAOS
(DESC "Chaos")
(SYNONYM CHAOS CAT KITTY PUSSY)
(ADJECTIVE BLACK)
(FLAGS NDESCBIT ACTORBIT NARTICLEBIT TAKEBIT)
(SIZE 10)
(VALUE 0)
(ACTION CHAOS-F)>
<ROUTINE CHAOS-F ("OPTIONAL" (CONTEXT <>))
<THIS-IS-IT ,CHAOS>
<COND (<VERB? EXAMINE>
<DESCRIBE-CHAOS T>
<TELL " right in the middle of her forehead." CR>
<RTRUE>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSO ,CHAOS>>
<COND (<V-TAKE>
<CRLF>
<PERFORM ,V?LISTEN ,CHAOS>)>
<RTRUE>)
(<VERB? LISTEN RUB KISS>
<NICE-KITTY>
<RTRUE>)
(<TALKING-TO? ,CHAOS>
<NICE-KITTY>
<RFATAL>)
(<HURT? ,CHAOS>
<V-RAPE>
<RTRUE>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,CHAOS>>
<COND (<EQUAL? ,PRSO ,CHAOS>
<TELL <PICK-ONE ,YUKS> CR>)
(<EQUAL? ,PRSO ,MILK>
<READY-MILK>
<GIVE-MILK-TO-CAT ,CHAOS>)
(T
<NOT-LIKELY ,KITTY "is interested">)>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE NICE-KITTY ()
<SAY-THE ,KITTY>
<TELL " " <PICK-ONE ,NICES> "." CR>>
<ROUTINE DESCRIBE-CHAOS ("OPTIONAL" (SPOT? <>))
<TELL "She's black as night from head to tail">
<COND (.SPOT?
<TELL ", except for one little white spot">)>>
<GLOBAL SUCCESS? <>>
<ROUTINE I-FINALE ()
<COND (<EQUAL? ,HERE ,CLIFF-EDGE>
<SETG WOMAN-SCRIPT <+ ,WOMAN-SCRIPT 1>>
<COND (<EQUAL? ,WOMAN-SCRIPT 1>
<COND (,SUCCESS?
<THIS-IS-IT ,CHAOS>
<TELL CR "A " D ,KITTY
" is rubbing against your leg." CR>)
(T
<SETG WOMAN-SCRIPT 5>)>
<RTRUE>)>
<COND (<AND ,SUCCESS?
<EQUAL? ,WOMAN-SCRIPT 3>
<ACCESSIBLE? ,CHAOS>>
<THIS-IS-IT ,CHAOS>
<CRLF>
<SAY-THE ,KITTY>
<COND (<IN? ,CHAOS ,PROTAGONIST>
<MOVE ,CHAOS ,CLIFF-EDGE>
<TELL " leaps from your arms and">)>
<TELL " begins scratching urgently on the "
D ,SHOPPE-DOOR "." CR>)
(<EQUAL? ,WOMAN-SCRIPT 6>
<THIS-IS-IT ,OLD-WOMAN>
<FSET ,SHOPPE-DOOR ,OPENBIT>
<TELL CR "The door of the " D ,MAGICK-SHOPPE " creaks open, and the " D ,OLD-WOMAN ", dressed in a nightgown, ">
<COND (,SUCCESS?
<TELL "stands blinking in the morning sun.">)
(T
<TELL "peers sleepily">
<INTO-NIGHT>)>
<TELL " \"Who's there?\"" CR CR>
<COND (<AND ,SUCCESS?
<ACCESSIBLE? ,CHAOS>>
<SAY-THE ,KITTY>
<COND (<IN? ,CHAOS ,PROTAGONIST>
<TELL " squirms away from you and">)>
<TELL
" leaps into the woman's arms. \"" D ,CHAOS "!\" she cries, laughing and sobbing all at once as the cat licks tears of joy from her face.|
|
At last the " D ,OLD-WOMAN " lowers " D ,CHAOS " to the " D ,GROUND " and walks over to where you're standing, red with embarrassment." CR CR>
<LIAR>
<TELL ",\" she chuckles, clasping " D ,HANDS
"s gratefully in her own. \"I promised to give you " ,GAME ", knowing full well that, if you succeeded, its virtue would be lost.|
|
\"In truth, the Stone would make a poor reward,\" she continues, stooping to tickle the cat's white forehead. \"As you can see, it brings more joy in the shape of a companion than in any other. This is " ,GAME "'s finest Magick. A pity that my sister," ,EONE ", did not know of it.\"" CR CR>
<COND (,HOUSE-VISITED?
<TELL ,YOU-HEAR "a familiar">
<CLUMP>
<TELL "behind you. It's the "
D ,SMALL-BOX ", hopping bravely up the steep " D ,TRAIL "! The woman looks on with puzzled amusement as the faithful box">
<HOPS-TO-SIDE>
<CRLF>
<CRLF>)>
<SAY-THE ,OLD-WOMAN>
<COND (<IN? ,VIOLET-NOTE ,PROTAGONIST>
<TELL " touches the " D ,VIOLET-NOTE
" in " D ,HANDS>)
(T
<COND (<IN? ,VIOLET-NOTE ,HERE>
<TELL " picks up the "
D ,VIOLET-NOTE>)
(T
<TELL " pulls " D ,MISS-VOSS "'s "
D ,VIOLET-NOTE " from an obscure pocket">)>
<TELL " and hands it to you">)>
<TELL ". \"Make sure you give this to " D ,CRISP
" when you see him,\" she says with a sly wink. \"And tell him I said hello.\"|
|
Cradling " D ,CHAOS " in her arms like a child, the " D ,OLD-WOMAN
" ambles back into the " D ,MAGICK-SHOPPE ". \"Farewell!\" she calls from the closing door, and the sunlight makes her face look young. \"Now you are a true Adventurer.\"" CR CR>
<BELL-TINKLES>
<MOVE ,PROTAGONIST ,END-ROOM>
<SETG HERE ,END-ROOM>
<CARRIAGE-RETURNS>
<TELL
"Congratulations! You've finished the story of " ,GAME "!" CR CR>
<V-SCORE>
<COND (<NOT <ZERO? ,SPELLS>>
<TELL CR
"Did you know that it's possible to complete the story without using any of the 7 Wishes? It's fun to go back and see if you can solve all of the problems without Wishing." CR>)>
<FINISH T>)
; "Unsuccessful endings"
(T
<COND (<VISIBLE? ,KITTY>
<TELL "A look of joy spreads over the "
D ,OLD-WOMAN "'s face when she sees the " D ,KITTY>
<COND (<IN? ,KITTY ,PROTAGONIST>
<TELL " in your arms">)
(T
<TELL " playing at your feet">)>
<TELL
". \"Here, " D ,CHAOS "! Come to mama!\"|
|
But the cat pays no attention. Frowning, the woman walks over and peers at it closely. \"This isn't " D ,CHAOS ",\" she says, her voice now heavy with sadness. \"You did not heed me when I described her to you. See? There's no white spot on her forehead, as I said there would be. You should have examined her before you returned here!\"">)
(T ; "Return with no KITTY"
<TELL
"A hopeful look brightens the " D ,OLD-WOMAN "'s face as she sees you. \"Did you find my cat, " D ,CHAOS "?\" she cries hopefully. But the guilty look in your eyes turns her brief joy to sadness.|
|
\"You have failed, then,\" she sighs. \"">
<THANKS-ANYWAY>)>
<BAD-ENDING>)>)>)>>
<ROUTINE THANKS-ANYWAY ()
<TELL "Too bad. I should not have placed my hopes upon a simpleton. But thank you for your useless effort.\"">>
<OBJECT END-ROOM
(IN ROOMS)
(DESC "End of Story")
(FLAGS ONBIT RLANDBIT)>