nordandbert/globals.zil
historicalsource 428d629597 Final Revision
2019-04-14 11:07:54 -04:00

2244 lines
64 KiB
Plaintext

"GLOBALS for
NORD AND BERT
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<DIRECTIONS ;"Do not change the order of the first 8 without consulting MARC!"
NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
;<ADJ-SYNONYM LARGE LARGER HUGE HUGER BIG BIGGER GIANT GIGANTIC TREMENDOUS
MIGHTY MIGHTIER MASSIVE>
;<ADJ-SYNONYM WIDE BROAD>
;<ADJ-SYNONYM SMALL SMALLER TINY TINIER LITTLE PETITE TEENSY WEENSY>
;<ADJ-SYNONYM MY MINE>
;<GLOBAL LIT T>
<GLOBAL MOVES 0>
;<GLOBAL SCORE 0>
<GLOBAL HERE <>>
<OBJECT GLOBAL-OBJECTS
(SYNONYM ZZMGCK) ;"No, this synonym doesn't need to exist... sigh"
(DESC "it")
(FLAGS INVISIBLE TOUCHBIT SURFACEBIT TRYTAKEBIT OPENBIT SEARCHBIT
TRANSBIT WEARBIT ONBIT LIGHTBIT RLANDBIT WORNBIT
VEHBIT INDOORSBIT CONTBIT VOWELBIT LOCKEDBIT NDESCBIT DOORBIT
ACTORBIT PARTBIT INBIT FEMALEBIT KLUDGEBIT OLDBIT TRANSFORMED
RMUNGBIT SEENBIT HEARDBIT PHRASEBIT NO-D-CONT FIRST-TIMEBIT
DESC-IN-ROOMBIT FOODBIT WONBIT RANKBIT NOA)>
;"DESC-IN-ROOMBIT = if room desc is printed, then dont print
desc of obj in d-objects. if just enter
room, do say 'There's a shmoo here.'"
;"DESC-IN-ROOMBIT = if obj with this is container, in a look the contents
must be printed in the m-look. If you enter room,
contents printed in usual way. Sitting on the..."
<OBJECT LOCAL-GLOBALS
(LOC GLOBAL-OBJECTS)
(DESC "it")
(SYNONYM ZZMGCK) ;"Yes, this synonym needs to exist... sigh"
;(DESCFCN 0)
;(GLOBAL GLOBAL-OBJECTS)
;(FDESC "F")
;(LDESC "F")
;(SIZE 0)
;(TEXT "")
;(CAPACITY 0)
;(THINGS <PSEUDO (ZZMGCK ZZMGCK ME-F)>)>
<OBJECT ROOMS
(IN TO ROOMS)
(DESC "it")>
<OBJECT INTDIR
(LOC GLOBAL-OBJECTS)
(DESC "direction")
(SYNONYM DIRECT)
(ADJECTIVE NORTH SOUTH EAST WEST NW NE SW SE)
;(ACTION INTDIR-F)>
;<ROUTINE INTDIR-F ()
<COND (<AND <VERB? BOARD>
<EQUAL? ,P-PRSA-WORD ,W?RIDE>>
<COND (<IN? ,PROTAGONIST ,STALLION>
<DO-WALK ,P-DIRECTION>)
(<IN? ,STALLION ,HERE>
<DO-FIRST "mount">)
(T
<TELL ,THERES-NOTHING "to ride!" CR>)>)>>
<OBJECT INTNUM
(LOC GLOBAL-OBJECTS)
(DESC "number")
(SYNONYM NUMBER NUMBERS)
(ADJECTIVE INTNUM)
(ACTION INTNUM-F)>
<ROUTINE INTNUM-F ()
<COND (<AND <VISIBLE? ,PI>
<OR <ZERO? ,P-NUMBER> ;"input was 'number'"
<AND <EQUAL? ,P-EXCHANGE 22>
<EQUAL? ,P-NUMBER 7>>>>
<FSET ,PI ,OLDBIT>
<FSET ,PI ,NARTICLEBIT>
<COND (<NOT ,TRANS-PRINTED>
<CHANGE-OBJECT ,INTNUM ,PI>)>
<RTRUE>)
(<NOT <EQUAL? ,P-NUMBER 232>>;"secret num. for outside testers"
<CANT-SEE ,INTNUM>)>>
<OBJECT IT
(LOC GLOBAL-OBJECTS)
(SYNONYM IT THEM)
(DESC "it")
(FLAGS VOWELBIT NARTICLEBIT TOUCHBIT)>
<OBJECT HIM
(LOC GLOBAL-OBJECTS)
(SYNONYM HIM HIMSELF)
(DESC "him")
(FLAGS NARTICLEBIT TOUCHBIT)>
<OBJECT HER
(LOC GLOBAL-OBJECTS)
(SYNONYM HER HERSELF)
(DESC "her")
(FLAGS NARTICLEBIT TOUCHBIT)>
<OBJECT EACH-OTHER
(LOC GLOBAL-OBJECTS)
(DESC "it")
(SYNONYM OTHER ITSELF)
(ADJECTIVE EACH)
(ACTION EACH-OTHER-F)>
<ROUTINE EACH-OTHER-F ()
<COND (<PRSI? ,EACH-OTHER>
<PERFORM-PRSA ,PRSO ,PRSO>
<RTRUE>)
;(<NOT <NOUN-USED ,W?ITSELF ,EACH-OTHER>>
<SETG P-WON <>>
<COND (<ADJ-USED ,A?EACH>
<CANT-USE ,A?EACH T>)
(T
<CANT-USE ,W?OTHER T>)>
<RTRUE>)>>
<OBJECT MAN-WOMAN
(LOC GLOBAL-OBJECTS)
(SDESC "")
(SYNONYM MAN WOMAN LADY)
(ACTION MAN-WOMAN-F)>
<ROUTINE MAN-WOMAN-F ("AUX" PERSON)
<COND ;(<VERB? FOLLOW> ;"for YOUNG WOMAN"
<COND (<EQUAL? ,FOLLOW-FLAG 4>
<TELL ,DONT-WANT-TO>)
(<EQUAL? ,FOLLOW-FLAG 5>
<DO-WALK ,P?NORTH>)
(<EQUAL? ,FOLLOW-FLAG 6>
<DO-WALK ,P?EAST>)
(T
<V-WALK-AROUND>)>)
(<AND <EQUAL? <GET ,P-NAMW 0> ,W?MAN> ;"MAN is the PRSO"
<PRSO? ,MAN-WOMAN> ;"in case PRSI is also MAN or WOMAN">
<COND (<SET PERSON <FIND-MAN>>
<PERFORM-PRSA .PERSON ,PRSI>
<RTRUE>)
(T
<CANT-SEE ,MAN-WOMAN>)>)
(<AND <EQUAL? <GET ,P-NAMW 0> ,W?WOMAN ,W?LADY> ;"WOMAN is PRSO"
<PRSO? ,MAN-WOMAN> ;"in case PRSI is also MAN or WOMAN">
<COND (<SET PERSON <FIND-WOMAN>>
<PERFORM-PRSA .PERSON ,PRSI>
<RTRUE>)
(T
<CANT-SEE ,MAN-WOMAN>)>)
(<AND <EQUAL? <GET ,P-NAMW 1> ,W?MAN> ;"MAN is the PRSI"
<PRSI? ,MAN-WOMAN> ;"in case PRSO is also MAN or WOMAN">
<COND (<SET PERSON <FIND-MAN>>
<PERFORM-PRSA ,PRSO .PERSON>
<RTRUE>)
(T
<CANT-SEE ,MAN-WOMAN>)>)
(<AND <EQUAL? <GET ,P-NAMW 1> ,W?LADY ,W?WOMAN> ;"WOMAN is PRSI"
<PRSI? ,MAN-WOMAN> ;"in case PRSO is also MAN or WOMAN">
<COND (<SET PERSON <FIND-WOMAN>>
<PERFORM-PRSA ,PRSO .PERSON>
<RTRUE>)
(T
<CANT-SEE ,MAN-WOMAN>)>)>>
<ROUTINE FIND-MAN ()
<PUTP ,MAN-WOMAN ,P?SDESC "man">
<COND (<IN? ,MURDERER ,HERE>
<RETURN ,MURDERER>)
(<IN? ,FROST ,HERE>
<RETURN ,FROST>)
(<IN? ,CLIENT ,HERE>
<RETURN ,CLIENT>)
(<OR <IN? ,BOB ,HERE>
<AND <EQUAL? ,HERE ,FRONT-ROOM>
<IN? ,BOB ,YOUR-CHAIR>>>
<RETURN ,BOB>)
(<IN? ,COOK ,HERE>
<RETURN ,COOK>)
(<AND <IN? ,DEAN ,HERE>
<FSET? ,DEAN ,OLDBIT>>
<RETURN ,DEAN>)
(<AND <IN? ,LEOPARD ,HERE>
<NOT <FSET? ,LEOPARD ,OLDBIT>>>
<RETURN ,LEOPARD>)
(<IN? ,PIPER ,HERE>
<RETURN ,PIPER>)
(<AND <VISIBLE? ,DUCK>
<OR <IN? ,DUCK ,HERE>
<NOT <FSET? ,DUCK ,PHRASEBIT>>>>
<RETURN ,DUCK>)
(<IN? ,ELF ,HERE>
<RETURN ,ELF>)
(T
<RFALSE>)>>
<ROUTINE FIND-WOMAN ()
<PUTP ,MAN-WOMAN ,P?SDESC "woman">
<COND (<AND <IN? ,ANTS ,HERE>
<NOT <FSET? ,ANTS ,OLDBIT>>>
<RETURN ,ANTS>)
(<VISIBLE? ,MERMAID>
<RETURN ,MERMAID>)
(<VISIBLE? ,WIFE>
<RETURN ,WIFE>)
(<AND <IN? ,DEAN ,HERE>
<NOT <FSET? ,DEAN ,OLDBIT>>>
<RETURN ,DEAN>)
(<AND <VISIBLE? ,PEARL>
<NOT <FSET? ,PEARL ,OLDBIT>>>
<RETURN ,PEARL>)
(<VISIBLE? ,WAITRESS>
<RETURN ,WAITRESS>)
(T
<RFALSE>)>>
<OBJECT NOT-HERE-OBJECT
(DESC "it")
(FLAGS NARTICLEBIT)
(ACTION NOT-HERE-OBJECT-F)>
<ROUTINE NOT-HERE-OBJECT-F ("AUX" TBL (PRSO? T) OBJ (X <>))
<COND (<AND <PRSO? ,NOT-HERE-OBJECT>
<PRSI? ,NOT-HERE-OBJECT>>
<TELL "Those things aren't here!" CR>
<RTRUE>)
;(<AND <EQUAL? ,P-XNAM ,W?BODY>
<EQUAL? ,P-XADJ ,W?MY <>>>
<COND (<PRSO? ,NOT-HERE-OBJECT>
<SETG PRSO ,ME>)
(T
<SETG PRSI ,ME>)>
<RFALSE>)
(<EQUAL? ,P-XNAM ,W?HAIR> ;"as syn for hair-raising experience"
<WASTES>
<RTRUE>)
(<AND <VERB? TAKE>
<OR <EQUAL? ,P-XNAM ,W?POSSESSION>
<EQUAL? <GET ,P-OFW 0> ,W?POSSESSION>>>
<TELL "You're getting too \"possessive\" now." CR>
<RTRUE>)
(<AND <VERB? MAKE> ;"make adj obj of obj - to avoid 'be specif'"
<NOT <ZERO? <GET ,P-OFW 0>>>>
<V-MAKE>
<RTRUE>)
(<AND <EQUAL? ,P-XNAM ,W?HAND ,W?HANDS>
<EQUAL? ,P-XADJ ,W?BROTHER-IN-LAW ,W?BOB\'S ,W?BOBS>
<VERB? SHAKE TAKE>>
<PERFORM ,V?SHAKE-WITH ,HANDS ,BOB>
<RTRUE>)
(<AND <EQUAL? ,P-XNAM ,W?EYE ,W?EYES>
<EQUAL? ,P-XADJ ,W?HER>>
<COND (<PRSO? ,NOT-HERE-OBJECT>
<SETG PRSO ,EYES>)
(T
<SETG PRSI ,EYES>)>
<RFALSE>)
(<AND <EQUAL? ,P-XNAM ,W?SHOULDER>
<EQUAL? ,P-XADJ ,W?HER>>
<COND (<PRSO? ,NOT-HERE-OBJECT>
<SETG PRSO ,SHOULDER>)
(T
<SETG PRSI ,SHOULDER>)>
<RFALSE>)
(<AND <EQUAL? ,P-XNAM ,W?COMEUPPANCE>
<EQUAL? ,P-XADJ ,W?HER>>
<COND (<PRSO? ,NOT-HERE-OBJECT>
<SETG PRSO ,COMEUPPANCE>)
(T
<SETG PRSI ,COMEUPPANCE>)>
<RFALSE>)
(<AND <EQUAL? ,P-XNAM ,W?DESSERTS>
<EQUAL? ,P-XADJ ,W?HER>>
<COND (<PRSO? ,NOT-HERE-OBJECT>
<SETG PRSO ,DESSERTS>)
(T
<SETG PRSI ,DESSERTS>)>
<RFALSE>)
(<AND <OR <EQUAL? ,P-XNAM ,W?HANDS ,W?HAND ,W?PALM>
<EQUAL? ,P-XNAM ,W?FINGER ,W?EYE ,W?EYES>
<EQUAL? ,P-XNAM ,W?FOOT ,W?FEET ,W?TOE ,W?TOES>
<EQUAL? ,P-XNAM ,W?NOSE ,W?MOUTH ,W?LIP ,W?LIPS>
<EQUAL? ,P-XNAM ,W?HEAD ,W?SPLEEN ,W?SHOULDER>>
<EQUAL? ,P-XADJ ,W?BOB\'S ,W?WAITRESS
,W?PIPER\'S ,W?HORSE\'S ,W?DONKEY\'S
,W?DOG\'S ,W?WIFE\'S ,W?LADY\'S ,W?GIRL\'S
,W?JENNY\'S ,W?QUEEN\'S ,W?DEAN\'S
,W?LEOPARD\'S ,W?GIANT\'S ,W?CLIENT\'S
,W?ELF\'S ,W?JACK\'S ,W?MERMAID\'S ,W?WOMAN\'S
,W?DUCK\'S ,W?MAYOR\'S ,W?MAN\'S ,W?HIS>>
<TELL
"[You don't need to refer to that body part in such a manner.]" CR>
<RTRUE>)
(<PRSO? ,NOT-HERE-OBJECT>
<SET TBL ,P-PRSO>)
(T
<SET TBL ,P-PRSI>
<SET PRSO? <>>)>
<COND (<AND .PRSO?
<PRSO-MOBY-VERB?>>
<SET X T>)
(<AND <NOT .PRSO?>
<PRSI-MOBY-VERB?>>
<SET X T>)>
<COND (.X ;"the verb is a moby-find verb"
<COND (<SET OBJ <FIND-NOT-HERE .TBL .PRSO?>>
<COND (<NOT <EQUAL? .OBJ ,NOT-HERE-OBJECT>>
<RTRUE>)>)
(T
<RFALSE>)>
<COND (<VERB? WALK-TO FOLLOW>
<V-WALK-AROUND>)
(T
<BE-MORE-SPECIFIC>)>)
(T
<COND (<EQUAL? ,WINNER ,ME> ;"for YOU CANT VERB OBJECT"
<RFALSE>) ;"OBJECT need not be here"
(<EQUAL? ,WINNER ,PROTAGONIST>
<TELL "You">)
(T
<TELL "Looking confused," T ,WINNER " says, \"I">)>
<TELL " can't see">
;<COND (<EQUAL? ,P-XNAM ,W?ODOR ,W?SMELL ,W?SCENT>
<TELL "smell">)
(T
<TELL "see">)>
<COND (<NOT <NAME? ,P-XNAM>>
<TELL " any">)>
<NOT-HERE-PRINT .PRSO?>
<TELL " here!">
<COND (<NOT <EQUAL? ,WINNER ,PROTAGONIST>>
<TELL "\"">)>
<CRLF>)>
<STOP>>
<ROUTINE PRSO-MOBY-VERB? ()
<COND (<OR <EQUAL? ,PRSA ,V?WHAT ,V?WHERE ,V?SSET>
<EQUAL? ,PRSA ,V?WAIT-FOR ,V?WALK-TO ,V?MAKE>
<EQUAL? ,PRSA ,V?BUY ,V?CALL ,V?SAY>
<EQUAL? ,PRSA ,V?FIND ,V?FOLLOW ,V?SSEARCH-OBJECT-FOR>
<EQUAL? ,PRSA ,V?NO-VERB ,V?RIDE-TO ,V?BUY-WITH>
<EQUAL? ,PRSA ,V?BUY-IN ,V?WHO ,W?PLAY>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE PRSI-MOBY-VERB? ()
<COND (<EQUAL? ,PRSA ,V?ASK-ABOUT ,V?ASK-FOR ,V?TELL-ABOUT ,V?SET
,V?HAMMER ,V?SEARCH-OBJECT-FOR ,V?RIDE-OBJECT-TO
,V?MOVE ,V?CLEAN-IN>
<RTRUE>)
(T
<RFALSE>)>>
;"Protocol: returns .OBJ if that's the one to use
,NOT-HERE-OBJECT if case was handled and msg TELLed
<> if WHICH-PRINT should be called"
<ROUTINE FIND-NOT-HERE (TBL PRSO? "AUX" M-F OBJ)
;"Special-case code goes here. <MOBY-FIND .TBL> returns # of matches. If 1,
then P-MOBY-FOUND is it. You can treat the 0 and >1 cases alike or differently.
Always return RFALSE (not handled) if you have resolved the problem."
<SET M-F <MOBY-FIND .TBL>>
;<COND (,DEBUG
<TELL "[Found " N .M-F " obj]" CR>)>
<COND (<EQUAL? 1 .M-F>
;<COND (,DEBUG
<TELL "[Namely: " D ,P-MOBY-FOUND "]" CR>)>
<COND (.PRSO?
<SETG PRSO ,P-MOBY-FOUND>
<THIS-IS-IT ,PRSO>)
(T
<SETG PRSI ,P-MOBY-FOUND>)>
<RFALSE>)
(<AND <L? 1 .M-F>
<SET OBJ <APPLY <GETP <SET OBJ <GET .TBL 1>> ,P?GENERIC>>>>
;"Protocol: returns .OBJ if that's the one to use
,NOT-HERE-OBJECT if case was handled and msg TELLed
<> if WHICH-PRINT should be called"
;<COND (,DEBUG
<TELL "[Generic: " D .OBJ "]" CR>)>
<COND (<EQUAL? .OBJ ,NOT-HERE-OBJECT>
<RTRUE>)
(.PRSO?
<SETG PRSO .OBJ>
<THIS-IS-IT ,PRSO>)
(T
<SETG PRSI .OBJ>)>
<RFALSE>)
(T
,NOT-HERE-OBJECT)>>
<ROUTINE NOT-HERE-PRINT (PRSO?)
<COND (,P-OFLAG
<COND (,P-XADJ
<TELL " ">
<PRINTB ,P-XADJ ;,P-XADJN>)> ;"classic to ezip"
<COND (,P-XNAM
<TELL " ">
<PRINTB ,P-XNAM>)>)
(.PRSO?
<BUFFER-PRINT <GET ,P-ITBL ,P-NC1> <GET ,P-ITBL ,P-NC1L> <>>)
(T
<BUFFER-PRINT <GET ,P-ITBL ,P-NC2> <GET ,P-ITBL ,P-NC2L> <>>)>>
;<OBJECT LOVE ;"for MAKE LOVE TO someone"
(LOC GLOBAL-OBJECTS)
(DESC "love")
(SYNONYM LOVE)
(FLAGS NARTICLEBIT)
(ACTION LOVE-F)>
;<ROUTINE LOVE-F ("AUX" LOVER)
<COND (<VERB? MAKE>
<COND (<SET LOVER <FIND-IN ,HERE ,ACTORBIT "to">>
<PERFORM ,V?FUCK .LOVER>
<RTRUE>)
(T
<TELL "Alone? How odd." CR>)>)>>
<OBJECT GLOBAL-SLEEP
(LOC GLOBAL-OBJECTS)
(DESC "sleep")
(SYNONYM SLEEP NAP SNOOZE)
(FLAGS NARTICLEBIT)
(ACTION GLOBAL-SLEEP-F)>
<ROUTINE GLOBAL-SLEEP-F ()
<COND (<VERB? WALK-TO TAKE NO-VERB>
<PERFORM ,V?SLEEP>
<RTRUE>)
(<AND <VERB? PUT-TO>
<PRSI? ,GLOBAL-SLEEP>>
<TELL "You're not a hypnotist." CR>)>>
<OBJECT GROUND
(LOC GLOBAL-OBJECTS)
(SYNONYM FLOOR GROUND RUG CARPET)
(SDESC "ground")
(ACTION GROUND-F)>
<ROUTINE GROUND-F ()
<COND (<FSET? ,HERE ,INDOORSBIT>
<PUTP ,GROUND ,P?SDESC "floor">)
(<EQUAL? ,HERE ,FLOOR-2>
<PUTP ,GROUND ,P?SDESC "carpet">)
(T
<PUTP ,GROUND ,P?SDESC "ground">)>
<COND (<AND <NOUN-USED ,GROUND ,W?CARPET ,W?RUG>
<NOT <EQUAL? ,HERE ,FLOOR-2>>>
<CANT-SEE <> "carpet">)
(<AND <VERB? CLEAN>
<IN? ,BAD-BLOOD ,HERE>>
<PERFORM ,V?CLEAN ,BAD-BLOOD>
<RTRUE>)
(<AND <VERB? CALL>
<PRSO? ,WAITRESS>>
<OFFENCE ,GROUND>)
(<AND <VERB? LOOK-UNDER>
<NOT <NOUN-USED ,GROUND ,W?CARPET>>>
<IMPOSSIBLES>)
(<AND <NOUN-USED ,GROUND ,W?RUG ,W?CARPET>
<VERB? EXAMINE>>
<TELL "It makes you think of the waitress's calling card." CR>)
(<VERB? MOVE ROLL>
<TELL "It's a wall-to-wall carpet." CR>)
(<VERB? CLIMB-UP CLIMB-ON CLIMB BOARD>
<COND (<AND <EQUAL? ,HERE ,ATTIC>
<FSET? ,ATTIC ,PHRASEBIT>>
<TELL
"You climb the walls but can't get to the floor." CR>)
(T
<WASTES>)>)
(<VERB? LEAVE>
<DO-WALK ,P?UP>)
(<AND <VERB? EXAMINE>
<EQUAL? ,HERE ,BRITISH-ROOM>>
<BRITISH-ROOM-F ,M-LOOK>
<CRLF>)>>
<OBJECT WALL
(LOC GLOBAL-OBJECTS)
(FLAGS NDESCBIT TOUCHBIT)
(DESC "wall")
(SYNONYM WALL WALLS)
(ACTION WALL-F)>
<ROUTINE WALL-F ()
<COND (<AND <NOT <FSET? ,HERE ,INDOORSBIT>>
<NOT <DONT-HANDLE ,WALL>>>
<CANT-SEE ,WALL>)>>
<OBJECT CEILING
(LOC GLOBAL-OBJECTS)
(FLAGS NDESCBIT TOUCHBIT)
(DESC "ceiling")
(SYNONYM CEILING ROOF)
;(ADJECTIVE TOWERING)
(ACTION CEILING-F)>
<ROUTINE CEILING-F ()
<COND (<NOT <FSET? ,HERE ,INDOORSBIT>>
<CANT-SEE ,CEILING>)
(<AND <VERB? MUNG RAISE>
<EQUAL? ,P-PRSA-WORD ,W?HIT ,W?RAISE>
<EQUAL? ,SCENE ,RESTAURANT>>
<OFFENCE>)
(<VERB? LOOK-UNDER>
<PERFORM ,V?LOOK>
<RTRUE>)>>
<OBJECT WATER
(LOC LOCAL-GLOBALS)
(DESC "water")
(SYNONYM WATER BATH BATHWATER)
(ADJECTIVE BATH HOT)
(FLAGS NARTICLEBIT NDESCBIT TRYTAKEBIT)
(ACTION WATER-F)>
;"PHRASEBIT = LEAD A HORSE TO WATER"
<ROUTINE WATER-F ()
<COND (<AND <NOT <DONT-HANDLE ,WATER>>
<EQUAL? ,HERE ,POND-ROOM>
<NOT <FSET? ,ICE ,RMUNGBIT>>
<NOT <IN? ,HOT-TUB ,HERE>>> ;"added"
<CANT-SEE ,WATER>)
(<OR <AND <NOT <DONT-HANDLE ,WATER>>
<EQUAL? ,HERE ,BATHROOM>
,BABY-THROWN>
<AND <NOT <EQUAL? ,HERE ,BATHROOM>>
<OR <NOUN-USED ,WATER ,W?BATHWATER>
<ADJ-USED ,WATER ,W?BATH>>>>
<CANT-SEE ,WATER>)
(<VERB? DRINK BUY>
<TELL "You're not thirsty." CR>)
(<VERB? LOOK-INSIDE LOOK-UNDER EXAMINE>
<TELL "The water is dark and murky." CR>)
(<VERB? REACH-IN>
<TELL "Your hand is now wet." CR>)
(<AND <VERB? PUT-ON>
<PRSI? ,WATER>>
<PERFORM ,V?PUT ,PRSO ,WATER>
<RTRUE>)
(<AND <VERB? PUT>
<PRSI? ,WATER>
<EQUAL? ,HERE ,POND-ROOM>>
<WASTES>)
(<AND <VERB? PUT>
<PRSI? ,WATER>
<EQUAL? ,HERE ,BATHROOM>>
<PERFORM ,V?PUT ,PRSO ,TUB>
<RTRUE>)
(<OR <VERB? ENTER BOARD>
<AND <VERB? TAKE>
<NOUN-USED ,WATER ,W?BATH>>>
<COND (<EQUAL? ,HERE ,POND-ROOM>
<PERFORM ,V?ENTER ,ICE>
<RTRUE>)
(<VISIBLE? ,TUB>
<PERFORM ,V?ENTER ,TUB>
<RTRUE>)
(<EQUAL? ,HERE ,SHORE>
<PERFORM ,V?SWIM ,RHINES>
<RTRUE>)>)
(<VERB? BOARD ENTER CRAWL-UNDER>
<V-SWIM>)>>
;<OBJECT SKY
(LOC GLOBAL-OBJECTS)
(DESC "sky")
(SYNONYM SKY)
(ACTION SKY-F)>
;<ROUTINE SKY-F ()
<COND (<FSET? ,HERE ,INDOORSBIT>
<CANT-SEE ,SKY>)>>
<OBJECT HANDS
(LOC GLOBAL-OBJECTS)
(SYNONYM HANDS HAND PALM FINGER)
(ADJECTIVE BARE MY YOUR)
(DESC "your hand")
(FLAGS NDESCBIT TOUCHBIT NARTICLEBIT PARTBIT)
(ACTION HANDS-F)>
;"RMUNGBIT = green thumb told in inventory"
<ROUTINE HANDS-F ("AUX" ACTOR)
<COND ;(<VERB? APPLAUD>
<SETG PRSO <>>
<V-APPLAUD>)
(<VERB? CLEAN>
<WASTES>)
(<VERB? SHAKE>
<COND (<VISIBLE? ,BOB>
<PERFORM ,V?SHAKE-WITH ,HANDS ,BOB>
<RTRUE>)
(<SET ACTOR <FIND-IN ,HERE ,ACTORBIT "with">>
<PERFORM ,V?SHAKE-WITH ,HANDS .ACTOR>
<RTRUE>)
(T
<TELL
"There's no one here to shake hands with." CR>)>)
;(<VERB? COUNT>
<COND (<NOUN-USED ,W?FINGER ,HANDS>
<TELL "Ten">)
(T
<TELL "Two">)>
<TELL ", as usual." CR>)
;(<VERB? CLEAN>
<TELL "Done." CR>)
(<AND <VERB? TAKE-WITH>
<PRSI? ,HANDS>>
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)
;(<AND <VERB? PUT-ON>
<PRSI? ,EYES>>
<PERFORM ,V?SPUT-ON ,EYES ,HANDS>
<RTRUE>)
;(<AND <VERB? PUT-ON PUT>
<PRSI? ,EARS>>
<PERFORM ,V?SPUT-ON ,EARS ,HANDS>
<RTRUE>)>>
<OBJECT FOOT
(LOC GLOBAL-OBJECTS)
(SYNONYM FOOT FEET SHOE SHOES TOES TOE)
(ADJECTIVE MY YOUR HOT)
(SDESC "your foot")
(FLAGS NDESCBIT TOUCHBIT NARTICLEBIT PARTBIT)
(ACTION FOOT-F)>
;"WORNBIT = wearing your shoes"
<ROUTINE FOOT-F ()
<COND (<NOUN-USED ,FOOT ,W?SHOE ,W?SHOES>
<PUTP ,FOOT ,P?SDESC "your shoe">)
(T
<PUTP ,FOOT ,P?SDESC "your foot">)>
<COND (<AND <EQUAL? ,SCENE ,HAZING>
,SWUM-IN-RHINES
<NOUN-USED ,FOOT ,W?SHOE ,W?SHOES>>
<COND (<FSET? ,FOOT ,SEENBIT>
<TELL "You can't find, and don't need, your shoes">)
(T
<TELL
"As so often happens after swimming
at the beach, you can't seem to locate where you left your shoes">)>
<TELL ,PERIOD>)
(<AND <VERB? TAKE-OFF>
<NOUN-USED ,FOOT ,W?SHOE ,W?SHOES>>
<COND (<EQUAL? ,HERE ,SHORE>
<COND (<AND <EQUAL? ,P-PRSA-WORD ,W?SHAKE>
<NOUN-USED ,FOOT ,W?TOES ,W?TOE>>
<TELL
"Despite your wild shaking and gyrating, which recalls the most ambitious
of the early 60's beach-blanket movies, your toes stay on." CR>)
;(,SWUM-IN-RHINES
<PERFORM ,V?SWIM ,RHINES>
<RTRUE>)
(<NOT ,PEARL-TO-RIVER>
<PERFORM ,V?SWIM ,RHINES> ;"ie, stay out"
<RTRUE>)
(T
<SETG SWUM-IN-RHINES T>
<MOVE ,PEARL ,PROTAGONIST>
<UPDATE-SCORE>
<TELL
"Though you feel like a real beach nut, it does the trick. You now dive
deep into danger and pull out a gritty pearl from the bottom
of the river and come back to shore." CR>)>);"and put on your shoes. NO"
(T
<WASTES>)>)
(<AND <VERB? WEAR>
<NOUN-USED ,FOOT ,W?SHOE ,W?SHOES>>
<TELL "You already are." CR>)>>
;<ROUTINE ITEMS-CARRIED ("AUX" X (CNT 0))
<SET X <FIRST? ,PROTAGONIST>>
<REPEAT ()
<COND (<NOT .X>
<RETURN>)
(T ;<AND <NOT <FSET? .X ,WORNBIT>>
<NOT <EQUAL? .X ,COMIC-BOOK>>>
<SET CNT <+ .CNT 1>>)>
<SET X <NEXT? .X>>>
<RETURN .CNT>>
;<GLOBAL HAND-COVER <>>
<OBJECT HEAD
(LOC GLOBAL-OBJECTS)
(DESC "your head")
(SYNONYM HEAD ;HAIR)
(ADJECTIVE YOUR MY)
(FLAGS NARTICLEBIT PARTBIT)
(ACTION HEAD-F)>
<ROUTINE HEAD-F ()
<COND (<AND <PRSO? ,HOUSE>
<NOT <FSET? ,HOUSE ,OLDBIT>>>
<MOVE ,HOUSE ,PROTAGONIST>
<SETG LOUSE-ON-HEAD T>
<TELL "Done." CR>)
(<AND <VERB? TOUCH>
,LOUSE-ON-HEAD>
<PERFORM ,V?TAKE ,HOUSE>
<RTRUE>)>>
<OBJECT SHOULDER
(LOC GLOBAL-OBJECTS)
(DESC "your shoulder")
(SYNONYM SHOULDER SHOULDERS BREASTSTROKE SWIMMING
BACKSTROKE BACK-STROKE STROKE CRAWL)
(ADJECTIVE YOUR MY BACK)
(FLAGS NARTICLEBIT PARTBIT)
(ACTION SHOULDER-F)>
;"seenbit = fly question m-beg"
<ROUTINE SHOULDER-F ()
<COND (<AND <VERB? NO-VERB>
<NOT <QUEUED? ,I-ORPHAN>>
<OR <NOUN-USED ,SHOULDER ,W?BACKSTROKE ,W?BACK-STROKE
,W?BREASTSTROKE>
<NOUN-USED ,SHOULDER ,W?SWIMMING ,W?CRAWL>>>
<PERFORM ,V?TELL ,ME>
<RTRUE>)>>
<OBJECT SPLEEN
(LOC GLOBAL-OBJECTS)
(DESC "your spleen")
(SYNONYM SPLEEN)
(ADJECTIVE YOUR MY)
(FLAGS NARTICLEBIT PARTBIT)
(ACTION SPLEEN-F)>
<ROUTINE SPLEEN-F ()
<COND (<AND <VERB? VENT>
<PRSI? ,WAITRESS>>
<OFFENCE>)
(<SEEING? ,SPLEEN>
<PERFORM ,V?LOOK-INSIDE ,ME>
<RTRUE>)>>
<OBJECT EYES
(LOC GLOBAL-OBJECTS)
(DESC "your eyes")
(SYNONYM EYE EYES)
(ADJECTIVE YOUR MY EVIL JAUNDICED)
(FLAGS NARTICLEBIT PLURALBIT PARTBIT)
(ACTION EYES-F)>
;"RMUNGBIT = used as phrasebit for evil eye case in restaurant"
<ROUTINE EYES-F ("AUX" ADJ)
<COND (<OR <ADJ-USED ,EYES ,W?EVIL>
<ADJ-USED ,EYES ,W?JAUNDICED>>
<COND (<AND <NOT <EQUAL? ,SCENE ,RESTAURANT>>
<NOT <DONT-HANDLE ,EYES>>>
<TELL "You don't have such an eye now." CR>)
(<AND <ADJ-USED ,EYES ,W?EVIL ,W?JAUNDICED>
<VERB? EXAMINE>>
<COND (<PRSO? ,WAITRESS> ;"pre-give preforms examine"
<OFFENCE ,EYES>)
(<PRSO? ,COOK>
<TELL
"Such a glare couldn't melt butter in this joint." CR>)>)>)>>
;<OBJECT EARS
(LOC GLOBAL-OBJECTS)
(DESC "your ears")
(SYNONYM EAR EARS)
(ADJECTIVE YOUR MY)
(FLAGS NARTICLEBIT PLURALBIT PARTBIT)
;(ACTION EARS-F)>
<OBJECT NOSE
(LOC GLOBAL-OBJECTS)
(DESC "your nose")
(SYNONYM NOSE NOSTRIL)
(ADJECTIVE YOUR MY)
(FLAGS NARTICLEBIT PARTBIT)
;(ACTION NOSE-F)>
;<ROUTINE NOSE-F ()
<COND (<VERB? BLOW PICK>
<TELL ,YECHH>)
(<AND <VERB? TAKE>
<EQUAL? ,P-PRSA-WORD ,W?HOLD>>
<PERFORM ,V?SPUT-ON ,NOSE ,HANDS>
<RTRUE>)
(<AND <VERB? UNCOVER>
<FSET? ,CLOTHES-PIN ,WORNBIT>
<NOT ,GONE-APE>>
<COND (<EQUAL? ,NOSE ,HAND-COVER>
<SETG HAND-COVER <>>)>
<PERFORM ,V?REMOVE ,CLOTHES-PIN>
<RTRUE>)>>
<OBJECT MOUTH
(LOC GLOBAL-OBJECTS)
(DESC "your mouth")
(SYNONYM MOUTH LIP LIPS)
(ADJECTIVE YOUR MY)
(FLAGS SEENBIT NARTICLEBIT PARTBIT)
(ACTION MOUTH-F)>
<ROUTINE MOUTH-F ()
<COND (<AND <VERB? PUT>
<PRSI? ,MOUTH>>
<PERFORM ,V?EAT ,PRSO>
<RTRUE>)>>
;"Sheriff stands here next to his cop cars with triwrling silent blue lights
arranged in a road block just outside of town, tumbleweeds. Tall, muscular
square-jawed mirror-black glasses. Tilted. silent man with a toothpick angling out of his mouth. Tight-lipped. Leaning back against the care with his legs
and arms crossed.
If you want to try and help, I can deputize you. You are given a short
oath, and conclude it with I Do. (Now, we're just waiting
for the national guard, we've sent a messanger on foot, since all
communications have been jammed by whoever's messed up this town.) You can't
go beyond this point though. Three of my finest deputies have entered and
never come back... Need to be cool as a cucumber..."
;(LDESC "[Hiking around in the country one day, you come upon a
wind-blown newspaper, pick it up and begin reading it while slowly
continuing to walk. From the unbelievable things you read, the paper
seems to be some kind of foolish joke, but you keep reading while not
being mindful of where you're going. When you finally decide the stories
are just too far-fetched and you're about to let fly with the newspaper,
your thoughts are abruptly interrupted as you bump into a road block and
hear the words:|
|
\"Whoa there!\"|
|
A sheriff is leaning against a
police car whose blue lights are silently rotating. He tilts his hat
back and sizes you up for a moment. \"Civic-minded,\" he says. \"Well,
so you've read about the troubles. It's good to see a new volunteer.\"
The sheriff recites a short oath. Stunned, you respond \"I do?\"|
|
\"Good enough. Okay, Deputy, you can do one of the following:|
|
"Go to
the Shopping Bizarre, Play Jacks, Buy the Farm, Eat your Words, Act the
Part, Visit the Manor of Speaking, Shake a Tower, or Meet the Mayor."]|
|
[To try another scene, restart back to here. The status line will tell
you exactly where you can go. Within each part of the story, you can
type just the name of the room you want to go to, rather than GO TO
(ROOM).]")
<ROOM STARTING-ROOM
(LOC ROOMS)
(DESC "Beginning")
;"when the leading figures of the town are those of speech"
(ACTION STARTING-ROOM-F)>
<ROUTINE STARTING-ROOM-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-BEG>
<CLOCKER-VERB?>
<OR <AND ,PRSO
<NOT <EQUAL? ,PRSO ,START-OBJ ,RANKS>>>
<NOT ,PRSO>>>
<SHERIFF-ASKS T>
<CRLF>
<RTRUE>)
(<EQUAL? .RARG ,M-LOOK>
<COND (<FSET? ,STARTING-ROOM ,TOUCHBIT>
<SHERIFF-ASKS>
<RTRUE>)>
<TELL
"We, the members of the Citizens' Action Committee, welcome you to our
mixed-up Town of Punster. You have no doubt already heard
about the nature of our troubles. Very giving of yourself indeed it is, for
you to help cleanse the land of every wrongful, wordful deed. In this time
when phraseology is practiced with mischief as the sole black art, when the
currency is debased with the ceaseless random coinage of words, when
verbicide is statistically the common household tragedy -- now is the time
when such a doer of good words is most welcome.|
|
We can see you are anxious to go now. So be off, but pick your words carefully;
weigh them upon the most delicate of scales. Watch out not only for your
P's and Q's, but your K's and M's as well. And while you're at it, watch
your R's.|
|
You can do one of the following: " <GETP ,AISLE ,P?PICK-IT> ", "
<GETP ,JOAT ,P?PICK-IT> ", " <GETP ,FARM ,P?PICK-IT> ", "
<GETP ,RESTAURANT ,P?PICK-IT> ", " <GETP ,COMEDY ,P?PICK-IT> ", "
<GETP ,DUELING ,P?PICK-IT> ", " <GETP ,HAZING ,P?PICK-IT> ", or "
<GETP ,EIGHT ,P?PICK-IT> ".||
If at any time in your travels you wish to tackle another situation, indicate
BEGINNING, and you shall return here empty-handed.">)>>
;">Play Jacks|
>Buy the Farm|
>Eat your Words|
>Act the Part|
>Visit the Manor of Speaking|
>Shake a Tower
>Meet the Mayor"
<GLOBAL MENU-FLAG <>>
<ROUTINE SHERIFF-ASKS ("OPT" (DAWDLE <>))
<COND (,MENU-FLAG
<RTRUE>)>
<SETG MENU-FLAG T>
<COND (.DAWDLE
<TELL
"There's no time to dawdle. You must">)
(T
<TELL "You now have the opportunity to">)>
<TELL " do one of the following:|">
<COND (<NOT <FSET? ,AISLE ,WONBIT>>
<TELL CR ">" <GETP ,AISLE ,P?PICK-IT>>)>
<COND (<NOT <FSET? ,JOAT ,WONBIT>>
<TELL CR ">" <GETP ,JOAT ,P?PICK-IT>>)>
<COND (<NOT <FSET? ,FARM ,WONBIT>>
<TELL CR ">" <GETP ,FARM ,P?PICK-IT>>)>
<COND (<NOT <FSET? ,RESTAURANT ,WONBIT>>
<TELL CR ">" <GETP ,RESTAURANT ,P?PICK-IT>>)>
<COND (<NOT <FSET? ,COMEDY ,WONBIT>>
<TELL CR ">" <GETP ,COMEDY ,P?PICK-IT>>)>
<COND (<NOT <FSET? ,DUELING ,WONBIT>>
<TELL CR ">" <GETP ,DUELING ,P?PICK-IT>>)>
<COND (<NOT <FSET? ,HAZING, WONBIT>>
<TELL CR ">" <GETP ,HAZING ,P?PICK-IT>>)>
<COND (<NOT <FSET? ,EIGHT ,WONBIT>>
<TELL CR ">" <GETP ,EIGHT ,P?PICK-IT>>)>
<RTRUE>>
<OBJECT START-OBJ
(LOC GLOBAL-OBJECTS)
(DESC "scenario")
(SYNONYM
BIZARRE JACK JACKS FARM WORD WORDS PART MANOR SPEAKING TOWER MAYOR BEGINNING
BEGIN SCENARIO)
(ADJECTIVE SHOPPING MY YOUR)
(FLAGS NDESCBIT)
(ACTION START-OBJ-F)>
;"Go to the Shopping Bizarre, Play Jacks, Buy the Farm, Eat your Words,
Act the Part, Visit the Manor of Speaking, or Shake a Tower."
<GLOBAL SCENE <>>
<GLOBAL RECORDS-SHOW <>>
<ROUTINE START-OBJ-F ("AUX" OBJ (CNT 0))
<COND ;(<AND <VERB? WALK-TO> ;"this moved to routine FINISHED"
<NOT <NOUN-USED ,START-OBJ ,W?BEGIN ,W?BEGINNING>>
<NOT <EQUAL? ,HERE ,STARTING-ROOM>>>
<TELL
"You must first go to the BEGINNING before playing another scenario." CR>)
(<AND <VERB? WALK-TO NO-VERB>
<NOUN-USED ,START-OBJ ,W?BEGIN ,W?BEGINNING>>
<RE-BEGIN>
<RTRUE>)
(<VERB? WALK-TO>
;<EQUAL? ,HERE ,STARTING-ROOM>
<COND (<NOUN-USED ,START-OBJ ,W?FARM>
<COND (<FINISHED? ,FARM>
<RTRUE>)>
<MOVE ,GRINDSTONE ,LOFT>
<SETG HINT-TBL ,FARM-HINTS>
<TELL
"The farm crisis never seemed so desperate as it has this planting season
in Punster. One such family farm on the edge of town, the McCleary's, has
been especially blighted. The family, though well accustomed to hard work,
suddenly lost the ability to perform even the simplist of chores necessary to
scratch a living from the soil. They have since been driven from the land,
and join with their fellow Punster neighbors in urging you to somehow save the
family farm." CR CR>
<GO-TO-SCENE ,FARM>)
(<NOUN-USED ,START-OBJ ,W?JACKS ,W?JACK>
<SETG HINT-TBL ,JOAT-HINTS>
<COND (<FINISHED? ,JOAT>
<RTRUE>)>
<TELL
"The oddities of language have been so prevalant in the town of Punster,
that surrounding communities have been similarly affected. One such bordering
town is Jackville, located in the northern backwoods region, but still
well within the realm of possibilities." CR CR>
<GO-TO-SCENE ,JOAT>)
(<NOUN-USED ,START-OBJ ,W?TOWER>
<COND (<FINISHED? ,HAZING>
<RTRUE>)>
<COND (,RESUME-DEAN
<SETG RESUME-DEAN <>>
<QUEUE I-DEAN -1>)>
<SETG HINT-TBL ,HAZING-HINTS>
<TELL
"In the dark forest outside the town boundries of Punster, chaos has been
the order of the day. On a recent afternoon the daughter of a leading citizen
of our town, out for a stroll among the tall pines, disappeared without
apparent trace. Rumor has it that one strange, stand-alone door is the only
means of escape from the forest. But no volunteer has yet been found to face
the oddball nature of the place. That is, until now." CR CR>
<GO-TO-SCENE ,HAZING>)
(<NOUN-USED ,START-OBJ ,W?BIZARRE>
<COND (<FINISHED? ,AISLE>
<RTRUE>)>
<SETG HINT-TBL ,AISLE-HINTS>
<TELL "On a recent Friday night at the
Supermarket, the usual shopping frenzy suddenly turned into shopping
panic. Crazed bargain-hunters, recklessly pushing shopping carts before
them, were observed to stream from the aisles and out the market, many
of whom not even stopping to pause in the parking lot. Whatever it was
that caused the panic, one thing's for sure -- business has never been
the same. By restoring some semblance of order to this bizarre
situation, and perhaps purchasing some item or another, you can begin to
rebuild customer confidence." CR CR>
<COND (,RESUME-BRAT
<SETG RESUME-BRAT <>>
<QUEUE I-BRAT -1>)>
<COND (,RESUME-ANTS
<SETG RESUME-ANTS <>>
<QUEUE I-ANTS -1>)>
<GO-TO-SCENE ,AISLE>)
(<NOUN-USED ,START-OBJ ,W?WORDS ,W?WORD>
<SETG HINT-TBL ,RESTAURANT-HINTS>
<COND (<FINISHED? ,RESTAURANT>
<RTRUE>)>
<MOVE ,GRINDSTONE ,KITCHEN>
<TELL
"Indeed, eat your words. So widespread has this language virus become in
the Town of Punster, that the simple act of going out for a bite to eat
turns into a whole new adventure of its own. Enjoy." CR CR>
<GO-TO-SCENE ,RESTAURANT>)
(<NOUN-USED ,START-OBJ ,W?PART>
<SETG HINT-TBL ,COMEDY-HINTS>
<COND (<FINISHED? ,COMEDY>
<RTRUE>)>
<TELL
"The foremost star of stage and scream in Punster, Brad Watkins, has left
behind our small-town difficulties in search of fame and fortune beyond
the purple horizon. We of course wish him the very worst of luck. It has
been very dashing of you to take the stage in his absence. With the proper
make-up applied, you're a side-splitting image." CR CR>
<MOVE ,COAT ,PROTAGONIST>
<FSET ,COAT ,WORNBIT>
<COND (<NOT <FSET? ,WIFE ,SEENBIT>>
<QUEUE I-WIFE -1>)>
<COND (<NOT <FSET? ,FRONT-ROOM ,TOUCHBIT>>
<SETG KNOCK-JOKE ,W?BOB>
<QUEUE I-KNOCK -1>)>
<GO-TO-SCENE ,COMEDY>)
(<NOUN-USED ,START-OBJ ,W?MANOR ,W?SPEAKING>
<SETG HINT-TBL ,DUELING-HINTS>
<COND (<FINISHED? ,DUELING>
<RTRUE>)>
<TELL
"The sad truth here is that the Manor of Speaking once enjoyed the reputation
as one of ">
<ITALICIZE "the">
<TELL " finest guest houses in the entire region
around Punster. But queer indeed is the fate it has suffered. The
various rooms of the house are actually possessed by the warped personalities
of by-gone visitors. The experience of a present-day guest to each of
the rooms is colored very strongly by the thoughts and indeed voice of
each ghostly presence. Needless to say, vacancy rates have gone through
the roof. Which leads us to the crucial problem with the Manor. Its
attic, as you will notice, is radically out of joint, situated ">
<ITALICIZE "below">
<TELL
" the level of the first floor. It has been theorized that if this misplacement
could be dramatically rectified, the spirits who've worn out their welcome
might flee in horror. This is our hope, may it be your quest." CR CR>
<GO-TO-SCENE ,DUELING>)
(<NOUN-USED ,START-OBJ ,W?MAYOR>
<COND (<NOT <EQUAL? ,HERE ,STARTING-ROOM>>
<TELL ,MUST-GO-BEGIN>
<RTRUE>)
(<FSET? ,SQUARE ,TOUCHBIT>
<FCLEAR ,SQUARE ,TOUCHBIT>
<SETG HINT-TBL ,EIGHT-HINTS>
<MOVE ,DECREE ,PROTAGONIST>
<SETG SCENE ,EIGHT>
<GOTO ,SQUARE>
<V-$REFRESH T> ;"so INIT-STATUS-LINE is called"
<RTRUE>)
(<TO-MAYOR?>
<RTRUE>)>
<REPEAT ()
<SET OBJ <PICK-NEXT ,RANK-TABLE>>
<COND (<EQUAL? .CNT 7>
<RETURN>) ;"passed test"
(<NOT <FSET? .OBJ ,RANKBIT>>
<SETG RANK-Q .OBJ>
<RETURN>)>
<SET CNT <+ .CNT 1>>>
<COND (<AND <NOT <FSET? .OBJ ,RANKBIT>>
<EQUAL? ,HERE ,STARTING-ROOM>>
<QUEUE I-RANK 2>
<COND (<FSET? ,MOUTH ,SEENBIT>
<FCLEAR ,MOUTH ,SEENBIT>
<TELL
"The Committee has determined thus: The Mayor needs to be lobbied would
that he lay down the law regarding all manner of language play in the Town
of Punster. Only someone intimately familiar with our problems could
hope to succeed in winning over the Mayor, who has himself been beleaguered
by such problems." CR CR>)>
<COND (<NOT ,RECORDS-SHOW>
<SETG RECORDS-SHOW T>
<TELL
"Our records show you have not satisfactorily played "
<GETP .OBJ ,P?PICK-IT> ". If we're mistaken you can prove it -- w">)
(T
<TELL "W">)>
<TELL
"hat is the rank from \"" <GETP .OBJ ,P?PICK-IT> "?\"" CR>
<RTRUE>)>
<RTRUE>)>)
(<AND <VERB? PLAY NO-VERB>
<NOUN-USED ,START-OBJ ,W?JACKS ,W?JACK>>
<PERFORM ,V?WALK-TO ,START-OBJ>
<RTRUE>)
(<AND <VERB? NO-VERB>
<OR <NOUN-USED ,START-OBJ ,W?BIZARRE>
<ADJ-USED ,START-OBJ ,W?SHOPPING>>>
<PERFORM ,V?WALK-TO ,START-OBJ>
<RTRUE>)
(<AND <VERB? BUY NO-VERB>
<NOUN-USED ,START-OBJ ,W?FARM>>
<PERFORM ,V?WALK-TO ,START-OBJ>
<RTRUE>)
(<AND <VERB? EAT NO-VERB>
<NOUN-USED ,START-OBJ ,W?WORD ,W?WORDS>>
<PERFORM ,V?WALK-TO ,START-OBJ>
<RTRUE>)
(<AND <VERB? PLAY NO-VERB>
<NOUN-USED ,START-OBJ ,W?PART>>
<PERFORM ,V?WALK-TO ,START-OBJ>
<RTRUE>)
(<AND <VERB? SHAKE NO-VERB>
<NOUN-USED ,START-OBJ ,W?TOWER>>
<PERFORM ,V?WALK-TO ,START-OBJ>
<RTRUE>)
(<AND <VERB? SHAKE NO-VERB>
<NOUN-USED ,START-OBJ ,W?MANOR ,W?SPEAKING>>
<PERFORM ,V?WALK-TO ,START-OBJ>
<RTRUE>)
(<AND <VERB? MEET NO-VERB>
<NOUN-USED ,START-OBJ ,W?MAYOR>>
;<TELL
"[Sheriff first will check knowledge of past scenes...]" CR CR>
<PERFORM ,V?WALK-TO ,START-OBJ>
<RTRUE>)
(<EQUAL? ,HERE ,STARTING-ROOM>
<SHERIFF-ASKS T>
<CRLF>
<RTRUE>)
(T
<CANT-SEE <> "such thing">)>>
<OBJECT RANKS
(LOC STARTING-ROOM)
(DESC "ranking")
(SYNONYM SUPERSAVER SODBUSTER GUEST JACKSTER KING COMEDY CUSTOMER KONG
SAVER CONG)
(ADJECTIVE SUPER HONORED SATISFIED KINKERING)
(FLAGS NDESCBIT)
(ACTION RANKS-F)>
<GLOBAL RANK-Q <>> ;"scene of question of rank"
<ROUTINE I-RANK ()
<SETG RANK-Q <>>
<RFALSE>>
;"used with pick-next, score and rank-questions, element no. 1 is 2"
<GLOBAL RANK-TABLE
<LTABLE
2
JOAT
AISLE
HAZING
DUELING
COMEDY
FARM
RESTAURANT>>
<ROUTINE RANKS-F ()
<COND (<AND ,RANK-Q
<VERB? NO-VERB SUPER-BRIEF>> ;"for Super saver"
<COND (<AND <EQUAL? ,RANK-Q ,JOAT>
<NOUN-USED ,RANKS ,W?JACKSTER>>
<YES-RIGHT>)
(<AND <EQUAL? ,RANK-Q ,COMEDY>
<NOUN-USED ,RANKS ,W?KING ,W?COMEDY>>
<YES-RIGHT>)
(<AND <EQUAL? ,RANK-Q ,FARM>
<NOUN-USED ,RANKS ,W?SODBUSTER>>
<YES-RIGHT>)
(<AND <EQUAL? ,RANK-Q ,DUELING>
<OR <NOUN-USED ,RANKS ,W?GUEST>
<ADJ-USED ,RANKS ,W?HONORED>>>
<YES-RIGHT>)
(<AND <EQUAL? ,RANK-Q ,HAZING>
<OR <NOUN-USED ,RANKS ,W?CONG ,W?KONG>
<ADJ-USED ,RANKS ,W?KINKERING>>>
<YES-RIGHT>)
(<AND <EQUAL? ,RANK-Q ,AISLE>
<OR <NOUN-USED ,RANKS ,W?SUPERSAVER ,W?SAVER>
<ADJ-USED ,RANKS ,W?SUPER>>>
<YES-RIGHT>)
(<AND <EQUAL? ,RANK-Q ,RESTAURANT>
<OR <NOUN-USED ,RANKS ,W?CUSTOMER>
<ADJ-USED ,RANKS ,W?SATISFIED>>>
<YES-RIGHT>)>)
(,RANK-Q
<TELL
"No, that's wrong. It is the determination of the Committee that it would
be fool-hardy to send you to lobby the Mayor without the invaluable experience
of \"" <GETP ,RANK-Q ,P?PICK-IT> ".\"" CR>)
(<VERB? NO-VERB>
<TELL "You were asked no question." CR>)
(T
<SHERIFF-ASKS T>
<CRLF>)>>
<ROUTINE YES-RIGHT ()
<FSET ,RANK-Q ,RANKBIT>
<COND (<TO-MAYOR?>
<RTRUE>)>
<TELL "Yes, and..." CR CR>
<PUT ,P-NAMW 0 ,W?MAYOR>
<PERFORM ,V?MEET ,START-OBJ>
<RTRUE>>
<ROUTINE TO-MAYOR? ()
<COND (<AND <FSET? ,JOAT ,RANKBIT>
<FSET? ,RESTAURANT ,RANKBIT>
<FSET? ,DUELING ,RANKBIT>
<FSET? ,HAZING ,RANKBIT>
<FSET? ,COMEDY ,RANKBIT>
<FSET? ,AISLE ,RANKBIT>
<FSET? ,FARM ,RANKBIT>>
<TELL
"Okay, you have proved to the Committee wide knowledge of the nature of
our problems in Punster. You have now within your grasp the decree that
would legislate against, ban from the town, outlaw forever, all the
wordplayful shenanigans that have so tortured us. May our Mayor, the
honorable Jimmy \"Fat Baby\" Kazooli, act in the best interest of his
citizenry. You are sent..." CR CR>
<SETG HINT-TBL ,EIGHT-HINTS>
<SETG SCENE ,EIGHT>
<MOVE ,DECREE ,PROTAGONIST>
<GOTO ,SQUARE>
<V-$REFRESH T> ;"so init-status is called"
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE GO-TO-SCENE (SCENE-OBJ)
<SETG SCENE .SCENE-OBJ>
<FCLEAR <GETP .SCENE-OBJ ,P?SCENE-ROOM> ,TOUCHBIT>
<GOTO <GETP .SCENE-OBJ ,P?SCENE-ROOM>>
<V-$REFRESH T>> ;"so INIT-STATUS-LINE will split right, etc."
<ROUTINE RE-BEGIN ()
<COND (<EQUAL? ,HERE ,STARTING-ROOM>
<TELL "You're already here." CR>
<RTRUE>)
(<EQUAL? ,SCENE ,COMEDY>
<COND (<RUNNING? ,I-MATCH>
<PERFORM ,V?OFF ,MATCH>
<RTRUE>)
(<OR <RUNNING? ,I-BOB>
<RUNNING? ,I-KNOCK>
<AND <RUNNING? ,I-WIFE>
<NOT <ZERO? ,WIFE-N>>>>
<TELL
"You can't bow out now; this moment is too crucial to the artistic
integrity of the scene." CR>
<RTRUE>)>)
(<EQUAL? ,SCENE ,AISLE>
<COND (<RUNNING? ,I-BRAT>
<DEQUEUE I-BRAT>
<SETG RESUME-BRAT T>
;<RTRUE>)>
<COND (<RUNNING? ,I-ANTS>
<DEQUEUE I-ANTS>
<SETG RESUME-ANTS T>
;<RTRUE>)>
<COND (<AND <HELD? ,MUSSELS>
<NOT <FSET? ,MUSSELS ,OLDBIT>>>
<REMOVE ,MUSSELS>)>)
(<EQUAL? ,SCENE ,JOAT>
<COND (<RUNNING? ,I-FROST>
<TELL
"Such thoughts of escape from the cold evaporate into icy air." CR>
<RTRUE>)
(<EQUAL? <GETP ,PROTAGONIST ,P?ACTION>
,PROTAG-JACKHAMMER-F>
<RFALSE>)>
<DO-JACK>)
(<AND <EQUAL? ,SCENE ,RESTAURANT>
<OR <RUNNING? ,I-PAN>
<RUNNING? ,I-DEVICES>
<RUNNING? ,I-PET-PEEVE>>>
<TELL
"You can't leave at this crucial time!" CR>
<RTRUE>)
(<EQUAL? ,SCENE ,HAZING>
<COND (<RUNNING? ,I-CLIENT>
<TELL
"The stress involved from the situation prevents you from transporting." CR>
<RTRUE>)
(<OR <RUNNING? ,I-DEAN>
<QUEUED? ,I-DEAN>>
<SETG RESUME-DEAN T>)>
<DE-LOUSE>)
(<AND <EQUAL? ,SCENE ,DUELING>
<RUNNING? ,I-CLOCK>>
<SETG CLOCK-N 0>
<DEQUEUE I-CLOCK>)>
<ROB ,PROTAGONIST ,HERE>
<PUTP ,SCENE ,P?SCENE-ROOM ,HERE>
<SETG SCENE <>>
<MOVE ,PROTAGONIST ,HERE> ;"so get off of vehicle first"
<SETG HERE ,STARTING-ROOM>
<V-$REFRESH> ;"and clearing all including 2nd status line"
<TELL
"You are surrounded by a swirling, blinding cloud. You feel your limbs going
relaxed and your eyelids are buffeted with sand from the cloud." CR CR>
<SETG OLD-HERE <>>
<GOTO ,STARTING-ROOM>
<V-$REFRESH T> ;"bug was 2nd line of staus line didn't clear in"
<CRLF> ;"beginning room after hint. cause: scrolled text"
<SHERIFF-ASKS> ;"didn't push it up under the first line of stat line"
<CRLF> ;"added CRLF, hope enough text to push up now"
<RTRUE>>
<ROUTINE FINISHED? (SECTION)
<COND (<EQUAL? ,SCENE .SECTION>
<TELL ,ARRIVED>
<RTRUE>)
(<NOT <EQUAL? ,HERE ,STARTING-ROOM>>
<TELL ,MUST-GO-BEGIN>
<RTRUE>)
(<FSET? .SECTION ,WONBIT>
<TELL
"You have done all you possibly could have done there. We are grateful for
your skill in that place, and you needn't go back." CR>
<RTRUE>)
(T ;"go to new section"
<RFALSE>)>>
<ROUTINE UPDATE-SCORE ("AUX" POINTS)
<SET POINTS <+ <GETP ,SCENE ,P?SCENE-SCORE> 1>>
<PUTP ,SCENE ,P?SCENE-SCORE .POINTS>
<SETG UPDATE-SCORE? T>
;<V-$REFRESH T> ;"should do this before printing prompt"
<COND (<AND <EQUAL? <GETP ,SCENE ,P?SCENE-SCORE>
<GETP ,SCENE ,P?MAX-SCORE>>
<NOT <EQUAL? ,SCENE ,EIGHT>>>
<FSET ,SCENE ,WONBIT>
<SETG P-CONT <>>
<QUEUE I-END-SCENE 1>)>
<RTRUE>>
<ROUTINE I-END-SCENE ()
<ROB ,PROTAGONIST ,HERE>
<MOVE ,PROTAGONIST ,HERE> ;"so veh don't go with him in GOTO"
<SETG OLD-HERE <>>
<PUTP ,SCENE ,P?SCENE-ROOM ,HERE>
<SETG LOUSE-ON-HEAD <>>
<COND (<EQUAL? ,SCENE ,FARM>
<FSET ,FARM ,RANKBIT>
<TELL CR "Congratulations for the completion of these
19 chores. You have transformed their abandoned husk of a farm into a horn of
plenty. The McCleary's, under your tutelage, have learned much about
how to manage their farm, coping with the tough realities of modern
farming. After this long period of want, the townspeople of Punster will
feast heartily upon the fruits of your labor. You shall be honored by
them with the rank of ">
<HLIGHT ,H-BOLD>
<TELL "Sodbuster">
<HLIGHT ,H-NORMAL>
<TELL ".">
<WARN-PLAYER>)
(<EQUAL? ,SCENE ,COMEDY>
<FSET ,COMEDY ,RANKBIT>
<TELL CR "\"Cut! Cut!\" booms an off-stage, directoral
voice. \"It's a wrap.\" Drenched in the sweat of your comedic toil, you
bask in the adoration of the cheerful Punster audience. Having milked
this bit for the maximum number of cheap gags, namely 10, you have
achieved the status of ">
<HLIGHT ,H-BOLD>
<TELL "King of Comedy">
<HLIGHT ,H-NORMAL>
<TELL ".">
<WARN-PLAYER>)
(<EQUAL? ,SCENE ,AISLE>
<COND (<RUNNING? ,I-BRAT>
<DEQUEUE I-BRAT>
<SETG RESUME-BRAT T>)>
<COND (<RUNNING? ,I-ANTS>
<DEQUEUE I-ANTS>
<SETG RESUME-ANTS T>)>
<COND (<AND <HELD? ,MUSSELS>
<NOT <FSET? ,MUSSELS ,OLDBIT>>>
<REMOVE ,MUSSELS>)>
<TELL CR "Bravo! Cheer! Kudos! With your feats of
homonymic skill, you have shown the way to restoring customer confidence
to the puzzled shoppers of Punster. Having broken the tape at the end
of your Bizarre shopping spree, you thusly achieve the esteemed rank of ">
<HLIGHT ,H-BOLD>
<TELL "Super Saver">
<HLIGHT ,H-NORMAL>
<TELL ".">
<MORE-SCORE ,AISLE "in the Shopping Bizarre">)
(<EQUAL? ,SCENE ,DUELING>
<COND (<RUNNING? ,I-CLOCK>
<SETG CLOCK-N 0>
<DEQUEUE I-CLOCK>)>
<TELL CR
"Congratulations. Having rid the manor of its unwanted, if spirited,
visitors you thereby, in the eyes of the Citizens' Action Committee,
earn the title of ">
<HLIGHT ,H-BOLD>
<TELL "Honored Guest">
<HLIGHT ,H-NORMAL>
<TELL ".">
<MORE-SCORE ,DUELING "visiting the Manor of Speaking">)
(<EQUAL? ,SCENE ,JOAT>
<DO-JACK>
<TELL CR
"Congratulations. You have been nimble and you have been quick. Punster will
from here on out enjoy better relations with its northern neighbor, Jackville.
The Citizen's Action Committee does hereby confer upon you the title of ">
<HLIGHT ,H-BOLD>
<TELL "Jackster">
<HLIGHT ,H-NORMAL>
<TELL ".">
<MORE-SCORE ,JOAT "playing jacks">)
(<EQUAL? ,SCENE ,HAZING>
<COND (<OR <RUNNING? ,I-DEAN>
<QUEUED? ,I-DEAN>>
<SETG RESUME-DEAN T>)>
<DE-LOUSE>
<TELL CR
"Congratulations are in order. Having braved mutable strangeness and
having made the heroic gesture of a rescue, you make possible the reuniting
in joy of a grateful Punster family. This feat earns you the rank of ">
<HLIGHT ,H-BOLD>
<TELL "Kinkering Cong">
<HLIGHT ,H-NORMAL>
<TELL ".">
<MORE-SCORE ,HAZING "shaking a tower">)
(<EQUAL? ,SCENE ,RESTAURANT>
<TELL CR
"Congratulations are in order. You're ranked as..." CR>
<HLIGHT ,H-BOLD>
<TELL "Satisfied Customer">
<HLIGHT ,H-NORMAL>
<TELL ".">
<MORE-SCORE ,RESTAURANT "eating your words">)>
<SETG SCENE <>>
<TELL CR CR>
<GOTO ,STARTING-ROOM>
<SHERIFF-ASKS>
<CRLF>
<V-$REFRESH T>
<RTRUE>>
<ROUTINE DO-JACK ()
<COND (,JACK-IS
<COND (<EQUAL? ,JACK-IS ,FAUCET>
;<REMOVE ,HOT-TUB>
<REMOVE ,TUB-WATER>
<REMOVE ,MERMAID>)>
<CHANGE-JACK>
<REMOVE ,HOT-TUB>)>
<RTRUE>>
<ROUTINE DE-LOUSE ("AUX" X)
<SET X <LOC ,HOUSE>>
<COND (<AND .X
<NOT <IN? <LOC ,HOUSE> ,ROOMS>>>
<SETG LOUSE-ON-HEAD <>>
<FSET ,HOUSE ,OLDBIT>
<MOVE ,HOUSE <META-LOC ,HOUSE>> ;"if in something"
<FCLEAR ,HOUSE ,TAKEBIT>
<FCLEAR ,HOUSE ,NDESCBIT>)>
<RTRUE>>
<GLOBAL RANK-WARNING <>>
<ROUTINE WARN-PLAYER ()
<COND (<NOT ,RANK-WARNING>
<SETG RANK-WARNING T>
<TELL CR CR
"It would be prudent to commit to memory this and all ranks you have
achieved.">)>
<RTRUE>>
<ROUTINE MORE-SCORE (SC STR "AUX" NUM)
<WARN-PLAYER>
<COND (<AND <SET NUM <- <GETP .SC ,P?MAX-SCORE>
<GETP .SC ,P?SCENE-SCORE>>>
<NOT <ZERO? .NUM>>>
<TELL CR CR "(Truth is, there ">
<COND (<EQUAL? .NUM 1>
<TELL "was one more thing">)
(T
<TELL "were " N .NUM " more things">)>
<TELL
" that could've been accomplished " .STR ".)">)>
<FSET .SC ,RANKBIT>
<RTRUE>>
<OBJECT PROTAGONIST
(LOC STARTING-ROOM)
(SYNONYM PROTAG)
(DESC "it")
(FLAGS NDESCBIT INVISIBLE ACTORBIT)
(ACTION PROTAGONIST-F)>
;"amfv's PLAYER has no actorbit, but changed THIS-IT? prevents finding protag"
<ROUTINE PROTAGONIST-F ()
<RFALSE>>
<ROUTINE PROTAG-JACKHAMMER-F ()
<INC JACKHAMMER-C> ;"2 3 4 "
<COND (<OR <AND <VERB? OFF>
<PRSO? ,ELECTRICAL-SWITCH>>
<EQUAL? ,JACKHAMMER-C 5>> ;"after 3rd str printed"
<SETG JACKHAMMER-C 0>
<PUTP ,PROTAGONIST ,P?ACTION ,PROTAGONIST-F>
<CHANGE-JACK>
<TELL
"One hand slips off the handle and hits the switch. The jackhammer
coughs, wheezes and shudders to a halt. All the features of the "
D ,JOAT " return." CR>)
(,WIDE
<TELL <PICK-NEXT ,S-JACKHAMMER>>)
(T
<TELL "You can't even hear yourself think." CR>)>>
<OBJECT ME
(LOC GLOBAL-OBJECTS)
(SYNONYM I ME MYSELF SELF YOU YOURSELF)
(DESC "yourself")
(FLAGS ;ACTORBIT TOUCHBIT NARTICLEBIT)
(ACTION ME-F)>
<ROUTINE ME-F ()
<COND (<EQUAL? ,ME ,WINNER> ;"YOU CANT VERB SOMETHING"
<SETG CANT-FLAG <>>
<TELL "You never know till you've tried." CR>)
(<AND <VERB? TELL>
<NOT ,CANT-FLAG>>
<TELL
"Talking to yourself is a sign of impending mental collapse." CR>
<STOP>)
(<VERB? ALARM>
<TELL "You are already awake." CR>)
(<VERB? EXAMINE>
<COND (<AND <NOT <FSET? ,MUSSELS ,OLDBIT>>
<IN? ,MUSSELS ,PROTAGONIST>
<EQUAL? ,SCENE ,AISLE>>
<TELL
"You're considerably more sinewy since your recent muscle graft">)
(T
<TELL "You're bright-eyed and bushy-tailed">)>
<TELL ,PERIOD>)
(<AND <VERB? GIVE>
<PRSI? ,ME>
<NOT <PRSO? ,LOBOTOMY>>>
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)
(<AND <VERB? SHOW>
<PRSI? ,ME>>
<PERFORM ,V?EXAMINE ,PRSO>
<RTRUE>)
(<VERB? MOVE>
<V-WALK-AROUND>)
(<VERB? SEARCH>
<V-INVENTORY>
<RTRUE>)
;(<VERB? EXAMINE>
<COND (,GONE-APE
<TELL "You've gone ape!" CR>)
(T
<TELL "You're wearing">
<COND (<FSET? ,WHITE-SUIT ,WORNBIT>
<TELL AR ,WHITE-SUIT>)
(T
<TELL AR ,GARMENT>)>)>)
(<VERB? KILL MUNG>
<JIGS-UP "Done.">)
(<VERB? FIND WHERE>
<TELL "You're in" TR ,HERE>)>>
<OBJECT GLOBAL-ROOM
(LOC GLOBAL-OBJECTS)
(DESC "room")
(SYNONYM ROOM PLACE LOCATI AREA THERE)
(ACTION GLOBAL-ROOM-F)>
<ROUTINE GLOBAL-ROOM-F ()
<COND (<VERB? LOOK LOOK-INSIDE EXAMINE>
<V-LOOK>)
(<VERB? ENTER WALK-TO>
<V-WALK-AROUND>)
(<VERB? LEAVE EXIT DISEMBARK>
<DO-WALK ,P?OUT>)
(<VERB? SEARCH>
<TELL ,NOTHING-NEW>)
(<AND <VERB? PUT>
<PRSI? ,GLOBAL-ROOM>>
<COND (<EQUAL? ,P-PRSA-WORD ,W?THROW>
<PERFORM ,V?THROW ,PRSO>
<RTRUE>)
(T
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)>)>>
<OBJECT SIGN
(LOC LOCAL-GLOBALS)
(DESC "sign")
(SYNONYM SIGN)
(ADJECTIVE LARGE)
(FLAGS READBIT TRYTAKEBIT)
(ACTION SIGN-F)>
<ROUTINE SIGN-F ("AUX" NUM)
<COND ;(<AND <EQUAL? ,HERE ,CANAL>
<NOT <EQUAL? .NUM 15>>>
<CANT-SEE ,SIGN>)
(<VERB? READ EXAMINE>
<COND (<EQUAL? ,HERE ,BRITISH-ROOM>
<TELL
"Large block letters proclaim:|
|"
D ,PUTTING ,PERIOD>)
(<EQUAL? ,HERE ,NEAR-POND>
<COND (<VERB? EXAMINE>
<TELL
"The sign is heavily saddled with icicles. ">)>
<TELL
"It reads:|
|
NO DANGER! THICK ICE|">)>)
(<AND <EQUAL? ,HERE ,NEAR-POND>
<VERB? TAKE>>
<TELL "It's frozen solidly." CR>)>>
<OBJECT STAIRS
(LOC LOCAL-GLOBALS)
(DESC "stair")
(SYNONYM STAIR STAIRS STAIRWAY STEP STAIRCASE)
(ADJECTIVE STURDY RICKETY MARBLE)
(ACTION STAIRS-F)>
<ROUTINE STAIRS-F ()
<COND (<AND <FSET? ,ATTIC ,PHRASEBIT>
<EQUAL? ,HERE ,ID-ROOM>>
<TELL "The stairs have disappeared." CR>)
(<AND <NOT <FSET? ,ATTIC ,PHRASEBIT>>
<EQUAL? ,HERE ,KREMLIN>>
<CANT-SEE ,STAIRS>)
(<VERB? CLIMB-ON>
<WASTES>)
(<VERB? CLIMB CLIMB-UP>
<DO-WALK ,P?UP>)
(<VERB? CLIMB-DOWN>
<DO-WALK ,P?DOWN>)
(<AND <VERB? THROW>
<PRSI? ,STAIRS>>
<WASTES>)>>
;"status line stuff"
<CONSTANT S-TEXT 0> ;"<SCREEN 0> puts cursor in text part of screen"
<CONSTANT S-WINDOW 1> ;"<SCREEN 1> puts cursor in window part of screen"
<CONSTANT H-NORMAL 0> ;"<HLIGHT 0> returns printing to normal (default)"
<CONSTANT H-INVERSE 1> ;"<HLIGHT 1> sets printing mode to inverse video"
<CONSTANT H-BOLD 2> ;"<HLIGHT 2> sets printing mode to bold, else normal"
<CONSTANT H-ITALIC 4> ;"<HLIGHT 4> italicizes, else underline, else normal"
<CONSTANT D-SCREEN-ON 1> ;"<DIROUT 1> turns on printing to the screen"
<CONSTANT D-SCREEN-OFF -1>;"<DIROUT -1> turns off printing to the screen"
<CONSTANT D-PRINTER-ON 2> ;"<DIROUT 2> turns on printing to the printer"
<CONSTANT D-PRINTER-OFF -2>;"<DIROUT -2> turns off printing to the printer"
<CONSTANT D-TABLE-ON 3> ;"<DIROUT 3 .TABLE> turns on printing to that table"
<CONSTANT D-TABLE-OFF -3> ;"<DIROUT -3> turns off printing to that table"
;<CONSTANT D-RECORD-ON 4> ;"<DIROUT 4> sends READs and INPUTs to record file"
;<CONSTANT D-RECORD-OFF -4>;"<DIROUT -4> stops sending READs and INPUTs to file"
;"gets called only at START of game unless otherwise"
<ROUTINE INIT-STATUS-LINE ("OPT" (DONT-CLEAR <>)) ;"clear screen"
<SETG OLD-HERE <>>
<SETG UPDATE-SCORE? T>
<BUFOUT <>>
<COND (<NOT .DONT-CLEAR>
<CLEAR -1>)>
<COND (<EQUAL? ,HERE ,STARTING-ROOM>
<SPLIT 1>)
(T
<SPLIT 2>)>
<SCREEN ,S-WINDOW>
;<BUFOUT <>> ;"moved to top of routine"
<HLIGHT ,H-INVERSE>
<CURSET 1 1>
<PRINT-SPACES ,WIDTH>
<COND (<NOT <EQUAL? ,HERE ,STARTING-ROOM>>
<CURSET 2 1>
<PRINT-SPACES ,WIDTH>)>
<CURSET 1 2>
<COND (,WIDE
<COND (,DATELINE
<TELL "Dateline:">)
(T
<TELL "Location:">)>)>
<COND (<NOT <EQUAL? ,HERE ,STARTING-ROOM>>
<CURSET 2 2>
<COND (<NOT ,WIDE>
<TELL "Go">)
(<EQUAL? ,SCENE ,AISLE>
<TELL "Other aisles">)
(T
<TELL "You can go">)>
<PRINTC %<ASCII !\:>>)>
<HLIGHT ,H-NORMAL>
<SCREEN ,S-TEXT>
<BUFOUT T>
<RFALSE>>
<ROUTINE PRINT-SPACES (CNT)
<REPEAT ()
<COND (<L? <SET CNT <- .CNT 1>> 0>
<RETURN>)
(T
<PRINTC 32>)>>>
<GLOBAL SLINE <ITABLE NONE 82>>
<GLOBAL OLD-HERE <>> ;"is set to present HERE room."
<GLOBAL UPDATE-SCORE? <>>
<ROUTINE ITALICIZE (STR "OPTIONAL" (NO-CAPS? <>)
"AUX" LEN (PTR 2) CHAR ;(SCRIPTING-ON <>))
;<BUFOUT <>>
;<BUFOUT T>
;<COND (<BTST <GET 0 8> 1>
<SET SCRIPTING-ON T>)>
;<COND (.SCRIPTING-ON
<DIROUT ,D-PRINTER-OFF>)>
<DIROUT ,D-SCREEN-OFF>
<DIROUT ,D-TABLE-ON ,SLINE>
<TELL .STR>
<DIROUT ,D-TABLE-OFF>
;<COND (.SCRIPTING-ON
<DIROUT ,D-PRINTER-ON>)>
;<COND (<NOT <VERB? SCRIPT UNSCRIPT>>
<DIROUT ,D-SCREEN-ON>)>
<DIROUT ,D-SCREEN-ON>
<SET LEN <+ <GET ,SLINE 0> 1>>
<COND (<EQUAL? .LEN 1>
<RTRUE>)
(<OR <ZERO? <GETB 0 18>> ; "ZIL?"
<BAND <GETB 0 1> 8>> ; "ITALICS BIT SET?"
<HLIGHT ,H-ITALIC>
<REPEAT ()
<SET CHAR <GETB ,SLINE .PTR>>
<COND (<EQUAL? .CHAR 32> ; "SPACE?"
<HLIGHT ,H-NORMAL>
<PRINTC 32>
<HLIGHT ,H-ITALIC>)
(T
<PRINTC .CHAR>)>
<COND (<EQUAL? .PTR .LEN>
<RETURN>)
(T
<SET PTR <+ .PTR 1>>)>>
<HLIGHT ,H-NORMAL>)
(.NO-CAPS?
<TELL .STR>)
(T ; "NO ITALICS, CAPITALIZE"
<REPEAT ()
<SET CHAR <GETB ,SLINE .PTR>>
<COND (<AND <G? .CHAR 96>
<L? .CHAR 123>>
<SET CHAR <- .CHAR 32>>)>
<PRINTC .CHAR>
<COND (<EQUAL? .PTR .LEN>
<RETURN>)
(T
<SET PTR <+ .PTR 1>>)>>)>>
<ROUTINE SEEING? (OBJ)
<COND (<AND <PRSO? .OBJ>
<EQUAL? ,PRSA
,V?EXAMINE ,V?LOOK ,V?LOOK-INSIDE ,V?READ ,V?FIND
,V?SEARCH ,V?SHOW ,V?LOOK-UNDER ,V?LOOK-BEHIND
,V?LOOK-DOWN ,V?LOOK-UP ,V?READ-TO ,V?COUNT
,V?POINT>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE TOUCHING? (THING)
<COND (<AND <PRSO? .THING>
<OR <EQUAL? ,PRSA ,V?TAKE ,V?TOUCH ,V?SHAKE>
<EQUAL? ,PRSA ,V?CLEAN ,V?KISS ;,V?SWIM>
<EQUAL? ,PRSA ,V?PUSH ,V?CLOSE ,V?LOOK-UNDER>
<EQUAL? ,PRSA ,V?MOVE ,V?OPEN ,V?KNOCK>
<EQUAL? ,PRSA ,V?SET ,V?SHAKE ,V?RAISE>
<EQUAL? ,PRSA ,V?UNLOCK ,V?LOCK ,V?CLIMB-UP>
<EQUAL? ,PRSA ,V?CLIMB ,V?CLIMB-DOWN ,V?CLIMB-ON>
<EQUAL? ,PRSA ,V?BOARD ,V?ENTER ,V?ON>
<EQUAL? ,PRSA ,V?OFF ,V?TASTE ,V?THROW>
<EQUAL? ,PRSA ,V?LOOK-INSIDE ,V?STAND-ON ,V?TIE>
<EQUAL? ,PRSA ,V?MUNG ,V?KICK ,V?KILL>
<EQUAL? ,PRSA ,V?KNOCK ,V?CUT ,V?TIE-TOGETHER>
<EQUAL? ,PRSA ,V?BITE ,V?PUSH ,V?LOOK-BEHIND>>>
<RTRUE>)
(<AND <PRSI? .THING>
<VERB? GIVE PUT PUT-ON>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE DONT-HANDLE (OBJ)
<COND (<OR <AND <EQUAL? .OBJ ,PRSO>
<PRSO-MOBY-VERB?>>
<AND <EQUAL? .OBJ ,PRSI>
<PRSI-MOBY-VERB?>>>
<RTRUE>)
(T
<RFALSE>)>>
;"this routine is fucked. When prsi is passed, PRSO is often printed. Fucked"
<ROUTINE CANT-SEE ("OPTIONAL" (OBJ <>) (STRING <>))
<SETG P-WON <>>
<TELL ,YOU-CANT "see">
;<COND (<EQUAL? .OBJ ,ODOR>
<TELL "smell">)
(T
<TELL "see">)>
<COND (<OR <NOT .OBJ>
<AND .OBJ
<NOT <NAME? .OBJ>>>>
<TELL " any">)>
<COND (<NOT .OBJ>
<TELL " " .STRING>)
(<EQUAL? .OBJ ,PRSI>
<PRSI-PRINT>)
(T
<PRSO-PRINT>)>
<TELL " here." CR>
<STOP>>
<ROUTINE NO-SUCH (OBJ ADJ1 NOUN1 ADJ2 NOUN2)
<COND (<OR <AND <NOUN-USED .OBJ .NOUN1>
<ADJ-USED .OBJ .ADJ1>>
<AND <NOUN-USED .OBJ .NOUN2>
<ADJ-USED .OBJ .ADJ2>>
<AND <EQUAL? .OBJ ,ROCKS>
<NOUN-USED .OBJ ,W?ROCK>
<ADJ-USED .OBJ ,W?RED>>>
<TELL
"There's no capacity for" T .OBJ " to transform into any">
<COND (<EQUAL? .OBJ ,PRSI>
<PRSI-PRINT>)
(T
<PRSO-PRINT>)>
<TELL ,PERIOD>)
(T
<RFALSE>)>>
<ROUTINE PRSO-PRINT ("AUX" PTR)
<COND (<OR ,P-MERGED
<EQUAL? <GET <SET PTR <GET ,P-ITBL ,P-NC1>> 0> ,W?IT>>
<TELL " " D ,PRSO>)
(T
<BUFFER-PRINT .PTR <GET ,P-ITBL ,P-NC1L> <>>)>>
<ROUTINE PRSI-PRINT ("AUX" PTR)
<COND (<OR ,P-MERGED
<EQUAL? <GET <SET PTR <GET ,P-ITBL ,P-NC2>> 0> ,W?IT>>
<TELL " " D ,PRSI>)
(T
<BUFFER-PRINT .PTR <GET ,P-ITBL ,P-NC2L> <>>)>>
<ROUTINE CANT-VERB-A-PRSO (STRING)
<TELL ,YOU-CANT .STRING A ,PRSO "!" CR>>
;<ROUTINE NOW-TIED (OBJ)
<TELL "Okay," T ,PRSO " is now tied to" TR .OBJ>>
<ROUTINE TELL-HIT-HEAD ()
<TELL
"You bang your bean against" T ,PRSO " as you attempt this." CR>>
;"P-OFW is the FIRST! noun in a NOUN-OF-NOUN phrase"
;"PERFORM sets now-prsi global as it calls prsi first, then prso -- thus
when we get to the verb defaults, now-prsi is false."
<ROUTINE NOUN-USED (OBJ WORD1 "OPTIONAL" (WORD2 <>) (WORD3 <>)
"AUX" O I OOF IOF)
<SET O <GET ,P-NAMW 0>>
<SET I <GET ,P-NAMW 1>>
<SET OOF <GET ,P-OFW 0>>
<SET IOF <GET ,P-OFW 1>>
<COND (<OR <AND <EQUAL? .OBJ ,PRSO>
<NOT ,NOW-PRSI>
<EQUAL? .WORD1 .O .OOF>>
<AND <EQUAL? .OBJ ,PRSI>
,NOW-PRSI
<EQUAL? .WORD1 .I .IOF>>>
<RTRUE>)
(<ZERO? .WORD2>
<RFALSE>)
(<OR <AND <EQUAL? .OBJ ,PRSO>
<NOT ,NOW-PRSI>
<EQUAL? .WORD2 .O .OOF>>
<AND <EQUAL? .OBJ ,PRSI>
,NOW-PRSI
<EQUAL? .WORD2 .I .IOF>>>
<RTRUE>)
(<ZERO? .WORD3>
<RFALSE>)
(<OR <AND <EQUAL? .OBJ ,PRSO>
<NOT ,NOW-PRSI>
<EQUAL? .WORD3 .O .OOF>>
<AND <EQUAL? .OBJ ,PRSI>
,NOW-PRSI
<EQUAL? .WORD3 .I .IOF>>>
<RTRUE>)
(T
<RFALSE>)>>
<GLOBAL TRANS-PRINTED <>> ;"set to false in start of parser"
;"rfalses if no transformation, and nothing printed"
<ROUTINE TRANS-PRINT (OBJECT "OPTIONAL" (OLD-WORD <>) (NO-CR <>)
"AUX" (OBJECT-IS-OLD <>))
<COND (<NOT <VISIBLE? .OBJECT>>
<RFALSE>) ;"stops mobyverbs from printing trans & no obj here"
(<FSET? .OBJECT ,OLDBIT>
<SET OBJECT-IS-OLD T>)>
<COND (.OLD-WORD
<FSET .OBJECT ,OLDBIT>)
(T
<FCLEAR .OBJECT ,OLDBIT>)>
<COND (<OR <AND .OBJECT-IS-OLD ;"object is now steak, and the word"
<NOT .OLD-WORD>> ;"used was 'stake'"
<AND <NOT .OBJECT-IS-OLD>
.OLD-WORD>>
<COND (.OBJECT-IS-OLD
<TELL <GETP .OBJECT ,P?OLD-TO-NEW>>)
(<GETP .OBJECT ,P?NEW-TO-OLD>
<TELL <GETP .OBJECT ,P?NEW-TO-OLD>>)
;(T "semied during hazing section"
<TELL <GETP .OBJECT ,P?OLD-TO-NEW>>)>
<SETG TRANS-PRINTED T>
<COND (<NOT <FSET? .OBJECT ,TRANSFORMED>>
<UPDATE-SCORE>)>
<FSET .OBJECT ,TRANSFORMED>
<COND (.NO-CR
<RTRUE>)>
<CRLF>
<COND (<AND <NOT <VERB? NO-VERB SET HAIR>>
<NOT <PRSO? ,CLIENT>>> ;"v-hair just rtrues"
<CRLF>)>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE ADJ-USED (OBJ WORD1 "OPTIONAL" (WORD2 <>) (WORD3 <>)
"AUX" O I)
<SET O <GET ,P-ADJW 0>>
<SET I <GET ,P-ADJW 1>>
<COND (<OR <AND <EQUAL? .OBJ ,PRSO>
<EQUAL? .O .WORD1>>
<AND ,PRSI
<EQUAL? .OBJ ,PRSI>
<EQUAL? .I .WORD1>>>
<RTRUE>)
(<ZERO? .WORD2>
<RFALSE>)
(<OR <AND <EQUAL? .OBJ ,PRSO>
<EQUAL? .O .WORD2>>
<AND ,PRSI
<EQUAL? .OBJ ,PRSI>
<EQUAL? .I .WORD2>>>
<RTRUE>)
(<ZERO? .WORD3>
<RFALSE>)
(<OR <AND <EQUAL? .OBJ ,PRSO>
<EQUAL? .O .WORD3>>
<AND ,PRSI
<EQUAL? .OBJ ,PRSI>
<EQUAL? .I .WORD3>>>
<RTRUE>)
(T
<RFALSE>)>>
;<ROUTINE ADJ-USED (TEST-ADJ)
<COND (<EQUAL? .TEST-ADJ <GET ,P-ADJW 0> <GET ,P-ADJW 1>>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE OFF-VEHICLE? (OBJ) ;"tells to print GET OFF versus GET OUT OF"
<COND (<EQUAL? .OBJ ,ICICLE>
<RTRUE>)
(T
<RFALSE>)>>
<ROUTINE OPEN-CLOSED (OBJ)
<COND (<OR <AND <NOT <EQUAL? .OBJ ,SHINING-DOOR>>
<FSET? .OBJ ,OPENBIT>>
<AND <EQUAL? .OBJ ,SHINING-DOOR>
<FSET? ,SHINING-DOOR ,RMUNGBIT>>>
<TELL "open">)
(T
<TELL "closed">)>>
<ROUTINE WEE ()
<TELL "Wasn't that fun?" CR>>
;<ROUTINE IN-YOUR-PACKAGE (STRING)
<TELL "This is the " .STRING>
<IN-PACKAGE>>
;<ROUTINE IN-PACKAGE ()
<TELL " that came in your package.">>
<GLOBAL CANT-REACH-FLAG <>>
<ROUTINE CANT-REACH (OBJ)
<COND (<NOT ,CANT-REACH-FLAG>
<SETG CANT-REACH-FLAG T>
<TELL ,YOU-CANT "reach" T .OBJ>
<COND (<NOT <IN? ,PROTAGONIST ,HERE>>
<TELL " from" T <LOC ,PROTAGONIST>>)>
<TELL ,PERIOD>)>
<RTRUE>>
;<ROUTINE EAGERLY-ACCEPTS ()
<MOVE ,PRSO ,PRSI>
<TELL "Eagerly," T ,PRSI " accepts" T ,PRSO>>
;<ROUTINE NOT-ON-GROUND (VEHICLE)
<TELL "But" T .VEHICLE " isn't on the ground!" CR>>
;<ROUTINE PLAYER-CANT-SEE ()
<COND ;(<OR <FSET? ,EYES ,MUNGBIT>
<EQUAL? ,HAND-COVER ,EYES>>
<OPEN-YOUR-EYES!>)
;(<NOT ,LIT>
<TELL ,TOO-DARK CR>)
(T
<RFALSE>)>>
<ROUTINE DO-FIRST (STRING "OPTIONAL" (OBJ <>))
<TELL ,YOULL-HAVE-TO .STRING>
<COND (.OBJ
<TPRINT .OBJ>)>
<TELL " first." CR>>
<ROUTINE NOT-IN ()
<TELL "But" T-IS-ARE ,PRSO "not ">
<COND (<FSET? ,PRSI ,ACTORBIT>
<TELL "being held by">)
(<FSET? ,PRSI ,SURFACEBIT>
<TELL "on">)
(T
<TELL "in">)>
<TELL TR ,PRSI>>
;<ROUTINE NO-LID ()
<TELL "The " D ,PRSO " has no lid." CR>>
<ROUTINE PART-OF ()
<TELL
"You can't --" T ,PRSO>
<COND (<FSET? ,PRSO ,PLURALBIT>
<TELL " are">)
(T
<TELL " is">)>
<TELL " an integral part of" TR <LOC ,PRSO>>
<COND (<PRSO? ,CLOCK-KEY>
<TELL "But the key can still be used." CR>)>
<RTRUE>>
<ROUTINE BE-MORE-SPECIFIC ()
<TELL "[" ,YOULL-HAVE-TO "be more specific.]" CR>>
<ROUTINE CHANGE-OBJECT (OLD NEW)
<COND (<PRSO? .OLD>
<PERFORM ,PRSA .NEW ,PRSI>)
(T
<PERFORM ,PRSA ,PRSO .OLD>)>
<RTRUE>>
<ROUTINE SORE (STRING)
<TELL "You begin to get a sore " .STRING ,PERIOD>>
;<ROUTINE CANT-USE-THAT-WAY (STRING)
<TELL "[" ,YOU-CANT "use " .STRING " that way.]" CR>>
<ROUTINE RECOGNIZE ()
<SETG P-WON <>>
<TELL "[That sentence isn't one I recognize.]" CR>>
<ROUTINE PREGNANT ()
<TELL
"[So pregnant with possibilities are the names of things in this scenario
it is impossible to use them in a series, though using \"all\" is allowed,
as in TAKE ALL.]" CR>>
<ROUTINE PRONOUN ()
<COND (<PRSO? ,ME>
<TELL "You">)
(<FSET? ,PRSO ,PLURALBIT>
<TELL "They">)
(<FSET? ,PRSO ,FEMALEBIT>
<TELL "She">)
(<FSET? ,PRSO ,ACTORBIT>
<TELL "He">)
(T
<TELL "It">)>>
<ROUTINE DONT-F ()
<COND (<AND <VERB? CRY>
<PRSO? ,MILK>>
<RFALSE>)
(<AND <VERB? BUY-IN>
<PRSO? ,PIG>
<PRSI? ,CAT-BAG>>
<RFALSE>)
(<VERB? WAIT>
<TELL "Time doesn't pass..." CR>)
(<VERB? TAKE>
<TELL "Not taken." CR>)
(T
<TELL "Not done." CR>)>>
<ROUTINE REFERRING ("OPTIONAL" (HIM-HER <>))
<TELL "It's not clear wh">
<COND (.HIM-HER
<TELL "o">)
(T
<TELL "at">)>
<TELL " you're referring to." CR>>
<ROUTINE NO-ONE-HERE (STRING)
<TELL "There's no one here to " .STRING ,PERIOD>>
;<ROUTINE SEE-MANUAL (STRING)
<TELL
"[You need quotes to " .STRING " See the instruction manual section
entitled \"Communicating With Infocom's Interactive Fiction.\"]" CR>>
;<ROUTINE UNIMPORTANT-THING-F ()
<TELL "That's not important; leave it alone." CR>>
;<GLOBAL TOO-DARK "It's too dark to see a thing.">
<GLOBAL YNH "You're not holding">
<GLOBAL THERES-NOTHING "There's nothing ">
<GLOBAL YOU-SEE "You can see">
<GLOBAL IT-SEEMS-THAT "It seems that">
;<GLOBAL YOU-CANT-SEE-ANY "You can't see any ">
<GLOBAL YOU-CANT "You can't ">
<GLOBAL YOULL-HAVE-TO "You'll have to ">
<GLOBAL LOOK-AROUND "Look around you.|">
<GLOBAL CANT-FROM-HERE "You can't do that from here.|">
<GLOBAL CANT-GO "You can't go that way.|">
<GLOBAL HOLDING-IT "You're holding it!|">
;<GLOBAL NOUN-MISSING "[There seems to be a noun missing in that sentence.]|">
<GLOBAL PERIOD ".|">
;<GLOBAL NOTHING-HAPPENS "Nothing happens.|">
<GLOBAL FAILED "Failed.|">
<GLOBAL OK "Okay.|">
<GLOBAL HUH "Huh?|">
<GLOBAL ALREADY-IS "It already is!|">
<GLOBAL NOTHING-NEW "This reveals nothing new.|">
;<GLOBAL NO-VERB "[There was no verb in that sentence!]|">
<GLOBAL NICE-HOLE "There's already an ice hole, and a nice hole it is!|">
<GLOBAL FLY "\"Hey Sammy, what is this fly doing in my soup?\"|">
<GLOBAL ARRIVED "You've already arrived.|">
<GLOBAL WEARING-IT "You're wearing it!|">
<GLOBAL IF-HAMMER "If you only had a hammer...|">
<GLOBAL ALREADY-HAVE "You already have.|">
<GLOBAL WEARING-THIN
"This kind of thing is obviously wearing thin with the crowd.|">
<GLOBAL DONT-KNOW-WHERE "You don't know where it is from here.|">
<GLOBAL STANDS-STILL ", but stands still and silent as the mountain air.|">
<GLOBAL NO-SALE "That's not for sale.|">
<GLOBAL MUST-GO-BEGIN
"You must first go to the BEGINNING before playing another scenario.|">