2668 lines
72 KiB
Plaintext
2668 lines
72 KiB
Plaintext
"VERBS for
|
|
SAMPLER
|
|
(c) Copyright 1984 Infocom, Inc. All Rights Reserved."
|
|
|
|
"Verb Functions for Game Commands"
|
|
|
|
<GLOBAL VERBOSE <>>
|
|
<GLOBAL SUPER-BRIEF <>>
|
|
<GDECL (VERBOSE SUPER-BRIEF) <OR ATOM FALSE>>
|
|
|
|
<ROUTINE V-VERBOSE ()
|
|
<SETG VERBOSE T>
|
|
<SETG SUPER-BRIEF <>>
|
|
<TELL "Maximum verbosity." CR>>
|
|
|
|
<ROUTINE V-BRIEF ()
|
|
<SETG VERBOSE <>>
|
|
<SETG SUPER-BRIEF <>>
|
|
<TELL "Brief descriptions." CR>>
|
|
|
|
<ROUTINE V-SUPER-BRIEF ()
|
|
<SETG SUPER-BRIEF T>
|
|
<TELL "Super-brief descriptions." CR>>
|
|
|
|
;"V-DIAGNOSE is in ACTIONS.ZIL"
|
|
|
|
<ROUTINE V-INVENTORY ()
|
|
<COND (<FIRST? ,WINNER> <PRINT-CONT ,WINNER>)
|
|
(T <TELL "You are empty-handed." CR>)>>
|
|
|
|
<ROUTINE V-QUIT ("OPTIONAL" (ASK? T) "AUX" SCOR)
|
|
<V-SCORE>
|
|
<COND (<OR <AND .ASK?
|
|
<TELL
|
|
"Do you wish to leave the Sampler? (YES is affirmative): "> ;"was 'the game'"
|
|
<YES?>>
|
|
<NOT .ASK?>>
|
|
<QUIT>)
|
|
(ELSE <TELL "Ok." CR>)>>
|
|
|
|
<ROUTINE V-RESTART ()
|
|
<V-SCORE T>
|
|
<TELL
|
|
"Do you wish to leave this excerpt and return to the menu? (YES is affirmative): ">
|
|
<COND (<YES?>
|
|
<TELL "Restarting." CR>
|
|
<RESTART>
|
|
<TELL "Failed." CR>)>>
|
|
|
|
<ROUTINE YOU-CANT (STR)
|
|
<TELL
|
|
"You can't use " .STR " in the Tutorial and Demonstrations,
|
|
although you can in all of Infocom's interactive fiction." CR>>
|
|
|
|
<ROUTINE V-RESTORE ()
|
|
<YOU-CANT "RESTORE">>
|
|
|
|
<ROUTINE V-SAVE ()
|
|
<YOU-CANT "SAVE">>
|
|
|
|
;"V-SCORE is in ACTIONS.ZIL"
|
|
|
|
<ROUTINE V-SCRIPT ()
|
|
<YOU-CANT "SCRIPT">>
|
|
|
|
<ROUTINE V-UNSCRIPT ()
|
|
<YOU-CANT "UNSCRIPT">>
|
|
|
|
<ROUTINE V-VERSION ("AUX" (CNT 17))
|
|
<COND (,TUTORIAL-MODE
|
|
<TELL "Tutorial Game">)
|
|
(T
|
|
<TELL "An excerpt from ">
|
|
<COND (<EQUAL? ,GAME-FLAG 2>
|
|
<TELL "Planetfall">)
|
|
(<EQUAL? ,GAME-FLAG 3>
|
|
<TELL "Infidel">)
|
|
(T
|
|
<TELL "ZORK I">)>)>
|
|
<TELL "|
|
|
Copyright (c) 1984 Infocom, Inc. All rights reserved.|
|
|
ZORK is a registered trademark of Infocom, Inc.|
|
|
PLANETFALL, INFIDEL, and The WITNESS are trademarks of Infocom, Inc.|
|
|
Release ">
|
|
<PRINTN <BAND <GET 0 1> *3777*>>
|
|
<TELL " / Serial number ">
|
|
<REPEAT ()
|
|
<COND (<G? <SET CNT <+ .CNT 1>> 23>
|
|
<RETURN>)
|
|
(T
|
|
<PRINTC <GETB 0 .CNT>>)>>
|
|
<CRLF>>
|
|
|
|
<ROUTINE V-VERIFY ()
|
|
<TELL "Verifying disk..." CR>
|
|
<COND (<VERIFY>
|
|
<TELL "The disk is correct." CR>)
|
|
(T
|
|
<TELL CR "** Disk Failure **" CR>)>>
|
|
|
|
<ROUTINE V-DEBUG ()
|
|
<TELL "Turning debugging feature ">
|
|
<COND (,DEBUG
|
|
<SETG DEBUG <>>
|
|
<TELL "off">)
|
|
(T
|
|
<SETG DEBUG T>
|
|
<TELL "on">)>
|
|
<TELL "." CR>>
|
|
|
|
^L
|
|
|
|
"Real Verb Functions"
|
|
|
|
<ROUTINE V-ADVENT ()
|
|
<TELL "A hollow voice says \"Fool.\"" CR>>
|
|
|
|
<ROUTINE HERE-AT-ALL? (OBJ "AUX" L)
|
|
<COND (<OR <IN? .OBJ ,HERE>
|
|
<IN? .OBJ ,WINNER>
|
|
<IN? <SET L <LOC .OBJ>> ,WINNER>
|
|
<AND <LOC .L>
|
|
<IN? <LOC .L> ,WINNER>>
|
|
<AND <IN? .L ,HERE>
|
|
<OR <NOT <FSET? .L ,CONTBIT>>
|
|
<FSET? .L ,OPENBIT>>>
|
|
<GLOBAL-IN? .OBJ ,HERE>
|
|
<IN? .OBJ ,GLOBAL-OBJECTS>
|
|
<EQUAL? .OBJ ,PSEUDO-OBJECT>>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-AGAIN ("AUX" (OBJ <>) OWINNER V)
|
|
<COND (<EQUAL? ,L-PRSA ,V?WALK>
|
|
<PERFORM ,L-PRSA ,L-WALK-DIR>)
|
|
(T
|
|
<COND (,L-PRSO
|
|
<COND (<OR <NOT <LOC ,L-PRSO>>
|
|
<FSET? ,L-PRSO ,INVISIBLE>
|
|
<NOT <HERE-AT-ALL? ,L-PRSO>>>
|
|
<SET OBJ ,L-PRSO>)>)>
|
|
<COND (,L-PRSI
|
|
<COND (<OR <NOT <LOC ,L-PRSI>>
|
|
<FSET? ,L-PRSI ,INVISIBLE>
|
|
<NOT <HERE-AT-ALL? ,L-PRSO>>>
|
|
<SET OBJ ,L-PRSI>)>)>
|
|
<COND (<AND .OBJ
|
|
<NOT <EQUAL? .OBJ ,PSEUDO-OBJECT ,ROOMS>>>
|
|
<COND (<EQUAL? .OBJ ,NOT-HERE-OBJECT>
|
|
<TELL "You can't see that here." CR>)
|
|
(T
|
|
<TELL
|
|
"You can't see the " D .OBJ " anymore." CR>)>
|
|
<SETG P-WON <>>
|
|
<RFATAL>)
|
|
(<NOT <IN? ,L-WINNER ,HERE>>
|
|
<COND (<EQUAL? ,L-WINNER ,FLOYD>
|
|
<TELL "Floyd">)
|
|
(T <TELL D ,L-WINNER>)>
|
|
<TELL " isn't here anymore!" CR>
|
|
<RFATAL>)
|
|
(T
|
|
<SET OWINNER ,WINNER>
|
|
<SETG WINNER ,L-WINNER>
|
|
<SET V <PERFORM ,L-PRSA ,L-PRSO ,L-PRSI>>
|
|
<COND (,P-CONT
|
|
<SETG WINNER .OWINNER>)>
|
|
<RETURN .V>)>)>>
|
|
|
|
<GLOBAL L-WINNER <>>
|
|
|
|
<ROUTINE V-ALARM ()
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<TELL "He's wide awake, or haven't you noticed..." CR>)
|
|
(T
|
|
<TELL "The " D ,PRSO " isn't sleeping." CR>)>>
|
|
|
|
<ROUTINE V-ANSWER ()
|
|
<TELL "Nobody seems to be awaiting your answer." CR>
|
|
<RFATAL>>
|
|
|
|
<ROUTINE V-ASK-FOR ()
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<COND (<IN? ,PRSI ,PRSO>
|
|
<TELL
|
|
"The " D ,PRSO " doesn't seem inclined to give up the " D ,PRSI "." CR>)
|
|
(T
|
|
<TELL
|
|
"The " D ,PRSO " isn't holding the " D ,PRSI "." CR>)>)
|
|
(T
|
|
<PERFORM ,V?TELL ,PRSO>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-ATTACK ()
|
|
<COND (<NOT <FSET? ,PRSO ,ACTORBIT>>
|
|
<TELL
|
|
"I've known strange people, but fighting " A ,PRSO "?" CR>)
|
|
(<OR <NOT ,PRSI>
|
|
<EQUAL? ,PRSI ,HANDS>>
|
|
<TELL
|
|
"Trying to attack " A ,PRSO " with your bare hands is suicidal." CR>)
|
|
(<NOT <IN? ,PRSI ,WINNER>>
|
|
<TELL "You aren't even holding the " D ,PRSI "." CR>)
|
|
(<NOT <FSET? ,PRSI ,WEAPONBIT>>
|
|
<TELL
|
|
"Trying to attack the " D ,PRSO " with " A ,PRSI " is suicidal." CR>)
|
|
(T
|
|
<HERO-BLOW>)>>
|
|
|
|
<ROUTINE V-ATTRACT ()
|
|
<TELL "Nothing interesting happens." CR>>
|
|
|
|
<ROUTINE V-ZATTRACT ()
|
|
<PERFORM ,V?ATTRACT ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-BACK ()
|
|
<TELL "Sorry, my memory is poor. Please give a direction." CR>>
|
|
|
|
<ROUTINE V-BLAST ()
|
|
<TELL "You can't blast anything by using words." CR>>
|
|
|
|
<ROUTINE PRE-BOARD ("AUX" AV)
|
|
<SET AV <LOC ,WINNER>>
|
|
<COND (<FSET? ,PRSO ,VEHBIT>
|
|
<COND (<AND <NOT <IN? ,PRSO ,HERE>>
|
|
<NOT <GLOBAL-IN? ,PRSO ,HERE>>>
|
|
<TELL
|
|
"The " D ,PRSO " must be on the ground to be boarded." CR>)
|
|
(<FSET? .AV ,VEHBIT>
|
|
<TELL "You are already in the " D .AV "!" CR>)
|
|
(T
|
|
<RFALSE>)>)
|
|
(<EQUAL? ,PRSO ,KITCHEN-WINDOW ,SAND> <RFALSE>)
|
|
(<AND <EQUAL? ,HERE ,REACTOR-CONTROL>
|
|
<EQUAL? ,PRSO ,LOWER-ELEVATOR-CARD ,REACTOR-ELEVATOR-DOOR>
|
|
<NOT ,P-XNAM>
|
|
<EQUAL? ,P-ADJN ,W?ELEVATOR>>
|
|
<RFALSE>)
|
|
(<FSET? ,PRSO ,WEARBIT>
|
|
<PERFORM ,V?WEAR ,PRSO>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL
|
|
"You have a theory on how to board " A ,PRSO ", perhaps?" CR>)>
|
|
<RFATAL>>
|
|
|
|
<ROUTINE V-BOARD ("AUX" AV)
|
|
<TELL "You are now in the " D ,PRSO "." CR>
|
|
<MOVE ,WINNER ,PRSO>
|
|
<APPLY <GETP ,PRSO ,P?ACTION> ,M-ENTER>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-BREATHE ()
|
|
<PERFORM ,V?INFLATE ,PRSO ,LUNGS>>
|
|
|
|
<ROUTINE V-BRUSH ()
|
|
<TELL "If you wish, but heaven only knows why." CR>>
|
|
|
|
<ROUTINE V-BUG ()
|
|
<TELL
|
|
"Bug? Not in a flawless program like this! (Cough, cough)." CR>>
|
|
|
|
<ROUTINE PRE-BURN ()
|
|
<COND (<EQUAL? ,GAME-FLAG 2>
|
|
<PERFORM ,V?ZAP ,PRSO ,PRSI>
|
|
<RTRUE>)
|
|
(<FLAMING? ,PRSI>
|
|
<RFALSE>)
|
|
(T
|
|
<TELL "With " A ,PRSI "??!?" CR>)>>
|
|
|
|
<ROUTINE V-BURN ()
|
|
<COND (<FSET? ,PRSO ,BURNBIT>
|
|
<COND (<IN? ,PRSO ,WINNER>
|
|
<REMOVE-CAREFULLY ,PRSO>
|
|
<TELL "The " D ,PRSO>
|
|
<JIGS-UP
|
|
" catches fire. Unfortunately, you were holding it at the time.">)
|
|
(T
|
|
<REMOVE-CAREFULLY ,PRSO>
|
|
<TELL
|
|
"The " D ,PRSO " catches fire and is consumed." CR>)>)
|
|
(T
|
|
<TELL "You can't burn " A ,PRSO "." CR>)>>
|
|
|
|
<ROUTINE V-CHOMP ()
|
|
<TELL "Preposterous!" CR>>
|
|
|
|
<ROUTINE V-CLIMB-DOWN () <V-CLIMB-UP ,P?DOWN ,PRSO>>
|
|
|
|
<ROUTINE V-CLIMB-FOO ()
|
|
<V-CLIMB-UP ,P?UP ,PRSO>>
|
|
|
|
<ROUTINE V-CLIMB-ON ()
|
|
<COND (<FSET? ,PRSO ,VEHBIT>
|
|
<V-CLIMB-UP ,P?UP T>)
|
|
(T
|
|
<TELL "You can't climb onto the " D ,PRSO "." CR>)>>
|
|
|
|
<ROUTINE V-CLIMB-UP ("OPTIONAL" (DIR ,P?UP) (OBJ <>) "AUX" X T)
|
|
<COND (<AND <NOT .OBJ> ,PRSO>
|
|
<SET OBJ ,PRSO>)>
|
|
<COND (<SET T <GETPT ,HERE .DIR>>
|
|
<COND (.OBJ
|
|
<SET X <PTSIZE .T>>
|
|
<COND (<OR <EQUAL? .X ,NEXIT>
|
|
<AND <EQUAL? .X ,CEXIT ,DEXIT ,UEXIT>
|
|
<NOT <GLOBAL-IN? ,PRSO <GETB .T 0>>>>>
|
|
<TELL "The " D .OBJ " do">
|
|
<COND (<NOT <EQUAL? .OBJ ,STAIRS>>
|
|
<TELL "es">)>
|
|
<TELL "n't lead ">
|
|
<COND (<==? .DIR ,P?UP>
|
|
<TELL "up">)
|
|
(T <TELL "down">)>
|
|
<TELL "ward." CR>
|
|
<RTRUE>)>)>
|
|
<DO-WALK .DIR>
|
|
<RTRUE>)
|
|
(<NOT .OBJ>
|
|
<TELL ,CANT-GO CR>)
|
|
(<AND .OBJ
|
|
<ZMEMQ ,W?WALL
|
|
<SET X <GETPT ,PRSO ,P?SYNONYM>> <PTSIZE .X>>>
|
|
<TELL "Climbing the walls is to no avail." CR>)
|
|
(T
|
|
<TELL "You can't do that!" CR>)>>
|
|
|
|
<ROUTINE V-CLOSE ()
|
|
<COND (<AND <NOT <FSET? ,PRSO ,CONTBIT>>
|
|
<NOT <FSET? ,PRSO ,DOORBIT>>>
|
|
<TELL "You must tell me how to do that to " A ,PRSO "." CR>)
|
|
(<AND <NOT <FSET? ,PRSO ,SURFACEBIT>>
|
|
<NOT <EQUAL? <GETP ,PRSO ,P?CAPACITY> 0>>>
|
|
<COND (<FSET? ,PRSO ,OPENBIT>
|
|
<FCLEAR ,PRSO ,OPENBIT>
|
|
<TELL "Closed." CR>
|
|
<COND (<AND ,LIT <NOT <SETG LIT <LIT? ,HERE>>>>
|
|
<TELL "It is now pitch black." CR>)>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "It is already closed." CR>)>)
|
|
(<FSET? ,PRSO ,DOORBIT>
|
|
<COND (<FSET? ,PRSO ,OPENBIT>
|
|
<FCLEAR ,PRSO ,OPENBIT>
|
|
<TELL "The " D ,PRSO " is now closed." CR>)
|
|
(T
|
|
<TELL "It is already closed." CR>)>)
|
|
(T
|
|
<TELL "You cannot close that." CR>)>>
|
|
|
|
<ROUTINE V-COMMAND ()
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<TELL "The " D ,PRSO " pays no attention." CR>)
|
|
(T
|
|
<TELL "You cannot talk to that!" CR>)>>
|
|
|
|
<ROUTINE V-COUNT ("AUX" CNT)
|
|
<COND (<EQUAL? ,PRSO ,BLESSINGS>
|
|
<TELL "Well, for one, you are in an Infocom story..." CR>)
|
|
(<EQUAL? ,GAME-FLAG 3>
|
|
<TELL "You have ">
|
|
<COND (<==? ,PRSO ,MATCHES ,MANY-MATCHES>
|
|
<COND (<NOT <FSET? ,MATCHES ,OPENBIT>>
|
|
<TELL "a closed matchbook.">
|
|
<RTRUE>)>
|
|
<SET CNT <- ,MATCH-COUNT 1>>
|
|
<TELL N .CNT " match">
|
|
<COND (<NOT <1? .CNT>> <TELL "es.">) (ELSE <TELL ".">)>
|
|
<CRLF>)
|
|
(ELSE <TELL "a weird sense of counting!" CR>)>)
|
|
(T
|
|
<TELL "You have lost your mind." CR>)>>
|
|
|
|
<ROUTINE V-CROSS ()
|
|
<TELL "You can't cross that!" CR>>
|
|
|
|
<ROUTINE V-CURSES ()
|
|
<COND (,PRSO
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<TELL "Insults of this nature won't help you." CR>)
|
|
(T
|
|
<TELL "What a loony!" CR>)>)
|
|
(<EQUAL? ,GAME-FLAG 2>
|
|
<TELL
|
|
"Such language from an Ensign in the Stellar Patrol!" CR>)
|
|
(T
|
|
<TELL
|
|
"Such language in a high-class establishment like this!" CR>)>>
|
|
|
|
<ROUTINE V-CUT ()
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<PERFORM ,V?ATTACK ,PRSO ,PRSI>)
|
|
(<AND <FSET? ,PRSO ,BURNBIT>
|
|
<FSET? ,PRSI ,WEAPONBIT>>
|
|
<REMOVE-CAREFULLY ,PRSO>
|
|
<TELL "Your skillful " D ,PRSI "smanship slices the " D ,PRSO
|
|
" into innumerable slivers which blow away." CR>)
|
|
(<NOT <FSET? ,PRSI ,WEAPONBIT>>
|
|
<TELL
|
|
"The \"cutting edge\" of " A ,PRSI " is hardly adequate." CR>)
|
|
(T
|
|
<TELL "Strange concept, cutting the " D ,PRSO "...." CR>)>>
|
|
|
|
<ROUTINE V-DEFLATE ()
|
|
<TELL "Come on, now!" CR>>
|
|
|
|
<ROUTINE PRE-DIG ()
|
|
<COND (<OR <PRSO? ,NOT-HERE-OBJECT>
|
|
<NOT <EQUAL? ,GAME-FLAG 3>>>
|
|
<RFALSE>)
|
|
(<NOT ,PRSI>
|
|
<COND (<IN? ,SHOVEL ,WINNER>
|
|
<SETG PRSI ,SHOVEL>
|
|
<TELL "(with the shovel)" CR>)
|
|
(<IN? ,PICK-AXE ,WINNER>
|
|
<SETG PRSI ,PICK-AXE>
|
|
<TELL "(with the axe)" CR>)
|
|
(T <SETG PRSI ,HANDS>
|
|
<TELL "(with your hands)" CR>)>)>
|
|
<COND (<FSET? ,PRSI ,TOOLBIT> <RFALSE>)
|
|
(ELSE
|
|
<TELL "Digging with the " D ,PRSI " is very silly." CR>)>>
|
|
|
|
<GLOBAL THIRST 0>
|
|
|
|
<ROUTINE V-DIG-WITH ()
|
|
<PERFORM ,V?DIG ,SAND ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-HOLE-DIG ()
|
|
<COND (<NOT <EQUAL? ,PRSO ,HOLE>>
|
|
<TELL "I don't know how to dig the " D ,PRSO "." CR>)
|
|
(<EQUAL? ,PRSI ,SAND>
|
|
<PERFORM ,V?DIG ,SAND>
|
|
<RTRUE>)
|
|
(ELSE
|
|
<TELL "I can't dig in the " D ,PRSI "." CR>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-DIG ("AUX" COUNTER)
|
|
<COND (<NOT <EQUAL? ,GAME-FLAG 3>>
|
|
<COND (<NOT ,PRSI>
|
|
<SETG PRSI ,HANDS>)>
|
|
<COND (<FSET? ,PRSI ,TOOLBIT>
|
|
<TELL
|
|
"Digging with the " D ,PRSI " is slow and tedious." CR>)
|
|
(T
|
|
<TELL "Digging with " A ,PRSI " is silly." CR>)>
|
|
<RTRUE>)
|
|
(<NOT <EQUAL? ,PRSO ,SAND ,GROUND ,HOLE>>
|
|
<TELL "You can't dig in that." CR>)
|
|
(<EQUAL? ,HERE ,RIVER-BANK>
|
|
<TELL
|
|
"You dig a small hole, but it quickly fills in with water and sand, almost
|
|
immediately disappearing." CR>)
|
|
(<NOT <GETP ,HERE ,P?CAPACITY>>
|
|
<TELL "The ground is too hard here." CR>)
|
|
(<PRSI? ,HANDS>
|
|
<TELL
|
|
"I suppose you also excavate tunnels with a teaspoon?!" CR>)
|
|
(<PRSI? ,PICK-AXE>
|
|
<TELL
|
|
"Let's face it, for digging in the sand, the axe is cute but ineffective." CR>)
|
|
(T
|
|
<SET COUNTER <GETP ,HERE ,P?CAPACITY>>
|
|
<SET COUNTER <+ .COUNTER 1>>
|
|
<SETG THIRST <+ ,THIRST 4>>
|
|
<COND (<AND <G? .COUNTER 5>
|
|
<NOT <EQUAL? ,HERE ,EX2>>>
|
|
<JIGS-UP
|
|
"The walls of the hole collapse around you, smothering you in the shifting
|
|
sands.">
|
|
<RFATAL>)
|
|
(<AND <G? .COUNTER 5>
|
|
<EQUAL? ,HERE ,EX2>>
|
|
<COND (<G? .COUNTER 6>
|
|
<TELL "Enough already." CR>
|
|
<RTRUE>)>
|
|
<TELL
|
|
"You've uncovered what could only be the top of a pyramid. After clearing it
|
|
away with your hands, you notice a square opening in the top of it." CR>
|
|
<PUTP ,HERE ,P?CAPACITY 6>
|
|
<PUTP ,HERE ,P?LDESC
|
|
"You are in the desert, almost out of sight of the encampment to the west. At
|
|
last, though, you've found the ancient pyramid. The top of the pyramid is
|
|
clearly exposed and on one of its sides is a square opening.">
|
|
<FCLEAR ,ROCK-LOCK ,INVISIBLE>
|
|
<MOVE ,PYRAMID ,HERE>
|
|
<SETG SCORE <+ ,SCORE 25>>)
|
|
(T
|
|
<TELL <GET ,DIGGER-LTBL .COUNTER> CR>
|
|
<PUTP ,HERE ,P?CAPACITY .COUNTER>)>)>>
|
|
|
|
<GLOBAL DIGGER-LTBL
|
|
<LTABLE
|
|
"You've dug a small hole. As you stand there and watch it, the sand starts to
|
|
fill it in a little."
|
|
"You've enlarged the hole a little, taking out two shovelsful for every one
|
|
that collapses back in from the walls."
|
|
"You've made the hole quite sizable, though it's not very deep. The deeper you
|
|
dig, the more the walls collapse and so you widen the base of the hole."
|
|
"You're knee-deep in the hole, digging away, taking out more and more sand. You
|
|
silently curse those workers for having deserted you."
|
|
"You've dug yourself into a deep hole. You're actually several feet below the
|
|
surrounding sand. The walls look very unstable.">>
|
|
|
|
<ROUTINE V-DISEMBARK ()
|
|
<COND (<EQUAL? ,PRSO ,ROOMS>
|
|
<DO-WALK ,P?OUT>)
|
|
(<AND <FSET? ,PRSO ,WORNBIT>
|
|
<NOT <FSET? ,PRSO ,VEHBIT>>>
|
|
<V-TAKE-OFF>)
|
|
(<NOT <EQUAL? <LOC ,WINNER> ,PRSO>>
|
|
<TELL "You're not in that!" CR>
|
|
<RFATAL>)
|
|
(T
|
|
<OWN-FEET>)>>
|
|
|
|
<ROUTINE V-DISENCHANT ()
|
|
<TELL "Nothing happens." CR>>
|
|
|
|
<ROUTINE PRE-DROP ()
|
|
<COND (<EQUAL? ,PRSO <LOC ,WINNER>>
|
|
<PERFORM ,V?DISEMBARK ,PRSO>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-DROP ()
|
|
<COND (<IDROP>
|
|
<TELL "Dropped." CR>)>>
|
|
|
|
<ROUTINE V-DRINK ()
|
|
<COND (<PRE-EAT>
|
|
<RTRUE>)
|
|
(T <V-EAT>)>>
|
|
|
|
<ROUTINE PRE-EAT ()
|
|
<COND (<EQUAL? ,GAME-FLAG 2>
|
|
<RFALSE>)>
|
|
<COND (<AND <NOT <IN? ,PRSO ,WINNER>>
|
|
<FSET? ,PRSO ,FOODBIT>>
|
|
<COND (<EQUAL? <ITAKE <>> T>
|
|
<TELL "(Taken)" CR>
|
|
<RFALSE>)
|
|
(T ;"won't this result in a null response
|
|
- or will ITAKE have responded"
|
|
<RTRUE>)>)
|
|
(<AND <NOT <IN? ,PRSO ,WINNER>>
|
|
<NOT <EQUAL? ,PRSO ,ME ,WINNER ,ADVENTURER>>
|
|
<FSET? ,PRSO ,FOODBIT>>
|
|
<NOT-HOLDING ,PRSO>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-EAT ("AUX" (EAT? <>) (DRINK? <>) (NOBJ <>))
|
|
<COND (<AND <SET EAT? <FSET? ,PRSO ,FOODBIT>> <IN? ,PRSO ,WINNER>>
|
|
<COND (<VERB? DRINK> <TELL "How can you drink that?">)
|
|
(ELSE
|
|
<TELL "That really hit the spot.">
|
|
<COND (<EQUAL? ,GAME-FLAG 3>
|
|
<REMOVE ,PRSO>
|
|
<SETG THIRST <+ ,THIRST 10>>
|
|
<DISABLE <INT I-GROWL>>
|
|
<TELL
|
|
" It did make you a little thirstier, though.">
|
|
<CRLF>
|
|
<RTRUE>)>
|
|
<REMOVE-CAREFULLY ,PRSO>)>
|
|
<CRLF>)
|
|
(<SET DRINK? <FSET? ,PRSO ,DRINKBIT>>
|
|
<COND (<OR <IN? ,PRSO ,GLOBAL-OBJECTS>
|
|
<AND <SET NOBJ <LOC ,PRSO>>
|
|
<IN? .NOBJ ,WINNER>
|
|
<FSET? .NOBJ ,OPENBIT>>>
|
|
<COND (<EQUAL? ,GAME-FLAG 1>
|
|
<HIT-SPOT>
|
|
<RTRUE>)>
|
|
<TELL "You feel much refreshed.">
|
|
<COND (,SANDY-CANTEEN
|
|
<TELL
|
|
" Some sand from the bottom of the canteen is gritty in your mouth, though.">)>
|
|
<CRLF>
|
|
<SETG WATER-LEFT <- ,WATER-LEFT 10>>
|
|
<COND (<L? ,WATER-LEFT 10>
|
|
<REMOVE ,PRSO>)>
|
|
<SETG THIRST 0>)
|
|
(<AND <EQUAL? ,HERE ,RIVER-BANK>
|
|
<PRSO? ,GLOBAL-WATER>
|
|
<EQUAL? ,GAME-FLAG 3>>
|
|
<TELL
|
|
"You kneel down and drink deeply from the Nile and feel refreshed." CR>
|
|
<SETG THIRST 0>)
|
|
(T <TELL
|
|
"I'd like to oblige, but it's not within easy reach." CR>)>)
|
|
(<NOT <OR .EAT? .DRINK?>>
|
|
<TELL "I don't think that the "
|
|
D
|
|
,PRSO
|
|
" would agree with you." CR>)>>
|
|
|
|
<ROUTINE HIT-SPOT ()
|
|
<TELL
|
|
"Thank you very much. I was rather thirsty (from all this talking,
|
|
probably)." CR>
|
|
<REMOVE-CAREFULLY ,PRSO>>
|
|
|
|
<ROUTINE V-ECHO ("AUX" LST MAX (ECH 0) CNT)
|
|
#DECL ((LST) <PRIMTYPE VECTOR> (MAX CNT ECH) FIX)
|
|
<COND (<G? <GETB ,P-LEXV ,P-LEXWORDS> 0>
|
|
<SET LST <REST
|
|
,P-LEXV
|
|
<* <GETB ,P-LEXV ,P-LEXWORDS> ,P-WORDLEN>>>
|
|
<SET MAX <- <+ <GETB .LST 0> <GETB .LST 1>> 1>>
|
|
<REPEAT ()
|
|
<COND (<G? <SET ECH <+ .ECH 1>> 2>
|
|
<TELL "..." CR>
|
|
<RETURN>)
|
|
(T
|
|
<SET CNT <- <GETB .LST 1> 1>>
|
|
<REPEAT ()
|
|
<COND (<G? <SET CNT <+ .CNT 1>> .MAX>
|
|
<RETURN>)
|
|
(T
|
|
<PRINTC <GETB ,P-INBUF .CNT>>)>>
|
|
<TELL " ">)>>)
|
|
(T
|
|
<TELL "echo echo ..." CR>)>>
|
|
|
|
<ROUTINE REMOVE-CAREFULLY (OBJ "AUX" OLIT)
|
|
<COND (<EQUAL? .OBJ ,P-IT-OBJECT>
|
|
<SETG P-IT-OBJECT <>>
|
|
<SETG P-IT-LOC <>>)>
|
|
<SET OLIT ,LIT>
|
|
<REMOVE .OBJ>
|
|
<SETG LIT <LIT? ,HERE>>
|
|
<COND (<AND .OLIT <NOT <EQUAL? .OLIT ,LIT>>>
|
|
<TELL "You are left in the dark..." CR>)>
|
|
T>
|
|
|
|
<ROUTINE V-ENTER ()
|
|
<DO-WALK ,P?IN>>
|
|
|
|
<ROUTINE PRE-EXAMINE ()
|
|
<COND (<AND <NOT ,LIT>
|
|
<NOT <EQUAL? ,PRSO ,GRUE>>>
|
|
<TELL "It's too dark to see!" CR>)>>
|
|
|
|
<ROUTINE V-EXAMINE ()
|
|
<COND (<GETP ,PRSO ,P?TEXT>
|
|
<TELL <GETP ,PRSO ,P?TEXT> CR>)
|
|
(<OR <FSET? ,PRSO ,CONTBIT>
|
|
<FSET? ,PRSO ,DOORBIT>>
|
|
<V-LOOK-INSIDE>)
|
|
(T
|
|
<TELL "There's nothing special about the " D ,PRSO "." CR>)>>
|
|
|
|
<ROUTINE V-EXIT ()
|
|
<DO-WALK ,P?OUT>>
|
|
|
|
<ROUTINE V-EXORCISE ()
|
|
<TELL "What a bizarre concept!" CR>>
|
|
|
|
;<ROUTINE PRE-FILL ("AUX" T)
|
|
<COND (<AND <NOT ,PRSI> <SET T <GETPT ,HERE ,P?GLOBAL>>>
|
|
<COND (<ZMEMQB ,GLOBAL-WATER .T <- <PTSIZE .T> 1>>
|
|
<SETG PRSI ,GLOBAL-WATER>
|
|
<RFALSE>)
|
|
(<EQUAL? ,GAME-FLAG 3>
|
|
<TELL "There is nothing to fill it with.">
|
|
<COND (<GETP ,HERE ,P?VTYPE>
|
|
<TELL " Except for some sand.">)>
|
|
<CRLF>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "There is nothing to fill it with." CR>
|
|
<RTRUE>)>)>
|
|
<COND (<NOT <EQUAL? ,PRSI ,GLOBAL-WATER>>
|
|
<PERFORM ,V?PUT ,PRSI ,PRSO>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-FILL ()
|
|
<COND (<EQUAL? ,GAME-FLAG 3>
|
|
<COND (<NOT ,PRSI>
|
|
<COND (<GLOBAL-IN? ,GLOBAL-WATER ,HERE>
|
|
<PERFORM ,V?FILL ,PRSO ,GLOBAL-WATER>)
|
|
(T
|
|
<TELL "There's nothing to fill it with.">
|
|
<COND (<GETP ,HERE ,P?VTYPE>
|
|
<TELL " Except for maybe some sand.">)>
|
|
<CRLF>)>)
|
|
(<EQUAL? ,PRSI ,GLOBAL-WATER>
|
|
<COND (<OR <EQUAL? ,WATER-LEFT 40>
|
|
<IN? ,C-SAND ,PRSO>>
|
|
<TELL "It's already full." CR>)
|
|
(<NOT <FSET? ,PRSO ,CONTBIT>>
|
|
<HOW? ,PRSO>
|
|
<RTRUE>)
|
|
(<NOT <FSET? ,PRSO ,OPENBIT>>
|
|
<TELL "Tough to do when the " D ,PRSO " is closed." CR>)
|
|
(<NOT <PRSO? ,CANTEEN>>
|
|
<TELL <PICK-ONE ,YUKS> CR>)
|
|
(T
|
|
<MOVE ,WATER ,PRSO>
|
|
<COND (<EQUAL? ,HERE ,RIVER-BANK>
|
|
<SETG WATER-LEFT 40>)
|
|
(T
|
|
<SETG WATER-LEFT 0>)>
|
|
<MOVE ,CANTEEN ,PLAYER>
|
|
<TELL "Okay, you have filled the " D ,PRSO "." CR>)>)
|
|
(<EQUAL? ,PRSI ,WATER>
|
|
<PERFORM ,V?POUR-IN ,WATER ,PRSO>
|
|
<THIS-IS-IT ,PRSO>
|
|
<RTRUE>)
|
|
(T <TELL "You may know how to do that, but I don't." CR>)>)
|
|
(T
|
|
<COND (<NOT ,PRSI>
|
|
<COND (<GLOBAL-IN? ,GLOBAL-WATER ,HERE>
|
|
<PERFORM ,V?FILL ,PRSO ,GLOBAL-WATER>
|
|
<RTRUE>)
|
|
(<IN? ,WATER <LOC ,WINNER>>
|
|
<PERFORM ,V?FILL ,PRSO ,WATER>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "There's nothing to fill it with." CR>)>)
|
|
(T
|
|
<TELL
|
|
"You may know how to do that, but I don't." CR>)>)>>
|
|
|
|
<ROUTINE V-FIND ("AUX" (L <LOC ,PRSO>))
|
|
<COND (<EQUAL? ,PRSO ,HANDS ,LUNGS>
|
|
<TELL
|
|
"Within six feet of your head, assuming you haven't left that
|
|
somewhere." CR>)
|
|
(<EQUAL? ,PRSO ,ME>
|
|
<TELL "You're around here somewhere..." CR>)
|
|
(<EQUAL? .L ,GLOBAL-OBJECTS>
|
|
<TELL "You find it." CR>)
|
|
(<IN? ,PRSO ,WINNER>
|
|
<TELL "You have it." CR>)
|
|
(<IN? ,PRSO ,ENDLESS-DESERT>
|
|
<TELL "With all this sand around here? Give me a break!" CR>)
|
|
(<OR <IN? ,PRSO ,HERE>
|
|
<GLOBAL-IN? ,PRSO ,HERE>
|
|
<EQUAL? ,PRSO ,PSEUDO-OBJECT>>
|
|
<TELL "It's right here." CR>)
|
|
(<FSET? .L ,ACTORBIT>
|
|
<TELL "The " D .L " has it." CR>)
|
|
(<FSET? .L ,SURFACEBIT>
|
|
<TELL "It's on the " D .L "." CR>)
|
|
(<FSET? .L ,CONTBIT>
|
|
<TELL "It's in the " D .L "." CR>)
|
|
(T
|
|
<TELL "Beats me." CR>)>>
|
|
|
|
<ROUTINE V-FLUSH ()
|
|
<TELL "Flush " A ,PRSO "?" CR>>
|
|
|
|
<ROUTINE V-FOLLOW ()
|
|
<TELL "You're nuts!" CR>>
|
|
|
|
<ROUTINE V-FROBOZZ ()
|
|
<TELL
|
|
"The FROBOZZ Corporation created, owns, and operates this dungeon." CR>>
|
|
|
|
<ROUTINE PRE-GIVE ()
|
|
<COND (<EQUAL? ,PRSI ,PRSO>
|
|
<TELL "That's not a very useful idea." CR>)
|
|
(<AND <VERB? PUT>
|
|
<EQUAL? ,PRSO ,BUTTERFLY>>
|
|
<RFALSE>)
|
|
(<AND <VERB? PUT>
|
|
<PRSI-IN-PRSO?>>
|
|
<TELL
|
|
"But the " D ,PRSI " is in the " D ,PRSO "!" CR>)
|
|
(<AND <VERB? PUT-ON>
|
|
,LADDER-EXTENDED>
|
|
<PERFORM ,V?SPAN ,PRSO ,PRSI>
|
|
<RTRUE>)
|
|
(<FSET? ,PRSO ,WORNBIT>
|
|
<TELL "You can't while you're wearing it." CR>)
|
|
(<NOT <HELD? ,PRSO>>
|
|
<TELL
|
|
"That's easy for you to say since you don't even have the " D ,PRSO "." CR>)>>
|
|
|
|
<ROUTINE PRSI-IN-PRSO? ("AUX" OBJ)
|
|
<SET OBJ <LOC ,PRSI>>
|
|
<REPEAT ()
|
|
<COND (<NOT .OBJ> <RFALSE>)
|
|
(<EQUAL? .OBJ ,PRSO> <RTRUE>)
|
|
(T <SET OBJ <LOC .OBJ>>)>>>
|
|
|
|
<ROUTINE V-GIVE ()
|
|
<COND (<NOT <FSET? ,PRSI ,ACTORBIT>>
|
|
<TELL "You can't give " A ,PRSO " to " A ,PRSI "!" CR>)
|
|
(T
|
|
<TELL "The " D ,PRSI " refuses it politely." CR>)>>
|
|
|
|
<ROUTINE V-HATCH ()
|
|
<TELL "Bizarre!" CR>>
|
|
|
|
<GLOBAL HS 0> ;"counts occurences of HELLO, SAILOR"
|
|
|
|
<ROUTINE V-HELLO ()
|
|
<COND (,PRSO
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<TELL
|
|
"The " D ,PRSO " bows his head to you in greeting." CR>)
|
|
(T
|
|
<TELL
|
|
"It's a well known fact that only schizophrenics say \"Hello\" to a "
|
|
D ,PRSO "." CR>)>)
|
|
(T
|
|
<TELL <PICK-ONE ,HELLOS> CR>)>>
|
|
|
|
<ROUTINE V-INFLATE ()
|
|
<TELL "How can you inflate that?" CR>>
|
|
|
|
<ROUTINE V-IS-IN ()
|
|
<COND (<IN? ,PRSO ,PRSI>
|
|
<TELL "Yes, it is ">
|
|
<COND (<FSET? ,PRSI ,SURFACEBIT>
|
|
<TELL "on">)
|
|
(T
|
|
<TELL "in">)>
|
|
<TELL " the " D ,PRSI "." CR>)
|
|
(T
|
|
<TELL "No, it isn't." CR>)>>
|
|
|
|
<ROUTINE V-KICK () <HACK-HACK "Kicking the ">>
|
|
|
|
<ROUTINE V-KISS ()
|
|
<COND (<EQUAL? ,GAME-FLAG 2>
|
|
<TELL "I'd sooner kiss a pile of Antarian swamp mold." CR>)
|
|
(T
|
|
<TELL "I'd sooner kiss a pig." CR>)>>
|
|
|
|
<ROUTINE V-KNOCK ()
|
|
<COND (<FSET? ,PRSO ,DOORBIT>
|
|
<TELL "Nobody's home." CR>)
|
|
(T
|
|
<TELL "Why knock on " A ,PRSO "?" CR>)>>
|
|
|
|
<ROUTINE LIGHT-THE (OBJECT SUPPRESS?)
|
|
<FSET .OBJECT ,ONBIT>
|
|
<FSET .OBJECT ,FLAMEBIT>
|
|
<COND (<EQUAL? .OBJECT ,ONE-MATCH>
|
|
<COND (<FSET? ,MATCHES ,OPENBIT>
|
|
<COND (<PROB 10>
|
|
<TELL
|
|
"Ooops! You didn't remember to close the cover before striking! The matchbook
|
|
bursts into flames, burning your fingertips." CR>
|
|
<MOVE ,BURNED-MATCHBOOK <LOC ,MATCHES>>
|
|
<FSET ,BURNED-MATCHBOOK ,OPENBIT>
|
|
<REMOVE ,MATCHES>
|
|
<REMOVE ,MANUAL>
|
|
<REMOVE ,ONE-MATCH>
|
|
<SETG MATCH-COUNT 0>
|
|
<SET SUPPRESS? T>)>)>)>
|
|
<COND (<NOT .SUPPRESS?>
|
|
<TELL "The " D .OBJECT " is now lit." CR>)>
|
|
<COND (<NOT ,LIT>
|
|
<SETG LIT <LIT? ,HERE>>
|
|
<CRLF>
|
|
<V-LOOK>)>>
|
|
|
|
<ROUTINE V-LAMP-OFF ()
|
|
<COND (<NOT <EQUAL? ,GAME-FLAG 3>>
|
|
<COND (<FSET? ,PRSO ,LIGHTBIT>
|
|
<COND (<NOT <FSET? ,PRSO ,ONBIT>>
|
|
<TELL "It is already off." CR>)
|
|
(T
|
|
<FCLEAR ,PRSO ,ONBIT>
|
|
<COND (,LIT
|
|
<SETG LIT <LIT? ,HERE>>)>
|
|
<TELL "The " D ,PRSO " is now off." CR>
|
|
<COND (<NOT ,LIT>
|
|
<TELL "It is now pitch black." CR>)>)>)
|
|
(T
|
|
<TELL "You can't turn that off." CR>)>
|
|
<RTRUE>)
|
|
(T
|
|
<COND (<FSET? ,PRSO ,BURNBIT>
|
|
<COND (<NOT <FLAMING? ,PRSO>>
|
|
<TELL "It is already out." CR>)
|
|
(<EQUAL? ,PRSO ,MATCHES ,ONE-MATCH>
|
|
<DISABLE <INT I-MATCH-OUT>>
|
|
<I-MATCH-OUT T>
|
|
<RTRUE>)
|
|
(ELSE
|
|
<TELL "The " D ,PRSO " is now out." CR>)>)
|
|
(ELSE <TELL "You can't extinguish that." CR>)>)>>
|
|
|
|
<ROUTINE V-LAMP-ON ()
|
|
<COND (<NOT <EQUAL? ,GAME-FLAG 3>>
|
|
<COND (<FSET? ,PRSO ,LIGHTBIT>
|
|
<COND (<FSET? ,PRSO ,ONBIT>
|
|
<TELL "It is already on." CR>)
|
|
(T
|
|
<FSET ,PRSO ,ONBIT>
|
|
<TELL "The " D ,PRSO " is now on." CR>
|
|
<COND (<NOT ,LIT>
|
|
<SETG LIT <LIT? ,HERE>>
|
|
<CRLF>
|
|
<V-LOOK>)>)>)
|
|
(T
|
|
<TELL "You can't turn that on." CR>)>
|
|
<RTRUE>)
|
|
(T
|
|
<COND (<FSET? ,PRSO ,BURNBIT>
|
|
<COND (<FLAMING? ,PRSO>
|
|
<COND (<EQUAL? ,PRSO ,ONE-MATCH>
|
|
<TELL "One">)
|
|
(T <TELL "It">)>
|
|
<TELL " is already lit." CR>)
|
|
(<AND
|
|
<OR <EQUAL? ,PRSO ,MANY-MATCHES ,SINGLE-MATCH
|
|
,EMPTY-MATCHES>
|
|
<EQUAL? ,PRSO ,ONE-MATCH>>
|
|
<AND <NOT <IN? ,ONE-MATCH ,WINNER>>
|
|
<NOT <IN? ,MATCHES ,WINNER>>>>
|
|
<TELL "I see no match here." CR>
|
|
<RTRUE>)
|
|
(<OR <EQUAL? ,PRSO ,MANY-MATCHES ,SINGLE-MATCH
|
|
,EMPTY-MATCHES>
|
|
<EQUAL? ,PRSO ,ONE-MATCH>>
|
|
<COND (<L? ,MATCH-COUNT 1>
|
|
<TELL
|
|
"That's a little tough to do with an empty book of matches." CR>
|
|
<RTRUE>)
|
|
(T
|
|
<COND (<NOT <IN? ,ONE-MATCH ,WINNER>>
|
|
<MATCH-MOVER>)>
|
|
<TELL "You have now lit a match." CR>
|
|
<LIGHT-THE ,ONE-MATCH T>
|
|
<COND (<LOC ,MATCHES> ;"book didn't burn"
|
|
<ENABLE <QUEUE I-MATCH-OUT 3>>)>)>)
|
|
(ELSE
|
|
<HOW? ,PRSO>)>)
|
|
(T
|
|
<TELL "You can't light that." CR>)>)>>
|
|
|
|
<ROUTINE V-LAUNCH ()
|
|
<COND (<FSET? ,PRSO ,VEHBIT>
|
|
<TELL "You can't launch that by saying \"launch\"!" CR>)
|
|
(T
|
|
<TELL "That's pretty weird." CR>)>>
|
|
|
|
<ROUTINE V-LEAN-ON ()
|
|
<TELL "Getting tired?" CR>>
|
|
|
|
<ROUTINE V-LEAP ("AUX" T S)
|
|
<COND (,PRSO
|
|
<COND (<IN? ,PRSO ,HERE>
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<TELL
|
|
"The " D ,PRSO " is too big to jump over." CR>)
|
|
(T
|
|
<V-SKIP>)>)
|
|
(T
|
|
<TELL "That would be a good trick." CR>)>)
|
|
(<SET T <GETPT ,HERE ,P?DOWN>>
|
|
<SET S <PTSIZE .T>>
|
|
<COND (<OR <EQUAL? .S 2> ;NEXIT
|
|
<AND <EQUAL? .S 4> ;CEXIT
|
|
<NOT <VALUE <GETB .T 1>>>>>
|
|
<TELL
|
|
"This was not a very safe place to try jumping." CR>
|
|
<JIGS-UP <PICK-ONE ,JUMPLOSS>>)
|
|
(<EQUAL? ,HERE ,UP-A-TREE>
|
|
<TELL
|
|
"In a feat of unaccustomed daring, you manage to land on your feet without
|
|
killing yourself." CR CR>
|
|
<DO-WALK ,P?DOWN>
|
|
<RTRUE>)
|
|
(T
|
|
<V-SKIP>)>)
|
|
(T
|
|
<V-SKIP>)>>
|
|
|
|
<GLOBAL JUMPLOSS
|
|
<LTABLE 0
|
|
"You should have looked before you leaped."
|
|
"In the movies, your life would be passing before your eyes."
|
|
"Geronimo...">>
|
|
|
|
<ROUTINE V-LEAVE ()
|
|
<DO-WALK ,P?OUT>>
|
|
|
|
<ROUTINE V-LISTEN ()
|
|
<TELL "The " D ,PRSO " makes no sound." CR>>
|
|
|
|
<ROUTINE V-LOCK ()
|
|
<TELL "It doesn't seem to work." CR>>
|
|
|
|
<ROUTINE V-LOOK ()
|
|
<COND (<DESCRIBE-ROOM T>
|
|
<DESCRIBE-OBJECTS T>)>>
|
|
|
|
<ROUTINE V-LOOK-BEHIND ()
|
|
<TELL "There is nothing behind the " D ,PRSO "." CR>>
|
|
|
|
<ROUTINE V-LOOK-INSIDE ()
|
|
<COND (<FSET? ,PRSO ,DOORBIT>
|
|
<COND (<FSET? ,PRSO ,OPENBIT>
|
|
<TELL
|
|
"The " D ,PRSO " is open, but I can't tell what's beyond it.">)
|
|
(T
|
|
<TELL "The " D ,PRSO " is closed.">)>
|
|
<CRLF>)
|
|
(<FSET? ,PRSO ,CONTBIT>
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<TELL "There is nothing special to be seen." CR>)
|
|
(<SEE-INSIDE? ,PRSO>
|
|
<COND (<AND <FIRST? ,PRSO>
|
|
<PRINT-CONT ,PRSO>>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "The " D ,PRSO " is ">
|
|
<COND (<FIRST? ,PRSO>
|
|
<TELL "otherwise ">)>
|
|
<TELL "empty." CR>)>)
|
|
(T
|
|
<TELL "The " D ,PRSO " is closed." CR>)>)
|
|
(T
|
|
<TELL "You can't look inside " A ,PRSO "." CR>)>>
|
|
|
|
<ROUTINE PRE-LOOK-ON ()
|
|
<COND (<EQUAL? ,GAME-FLAG 2>
|
|
<PERFORM ,V?EXAMINE ,PRSO>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-LOOK-ON ()
|
|
<COND (<FSET? ,PRSO ,SURFACEBIT>
|
|
<PERFORM ,V?LOOK-INSIDE ,PRSO>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "Look on " A ,PRSO "???" CR>)>>
|
|
|
|
<ROUTINE V-LOOK-UNDER ()
|
|
<TELL "There is nothing but dust there." CR>>
|
|
|
|
<ROUTINE V-LOWER () <HACK-HACK "Playing in this way with the ">>
|
|
|
|
<ROUTINE V-MAKE ()
|
|
<TELL "You can't do that." CR>>
|
|
|
|
<ROUTINE V-MELT ()
|
|
<TELL "It's not clear that " A ,PRSO " can be melted." CR>>
|
|
|
|
<ROUTINE PRE-MOVE ()
|
|
<COND (<HELD? ,PRSO>
|
|
<TELL "You aren't an accomplished enough juggler." CR>)>>
|
|
|
|
<ROUTINE V-MOVE ()
|
|
<COND (<FSET? ,PRSO ,TAKEBIT>
|
|
<TELL "Moving the " D ,PRSO " reveals nothing." CR>)
|
|
(T
|
|
<TELL "You can't move the " D ,PRSO "." CR>)>>
|
|
|
|
<ROUTINE V-MUMBLE ()
|
|
<TELL "You'll have to speak up if you expect me to hear you!" CR>>
|
|
|
|
<ROUTINE PRE-MUNG ()
|
|
<COND (<PRSO? ,LOCK ,CRATE ,BLACK-BOX>
|
|
<RFALSE>)
|
|
(<OR <NOT ,PRSI>
|
|
<NOT <FSET? ,PRSI ,WEAPONBIT>>>
|
|
<TELL "Trying to destroy the " D ,PRSO " with ">
|
|
<COND (<NOT ,PRSI>
|
|
<TELL "your bare hands">)
|
|
(T
|
|
<TELL A ,PRSI>)>
|
|
<TELL " is futile." CR>)>>
|
|
|
|
<ROUTINE V-MUNG ()
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<PERFORM ,V?ATTACK ,PRSO>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "Nice try." CR>)>>
|
|
|
|
<ROUTINE V-ODYSSEUS ()
|
|
<TELL "Wasn't he a sailor?" CR>>
|
|
|
|
;<ROUTINE V-OIL ()
|
|
<TELL "You probably put spinach in your gas tank, too." CR>>
|
|
|
|
<ROUTINE V-OIL ()
|
|
<COND (<NOT ,PRSI>
|
|
<COND (<IN? ,OIL-CAN ,ADVENTURER>
|
|
<PERFORM ,V?OIL ,PRSO ,OIL-CAN>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "Oil the " D ,PRSO " with what?" CR>)>)
|
|
(<EQUAL? ,PRSI ,OIL-CAN>
|
|
<COND (<AND <EQUAL? ,PRSO ,FLOYD>
|
|
<FSET? ,FLOYD ,RLANDBIT>>
|
|
<TELL
|
|
"Floyd thanks you for your thoughtfulness." CR>)
|
|
(T
|
|
<TELL
|
|
"The " D, PRSO " doesn't need oiling." CR>)>)
|
|
(T
|
|
<TELL "You can't use " A ,PRSI " as an oil can!" CR>)>>
|
|
|
|
<ROUTINE V-OPEN ("AUX" F STR)
|
|
<COND (<AND <FSET? ,PRSO ,CONTBIT>
|
|
<NOT <EQUAL? <GETP ,PRSO ,P?CAPACITY> 0>>>
|
|
<COND (<FSET? ,PRSO ,OPENBIT>
|
|
<TELL "It is already open." CR>)
|
|
(T
|
|
<FSET ,PRSO ,OPENBIT>
|
|
<FSET ,PRSO ,TOUCHBIT>
|
|
<COND (<OR <NOT <FIRST? ,PRSO>> <FSET? ,PRSO ,TRANSBIT>>
|
|
<TELL "Opened." CR>)
|
|
(<AND <SET F <FIRST? ,PRSO>>
|
|
<NOT <NEXT? .F>>
|
|
<NOT <FSET? .F ,TOUCHBIT>>
|
|
<SET STR <GETP .F ,P?FDESC>>>
|
|
<TELL "The " D ,PRSO " opens." CR>
|
|
<TELL .STR CR>)
|
|
(T
|
|
<TELL "Opening the " D ,PRSO " reveals ">
|
|
<PRINT-CONTENTS ,PRSO>
|
|
<TELL "." CR>)>)>)
|
|
(<FSET? ,PRSO ,DOORBIT>
|
|
<COND (<FSET? ,PRSO ,OPENBIT>
|
|
<TELL "It is already open." CR>)
|
|
(T
|
|
<TELL "The " D ,PRSO " opens." CR>
|
|
<FSET ,PRSO ,OPENBIT>)>)
|
|
(T
|
|
<TELL
|
|
"You must tell me how to do that to " A ,PRSO "." CR>)>>
|
|
|
|
<ROUTINE V-OVERBOARD ("AUX" LOCN)
|
|
<COND (<EQUAL? ,PRSI ,TEETH>
|
|
<COND (<FSET? <SET LOCN <LOC ,WINNER>> ,VEHBIT>
|
|
<MOVE ,PRSO <LOC .LOCN>>
|
|
<TELL "Ahoy -- " D ,PRSO " overboard!" CR>)
|
|
(T
|
|
<TELL "You're not in anything!" CR>)>)
|
|
(T
|
|
<TELL "Huh?" CR>)>>
|
|
|
|
<ROUTINE V-PICK () <TELL "You can't pick that." CR>>
|
|
|
|
<ROUTINE V-PLAY ()
|
|
<TELL "That's silly!" CR>>
|
|
|
|
<ROUTINE V-PLAY-WITH ()
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<PERFORM ,V?PLAY ,GLOBAL-GAMES>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "I sometimes wonder about your mental health." CR>)>>
|
|
|
|
<ROUTINE V-PLUG ()
|
|
<TELL "This has no effect." CR>>
|
|
|
|
<ROUTINE V-POUR ()
|
|
<COND (<EQUAL? ,GAME-FLAG 2>
|
|
<TELL
|
|
"Pouring or spilling non-liquids is specifically forbidden by
|
|
section 17.9.2 of the Galactic Adventure Game Compendium of Rules." CR>)
|
|
(<EQUAL? ,GAME-FLAG 3>
|
|
<COND (<NOT <EQUAL? ,PRSO ,WATER ,C-SAND>>
|
|
<TELL "You can't pour that." CR>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "Poured." CR>
|
|
<COND (<EQUAL? ,PRSO ,C-SAND>
|
|
<SETG SAND-FILLED <>>
|
|
<REMOVE ,C-SAND>)
|
|
(T
|
|
<REMOVE ,WATER>
|
|
<SETG WATER-LEFT 0>)>)>)
|
|
(T
|
|
<PERFORM ,V?DROP ,PRSO>
|
|
<RTRUE>)>>
|
|
|
|
;<ROUTINE PRE-POUR-ON ("AUX" LIQ) ;"not referenced, removed 2/27/85 by SEM"
|
|
<COND (<OR <NOT <EQUAL? ,GAME-FLAG 3>>
|
|
<EQUAL? ,PRSO ,NOT-HERE-OBJECT>>
|
|
<RFALSE>)
|
|
(<EQUAL? ,PRSO ,WATER ,C-SAND>
|
|
<SET LIQ ,PRSO>
|
|
<COND (<NOT <FSET? <LOC .LIQ> ,OPENBIT>>
|
|
<TELL "You'd better open the " D <LOC .LIQ> " first."
|
|
CR>
|
|
<RTRUE>)
|
|
(<FLAMING? ,PRSI>
|
|
<TELL "Poured." CR>
|
|
<COND (,LIT
|
|
<SETG LIT <LIT? ,HERE>>)>
|
|
<COND (<NOT <SETG LIT <LIT? ,HERE>>>
|
|
<TELL " It is now pitch black.">)>
|
|
<COND (<EQUAL? .LIQ ,WATER>
|
|
<SETG WATER-LEFT <- ,WATER-LEFT 10>>
|
|
<COND (<L? ,WATER-LEFT 10>
|
|
<REMOVE ,WATER>)>)
|
|
(T
|
|
<SETG SAND-FILLED <>>
|
|
<REMOVE ,C-SAND>)>
|
|
<FCLEAR ,PRSI ,FLAMEBIT>
|
|
<FCLEAR ,PRSI ,ONBIT>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "Poured." CR>
|
|
<COND (<EQUAL? .LIQ ,WATER>
|
|
<SETG WATER-LEFT <- ,WATER-LEFT 10>>
|
|
<COND (<L? ,WATER-LEFT 10>
|
|
<REMOVE ,WATER>)>
|
|
<TELL "The " D ,PRSI
|
|
" gets wet, but quickly dries." CR>)
|
|
(T
|
|
<COND (<GETP ,HERE ,P?VTYPE>
|
|
<TELL "The sand is gone with the wind." CR>)
|
|
(T <TELL
|
|
"The sand falls through the cracks in the stone floor." CR>)>
|
|
<SETG SAND-FILLED <>>)>
|
|
<RTRUE>)>)>>
|
|
|
|
<ROUTINE V-POUR-ON ()
|
|
<COND (<EQUAL? ,PRSO ,WATER>
|
|
<REMOVE ,PRSO>
|
|
<SETG WATER-LEFT 0>
|
|
<COND (<FLAMING? ,PRSI>
|
|
<TELL "The " D ,PRSI " is extinguished." CR>
|
|
<FCLEAR ,PRSI ,ONBIT>
|
|
<FCLEAR ,PRSI ,FLAMEBIT>)
|
|
(T
|
|
<TELL
|
|
"The water spills over the " D ,PRSI " and evaporates." CR>)>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "You can't pour that." CR>)>>
|
|
|
|
<ROUTINE V-POUR-IN ("AUX" L)
|
|
<COND (<NOT <EQUAL? ,GAME-FLAG 3>>
|
|
<PERFORM ,V?DROP ,PRSO ,PRSI>
|
|
<RTRUE>)
|
|
(<NOT <EQUAL? ,PRSO ,WATER ,C-SAND>>
|
|
<TELL "You can't pour that into anything." CR><RTRUE>)
|
|
(<NOT <FSET? ,PRSI ,CONTBIT>>
|
|
<TELL "You'd have a lot of trouble pouring the " D ,PRSO
|
|
" into the " D ,PRSI "." CR>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "Why bother?" CR>)>>
|
|
|
|
<ROUTINE V-PRAY ()
|
|
<TELL
|
|
"If you pray enough, your prayers may be answered." CR>>
|
|
|
|
<ROUTINE V-PUMP ()
|
|
<TELL "It's really not clear how." CR>>
|
|
|
|
<ROUTINE V-PUSH () <HACK-HACK "Pushing the ">>
|
|
|
|
<ROUTINE V-PUSH-TO ()
|
|
<TELL "You can't push things to that." CR>>
|
|
|
|
<ROUTINE V-PUSH-UP () <HACK-HACK "Pushing up the ">>
|
|
|
|
<ROUTINE V-PUSH-DOWN () <HACK-HACK "Pushing down the ">>
|
|
|
|
<ROUTINE PRE-PUT ()
|
|
<PRE-GIVE>> ;"That's easy for you to say..."
|
|
|
|
<ROUTINE V-PUT ()
|
|
<COND (<OR <FSET? ,PRSI ,OPENBIT>
|
|
<OPENABLE? ,PRSI>
|
|
<FSET? ,PRSI ,VEHBIT>>)
|
|
(T
|
|
<TELL "You can't do that." CR>
|
|
<RTRUE>)>
|
|
<COND (<NOT <FSET? ,PRSI ,OPENBIT>>
|
|
<TELL "The " D ,PRSI " isn't open." CR>
|
|
<THIS-IS-IT ,PRSI>)
|
|
(<EQUAL? ,PRSI ,PRSO>
|
|
<TELL "How can you do that?" CR>)
|
|
(<IN? ,PRSO ,PRSI>
|
|
<TELL "The " D ,PRSO " is already in the " D ,PRSI "." CR>)
|
|
(<G? <- <+ <WEIGHT ,PRSI> <WEIGHT ,PRSO>>
|
|
<GETP ,PRSI ,P?SIZE>>
|
|
<GETP ,PRSI ,P?CAPACITY>>
|
|
<TELL "There's no room." CR>)
|
|
(<AND <NOT <HELD? ,PRSO>>
|
|
<FSET? ,PRSO ,TRYTAKEBIT>>
|
|
<TELL "You don't have the " D ,PRSO "." CR>
|
|
<RTRUE>)
|
|
(<AND <NOT <HELD? ,PRSO>>
|
|
<EQUAL? <ITAKE> <> ,M-FATAL>>
|
|
<RTRUE>)
|
|
(T
|
|
<MOVE ,PRSO ,PRSI>
|
|
<FSET ,PRSO ,TOUCHBIT>
|
|
<SCORE-OBJ ,PRSO>
|
|
<TELL "Done." CR>)>>
|
|
|
|
<ROUTINE V-PUT-BEHIND ()
|
|
<TELL "That hiding place is too obvious." CR>>
|
|
|
|
<ROUTINE V-PUT-ON ()
|
|
<COND (<EQUAL? ,PRSI ,GROUND>
|
|
<PERFORM ,V?DROP ,PRSO>
|
|
<RTRUE>)
|
|
(<FSET? ,PRSI ,SURFACEBIT>
|
|
<V-PUT>)
|
|
(<OR <FSET? ,PRSI ,OPENBIT>
|
|
<OPENABLE? ,PRSI>
|
|
<FSET? ,PRSI ,VEHBIT>>
|
|
<TELL "You can't do that." CR>)
|
|
(T
|
|
<TELL "There's no good surface on the " D ,PRSI "." CR>)>>
|
|
|
|
<ROUTINE V-PUT-UNDER ()
|
|
<TELL "You can't do that." CR>>
|
|
|
|
<ROUTINE V-RAISE ()
|
|
<V-LOWER>>
|
|
|
|
<ROUTINE V-RAPE ()
|
|
<TELL "What a (ahem!) strange idea." CR>>
|
|
|
|
<ROUTINE V-REACH ()
|
|
<COND (<FIRST? ,PRSO>
|
|
<TELL "There is something">)
|
|
(T
|
|
<TELL "There is nothing">)>
|
|
<TELL " inside the " D ,PRSO "." CR>>
|
|
|
|
<ROUTINE PRE-READ ()
|
|
<COND (<NOT ,LIT>
|
|
<TELL "It is impossible to read in the dark." CR>)
|
|
(<AND ,PRSI <NOT <FSET? ,PRSI ,TRANSBIT>>>
|
|
<TELL "How does one look through " A ,PRSI "?" CR>)>>
|
|
|
|
<ROUTINE V-READ ()
|
|
<COND (<NOT <FSET? ,PRSO ,READBIT>>
|
|
<TELL "How does one read " A ,PRSO "?" CR>)
|
|
(T
|
|
<TELL <GETP ,PRSO ,P?TEXT> CR>)>>
|
|
|
|
<ROUTINE V-READ-PAGE ()
|
|
<PERFORM ,V?READ ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-REPENT ()
|
|
<TELL "It could very well be too late!" CR>>
|
|
|
|
<ROUTINE V-REPLY ()
|
|
<TELL "It is hardly likely that the " D ,PRSO " is interested." CR>
|
|
<SETG P-CONT <>>
|
|
<SETG QUOTE-FLAG <>>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-RING ()
|
|
<TELL "How, exactly, can you ring that?" CR>>
|
|
|
|
<ROUTINE V-RUB () <HACK-HACK "Fiddling with the ">>
|
|
|
|
<ROUTINE V-SAY ("AUX" V)
|
|
<COND (<NOT <EQUAL? ,GAME-FLAG 2>>
|
|
<PROG ()
|
|
<COND (<NOT ,P-CONT>
|
|
<TELL "Say what?" CR>
|
|
<RTRUE>)
|
|
(T
|
|
<SETG QUOTE-FLAG <>>
|
|
<RTRUE>)>>)>
|
|
<COND (<SET V <FIND-IN ,HERE ,ACTORBIT>>
|
|
<TELL "You must address the " D .V " directly." CR>
|
|
<SETG QUOTE-FLAG <>>
|
|
<SETG P-CONT <>>)
|
|
(<EQUAL? <GET ,P-LEXV ,P-CONT> ,W?HELLO>
|
|
<SETG QUOTE-FLAG <>>
|
|
<RTRUE>)
|
|
(T
|
|
<SETG QUOTE-FLAG <>>
|
|
<SETG P-CONT <>>
|
|
<PERFORM ,V?TELL ,ME>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-SCOLD ()
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<PERFORM ,V?TELL ,PRSO>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL
|
|
"For some reason, the " D, PRSO " doesn't seem too chagrined." CR>)>>
|
|
|
|
<ROUTINE V-SEARCH ()
|
|
<TELL "You find nothing unusual." CR>>
|
|
|
|
<ROUTINE V-SEND ()
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<TELL "Why would you send for the " D ,PRSO "?" CR>)
|
|
(T
|
|
<TELL "That doesn't make sends." CR>)>>
|
|
|
|
<ROUTINE PRE-SGIVE ()
|
|
<PERFORM ,V?GIVE ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE V-SGIVE ()
|
|
<TELL "Foo!" CR>>
|
|
|
|
<ROUTINE V-SHAKE ()
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<TELL "This seems to have no effect." CR>)
|
|
(<NOT <FSET? ,PRSO ,TAKEBIT>>
|
|
<TELL "You can't take it; thus, you can't shake it!" CR>)
|
|
(<FSET? ,PRSO ,CONTBIT>
|
|
<COND (<FSET? ,PRSO ,OPENBIT>
|
|
<COND (<AND <EQUAL? ,PRSO ,FOOD-KIT>
|
|
<OR <IN? ,RED-GOO ,FOOD-KIT>
|
|
<IN? ,GREEN-GOO ,FOOD-KIT>
|
|
<IN? ,BROWN-GOO ,FOOD-KIT>>>
|
|
<REMOVE ,RED-GOO>
|
|
<REMOVE ,GREEN-GOO>
|
|
<REMOVE ,BROWN-GOO>
|
|
<TELL
|
|
"Colored goo flies all over everything. Yechh!" CR>)
|
|
(<FIRST? ,PRSO>
|
|
<SHAKE-LOOP>
|
|
<TELL "The contents of the " D, PRSO " spills ">
|
|
<COND (<NOT <FSET? ,HERE ,RLANDBIT>>
|
|
<TELL "out and disappears">)
|
|
(T
|
|
<TELL "to the ground">)>
|
|
<TELL "." CR>)
|
|
(T
|
|
<TELL "Shaken." CR>)>)
|
|
(T
|
|
<COND (<FIRST? ,PRSO>
|
|
<TELL
|
|
"It sounds like there is something inside the " D ,PRSO "." CR>)
|
|
(T
|
|
<TELL "The " D, PRSO " sounds empty." CR>)>)>)
|
|
(T
|
|
<TELL "Shaken." CR>)>>
|
|
|
|
<ROUTINE SHAKE-LOOP ("AUX" X)
|
|
<REPEAT ()
|
|
<COND (<SET X <FIRST? ,PRSO>>
|
|
<FSET .X ,TOUCHBIT>
|
|
<MOVE .X
|
|
<COND (<EQUAL? ,HERE ,UP-A-TREE>
|
|
,PATH)
|
|
(<NOT <FSET? ,HERE ,RLANDBIT>>
|
|
,PSEUDO-OBJECT)
|
|
(T
|
|
,HERE)>>)
|
|
(T
|
|
<RETURN>)>>>
|
|
|
|
<ROUTINE V-SHOW ()
|
|
<COND (<NOT <HELD? ,PRSO>>
|
|
<NOT-HOLDING ,PRSO>)
|
|
(<EQUAL? ,PRSI ,ME>
|
|
<PERFORM ,V?EXAMINE ,PRSO>
|
|
<RTRUE>)
|
|
(<FSET? ,PRSI ,ACTORBIT>
|
|
<TELL
|
|
"The " D ,PRSI " looks at the " D ,PRSO "." CR>)
|
|
(T
|
|
<TELL
|
|
"Why would you want to show something to " A ,PRSO "?" CR>)>>
|
|
|
|
<ROUTINE V-SIT ()
|
|
<COND (<EQUAL? ,GAME-FLAG 3>
|
|
<TELL "No lying around on the job." CR>)
|
|
(T
|
|
<SETG C-ELAPSED 31>
|
|
<TELL
|
|
"You recline on the floor for a bit, and then stand up again." CR>)>>
|
|
|
|
<ROUTINE V-SIT-DOWN ()
|
|
<COND (<EQUAL? ,PRSO ,ROOMS>
|
|
<PERFORM ,V?SIT>
|
|
<RTRUE>)
|
|
(T
|
|
<PERFORM ,V?BOARD ,PRSO>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-SKIP ()
|
|
<TELL <PICK-ONE ,WHEEEEE> CR>>
|
|
|
|
<GLOBAL WHEEEEE
|
|
<LTABLE 0 "Very good. Now you can go to the second grade."
|
|
"Are you enjoying yourself?"
|
|
"Wheeeeeeeeee!!!!!"
|
|
"Do you expect me to applaud?">>
|
|
|
|
<ROUTINE V-SMELL ()
|
|
<TELL "It smells like " A ,PRSO "." CR>>
|
|
|
|
<ROUTINE V-SPAN ()
|
|
<TELL "You can't." CR>>
|
|
|
|
<ROUTINE V-SPIN ()
|
|
<TELL "You can't spin that!" CR>>
|
|
|
|
<ROUTINE V-SPRAY ()
|
|
<V-SQUEEZE>>
|
|
|
|
<ROUTINE V-SQUEEZE ()
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<TELL "The " D ,PRSO " does not understand this.">)
|
|
(T
|
|
<TELL "How singularly useless.">)>
|
|
<CRLF>>
|
|
|
|
<ROUTINE V-SSPRAY ()
|
|
<PERFORM ,V?SPRAY ,PRSI ,PRSO>>
|
|
|
|
<ROUTINE V-STAB ("AUX" W)
|
|
<COND (<SET W <FIND-WEAPON ,WINNER>>
|
|
<PERFORM ,V?ATTACK ,PRSO .W>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL
|
|
"No doubt you propose to stab the " D ,PRSO " with your pinky?" CR>)>>
|
|
|
|
<ROUTINE V-STAND ()
|
|
<COND (<FSET? <LOC ,WINNER> ,VEHBIT>
|
|
<PERFORM ,V?DISEMBARK <LOC ,WINNER>>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "You are already standing, I think." CR>)>>
|
|
|
|
<ROUTINE V-STAY ()
|
|
<TELL "You will be lost without me!" CR>>
|
|
|
|
<ROUTINE V-STRIKE ()
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<TELL
|
|
"Since you aren't versed in hand-to-hand combat, you'd better attack the "
|
|
D ,PRSO " with a weapon." CR>)
|
|
(T
|
|
<PERFORM ,V?LAMP-ON ,PRSO>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-SWIM ()
|
|
<COND (<EQUAL? ,HERE ,RIVER-BANK>
|
|
<JIGS-UP .CROC-STR>
|
|
<RFATAL>)
|
|
(<GLOBAL-IN? ,GLOBAL-WATER ,HERE>
|
|
<TELL "Swimming isn't usually allowed in the ">
|
|
<COND (,PRSO
|
|
<TELL D ,PRSO ".">)
|
|
(T
|
|
<TELL "dungeon.">)>
|
|
<CRLF>)
|
|
(T
|
|
<TELL "Go jump in a lake!" CR>)>>
|
|
|
|
<ROUTINE V-SWING ()
|
|
<COND (<NOT ,PRSI>
|
|
<TELL "Whoosh!" CR>)
|
|
(T
|
|
<PERFORM ,V?ATTACK ,PRSI ,PRSO>)>>
|
|
|
|
<ROUTINE PRE-TAKE ()
|
|
<COND (<EQUAL? ,GAME-FLAG 3>
|
|
<COND (<PRSO? ,NOT-HERE-OBJECT>
|
|
<RFALSE>)>
|
|
<COND (<IN? ,PRSO ,WINNER>
|
|
<COND (<FSET? ,PRSO ,WEARBIT>
|
|
<COND (<EQUAL? ,PRSO ,KNAPSACK>
|
|
<RFALSE>)
|
|
(T
|
|
<TELL "You are already wearing it." CR>)>)
|
|
(<EQUAL? ,PRSO ,ONE-MATCH>
|
|
<TELL "You already have one. One at a time, now!" CR>)
|
|
(T <TELL "You already have it." CR>)>)
|
|
(<AND <FSET? <LOC ,PRSO> ,CONTBIT>
|
|
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
|
|
<TELL "You can't reach that." CR>
|
|
<RTRUE>)
|
|
(,PRSI
|
|
<COND (<NOT <==? ,PRSI <LOC ,PRSO>>>
|
|
<COND (<AND <EQUAL? ,PRSO ,NOT-HERE-OBJECT>
|
|
<FSET? ,PRSI ,CONTBIT>
|
|
<NOT <FSET? ,PRSI ,OPENBIT>>>
|
|
<TELL "You'd better open the " D ,PRSI
|
|
" first." CR>
|
|
<THIS-IS-IT ,PRSI>
|
|
<RTRUE>)
|
|
(<EQUAL? ,PRSO ,LOCK>
|
|
<RFALSE>)
|
|
(<AND <EQUAL? ,PRSO ,SHOVEL>
|
|
<EQUAL? ,PRSI ,SAND>>
|
|
<SETG PRSI <>>
|
|
<RFALSE>)
|
|
(ELSE
|
|
<TELL "The " D ,PRSO
|
|
" isn't in the " D ,PRSI "." CR>)>)
|
|
(T
|
|
<SETG PRSI <>>
|
|
<RFALSE>)>)
|
|
(<==? ,PRSO <LOC ,WINNER>> <TELL "You are in it, loser!" CR>)>)
|
|
(<EQUAL? ,GAME-FLAG 1>
|
|
<COND (<IN? ,PRSO ,WINNER>
|
|
<COND (<FSET? ,PRSO ,WEARBIT>
|
|
<TELL "You are already wearing it." CR>)
|
|
(T
|
|
<TELL "You already have that!" CR>)>)
|
|
(<AND <FSET? <LOC ,PRSO> ,CONTBIT>
|
|
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
|
|
<TELL
|
|
"You can't reach something that's inside a closed container." CR>
|
|
<RTRUE>)
|
|
(,PRSI
|
|
<COND (<EQUAL? ,PRSI ,GROUND>
|
|
<SETG PRSI <>>
|
|
<RFALSE>)
|
|
(<NOT <EQUAL? ,PRSI <LOC ,PRSO>>>
|
|
<TELL
|
|
"The " D ,PRSO " isn't in the " D ,PRSI "." CR>)
|
|
(T
|
|
<SETG PRSI <>>
|
|
<RFALSE>)>)
|
|
(<EQUAL? ,PRSO <LOC ,WINNER>>
|
|
<TELL "You're inside of it!" CR>)>)
|
|
(T
|
|
<COND (<IN? ,PRSO ,ADVENTURER>
|
|
<TELL "You already have it." CR>)
|
|
(<AND <FSET? <LOC ,PRSO> ,CONTBIT>
|
|
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
|
|
<TELL "You can't reach into a closed container." CR>
|
|
<RTRUE>)
|
|
(,PRSI
|
|
<COND (<NOT <EQUAL? ,PRSI <LOC ,PRSO>>>
|
|
<TELL "It's not in that!" CR>)
|
|
(T
|
|
<SETG PRSI <>>
|
|
<RFALSE>)>)
|
|
(<==? ,PRSO <LOC ,WINNER>>
|
|
<TELL "You are in it, asteroid-brain!" CR>)>)>>
|
|
|
|
<ROUTINE V-TAKE ("AUX" V)
|
|
<COND (<SET V <ITAKE>>
|
|
<COND (<EQUAL? .V ,M-FATAL>
|
|
<RTRUE>)
|
|
(<AND <FSET? ,PRSO ,WEARBIT>
|
|
<NOT <EQUAL? ,GAME-FLAG 2>>>
|
|
<TELL "You are now wearing the " D ,PRSO "." CR>)
|
|
(T
|
|
<TELL "Taken." CR>)>)>>
|
|
|
|
<ROUTINE V-TELL ()
|
|
<COND (<FSET? ,PRSO ,ACTORBIT>
|
|
<COND (,P-CONT
|
|
<SETG WINNER ,PRSO>
|
|
<SETG HERE <LOC ,WINNER>>)
|
|
(T
|
|
<TELL
|
|
"The " D ,PRSO " pauses for a moment, perhaps thinking that you should re-read
|
|
the instructions." CR>)>)
|
|
(<NOT <EQUAL? ,GAME-FLAG 2>>
|
|
<TELL "You can't talk to the " D ,PRSO "!" CR>
|
|
<SETG QUOTE-FLAG <>>
|
|
<SETG P-CONT <>>
|
|
<RFATAL>)
|
|
(T
|
|
<TELL
|
|
"Talking to " A ,PRSO "? Dr. Quarnsboggle, the Feinstein's
|
|
psychiatrist, would have been fascinated to hear that." CR>
|
|
<SETG QUOTE-FLAG <>>
|
|
<SETG P-CONT <>>
|
|
<RFATAL>)>>
|
|
|
|
<ROUTINE V-THROUGH ("OPTIONAL" (OBJ <>) "AUX" M)
|
|
#DECL ((OBJ) <OR OBJECT FALSE> (M) <PRIMTYPE VECTOR>)
|
|
<COND (<FSET? ,PRSO ,DOORBIT>
|
|
<DO-WALK <OTHER-SIDE ,PRSO>>
|
|
<RTRUE>)
|
|
(<AND <NOT .OBJ> <FSET? ,PRSO ,VEHBIT>>
|
|
<PERFORM ,V?BOARD ,PRSO>
|
|
<RTRUE>)
|
|
(<EQUAL? ,PRSO ,GLOBAL-WATER>
|
|
<PERFORM ,V?SWIM>
|
|
<RTRUE>)
|
|
(<AND <NOT .OBJ> <NOT <FSET? ,PRSO ,TAKEBIT>>>
|
|
<TELL
|
|
"You hit your head against the " D ,PRSO " as you attempt this feat." CR>)
|
|
(.OBJ
|
|
<TELL "You can't do that!" CR>)
|
|
(<IN? ,PRSO ,WINNER>
|
|
<TELL "That would involve quite a contortion!" CR>)
|
|
(T
|
|
<TELL <PICK-ONE ,YUKS> CR>)>>
|
|
|
|
<ROUTINE V-THROW ()
|
|
<COND (<IDROP>
|
|
<COND (<EQUAL? ,PRSI ,ME>
|
|
<TELL
|
|
"A terrific throw! The " D ,PRSO>
|
|
<JIGS-UP " hits you squarely in the head. Normally,
|
|
this wouldn't do much damage, but by incredible mischance, you fall over
|
|
backwards trying to duck, and break your neck, justice being swift and
|
|
merciful in this genre.">)
|
|
(<FSET? ,PRSI ,ACTORBIT>
|
|
<TELL
|
|
"The " D ,PRSI " has the presence of mind to duck as the " D ,PRSO " flies by
|
|
and crashes to the ground." CR>)
|
|
(T
|
|
<TELL
|
|
"The thrown " D ,PRSO " falls harmlessly to the ground." CR>)>)>>
|
|
|
|
<ROUTINE V-THROW-OFF ()
|
|
<TELL "You can't throw anything off of that!" CR>>
|
|
|
|
<ROUTINE V-TIE ()
|
|
<COND (<EQUAL? ,PRSI ,WINNER>
|
|
<TELL "You can't tie anything to yourself." CR>)
|
|
(T
|
|
<TELL "You can't tie the " D ,PRSO " to that." CR>)>>
|
|
|
|
<ROUTINE V-TIE-UP ()
|
|
<TELL "You could certainly never tie it with that!" CR>>
|
|
|
|
<ROUTINE V-TREASURE ()
|
|
<TELL "Nothing happens." CR>>
|
|
|
|
<ROUTINE PRE-TURN ()
|
|
<COND (<NOT <FSET? ,PRSO ,TURNBIT>>
|
|
<TELL "You can't turn that!" CR>)>>
|
|
|
|
<ROUTINE V-TURN ()
|
|
<TELL "This has no effect." CR>>
|
|
|
|
<ROUTINE V-UNLOCK ()
|
|
<V-LOCK>>
|
|
|
|
<ROUTINE V-UNTIE ()
|
|
<TELL "This cannot be tied, so it cannot be untied!" CR>>
|
|
|
|
<ROUTINE V-WAIT ("OPTIONAL" (NUM 3))
|
|
<SETG C-ELAPSED 40>
|
|
<TELL "Time passes..." CR>
|
|
<COND (<NOT <EQUAL? ,GAME-FLAG 2>>
|
|
<REPEAT ()
|
|
<COND (<L? <SET NUM <- .NUM 1>> 0>
|
|
<RETURN>)
|
|
(<CLOCKER>
|
|
<RETURN>)>>
|
|
<SETG CLOCK-WAIT T>)>>
|
|
|
|
<ROUTINE V-WALK ("AUX" PT PTS STR OBJ RM)
|
|
<COND (<NOT ,P-WALK-DIR>
|
|
<PERFORM ,V?WALK-TO ,PRSO>
|
|
<RTRUE>)
|
|
(<SET PT <GETPT ,HERE ,PRSO>>
|
|
<COND (<EQUAL? <SET PTS <PTSIZE .PT>> ,UEXIT>
|
|
<GOTO <GETB .PT ,REXIT>>)
|
|
(<EQUAL? .PTS ,NEXIT>
|
|
<TELL <GET .PT ,NEXITSTR> CR>
|
|
<RFATAL>)
|
|
(<EQUAL? .PTS ,FEXIT>
|
|
<COND (<SET RM <APPLY <GET .PT ,FEXITFCN>>>
|
|
<GOTO .RM>)
|
|
(T
|
|
<RFATAL>)>)
|
|
(<EQUAL? .PTS ,CEXIT>
|
|
<COND (<VALUE <GETB .PT ,CEXITFLAG>>
|
|
<GOTO <GETB .PT ,REXIT>>)
|
|
(<SET STR <GET .PT ,CEXITSTR>>
|
|
<TELL .STR CR>
|
|
<RFATAL>)
|
|
(T
|
|
<TELL ,CANT-GO CR>
|
|
<RFATAL>)>)
|
|
(<EQUAL? .PTS ,DEXIT>
|
|
<COND (<FSET? <SET OBJ <GETB .PT ,DEXITOBJ>> ,OPENBIT>
|
|
<GOTO <GETB .PT ,REXIT>>)
|
|
(<SET STR <GET .PT ,DEXITSTR>>
|
|
<TELL .STR CR>
|
|
<RFATAL>)
|
|
(T
|
|
<TELL "The " D .OBJ " is closed." CR>
|
|
<THIS-IS-IT .OBJ>
|
|
<RFATAL>)>)>)
|
|
(<NOT ,LIT>
|
|
<COND (,TUTORIAL-MODE
|
|
<TELL
|
|
"You don't want to walk around in the dark like that, since you might be set
|
|
upon by lurking grues." CR>)
|
|
(<PROB 80>
|
|
<JIGS-UP
|
|
"Oh, no! You have walked into the slavering fangs of a lurking grue!">)
|
|
(T <TELL ,CANT-GO CR>)>
|
|
<RFATAL>)
|
|
(T
|
|
<TELL ,CANT-GO CR>
|
|
<RFATAL>)>>
|
|
|
|
<ROUTINE V-WALK-AROUND ()
|
|
<TELL "Use compass directions for movement." CR>>
|
|
|
|
<ROUTINE V-WALK-TO ()
|
|
<COND (<OR <IN? ,PRSO ,HERE>
|
|
<GLOBAL-IN? ,PRSO ,HERE>>
|
|
<COND (<PRSO? ,TENT-OBJ>
|
|
<TELL "There are a few of them around">)
|
|
(<PRSO? ,NASTY-CROC>
|
|
<TELL "They're">)
|
|
(T
|
|
<TELL "It's">)>
|
|
<TELL " here!" CR>)
|
|
(T
|
|
<TELL "You should supply a direction!" CR>)>>
|
|
|
|
<ROUTINE V-WAVE ()
|
|
<HACK-HACK "Waving the ">>
|
|
|
|
<ROUTINE V-WEAR ()
|
|
<COND (<EQUAL? ,GAME-FLAG 1 3>
|
|
<COND (<NOT <FSET? ,PRSO ,WEARBIT>>
|
|
<TELL "You can't wear the " D ,PRSO "." CR>)
|
|
(T
|
|
<PERFORM ,V?TAKE ,PRSO>
|
|
<RTRUE>)>)
|
|
(<NOT <HELD? ,PRSO>>
|
|
<NOT-HOLDING ,PRSO>)
|
|
(<FSET? ,PRSO ,WEARBIT>
|
|
<TELL "You are wearing the " D ,PRSO "." CR>
|
|
<SETG C-ELAPSED 18>
|
|
<MOVE ,PRSO ,PLAYER>
|
|
<FSET ,PRSO ,WORNBIT>)
|
|
(T
|
|
<TELL
|
|
"They're out of fashion, and besides, it wouldn't fit." CR>)>>
|
|
|
|
<ROUTINE V-WIN ()
|
|
<TELL "Naturally!" CR>>
|
|
|
|
<ROUTINE V-WIND ()
|
|
<TELL "You cannot wind up " A ,PRSO "." CR>>
|
|
|
|
<ROUTINE V-WISH ()
|
|
<TELL "With luck, your wish will come true." CR>>
|
|
|
|
<ROUTINE V-YELL ()
|
|
<TELL "Aaaarrrrgggghhhh!" CR>>
|
|
|
|
<ROUTINE PRE-SZAP ()
|
|
<PERFORM ,V?ZAP ,PRSI ,PRSO>
|
|
<RTRUE>>
|
|
|
|
<ROUTINE PRE-ZAP ()
|
|
<COND (,PRSI
|
|
<RFALSE>)
|
|
(<EQUAL? ,PRSO ,LASER>
|
|
<RFALSE>)
|
|
(<IN? ,LASER ,ADVENTURER>
|
|
<PERFORM ,V?ZAP ,LASER ,PRSO>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "You have nothing to shoot it with." CR>)>>
|
|
|
|
<ROUTINE V-ZAP ()
|
|
<COND (<NOT <HELD? ,PRSO>>
|
|
<NOT-HOLDING ,PRSO>)
|
|
(<NOT <EQUAL? ,PRSO ,LASER>>
|
|
<TELL "You can't shoot that." CR>)
|
|
(<NOT ,PRSI>
|
|
<TELL "At what?">)
|
|
(T
|
|
<TELL "Nothing happens." CR>)>>
|
|
|
|
<ROUTINE V-SZAP ()
|
|
<TELL "Zap!" CR>>
|
|
|
|
<ROUTINE V-ZORK ()
|
|
<COND (<==? ,GAME-FLAG 1> <TELL "At your service!" CR>)
|
|
(T <TELL "A fine game, but it's not this one!" CR>)>>
|
|
|
|
^L
|
|
|
|
"Verb-Associated Routines"
|
|
|
|
"Descriptions"
|
|
|
|
<GLOBAL LIT <>>
|
|
|
|
<ROUTINE V-FIRST-LOOK ()
|
|
<COND (<DESCRIBE-ROOM>
|
|
<COND (<NOT ,SUPER-BRIEF>
|
|
<DESCRIBE-OBJECTS>)>)>>
|
|
|
|
<ROUTINE DESCRIBE-ROOM ("OPTIONAL" (LOOK? <>) "AUX" V? STR AV)
|
|
<SET V? <OR .LOOK? ,VERBOSE>>
|
|
<COND (<NOT ,LIT>
|
|
<TELL
|
|
"It is pitch black. You are likely to be eaten by a grue.">
|
|
<CRLF>
|
|
<RETURN <>>)>
|
|
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
|
|
<FSET ,HERE ,TOUCHBIT>
|
|
<SET V? T>)>
|
|
<COND (<IN? ,HERE ,ROOMS>
|
|
;"Was <TELL D ,HERE CR>"
|
|
<TELL D ,HERE>
|
|
<COND (<FSET? <SET AV <LOC ,WINNER>> ,VEHBIT>
|
|
<TELL ", in the " D .AV>)>
|
|
<CRLF>)>
|
|
<COND (<OR .LOOK? <NOT ,SUPER-BRIEF>>
|
|
<SET AV <LOC ,WINNER>>
|
|
;<COND (<FSET? .AV ,VEHBIT>
|
|
<TELL "(You are in the " D .AV ".)" CR>)>
|
|
<COND (<AND .V? <APPLY <GETP ,HERE ,P?ACTION> ,M-LOOK>>
|
|
<RTRUE>)
|
|
(<AND .V? <SET STR <GETP ,HERE ,P?LDESC>>>
|
|
<TELL .STR CR>)
|
|
(T
|
|
<APPLY <GETP ,HERE ,P?ACTION> ,M-FLASH>)>
|
|
<COND (<AND <NOT <EQUAL? ,HERE .AV>> <FSET? .AV ,VEHBIT>>
|
|
<APPLY <GETP .AV ,P?ACTION> ,M-LOOK>)>)>
|
|
T>
|
|
|
|
<ROUTINE DESCRIBE-OBJECTS ("OPTIONAL" (V? <>))
|
|
<COND (,LIT
|
|
<COND (<FIRST? ,HERE>
|
|
<PRINT-CONT ,HERE <SET V? <OR .V? ,VERBOSE>> -1>)>)
|
|
(T
|
|
<TELL "Only bats can see in the dark. And you're not one." CR>)>>
|
|
|
|
"DESCRIBE-OBJECT -- takes object and flag. if flag is true will print a
|
|
long description (fdesc or ldesc), otherwise will print short."
|
|
|
|
<GLOBAL DESC-OBJECT <>>
|
|
|
|
<ROUTINE DESCRIBE-OBJECT (OBJ V? LEVEL "AUX" (STR <>) AV)
|
|
<SETG DESC-OBJECT .OBJ>
|
|
<COND (<AND <0? .LEVEL>
|
|
<APPLY <GETP .OBJ ,P?DESCFCN> ,M-OBJDESC>>
|
|
<RTRUE>)
|
|
(<EQUAL? .OBJ ,SPOUT-PLACED>
|
|
<RTRUE>)
|
|
(<AND <0? .LEVEL>
|
|
<OR <AND <NOT <FSET? .OBJ ,TOUCHBIT>>
|
|
<SET STR <GETP .OBJ ,P?FDESC>>>
|
|
<SET STR <GETP .OBJ ,P?LDESC>>>>
|
|
<TELL .STR>)
|
|
(<0? .LEVEL>
|
|
<TELL "There is " A .OBJ " here">
|
|
<COND (<FSET? .OBJ ,ONBIT>
|
|
<TELL " (providing light)">)>
|
|
<TELL ".">)
|
|
(T
|
|
<TELL <GET ,INDENTS .LEVEL>>
|
|
<TELL "A">
|
|
<COND (<FSET? .OBJ ,VOWELBIT>
|
|
<TELL "n">)>
|
|
<TELL " " D .OBJ>
|
|
<COND (<FSET? .OBJ ,ONBIT>
|
|
<TELL " (providing light)">)
|
|
(<AND <FSET? .OBJ ,WEARBIT>
|
|
<NOT <EQUAL? ,GAME-FLAG 2>>>
|
|
<TELL " (being worn)">)
|
|
(<AND <FSET? .OBJ ,WORNBIT>
|
|
<EQUAL? ,GAME-FLAG 2>>
|
|
<TELL " (being worn)">)>)>
|
|
<COND (<AND <0? .LEVEL>
|
|
<SET AV <LOC ,WINNER>>
|
|
<FSET? .AV ,VEHBIT>>
|
|
<TELL " (outside the " D .AV ")">)>
|
|
<CRLF>
|
|
<COND (<AND <SEE-INSIDE? .OBJ> <FIRST? .OBJ>>
|
|
<PRINT-CONT .OBJ .V? .LEVEL>)>>
|
|
|
|
<ROUTINE PRINT-CONTENTS (OBJ "AUX" F N (1ST? T) (IT? <>) (TWO? <>))
|
|
<COND (<SET F <FIRST? .OBJ>>
|
|
<REPEAT ()
|
|
<SET N <NEXT? .F>>
|
|
<COND (.1ST? <SET 1ST? <>>)
|
|
(ELSE
|
|
<TELL ", ">
|
|
<COND (<NOT .N> <TELL "and ">)>)>
|
|
<TELL A .F>
|
|
<COND (<AND <NOT .IT?> <NOT .TWO?>>
|
|
<SET IT? .F>)
|
|
(ELSE
|
|
<SET TWO? T>
|
|
<SET IT? <>>)>
|
|
<SET F .N>
|
|
<COND (<NOT .F>
|
|
<COND (<AND .IT? <NOT .TWO?>>
|
|
<THIS-IS-IT .IT?>)>
|
|
<RTRUE>)>>)>>
|
|
|
|
<ROUTINE PRINT-CONT (OBJ "OPTIONAL" (V? <>) (LEVEL 0)
|
|
"AUX" Y 1ST? AV STR (PV? <>) (INV? <>))
|
|
<COND (<NOT <SET Y <FIRST? .OBJ>>> <RTRUE>)>
|
|
<COND (<AND <SET AV <LOC ,WINNER>> <FSET? .AV ,VEHBIT>>
|
|
T)
|
|
(ELSE <SET AV <>>)>
|
|
<SET 1ST? T>
|
|
<COND (<EQUAL? ,WINNER .OBJ <LOC .OBJ>>
|
|
<SET INV? T>)
|
|
(ELSE
|
|
<REPEAT ()
|
|
<COND (<NOT .Y> <RETURN <NOT .1ST?>>)
|
|
(<EQUAL? .Y .AV> <SET PV? T>)
|
|
(<EQUAL? .Y ,WINNER>)
|
|
(<AND <NOT <FSET? .Y ,INVISIBLE>>
|
|
<NOT <FSET? .Y ,TOUCHBIT>>
|
|
<SET STR <GETP .Y ,P?FDESC>>>
|
|
<COND (<NOT <FSET? .Y ,NDESCBIT>>
|
|
<TELL .STR CR>
|
|
;<SET 1ST? <>>)>
|
|
<COND (<AND <SEE-INSIDE? .Y>
|
|
<NOT <GETP <LOC .Y> ,P?DESCFCN>>
|
|
<FIRST? .Y>>
|
|
<COND (<PRINT-CONT .Y .V? 0>
|
|
<SET 1ST? <>>)>)>)>
|
|
<SET Y <NEXT? .Y>>>)>
|
|
<SET Y <FIRST? .OBJ>>
|
|
<REPEAT ()
|
|
<COND (<NOT .Y>
|
|
<COND (<AND .PV? .AV <FIRST? .AV>>
|
|
<SET LEVEL <+ .LEVEL 1>> ;"not in Zork III"
|
|
<PRINT-CONT .AV .V? .LEVEL>)>
|
|
<RETURN <NOT .1ST?>>)
|
|
(<EQUAL? .Y .AV ,ADVENTURER>)
|
|
(<AND <NOT <FSET? .Y ,INVISIBLE>>
|
|
<OR .INV?
|
|
<FSET? .Y ,TOUCHBIT>
|
|
<NOT <GETP .Y ,P?FDESC>>>>
|
|
<COND (<NOT <FSET? .Y ,NDESCBIT>>
|
|
<COND (.1ST?
|
|
<COND (<FIRSTER .OBJ .LEVEL>
|
|
<COND (<L? .LEVEL 0>
|
|
<SET LEVEL 0>)>)>
|
|
<SET LEVEL <+ 1 .LEVEL>>
|
|
<SET 1ST? <>>)>
|
|
<COND (<L? .LEVEL 0> <SET LEVEL 0>)>
|
|
<DESCRIBE-OBJECT .Y .V? .LEVEL>)
|
|
(<AND <FIRST? .Y> <SEE-INSIDE? .Y>>
|
|
<SET LEVEL <+ .LEVEL 1>> ;"not in Zork III"
|
|
<PRINT-CONT .Y .V? .LEVEL>)>)>
|
|
<SET Y <NEXT? .Y>>>>
|
|
|
|
<ROUTINE FIRSTER (OBJ LEVEL)
|
|
<COND (<EQUAL? .OBJ ,WINNER>
|
|
<TELL "You are carrying:" CR>)
|
|
(<NOT <IN? .OBJ ,ROOMS>>
|
|
<COND (<G? .LEVEL 0>
|
|
<TELL <GET ,INDENTS .LEVEL>>)>
|
|
<COND (<FSET? .OBJ ,SURFACEBIT>
|
|
<TELL "Sitting on the " D .OBJ " is: " CR>)
|
|
(<FSET? .OBJ ,ACTORBIT>
|
|
<TELL "The " D .OBJ " is holding: " CR>)
|
|
(T
|
|
<TELL "The " D .OBJ " contains:" CR>)>)>>
|
|
|
|
<ROUTINE SEE-INSIDE? (OBJ)
|
|
<AND <NOT <FSET? .OBJ ,INVISIBLE>>
|
|
<OR <FSET? .OBJ ,TRANSBIT> <FSET? .OBJ ,OPENBIT>>>>
|
|
|
|
"Scoring"
|
|
|
|
<GLOBAL MOVES 0>
|
|
|
|
<GLOBAL SCORE 0>
|
|
|
|
<GLOBAL BASE-SCORE 0>
|
|
|
|
<ROUTINE SCORE-UPD (NUM)
|
|
<SETG BASE-SCORE <+ ,BASE-SCORE .NUM>>
|
|
<SETG SCORE <+ ,SCORE .NUM>>
|
|
T>
|
|
|
|
<ROUTINE SCORE-OBJ (OBJ "AUX" TEMP)
|
|
<COND (<G? <SET TEMP <GETP .OBJ ,P?VALUE>> 0>
|
|
<SCORE-UPD .TEMP>
|
|
<PUTP .OBJ ,P?VALUE 0>)>>
|
|
|
|
<ROUTINE FINISH ("OPTIONAL" (SCR T))
|
|
<COND (.SCR <V-SCORE>)>
|
|
<CRLF>
|
|
<CRLF>
|
|
; <COND (.SCR <TELL "Thanks for playing! ">)>
|
|
; <TELL "If you would like to try again you may do so by restarting the Sampler. ">
|
|
<DO-RESTART>>
|
|
|
|
<ROUTINE DO-RESTART ()
|
|
<TELL "Press the RETURN (or ENTER) key to restart the Sampler." CR>
|
|
<READ ,P-LEXV ,P-INBUF>
|
|
<RESTART>>
|
|
|
|
<ROUTINE YES? ()
|
|
<REPEAT ()
|
|
<PRINTI ">">
|
|
<READ ,P-INBUF ,P-LEXV>
|
|
<COND (<EQUAL? <GET ,P-LEXV 1> ,W?YES ,W?Y>
|
|
<RTRUE>)
|
|
(<EQUAL? <GET ,P-LEXV 1> ,W?N ,W?NO>
|
|
<RFALSE>)
|
|
(T
|
|
<CRLF>
|
|
<TELL
|
|
"Please type \"YES\" or \"NO\" and then hit the RETURN key ">)>>>
|
|
|
|
"Death"
|
|
|
|
<GLOBAL DEAD <>>
|
|
|
|
<GLOBAL DEATHS 0>
|
|
|
|
<GLOBAL LUCKY 1>
|
|
|
|
;"JIGS-UP is in ACTIONS.ZIL"
|
|
|
|
;"RANDOMIZE-OBJECTS is in ACTIONS.ZIL"
|
|
|
|
;"KILL-INTERRUPTS is in ACTIONS.ZIL"
|
|
|
|
"Object Manipulation"
|
|
|
|
<GLOBAL FUMBLE-NUMBER 7>
|
|
|
|
<GLOBAL FUMBLE-PROB 8>
|
|
|
|
<ROUTINE ITAKE ("OPTIONAL" (VB T) "AUX" CNT OBJ)
|
|
#DECL ((VB) <OR ATOM FALSE> (CNT) FIX (OBJ) OBJECT)
|
|
<COND (,DEAD
|
|
<COND (.VB
|
|
<TELL "Your hand passes through its object." CR>)>
|
|
<RFALSE>)
|
|
(<NOT <FSET? ,PRSO ,TAKEBIT>>
|
|
<COND (.VB
|
|
<TELL <PICK-ONE ,YUKS> CR>)>
|
|
<RFALSE>)
|
|
(<AND <FSET? <LOC ,PRSO> ,CONTBIT>
|
|
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
|
|
;"Kludge for parser calling itake"
|
|
<RFALSE>)
|
|
(<AND <NOT <IN? <LOC ,PRSO> ,WINNER>>
|
|
<G? <+ <WEIGHT ,PRSO> <WEIGHT ,WINNER>> ,LOAD-ALLOWED>>
|
|
<COND (.VB
|
|
<TELL "Your load is too heavy">
|
|
<COND (<L? ,LOAD-ALLOWED ,LOAD-MAX>
|
|
<TELL", especially in light of your condition.">)
|
|
(T
|
|
<TELL ".">)>
|
|
<CRLF>)>
|
|
<RFATAL>)
|
|
(<AND <VERB? TAKE>
|
|
<G? <SET CNT <CCOUNT ,WINNER>> ,FUMBLE-NUMBER>
|
|
<PROB <* .CNT ,FUMBLE-PROB>>>
|
|
<TELL
|
|
"You're holding too many things already!" CR>
|
|
<RFALSE>)
|
|
(T
|
|
<MOVE ,PRSO ,WINNER>
|
|
<FSET ,PRSO ,TOUCHBIT>
|
|
<FCLEAR ,PRSO ,NDESCBIT>
|
|
<SCORE-OBJ ,PRSO>
|
|
<COND (<EQUAL? ,PRSO ,SPOUT-PLACED>
|
|
<SETG SPOUT-PLACED ,GROUND>)>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE IDROP ()
|
|
<COND (<NOT <HELD? ,PRSO>>
|
|
<TELL "You're not carrying the " D ,PRSO "." CR>
|
|
<RFALSE>)
|
|
(<AND <NOT <IN? ,PRSO ,WINNER>>
|
|
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
|
|
<TELL "The " D ,PRSO " is closed." CR>
|
|
<RFALSE>)
|
|
(<FSET? ,PRSO ,WORNBIT>
|
|
<TAKE-IT-OFF>
|
|
<RFALSE>)
|
|
(T
|
|
<MOVE ,PRSO <LOC ,WINNER>>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE CCOUNT (OBJ "AUX" (CNT 0) X)
|
|
<COND (<SET X <FIRST? .OBJ>>
|
|
<REPEAT ()
|
|
<COND (<NOT <FSET? .X ,WEARBIT>>
|
|
<SET CNT <+ .CNT 1>>)>
|
|
<COND (<NOT <SET X <NEXT? .X>>>
|
|
<RETURN>)>>)>
|
|
.CNT>
|
|
|
|
<ROUTINE WEIGHT (OBJ "AUX" CONT (WT 0))
|
|
<COND (<SET CONT <FIRST? .OBJ>>
|
|
<REPEAT ()
|
|
<COND (<AND <EQUAL? .OBJ ,PLAYER>
|
|
<FSET? .CONT ,WEARBIT>>
|
|
<SET WT <+ .WT 1>>)
|
|
(T
|
|
<SET WT <+ .WT <WEIGHT .CONT>>>)>
|
|
<COND (<NOT <SET CONT <NEXT? .CONT>>> <RETURN>)>>)>
|
|
<+ .WT <GETP .OBJ ,P?SIZE>>>
|
|
|
|
"Miscellaneous"
|
|
|
|
<CONSTANT REXIT 0>
|
|
<CONSTANT UEXIT 1>
|
|
<CONSTANT NEXIT 2>
|
|
<CONSTANT FEXIT 3>
|
|
<CONSTANT CEXIT 4>
|
|
<CONSTANT DEXIT 5>
|
|
|
|
<CONSTANT NEXITSTR 0>
|
|
<CONSTANT FEXITFCN 0>
|
|
<CONSTANT CEXITFLAG 1>
|
|
<CONSTANT CEXITSTR 1>
|
|
<CONSTANT DEXITOBJ 1>
|
|
<CONSTANT DEXITSTR 1>
|
|
|
|
<GLOBAL INDENTS
|
|
<TABLE ""
|
|
" "
|
|
" "
|
|
" "
|
|
" "
|
|
" ">>
|
|
|
|
<ROUTINE HACK-HACK (STR)
|
|
<COND (<AND <IN? ,PRSO ,GLOBAL-OBJECTS>
|
|
<VERB? WAVE RAISE LOWER>>
|
|
<TELL "The " D ,PRSO " isn't here!" CR>)
|
|
(T
|
|
<TELL .STR D ,PRSO <PICK-ONE ,HO-HUM> CR>)>>
|
|
|
|
<GLOBAL HO-HUM
|
|
<LTABLE
|
|
0
|
|
" doesn't seem to work."
|
|
" isn't notably helpful."
|
|
" has no effect.">>
|
|
|
|
<ROUTINE NO-GO-TELL (AV WLOC)
|
|
<COND (.AV
|
|
<TELL "You can't go there in " A .WLOC ".">)
|
|
(T
|
|
<TELL "You can't go there without a vehicle.">)>
|
|
<CRLF>>
|
|
|
|
<ROUTINE GOTO (RM "OPTIONAL" (V? T)
|
|
"AUX" (LB <FSET? .RM ,RLANDBIT>) (WLOC <LOC ,WINNER>)
|
|
(AV <>) OLIT TEMP-ELAPSED)
|
|
<COND (<EQUAL? ,GAME-FLAG 2>
|
|
<SET TEMP-ELAPSED <GET <GETP ,HERE ,P?C-MOVE>
|
|
<- ,PRSO ,LOW-DIRECTION>>>
|
|
<COND (<G? .TEMP-ELAPSED 0>
|
|
<SETG C-ELAPSED .TEMP-ELAPSED>)
|
|
(T
|
|
<SETG C-ELAPSED 20>)>)>
|
|
<SET OLIT ,LIT>
|
|
<COND (<FSET? .WLOC ,VEHBIT>
|
|
<SET AV <GETP .WLOC ,P?VTYPE>>)>
|
|
<COND (<AND <NOT .LB>
|
|
<NOT .AV>>
|
|
<NO-GO-TELL .AV .WLOC>
|
|
<RFALSE>)
|
|
(<AND <NOT .LB>
|
|
<NOT <FSET? .RM .AV>>>
|
|
<NO-GO-TELL .AV .WLOC>
|
|
<RFALSE>)
|
|
(<AND <FSET? ,HERE ,RLANDBIT>
|
|
.LB
|
|
.AV
|
|
<NOT <EQUAL? .AV ,RLANDBIT>>
|
|
<NOT <FSET? .RM .AV>>>
|
|
<NO-GO-TELL .AV .WLOC>
|
|
<RFALSE>)
|
|
(<FSET? .RM ,RMUNGBIT>
|
|
<TELL <GETP .RM ,P?LDESC> CR>
|
|
<RFALSE>)
|
|
(T
|
|
<COND (.AV
|
|
<MOVE .WLOC .RM>)
|
|
(T
|
|
<MOVE ,WINNER .RM>)>
|
|
<SETG HERE .RM>
|
|
<SETG LIT <LIT? ,HERE>>
|
|
<COND (<AND <NOT .OLIT>
|
|
<NOT ,LIT>
|
|
<PROB 80>>
|
|
<JIGS-UP
|
|
"Oh, no! A lurking grue slithered into the room and devoured you.">
|
|
<RFATAL>)>
|
|
<COND (<AND <NOT ,LIT>
|
|
<EQUAL? ,WINNER ,ADVENTURER>>
|
|
<TELL "You have moved into a dark place." CR>
|
|
<SETG P-CONT <>>)>
|
|
<APPLY <GETP ,HERE ,P?ACTION> ,M-ENTER>
|
|
<SCORE-OBJ .RM>
|
|
<COND (<NOT <EQUAL? ,HERE .RM>> <RTRUE>)
|
|
(<NOT <EQUAL? ,ADVENTURER ,WINNER>>
|
|
<TELL "The " D ,WINNER " leaves the room." CR>)
|
|
(.V? <V-FIRST-LOOK>)>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE GO-NEXT (TBL "AUX" VAL)
|
|
<COND (<SET VAL <LKP ,HERE .TBL>>
|
|
<GOTO .VAL>)>>
|
|
|
|
<ROUTINE LKP (ITM TBL "AUX" (CNT 0) (LEN <GET .TBL 0>))
|
|
<REPEAT ()
|
|
<COND (<G? <SET CNT <+ .CNT 1>> .LEN>
|
|
<RFALSE>)
|
|
(<EQUAL? <GET .TBL .CNT> .ITM>
|
|
<COND (<EQUAL? .CNT .LEN> <RFALSE>)
|
|
(T
|
|
<RETURN <GET .TBL <+ .CNT 1>>>)>)>>>
|
|
|
|
<ROUTINE DO-WALK (DIR)
|
|
<SETG P-WALK-DIR .DIR>
|
|
<PERFORM ,V?WALK .DIR>>
|
|
|
|
;<ROUTINE WORD-TYPE (OBJ WORD "AUX" SYNS)
|
|
;"not referenced, removed 2/27/85 by SEM"
|
|
<ZMEMQ .WORD
|
|
<SET SYNS <GETPT .OBJ ,P?SYNONYM>>
|
|
<- </ <PTSIZE .SYNS> 2> 1>>>
|
|
|
|
<ROUTINE GLOBAL-IN? (OBJ1 OBJ2 "AUX" T)
|
|
<COND (<SET T <GETPT .OBJ2 ,P?GLOBAL>>
|
|
<ZMEMQB .OBJ1 .T <- <PTSIZE .T> 1>>)>>
|
|
|
|
<ROUTINE FIND-IN (WHERE WHAT "AUX" W)
|
|
<SET W <FIRST? .WHERE>>
|
|
<COND (<NOT .W>
|
|
<RFALSE>)>
|
|
<REPEAT ()
|
|
<COND (<AND <FSET? .W .WHAT>
|
|
<NOT <EQUAL? .W ,ADVENTURER>>>
|
|
<RETURN .W>)
|
|
(<NOT <SET W <NEXT? .W>>>
|
|
<RETURN <>>)>>>
|
|
|
|
;<ROUTINE IN-HERE? (OBJ) ;"not referenced, removed 2/27/85 by SEM"
|
|
<OR <IN? .OBJ ,HERE>
|
|
<GLOBAL-IN? .OBJ ,HERE>>>
|
|
|
|
<ROUTINE HELD? (CAN)
|
|
<REPEAT ()
|
|
<SET CAN <LOC .CAN>>
|
|
<COND (<NOT .CAN> <RFALSE>)
|
|
(<EQUAL? .CAN ,WINNER> <RTRUE>)>>>
|
|
|
|
<ROUTINE OTHER-SIDE (DOBJ "AUX" (P 0) T) ;"finds room beyond given door"
|
|
<REPEAT ()
|
|
<COND (<L? <SET P <NEXTP ,HERE .P>> ,LOW-DIRECTION>
|
|
<RETURN <>>)
|
|
(ELSE
|
|
<SET T <GETPT ,HERE .P>>
|
|
<COND (<AND <EQUAL? <PTSIZE .T> ,DEXIT>
|
|
<EQUAL? <GETB .T ,DEXITOBJ> .DOBJ>>
|
|
<RETURN .P>)>)>>>
|
|
|
|
;<ROUTINE MUNG-ROOM (RM STR) ;"not referenced, removed 2/27/85 by SEM"
|
|
<FSET .RM ,RMUNGBIT>
|
|
<PUTP .RM ,P?LDESC .STR>>
|
|
|
|
<ROUTINE THIS-IS-IT (OBJ)
|
|
<SETG P-IT-OBJECT .OBJ>
|
|
<SETG P-IT-LOC ,HERE>>
|
|
|
|
<GLOBAL HELLOS
|
|
<LTABLE 0 "Hello."
|
|
"Good day."
|
|
"Nice weather we've been having lately."
|
|
"Goodbye.">>
|
|
|
|
<GLOBAL YUKS
|
|
<LTABLE
|
|
0
|
|
"A valiant attempt."
|
|
"You can't be serious."
|
|
;"Not bloody likely."
|
|
"An interesting idea..."
|
|
"What a concept!">>
|
|
|
|
<GLOBAL DUMMY
|
|
<LTABLE 0
|
|
"Look around."
|
|
"Too late for that."
|
|
"Have your eyes checked.">>
|
|
|
|
<GLOBAL CANT-GO "You can't go that way.">
|
|
|
|
;<ROUTINE V-SIT-ON () ;"not referenced, removed 2/27/85 by SEM"
|
|
<COND (<EQUAL? ,PRSO ,CRATE>
|
|
<TELL
|
|
"You easily weigh enough to make the crate's life-cycle far shorter than it
|
|
would have liked. Needless to say, after having been crushed flat by your
|
|
heartless attempt, it decides to move on, find what the next life-cycle has in
|
|
store for it, and vanishes into the mystical unknown." CR>
|
|
<REMOVE ,CRATE>
|
|
<SETG P-IT-LOC <>>
|
|
<RTRUE>)
|
|
(<FSET? ,PRSO ,VEHBIT>
|
|
<PERFORM ,V?CLIMB-ON ,PRSO>
|
|
<RTRUE>)
|
|
(<EQUAL? ,PRSO ,GROUND ,SAND>
|
|
<TELL "No sitting down on the job, now." CR>)
|
|
(T
|
|
<TELL <PICK-ONE ,YUKS> CR>)>>
|
|
|
|
<ROUTINE TBL-TO-INSIDE (OBJ TBL "OPTIONAL" STR "AUX" (OFFS 0) MAX)
|
|
<COND (<NOT <FSET? .OBJ ,SURFACEBIT>>
|
|
<TELL "The " D .OBJ " is already open." CR>
|
|
<RTRUE>)>
|
|
<COND (<FIRST? .OBJ>
|
|
<OBJS-SLIDE-OFF .OBJ>)>
|
|
<SET MAX <GET .TBL 0>>
|
|
<COND (<NOT .STR>
|
|
<TELL "Opened.">)
|
|
(T <TELL .STR>)>
|
|
<FCLEAR .OBJ ,SURFACEBIT>
|
|
<REPEAT ()
|
|
<SET OFFS <+ .OFFS 1>>
|
|
<COND (<G? .OFFS .MAX>
|
|
<RETURN>)
|
|
(<NOT <EQUAL? <GET .TBL .OFFS> 0>>
|
|
<MOVE <GET .TBL .OFFS> .OBJ>
|
|
<PUT .TBL .OFFS 0>)>>
|
|
<COND (<FIRST? .OBJ>
|
|
<TELL " Opening the " D .OBJ " reveals ">
|
|
<PRINT-CONTENTS .OBJ>
|
|
<TELL ".">)>
|
|
<CRLF>>
|
|
|
|
<ROUTINE INSIDE-OBJ-TO (TBL OBJ "AUX" (OFFS 0) F N)
|
|
<COND (<FSET? .OBJ ,SURFACEBIT>
|
|
<TELL "The " D .OBJ " is already closed." CR>
|
|
<RTRUE>)>
|
|
<FSET .OBJ ,SURFACEBIT>
|
|
<TELL "Closed." CR>
|
|
<COND (<NOT <FIRST? .OBJ>>
|
|
<RTRUE>)>
|
|
<SET F <FIRST? .OBJ>>
|
|
<REPEAT ()
|
|
<COND (<NOT .F>
|
|
<RETURN>)
|
|
(T
|
|
<SET N .F>
|
|
<SET F <NEXT? .N>>
|
|
<REMOVE .N>
|
|
<REPEAT ()
|
|
<SET OFFS <+ .OFFS 1>>
|
|
<COND (<EQUAL? <GET .TBL .OFFS> 0>
|
|
<PUT .TBL .OFFS .N>
|
|
<RETURN>)>>)>>>
|
|
|
|
<ROUTINE OBJS-SLIDE-OFF (OBJ "AUX" F N THERE)
|
|
<SET THERE <LOC .OBJ>>
|
|
<COND (<EQUAL? .THERE ,WINNER>
|
|
<SET THERE ,HERE>)>
|
|
<SET F <FIRST? .OBJ>>
|
|
<REPEAT ()
|
|
<COND (<NOT .F>
|
|
<RETURN>)
|
|
(T
|
|
<SET N .F>
|
|
<SET F <NEXT? .N>>
|
|
<MOVE .N .THERE>)>>
|
|
<TELL "Everything on the " D .OBJ " slides off its top." CR>
|
|
<CRLF>>
|
|
|
|
;<ROUTINE V-FILL-IN () ;"not referenced, removed 2/27/85 by SEM"
|
|
<COND (<NOT <EQUAL? ,PRSO ,HOLE ,MANUAL>>
|
|
<TELL "I don't know how to fill in the " D ,PRSO "." CR>)
|
|
(<PRSO? ,HOLE>
|
|
<TELL "Let time and Mother Nature take care of that." CR>)
|
|
(T
|
|
<PERFORM ,V?FILL-OUT ,MANUAL>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-SLEEP ()
|
|
<COND (<EQUAL? ,GAME-FLAG 2>
|
|
<COND (<EQUAL? ,SLEEPY-LEVEL 0>
|
|
<TELL "You're not tired!" CR>)
|
|
(<GET <INT I-FALL-ASLEEP> ,C-ENABLED?>
|
|
<TELL
|
|
"You'll probably be asleep before you know it." CR>)
|
|
(T
|
|
<TELL
|
|
"Civilized members of society usually sleep in beds." CR>)>)
|
|
(<IN? ,WINNER ,COT>
|
|
<TELL
|
|
"You close your eyes, but your mind is too active to let you sleep." CR>)
|
|
(<IN? ,COT ,HERE>
|
|
<MOVE ,WINNER ,COT>
|
|
<TELL "You get into the cot and try to get comfy. ">
|
|
<V-SLEEP>
|
|
<RTRUE>)
|
|
(,PRSO
|
|
<TELL "That doesn't sound too comfortable to me." CR>)
|
|
(T
|
|
<TELL "Better find a good place to lie down." CR>)>>
|
|
|
|
<ROUTINE V-SLIDE ()
|
|
<TELL <PICK-ONE ,YUKS> CR>>
|
|
|
|
<ROUTINE V-STAND-UNDER ()
|
|
<COND (<NOT <EQUAL? ,GAME-FLAG 3>>
|
|
<TELL "You can't do that in this game." CR>)
|
|
(<AND <EQUAL? ,PRSO ,CRATE ,PLANE ,PARACHUTE>
|
|
<IN? ,PRSO ,GLOBAL-OBJECTS>>
|
|
<COND (<NOT <IN-A-TENT?>>
|
|
<TELL "It looks like that's just where you are." CR>)
|
|
(T
|
|
<TELL "Better get out of the tent first." CR>)>)
|
|
(T
|
|
<TELL "You can't stand under that!" CR>)>>
|
|
|
|
<ROUTINE V-LOOK-UP ()
|
|
<COND (<NOT <EQUAL? ,GAME-FLAG 3>>
|
|
<PERFORM ,V?LOOK>
|
|
<RTRUE>)
|
|
(<AND <L? ,MOVES 8>
|
|
<NOT <IN-A-TENT?>>>
|
|
<TELL "You see a pretty plane. Oh boy!" CR>)
|
|
(<EQUAL? <LOC ,WINNER> ,COT>
|
|
<MOVE ,WINNER ,HERE>
|
|
<PERFORM ,V?LOOK-UP>
|
|
<MOVE ,WINNER ,COT>
|
|
<RTRUE>)
|
|
(<IN-A-TENT?>
|
|
<TELL "You see canvas. What else?" CR>)
|
|
(T
|
|
<TELL "You see a blue sky with wisps of billowy clouds." CR>)>>
|
|
|
|
<ROUTINE V-FILL-OUT ()
|
|
<COND (<NOT <EQUAL? ,PRSO ,MANUAL>>
|
|
<TELL "There's no need for filling that out." CR>)
|
|
(T
|
|
<TELL
|
|
"Okay. Find me a pen or a pencil and I'll do the best I can." CR>)>>
|
|
|
|
<ROUTINE PRE-COMPARE ("AUX" (FLG <>))
|
|
<COND (<PRSO? ,NOT-HERE-OBJECT>
|
|
<RFALSE>)
|
|
(<NOT <GETP ,PRSO ,P?VTYPE>>
|
|
<SET FLG T>)
|
|
(<NOT <EQUAL? <GETP ,PRSO ,P?VTYPE>
|
|
<GETP ,PRSI ,P?VTYPE>>>
|
|
<SET FLG T>)>
|
|
<COND (.FLG
|
|
<TELL "Comparisons between the " D ,PRSO " and the " D ,PRSI
|
|
" would not really help." CR>
|
|
<RTRUE>)
|
|
(ELSE
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE V-COMPARE ()
|
|
<COND (<PRSO? ,ROCK-LOCK ,STONE-KEY>
|
|
<TELL
|
|
"It looks as if the small cube would fit into the opening almost exactly." CR>)
|
|
(T
|
|
<TELL "The " D ,PRSO " and the " D ,PRSI " are the same size."
|
|
CR>)>>
|
|
|
|
<ROUTINE V-FOO-COMPARE ()
|
|
<COND (<L? <GET ,P-PRSO 0> 2>
|
|
<TELL "You have to compare the " D ,PRSO " to something else."
|
|
CR>
|
|
<RTRUE>)
|
|
(T
|
|
<PERFORM ,V?COMPARE <GET ,P-PRSO 1> <GET ,P-PRSO 2>>
|
|
<RFATAL>)>>
|
|
|
|
<ROUTINE V-READ-INSIDE ()
|
|
<TELL "There's nothing to read there." CR>>
|
|
|
|
<ROUTINE V-UNFOLD ()
|
|
<COND (<EQUAL? ,PRSO ,LADDER>
|
|
<PERFORM ,V?OPEN ,LADDER>
|
|
<RTRUE>)
|
|
(<NOT <EQUAL? ,PRSO ,MAP>>
|
|
<HOW? ,PRSO>)
|
|
(T
|
|
<PERFORM ,V?OPEN ,MAP>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-FOLD ()
|
|
<COND (<EQUAL? ,PRSO ,LADDER>
|
|
<PERFORM ,V?CLOSE ,LADDER>
|
|
<RTRUE>)
|
|
(<NOT <EQUAL? ,PRSO ,MAP>>
|
|
<HOW? ,PRSO>)
|
|
(<NOT <FSET? ,PRSO ,OPENBIT>>
|
|
<TELL "It's already folded up." CR>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL "Okay. The map has been folded." CR>
|
|
<FCLEAR ,MAP ,OPENBIT>
|
|
<RTRUE>)>>
|
|
|
|
<GLOBAL CROC-STR
|
|
"You manage to wade a few feet into the river, but this makes the crocodiles
|
|
spring into action -- they advance far more quickly than you thought possible.
|
|
You panic and turn to the bank, attempting to flee. Your splashing about makes
|
|
the beasts double their efforts and reach you just as you are about to step on
|
|
shore. The last thought you have is a slight amazement at how many teeth a
|
|
crocodile has and just how sharp they are.">
|
|
|
|
<ROUTINE HOW? (OBJ)
|
|
<TELL "I don't know how to do that to " A .OBJ "." CR>>
|
|
|
|
<ROUTINE HUH? ("OPTIONAL" (RARG <>))
|
|
<COND (<VERB? OPEN CLOSE>
|
|
<HOW? ,PRSO>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE V-PUSH-THROUGH ()
|
|
<TELL
|
|
"Pushing the " D ,PRSO " in that way isn't particularly helpful." CR>>
|
|
|
|
<ROUTINE V-DRINK-FROM ("AUX" OBJ)
|
|
<COND (<NOT <EQUAL? ,GAME-FLAG 3>>
|
|
<TELL "How peculiar!" CR>)
|
|
(<NOT ,PRSI>
|
|
<COND (<EQUAL? ,PRSO ,NILE-RIBBAH>
|
|
<SET OBJ ,GLOBAL-WATER>)
|
|
(<EQUAL? ,PRSO ,CANTEEN>
|
|
<COND (<AND <OR <IN? ,CANTEEN ,PLAYER>
|
|
<IN? ,CANTEEN ,HERE>>
|
|
<0? ,WATER-LEFT>>
|
|
<TELL
|
|
"There's nothing to drink in the canteen." CR>
|
|
<RTRUE>)
|
|
(T <SET OBJ ,WATER>)>)
|
|
(T
|
|
<COND (<NOT <FSET? ,PRSO ,CONTBIT>>
|
|
<TELL "How peculiar!" CR>
|
|
<RTRUE>)
|
|
(<NOT <FIRST? ,PRSO>>
|
|
<TELL "There's nothing to drink in the " D ,PRSO
|
|
"." CR>
|
|
<RTRUE>)
|
|
(T
|
|
<SET OBJ <FIRST? ,PRSO>>
|
|
<COND (<NOT <FSET? .OBJ ,DRINKBIT>>
|
|
<TELL
|
|
"I don't think there's anything worth drinking in the " D ,PRSO "." CR>
|
|
<RTRUE>)>)>)>
|
|
<PERFORM ,V?DRINK .OBJ>
|
|
<RTRUE>)
|
|
(<AND <EQUAL? ,PRSO ,GLOBAL-WATER ,WATER>
|
|
<EQUAL? ,PRSI ,NILE-RIBBAH>>
|
|
<COND (<NOT <EQUAL? ,HERE ,RIVER-BANK>>
|
|
<TELL "I see no " D ,PRSO " here." CR>
|
|
<RTRUE>)
|
|
(ELSE
|
|
<PERFORM ,V?DRINK ,PRSO>
|
|
<RTRUE>)>)
|
|
(<NOT <FSET? ,PRSI ,OPENBIT>>
|
|
<TELL "Better open the " D ,PRSI " first." CR>)
|
|
(<NOT <IN? ,PRSO ,PRSI>>
|
|
<TELL "I can't see any " D ,PRSO " in the " D ,PRSI "." CR>)
|
|
(T
|
|
<PERFORM ,V?DRINK ,PRSO>
|
|
<RTRUE>)>>
|
|
|
|
<ROUTINE NOT-HOLDING (OBJ)
|
|
<TELL "You're not holding the " D .OBJ "." CR>> |