1238 lines
36 KiB
Plaintext
1238 lines
36 KiB
Plaintext
|
"ELEVATOR for ANTHILL (C)1986 Infocom Inc. All rights reserved."
|
||
|
|
||
|
|
||
|
"--- Closet Stuff ---"
|
||
|
|
||
|
<ROOM CLOSET
|
||
|
(IN ROOMS)
|
||
|
(DESC "Closet")
|
||
|
(NORTH PER CLOSET-EXIT-F)
|
||
|
(OUT PER CLOSET-EXIT-F)
|
||
|
(FLAGS RLANDBIT)
|
||
|
(GLOBAL CLOSET-REF FOYER-CD CELLAR-CD UPSTAIRS-CD)
|
||
|
(CAPACITY 10) ;"don't light room when sun comes up"
|
||
|
(ACTION CLOSET-F)
|
||
|
(THINGS <PSEUDO (<> HOLE CLOSET-HOLE-PSEUDO)>)>
|
||
|
|
||
|
<ROUTINE CLOSET-HOLE-PSEUDO ()
|
||
|
<COND (<VERB? PUT>
|
||
|
<COND (<PRSO? ,PEG-0>
|
||
|
<SETG SCORE <+ ,SCORE 10>>
|
||
|
<ROB ,PLAYER ,HEART-OF-MAZE> ;"SEM"
|
||
|
<COND (<FSET? ,RING ,WORNBIT>
|
||
|
<MOVE ,RING ,PLAYER>)>
|
||
|
<COND (<FSET? ,TOUPEE ,WORNBIT>
|
||
|
<MOVE ,TOUPEE ,PLAYER>)>
|
||
|
<COND (<FSET? ,MASK ,WORNBIT>
|
||
|
<MOVE ,MASK ,PLAYER>)>
|
||
|
<DEQUEUE I-SANDS-OF-TIME>
|
||
|
<DEQUEUE I-NOISE>
|
||
|
<QUEUE I-AUNT 2>
|
||
|
<TELL
|
||
|
|
||
|
"You put" T ,PEG-0 " in the hole and the closet door slams shut. Without
|
||
|
warning, the floor drops out from under you! You fall for several seconds
|
||
|
then land with a bone-crunching thud, dropping everything you're
|
||
|
holding. You slide down a twisting, slippery slide and are dumped into a
|
||
|
room filled with props.~
|
||
|
~
|
||
|
You look around the room and can't believe what your eyes are seeing.
|
||
|
There is Aunt Hildegarde! She's tied to the conveyor belt of a whirling
|
||
|
buzz saw and a man is standing over her. Aunt Hildegarde sees you and
|
||
|
screams. The man turns and you immediately recognize your childhood
|
||
|
nemesis: Cousin Herman." CR CR>
|
||
|
<QUEUE I-HERMAN-ATTACK 2>
|
||
|
<GOTO ,PROP-VAULT>)
|
||
|
(T
|
||
|
<TELL "The " D ,PRSO " won't fit in the hole." CR>)>)
|
||
|
(<VERB? LOOK-INSIDE>
|
||
|
<TELL "You see nothing but darkness." CR>)>>
|
||
|
|
||
|
<ROUTINE CLOSET-F (RARG "AUX" DOOR)
|
||
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
|
<SET DOOR <WHICH-DOOR?>>
|
||
|
<TELL
|
||
|
"You're in a small closet. Mounted at an angle on the back wall of the
|
||
|
closet are three coat pegs. To the left of the first peg there is a hole
|
||
|
the size of a peg. To the right of the third peg there is a peg which has been
|
||
|
sawed-off, flush with the wall. The door to the north is ">
|
||
|
<COND (<FSET? .DOOR ,OPENBIT>
|
||
|
<TELL "open">)
|
||
|
(T
|
||
|
<TELL "closed">)>
|
||
|
<TELL ".">)>>
|
||
|
|
||
|
<OBJECT PEG-5
|
||
|
(IN CLOSET)
|
||
|
(DESC "sawed-off peg")
|
||
|
(SYNONYM PEG)
|
||
|
(ADJECTIVE SAWED OFF FOURTH COAT WOODEN)
|
||
|
(FLAGS NDESCBIT)
|
||
|
(ACTION PEG-5-F)>
|
||
|
|
||
|
<ROUTINE PEG-5-F ()
|
||
|
<COND (<VERB? EXAMINE>
|
||
|
<TELL
|
||
|
"It's what's left of a coat peg. It looks as if someone sawed off
|
||
|
the peg." CR>)
|
||
|
(<VERB? PULL>
|
||
|
<TELL
|
||
|
"There's nothing to pull -- it's sawed-off." CR>)>>
|
||
|
|
||
|
<ROUTINE CLOSET-EXIT-F ("AUX" DOOR)
|
||
|
<SET DOOR <WHICH-DOOR?>>
|
||
|
<COND (<NOT <FSET? .DOOR ,OPENBIT>>
|
||
|
<THIS-IS-IT .DOOR>
|
||
|
<ITS-CLOSED .DOOR>
|
||
|
<RFALSE>)
|
||
|
(<EQUAL? ,CLOSET-FLOOR ,CELLAR>
|
||
|
<RETURN ,CELLAR>)
|
||
|
(<EQUAL? ,CLOSET-FLOOR ,FOYER>
|
||
|
<RETURN ,FOYER>)
|
||
|
(T
|
||
|
<RETURN ,UPSTAIRS-HALL-MIDDLE>)>>
|
||
|
|
||
|
<ROUTINE WHICH-DOOR? ()
|
||
|
<COND (<EQUAL? ,HERE ,CLOSET>
|
||
|
<COND (<EQUAL? ,CLOSET-FLOOR ,CELLAR>
|
||
|
<RETURN ,CELLAR-CD>)
|
||
|
(<EQUAL? ,CLOSET-FLOOR ,FOYER>
|
||
|
<RETURN ,FOYER-CD>)
|
||
|
(<EQUAL? ,CLOSET-FLOOR ,UPSTAIRS-HALL-MIDDLE>
|
||
|
<RETURN ,UPSTAIRS-CD>)
|
||
|
(T
|
||
|
<RETURN ,ATTIC-CD>)>)
|
||
|
(T ;"Here is Closet Top"
|
||
|
<COND (<EQUAL? ,CLOSET-FLOOR ,CELLAR>
|
||
|
<RETURN ,FOYER-CD>)
|
||
|
(<EQUAL? ,CLOSET-FLOOR ,FOYER>
|
||
|
<RETURN ,UPSTAIRS-CD>)
|
||
|
(T
|
||
|
<RETURN ,ATTIC-CD>)>)>>
|
||
|
|
||
|
<ROOM PROP-VAULT
|
||
|
(IN ROOMS)
|
||
|
(DESC "Prop Vault")
|
||
|
(DOWN PER TO-CHUTE)
|
||
|
(EAST PER TO-CHUTE)
|
||
|
(FLAGS RLANDBIT ONBIT)
|
||
|
(CAPACITY 10) ;"don't light room when sun comes up"
|
||
|
(ACTION PROP-VAULT-F)>
|
||
|
|
||
|
<ROUTINE PROP-VAULT-F (RARG)
|
||
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
|
<TELL
|
||
|
"This is a vault filled with props. You can see Aunt Hildegarde tied to
|
||
|
a buzz saw. Cousin Herman is here, thinking of something rotten to do to
|
||
|
you. To the east there is a chute.">)>>
|
||
|
|
||
|
<OBJECT CHUTE ;"PSEUDO-CANDIDATE"
|
||
|
(IN PROP-VAULT)
|
||
|
(DESC "chute")
|
||
|
(SYNONYM CHUTE)
|
||
|
(FLAGS NDESCBIT)
|
||
|
(ACTION CHUTE-F)>
|
||
|
|
||
|
<ROUTINE CHUTE-F ()
|
||
|
<COND (<VERB? EXAMINE LOOK-INSIDE>
|
||
|
<TELL "The chute leads down into darkness." CR>)
|
||
|
(<VERB? ENTER>
|
||
|
<DO-WALK P?DOWN>)
|
||
|
(<AND <VERB? PUT>
|
||
|
<PRSI? ,CHUTE>>
|
||
|
<REMOVE ,PRSO>
|
||
|
<TELL "You toss" T ,PRSO " in the chute." CR>)>>
|
||
|
|
||
|
<ROUTINE TO-CHUTE ()
|
||
|
<COND (,HERMAN-DOWN
|
||
|
<TELL "Haven't you forgotten something?" CR>
|
||
|
<RFALSE>)
|
||
|
(T
|
||
|
<TELL
|
||
|
"Cousin Herman jumps in front of the chute then punches you in
|
||
|
the stomach." CR>
|
||
|
<RFALSE>)>>
|
||
|
|
||
|
<OBJECT CLOSET-REF
|
||
|
(IN LOCAL-GLOBALS)
|
||
|
(DESC "closet")
|
||
|
(SYNONYM CLOSET)
|
||
|
(ADJECTIVE COAT)
|
||
|
(ACTION CLOSET-REF-F)>
|
||
|
|
||
|
<ROUTINE CLOSET-REF-F ()
|
||
|
<COND (<AND <VERB? LOOK-INSIDE ENTER SEARCH>
|
||
|
<EQUAL? ,HERE ,CLOSET-TOP>>
|
||
|
<TELL "You can't enter the closet from here." CR>)
|
||
|
(<AND <VERB? EXAMINE LOOK-INSIDE>
|
||
|
<EQUAL? ,HERE ,CLOSET>>
|
||
|
<V-LOOK>)
|
||
|
(<AND <VERB? LOOK-INSIDE SEARCH>
|
||
|
<NOT <EQUAL? ,HERE ,CLOSET>>>
|
||
|
<COND (<EQUAL? ,CLOSET-FLOOR ,HERE>
|
||
|
<TELL "You'll have to enter the closet first." CR>)
|
||
|
(T
|
||
|
<TELL "You see an empty shaft." CR>)>)
|
||
|
(<VERB? SEARCH>
|
||
|
<PERFORM ,V?SEARCH ,GLOBAL-ROOM>
|
||
|
<RTRUE>)
|
||
|
(<VERB? OPEN>
|
||
|
<PERFORM ,V?OPEN <COND (<EQUAL? ,HERE ,CLOSET>
|
||
|
<WHICH-DOOR?>)
|
||
|
(<EQUAL? ,HERE ,FOYER>
|
||
|
,FOYER-CD)
|
||
|
(<EQUAL? ,HERE ,UPSTAIRS-HALL-MIDDLE>
|
||
|
,UPSTAIRS-CD)
|
||
|
(<EQUAL? ,HERE ,CELLAR>
|
||
|
,CELLAR-CD)
|
||
|
(T
|
||
|
,ATTIC-CD)>>
|
||
|
<RTRUE>)
|
||
|
(<VERB? CLOSE>
|
||
|
<PERFORM ,V?CLOSE <COND (<EQUAL? ,HERE ,CLOSET>
|
||
|
<WHICH-DOOR?>)
|
||
|
(<EQUAL? ,HERE ,FOYER>
|
||
|
,FOYER-CD)
|
||
|
(<EQUAL? ,HERE ,UPSTAIRS-HALL-MIDDLE>
|
||
|
,UPSTAIRS-CD)
|
||
|
(<EQUAL? ,HERE ,CELLAR>
|
||
|
,CELLAR-CD)
|
||
|
(T
|
||
|
,ATTIC-CD)>>
|
||
|
<RTRUE>)
|
||
|
(<VERB? DISEMBARK EXIT>
|
||
|
<DO-WALK ,P?OUT>)
|
||
|
(<VERB? ENTER>
|
||
|
<COND (<EQUAL? ,HERE ,CLOSET>
|
||
|
<TELL "Look around." CR>)
|
||
|
(T
|
||
|
<DO-WALK ,P?IN>)>)>>
|
||
|
|
||
|
|
||
|
"--- Peg Stuff ---"
|
||
|
|
||
|
<OBJECT PEGS
|
||
|
(IN CLOSET)
|
||
|
(DESC "set of coat pegs")
|
||
|
(SYNONYM PEGS)
|
||
|
(ADJECTIVE COAT WOODEN)
|
||
|
(FLAGS NDESCBIT)
|
||
|
(ACTION PEGS-F)>
|
||
|
|
||
|
<ROUTINE PEGS-F ()
|
||
|
<COND (<VERB? EXAMINE>
|
||
|
<TELL
|
||
|
"There are three pegs mounted at an angle to the wall. To the left of
|
||
|
the first peg is a hole the size of a peg. To the right of the third peg
|
||
|
you can see where a peg has been sawed-off, flush with the wall." CR>
|
||
|
<RTRUE>)
|
||
|
(<VERB? MOVE PULL PUSH LOWER PUSH-DOWN>
|
||
|
<TELL
|
||
|
"You try to pull down all three pegs at once. They won't budge, but
|
||
|
the closet makes a grinding noise." CR>)
|
||
|
(T
|
||
|
<RFALSE>)>> ;"why rfalse??"
|
||
|
|
||
|
<OBJECT PEG-3
|
||
|
(IN CLOSET)
|
||
|
(DESC "third coat peg")
|
||
|
(SYNONYM PEG)
|
||
|
(ADJECTIVE THIRD COAT WORN WOODEN)
|
||
|
(FLAGS NDESCBIT)
|
||
|
(ACTION PEG-F)>
|
||
|
|
||
|
<OBJECT PEG-2
|
||
|
(IN CLOSET)
|
||
|
(DESC "second coat peg")
|
||
|
(SYNONYM PEG)
|
||
|
(ADJECTIVE SECOND COAT WORN WOODEN)
|
||
|
(FLAGS NDESCBIT)
|
||
|
(ACTION PEG-F)>
|
||
|
|
||
|
<OBJECT PEG-1
|
||
|
(IN CLOSET)
|
||
|
(DESC "first coat peg")
|
||
|
(SYNONYM PEG)
|
||
|
(ADJECTIVE FIRST COAT WORN WOODEN)
|
||
|
(FLAGS NDESCBIT)
|
||
|
(ACTION PEG-F)>
|
||
|
|
||
|
<ROUTINE PEG-F ()
|
||
|
<COND (<VERB? MOVE PULL PUSH LOWER PUSH-DOWN>
|
||
|
<COND (<AND <EQUAL? ,PRSO ,BUCKET-PEG>
|
||
|
<FSET? ,BUCKET ,BUCKET-PEG-DOWN-BIT>>
|
||
|
<TELL
|
||
|
"The bucket is already holding" T ,PRSO " down." CR>)
|
||
|
(T
|
||
|
<TELL
|
||
|
"You pull the peg down to a horizontal position.">
|
||
|
<COND (<FSET? ,BUCKET ,BUCKET-PEG-DOWN-BIT>
|
||
|
;"a peg's being held down"
|
||
|
<TELL " You hear a grinding noise.">)>
|
||
|
<TELL CR CR
|
||
|
"As you release the peg, it pops back into its
|
||
|
original 45-degree position.">
|
||
|
<COND (<FSET? ,BUCKET ,BUCKET-PEG-DOWN-BIT>
|
||
|
<CRLF>)
|
||
|
(T
|
||
|
<TELL " ">
|
||
|
<ELEVATOR-OPERATOR ,PRSO>)>)>)
|
||
|
(<AND <VERB? HANG-UP>
|
||
|
<PRSI? ,PEG-1 ,PEG-2 ,PEG-3>
|
||
|
<NOT <PRSO? ,BUCKET>>>
|
||
|
<MOVE ,PRSO ,HERE>
|
||
|
<TELL "The " D ,PRSO " slips off and falls to the floor." CR>)
|
||
|
(<VERB? EXAMINE>
|
||
|
<COND (<FSET? ,BUCKET ,BUCKET-PEG-DOWN-BIT>
|
||
|
<TELL
|
||
|
"The " D ,PRSO " is in a horizontal position with a bucket hanging on it.">)
|
||
|
(<EQUAL? ,PRSO ,BUCKET-PEG>
|
||
|
<TELL
|
||
|
"The " D ,PRSO " is pointing up at an angle with a bucket hanging on it.">)
|
||
|
(T
|
||
|
<TELL
|
||
|
"You see a worn coat peg mounted at an angle.">)>
|
||
|
<CRLF>)>>
|
||
|
|
||
|
<OBJECT PEG-0
|
||
|
(DESC "chipped peg")
|
||
|
(SYNONYM PEG)
|
||
|
(ADJECTIVE COAT CHIPPED WORN WOODEN)
|
||
|
(FLAGS TAKEBIT)
|
||
|
(SIZE 3)
|
||
|
(ACTION PEG-0-F)>
|
||
|
|
||
|
<ROUTINE PEG-0-F ()
|
||
|
<COND (<VERB? EXAMINE>
|
||
|
<TELL "It's a worn coat peg." CR>)>>
|
||
|
|
||
|
<OBJECT NOTE
|
||
|
(DESC "note")
|
||
|
(SYNONYM NOTE PAPER)
|
||
|
(FLAGS TAKEBIT READBIT BURNBIT)
|
||
|
(SIZE 1)
|
||
|
(TEXT
|
||
|
"Congratulations Pumpkin! You've found all the \"treasures.\" Now come on
|
||
|
down for a big surprise.~
|
||
|
Aunt Hildegarde")>
|
||
|
|
||
|
<ROUTINE ELEVATOR-OPERATOR (PEG)
|
||
|
<COND (<EQUAL? ,HERE ,FOYER ,CELLAR ,UPSTAIRS-HALL-MIDDLE ,ATTIC
|
||
|
,SHAFT-BOTTOM>
|
||
|
<TELL "The closet door swings shut by itself." CR>)>
|
||
|
<COND (<OR <AND <EQUAL? .PEG ,PEG-1>
|
||
|
<EQUAL? ,CLOSET-FLOOR ,CELLAR>>
|
||
|
<AND <EQUAL? .PEG ,PEG-2>
|
||
|
<EQUAL? ,CLOSET-FLOOR ,FOYER>>
|
||
|
<AND <EQUAL? .PEG ,PEG-3>
|
||
|
<EQUAL? ,CLOSET-FLOOR ,UPSTAIRS-HALL-MIDDLE>>>
|
||
|
<COND (<EQUAL? ,HERE ,CLOSET ,CLOSET-TOP>
|
||
|
<COND (<EQUAL? ,HERE ,CLOSET>
|
||
|
<COND (<FSET? <WHICH-DOOR?> ,OPENBIT>
|
||
|
<TELL
|
||
|
"The closet door swings shut and you">)
|
||
|
(T
|
||
|
<TELL "You">)>)
|
||
|
(T
|
||
|
<COND (<FSET? <WHICH-DOOR?> ,OPENBIT>
|
||
|
<TELL
|
||
|
"The shaft door swings shut and you">)
|
||
|
(T
|
||
|
<TELL "You">)>)>
|
||
|
<TELL " feel the closet">
|
||
|
<COND (<NOT <EQUAL? ,HERE ,CLOSET>>
|
||
|
<TELL " ceiling">)>
|
||
|
<TELL " vibrate, then stop." CR>)
|
||
|
;(T
|
||
|
<CRLF>)>)
|
||
|
(T
|
||
|
<COND (<EQUAL? ,HERE ,CLOSET ,CLOSET-TOP>
|
||
|
<COND (<NOT <EQUAL? ,HERE ,CLOSET>>
|
||
|
<CRLF>)>
|
||
|
<TELL "The closet ">
|
||
|
<COND (<EQUAL? ,HERE ,CLOSET-TOP>
|
||
|
<TELL "ceiling ">)>
|
||
|
<TELL
|
||
|
"begins to shake and rattle a bit">
|
||
|
<COND (<AND <EQUAL? ,HERE ,CLOSET ,CLOSET-TOP>
|
||
|
<FSET? <WHICH-DOOR?> ,OPENBIT>>
|
||
|
<TELL " as the door swings shut">)>
|
||
|
<TELL ". You feel your stomach ">
|
||
|
<COND (<EQUAL? .PEG ,PEG-3>
|
||
|
<TELL
|
||
|
"drop to your knees as the closet ">
|
||
|
<COND (<NOT <EQUAL? ,HERE ,CLOSET>>
|
||
|
<TELL
|
||
|
"moves up. You enter the top of the shaft, then the closet stops." CR CR>
|
||
|
<GOTO ,CLOSET-TOP>) ;"CLOSET-TOP-4"
|
||
|
(T
|
||
|
<TELL "moves up, then stops." CR ;CR>)>)
|
||
|
|
||
|
(<AND <EQUAL? .PEG ,PEG-2>
|
||
|
<EQUAL? ,CLOSET-FLOOR ,CELLAR>>
|
||
|
<TELL
|
||
|
"drop to your knees as the closet ">
|
||
|
<COND (<NOT <EQUAL? ,HERE ,CLOSET>>
|
||
|
<TELL "floor ">)>
|
||
|
<TELL "moves up, then stops." CR>
|
||
|
<COND (<NOT <EQUAL? ,HERE ,CLOSET>>
|
||
|
<CRLF>
|
||
|
<GOTO ,CLOSET-TOP>)>) ;",CLOSET-TOP-3"
|
||
|
(<AND <EQUAL? .PEG ,PEG-2>
|
||
|
<EQUAL? ,CLOSET-FLOOR
|
||
|
,UPSTAIRS-HALL-MIDDLE>>
|
||
|
<TELL
|
||
|
"rising to your throat as the closet ">
|
||
|
<COND (<NOT <EQUAL? ,HERE ,CLOSET>>
|
||
|
<TELL "floor ">)>
|
||
|
<TELL "moves down, then stops." CR>
|
||
|
<COND (<NOT <EQUAL? ,HERE ,CLOSET>>
|
||
|
<CRLF>
|
||
|
<GOTO ,CLOSET-TOP>)>) ;",CLOSET-TOP-3"
|
||
|
|
||
|
(T ;"prso? peg-1"
|
||
|
<TELL
|
||
|
"rising to your throat as the closet ">
|
||
|
<COND (<NOT <EQUAL? ,HERE ,CLOSET>>
|
||
|
<TELL "floor ">)>
|
||
|
<TELL "moves down, then stops." CR>
|
||
|
<COND (<NOT <EQUAL? ,HERE ,CLOSET>>
|
||
|
<CRLF>
|
||
|
<GOTO ,CLOSET-TOP>)>)>) ;",CLOSET-TOP-2"
|
||
|
(<AND <EQUAL? ,HERE ,SHAFT-BOTTOM>
|
||
|
<EQUAL? .PEG ,PEG-1>>
|
||
|
<JIGS-UP
|
||
|
"~
|
||
|
Before you can get out of the shaft, the closet descends, assuring you
|
||
|
a closed-casket service.">)>)>
|
||
|
<COND (<EQUAL? .PEG
|
||
|
,PEG-1> <SETG CLOSET-FLOOR ,CELLAR>)
|
||
|
(<EQUAL? .PEG ,PEG-2>
|
||
|
<SETG CLOSET-FLOOR ,FOYER>)
|
||
|
(T
|
||
|
<SETG CLOSET-FLOOR ,UPSTAIRS-HALL-MIDDLE>)>
|
||
|
<FCLEAR ,ATTIC-CD ,OPENBIT>
|
||
|
<FCLEAR ,UPSTAIRS-CD ,OPENBIT>
|
||
|
<FCLEAR ,FOYER-CD ,OPENBIT>
|
||
|
<FCLEAR ,CELLAR-CD ,OPENBIT>>
|
||
|
|
||
|
<OBJECT BUCKET
|
||
|
(IN CLOSET)
|
||
|
(DESC "rusty bucket")
|
||
|
;(FDESC "There is a rusty bucket lying here.")
|
||
|
(SYNONYM BUCKET HANDLE PAIL)
|
||
|
(ADJECTIVE RUSTY LEAKY METAL RUSTED)
|
||
|
(FLAGS TAKEBIT CONTBIT OPENBIT SEARCHBIT TRYTAKEBIT)
|
||
|
;"so parser doesn't do a take"
|
||
|
(CAPACITY 20)
|
||
|
(SIZE 16)
|
||
|
(DESCFCN BUCKET-F)
|
||
|
(ACTION BUCKET-F)>
|
||
|
|
||
|
<ROUTINE BUCKET-F ("OPTIONAL" (OARG <>) ;"for DESCFCN" "AUX" (FULL? <>))
|
||
|
<SET FULL? <IN? ,PORTABLE-WATER ,BUCKET>>
|
||
|
<COND (.OARG
|
||
|
<COND (,BUCKET-PEG
|
||
|
<COND (<EQUAL? .OARG ,M-OBJDESC?>
|
||
|
<RTRUE>)>
|
||
|
<TELL CR
|
||
|
"A " 'BUCKET " is hanging from" T ,BUCKET-PEG>
|
||
|
<COND (<IN? ,PORTABLE-WATER ,BUCKET>
|
||
|
<TELL ". The bucket ">
|
||
|
<DESCRIBE-WATER-LEVEL>)>
|
||
|
<TELL ".">)
|
||
|
(T
|
||
|
<RFALSE>)>)
|
||
|
(<AND <VERB? PUT-ON HANG-UP>
|
||
|
<PRSI? ,PEG-1 ,PEG-2 ,PEG-3>>
|
||
|
<SETG BUCKET-PEG ,PRSI>
|
||
|
<FSET ,BUCKET ,TRYTAKEBIT>;"so parser doesn't do a take"
|
||
|
<MOVE ,BUCKET ,HERE>
|
||
|
<COND (<IN? ,PORTABLE-WATER ,BUCKET>
|
||
|
;"this prevents redundancy from a LOOK in the closet"
|
||
|
<FSET ,PORTABLE-WATER ,NDESCBIT>)>
|
||
|
<COND (<OR <AND <IN? ,PORTABLE-WATER ,BUCKET>
|
||
|
<G? ,AMOUNT-OF-WATER 10>>
|
||
|
<G? <WEIGHT ,BUCKET> 20>>
|
||
|
<FSET ,BUCKET ,BUCKET-PEG-DOWN-BIT>
|
||
|
<TELL
|
||
|
"As you hang" T ,BUCKET " on" T ,PRSI ", the peg lowers to a horizontal
|
||
|
position and you feel the closet begin to vibrate." CR>)
|
||
|
(T
|
||
|
<TELL
|
||
|
"You hang" T ,BUCKET " on the peg." CR>)>)
|
||
|
(<AND <VERB? TAKE>
|
||
|
<PRSO? ,BUCKET>
|
||
|
<FSET? ,BUCKET ,TRYTAKEBIT>>
|
||
|
<COND (<NOT <ITAKE>>
|
||
|
<RTRUE>)
|
||
|
(<FSET? ,BUCKET ,WETBIT>
|
||
|
<FCLEAR ,BUCKET ,WETBIT>
|
||
|
<MOVE ,PORTABLE-WATER ,BUCKET>
|
||
|
<SETG AMOUNT-OF-WATER 26>
|
||
|
<TELL "Taken." CR>
|
||
|
<QUEUE I-DRIP 1>)
|
||
|
(<FSET? ,BUCKET ,BUCKET-PEG-DOWN-BIT>
|
||
|
<FCLEAR ,BUCKET ,TRYTAKEBIT>
|
||
|
<FCLEAR ,BUCKET ,BUCKET-PEG-DOWN-BIT>
|
||
|
<FCLEAR ,PORTABLE-WATER ,NDESCBIT>
|
||
|
<TELL
|
||
|
"As you remove" T ,BUCKET "," T ,BUCKET-PEG " pops back into
|
||
|
its original 45-degree position. ">
|
||
|
<ELEVATOR-OPERATOR ,BUCKET-PEG>
|
||
|
<SETG BUCKET-PEG <>>
|
||
|
<RTRUE>)
|
||
|
(T
|
||
|
<FCLEAR ,BUCKET ,TRYTAKEBIT>
|
||
|
<FCLEAR ,PORTABLE-WATER ,NDESCBIT>
|
||
|
<SETG BUCKET-PEG <>>
|
||
|
<TELL "Taken." CR>)>)
|
||
|
(<VERB? LOOK-INSIDE SEARCH EXAMINE>
|
||
|
<TELL
|
||
|
"It's an old metal bucket which is beginning to rust through on the bottom.
|
||
|
It has a rusty handle and ">
|
||
|
<COND (<IN? ,PORTABLE-WATER ,BUCKET>
|
||
|
<DESCRIBE-WATER-LEVEL>
|
||
|
<TELL "." CR>)
|
||
|
(<FIRST? ,BUCKET>
|
||
|
<TELL "contains">
|
||
|
<COND (<NOT <DESCRIBE-NOTHING>>)>
|
||
|
<RTRUE>)
|
||
|
(T
|
||
|
<TELL "it's empty." CR>)>
|
||
|
;<TELL "." CR>)
|
||
|
;(<AND <VERB? TAKE-WITH>
|
||
|
<PRSO? ,WATER ,PORTABLE-WATER>>
|
||
|
<PERFORM ,V?FILL ,BUCKET ,WATER>
|
||
|
<RTRUE>)
|
||
|
(<AND .FULL?
|
||
|
<VERB? THROW>>
|
||
|
<PERFORM ,V?DROP ,PORTABLE-WATER>
|
||
|
<MOVE ,BUCKET ,HERE>
|
||
|
<RTRUE>)
|
||
|
(<VERB? STAND-ON>
|
||
|
<TELL "It wouldn't be a very elevating experience." CR>)
|
||
|
(<VERB? DRINK DRINK-FROM>
|
||
|
<COND (.FULL?
|
||
|
<PERFORM ,V?DRINK ,WATER>
|
||
|
<RTRUE>)
|
||
|
(T
|
||
|
<EMPTY-BUCKET>)>)
|
||
|
(<VERB? POUR EMPTY>
|
||
|
<COND (.FULL?
|
||
|
<PERFORM ,V?EMPTY ,PORTABLE-WATER>
|
||
|
<RTRUE>)
|
||
|
(T
|
||
|
<EMPTY-BUCKET>)>)
|
||
|
(<AND <VERB? PUT>
|
||
|
<EQUAL? ,PRSI ,BUCKET>>
|
||
|
<COND (,BUCKET-PEG
|
||
|
<TELL ,PEG-IN-WAY>)
|
||
|
(<PRSO? ,PORTABLE-WATER ,WATER>
|
||
|
<PERFORM ,V?FILL ,BUCKET ,WATER>
|
||
|
<RTRUE>)
|
||
|
(.FULL?
|
||
|
<TELL "But" T ,PRSO " would get all wet." CR>)>)
|
||
|
(<VERB? OPEN CLOSE>
|
||
|
<CANT-OPEN-CLOSE>)>>
|
||
|
|
||
|
<ROUTINE DESCRIBE-WATER-LEVEL ()
|
||
|
<TELL "is ">
|
||
|
<COND (<G? ,AMOUNT-OF-WATER 21>
|
||
|
<TELL "full">)
|
||
|
(<G? ,AMOUNT-OF-WATER 13>
|
||
|
<TELL "more than half full">)
|
||
|
(<G? ,AMOUNT-OF-WATER 11>
|
||
|
<TELL "about half full">)
|
||
|
(<G? ,AMOUNT-OF-WATER 3>
|
||
|
<TELL "less than half full">)
|
||
|
(T
|
||
|
<TELL "nearly empty">)>
|
||
|
<TELL " of water">>
|
||
|
|
||
|
<GLOBAL AMOUNT-OF-WATER 0>
|
||
|
|
||
|
<ROUTINE I-DRIP ()
|
||
|
<QUEUE I-DRIP -1>
|
||
|
<SETG AMOUNT-OF-WATER <- ,AMOUNT-OF-WATER 1>>
|
||
|
<COND (<OR <IN? ,BUCKET ,POND>
|
||
|
<AND <IN? ,BUCKET ,PLAYER>
|
||
|
<EQUAL? ,HERE ,INLET ,ON-POOL-1 ,IN-POOL-1
|
||
|
,UNDERPASS-1 ,UNDERPASS-2
|
||
|
,IN-POOL-2 ,ON-POOL-2>>>
|
||
|
<SETG AMOUNT-OF-WATER 26>
|
||
|
<RFALSE>)
|
||
|
(<EQUAL? ,AMOUNT-OF-WATER 0>
|
||
|
<FCLEAR ,PORTABLE-WATER ,NDESCBIT>
|
||
|
<REMOVE ,PORTABLE-WATER>
|
||
|
<DEQUEUE I-DRIP>)>
|
||
|
<COND (<AND <VISIBLE? ,BUCKET>
|
||
|
,LIT>
|
||
|
<TELL CR "The water ">
|
||
|
<COND (<EQUAL? ,AMOUNT-OF-WATER 25>
|
||
|
<TELL "begin">)
|
||
|
(T
|
||
|
<TELL "continue">)>
|
||
|
<TELL "s to dribble out of" T ,BUCKET ".">
|
||
|
<COND (<EQUAL? ,AMOUNT-OF-WATER 0>
|
||
|
<TELL " The bucket is now pretty much empty.">)
|
||
|
(<EQUAL? ,AMOUNT-OF-WATER 6 12 18>
|
||
|
<TELL " The bucket is now around ">
|
||
|
<COND (<EQUAL? ,AMOUNT-OF-WATER 18>
|
||
|
<TELL "three-quarters">)
|
||
|
(<EQUAL? ,AMOUNT-OF-WATER 12>
|
||
|
<TELL "half">)
|
||
|
(T
|
||
|
<TELL "one-quarter">)>
|
||
|
<TELL " full.">)>
|
||
|
<CRLF>)>
|
||
|
<COND (<AND <FSET? ,BUCKET ,BUCKET-PEG-DOWN-BIT>
|
||
|
;"on bucket peg, peg pulled down"
|
||
|
<L? ,AMOUNT-OF-WATER 10>>
|
||
|
<COND (<VISIBLE? ,BUCKET>
|
||
|
<TELL
|
||
|
"Suddenly" T ,BUCKET-PEG " pops back into its original 45-degree
|
||
|
position. ">)>
|
||
|
<ELEVATOR-OPERATOR ,BUCKET-PEG>
|
||
|
<FCLEAR ,BUCKET ,BUCKET-PEG-DOWN-BIT>
|
||
|
<RTRUE>)>
|
||
|
<COND (<VISIBLE? ,BUCKET>
|
||
|
<RTRUE>)>> ;"don't I want to return true no matter what?"
|
||
|
|
||
|
<ROUTINE EMPTY-BUCKET ("AUX" OBJ) ;"of non-water objects"
|
||
|
<COND (<SET OBJ <FIRST? ,BUCKET>>
|
||
|
<COND (<VERB? DRINK-FROM>
|
||
|
<PERFORM ,V?DRINK .OBJ>
|
||
|
<RTRUE>)
|
||
|
(T ;"verbs empty, pour"
|
||
|
<COND (<NEXT? .OBJ>
|
||
|
<TELL "The contents of the " D ,BUCKET " fall">)
|
||
|
(T
|
||
|
<TELL "Okay," T .OBJ " falls">)>
|
||
|
<ROB ,BUCKET ,HERE>
|
||
|
<TELL " out of it." CR>)>)
|
||
|
(T
|
||
|
<TELL "It's empty." CR>)>>
|
||
|
|
||
|
<ROUTINE NOT-HOLDING-WATER? ()
|
||
|
<COND (<NOT <IN? ,PORTABLE-WATER ,BUCKET>>
|
||
|
<TELL "You're not carrying any water." CR>
|
||
|
<RTRUE>)
|
||
|
(T
|
||
|
<RFALSE>)>>
|
||
|
|
||
|
<GLOBAL BUCKET-PEG PEG-2>
|
||
|
|
||
|
;<ROUTINE HUM ()
|
||
|
<COND (<FSET? ,BUCKET ,BUCKET-PEG-DOWN-BIT>
|
||
|
<COND (<L? ,AMOUNT-OF-WATER 10>
|
||
|
<TELL "Suddenly" T ,BUCKET-PEG>)
|
||
|
(T
|
||
|
<TELL "You remove the bucket" T ,BUCKET-PEG>)>)
|
||
|
(T
|
||
|
<TELL
|
||
|
"You pull the peg and it lowers to a horizontal position. You hear a faint
|
||
|
humming noise. As you release the peg, it">)>
|
||
|
<TELL
|
||
|
" pops back into its original 45-degree position.">>
|
||
|
|
||
|
"--- Elevator Rooms ---"
|
||
|
|
||
|
<ROOM SHAFT-BOTTOM
|
||
|
(IN ROOMS)
|
||
|
(DESC "Shaft Bottom")
|
||
|
(NORTH TO CELLAR IF CELLAR-CD IS OPEN)
|
||
|
(OUT TO CELLAR IF CELLAR-CD IS OPEN)
|
||
|
(GLOBAL CELLAR-CD)
|
||
|
(FLAGS RLANDBIT)
|
||
|
(CAPACITY 10) ;"don't light room when sun comes up"
|
||
|
(ACTION SHAFT-BOTTOM-F)>
|
||
|
|
||
|
<ROUTINE SHAFT-BOTTOM-F (RARG)
|
||
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
|
<TELL
|
||
|
"You're standing at the bottom of a shaft. The door to the north is ">
|
||
|
<COND (<FSET? ,CELLAR-CD ,OPENBIT>
|
||
|
<TELL "open">)
|
||
|
(T
|
||
|
<TELL "closed">)>
|
||
|
<TELL ".">)>>
|
||
|
|
||
|
<ROOM CLOSET-TOP
|
||
|
(IN ROOMS)
|
||
|
(DESC "Top of Closet")
|
||
|
(NORTH PER CLOSET-TOP-EXIT) ;"TO FOYER IF FOYER-CD IS OPEN"
|
||
|
(OUT PER CLOSET-TOP-EXIT) ;"TO FOYER IF FOYER-CD IS OPEN"
|
||
|
(GLOBAL FOYER-CD UPSTAIRS-CD ATTIC-CD CLOSET-REF)
|
||
|
(CAPACITY 10) ;"don't light room when sun comes up"
|
||
|
(FLAGS RLANDBIT)
|
||
|
(ACTION CLOSET-TOP-F)>
|
||
|
|
||
|
<ROUTINE CLOSET-TOP-F (RARG)
|
||
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
|
<TELL
|
||
|
"You're standing in a shaft on top of the closet. The door to the north is ">
|
||
|
<COND (<FSET? <WHICH-DOOR?> ,OPENBIT>
|
||
|
<TELL "open">)
|
||
|
(T
|
||
|
<TELL "closed">)>
|
||
|
<TELL ".">)>>
|
||
|
|
||
|
;<ROUTINE WHICH-CLOSET-TOP-DOOR? ()
|
||
|
<COND (<EQUAL? ,CLOSET-FLOOR ,CELLAR>
|
||
|
,FOYER-CD)
|
||
|
(<EQUAL? ,CLOSET-FLOOR ,FOYER>
|
||
|
,UPSTAIRS-CD)
|
||
|
(<EQUAL? ,CLOSET-FLOOR ,UPSTAIRS-HALL-MIDDLE>
|
||
|
,ATTIC-CD)>>
|
||
|
|
||
|
<ROUTINE CLOSET-TOP-EXIT ("AUX" DOOR)
|
||
|
<SET DOOR <WHICH-DOOR?>>
|
||
|
<COND (<NOT <FSET? .DOOR ,OPENBIT>>
|
||
|
<THIS-IS-IT .DOOR>
|
||
|
<ITS-CLOSED .DOOR>
|
||
|
<RFALSE>)
|
||
|
(<EQUAL? ,CLOSET-FLOOR ,CELLAR>
|
||
|
,FOYER)
|
||
|
(<EQUAL? ,CLOSET-FLOOR ,FOYER>
|
||
|
,UPSTAIRS-HALL-MIDDLE)
|
||
|
(T
|
||
|
,ATTIC)>>
|
||
|
|
||
|
;<ROOM CLOSET-TOP-3
|
||
|
(IN ROOMS)
|
||
|
(DESC "Top of Closet")
|
||
|
(NORTH TO UPSTAIRS-HALL-MIDDLE IF UPSTAIRS-CD IS OPEN)
|
||
|
(OUT TO UPSTAIRS-HALL-MIDDLE IF UPSTAIRS-CD IS OPEN)
|
||
|
(GLOBAL UPSTAIRS-CD)
|
||
|
(FLAGS RLANDBIT)
|
||
|
(ACTION CLOSET-TOP-3-F)>
|
||
|
|
||
|
;<ROUTINE CLOSET-TOP-3-F (RARG)
|
||
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
|
<SHAFT-DOOR ,UPSTAIRS-CD>)>>
|
||
|
|
||
|
;<ROOM CLOSET-TOP-4
|
||
|
(IN ROOMS)
|
||
|
(DESC "Top of Closet")
|
||
|
(NORTH TO ATTIC IF ATTIC-CD IS OPEN)
|
||
|
(OUT TO ATTIC IF ATTIC-CD IS OPEN)
|
||
|
(GLOBAL ATTIC-CD)
|
||
|
(FLAGS RLANDBIT)
|
||
|
(ACTION CLOSET-TOP-4-F)>
|
||
|
|
||
|
;<ROUTINE CLOSET-TOP-4-F (RARG)
|
||
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
|
<SHAFT-DOOR ,ATTIC-CD>)>>
|
||
|
|
||
|
<OBJECT ATTIC-CD
|
||
|
(IN LOCAL-GLOBALS)
|
||
|
(DESC "closet door")
|
||
|
(SYNONYM DOOR)
|
||
|
(ADJECTIVE CLOSET)
|
||
|
(FLAGS DOORBIT NDESCBIT)
|
||
|
(GENERIC WHICH-DOOR?)
|
||
|
(ACTION ATTIC-CD-F)>
|
||
|
|
||
|
<ROUTINE ATTIC-CD-F ()
|
||
|
<COND (<AND <VERB? OPEN>
|
||
|
<NOT <FSET? ,ATTIC-CD ,OPENBIT>>
|
||
|
<NOT <EQUAL? ,CLOSET-FLOOR ,ATTIC>>
|
||
|
<EQUAL? ,HERE ,ATTIC>>
|
||
|
<OPEN-DOOR-TO-SHAFT>
|
||
|
<FSET ,ATTIC-CD ,OPENBIT>)>>
|
||
|
|
||
|
<ROOM ATTIC
|
||
|
(IN ROOMS)
|
||
|
(DESC "Attic")
|
||
|
(FLAGS RLANDBIT LOCKEDBIT) ;"for unlocking attic door"
|
||
|
(DOWN PER TO-&-FROM-ATTIC)
|
||
|
(SOUTH PER ATTIC-CLOSET-ENTER-F)
|
||
|
(GLOBAL ATTIC-DOOR ATTIC-CD)
|
||
|
(CAPACITY 10) ;"don't light room when sun comes up"
|
||
|
(ACTION ATTIC-F)>
|
||
|
|
||
|
<ROUTINE ATTIC-F (RARG)
|
||
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
||
|
<TELL
|
||
|
"This is a dusty old attic with cobwebs hanging from the ceiling
|
||
|
rafters. The attic is empty except for" A ,TRUNK>
|
||
|
<COND (<FSET? ,ATTIC-DOOR ,OPENBIT>
|
||
|
<TELL
|
||
|
". A ladder leads down through an opening">)
|
||
|
(T
|
||
|
<TELL
|
||
|
" and a folding ladder attached to a panel">)>
|
||
|
<TELL" in the floor. To the south there is a">
|
||
|
<COND (<FSET? ,ATTIC-CD ,OPENBIT>
|
||
|
<TELL "n open">)
|
||
|
(T
|
||
|
<TELL " closed">)>
|
||
|
<TELL " door.">)>>
|
||
|
|
||
|
<ROUTINE TO-&-FROM-ATTIC ()
|
||
|
<COND (<FSET? ,ATTIC-DOOR ,OPENBIT>
|
||
|
<COND (<FSET? ,SKIS ,WORNBIT>
|
||
|
<TELL
|
||
|
"You can't fit through the opening wearing the skis." CR>
|
||
|
<RFALSE>)
|
||
|
(T
|
||
|
<COND (<EQUAL? ,HERE ,ATTIC>
|
||
|
,UPSTAIRS-HALL-MIDDLE)
|
||
|
(T
|
||
|
,ATTIC)>)>)
|
||
|
(T
|
||
|
<TELL "The " D ,ATTIC-DOOR " is closed." CR>
|
||
|
<RFALSE>)>>
|
||
|
|
||
|
<ROUTINE ATTIC-CLOSET-ENTER-F ()
|
||
|
<COND (<NOT <FSET? ,ATTIC-CD ,OPENBIT>>
|
||
|
<ITS-CLOSED ,ATTIC-CD>
|
||
|
<RFALSE>)
|
||
|
(<EQUAL? ,CLOSET-FLOOR ,UPSTAIRS-HALL-MIDDLE>
|
||
|
<RETURN ,CLOSET-TOP>)
|
||
|
(<EQUAL? ,CLOSET-FLOOR ,FOYER>
|
||
|
<TELL
|
||
|
"You enter the shaft and plunge down a floor. A bit shaken, you
|
||
|
find yourself at..." CR CR>
|
||
|
<RETURN ,CLOSET-TOP>)
|
||
|
(T
|
||
|
<JIGS-UP
|
||
|
"You step into a shaft and plunge down, slowing ever so slightly as your body
|
||
|
crashes through the top of the closet then abruptly comes to a stop on the
|
||
|
floor of the closet.">)>>
|
||
|
|
||
|
<OBJECT TRUNK
|
||
|
(IN ATTIC)
|
||
|
(DESC "dusty trunk")
|
||
|
(SYNONYM TRUNK)
|
||
|
(ADJECTIVE DUSTY)
|
||
|
(CAPACITY 30)
|
||
|
(FLAGS NDESCBIT CONTBIT SEARCHBIT TRUNK-LOCKED-BIT)
|
||
|
(ACTION TRUNK-F)> ;"cleared when panel opens"
|
||
|
|
||
|
<ROUTINE TRUNK-F ()
|
||
|
<COND (<AND <VERB? OPEN>
|
||
|
<FSET? ,TRUNK ,TRUNK-LOCKED-BIT>>
|
||
|
<TELL "It won't budge." CR>)
|
||
|
(<AND <VERB? TAKE MOVE>
|
||
|
<PRSO? ,TRUNK>> ;"SEM"
|
||
|
<TELL ,SPINACH CR>)>>
|
||
|
|
||
|
<OBJECT FIRE-HYDRANT
|
||
|
(IN TRUNK)
|
||
|
(DESC "fire hydrant")
|
||
|
(SYNONYM HYDRANT)
|
||
|
(ADJECTIVE FIRE)
|
||
|
(VALUE 10)
|
||
|
(SIZE 20)
|
||
|
(FLAGS TAKEBIT)
|
||
|
(ACTION FIRE-HYDRANT-F)>
|
||
|
|
||
|
<ROUTINE FIRE-HYDRANT-F ()
|
||
|
<COND (<VERB? EXAMINE>
|
||
|
<TELL
|
||
|
"Don't you recognize it? It's a prop " D ,FIRE-HYDRANT " from \"Atomic
|
||
|
Chihuahuas From Hell.\" Uncle Buddy took a lot of heat for that film
|
||
|
when two unlikely special interest groups, the Institute for Nuclear
|
||
|
Power and the American Chihuahua Breeders Association, joined forces in
|
||
|
an effort to have the film banned." CR>)>>
|
||
|
|
||
|
<OBJECT ATTIC-DOOR
|
||
|
(IN LOCAL-GLOBALS)
|
||
|
(DESC "panel")
|
||
|
(SYNONYM PANEL LADDER)
|
||
|
(ADJECTIVE FOLDING ATTIC)
|
||
|
(FLAGS NDESCBIT LOCKEDBIT DOORBIT)
|
||
|
(ACTION ATTIC-DOOR-F)>
|
||
|
|
||
|
<ROUTINE ATTIC-DOOR-F ()
|
||
|
<COND (<AND <VERB? PUSH-DOWN OPEN LOWER PULL PUSH>
|
||
|
<NOT <FSET? ,ATTIC-DOOR ,OPENBIT>>>
|
||
|
<COND (<EQUAL? ,HERE ,UPSTAIRS-HALL-MIDDLE>
|
||
|
<TELL "It won't budge from this side." CR>)
|
||
|
(T
|
||
|
<FSET ,ATTIC-DOOR ,OPENBIT>
|
||
|
<FCLEAR ,ATTIC-DOOR ,LOCKEDBIT>
|
||
|
<TELL
|
||
|
"The panel in the floor drops downward and the ladder unfolds as it swings down
|
||
|
into the upstairs hallway.">
|
||
|
<COND (<NOT <FSET? ,TRUNK ,OPENBIT>>
|
||
|
;<FSET ,TRUNK ,OPENBIT>
|
||
|
<FCLEAR ,TRUNK ,TRUNK-LOCKED-BIT>
|
||
|
<TELL
|
||
|
" At the same time you hear a click from under" T ,TRUNK "'s lid.">)>
|
||
|
<CRLF>)>)
|
||
|
(<VERB? EXAMINE>
|
||
|
<COND (<FSET? ,ATTIC-DOOR ,OPENBIT>
|
||
|
<TELL
|
||
|
"The ladder hangs from an open panel in the ceiling, extended to the floor of
|
||
|
the upstairs hallway." CR>)
|
||
|
(T
|
||
|
<COND (<EQUAL? ,HERE ,ATTIC>
|
||
|
<TELL
|
||
|
"The wooden ladder is folded in thirds, with the first third attached to a
|
||
|
panel in the floor." CR>)>)>)>>
|
||
|
|
||
|
;"end game"
|
||
|
|
||
|
<OBJECT AUNT
|
||
|
(IN PROP-VAULT)
|
||
|
(DESC "Aunt Hildegarde")
|
||
|
(SYNONYM AUNT HILDEG BURBAN)
|
||
|
(ADJECTIVE AUNT)
|
||
|
(FLAGS ACTORBIT NDESCBIT NARTICLEBIT)
|
||
|
(ACTION AUNT-F)>
|
||
|
|
||
|
<ROUTINE AUNT-F ()
|
||
|
<COND (<EQUAL? ,AUNT ,WINNER>
|
||
|
<TELL "\"Shut up and get me off this buzz saw!\"" CR>
|
||
|
<PCLEAR>)
|
||
|
(<VERB? EXAMINE>
|
||
|
<TELL
|
||
|
"She's strapped to the conveyor belt and moving closer to the buzz saw's
|
||
|
spinning blade." CR>)
|
||
|
(<AND <VERB? CUT>
|
||
|
<PRSI? ,SWORD>>
|
||
|
<PERFORM ,V?LAMP-OFF ,SAW>
|
||
|
<RTRUE>)
|
||
|
(<AND <VERB? UNTIE RESCUE LET-GO>
|
||
|
<PRSO? ,AUNT>>
|
||
|
<PERFORM ,V?LAMP-OFF ,SAW>
|
||
|
<RTRUE>)>>
|
||
|
|
||
|
<OBJECT HERMAN
|
||
|
(IN PROP-VAULT)
|
||
|
(DESC "Cousin Herman")
|
||
|
(SYNONYM HERMAN BEAUMONT)
|
||
|
(ADJECTIVE COUSIN)
|
||
|
(FLAGS ACTORBIT NDESCBIT NARTICLEBIT)
|
||
|
(ACTION HERMAN-F)>
|
||
|
|
||
|
<ROUTINE HERMAN-F ()
|
||
|
<COND (<OR <VERB? TELL>
|
||
|
<AND <VERB? ASK-ABOUT>
|
||
|
<PRSO? ,HERMAN>>>
|
||
|
<TELL "Herman never was the talkative type." CR>
|
||
|
<PCLEAR>)
|
||
|
(<AND <VERB? KILL>
|
||
|
<NOT ,PRSI>>
|
||
|
<COND (<FIRST? ,PLAYER>
|
||
|
<TELL
|
||
|
"[with the " D <FIRST? ,PLAYER> "]" CR>
|
||
|
<PERFORM ,V?KILL ,HERMAN <FIRST? ,PLAYER>>
|
||
|
<RTRUE>)
|
||
|
(T
|
||
|
<TELL
|
||
|
"You slug Herman in the gut. It feels good after all these years." CR>)>)
|
||
|
(<AND <VERB? PUSH>
|
||
|
<PRSO? ,HERMAN>>
|
||
|
<TELL "He pushes you right back." CR>)
|
||
|
(<VERB? EXAMINE>
|
||
|
<TELL
|
||
|
"It's Cousin Herman all right. A little older and a little chubbier.
|
||
|
He still wears Batman slip-on tennis shoes." CR>)
|
||
|
(<VERB? BITE KICK>
|
||
|
<TELL
|
||
|
"\"%*&@#!,\" shouts Herman at the top of his lungs. You are aghast at
|
||
|
Herman's profanity in the presence of your Aunt Hildegarde." CR>)>>
|
||
|
|
||
|
<OBJECT CLUB
|
||
|
(IN PROP-VAULT)
|
||
|
(DESC "hairy club")
|
||
|
(SYNONYM CLUB)
|
||
|
(ADJECTIVE HAIRY)
|
||
|
(FLAGS TAKEBIT)
|
||
|
(SIZE 10)
|
||
|
(ACTION PROP-F)>
|
||
|
|
||
|
<OBJECT STICK
|
||
|
(IN PROP-VAULT)
|
||
|
(DESC "big stick")
|
||
|
(SYNONYM STICK)
|
||
|
(ADJECTIVE BIG)
|
||
|
(FLAGS TAKEBIT)
|
||
|
(SIZE 10)
|
||
|
(ACTION PROP-F)>
|
||
|
|
||
|
<OBJECT GUN
|
||
|
(IN PROP-VAULT)
|
||
|
(DESC "gun")
|
||
|
(SYNONYM GUN)
|
||
|
(ADJECTIVE WHIP WHIPPED CREAM)
|
||
|
(FLAGS TAKEBIT)
|
||
|
(SIZE 10)
|
||
|
(ACTION PROP-F)>
|
||
|
|
||
|
<OBJECT MOP
|
||
|
(IN PROP-VAULT)
|
||
|
(DESC "glowing mop")
|
||
|
(SYNONYM MOP)
|
||
|
(ADJECTIVE GLOWING)
|
||
|
(FLAGS TAKEBIT)
|
||
|
(SIZE 10)
|
||
|
(ACTION PROP-F)>
|
||
|
|
||
|
<OBJECT BAG
|
||
|
(IN PROP-VAULT)
|
||
|
(DESC "boomerang mail bag")
|
||
|
(SYNONYM BAG MAILBAG)
|
||
|
(ADJECTIVE BOOMERANG MAIL)
|
||
|
(FLAGS TAKEBIT)
|
||
|
(SIZE 10)
|
||
|
(ACTION PROP-F)>
|
||
|
|
||
|
<OBJECT CLIPPERS
|
||
|
(IN PROP-VAULT)
|
||
|
(DESC "giant nail clippers")
|
||
|
(SYNONYM CLIPPERS)
|
||
|
(ADJECTIVE GIANT NAIL)
|
||
|
(FLAGS TAKEBIT NARTICLEBIT)
|
||
|
(SIZE 10)
|
||
|
(ACTION PROP-F)>
|
||
|
|
||
|
<OBJECT SHEARS
|
||
|
(IN PROP-VAULT)
|
||
|
(DESC "salivating hedge shears")
|
||
|
(SYNONYM SHEARS)
|
||
|
(ADJECTIVE SALAVATING HEDGE)
|
||
|
(FLAGS TAKEBIT NARTICLEBIT)
|
||
|
(SIZE 10)
|
||
|
(ACTION PROP-F)>
|
||
|
|
||
|
<OBJECT SWORD
|
||
|
(IN PROP-VAULT)
|
||
|
(DESC "elvish sword of great antiquity")
|
||
|
(SYNONYM SWORD)
|
||
|
(ADJECTIVE ELVISH)
|
||
|
(FLAGS TAKEBIT VOWELBIT)
|
||
|
(SIZE 10)
|
||
|
(ACTION PROP-F)>
|
||
|
|
||
|
<ROUTINE PROP-F ("AUX" HERMAN-THING PLAYER-THING)
|
||
|
<SET HERMAN-THING <FIRST? ,HERMAN>>
|
||
|
<SET PLAYER-THING <FIRST? ,PLAYER>>
|
||
|
<REPEAT ()
|
||
|
<COND (<ZERO? .PLAYER-THING>
|
||
|
<RETURN>)
|
||
|
(<EQUAL? .PLAYER-THING ,TOUPEE ,MASK ,RING>
|
||
|
<SET PLAYER-THING <NEXT? .PLAYER-THING>>)
|
||
|
(T
|
||
|
<RETURN>)>>
|
||
|
<COND (<VERB? TAKE>
|
||
|
<COND (<EQUAL? ,PRSO .HERMAN-THING>
|
||
|
<TELL
|
||
|
"You reach for" T .HERMAN-THING ", but " D ,HERMAN " twists away
|
||
|
from you." CR>)
|
||
|
(.PLAYER-THING
|
||
|
<TELL
|
||
|
"You're already armed with" AR .PLAYER-THING>)
|
||
|
(T
|
||
|
<PICK-REMOVE ,PRSO ,PROPS>
|
||
|
<RFALSE>)>)
|
||
|
(<AND <VERB? SHOOT THROW>
|
||
|
<EQUAL? ,PRSI ,HERMAN>>
|
||
|
<PERFORM ,V?KILL ,HERMAN ,PRSO>
|
||
|
<RTRUE>)
|
||
|
(<AND <VERB? KILL CUT>
|
||
|
<EQUAL? ,PRSO ,HERMAN>>
|
||
|
<SETG HERMAN-HITS <+ ,HERMAN-HITS 1>>
|
||
|
<COND (,HERMAN-DOWN
|
||
|
<DEQUEUE I-AUNT>
|
||
|
<TELL
|
||
|
"With the hate of all those summers of his bullying built up, you let
|
||
|
Herman have it with" T .PLAYER-THING ", killing him. At the same time
|
||
|
you hear a scream not unlike one you would hear in an Uncle Buddy movie.
|
||
|
As the tone of the saw blade changes you realize your Aunt Hildegarde
|
||
|
has just taken her final bow. You stand and cry for a few minutes
|
||
|
remembering the good times with your aunt and wishing you had done more
|
||
|
to save her.~
|
||
|
~
|
||
|
Later you find your way out of the prop vault. You go next door to Johnny's and
|
||
|
call the police. Unfortunately it never occurred to you that with two dead
|
||
|
bodies involved they wouldn't believe your story." CR>
|
||
|
<FINISH>)
|
||
|
(<EQUAL? ,HERMAN-HITS 3>
|
||
|
<SETG HERMAN-DOWN T>
|
||
|
<SETG AUNT-COUNT 6>
|
||
|
<QUEUE I-AUNT 2> ;"SEM?"
|
||
|
<DEQUEUE I-HERMAN-ATTACK>
|
||
|
<TELL "You ">
|
||
|
<COND (<EQUAL? .PLAYER-THING ,GUN>
|
||
|
<TELL
|
||
|
"fire" T ,GUN " hitting him in the shoulder.">)
|
||
|
(T
|
||
|
<TELL
|
||
|
"give it your best, striking Herman.">)>
|
||
|
<TELL
|
||
|
" He drops to the ground. (Hmm, guess that wasn't a prop after all.)
|
||
|
Slowly, he starts to come to his feet. The saw blade is less than an inch
|
||
|
from the blue-gray hairs of Aunt Hildegarde's head!" CR>)
|
||
|
(T
|
||
|
<TELL "You ">
|
||
|
<COND (<EQUAL? .PLAYER-THING ,GUN>
|
||
|
<TELL
|
||
|
"fire" T ,GUN ", blasting Herman with smooth and creamy whipped cream. You toss
|
||
|
the gun away in disgust. It sails into the chute." CR>)
|
||
|
(T
|
||
|
<TELL
|
||
|
"give it your best, striking Herman. The " D .PLAYER-THING " breaks into
|
||
|
a hundred pieces. It was only a prop." CR>)>
|
||
|
<REMOVE .PLAYER-THING>)>)>>
|
||
|
|
||
|
<GLOBAL AUNT-COUNT 0>
|
||
|
|
||
|
<ROUTINE I-AUNT ()
|
||
|
<QUEUE I-AUNT 1>
|
||
|
<SETG AUNT-COUNT <+ ,AUNT-COUNT 1>>
|
||
|
<COND (<EQUAL? ,AUNT-COUNT 7>
|
||
|
<TELL CR
|
||
|
"You hear what sounds like an old woman being run through a buzz saw.
|
||
|
Suddenly you realize -- that old woman was your Aunt Hildegarde. Cousin
|
||
|
Herman stares at the saw blade in horror then turns and dives into the
|
||
|
chute, disappearing. You stand there as the blade continues to cut,
|
||
|
wishing you had done more to save her.~
|
||
|
~
|
||
|
Later you find your way out of the prop vault. You go next door to Johnny's
|
||
|
and call the police. When they arrive they have a difficult time believing
|
||
|
your story. You're advised to call a good lawyer." CR>
|
||
|
<FINISH>)
|
||
|
(T
|
||
|
<TELL CR
|
||
|
"Your Aunt Hildegarde, strapped to the conveyor belt, is "
|
||
|
<GET ,AUNT-DISTANCE ,AUNT-COUNT> " the saw blade. ">
|
||
|
<COND (,HERMAN-HITS
|
||
|
<COND (<EQUAL? ,AUNT-COUNT 1>
|
||
|
<TELL
|
||
|
"\"Herman, dear, please turn off the buzz saw and untie me,\" says Aunt
|
||
|
Hildegarde politely.">)
|
||
|
(<EQUAL? ,AUNT-COUNT 2>
|
||
|
<TELL
|
||
|
"\"Herman, that's no way to treat your cousin,\" admonishes Aunt Hildegarde.">)
|
||
|
(<EQUAL? ,AUNT-COUNT 3>
|
||
|
<TELL
|
||
|
"\"I'm just glad your Uncle Buddy isn't alive to see this,\" says Aunt
|
||
|
Hildegarde with resignation.">)
|
||
|
(<EQUAL? ,AUNT-COUNT 4>
|
||
|
<TELL
|
||
|
"\"Herman, enough is enough. You are in big trouble, buster. Pumpkin, untie me
|
||
|
then run and get your Uncle Buddy's belt,\" orders Aunt Hildegarde.">)
|
||
|
(<EQUAL? ,AUNT-COUNT 5>
|
||
|
<TELL
|
||
|
"\"Now you two stop that horseplay and get me off this contraption,\"
|
||
|
demands Aunt Hildegarde.">)
|
||
|
(<EQUAL? ,AUNT-COUNT 6>
|
||
|
<TELL
|
||
|
"\"Pumpkin! Help!\" screams Aunt Hildegarde over the roar of the buzz saw.">)>)
|
||
|
(T
|
||
|
<TELL
|
||
|
"\"Herman, stop this silly game this instant and untie me,\" demands
|
||
|
Aunt Hildegarde.">)>
|
||
|
<CRLF>)>>
|
||
|
|
||
|
<GLOBAL AUNT-DISTANCE
|
||
|
<TABLE
|
||
|
""
|
||
|
"about a foot from"
|
||
|
"slowly moving closer to"
|
||
|
"now only about half a foot from"
|
||
|
"slowly approaching"
|
||
|
"about three or four inches away from"
|
||
|
"less than an inch away from">>
|
||
|
|
||
|
<OBJECT SAW
|
||
|
(IN PROP-VAULT)
|
||
|
(DESC "buzz saw")
|
||
|
(SYNONYM SAW BLADE BELT)
|
||
|
(ADJECTIVE SAW BUZZ LARGE STEEL CONVEYOR)
|
||
|
(FLAGS NDESCBIT)
|
||
|
(ACTION SAW-F)>
|
||
|
|
||
|
<ROUTINE SAW-F ("AUX" HERMAN-THING)
|
||
|
<SET HERMAN-THING <FIRST? ,HERMAN>>
|
||
|
<COND (<VERB? LAMP-OFF>
|
||
|
<COND (,HERMAN-DOWN
|
||
|
<SETG SCORE <+ ,SCORE 20>>
|
||
|
<TELL "The conveyor belt stops and the buzz saw's
|
||
|
blade begins to slow. As you untie your Aunt Hildegarde, Herman races
|
||
|
toward the chute and jumps inside, disappearing. You hear his squeaky
|
||
|
laugh trail off in the distance. Aunt Hildegarde gets up from the buzz
|
||
|
saw rubbing the back of her head. Though a bit shaken, she explains she
|
||
|
had been watching you while you searched for the \"treasures.\"~
|
||
|
~
|
||
|
\"As I followed your progress I began to realize you and I were not the
|
||
|
only ones on the estate. My suspicions were confirmed when I received a
|
||
|
rap on the skull. The next thing I knew I was being tied to this buzz
|
||
|
saw by your Cousin Herman,\" says Aunt Hildegarde. \"I guess he couldn't
|
||
|
stand to see you inherit the family fortune. Well, it's all yours now. I
|
||
|
knew you could do it,\" says Aunt Hildegarde with satisfaction.~
|
||
|
~
|
||
|
\"I'm sorry I put you through all this, Pumpkin, but your Uncle Buddy and
|
||
|
I had to be sure that whoever inherited the estate and the studio would
|
||
|
be clever enough to handle it all. The only way I could be sure the
|
||
|
stipulations in my will would be carried out would be to oversee it
|
||
|
myself, so I faked my death,\" says Aunt Hildegarde, hugging you so
|
||
|
tight she squeezes the air out of your lungs. \"Tomorrow we'll go see my
|
||
|
lawyer and he'll take care of all the paper work. I know you'll take
|
||
|
good care of Hildebud and the studio. As for me, I'm sure it won't be
|
||
|
long before the press discovers I'm alive. I plan to go to the south of
|
||
|
France for a rest while the story leaks out. It will be great publicity
|
||
|
for the studio,\" says Aunt Hildegarde. Then she adds, \"And let's hope
|
||
|
we've seen the last of your Cousin Herman.\"" CR>
|
||
|
<FINISH>)
|
||
|
(.HERMAN-THING
|
||
|
<REMOVE .HERMAN-THING>
|
||
|
<TELL
|
||
|
"Cousin Herman hits you with" T .HERMAN-THING ", driving you away from the
|
||
|
buzz saw. The " D .HERMAN-THING " crumbles; it was only a prop." CR>)
|
||
|
(T
|
||
|
<TELL
|
||
|
"Cousin Herman slugs you in the stomach, pushing you away from the
|
||
|
buzz saw." CR>)>)
|
||
|
(<VERB? LAMP-ON>
|
||
|
<TELL "It's already turned on!">)
|
||
|
(<VERB? EXAMINE>
|
||
|
<TELL
|
||
|
"It's a large, steel blade that seems to spin faster as Aunt Hildegarde
|
||
|
moves closer to it." CR>)>>
|
||
|
|
||
|
<GLOBAL HERMAN-DOWN <>>
|
||
|
|
||
|
<GLOBAL HERMAN-HITS 0>
|
||
|
|
||
|
<ROUTINE I-HERMAN-ATTACK ("AUX" NEXT-PROP FOO HERMAN-THING)
|
||
|
<SET HERMAN-THING <FIRST? ,HERMAN>>
|
||
|
<QUEUE I-HERMAN-ATTACK -1>
|
||
|
<COND (.HERMAN-THING
|
||
|
<REMOVE .HERMAN-THING>
|
||
|
<TELL CR "Cousin Herman ">
|
||
|
<COND (<EQUAL? .HERMAN-THING ,GUN>
|
||
|
<TELL "fires">)
|
||
|
(<EQUAL? .HERMAN-THING ,BAG>
|
||
|
<TELL "throws">)
|
||
|
(T
|
||
|
<TELL "swings">)>
|
||
|
<TELL " the " D .HERMAN-THING ", ">
|
||
|
<COND (<EQUAL? .HERMAN-THING ,GUN>
|
||
|
<TELL
|
||
|
"covering you with whipped cream. Herman tosses the gun in the chute." CR>)
|
||
|
(T
|
||
|
<TELL
|
||
|
"striking you. The " D .HERMAN-THING " crumbles; it was only a prop." CR>)>)
|
||
|
(T
|
||
|
<MOVE <PICK-ONE ,PROPS> ,HERMAN>
|
||
|
<SET HERMAN-THING <FIRST? ,HERMAN>>
|
||
|
<TELL CR "Cousin Herman grabs the " D .HERMAN-THING "." CR>)>>
|
||
|
|
||
|
;"rubber, paper mache, plaster? etc"
|
||
|
|
||
|
<GLOBAL PROPS
|
||
|
<LTABLE 0
|
||
|
CLUB
|
||
|
STICK
|
||
|
GUN
|
||
|
MOP
|
||
|
BAG
|
||
|
CLIPPERS
|
||
|
SHEARS
|
||
|
SWORD>>
|