mirror of
https://github.com/historicalsource/amfv
synced 2024-04-26 06:09:52 +03:00
3169 lines
79 KiB
Plaintext
3169 lines
79 KiB
Plaintext
"VERBS for
|
||
A MIND FOREVER VOYAGING
|
||
(c) Copyright 1985 Infocom, Inc. All Rights Reserved."
|
||
|
||
;"subtitle game commands"
|
||
|
||
<GLOBAL VERBOSITY 1> ;"0 = superbrief, 1 = brief, 2 = verbose"
|
||
|
||
<ROUTINE V-VERBOSE ()
|
||
<SETG VERBOSITY 2>
|
||
<SETG ELAPSED-TIME 0>
|
||
<TELL "Maximum verbosity." CR CR>
|
||
<V-LOOK>>
|
||
|
||
<ROUTINE V-BRIEF ()
|
||
<SETG VERBOSITY 1>
|
||
<SETG ELAPSED-TIME 0>
|
||
<TELL "Brief descriptions." CR>>
|
||
|
||
<ROUTINE V-SUPER-BRIEF ()
|
||
<SETG ELAPSED-TIME 0>
|
||
<SETG VERBOSITY 0>
|
||
<TELL "Super-brief descriptions." CR>>
|
||
|
||
<ROUTINE V-DIAGNOSE ()
|
||
<COND (<G? ,AIR-CONDITIONING-COUNTER 34>
|
||
<CRLF>
|
||
<COND (,SIMULATING
|
||
<TELL
|
||
"You feel as if you're burning up with fever: weak, hot, and sweaty." CR>)
|
||
(T
|
||
<TELL
|
||
"You detect a throbbing feeling, almost like a dull pain or a wave of heat,
|
||
which is severely impairing your functioning." CR>)>)
|
||
(<G? ,AIR-CONDITIONING-COUNTER 19>
|
||
<CRLF>
|
||
<COND (,SIMULATING
|
||
<TELL
|
||
"Despite the coolness of the air, you feel hot and flushed, almost as
|
||
though you were running a slight fever." CR>)
|
||
(T
|
||
<TELL
|
||
"You feel a strange sensation, a physical disturbance, which you
|
||
cannot seem to pin down." CR>)>)
|
||
(<NOT ,SIMULATING>
|
||
<TELL "All your systems seem to be functioning properly." CR>)
|
||
(,BRUISED
|
||
<TELL
|
||
"You have some tender bruises from the beating you received.">
|
||
<COND (,MUGGED
|
||
<TELL " Also, y" ,HEAD-THROBS>)>
|
||
<CRLF>)
|
||
(,MUGGED
|
||
<TELL "Y" ,HEAD-THROBS CR>)
|
||
(<EQUAL? ,SYEAR 2081>
|
||
<SCORE 40> ;"2 points"
|
||
<TELL
|
||
"You are weak from hunger, a dangerous condition at your age. Your last meal
|
||
was... you can't even remember. You remember picking at the remains of a
|
||
squirrel, but that might have been weeks ago. Your memories are jumbled.">
|
||
<COND (<FSET? ,CEMETERY ,ONBIT>
|
||
<TELL
|
||
" In addition, your jaw is throbbing from that attack in the cemetery.">)>
|
||
<CRLF>)
|
||
(T
|
||
<TELL "You are in good health." CR>)>>
|
||
|
||
<ROUTINE V-INVENTORY ("AUX" SPARE-KLUDGE)
|
||
<COND (<NOT ,SIMULATING>
|
||
<SETG YES-NO-FLAG 1>
|
||
<QUEUE I-YES-NO 2>
|
||
<TELL "You have no appendages, remember?" CR>)
|
||
(<NOT <FIRST? ,PLAYER>>
|
||
<TELL "You are empty-handed." CR>)
|
||
(T
|
||
<TELL "You are carrying:" CR>
|
||
<PRINT-CONT ,PLAYER>)>>
|
||
|
||
<ROUTINE V-QUIT ()
|
||
;<V-SCORE>
|
||
<TELL "Do you really want to quit?">
|
||
<COND (<YES?>
|
||
<QUIT>)
|
||
(T
|
||
<SETG ELAPSED-TIME 0>
|
||
<TELL "Ok." CR>)>>
|
||
|
||
<ROUTINE V-RESTART ()
|
||
;<V-SCORE T>
|
||
<SETG ELAPSED-TIME 0>
|
||
<TELL "Do you wish to restart?">
|
||
<COND (<YES?>
|
||
<TELL "Restarting." CR>
|
||
<RESTART>
|
||
<TELL "Failed." CR>)
|
||
(T
|
||
<TELL "Ok." CR>)>>
|
||
|
||
<ROUTINE FINISH ()
|
||
<PUTB ,P-INBUF 0 20> ;"so you can't input too many characters"
|
||
<TELL CR
|
||
"Would you like to start over, restore a saved position, or end this session?|
|
||
(Type RESTART, RESTORE, or QUIT): >">
|
||
<READ ,P-INBUF ,P-LEXV>
|
||
<PUTB ,P-INBUF 0 60>
|
||
<COND (<EQUAL? <GET ,P-LEXV 1> ,W?RESTART>
|
||
<RESTART>
|
||
<TELL "Failed." CR>
|
||
<FINISH>)
|
||
(<EQUAL? <GET ,P-LEXV 1> ,W?RESTORE>
|
||
<COND (<RESTORE>
|
||
<TELL "Bug #4M" CR>) ;"should be handled in V-SAVE"
|
||
(T
|
||
<TELL "Failed." CR>
|
||
<FINISH>)>)
|
||
(<EQUAL? <GET ,P-LEXV 1> ,W?QUIT ,W?Q>
|
||
<QUIT>)
|
||
(T
|
||
<FINISH>)>>
|
||
|
||
;<GLOBAL YES-INBUF <TABLE *3400* 0 0 0>> ;"bytes: 7 0 0 0 0 0 0 0"
|
||
|
||
;<GLOBAL YES-LEXV <TABLE *400* 0 0>> ;"bytes: 1 0 0 0 0 0"
|
||
|
||
;<ROUTINE YES? ("AUX" WORD VAL) ;"Stu's YES?"
|
||
<REPEAT ()
|
||
<PRINTI " >">
|
||
<READ ,YES-INBUF ,YES-LEXV>
|
||
<COND (<AND <NOT <0? <GETB ,YES-LEXV ,P-LEXWORDS>>>
|
||
<SET WORD <GET ,YES-LEXV ,P-LEXSTART>>>
|
||
<SET VAL <WT? .WORD ,PS?VERB ,P1?VERB>>
|
||
<COND (<EQUAL? .VAL ,ACT?YES>
|
||
<SET VAL T>
|
||
<RETURN>)
|
||
(<OR <EQUAL? .VAL ,ACT?NO>
|
||
<EQUAL? .WORD ,W?N>>
|
||
<SET VAL <>>
|
||
<RETURN>)>)>
|
||
<TELL "[Please type YES or NO.]">>
|
||
.VAL>
|
||
|
||
<ROUTINE YES? ("AUX" CHAR (X <>))
|
||
<PRINTI " (y/n) >">
|
||
<REPEAT ()
|
||
<BUFOUT <>>
|
||
<BUFOUT T>
|
||
<SET CHAR <INPUT 1>>
|
||
<COND (<OR <EQUAL? .CHAR 89 121> ;"ASCII values of Y and y"
|
||
<EQUAL? .CHAR 217 249>> ;"plus 128, to prevent bug"
|
||
<SET X T>
|
||
<CRLF>
|
||
<RETURN>)
|
||
(<OR <EQUAL? .CHAR 78 110> ;"ASCII values of N and n"
|
||
<EQUAL? .CHAR 206 238>> ;"plus 128, to prevent bug"
|
||
<CRLF>
|
||
<RETURN>)
|
||
(T
|
||
<TELL CR "[Type Y or N] >">)>>
|
||
<COND (.X
|
||
<RTRUE>)
|
||
(T
|
||
<RFALSE>)>>
|
||
|
||
<ROUTINE V-RESTORE ()
|
||
<COND (<RESTORE>
|
||
<TELL "Bug #4M" CR>) ;"this should be handled in V-SAVE"
|
||
(T
|
||
<SETG ELAPSED-TIME 0>
|
||
<TELL "Restore failed." CR>)>>
|
||
|
||
<ROUTINE V-SAVE ("AUX" X)
|
||
<SET X <SAVE>>
|
||
<SETG ELAPSED-TIME 0>
|
||
<COND (<NOT .X>
|
||
<TELL "Save failed." CR>)
|
||
(<EQUAL? .X 1>
|
||
<TELL "Ok, saved." CR>)
|
||
(T
|
||
<SETG L-MODE <>>
|
||
<SETG L-HERE <>>
|
||
<SETG L-DATE <>>
|
||
<SETG L-RECORDING <>>
|
||
<TELL "Ok, restored." CR CR>
|
||
<STATUS-LINE>
|
||
<V-LOOK>
|
||
<COND (<AND <EQUAL? ,HERE ,THE-COACHMAN ,SIMONS>
|
||
<EQUAL? ,MEAL-STATUS 4>>
|
||
<SETG WAITER-COUNTER <- ,WAITER-COUNTER 1>>
|
||
<I-MEAL>)
|
||
(<EQUAL? ,HERE ,NEWS>
|
||
<NEWS-F ,M-END>)
|
||
(<EQUAL? ,HERE ,TUBE-JUNCTION>
|
||
<TUBE-JUNCTION-F ,M-END>)
|
||
(<FSET? ,HERE ,TUBEBIT>
|
||
<RED-TUBE-STATION-F ,M-END>
|
||
<BROWN-TUBE-STATION-F ,M-END>)>
|
||
<RTRUE>)>>
|
||
|
||
;<GLOBAL TURNS 0>
|
||
|
||
;<ROUTINE V-SCORE ()
|
||
<TELL
|
||
"There's no scoring theory. However, I'm sure you'll be thrilled to know
|
||
that you've taken a total of " N ,TURNS " turns." CR>>
|
||
|
||
;<ROUTINE V-SCORE ()
|
||
<TELL
|
||
"Your score is " N ,SCORE " of a possible 400, in " N ,MOVES " move">
|
||
<COND (<NOT <1? ,MOVES>>
|
||
<TELL "s">)>
|
||
<TELL "." CR>>
|
||
|
||
<ROUTINE V-SCRIPT ()
|
||
<SETG ELAPSED-TIME 0>
|
||
<COND (<BTST <GET 0 8> 1>
|
||
<TELL "[Scripting is already on!]" CR>)
|
||
(T
|
||
<TELL "[Scripting is now on.]" CR>
|
||
<DIROUT ,D-PRINTER-ON> ;"turn on scripting"
|
||
;<PUT 0 8 <BOR <GET 0 8> 1>>
|
||
<DIROUT ,D-SCREEN-OFF> ;"following text shouldn't go to screen"
|
||
<COPR-NOTICE "begins">
|
||
<V-VERSION>
|
||
<DIROUT ,D-SCREEN-ON> ;"resume printing to the screen")>>
|
||
|
||
<ROUTINE V-UNSCRIPT ()
|
||
<SETG ELAPSED-TIME 0>
|
||
<COND (<BTST <GET 0 8> 1>
|
||
<DIROUT ,D-SCREEN-OFF> ;"following text shouldn't go to screen"
|
||
<COPR-NOTICE "ends">
|
||
<V-VERSION>
|
||
<DIROUT ,D-SCREEN-ON> ;"resume printing to the screen"
|
||
;<PUT 0 8 <BAND <GET 0 8> -2>>
|
||
<DIROUT ,D-PRINTER-OFF>
|
||
<TELL "[Scripting is now off.]" CR>)
|
||
(T
|
||
<TELL "[Scripting is already off!]" CR>)>>
|
||
|
||
|
||
<ROUTINE COPR-NOTICE (STRING)
|
||
<TELL "Here " .STRING " a transcript of interaction with ">>
|
||
|
||
<ROUTINE V-VERSION ("AUX" (CNT 17) V)
|
||
<SET V <BAND <GET 0 1> *3777*>>
|
||
<SETG ELAPSED-TIME 0>
|
||
<TITLE-PRINT>
|
||
<TELL CR
|
||
"Infocom interactive fiction - a science fiction story|
|
||
Copyright (c) 1985 by Infocom, Inc. All rights reserved." CR>
|
||
<TITLE-PRINT>
|
||
<TELL " is a trademark of Infocom, Inc.|
|
||
Release " N .V " / Serial number ">
|
||
<REPEAT ()
|
||
<COND (<G? <SET CNT <+ .CNT 1>> 23>
|
||
<RETURN>)
|
||
(T
|
||
<PRINTC <GETB 0 .CNT>>)>>
|
||
<CRLF>>
|
||
|
||
<ROUTINE V-$VERIFY ()
|
||
<COND (<AND <PRSO? ,INTNUM>
|
||
<EQUAL? ,P-NUMBER 469>>
|
||
<TELL N ,SERIAL CR>)
|
||
(T
|
||
<SETG ELAPSED-TIME 0>
|
||
<TELL "EZIP Interpreter ">
|
||
<PRINTN <GETB 0 30>>
|
||
<TELL ", Version ">
|
||
<PRINTC <GETB 0 31>>
|
||
<TELL ". Verifying..." CR>
|
||
<COND (<VERIFY>
|
||
<TELL "Good." CR>)
|
||
(T
|
||
<TELL CR "** Bad **" CR>)>)>>
|
||
|
||
<CONSTANT SERIAL 0>
|
||
|
||
<ROUTINE V-$REFRESH ()
|
||
<SETG ELAPSED-TIME 0>
|
||
<REFRESH-STATUS-LINE>>
|
||
|
||
<ROUTINE REFRESH-STATUS-LINE ()
|
||
<SETG L-RECORDING <>>
|
||
<SETG L-HERE <>>
|
||
<SETG L-MODE <>>
|
||
<SETG L-DATE <>>
|
||
<INIT-STATUS-LINE 2 T>
|
||
<STATUS-LINE>>
|
||
|
||
<ROUTINE V-$COMMAND-FILE ()
|
||
<SETG ELAPSED-TIME 0>
|
||
<DIRIN 1>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE V-$RANDOM ()
|
||
<SETG ELAPSED-TIME 0>
|
||
<COND (<NOT <PRSO? ,INTNUM>>
|
||
<TELL "Use a number!" CR>)
|
||
(T
|
||
<RANDOM <- 0 ,P-NUMBER>>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-$RECORD ()
|
||
<SETG ELAPSED-TIME 0>
|
||
<DIROUT ,D-RECORD-ON> ;"all READS and INPUTS get sent to command file"
|
||
<RTRUE>>
|
||
|
||
<ROUTINE V-$UNRECORD ()
|
||
<SETG ELAPSED-TIME 0>
|
||
<DIROUT ,D-RECORD-OFF>
|
||
<RTRUE>>
|
||
|
||
;<ROUTINE V-$CHEAT ()
|
||
<COND (<NOT <PRSO? ,INTNUM>>
|
||
<TELL "Try $CHEAT 1, 2 or 3." CR>)
|
||
(<EQUAL? ,P-NUMBER 1>
|
||
<SETG 2051-SCORE 15>
|
||
<SETG 2061-SCORE 25>
|
||
<SETG 2071-SCORE 45>
|
||
<SETG 2081-SCORE 20>
|
||
<SETG COMPLETED-TASKS T>
|
||
<SETG RECORDINGS-INCLUDE-SIMULATION T>
|
||
<SETG PART-FLAG 2>
|
||
<DISABLE <INT I-MESSAGE-C>>
|
||
<PUTP ,RECORD-BUFFER ,P?SIZE 100>
|
||
<TELL
|
||
"This isn't guaranteed to work unless you restart first..." CR>
|
||
<I-VIEW>)
|
||
(<EQUAL? ,P-NUMBER 2>
|
||
<PUT ,SIM-LEVEL-TABLE 0 0>
|
||
<TELL
|
||
"This isn't guaranteed to work unless you restart first..." CR>
|
||
<SETG COMPLETED-TASKS T>
|
||
<SETG PART-FLAG 3>
|
||
<DISABLE <INT I-MESSAGE-C>>
|
||
<I-WIN>)
|
||
(<EQUAL? ,P-NUMBER 3>
|
||
<TELL
|
||
"This isn't guaranteed to work unless you restart first..." CR>
|
||
<SETG COMPLETED-TASKS T>
|
||
<SETG PART-FLAG 2>
|
||
<DISABLE <INT I-MESSAGE-C>>
|
||
<PUT ,SIM-LEVEL-TABLE 0 251>
|
||
<PUT ,SIM-LEVEL-TABLE 1 301>
|
||
<PUT ,SIM-LEVEL-TABLE 2 401>
|
||
<PUT ,SIM-LEVEL-TABLE 3 601>)
|
||
(T
|
||
<PERFORM ,V?$CHEAT ,ME>
|
||
<RTRUE>)>>
|
||
|
||
;<ROUTINE V-$DATA ()
|
||
<TELL
|
||
"TIME: " N ,TIME ", DATE: " N ,DATE ", MONTH: " N ,MONTH CR
|
||
"STIME: " N ,STIME ", SDATE: " N ,SDATE ", SMONTH: " N ,SMONTH CR
|
||
"LIGHT-LEVEL: " N ,LIGHT-LEVEL ", LAST-SUN-TIME: " N ,LAST-SUN-TIME CR>>
|
||
|
||
;<GLOBAL DEBUG <>>
|
||
|
||
;<ROUTINE V-$DEBUG ()
|
||
<COND (,DEBUG
|
||
<SETG DEBUG <>>
|
||
<TELL "Debugging off." CR>)
|
||
(T
|
||
<SETG DEBUG T>
|
||
<TELL "Debugging on." CR>)>>
|
||
|
||
;"subtitle real verbs"
|
||
|
||
<ROUTINE V-ABORT ()
|
||
<COND (<EQUAL? ,PART-FLAG 4>
|
||
<TELL ,NOT-ACTIVE CR>)
|
||
(,SIMULATING
|
||
<COND (,RECORDING
|
||
<TELL "Deactivating the record feature and a">)
|
||
(T
|
||
<TELL "A">)>
|
||
<TELL "borting to ">
|
||
<PRINTD ,COMM-MODE>
|
||
<JIGS-UP ".">)
|
||
(T
|
||
<ERR "Not currently simulating.">)>>
|
||
|
||
<ROUTINE V-ABORT-OBJECT ()
|
||
<COND (<PRSO? ,SIMULATION-MODE>
|
||
<V-ABORT>)
|
||
(T
|
||
<TELL ,RECOGNIZE CR>)>>
|
||
|
||
;<ROUTINE V-AGAIN ("AUX" (OBJ <>))
|
||
<COND (,DEBUG
|
||
<COND (,L-PRSA
|
||
<TELL "[L-PRSA = ">
|
||
%<COND (<GASSIGNED? PREDGEN>
|
||
'<TELL N ,L-PRSA>)
|
||
(T
|
||
'<PRINC <NTH ,ACTIONS <+ <* ,L-PRSA 2> 1>>>)>)>
|
||
<COND (,L-PRSO
|
||
<TELL ", L-PRSO = " D ,L-PRSO>)>
|
||
<COND (,L-PRSI
|
||
<TELL ", L-PRSI = " D ,L-PRSI>)>
|
||
<TELL "]" CR>)>
|
||
<COND (<NOT ,L-PRSA>
|
||
<TELL "Not until you do something." CR>)
|
||
;(<MOBY-VERB?>
|
||
<TELL "Sorry, you can't use AGAIN after the previous verb." CR>
|
||
<SETG PRSA ,V?VERBOSE>) ;"so this won't run the clock"
|
||
(<EQUAL? ,NOT-HERE-OBJECT ,L-PRSO ,L-PRSI>
|
||
<TELL "You can't see that here." CR>)
|
||
(<EQUAL? ,L-PRSA ,V?WALK>
|
||
<DO-WALK ,L-PRSO>)
|
||
(T
|
||
<COND (<AND ,L-PRSO
|
||
<NOT <VISIBLE? ,L-PRSO>>>
|
||
<SET OBJ ,L-PRSO>)
|
||
(<AND ,L-PRSI
|
||
<NOT <VISIBLE? ,L-PRSI>>>
|
||
<SET OBJ ,L-PRSI>)>
|
||
<COND (<AND .OBJ
|
||
<NOT <EQUAL? .OBJ ,ROOMS>>>
|
||
<TELL "You can't see">
|
||
<ARTICLE .OBJ T>
|
||
<TELL " anymore." CR>
|
||
<RFATAL>)
|
||
(T
|
||
<PERFORM ,L-PRSA ,L-PRSO ,L-PRSI>
|
||
<RTRUE>)>)>>
|
||
|
||
<ROUTINE V-ALARM ()
|
||
<COND (<PRSO? ,ROOMS>
|
||
<PERFORM ,V?ALARM ,ME>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "I don't think">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " is sleeping." CR>)>>
|
||
|
||
<ROUTINE V-ANSWER ()
|
||
<COND (<ANSWER-SAY-SHARE>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "Nobody is awaiting your answer." CR>
|
||
<CLEAR-BUF>)>>
|
||
|
||
<ROUTINE ANSWER-SAY-SHARE ()
|
||
<COND (<AND <EQUAL? ,HERE ,SIMONS ,THE-COACHMAN>
|
||
<EQUAL? ,MEAL-STATUS 1>
|
||
<NEXT-WORD-YES?>>
|
||
<V-YES>
|
||
<CLEAR-BUF>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,HERE ,SIMONS ,THE-COACHMAN>
|
||
<EQUAL? ,MEAL-STATUS 1>
|
||
<EQUAL? <GET ,P-LEXV ,P-CONT> ,W?NO>>
|
||
<V-NO>
|
||
<CLEAR-BUF>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,HERE ,HOSPITAL ,POLICE-STATION>
|
||
<NEXT-WORD-YES?>>
|
||
<V-YES>
|
||
<CLEAR-BUF>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,HERE ,HOSPITAL ,POLICE-STATION>
|
||
<EQUAL? <GET ,P-LEXV ,P-CONT> ,W?NO>>
|
||
<V-NO>
|
||
<CLEAR-BUF>
|
||
<RTRUE>)
|
||
(<AND <G? ,GRIMWOLD-COUNTER 0>
|
||
<NEXT-WORD-YES?>>
|
||
<V-YES>
|
||
<CLEAR-BUF>
|
||
<RTRUE>)
|
||
(<AND <G? ,GRIMWOLD-COUNTER 0>
|
||
<EQUAL? <GET ,P-LEXV ,P-CONT> ,W?NO>>
|
||
<V-NO>
|
||
<CLEAR-BUF>
|
||
<RTRUE>)
|
||
(T
|
||
<RFALSE>)>>
|
||
|
||
<ROUTINE NEXT-WORD-YES? ()
|
||
<COND (<OR <EQUAL? <GET ,P-LEXV ,P-CONT> ,W?YES ,W?Y ,W?YEAH>
|
||
<EQUAL? <GET ,P-LEXV ,P-CONT> ,W?OK ,W?OKAY ,W?SURE>
|
||
<EQUAL? <GET ,P-LEXV ,P-CONT> ,W?YEA ,W?YUP ,W?YEP>
|
||
<EQUAL? <GET ,P-LEXV ,P-CONT> ,W?AYE ,W?AFFIRMATI>>
|
||
<RTRUE>)
|
||
(T
|
||
<RFALSE>)>>
|
||
|
||
<ROUTINE V-ASK-ABOUT ()
|
||
<COND (<PRSO? ,ME>
|
||
<PERFORM ,V?TELL ,ME>
|
||
<RTRUE>)
|
||
(<FSET? ,PRSO ,ACTORBIT>
|
||
<SETG WINNER ,PRSO>
|
||
<PERFORM ,V?TELL-ABOUT ,ME ,PRSI>
|
||
<SETG P-IT-OBJECT ,WINNER>
|
||
<SETG WINNER ,PLAYER>
|
||
<RTRUE>)
|
||
;(<FSET? ,PRSO ,ACTORBIT>
|
||
<TELL "A long silence tells you that">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " isn't interested in talking about">
|
||
<COND (<IN? ,PRSI ,ROOMS>
|
||
<TELL " that">)
|
||
(T
|
||
<ARTICLE ,PRSI T>)>
|
||
<TELL "." CR>)
|
||
(T
|
||
<PERFORM ,V?TELL ,PRSO>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-ASK-NO-ONE-FOR ("AUX" ACTOR)
|
||
<COND (<SET ACTOR <FIND-IN ,HERE ,ACTORBIT>>
|
||
<PERFORM ,V?ASK-FOR .ACTOR ,PRSO>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "There's no one here to ask!" CR>)>>
|
||
|
||
<ROUTINE V-ASK-FOR ()
|
||
<TELL "Not surprisingly,">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " doesn't oblige." CR>>
|
||
|
||
<ROUTINE V-BITE ()
|
||
<HACK-HACK "Biting">>
|
||
|
||
<ROUTINE PRE-BOARD ()
|
||
<COND (<PRSO? <LOC ,PLAYER>>
|
||
<TELL ,LOOK-AROUND CR>)>>
|
||
|
||
<ROUTINE V-BOARD ()
|
||
<COND (<FSET? ,PRSO ,VEHBIT>
|
||
<MOVE ,PLAYER ,PRSO>
|
||
<COND (<PRSO? ,STADIUM-STANDS>
|
||
<FCLEAR ,PRSO ,FURNITUREBIT>)>
|
||
<TELL "You are now ">
|
||
<COND (<PRSO? ,DINETTE-SET ,GLOBAL-TABLE>
|
||
<TELL "seated at">)
|
||
(<FSET? ,PRSO ,FURNITUREBIT>
|
||
<TELL "on">)
|
||
(T
|
||
<TELL "in">)>
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>
|
||
;<APPLY <GETP ,PRSO ,P?ACTION> ,M-ENTER>)
|
||
(T
|
||
<TELL "You can't get into">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "!" CR>)>>
|
||
|
||
<ROUTINE PRE-BUY ()
|
||
<COND (<NOT ,SIMULATING>
|
||
;<TELL
|
||
"Unfortunately, being a sentient computer doesn't pay very well." CR>
|
||
<PERFORM ,V?EAT ,PRSO>
|
||
<RTRUE>)
|
||
(<AND <PRSO? ,MEAL>
|
||
<EQUAL? ,HERE ,SIMONS ,THE-COACHMAN>>
|
||
<RFALSE>)
|
||
(<PRSO? ,CREDIT-CARD>
|
||
<TELL "You must think that money grows on trees." CR>)
|
||
(<NOT <HELD? ,CREDIT-CARD>>
|
||
<TELL "You don't have your ">
|
||
<PRINTD ,CREDIT-CARD>
|
||
<TELL "." CR>)
|
||
(T
|
||
<MOVE ,CREDIT-CARD ,PLAYER>
|
||
<RFALSE>)>>
|
||
|
||
<ROUTINE V-BUY ()
|
||
<TELL "You can't buy">
|
||
<ARTICLE ,PRSO>
|
||
<TELL "!" CR>>
|
||
|
||
<ROUTINE V-BUY-WITH ()
|
||
<COND (<PRSI? ,CREDIT-CARD>
|
||
<PERFORM ,V?BUY ,PRSO>
|
||
<RTRUE>)
|
||
(<NOT ,SIMULATING>
|
||
<PERFORM ,V?EAT ,PRSO>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "You can buy things only with your ">
|
||
<PRINTD ,CREDIT-CARD>
|
||
<TELL "." CR>)>>
|
||
|
||
<ROUTINE V-CALL ()
|
||
<COND (<FSET? ,PRSO ,ACTORBIT>
|
||
<COND (<VISIBLE? ,PRSO>
|
||
<TELL "You do so, but">
|
||
<ARTICLE ,PRSO>
|
||
<TELL " doesn't seem to hear you." CR>)
|
||
(T
|
||
<TELL "But">
|
||
<ARTICLE ,PRSO>
|
||
<TELL " isn't within earshot." CR>)>)
|
||
(T
|
||
<TELL "That's an odd thought." CR>)>>
|
||
|
||
<ROUTINE V-CHASTISE ()
|
||
<TELL
|
||
"Use prepositions to indicate precisely what you want to do: LOOK AT the
|
||
object, LOOK INSIDE it, LOOK UNDER it, etc." CR>>
|
||
|
||
<ROUTINE V-CLIMB-DOWN ()
|
||
<COND (<PRSO? ,ROOMS>
|
||
<DO-WALK ,P?DOWN>)
|
||
(T
|
||
<V-LOCK>)>>
|
||
|
||
<ROUTINE V-CLIMB-FOO ()
|
||
<COND (<PRSO? ,ROOMS>
|
||
<DO-WALK ,P?UP>)
|
||
(T
|
||
<V-LOCK>)>>
|
||
|
||
<ROUTINE V-CLIMB-ON ()
|
||
<COND (<FSET? ,PRSO ,VEHBIT>
|
||
<PERFORM ,V?BOARD ,PRSO>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "You can't climb onto">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>)>>
|
||
|
||
<ROUTINE V-CLIMB-OVER ()
|
||
<V-LOCK>>
|
||
|
||
<ROUTINE V-CLIMB-UP ()
|
||
<COND (<PRSO? ,ROOMS>
|
||
<DO-WALK ,P?UP>)
|
||
(T
|
||
<V-LOCK>)>>
|
||
|
||
<ROUTINE V-CLOSE ()
|
||
<COND (<OR <FSET? ,PRSO ,SURFACEBIT>
|
||
<FSET? ,PRSO ,ACTORBIT>>
|
||
<V-COUNT>)
|
||
(<FSET? ,PRSO ,VEHBIT>
|
||
<TELL "Huh?" CR>)
|
||
(<OR <FSET? ,PRSO ,DOORBIT>
|
||
<FSET? ,PRSO ,CONTBIT>>
|
||
<COND (<FSET? ,PRSO ,OPENBIT>
|
||
<TELL "Okay,">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " is now closed." CR>
|
||
<FCLEAR ,PRSO ,OPENBIT>)
|
||
(T
|
||
<TELL ,ALREADY-CLOSED CR>)>)
|
||
(T
|
||
<TELL-ME-HOW>)>>
|
||
|
||
<ROUTINE V-COMFORT ()
|
||
<COND (<FSET? ,PRSO ,ACTORBIT>
|
||
<TELL "But">
|
||
<ARTICLE ,PRSO>
|
||
<TELL " doesn't need comforting." CR>)
|
||
(T
|
||
<V-COUNT>)>>
|
||
|
||
<ROUTINE V-COUNT ()
|
||
<TELL <PICK-ONE ,IMPOSSIBLES> CR>>
|
||
|
||
<ROUTINE V-CROSS ()
|
||
<TELL "You can't cross">
|
||
<ARTICLE ,PRSO>
|
||
<TELL "." CR>>
|
||
|
||
<ROUTINE V-CRY ()
|
||
<COND (,MITCHELL-RAID-FLAG
|
||
<TELL "The tears come easily." CR>)
|
||
(,SIMULATING
|
||
<TELL "A tear trickles down your cheek." CR>)
|
||
(T
|
||
<TELL "You have no tear ducts." CR>)>>
|
||
|
||
<ROUTINE V-CUT ()
|
||
<COND (<NOT ,PRSI>
|
||
<V-LOCK>)
|
||
(T
|
||
<TELL "The \"cutting edge\" of">
|
||
<ARTICLE ,PRSI>
|
||
<TELL " is hardly adequate." CR>)>>
|
||
|
||
<ROUTINE V-DANCE ()
|
||
<TELL "That was fun. Well, at least good exercise." CR>>
|
||
|
||
<ROUTINE V-DATE ()
|
||
<TELL "Today is ">
|
||
<COND (,SIMULATING
|
||
<TELL N ,SMONTH "/" N ,SDATE "/" N ,SYEAR>)
|
||
(T
|
||
<TELL N ,MONTH "/" N ,DATE "/" N ,YEAR>)>
|
||
<TELL "." CR>>
|
||
|
||
<ROUTINE V-DIG ()
|
||
<V-YELL>>
|
||
|
||
<ROUTINE V-DISEMBARK ()
|
||
<COND (<AND <FSET? ,PRSO ,TAKEBIT> ;"since GET OUT is also TAKE OUT"
|
||
<EQUAL? <META-LOC ,PRSO> ,HERE>
|
||
<NOT <IN? ,PRSO ,HERE>>
|
||
<NOT <IN? ,PRSO ,PLAYER>>>
|
||
<PERFORM ,V?TAKE ,PRSO>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? <LOC ,PRSO> ,WALLET>
|
||
<HELD? ,WALLET>>
|
||
<PERFORM ,V?TAKE ,PRSO ,WALLET>
|
||
<RTRUE>)
|
||
(<NOT <PRSO? <LOC ,PLAYER>>>
|
||
<TELL "But you're not in">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "!" CR>)
|
||
(<AND <PRSO? ,SEAT>
|
||
<FSET? ,PRSO ,ONBIT>>
|
||
<FCLEAR ,PRSO ,ONBIT>
|
||
<MOVE ,PLAYER ,HERE>
|
||
<TELL
|
||
"You stand slowly, still feeling a little shaky from
|
||
your joybooth experience." CR>)
|
||
(T
|
||
<MOVE ,PLAYER ,HERE>
|
||
<TELL "You are no longer ">
|
||
<COND (<PRSO? ,RESTAURANT-TABLE ,DINETTE-SET>
|
||
<TELL "at">)
|
||
(<FSET? ,PRSO ,FURNITUREBIT>
|
||
<TELL "on">)
|
||
(T
|
||
<TELL "in">)>
|
||
<COND (<PRSO? ,STADIUM-STANDS>
|
||
<FSET ,PRSO ,FURNITUREBIT>)>
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>)>>
|
||
|
||
<ROUTINE V-DISPLAY ()
|
||
<V-YELL>>
|
||
|
||
<ROUTINE V-DRINK ()
|
||
<COND (<FSET? ,PRSO ,DRINKBIT>
|
||
<MOVE ,PRSO ,LOCAL-GLOBALS>
|
||
<TELL "Drunk." CR>)
|
||
(T
|
||
<TELL "You can't drink that!" CR>)>>
|
||
|
||
<ROUTINE V-DRINK-FROM ()
|
||
<V-COUNT>>
|
||
|
||
<ROUTINE PRE-DROP ()
|
||
<COND (<IDROP>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-DROP ()
|
||
;<MOVE ,PRSO <LOC ,WINNER>> ;"not removed for any particular bug..."
|
||
<MOVE ,PRSO ,HERE>
|
||
<TELL "Dropped." CR>>
|
||
|
||
<ROUTINE V-EAT ()
|
||
<COND (<FSET? ,PRSO ,EATBIT>
|
||
<MOVE ,PRSO ,LOCAL-GLOBALS>
|
||
<TELL "Eaten." CR>)
|
||
(T
|
||
<TELL "Nutritionists agree that">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " is inedible." CR>)>>
|
||
|
||
<ROUTINE V-ENTER ("AUX" VEHICLE)
|
||
<COND (<AND ,PRSO
|
||
<IN? ,PRSO ,ROOMS>>
|
||
<GOTO ,PRSO>)
|
||
(<EQUAL? ,HERE ,TUBE-JUNCTION>
|
||
<DO-WALK ,P?IN>)
|
||
(<SET VEHICLE <FIND-IN ,HERE ,VEHBIT>>
|
||
<PERFORM ,V?BOARD .VEHICLE>
|
||
<RTRUE>)
|
||
(T
|
||
<DO-WALK ,P?IN>)>>
|
||
|
||
<ROUTINE V-EXAMINE ()
|
||
<COND (<UNSEEABLE-OBJECT>
|
||
<RTRUE>)
|
||
(<OR <FSET? ,PRSO ,DOORBIT>
|
||
<FSET? ,PRSO ,VEHBIT>>
|
||
<V-LOOK-INSIDE>)
|
||
(<OR <FSET? ,PRSO ,ACTORBIT>
|
||
<FSET? ,PRSO ,MYBIT>>
|
||
<TELL "You see nothing unusual about">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>)
|
||
(<FSET? ,PRSO ,CONTBIT>
|
||
<COND (<OR <FSET? ,PRSO ,OPENBIT>
|
||
<FSET? ,PRSO ,SURFACEBIT>>
|
||
<V-LOOK-INSIDE>)
|
||
(T
|
||
<TELL "It's closed." CR>)>)
|
||
(<FSET? ,PRSO ,READBIT>
|
||
<PERFORM ,V?READ ,PRSO>
|
||
<RTRUE>)
|
||
(<PRSO? ;,EYES ;,TEETH ,HEAD ;,EARS>
|
||
<TELL "That would involve quite a contortion." CR>)
|
||
(T
|
||
<TELL "Totally ordinary looking " D ,PRSO "." CR>)>>
|
||
|
||
<ROUTINE UNSEEABLE-OBJECT ()
|
||
<COND (<FSET? ,PRSO ,UNSEENBIT>
|
||
<TELL "You can't actually see">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>
|
||
<RTRUE>)
|
||
(T
|
||
<RFALSE>)>>
|
||
|
||
;<ROUTINE V-EXAMINE-THROUGH ()
|
||
<TELL "This reveals nothing new." CR>>
|
||
|
||
<ROUTINE V-EXIT () ;"EXIT OBJECT now = V-DISEMBARK directly"
|
||
<COND (<FSET? <LOC ,PLAYER> ,VEHBIT>
|
||
<PERFORM ,V?DISEMBARK <LOC ,PLAYER>>
|
||
<RTRUE>)
|
||
(T
|
||
<DO-WALK ,P?OUT>)>>
|
||
|
||
<ROUTINE V-FEED ()
|
||
<TELL "A nice thought, but">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " doesn't need feeding." CR>>
|
||
|
||
<ROUTINE V-FILL ()
|
||
<TELL "You can't fill that!" CR>>
|
||
|
||
<ROUTINE V-FIND ("OPTIONAL" (WHERE <>) "AUX" (L <LOC ,PRSO>))
|
||
<COND (<PRSO? ,HANDS ,HEAD ;,EARS ;,TEETH ;,EYES>
|
||
<SETG YES-NO-FLAG 2>
|
||
<QUEUE I-YES-NO 2>
|
||
<TELL "Are you sure">
|
||
<ARTICLE ,PRSO T>
|
||
<PLURAL ,PRSO>
|
||
<TELL " lost?" CR>)
|
||
(<IN? ,PRSO ,PLAYER>
|
||
<TELL "You have it!" CR>)
|
||
(<OR <GLOBAL-IN? ,PRSO ,HERE>
|
||
<IN? ,PRSO ,GLOBAL-OBJECTS>
|
||
<NOT .L>>
|
||
<TELL "You figure it out!" CR>)
|
||
(<AND <FSET? .L ,ACTORBIT>
|
||
<VISIBLE? .L>>
|
||
<TELL "As far as you can tell,">
|
||
<ARTICLE .L T>
|
||
<TELL " has it." CR>)
|
||
(<AND <FSET? .L ,CONTBIT>
|
||
<VISIBLE? ,PRSO>>
|
||
<TELL "It's in">
|
||
<ARTICLE .L T>
|
||
<TELL "." CR>)
|
||
(<VISIBLE? ,PRSO>
|
||
<TELL "Right in front of you!" CR>)
|
||
(.WHERE
|
||
<TELL "Beats me." CR>)
|
||
(T
|
||
<TELL "You'll have to do that yourself." CR>)>>
|
||
|
||
<ROUTINE V-FIRST-LOOK ()
|
||
<COND (<DESCRIBE-ROOM>
|
||
<COND (<EQUAL? ,VERBOSITY 1 2>
|
||
<DESCRIBE-OBJECTS>)>)>>
|
||
|
||
<ROUTINE V-FLUSH ()
|
||
<V-COUNT>>
|
||
|
||
<ROUTINE V-FOLLOW ()
|
||
;<COND (,DEBUG
|
||
<TELL "[FOLLOW-FLAG = " N ,FOLLOW-FLAG ".]" CR>)>
|
||
<COND (<VISIBLE? ,PRSO>
|
||
<RIGHT-HERE>)
|
||
(<NOT <FSET? ,PRSO ,ACTORBIT>>
|
||
<V-COUNT>)
|
||
(<EQUAL? ,FOLLOW-FLAG 9>
|
||
<TELL "You didn't notice which way">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " went." CR>)
|
||
(T
|
||
<TELL "You have no idea where">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " is." CR>)>>
|
||
|
||
<GLOBAL FOLLOW-FLAG 0>
|
||
|
||
<ROUTINE I-UNFOLLOW ()
|
||
;<COND (,DEBUG
|
||
<TELL "[Setting FOLLOW-FLAG to 0.]" CR>)>
|
||
<SETG FOLLOW-FLAG 0>
|
||
<RFALSE>>
|
||
|
||
<ROUTINE PRE-GIVE ()
|
||
<COND (<IDROP>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-GIVE ()
|
||
<COND (<FSET? ,PRSI ,ACTORBIT>
|
||
<TELL "After a moment,">
|
||
<ARTICLE ,PRSI T>
|
||
<TELL " refuses your offer." CR>)
|
||
(T
|
||
<TELL "You can't give">
|
||
<ARTICLE ,PRSO>
|
||
<TELL " to">
|
||
<ARTICLE ,PRSI>
|
||
<TELL "!" CR>)>>
|
||
|
||
<ROUTINE V-HANG ()
|
||
<V-COUNT>>
|
||
|
||
<ROUTINE V-HELLO ("AUX" ACTOR)
|
||
<COND (,PRSO
|
||
<COND (<FSET? ,PRSO ,ACTORBIT>
|
||
<TELL
|
||
"[That's not the correct way to speak to people.
|
||
Try \"" D ,PRSO ", hello.\"]" CR>)
|
||
(T
|
||
<V-COUNT>)>)
|
||
(<SET ACTOR <FIND-IN ,HERE ,ACTORBIT>>
|
||
<ADDRESS-DIRECTLY .ACTOR>)
|
||
(T
|
||
<PERFORM ,V?TELL ,ME>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-HELP ()
|
||
<SETG ELAPSED-TIME 0>
|
||
<TELL
|
||
"[If you're really stuck, you can order an InvisiClues Hint Booklet from your
|
||
dealer, or via mail order using the form that came in your package.]" CR>>
|
||
|
||
<ROUTINE V-HIDE ()
|
||
<TELL "There's no place to hide here." CR>>
|
||
|
||
<ROUTINE V-HOLD ()
|
||
<COND (<FSET? ,PRSO ,ACTORBIT>
|
||
<PERFORM ,V?COMFORT ,PRSO>
|
||
<RTRUE>)
|
||
(T
|
||
<PERFORM ,V?TAKE ,PRSO>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-INCOMPLETE-QUESTION ()
|
||
<TELL "Why? When? Which?" CR>>
|
||
|
||
<ROUTINE V-KICK ()
|
||
<HACK-HACK "Kicking">>
|
||
|
||
<ROUTINE V-KILL ()
|
||
<TELL "Violence solves nothing." CR>>
|
||
|
||
<ROUTINE V-KNOCK ()
|
||
<COND (<FSET? ,PRSO ,DOORBIT>
|
||
<TELL "Nothing happens." CR>)
|
||
(T
|
||
<HACK-HACK "Knocking on">)>>
|
||
|
||
<ROUTINE V-KISS ()
|
||
<TELL "You reconsider." CR>>
|
||
|
||
<ROUTINE V-LEAP ()
|
||
<COND (<AND ,PRSO
|
||
<NOT <IN? ,PRSO ,HERE>>>
|
||
<V-COUNT>)
|
||
(T
|
||
<V-SKIP>)>>
|
||
|
||
<ROUTINE V-LEAVE ()
|
||
<COND (<NOT ,PRSO>
|
||
<SETG PRSO ,ROOMS>)>
|
||
<COND (<PRSO? ,ROOMS>
|
||
<DO-WALK ,P?OUT>)
|
||
(<PRSO? <LOC ,PLAYER>>
|
||
<PERFORM ,V?DISEMBARK ,PRSO>
|
||
<RTRUE>)
|
||
(T
|
||
<PERFORM ,V?DROP ,PRSO>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-LIE-DOWN ()
|
||
<COND (<PRSO? ,ROOMS>
|
||
<COND (<EQUAL? ,HERE ,BEDROOM>
|
||
<PERFORM ,V?LIE-DOWN ,BED>
|
||
<RTRUE>)
|
||
(T
|
||
<PERFORM ,V?LIE-DOWN ,GROUND>
|
||
<RTRUE>)>)
|
||
(T
|
||
<PERFORM ,V?BOARD ,PRSO>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-LISTEN ()
|
||
<COND (<EQUAL? ,HERE ,LIBRARY-ROOM ,INTERFACE-ROOM>
|
||
<ERR "Aural perception is not defined here.">)
|
||
(<NOT ,PRSO>
|
||
<COND (<EQUAL? ,HERE ,COMM-ROOM>
|
||
<ERR "You must first access a communication outlet.">)
|
||
(<EQUAL? ,HERE ,CONTROL-CENTER>
|
||
<PERFORM ,V?LISTEN ,CONVERSATION>
|
||
<RTRUE>)
|
||
(<EQUAL? ,HERE ,NEWS>
|
||
<PERFORM ,V?EXAMINE ,CURRENT-FEED>
|
||
<RTRUE>)
|
||
(<EQUAL? ,HERE ,WAREHOUSE-2>
|
||
<TELL "A loud alarm is ringing." CR>)
|
||
(<AND <EQUAL? ,HERE ,DORM>
|
||
<EQUAL? ,SYEAR 2041 2051>>
|
||
<TELL "Loud music is playing nearby." CR>)
|
||
(<EQUAL? ,HERE ,ALLEY ,BAR>
|
||
<TELL "Loud music comes from the ">
|
||
<COND (<EQUAL? ,HERE ,ALLEY>
|
||
<TELL "end of the alley." CR>)
|
||
(T
|
||
<TELL "jukebox." CR>)>)
|
||
(<AND <EQUAL? ,HERE ,MAIN-STREET-BRIDGE>
|
||
<G? ,WILD-DOG-COUNTER 0>>
|
||
<PERFORM ,V?LISTEN ,BARKING>
|
||
<RTRUE>)
|
||
(<IN? ,RYDER ,HERE>
|
||
<PRINTD ,RYDER>
|
||
<TELL " continues his harangue:" CR>)
|
||
(<AND <EQUAL? ,HERE ,CONSTRUCTION-SITE-1>
|
||
<EQUAL? ,LIGHT-LEVEL 3>>
|
||
<PERFORM ,V?LISTEN ,DERRICOPTERS>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,HERE ,CORE>
|
||
<EQUAL? <GET ,HVAC-STATUS-TABLE 11> 1>>
|
||
<PERFORM ,V?LISTEN ,VENT>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL
|
||
"At the moment, you hear nothing interesting." CR>)>)
|
||
(T
|
||
<TELL "At the moment,">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " make">
|
||
<COND (<NOT <FSET? ,PRSO ,PLURALBIT>>
|
||
<TELL "s">)>
|
||
<TELL " no sound." CR>)>>
|
||
|
||
<ROUTINE V-LOCK ()
|
||
<TELL <PICK-ONE ,YUKS> CR>>
|
||
|
||
<ROUTINE V-LOOK ()
|
||
<COND (<OR <EQUAL? ,HERE ,SLEEP-ROOM ,INTERFACE-ROOM>
|
||
<EQUAL? ,HERE ,LIBRARY-ROOM ,SIMULATION-ROOM>>
|
||
<TELL <GETP ,MODE ,P?LDESC> CR>)
|
||
(<EQUAL? ,HERE ,COMM-ROOM>
|
||
<TELL "You have entered ">
|
||
<PRINTD ,COMM-MODE>
|
||
<TELL ". ">
|
||
<COND (<NOT <EQUAL? ,PART-FLAG 4>>
|
||
<TELL
|
||
"The following locations are equipped with communication outlets:" CR>)>
|
||
<PERFORM ,V?DISPLAY ,OUTLETS>
|
||
<RTRUE>)
|
||
(T
|
||
<DESCRIBE-ROOM T>
|
||
<DESCRIBE-OBJECTS T>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-LOOK-BEHIND ()
|
||
<COND (<UNSEEABLE-OBJECT>
|
||
<RTRUE>)>
|
||
<TELL "There is nothing behind">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>>
|
||
|
||
<ROUTINE V-LOOK-DOWN ()
|
||
<COND (<PRSO? ,ROOMS>
|
||
<PERFORM ,V?EXAMINE ,GROUND>
|
||
<RTRUE>)
|
||
(T
|
||
<PERFORM ,V?LOOK-INSIDE ,PRSO>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-LOOK-INSIDE ()
|
||
<COND (<UNSEEABLE-OBJECT>
|
||
<RTRUE>)
|
||
(<FSET? ,PRSO ,ACTORBIT>
|
||
<TELL "There is nothing special to be seen." CR>)
|
||
(<FSET? ,PRSO ,DOORBIT>
|
||
<TELL "All you can tell is that">
|
||
<ARTICLE ,PRSO T>
|
||
<PLURAL ,PRSO>
|
||
<COND (<FSET? ,PRSO ,OPENBIT>
|
||
<TELL " open." CR>)
|
||
(T
|
||
<TELL " closed." CR>)>)
|
||
(<FSET? ,PRSO ,VEHBIT>
|
||
<COND (<AND <PRSO? ,COUCH>
|
||
<IN? ,JILL ,HERE>
|
||
<OR <EQUAL? ,JILL-COUNTER 4 10>
|
||
<EQUAL? ,SYEAR 2071>>>
|
||
<JILL-DESCFCN>)
|
||
(<AND <PRSO? ,BED>
|
||
<IN? ,JILL ,HERE>
|
||
<OR <EQUAL? ,JILL-COUNTER 0 12>
|
||
<EQUAL? ,SYEAR 2061>>>
|
||
<JILL-DESCFCN>)
|
||
(<AND <PRSO? ,SEAT>
|
||
<EQUAL? ,HERE ,SKYCAB>>
|
||
<JILL-DESCFCN>)
|
||
(<PRSO? <LOC ,PLAYER>>
|
||
<DESCRIBE-VEHICLE>)
|
||
(T
|
||
<TELL "You see nothing special." CR>)>)
|
||
(<FSET? ,PRSO ,SURFACEBIT>
|
||
<COND (<FIRST? ,PRSO>
|
||
<PRINT-CONT ,PRSO>)
|
||
(T
|
||
<TELL "There is nothing on">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>)>)
|
||
(<FSET? ,PRSO ,CONTBIT>
|
||
<COND (<SEE-INSIDE? ,PRSO>
|
||
<COND (<FIRST? ,PRSO>
|
||
<PRINT-CONT ,PRSO>)
|
||
(T
|
||
<TELL "It's empty." CR>)>)
|
||
(<AND <NOT <FSET? ,PRSO ,OPENBIT>>
|
||
<FIRST? ,PRSO>>
|
||
<PERFORM ,V?OPEN ,PRSO>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "It seems that">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " is closed." CR>)>)
|
||
(T
|
||
<TELL "You can't do that." CR>)>>
|
||
|
||
<ROUTINE V-LOOK-UNDER ()
|
||
<COND (<HELD? ,PRSO>
|
||
<COND (<FSET? ,PRSO ,WORNBIT>
|
||
<TELL "You're wearing it!" CR>)
|
||
(T
|
||
<TELL "You're holding it!" CR>)>)
|
||
(<UNSEEABLE-OBJECT>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "There is nothing but ">
|
||
<COND (<FSET? ,HERE ,OUTSIDEBIT>
|
||
<TELL "dirt">)
|
||
(T
|
||
<TELL "dust">)>
|
||
<TELL " there." CR>)>>
|
||
|
||
<ROUTINE V-LOOK-UP ()
|
||
<COND ;(<NOT ,LIT>
|
||
<TELL ,TOO-DARK CR>)
|
||
(<PRSO? ,ROOMS>
|
||
<COND (<FSET? ,HERE ,OUTSIDEBIT>
|
||
<PERFORM ,V?EXAMINE ,SKY>
|
||
<RTRUE>)
|
||
(T
|
||
<PERFORM ,V?EXAMINE ,CEILING>
|
||
<RTRUE>)>)
|
||
(T
|
||
<PERFORM ,V?LOOK-INSIDE ,PRSO>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-LOWER ()
|
||
<V-RAISE>>
|
||
|
||
<ROUTINE V-MACO ()
|
||
<COND (<EQUAL? ,PART-FLAG 4>
|
||
<TELL ,NOT-ACTIVE CR>)
|
||
(<PSYCH-CHECK>
|
||
<RFATAL>)
|
||
(<EQUAL? ,HERE ,CORE>
|
||
<TELL ,LOOK-AROUND CR>)
|
||
(<EQUAL? ,MODE ,COMM-MODE>
|
||
<GOTO ,CORE>)
|
||
(T
|
||
<TELL ,ENTER-COMM-MODE CR>)>>
|
||
|
||
<ROUTINE V-MOVE ()
|
||
<COND (<HELD? ,PRSO>
|
||
<TELL "Why juggle objects?" CR>)
|
||
;(<FSET? ,PRSO ,INTEGRALBIT>
|
||
<PART-OF>)
|
||
(<LOC-CLOSED>
|
||
<RTRUE>)
|
||
(<FSET? ,PRSO ,TAKEBIT>
|
||
<TELL "Moving">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " reveals nothing." CR>)
|
||
(T
|
||
<TELL "You can't move">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>)>>
|
||
|
||
<ROUTINE V-MUNG ()
|
||
<HACK-HACK "Trying to break">>
|
||
|
||
<ROUTINE V-NO ()
|
||
<COND (<AND <EQUAL? ,HERE ,SIMONS ,THE-COACHMAN>
|
||
<EQUAL? ,MEAL-STATUS 1>>
|
||
<SETG MEAL-STATUS 2>
|
||
<TELL
|
||
"\"Fine,\" says the maitre d'. \"I'll come back when the rest of your
|
||
party arrives.\" He walks away." CR>)
|
||
(<G? ,GRIMWOLD-COUNTER 0>
|
||
<TELL "Grimwold fidgets impatiently." CR>)
|
||
(<OR <EQUAL? ,YES-NO-FLAG 1 2 3>
|
||
<EQUAL? ,YES-NO-FLAG 4 5>>
|
||
<V-YES>)
|
||
(<EQUAL? ,YES-NO-FLAG 6>
|
||
<TELL "Perelman looks unhappy. \"I'm counting on you.\"" CR>)
|
||
(<EQUAL? ,YES-NO-FLAG 7>
|
||
<COND (<EQUAL? ,SYEAR 2041>
|
||
<TELL "\"Don't worry -- things'll turn around!\"" CR>)
|
||
(T
|
||
<TELL "\"What else is new" ,CHANGE-AGENTS CR>)>)
|
||
(<EQUAL? ,YES-NO-FLAG 8>
|
||
<PERFORM ,V?TELL ,SABOTEURS>
|
||
<RTRUE>)
|
||
(<EQUAL? ,YES-NO-FLAG 9 11>
|
||
<TELL "Jill frowns at you." CR>)
|
||
(<EQUAL? ,YES-NO-FLAG 10>
|
||
<TELL "Jill gives you a kiss." CR>)
|
||
(<EQUAL? ,YES-NO-FLAG 12>
|
||
<COND (<EQUAL? ,HERE ,HOSPITAL>
|
||
<TELL
|
||
"The nurse replies, \"Well, then, there's no loitering here.\" She summons
|
||
an orderly to escort you away." CR CR>
|
||
<GOTO ,ELM-AND-KENNEDY>
|
||
<SETG FOLLOW-FLAG 13>
|
||
<QUEUE I-UNFOLLOW <+ ,ELAPSED-TIME 2>>
|
||
<PUTP ,SPEAR-CARRIER ,P?SDESC "orderly">
|
||
<TELL
|
||
"The orderly releases you and reenters the hospital." CR>)
|
||
(<EQUAL? ,HERE ,POLICE-STATION>
|
||
<TELL "\"Then scram before I put you in a cell.\"" CR>)
|
||
(T
|
||
<V-YES>)>)
|
||
(T
|
||
<TELL "You sound rather negative." CR>)>>
|
||
|
||
<ROUTINE V-OFF ()
|
||
<COND (<FSET? ,PRSO ,LIGHTBIT>
|
||
<COND (<FSET? ,PRSO ,ONBIT>
|
||
<FCLEAR ,PRSO ,ONBIT>
|
||
<TELL "It is now off." CR>)
|
||
(T
|
||
<TELL "It is already off." CR>)>)
|
||
(T
|
||
<TELL "You can't turn that off." CR>)>>
|
||
|
||
<ROUTINE V-ON ()
|
||
<COND (<FSET? ,PRSO ,LIGHTBIT>
|
||
<COND (<FSET? ,PRSO ,ONBIT>
|
||
<TELL "It is already on." CR>)
|
||
(T
|
||
<FSET ,PRSO ,ONBIT>
|
||
<TELL "It is now on." CR>)>)
|
||
(T
|
||
<TELL "You can't turn that on." CR>)>>
|
||
|
||
<ROUTINE V-OPEN ("AUX" F STR)
|
||
<COND (<OR <FSET? ,PRSO ,SURFACEBIT>
|
||
<FSET? ,PRSO ,ACTORBIT>>
|
||
<V-COUNT>)
|
||
(<FSET? ,PRSO ,VEHBIT>
|
||
<TELL "Huh?" CR>)
|
||
(<FSET? ,PRSO ,CONTBIT>
|
||
<COND (<FSET? ,PRSO ,OPENBIT>
|
||
<TELL ,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>>
|
||
<SET STR <GETP .F ,P?FDESC>>>
|
||
<TELL "Okay,">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " is now open." CR>
|
||
<TELL .STR CR>)
|
||
(T
|
||
<TELL "Opening">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " reveals">
|
||
<PRINT-CONTENTS ,PRSO>
|
||
<TELL "." CR>)>)>)
|
||
(<FSET? ,PRSO ,DOORBIT>
|
||
<COND (<FSET? ,PRSO ,OPENBIT>
|
||
<TELL ,ALREADY-OPEN CR>)
|
||
(T
|
||
<TELL "Okay,">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " is now open." CR>
|
||
<FSET ,PRSO ,OPENBIT>)>)
|
||
(T
|
||
<TELL-ME-HOW>)>>
|
||
|
||
<ROUTINE V-PAY-FOR ()
|
||
<COND (<AND <PRSO? ,MEAL>
|
||
<EQUAL? ,MEAL-STATUS 4>>
|
||
<PERFORM ,V?GIVE ,CREDIT-CARD ,SPEAR-CARRIER>
|
||
<RTRUE>)
|
||
(T
|
||
<PERFORM ,V?BUY ,PRSO>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-PCAF ()
|
||
<COND (<EQUAL? ,PART-FLAG 4>
|
||
<TELL ,NOT-ACTIVE CR>)
|
||
(<PSYCH-CHECK>
|
||
<RFATAL>)
|
||
(<EQUAL? ,HERE ,CAFETERIA>
|
||
<TELL ,LOOK-AROUND CR>)
|
||
(<EQUAL? ,MODE ,COMM-MODE>
|
||
<GOTO ,CAFETERIA>)
|
||
(T
|
||
<TELL ,ENTER-COMM-MODE CR>)>>
|
||
|
||
<ROUTINE V-PEOF ()
|
||
<COND (<EQUAL? ,PART-FLAG 4>
|
||
<TELL ,NOT-ACTIVE CR>)
|
||
(<EQUAL? ,HERE ,OFFICE>
|
||
<TELL ,LOOK-AROUND CR>)
|
||
(<EQUAL? ,MODE ,COMM-MODE>
|
||
<GOTO ,OFFICE>)
|
||
(T
|
||
<TELL ,ENTER-COMM-MODE CR>)>>
|
||
|
||
<ROUTINE V-PICK ()
|
||
<V-COUNT>>
|
||
|
||
<ROUTINE V-PLAY ()
|
||
<TELL "You can't play that!" CR>>
|
||
|
||
<ROUTINE V-PLAY-WITH ()
|
||
<TELL "That's a silly idea." CR>>
|
||
|
||
<ROUTINE V-POINT ()
|
||
<TELL "That would be pointless." CR>>
|
||
|
||
<ROUTINE V-POUR ()
|
||
<V-LOCK>>
|
||
|
||
<ROUTINE V-PPCC ()
|
||
<COND (<EQUAL? ,PART-FLAG 4>
|
||
<TELL ,NOT-ACTIVE CR>)
|
||
(<PSYCH-CHECK>
|
||
<RFATAL>)
|
||
(<EQUAL? ,HERE ,CONTROL-CENTER>
|
||
<TELL ,LOOK-AROUND CR>)
|
||
(<EQUAL? ,MODE ,COMM-MODE>
|
||
<GOTO ,CONTROL-CENTER>)
|
||
(T
|
||
<TELL ,ENTER-COMM-MODE CR>)>>
|
||
|
||
<ROUTINE V-PRAY ()
|
||
<COND (,SIMULATING
|
||
<SETG ELAPSED-TIME 3>
|
||
<TELL
|
||
"Although you've never been particularly religious, you pray for
|
||
several minutes." CR>)
|
||
(T
|
||
<TELL
|
||
"You do so. The Creator of the Universe, if He exists, is likely to listen
|
||
with compassion to your prayers, as much as He would to the prayers of any
|
||
man." CR>)>>
|
||
|
||
<ROUTINE V-PUSH ()
|
||
<HACK-HACK "Pushing">>
|
||
|
||
<ROUTINE PRE-PUT ()
|
||
<COND (<PRSI? ,GROUND>
|
||
<PERFORM ,V?DROP ,PRSO>
|
||
<RTRUE>)
|
||
(<PRSO? <LOC ,PRSI>>
|
||
<TELL "You can't put">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " in">
|
||
<ARTICLE ,PRSI T>
|
||
<TELL " when">
|
||
<ARTICLE ,PRSI T>
|
||
<TELL " is already in">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "!" CR>)
|
||
(<AND <PRSI? ,HEAD ;,EARS ,ME>
|
||
<PRSO? ,HEADSET>>
|
||
<RFALSE>)
|
||
(<IDROP>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-PUT ("AUX" (CONT-CLOSED <>))
|
||
<COND (<AND <PRSO? ,HEADSET>
|
||
<PRSI? ,HEAD ;,EARS ,ME>>
|
||
<PERFORM ,V?WEAR ,HEADSET>
|
||
<RTRUE>)
|
||
(<AND <NOT <FSET? ,PRSI ,OPENBIT>>
|
||
<NOT <FSET? ,PRSI ,DOORBIT>>
|
||
<NOT <FSET? ,PRSI ,CONTBIT>>
|
||
<NOT <FSET? ,PRSI ,SURFACEBIT>>
|
||
<NOT <FSET? ,PRSI ,VEHBIT>>>
|
||
<TELL "You can't put">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " in">
|
||
<ARTICLE ,PRSI>
|
||
<TELL "!" CR>
|
||
<RTRUE>)
|
||
(<OR <PRSI? ,PRSO>
|
||
<AND <HELD? ,PRSO>
|
||
<NOT <FSET? ,PRSO ,TAKEBIT>>>>
|
||
<TELL "How can you do that?" CR>
|
||
<RTRUE>)
|
||
(<IN? ,PRSO ,PRSI>
|
||
<TELL "I think">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " is already in">
|
||
<ARTICLE ,PRSI T>
|
||
<TELL "." CR>
|
||
<RTRUE>)
|
||
(<AND <NOT <FSET? ,PRSI ,OPENBIT>>
|
||
<NOT <FSET? ,PRSI ,SURFACEBIT>>>
|
||
<SET CONT-CLOSED T>)>
|
||
<COND (<G? <- <+ <WEIGHT ,PRSI> <GETP ,PRSO ,P?SIZE>>
|
||
<GETP ,PRSI ,P?SIZE>> <GETP ,PRSI ,P?CAPACITY>>
|
||
<COND (<FSET? ,PRSI ,VEHBIT>
|
||
<V-YELL>)
|
||
(T
|
||
<COND (.CONT-CLOSED
|
||
<FSET ,PRSI ,OPENBIT>
|
||
<TELL "You open">
|
||
<ARTICLE ,PRSI T>
|
||
<TELL " and discover that t">)
|
||
(T
|
||
<TELL "T">)>
|
||
<TELL "here's not enough room inside." CR>)>)
|
||
(<AND <NOT <HELD? ,PRSO>>
|
||
<EQUAL? <ITAKE> ,M-FATAL <>>>
|
||
<RTRUE>)
|
||
(T
|
||
<MOVE ,PRSO ,PRSI>
|
||
<FSET ,PRSO ,TOUCHBIT>
|
||
<COND (<PRSI? ,BUREAU>
|
||
<TELL "You put">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " on the bureau." CR>)
|
||
(T
|
||
<TELL "Done">
|
||
<COND (.CONT-CLOSED
|
||
<FSET ,PRSI ,OPENBIT>
|
||
<TELL " (after opening">
|
||
<ARTICLE ,PRSI T>
|
||
<TELL ", of course)">)>
|
||
<TELL "." CR>)>)>>
|
||
|
||
<ROUTINE V-PUT-AWAY ()
|
||
<COND (<PRSO? ,CREDIT-CARD ,RATION-CARD ,DRIVERS-LICENSE>
|
||
<PERFORM ,V?PUT ,PRSO ,WALLET>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "You don't have a good place to put">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>)>>
|
||
|
||
<ROUTINE V-PUT-BEHIND ()
|
||
<V-YELL>>
|
||
|
||
<ROUTINE V-PUT-ON ()
|
||
<COND (<PRSI? ,ME>
|
||
<PERFORM ,V?WEAR ,PRSO>
|
||
<RTRUE>)
|
||
(<OR <FSET? ,PRSI ,SURFACEBIT>
|
||
<FSET? ,PRSI ,FURNITUREBIT>>
|
||
<V-PUT>)
|
||
;(<PRSI? ,HEAD ;,EYES>
|
||
<TELL "You can't cover">
|
||
<ARTICLE ,PRSI T>
|
||
<TELL " with that." CR>)
|
||
(T
|
||
<TELL "There's no good surface on">
|
||
<ARTICLE ,PRSI T>
|
||
<TELL "." CR>)>>
|
||
|
||
<ROUTINE V-PUT-UNDER ()
|
||
<V-YELL>>
|
||
|
||
<ROUTINE V-RAPE ()
|
||
<V-KISS>>
|
||
|
||
<ROUTINE V-RAISE ()
|
||
<HACK-HACK "Playing in this way with">>
|
||
|
||
<ROUTINE V-RCRO ()
|
||
<COND (<EQUAL? ,PART-FLAG 4>
|
||
<TELL ,NOT-ACTIVE CR>)
|
||
(<PSYCH-CHECK>
|
||
<RFATAL>)
|
||
(<EQUAL? ,HERE ,ROOFTOP>
|
||
<TELL ,LOOK-AROUND CR>)
|
||
(<OR <EQUAL? ,MODE ,COMM-MODE>
|
||
<EQUAL? ,HERE ,CORE ,OFFICE ,NEWS>>
|
||
<GOTO ,ROOFTOP>)
|
||
(T
|
||
<TELL ,ENTER-COMM-MODE CR>)>>
|
||
|
||
<ROUTINE V-REACH-IN ("AUX" OBJ)
|
||
<COND (<OR <NOT <FSET? ,PRSO ,CONTBIT>>
|
||
<FSET? ,PRSO ,ACTORBIT>>
|
||
<V-LOCK>)
|
||
(<NOT <FSET? ,PRSO ,OPENBIT>>
|
||
<TELL "It's not open." CR>)
|
||
(<OR <NOT <SET OBJ <FIRST? ,PRSO>>>
|
||
<FSET? .OBJ ,INVISIBLE>
|
||
<NOT <FSET? .OBJ ,TAKEBIT>>>
|
||
<TELL "It's empty." CR>)
|
||
(T
|
||
<TELL "You reach into">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " and feel something." CR>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE PRE-READ ()
|
||
<COND ;(<NOT ,LIT>
|
||
<TELL ,TOO-DARK CR>)
|
||
(<AND ,PRSI
|
||
<NOT <FSET? ,PRSI ,TRANSBIT>>>
|
||
<TELL "How does one look through">
|
||
<ARTICLE ,PRSI>
|
||
<TELL "?" CR>)>>
|
||
|
||
<ROUTINE V-READ ()
|
||
<COND (<FSET? ,PRSO ,READBIT>
|
||
<TELL <GETP ,PRSO ,P?TEXT> CR>)
|
||
(T
|
||
<TELL "How can you read">
|
||
<ARTICLE ,PRSO>
|
||
<TELL "?" CR>)>>
|
||
|
||
<GLOBAL REVIEWING-RECORDINGS <>>
|
||
|
||
<GLOBAL RECORDING <>>
|
||
|
||
<GLOBAL L-RECORDING <>>
|
||
|
||
<ROUTINE V-RECORD-ON ()
|
||
<COND (<AND ,PRSO
|
||
<NOT <PRSO? ,ROOMS>>>
|
||
<TELL ,RECOGNIZE CR>)
|
||
(<EQUAL? ,PART-FLAG 4>
|
||
<TELL ,NOT-ACTIVE CR>)
|
||
(<OR ,REVIEWING-RECORDINGS
|
||
<EQUAL? ,RECORD-BUFFER ,FEED-BUFFER>>
|
||
<ERR "Cannot activate: another user is accessing the " T>
|
||
<PRINTD ,RECORD-BUFFER>
|
||
<TELL "." CR>)
|
||
(,RECORDING
|
||
<ERR "Record feature is already active.">)
|
||
(<AND <NOT ,SIMULATING>
|
||
<NOT <EQUAL? ,HERE ,NEWS ,OFFICE ,ROOFTOP>>
|
||
<NOT <EQUAL? ,HERE ,CORE ,CONTROL-CENTER ,CAFETERIA>>>
|
||
<ERR "Record feature does not function here.">)
|
||
(<G? <GETP ,RECORD-BUFFER ,P?SIZE> 90>
|
||
<ERR
|
||
"Record buffer is full; record feature cannot be activated.">)
|
||
(T
|
||
<SETG RECORDING T>
|
||
<TELL "Record feature activated." CR>)>>
|
||
|
||
<ROUTINE V-RECORD-OFF ()
|
||
<COND (<NOT <PRSO? ,ROOMS>>
|
||
<TELL ,RECOGNIZE CR>)
|
||
(<NOT ,RECORDING>
|
||
<ERR "Record feature not currently active.">)
|
||
(T
|
||
<SETG RECORDING <>>
|
||
<TELL "Record feature deactivated." CR>)>>
|
||
|
||
<ROUTINE V-REMOVE ()
|
||
<COND (<FSET? ,PRSO ,WEARBIT>
|
||
<PERFORM ,V?TAKE-OFF ,PRSO>
|
||
<RTRUE>)
|
||
(T
|
||
<PERFORM ,V?TAKE ,PRSO>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-REPLY ()
|
||
<TELL "It is hardly likely that">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " is interested." CR>
|
||
<CLEAR-BUF>>
|
||
|
||
<ROUTINE V-REPORT ()
|
||
<PERFORM ,V?TELL-ABOUT ,PRSI ,PRSO>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE V-ROB ()
|
||
<COND (<OR <FSET? ,PRSO ,TAKEBIT>
|
||
<FSET? ,PRSO ,TRYTAKEBIT>>
|
||
<V-YELL>)
|
||
(T
|
||
<TELL "Theft is a serious crime." CR>)>>
|
||
|
||
<ROUTINE V-ROFF ()
|
||
<SETG PRSO ,ROOMS>
|
||
<V-RECORD-OFF>>
|
||
|
||
<ROUTINE V-SAY ("AUX" ACTOR)
|
||
<COND (<ANSWER-SAY-SHARE>
|
||
<RTRUE>)
|
||
(<SET ACTOR <FIND-IN ,HERE ,ACTORBIT>>
|
||
<ADDRESS-DIRECTLY .ACTOR>)
|
||
(T
|
||
<PERFORM ,V?TELL ,ME>
|
||
<CLEAR-BUF>)>>
|
||
|
||
<ROUTINE V-SEARCH ()
|
||
<COND (<FSET? ,PRSO ,ACTORBIT>
|
||
<TELL "That wouldn't be polite." CR>
|
||
<RTRUE>)
|
||
(<FSET? ,PRSO ,CONTBIT>
|
||
<COND (<PRSO? <LOC ,PLAYER>>
|
||
<DESCRIBE-VEHICLE>)
|
||
(<NOT <FSET? ,PRSO ,OPENBIT>>
|
||
<TELL "You'll have to open it first." CR>
|
||
<RTRUE>)
|
||
(<AND <FIRST? ,PRSO>
|
||
<NOT <FSET? <FIRST? ,PRSO> ,NDESCBIT>>>
|
||
<PRINT-CONT ,PRSO>
|
||
<RTRUE>)>)>
|
||
<TELL "You find nothing unusual." CR>>
|
||
|
||
<ROUTINE V-SET ()
|
||
<COND (<EQUAL? ,MODE ,INTERFACE-MODE>
|
||
<V-TURN-ON>)
|
||
(T
|
||
<V-COUNT>)>>
|
||
|
||
<ROUTINE V-SGIVE ()
|
||
<PERFORM ,V?GIVE ,PRSI ,PRSO>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE V-SHAKE ()
|
||
<HACK-HACK "Shaking">>
|
||
|
||
<ROUTINE V-SHAKE-WITH ()
|
||
<COND (<NOT <PRSO? ,HANDS>>
|
||
<TELL ,RECOGNIZE CR>)
|
||
(<NOT <FSET? ,PRSI ,ACTORBIT>>
|
||
<TELL "I don't think">
|
||
<ARTICLE ,PRSI T>
|
||
<TELL " even has hands." CR>)
|
||
(T
|
||
<PERFORM ,V?THANK ,PRSI>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-SHOOT ()
|
||
<TELL "You don't have a gun." CR>>
|
||
|
||
<ROUTINE V-SHOW ()
|
||
<TELL "I doubt">
|
||
<ARTICLE ,PRSI T>
|
||
<PLURAL ,PRSI>
|
||
<TELL " interested." CR>>
|
||
|
||
<ROUTINE V-SHUT-OFF ()
|
||
<V-TURN-ON>>
|
||
|
||
<ROUTINE V-SIT ("AUX" VEHICLE)
|
||
<COND (<PRSO? ,ROOMS>
|
||
<COND (<SET VEHICLE <FIND-IN ,HERE ,FURNITUREBIT>>
|
||
<PERFORM ,V?BOARD .VEHICLE>
|
||
<RTRUE>)
|
||
;(<GLOBAL-IN? ,BAR-STOOL ,HERE> ;"it's now a local obj."
|
||
<PERFORM ,V?BOARD ,BAR-STOOL>
|
||
<RTRUE>)
|
||
(T
|
||
<V-YELL>)>)
|
||
(<FSET? ,PRSO ,VEHBIT>
|
||
<PERFORM ,V?BOARD ,PRSO>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "You can't sit on">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>)>>
|
||
|
||
<ROUTINE V-SIT-NEXT-TO ()
|
||
<COND (<FSET? ,PRSO ,ACTORBIT>
|
||
<TELL "But">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " isn't sitting!" CR>)
|
||
(T
|
||
<V-COUNT>)>>
|
||
|
||
<ROUTINE V-SKIP ()
|
||
<SETG YES-NO-FLAG 3>
|
||
<QUEUE I-YES-NO 2>
|
||
<TELL "Wasn't that fun?" CR>>
|
||
|
||
<ROUTINE V-SLEEP ("AUX" WAKE-TIME)
|
||
<COND (<EQUAL? ,MODE ,SLEEP-MODE>
|
||
<SIM-SLEEP>)
|
||
(<NOT ,SIMULATING>
|
||
<PERFORM ,V?THROUGH ,SLEEP-MODE>
|
||
<RTRUE>)
|
||
(<EQUAL? ,HERE ,BEDROOM>
|
||
<COND (<AND <L? ,STIME 1320>
|
||
<G? ,STIME 1019>>
|
||
<TELL "You never go to bed this early." CR>)
|
||
(<AND <L? ,STIME 1020>
|
||
<G? ,STIME 720>>
|
||
<TELL "It's the middle of the afternoon!" CR>)
|
||
(<AND <G? ,STIME 540>
|
||
<L? ,STIME 721>>
|
||
<TELL "The day's barely begun!" CR>)
|
||
(<AND <G? ,STIME 419>
|
||
<L? ,STIME 541>>
|
||
<TELL
|
||
"You've never been able to fall asleep once the sun has come up." CR>)
|
||
(<HELD? ,BABY>
|
||
<TELL ,MITCHELL-BACK-FIRST CR>)
|
||
(T
|
||
<COND (<EQUAL? ,SYEAR 2041>
|
||
<SET WAKE-TIME 486>)
|
||
(T
|
||
<MOVE ,MITCHELL ,LOCAL-GLOBALS>
|
||
<SETG MITCHELL-COUNTER 0>
|
||
<SET WAKE-TIME 421>)>
|
||
<COND (<G? ,STIME 1319>
|
||
<SETG ELAPSED-TIME
|
||
<+ <- 1440 ,STIME> .WAKE-TIME>>)
|
||
(T
|
||
<SETG ELAPSED-TIME <- .WAKE-TIME ,STIME>>)>
|
||
<COND (<FIRST? ,PLAYER>
|
||
<ROB ,PLAYER ,BUREAU>
|
||
<TELL "You put everything on the bureau and">)
|
||
(<IN? ,PLAYER ,BED>
|
||
<TELL "You">)
|
||
(T
|
||
<TELL "You climb into the bed and">)>
|
||
<TELL
|
||
" snuggle under the covers. What seems like only moments later, ">
|
||
<SETG LIGHT-LEVEL 3>
|
||
<MOVE ,PLAYER ,BED>
|
||
<COND (<EQUAL? ,SYEAR 2041>
|
||
<MOVE ,JILL ,HERE>
|
||
<SETG JILL-COUNTER 1>
|
||
<TELL
|
||
"Jill is shaking you gently, cooing, \"Perry, hon, wake
|
||
up.\" Diffuse sunlight seeps">)
|
||
(T
|
||
<COND (,MITCHELL-RAID-FLAG
|
||
<TELL
|
||
"you bolt upright in bed, screaming Jill's name, an unanswered call. T">)
|
||
(T
|
||
<SETG JILL-COUNTER 0>
|
||
<COND (<EQUAL? ,SYEAR 2051>
|
||
<MOVE ,JILL ,BEDROOM>)>
|
||
<FCLEAR ,JILL-BOOK ,NDESCBIT>
|
||
<TELL
|
||
"a familiar sound stirs you to wakefulness: t">)>
|
||
<END-CURFEW>
|
||
<TELL " Gray morning light shines">)>
|
||
<TELL " through the bedroom window." CR>)>)
|
||
(<EQUAL? ,HERE ,JAIL-CELL>
|
||
<COND (<G? ,STIME 415>
|
||
<TELL "You try to sleep, and fail." CR>)
|
||
(T
|
||
<SETG ELAPSED-TIME <+ 110 <RANDOM 30>>>
|
||
<TELL "You doze off for a couple of hours." CR>)>)
|
||
(T
|
||
<TELL "There's no bed here." CR>)>>
|
||
|
||
<ROUTINE END-CURFEW ()
|
||
<SCORE 116> ;"2 points"
|
||
<TELL "he sirens hailing the end of curfew are blaring">
|
||
<COND (<NOT <FSET? ,HERE ,OUTSIDEBIT>>
|
||
<TELL " outside">)>
|
||
<TELL ".">>
|
||
|
||
<ROUTINE V-SMELL ()
|
||
<COND (<NOT ,PRSO>
|
||
<COND (<AND <EQUAL? ,HERE ,FOODVILLE-2>
|
||
<EQUAL? ,SYEAR 2081>>
|
||
<PERFORM ,V?SMELL ,SUPERMARKET>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,HERE ,WICKER-AND-RIVER>
|
||
<NOT <EQUAL? ,SYEAR 2071>>>
|
||
<PERFORM ,V?SMELL ,STAIRS>
|
||
<RTRUE>)
|
||
(<EQUAL? ,HERE ,POOL-HALL>
|
||
<TELL ,TOBACCO-ODOR CR>)
|
||
(<AND <EQUAL? ,HERE ,MAIN-LIBRARY>
|
||
<EQUAL? ,SYEAR 2071>>
|
||
<PERFORM ,V?SMELL ,MAIN-LIBRARY-OBJECT>
|
||
<RTRUE>)
|
||
(<EQUAL? ,HERE ,BOOKSTORE>
|
||
<PERFORM ,V?SMELL ,BOOKSTORE-OBJECT>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,HERE ,CINEMA>
|
||
<EQUAL? ,SYEAR 2071>>
|
||
<PERFORM ,V?SMELL ,MOVIE-THEATRE-OBJECT>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,HERE ,BURGER-MEISTER>
|
||
<EQUAL? ,SYEAR 2071>>
|
||
<PERFORM ,V?SMELL ,BAR-OBJECT>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,HERE ,DORM>
|
||
<EQUAL? ,SYEAR 2041 2051>>
|
||
<PERFORM ,V?SMELL ,MINDEX>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,HERE ,AQUARIUM>
|
||
<EQUAL? ,SYEAR 2071>>
|
||
<PERFORM ,V?SMELL ,AQUARIUM-OBJECT>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,HERE ,TENEMENT-2 ,TENEMENT-3>
|
||
<EQUAL? ,SYEAR 2071>>
|
||
<PERFORM ,V?SMELL ,TENEMENT-OBJECT>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "You smell nothing unusual." CR>)>)
|
||
(T
|
||
<COND (<FSET? ,PRSO ,PLURALBIT>
|
||
<TELL "They smell">)
|
||
(T
|
||
<TELL "It smells">)>
|
||
<TELL " just like">
|
||
<ARTICLE ,PRSO>
|
||
<TELL "." CR>)>>
|
||
|
||
<ROUTINE V-SMILE ()
|
||
<TELL "How nice." CR>>
|
||
|
||
<ROUTINE V-SPUT-ON ()
|
||
<PERFORM ,V?PUT-ON ,PRSI ,PRSO>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE V-SQUEEZE ()
|
||
<V-YELL>>
|
||
|
||
<ROUTINE V-SSHOOT ()
|
||
<PERFORM ,V?SHOOT ,PRSI ,PRSO>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE V-SSHOW ()
|
||
<PERFORM ,V?SHOW ,PRSI ,PRSO>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE V-SSHUT-OFF ()
|
||
<PERFORM ,V?SHUT-OFF ,PRSI ,PRSO>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE V-STAND ()
|
||
<COND (<EQUAL? ,HERE ,SKYCAB>
|
||
<TELL "There's not enough headroom." CR>)
|
||
(<AND <FSET? <LOC ,PLAYER> ,VEHBIT>
|
||
<NOT <EQUAL? <LOC ,PLAYER> ,SHOWER>>>
|
||
<PERFORM ,V?DISEMBARK <LOC ,PLAYER>>
|
||
<RTRUE>)
|
||
(<AND ,PRSO
|
||
<NOT <PRSO? ,ROOMS>>>
|
||
<V-COUNT>)
|
||
(T
|
||
<TELL "You are already standing." CR>)>>
|
||
|
||
<ROUTINE V-STAND-ON ()
|
||
<V-YELL>>
|
||
|
||
<ROUTINE V-STATUS ()
|
||
<V-TURN-ON>>
|
||
|
||
<ROUTINE V-STURN-ON ()
|
||
<PERFORM ,V?TURN-ON ,PRSI ,PRSO>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE V-SWIM ()
|
||
<COND (,PRSO
|
||
<TELL "Not even a fish could swim in">
|
||
<ARTICLE ,PRSO>
|
||
<TELL "." CR>)
|
||
(<GLOBAL-IN? ,RIVER ,HERE>
|
||
<PERFORM ,V?SWIM ,RIVER>
|
||
<RTRUE>)
|
||
(<GLOBAL-IN? ,RESERVOIR ,HERE>
|
||
<PERFORM ,V?SWIM ,RESERVOIR>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? ,HERE ,KENNEDY-PARK>
|
||
<NOT <EQUAL? ,SYEAR 2061>>>
|
||
<PERFORM ,V?SWIM ,WATERPOOL>
|
||
<RTRUE>)
|
||
(<EQUAL? ,HERE ,AQUARIUM>
|
||
<PERFORM ,V?SWIM ,TANK>
|
||
<RTRUE>)
|
||
(<EQUAL? ,HERE ,HALLEY-PARK-WEST>
|
||
<PERFORM ,V?SWIM ,DUCK-POND>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "There's not a swimming hole in sight." CR>)>>
|
||
|
||
<ROUTINE PRE-TAKE ()
|
||
<COND (<LOC-CLOSED>
|
||
<RTRUE>)
|
||
;(<AND <FSET? ,PRSO ,INTEGRALBIT>
|
||
<PRSI? <LOC ,PRSO>>>
|
||
<RFALSE>)
|
||
(<OR <IN? ,PRSO ,PLAYER>
|
||
<AND <HELD? ,PRSO>
|
||
<NOT <FSET? ,PRSO ,TAKEBIT>>>>
|
||
<COND (<FSET? ,PRSO ,WORNBIT>
|
||
<TELL "You are already wearing it." CR>)
|
||
(T
|
||
<TELL "You already have it." CR>)>)
|
||
(,PRSI
|
||
<COND (<PRSO? ,ME>
|
||
<PERFORM ,V?DROP ,PRSI>
|
||
<RTRUE>)
|
||
(<NOT <PRSI? <LOC ,PRSO>>>
|
||
<TELL "But">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " isn't ">
|
||
<COND (<FSET? ,PRSI ,ACTORBIT>
|
||
<TELL "being held by">)
|
||
(<FSET? ,PRSI ,SURFACEBIT>
|
||
<TELL "on">)
|
||
(T
|
||
<TELL "in">)>
|
||
<ARTICLE ,PRSI T>
|
||
<TELL "." CR>)
|
||
(T
|
||
<SETG PRSI <>>
|
||
<RFALSE>)>)
|
||
(<AND <PRSO? <LOC ,PLAYER>>
|
||
<NOT <PRSO? ,SHOWER ,DINETTE-SET ,RESTAURANT-TABLE>>>
|
||
<TELL "You are in it!" CR>)>>
|
||
|
||
<ROUTINE V-TAKE ()
|
||
<COND (<EQUAL? <ITAKE> T>
|
||
<TELL "Taken." CR>)>>
|
||
|
||
<ROUTINE V-TAKE-OFF ()
|
||
<COND (<FSET? ,PRSO ,WORNBIT>
|
||
<FCLEAR ,PRSO ,WORNBIT>
|
||
<COND (<PRSO? ,HEADSET>
|
||
<MOVE ,HEADSET ,HERE>
|
||
<FSET ,HEADSET ,NDESCBIT>)>
|
||
<TELL "Okay, you're no longer wearing">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>)
|
||
(<OR <PRSO? <LOC ,PLAYER>>
|
||
<PRSO? ,RED-TUBECAR-OBJECT ,BROWN-TUBECAR-OBJECT>>
|
||
<PERFORM ,V?DISEMBARK ,PRSO>
|
||
<RTRUE>)
|
||
(<OR <FSET? ,PRSO ,VEHBIT>
|
||
<FSET? ,PRSO ,ACTORBIT>>
|
||
<TELL "You're not on">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "!" CR>)
|
||
(T
|
||
<TELL "You aren't wearing">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "!" CR>)>>
|
||
|
||
<ROUTINE V-TELL ()
|
||
<COND (<FSET? ,PRSO ,ACTORBIT>
|
||
<COND (,P-CONT
|
||
<SETG ELAPSED-TIME 0>
|
||
<SETG WINNER ,PRSO>
|
||
<SETG HERE <LOC ,WINNER>>
|
||
<RTRUE>)
|
||
(<AND <PRSO? ,JILL>
|
||
<EQUAL? ,JILL-COUNTER 0>>
|
||
<PERFORM ,V?KISS ,JILL>
|
||
<RTRUE>)
|
||
(<EQUAL? ,HERE ,INTERFACE-ROOM>
|
||
<TELL ,CONTACT CR>)
|
||
(T
|
||
<TELL "Hmmm...">
|
||
<ARTICLE ,PRSO T>
|
||
<COND (<FSET? ,PRSO ,PLURALBIT>
|
||
<TELL " look">)
|
||
(T
|
||
<TELL " looks">)>
|
||
<TELL
|
||
" at you expectantly, as if you seemed to be about to talk." CR>)>)
|
||
(T
|
||
<TELL "You can't talk to">
|
||
<ARTICLE ,PRSO>
|
||
<TELL "!" CR>
|
||
<CLEAR-BUF>)>>
|
||
|
||
<ROUTINE V-TELL-ABOUT ()
|
||
<COND (<PRSO? ,ME>
|
||
<PERFORM ,V?WHAT ,PRSI>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "It doesn't look as though">
|
||
<ARTICLE ,PRSO T>
|
||
<PLURAL ,PRSO>
|
||
<TELL " interested." CR>)>>
|
||
|
||
<ROUTINE V-THANK ()
|
||
<COND (<FSET? ,PRSO ,ACTORBIT>
|
||
<TELL "You do so, but">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " seems less than overjoyed." CR>)
|
||
(T
|
||
<V-LOCK>)>>
|
||
|
||
<ROUTINE V-THROUGH ()
|
||
<COND (<FSET? ,PRSO ,DOORBIT>
|
||
<DO-WALK <OTHER-SIDE ,PRSO>>
|
||
<RTRUE>)
|
||
(<FSET? ,PRSO ,VEHBIT>
|
||
<PERFORM ,V?BOARD ,PRSO>
|
||
<RTRUE>)
|
||
(<NOT <FSET? ,PRSO ,TAKEBIT>>
|
||
<COND (,SIMULATING
|
||
<TELL "You hit your head against">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " as you attempt this feat." CR>)
|
||
(T
|
||
<DO-WALK ,P?NORTH>)>)
|
||
(<IN? ,PRSO ,WINNER>
|
||
<PERFORM ,V?EXAMINE ,HEAD>
|
||
<RTRUE>)
|
||
(T
|
||
<V-LOCK>)>>
|
||
|
||
<ROUTINE PRE-THROW ()
|
||
<COND (<IDROP>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-THROW ()
|
||
<MOVE ,PRSO ,HERE>
|
||
<TELL "You missed." CR>>
|
||
|
||
<ROUTINE V-THROW-OFF ()
|
||
<TELL "You can't do that!" CR>>
|
||
|
||
<ROUTINE V-TIE ()
|
||
<TELL "You can't tie">
|
||
<ARTICLE ,PRSO>
|
||
<TELL "." CR>>
|
||
|
||
<ROUTINE V-TIME ()
|
||
<SETG ELAPSED-TIME 0>
|
||
<TELL "It is ">
|
||
<COND (,SIMULATING
|
||
<TIME-PRINT ,STIME>)
|
||
(T
|
||
<TIME-PRINT ,TIME>)>
|
||
<TELL "." CR>>
|
||
|
||
<ROUTINE V-TOUCH ()
|
||
<COND (<LOC-CLOSED>
|
||
<RTRUE>)
|
||
(T
|
||
<HACK-HACK "Fiddling with">)>>
|
||
|
||
<ROUTINE V-TRANSMIT ()
|
||
<TELL "Only a transmitter can transmit things." CR>>
|
||
|
||
<ROUTINE V-TURN ()
|
||
<COND (<PRSO? ,ME ,ROOMS>
|
||
<V-SKIP>)
|
||
(T
|
||
<TELL "This has no effect." CR>)>>
|
||
|
||
<ROUTINE V-TURN-ON ()
|
||
<COND (<EQUAL? ,MODE ,INTERFACE-MODE>
|
||
<TELL
|
||
"[Perhaps you meant to address one of the Interface devices.]" CR>)
|
||
(T
|
||
<TELL
|
||
"[This syntax is useful only for communicating in ">
|
||
<PRINTD ,INTERFACE-MODE>
|
||
<TELL ".]" CR>)>>
|
||
|
||
<ROUTINE V-UNLOCK ()
|
||
<V-LOCK>>
|
||
|
||
<ROUTINE V-UNTIE ()
|
||
<V-LOCK>>
|
||
|
||
<GLOBAL CLOCK-WAIT T>
|
||
|
||
<ROUTINE V-WAIT ("OPTIONAL" (NUM 10) "AUX" (X <>) (SHORT-WAIT <>))
|
||
<COND (<EQUAL? .NUM 0>
|
||
<SETG ELAPSED-TIME 0>
|
||
<TELL "Time doesn't pass..." CR>
|
||
<RTRUE>)>
|
||
<TELL "Time passes..." CR>
|
||
<COND (<L? .NUM 11>
|
||
<SET SHORT-WAIT T>)>
|
||
<REPEAT ()
|
||
<SET X <CLOCKER>>
|
||
<COND (<OR <L? <SET NUM <- .NUM 1>> 1>
|
||
<EQUAL? ,HERE ,NEWS>>
|
||
<SET X T>)>
|
||
<COND (<AND <EQUAL? ,HERE ,SIMONS THE-COACHMAN>
|
||
<EQUAL? ,MEAL-STATUS 1>
|
||
<NOT <EQUAL? ,SYEAR 2081>>>
|
||
<SET X T>)>
|
||
<INCREMENT-TIME 1>
|
||
<COND (<OR .X ,STOP-WAIT>
|
||
<RETURN>)
|
||
(<OR .SHORT-WAIT
|
||
<AND ,SIMULATING
|
||
<EQUAL? <MOD ,STIME 10> 0>>
|
||
<AND <NOT ,SIMULATING>
|
||
<EQUAL? <MOD ,TIME 10> 0>>>
|
||
<STATUS-LINE>)>>
|
||
<SETG CLOCK-WAIT T>>
|
||
|
||
;<ROUTINE V-WAIT ("OPTIONAL" (NUM 10) "AUX" X)
|
||
;"failed attempt to leave cursor in status line during WAIT"
|
||
<TELL "Time passes..." CR>
|
||
<SCREEN ,S-WINDOW> ;"to speed up the WAIT"
|
||
<REPEAT ()
|
||
<SET X <CLOCKER T>> ;"T warns clocks about cursor in window"
|
||
<COND (<EQUAL? ,HERE ,NEWS>
|
||
<SET X T>)
|
||
(<L? <SET NUM <- .NUM 1>> 1>
|
||
<SET X T>)>
|
||
<INCREMENT-TIME 1>
|
||
<COND (<NOT .X>
|
||
<STATUS-LINE T>)>
|
||
<COND (T
|
||
<SCREEN ,S-TEXT>
|
||
<RETURN>)>>
|
||
<SETG CLOCK-WAIT T>>
|
||
|
||
<ROUTINE V-WAIT-FOR ()
|
||
<COND (<PRSO? ,INTNUM>
|
||
<COND (<G? ,P-NUMBER 120>
|
||
<TELL "That's too long to wait." CR>)
|
||
(T
|
||
<V-WAIT ,P-NUMBER>)>)
|
||
(<PRSO? ,DAWN ,DUSK ,NOON ,MIDNIGHT>
|
||
<PERFORM ,V?WAIT-UNTIL ,PRSO>
|
||
<RTRUE>)
|
||
(<VISIBLE? ,PRSO>
|
||
<RIGHT-HERE>)
|
||
(T
|
||
<TELL "You might be waiting quite a while." CR>)>>
|
||
|
||
<ROUTINE V-WAIT-UNTIL ("AUX" (TIM 0) (NAMED-TIME <>) OLD-P-NUMBER)
|
||
<SET OLD-P-NUMBER ,P-NUMBER>
|
||
<COND (,SIMULATING
|
||
<SET TIM ,STIME>)
|
||
(T
|
||
<SET TIM ,TIME>)>
|
||
<COND (<PRSO? ,NOON>
|
||
<SETG P-NUMBER 720>
|
||
<SET NAMED-TIME T>)
|
||
(<PRSO? ,MIDNIGHT>
|
||
<SETG P-NUMBER 1440>
|
||
<SET NAMED-TIME T>)
|
||
(<PRSO? ,DAWN>
|
||
<COND (,SIMULATING ;"7:35am in January, 5:55am in June"
|
||
<SETG P-NUMBER <- 455 <- <* ,SMONTH 20> 20>>>)
|
||
(T
|
||
<SETG P-NUMBER 350>)>
|
||
<SET NAMED-TIME T>)
|
||
(<PRSO? ,DUSK>
|
||
<COND (,SIMULATING ;"5:08pm in January, 6:48pm in June"
|
||
<SETG P-NUMBER <- 1028 <- <* ,SMONTH 20> 20>>>)
|
||
(T
|
||
<SETG P-NUMBER 1075>)>
|
||
<SET NAMED-TIME T>)>
|
||
<COND (.NAMED-TIME
|
||
;<COND (,DEBUG
|
||
<TELL
|
||
"[named time, P-NUMBER = " N ,P-NUMBER ", TIM = " N .TIM "]" CR>)>
|
||
<SETG PRSO ,INTNUM>
|
||
<COND (<G? ,P-NUMBER .TIM>
|
||
<SETG P-NUMBER <- ,P-NUMBER .TIM>>)
|
||
(T
|
||
<SETG P-NUMBER <+ ,P-NUMBER <- 1440 .TIM>>>)>
|
||
;<COND (,DEBUG
|
||
<TELL
|
||
"[calling V-WAIT-FOR, P-NUMBER = " N ,P-NUMBER ", TIM = " N .TIM "]" CR>)>
|
||
<V-WAIT-FOR>)
|
||
(<PRSO? ,INTNUM>
|
||
;<COND (,DEBUG
|
||
<TELL
|
||
"[numbered time, P-NUMBER = " N ,P-NUMBER ", TIM = " N .TIM "]" CR>)>
|
||
<COND (<L? ,P-NUMBER 13> ;"so wait until 2 = wait until 2:00"
|
||
;<COND (,DEBUG
|
||
<TELL "[multiplying P-NUMBER by 60]" CR>)>
|
||
<SETG P-NUMBER <* ,P-NUMBER 60>>)>
|
||
<COND (<G? .TIM 720>
|
||
;<COND (,DEBUG
|
||
<TELL "[subtracting 720 from TIM]" CR>)>
|
||
<SET TIM <- .TIM 720>>)>
|
||
<COND (<G? ,P-NUMBER .TIM>
|
||
<SETG P-NUMBER <- ,P-NUMBER .TIM>>)
|
||
(T
|
||
<SETG P-NUMBER <+ ,P-NUMBER <- 720 .TIM>>>)>
|
||
;<COND (,DEBUG
|
||
<TELL
|
||
"[calling V-WAIT-FOR, P-NUMBER = " N ,P-NUMBER ", TIM = " N .TIM "]" CR>)>
|
||
<V-WAIT-FOR>
|
||
<SETG P-NUMBER .OLD-P-NUMBER>)
|
||
(T
|
||
<TELL
|
||
"Try waiting until a specific time, as in WAIT UNTIL 3:45." CR>)>>
|
||
|
||
<ROUTINE V-WALK ("AUX" PT PTS STR OBJ RM)
|
||
<COND (<NOT ,PRSO>
|
||
<V-WALK-AROUND>)
|
||
(<NOT ,P-WALK-DIR>
|
||
<PERFORM ,V?WALK-TO ,PRSO>
|
||
<RTRUE>)
|
||
(<SET PT <GETPT ,HERE ,PRSO>>
|
||
<COND (<EQUAL? <SET PTS <PTSIZE .PT>> ,UEXIT>
|
||
<GOTO <GET .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 <GET .PT ,REXIT>>)
|
||
(<SET STR <GET .PT ,CEXITSTR>>
|
||
<TELL .STR CR>
|
||
<RFATAL>)
|
||
(T
|
||
<TELL ,CANT-GO CR>
|
||
<RFATAL>)>)
|
||
(<EQUAL? .PTS ,DEXIT>
|
||
<COND (<FSET? <SET OBJ <GET .PT ,DEXITOBJ>> ,OPENBIT>
|
||
<GOTO <GET .PT ,REXIT>>)
|
||
(<SET STR <GET .PT ,DEXITSTR>>
|
||
<TELL .STR CR>
|
||
<SETG P-IT-OBJECT .OBJ>
|
||
<RFATAL>)
|
||
(T
|
||
<TELL "The " D .OBJ " is closed." CR>
|
||
<SETG P-IT-OBJECT .OBJ>
|
||
<RFATAL>)>)>)
|
||
(T
|
||
<COND (<PRSO? ,P?OUT ,P?IN>
|
||
<V-WALK-AROUND>)
|
||
(,SIMULATING
|
||
<TELL ,CANT-GO CR>)
|
||
(T
|
||
<SETG YES-NO-FLAG 4>
|
||
<QUEUE I-YES-NO 2>
|
||
<TELL "You're an immobile computer, remember?" CR>)>
|
||
<RFATAL>)>>
|
||
|
||
<ROUTINE V-WALK-AROUND ()
|
||
<SETG YES-NO-FLAG 5>
|
||
<QUEUE I-YES-NO 2>
|
||
<TELL "Did you have any particular direction in mind?" CR>>
|
||
|
||
<ROUTINE V-WALK-OUT ()
|
||
<COND (<FSET? ,PRSO ,DOORBIT>
|
||
<PERFORM ,V?THROUGH ,PRSO>
|
||
<RTRUE>)
|
||
(T
|
||
<PERFORM ,V?DISEMBARK ,PRSO>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE V-WALK-TO ()
|
||
<COND (<OR <IN? ,PRSO ,HERE>
|
||
<GLOBAL-IN? ,PRSO ,HERE>>
|
||
<COND (<AND <FSET? ,PRSO ,ACTORBIT>
|
||
<NOT <EQUAL? ,HERE ,INTERFACE-ROOM>>>
|
||
<COND (<PRSO? ,JILL>
|
||
<TELL "She">)
|
||
(T
|
||
<TELL "He">)>)
|
||
(T
|
||
<TELL "It">)>
|
||
<TELL "'s here!" CR>)
|
||
(T
|
||
<V-WALK-AROUND>)>>
|
||
|
||
<ROUTINE V-WALK-UNDER ()
|
||
<TELL "That would be quite a trick." CR>>
|
||
|
||
<ROUTINE V-WASH ()
|
||
<COND (<FSET? ,PRSO ,PLURALBIT>
|
||
<TELL "They are">)
|
||
(T
|
||
<TELL "It is">)>
|
||
<TELL "n't dirty." CR>>
|
||
|
||
<ROUTINE V-WAVE ()
|
||
<V-LOCK>>
|
||
|
||
<ROUTINE V-WAVE-AT ()
|
||
<COND (<NOT ,PRSO>
|
||
<V-SMILE>)
|
||
(T
|
||
<TELL "Despite your friendly nature,">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL " isn't likely to respond." CR>)>>
|
||
|
||
<ROUTINE V-WEAR ()
|
||
<COND (<NOT <FSET? ,PRSO ,WEARBIT>>
|
||
<TELL "You can't wear">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>)
|
||
(<FSET? ,PRSO ,WORNBIT>
|
||
<TELL "You're already wearing">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "!" CR>)
|
||
(T
|
||
<MOVE ,PRSO ,PLAYER>
|
||
<FSET ,PRSO ,WORNBIT>
|
||
<COND (<PRSO? ,HEADSET>
|
||
<FCLEAR ,HEADSET ,NDESCBIT>)>
|
||
<TELL "You are now wearing">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>)>>
|
||
|
||
<ROUTINE V-WHAT ()
|
||
<TELL "Good question. Try asking someone." CR>>
|
||
|
||
<ROUTINE V-WHERE ()
|
||
<V-FIND T>>
|
||
|
||
<ROUTINE V-WHO ()
|
||
<COND (<FSET? ,PRSO ,ACTORBIT>
|
||
<PERFORM ,V?WHAT ,PRSO>
|
||
<RTRUE>)
|
||
(T
|
||
<TELL "That's not a person!" CR>)>>
|
||
|
||
<ROUTINE V-WNNF ()
|
||
<COND (<EQUAL? ,PART-FLAG 4>
|
||
<TELL ,NOT-ACTIVE CR>)
|
||
(<PSYCH-CHECK>
|
||
<RFATAL>)
|
||
(<EQUAL? ,HERE ,NEWS>
|
||
<TELL ,LOOK-AROUND CR>)
|
||
(<EQUAL? ,MODE ,COMM-MODE>
|
||
<MOVE ,CURRENT-FEED ,NEWS>
|
||
<GOTO ,NEWS>)
|
||
(T
|
||
<TELL ,ENTER-COMM-MODE CR>)>>
|
||
|
||
<ROUTINE V-WRITE ()
|
||
<TELL "You can't write on">
|
||
<ARTICLE ,PRSO>
|
||
<TELL "!" CR>>
|
||
|
||
<ROUTINE V-YELL ()
|
||
<TELL <PICK-ONE ,WASTES> CR>
|
||
<CLEAR-BUF>>
|
||
|
||
<GLOBAL YES-NO-FLAG 0>
|
||
|
||
<ROUTINE I-YES-NO ()
|
||
<SETG YES-NO-FLAG 0>
|
||
<RFALSE>>
|
||
|
||
<ROUTINE V-YES ()
|
||
<COND (<AND <EQUAL? ,HERE ,SIMONS ,THE-COACHMAN>
|
||
<NOT <EQUAL? ,SYEAR 2081>>
|
||
<EQUAL? ,MEAL-STATUS 1>>
|
||
<MOVE ,PLAYER ,RESTAURANT-TABLE>
|
||
<SETG MEAL-STATUS 3>
|
||
<QUEUE I-MEAL 12>
|
||
<SETG WAITER-COUNTER 0>
|
||
<PUTP ,SPEAR-CARRIER ,P?SDESC "waiter">
|
||
<TELL
|
||
"The maitre d' shows you to a small table at the back of the restaurant." CR>)
|
||
(<G? ,GRIMWOLD-COUNTER 0>
|
||
<BLOT-ACTION>)
|
||
(<OR <EQUAL? ,YES-NO-FLAG 1 2 3>
|
||
<EQUAL? ,YES-NO-FLAG 4 5>>
|
||
<TELL "[That was just a rhetorical question.]" CR>)
|
||
(<EQUAL? ,YES-NO-FLAG 6>
|
||
<TELL "Perelman nods." CR>)
|
||
(<EQUAL? ,YES-NO-FLAG 7>
|
||
<COND (<EQUAL? ,SYEAR 2041>
|
||
<TELL "\"I knew things would turn around!\"" CR>)
|
||
(T
|
||
<TELL "\"It's about time" ,CHANGE-AGENTS CR>)>)
|
||
(<EQUAL? ,YES-NO-FLAG 8>
|
||
<PERFORM ,V?TELL ,SABOTEURS>
|
||
<RTRUE>)
|
||
(<EQUAL? ,YES-NO-FLAG 9 11>
|
||
<TELL "Jill smiles." CR>)
|
||
(<EQUAL? ,YES-NO-FLAG 10>
|
||
<TELL "Jill threatens to pound you." CR>)
|
||
(<EQUAL? ,YES-NO-FLAG 12>
|
||
<COND (<EQUAL? ,HERE ,HOSPITAL>
|
||
<TELL
|
||
"A few quick questions by the nurse reveal that you need no hospital
|
||
attention. She tells you so, ">
|
||
<COND (<EQUAL? ,SYEAR 2061 2071>
|
||
<TELL
|
||
"adding haughtily that you couldn't afford their services anyway, ">)>
|
||
<TELL "and summons an orderly to lead you out." CR CR>
|
||
<SETG FOLLOW-FLAG 13>
|
||
<QUEUE I-UNFOLLOW <+ ,ELAPSED-TIME 2>>
|
||
<PUTP ,SPEAR-CARRIER ,P?SDESC "orderly">
|
||
<GOTO ,ELM-AND-KENNEDY>
|
||
<TELL "The orderly returns to the hospital." CR>)
|
||
(<EQUAL? ,HERE ,POLICE-STATION>
|
||
<PERFORM ,V?TELL-ABOUT ,POLICEMAN ,CRIME>
|
||
<RTRUE>)
|
||
(<EQUAL? ,HERE ,EZZIS-BAR ,BAR ,BURGER-MEISTER>
|
||
<TELL "\"Order something or get outta here.\"" CR>)
|
||
(<EQUAL? ,HERE ,BANK>
|
||
<TELL
|
||
"\"I'll need your credit card if you want to make a transaction...\"" CR>)
|
||
(<EQUAL? ,HERE ,BASE-GATE>
|
||
<TELL
|
||
"\"Well you can't go on, and you can't stay here, so you might as well
|
||
turn around and get lost.\"" CR>)
|
||
(T
|
||
<COND (<EQUAL? ,SYEAR 2041>
|
||
<TELL "\"Feel free to look around...\"" CR>)
|
||
(<EQUAL? ,SYEAR 2071>
|
||
<TELL "\"Buy something or scram.\"" CR>)
|
||
(T
|
||
<TELL
|
||
"\"If you wanna buy something, say so.\"" CR>)>)>)
|
||
(T
|
||
<TELL "You sound rather positive." CR>)>>
|
||
|
||
;"subtitle object manipulation"
|
||
|
||
<ROUTINE ITAKE ("OPTIONAL" (VB T) "AUX" CNT OBJ)
|
||
<COND ;(<FSET? ,PRSO ,INTEGRALBIT>
|
||
<COND (.VB
|
||
<PART-OF>)>
|
||
<RFATAL>)
|
||
(<NOT <FSET? ,PRSO ,TAKEBIT>>
|
||
<COND (.VB
|
||
<V-LOCK>)>
|
||
<RFATAL>)
|
||
(<NOT <IN? <LOC ,PRSO> ,WINNER>>
|
||
<COND (<G? <+ <WEIGHT ,PRSO> <WEIGHT ,WINNER>> 100>
|
||
<COND (.VB
|
||
<TELL "Your load is too heavy." CR>)>
|
||
<RFATAL>)
|
||
(<G? <SET CNT <CCOUNT ,WINNER>> 7>
|
||
<COND (.VB
|
||
<TELL
|
||
"You're holding too many things already." CR>)>
|
||
<RFATAL>)>)>
|
||
<MOVE ,PRSO ,PLAYER>
|
||
<FSET ,PRSO ,TOUCHBIT>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE IDROP () ;"revised 7/19/84 by SEM"
|
||
<COND (<PRSO? ;,EYES ;,EARS ,HANDS ,HEAD>
|
||
<COND (<VERB? DROP THROW GIVE>
|
||
<V-COUNT>)
|
||
(T
|
||
<RFALSE>)>)
|
||
(<PRSO? ,CLOTHES>
|
||
<PERFORM ,V?TAKE-OFF ,CLOTHES>
|
||
<RTRUE>)
|
||
(<AND <VERB? GIVE>
|
||
<PRSO? ,BATHROOM-OBJECT>>
|
||
<RFALSE>)
|
||
(<NOT <HELD? ,PRSO>>
|
||
<TELL "That's easy for you to say since you don't even have">
|
||
<ARTICLE ,PRSO T>
|
||
<TELL "." CR>)
|
||
;(<FSET? ,PRSO ,INTEGRALBIT>
|
||
<PART-OF>)
|
||
(<AND <NOT <IN? ,PRSO ,WINNER>>
|
||
<FSET? <LOC ,PRSO> ,CONTBIT>
|
||
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>>
|
||
<TELL "Impossible because">
|
||
<ARTICLE <LOC ,PRSO> T>
|
||
<TELL " is closed." CR>)
|
||
(<FSET? ,PRSO ,WORNBIT>
|
||
<TELL "You'll have to remove it first." CR>)
|
||
(T
|
||
<RFALSE>)>>
|
||
|
||
<ROUTINE CCOUNT (OBJ "AUX" (CNT 0) X)
|
||
<COND (<SET X <FIRST? .OBJ>>
|
||
<REPEAT ()
|
||
<COND (<NOT <FSET? .X ,WORNBIT>>
|
||
<SET CNT <+ .CNT 1>>)>
|
||
<COND (<NOT <SET X <NEXT? .X>>>
|
||
<RETURN>)>>)>
|
||
.CNT>
|
||
|
||
;"Gets SIZE of supplied object, recursing to nth level."
|
||
<ROUTINE WEIGHT (OBJ "AUX" CONT (WT 0))
|
||
<COND (<SET CONT <FIRST? .OBJ>>
|
||
<REPEAT ()
|
||
<COND (<AND <EQUAL? .OBJ ,PLAYER>
|
||
<FSET? .CONT ,WORNBIT>>
|
||
<SET WT <+ .WT 1>>)
|
||
;"worn things shouldn't count"
|
||
(<AND <EQUAL? .OBJ ,PLAYER>
|
||
<FSET? <LOC .CONT> ,WORNBIT>>
|
||
<SET WT <+ .WT 1>>)
|
||
;"things in worn things shouldn't count"
|
||
(T
|
||
<SET WT <+ .WT <WEIGHT .CONT>>>)>
|
||
<COND (<NOT <SET CONT <NEXT? .CONT>>> <RETURN>)>>)>
|
||
<+ .WT <GETP .OBJ ,P?SIZE>>>
|
||
|
||
;"subtitle describers"
|
||
|
||
<GLOBAL INDENTS
|
||
<PTABLE ""
|
||
" "
|
||
" "
|
||
" "
|
||
" "
|
||
" ">>
|
||
|
||
<ROUTINE DESCRIBE-ROOM ("OPTIONAL" (LOOK? <>) "AUX" (PRINT-DESC <>) STR AV)
|
||
<COND (<OR .LOOK?
|
||
<EQUAL? ,VERBOSITY 2> ;"verbose">
|
||
<SET PRINT-DESC T>)>
|
||
;<COND (<NOT ,LIT>
|
||
<TELL "It is pitch black." CR>
|
||
<RETURN <>>)>
|
||
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
|
||
<FSET ,HERE ,TOUCHBIT>
|
||
<SET PRINT-DESC T>)>
|
||
<COND (<IN? ,HERE ,ROOMS>
|
||
<TELL D ,HERE>)>
|
||
<COND (<OR .LOOK?
|
||
<EQUAL? ,VERBOSITY 1 2>>
|
||
<COND (<FSET? <LOC ,PLAYER> ,VEHBIT>
|
||
<COND (<EQUAL? <LOC ,PLAYER> ,GLOBAL-TABLE
|
||
,RESTAURANT-TABLE ,DINETTE-SET>
|
||
<TELL ", seated at a table">)
|
||
(<FSET? <LOC ,PLAYER> ,FURNITUREBIT>
|
||
<TELL ", on">
|
||
<ARTICLE <LOC ,PLAYER>>)
|
||
(T
|
||
<TELL ", in">
|
||
<ARTICLE <LOC ,PLAYER>>)>)>
|
||
<COND (<AND .PRINT-DESC
|
||
<GETPT ,HERE ,P?LDESC>>
|
||
<TELL CR <GETP ,HERE ,P?LDESC>>
|
||
<CROWD-DESC>)
|
||
(.PRINT-DESC
|
||
<CRLF>
|
||
<APPLY <GETP ,HERE ,P?ACTION> ,M-LOOK>
|
||
<CROWD-DESC>)>)>
|
||
<CRLF>>
|
||
|
||
<GLOBAL DESCRIBE-CROWDS T>
|
||
|
||
<ROUTINE CROWD-DESC ()
|
||
<COND (<AND <FSET? ,HERE ,STREETBIT>
|
||
<NOT <EQUAL? ,HERE ,AIRPORT-ENTRANCE>>
|
||
<NOT <EQUAL? ,HERE ,BASE-GATE>>
|
||
<NOT <EQUAL? ,HERE ,ROCKVIL-UNIVERSITY>>
|
||
<NOT <EQUAL? ,HERE ,INTERCHANGE>>
|
||
<NOT <FSET? ,HERE ,BADAREABIT>>
|
||
<NOT <EQUAL? ,SYEAR 2081>>
|
||
,DESCRIBE-CROWDS>
|
||
<SETG DESCRIBE-CROWDS <>>
|
||
<QUEUE I-DESCRIBE-CROWDS 90>
|
||
<COND (<AND <G? ,STIME 720>
|
||
<L? ,STIME 810>>
|
||
<TELL " The street is bustling with lunchtime crowds.">)
|
||
(<EQUAL? ,LIGHT-LEVEL 3>
|
||
<TELL
|
||
" The sidewalks and street are crowded with people.">)
|
||
(<EQUAL? ,LIGHT-LEVEL 2>
|
||
<COND (<L? ,STIME 720>
|
||
<TELL
|
||
" The street is getting more crowded as the new day begins.">)
|
||
(T
|
||
<TELL
|
||
" The number of people around seems to be diminishing.">)>)
|
||
(<EQUAL? ,LIGHT-LEVEL 1>
|
||
<COND (<L? ,STIME 720>
|
||
<TELL
|
||
" The city is still fairly quiet, but there are more people around now
|
||
than during the dead of night.">)
|
||
(T
|
||
<TELL
|
||
" The midday crowds have almost completely dispersed;
|
||
the street is much less busy now.">)>)
|
||
(<OR <EQUAL? ,SYEAR 2041>
|
||
<AND <G? ,STIME 720>
|
||
<L? ,STIME 1260>>>
|
||
<TELL
|
||
" The street is dark and almost completely deserted. Only a few people are
|
||
visible, hurrying to destinations unknown to you.">)
|
||
(T ;"curfew"
|
||
<TELL " The street is totally deserted.">)>)>>
|
||
|
||
<ROUTINE I-DESCRIBE-CROWDS ()
|
||
<SETG DESCRIBE-CROWDS T>
|
||
<RFALSE>>
|
||
|
||
<ROUTINE DESCRIBE-OBJECTS ("OPTIONAL" (V? <>))
|
||
<COND (<FIRST? ,HERE>
|
||
<PRINT-CONT ,HERE <SET V? <OR .V? <==? ,VERBOSITY 2>>> -1>)>
|
||
;<COND (,LIT
|
||
<COND (<FIRST? ,HERE>
|
||
<PRINT-CONT ,HERE
|
||
<SET V? <OR .V? <==? ,VERBOSITY 2>>> -1>)>)
|
||
(T
|
||
<TELL ,TOO-DARK CR>)>>
|
||
|
||
"DESCRIBE-OBJECT -- takes object and flag. If flag is true, will print a
|
||
long description (fdesc or ldesc), otherwise will print short."
|
||
<ROUTINE DESCRIBE-OBJECT (OBJ V? LEVEL "AUX" (STR <>) AV)
|
||
<COND (<AND <0? .LEVEL>
|
||
<APPLY <GETP .OBJ ,P?DESCFCN> ,M-OBJDESC>>
|
||
<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">
|
||
<PLURAL .OBJ>
|
||
<ARTICLE .OBJ>
|
||
<TELL " here.">)
|
||
(T
|
||
<TELL <GET ,INDENTS .LEVEL>>
|
||
<COND (<FSET? .OBJ ,NARTICLEBIT>
|
||
T)
|
||
(<FSET? .OBJ ,VOWELBIT>
|
||
<TELL "an ">)
|
||
(T
|
||
<TELL "a ">)>
|
||
<TELL D .OBJ>
|
||
<COND (<FSET? .OBJ ,WORNBIT>
|
||
<TELL " (being worn)">)>)>
|
||
;<COND (<AND <0? .LEVEL>
|
||
<NOT <FSET? .OBJ ,ACTORBIT>>
|
||
<SET AV <LOC ,PLAYER>>
|
||
<FSET? .AV ,VEHBIT>>
|
||
<TELL " (outside the " D .AV ")">)>
|
||
<CRLF>
|
||
<COND (<AND <SEE-INSIDE? .OBJ> <FIRST? .OBJ>>
|
||
<PRINT-CONT .OBJ .V? .LEVEL>)>>
|
||
|
||
<ROUTINE PRINT-CONT (OBJ "OPTIONAL" (V? <>) (LEVEL 0)
|
||
"AUX" Y (1ST? T) (AV <>) STR (PV? <>) (INV? <>))
|
||
<COND (<NOT <SET Y <FIRST? .OBJ>>>
|
||
<RTRUE>)>
|
||
<COND (<FSET? <LOC ,WINNER> ,VEHBIT>
|
||
<SET AV <LOC ,WINNER>>)>
|
||
<COND (<EQUAL? ,PLAYER .OBJ <LOC .OBJ>>
|
||
<SET INV? T>)
|
||
(T
|
||
<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>)>
|
||
<COND (<AND <SEE-INSIDE? .Y>
|
||
<NOT <GETP <LOC .Y> ,P?DESCFCN>>
|
||
<FIRST? .Y>>
|
||
<PRINT-CONT .Y .V? 0>)>)>
|
||
<SET Y <NEXT? .Y>>>)>
|
||
<SET Y <FIRST? .OBJ>>
|
||
<REPEAT ()
|
||
<COND (<NOT .Y>
|
||
<COND (<AND .PV? .AV <FIRST? .AV>>
|
||
<PRINT-CONT .AV .V? .LEVEL>)>
|
||
<RETURN <NOT .1ST?>>)
|
||
(<EQUAL? .Y .AV ,PLAYER>)
|
||
(<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? <>>)>
|
||
<DESCRIBE-OBJECT .Y .V? .LEVEL>)
|
||
(<AND <FIRST? .Y> <SEE-INSIDE? .Y>>
|
||
<PRINT-CONT .Y .V? .LEVEL>)>)>
|
||
<SET Y <NEXT? .Y>>>>
|
||
|
||
<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? <>>)
|
||
(T
|
||
<TELL ",">
|
||
<COND (<NOT .N>
|
||
<TELL " and">)>)>
|
||
<ARTICLE .F>
|
||
<COND (<AND <NOT .IT?>
|
||
<NOT .TWO?>>
|
||
<SET IT? .F>)
|
||
(T
|
||
<SET TWO? T>
|
||
<SET IT? <>>)>
|
||
<SET F .N>
|
||
<COND (<NOT .F>
|
||
<COND (<AND .IT? <NOT .TWO?>>
|
||
<SETG P-IT-OBJECT .IT?>)>
|
||
<RTRUE>)>>)>>
|
||
|
||
<ROUTINE FIRSTER (OBJ LEVEL)
|
||
<COND (<EQUAL? .OBJ ,WINNER>
|
||
<RTRUE>)
|
||
(<NOT <IN? .OBJ ,ROOMS>>
|
||
<COND (<G? .LEVEL 0>
|
||
<TELL <GET ,INDENTS .LEVEL>>)>
|
||
<COND (<FSET? .OBJ ,SURFACEBIT>
|
||
<TELL "Sitting on">
|
||
<ARTICLE .OBJ T>
|
||
<TELL " is:" CR>)
|
||
(<FSET? .OBJ ,ACTORBIT>
|
||
<TELL ,IT-LOOKS-LIKE>
|
||
<ARTICLE .OBJ T>
|
||
<TELL " is holding:" CR>)
|
||
(T
|
||
<TELL ,IT-LOOKS-LIKE>
|
||
<ARTICLE .OBJ T>
|
||
<TELL " contains:" CR>)>)>>
|
||
|
||
<ROUTINE DESCRIBE-VEHICLE () ;"for LOOK AT vehicle when you're in it"
|
||
<MOVE ,PLAYER ,ROOMS>
|
||
<COND (<FIRST? ,PRSO>
|
||
<PRINT-CONT ,PRSO>)
|
||
(T
|
||
<TELL "It's empty (not counting you)." CR>)>
|
||
<MOVE ,PLAYER ,PRSO>>
|
||
|
||
;"subtitle movement and death"
|
||
|
||
<DIRECTIONS ;"Do not change the order of the first 8 without consulting MARC!"
|
||
NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
|
||
|
||
<CONSTANT REXIT 0>
|
||
<CONSTANT UEXIT 2>
|
||
<CONSTANT NEXIT 3>
|
||
<CONSTANT FEXIT 4>
|
||
<CONSTANT CEXIT 5>
|
||
<CONSTANT DEXIT 6>
|
||
|
||
<CONSTANT NEXITSTR 0>
|
||
<CONSTANT FEXITFCN 0>
|
||
<CONSTANT CEXITFLAG 1>
|
||
<CONSTANT CEXITSTR 1>
|
||
<CONSTANT DEXITOBJ 1>
|
||
<CONSTANT DEXITSTR 2>
|
||
|
||
<ROUTINE GOTO (RM "OPTIONAL" (V? T))
|
||
<MOVE ,PLAYER .RM>
|
||
<SETG HERE .RM>
|
||
<COND (<AND ,SIMULATING
|
||
<NOT <EQUAL? ,SYEAR 2091>>
|
||
<NOT <FSET? ,HERE ,TUBEBIT>>
|
||
<NOT <EQUAL? ,HERE ,RED-TUBECAR ,BROWN-TUBECAR>>
|
||
<NOT <IN-APARTMENT?>>>
|
||
<SETG ELAPSED-TIME 5>)>
|
||
;<SETG LIT <LIT? ,HERE>>
|
||
<APPLY <GETP ,HERE ,P?ACTION> ,M-ENTER>
|
||
<COND (<OR <EQUAL? ,HERE ,COMM-ROOM ,INTERFACE-ROOM ,SLEEP-ROOM>
|
||
<EQUAL? ,HERE ,LIBRARY-ROOM ,SIMULATION-ROOM>>
|
||
T)
|
||
(<AND .V?
|
||
<EQUAL? ,HERE .RM>>
|
||
<V-FIRST-LOOK>)>
|
||
<RTRUE>>
|
||
|
||
<ROUTINE JIGS-UP (DESC "AUX" X)
|
||
<TELL .DESC>
|
||
<COND (<HELD? ,HEADSET>
|
||
<MOVE ,HEADSET ,JOYBOOTH>)>
|
||
<ROB ,PLAYER ,LOCAL-GLOBALS>
|
||
<MOVE ,STONES ,LOCAL-GLOBALS>
|
||
<MOVE ,TIMBERS ,LOCAL-GLOBALS>
|
||
<MOVE ,STEW ,LOCAL-GLOBALS>
|
||
<MOVE ,BANNER ,LOCAL-GLOBALS>
|
||
<MOVE ,SOUVENIR ,LOCAL-GLOBALS>
|
||
<MOVE ,FIRETRUCK ,LOCAL-GLOBALS>
|
||
<MOVE ,SCARF ,LOCAL-GLOBALS>
|
||
<MOVE ,ANDERSON-DIRECTORY ,LOCAL-GLOBALS>
|
||
<MOVE ,DUCKS ,LOCAL-GLOBALS>
|
||
<MOVE ,TURTLE ,LOCAL-GLOBALS>
|
||
<MOVE ,MANTA-RAY ,LOCAL-GLOBALS>
|
||
<MOVE ,TURKEY-SANDWICH ,LOCAL-GLOBALS>
|
||
<MOVE ,HAM-SANDWICH ,LOCAL-GLOBALS>
|
||
<MOVE ,SALAD ,LOCAL-GLOBALS>
|
||
<MOVE ,SODA ,LOCAL-GLOBALS>
|
||
<MOVE ,APPLE ,LOCAL-GLOBALS>
|
||
<MOVE ,GRANOLA-CLUSTER ,LOCAL-GLOBALS>
|
||
<MOVE ,BEER ,LOCAL-GLOBALS>
|
||
<MOVE ,FORMULA ,LOCAL-GLOBALS>
|
||
<MOVE ,TOY ,CRIB>
|
||
<MOVE ,BANNED-TITLES-LIST ,LOCAL-GLOBALS>
|
||
<MOVE ,SCOTCH ,LIQUOR-STORE>
|
||
<MOVE ,CRIB ,LOCAL-GLOBALS>
|
||
<MOVE ,MITCHELL ,LOCAL-GLOBALS>
|
||
<MOVE ,BABY ,CRIB>
|
||
<MOVE ,PARTITION ,LOCAL-GLOBALS>
|
||
<MOVE ,WATERPOOL ,LOCAL-GLOBALS>
|
||
<MOVE ,STATUE ,LOCAL-GLOBALS>
|
||
<MOVE ,PLAQUE ,LOCAL-GLOBALS>
|
||
<MOVE ,FOUNTAIN ,LOCAL-GLOBALS>
|
||
<MOVE ,MOLD ,LOCAL-GLOBALS>
|
||
<MOVE ,TICKET ,LOCAL-GLOBALS>
|
||
<MOVE ,CHURCH-OFFICIAL ,LOCAL-GLOBALS>
|
||
<MOVE ,GOVERNMENT-OFFICIAL ,LOCAL-GLOBALS>
|
||
<MOVE ,OFFICIAL-SNACK ,LOCAL-GLOBALS>
|
||
<MOVE ,SWEATER ,DUNBARS>
|
||
<MOVE ,SACK ,LOCAL-GLOBALS>
|
||
<MOVE ,RUSTY-CROSS ,LOCAL-GLOBALS>
|
||
<MOVE ,PAMPHLET ,LOCAL-GLOBALS>
|
||
<MOVE ,ROY ,LOCAL-GLOBALS>
|
||
<MOVE ,DRIVERS-LICENSE ,LOCAL-GLOBALS>
|
||
<MOVE ,RATION-CARD ,LOCAL-GLOBALS>
|
||
<MOVE ,NEWSPAPER-DISPENSER ,LOCAL-GLOBALS>
|
||
<MOVE ,NEWSPAPER ,LOCAL-GLOBALS>
|
||
<MOVE ,GROCERIES ,LOCAL-GLOBALS>
|
||
<MOVE ,BOOK ,BOOKSTORE>
|
||
<MOVE ,JILL-BOOK ,LOCAL-GLOBALS>
|
||
<MOVE ,BARKING ,LOCAL-GLOBALS>
|
||
<MOVE ,RESTAURANT-TABLE ,LOCAL-GLOBALS>
|
||
<MOVE ,CHAIR ,LOCAL-GLOBALS>
|
||
<FSET ,NEWSPAPER ,TRYTAKEBIT>
|
||
<FSET ,NEWSPAPER ,NDESCBIT>
|
||
<FSET ,BOOK ,NDESCBIT>
|
||
<FSET ,BOOK ,TRYTAKEBIT>
|
||
<FSET ,SWEATER ,NDESCBIT>
|
||
<FSET ,SWEATER ,TRYTAKEBIT>
|
||
<FSET ,SCOTCH ,TRYTAKEBIT>
|
||
<FSET ,SCOTCH ,NDESCBIT>
|
||
<FSET ,TICKET ,TRYTAKEBIT>
|
||
<FSET ,TICKET ,NDESCBIT>
|
||
<FSET ,HEADSET ,NDESCBIT>
|
||
<FCLEAR ,CHURCH-STREET-PARK ,PARKBIT>
|
||
<FCLEAR ,CHURCH-STREET-PARK ,OUTSIDEBIT>
|
||
<FCLEAR ,WAREHOUSE-1 ,OUTSIDEBIT>
|
||
<FCLEAR ,ST-MICHAELS ,OUTSIDEBIT>
|
||
<FCLEAR ,FIRST-METHODIST-CHURCH ,OUTSIDEBIT>
|
||
<FCLEAR ,WORD-PROCESSOR ,ONBIT>
|
||
<FCLEAR ,CEMETERY ,ONBIT>
|
||
<FCLEAR ,WALLET ,OPENBIT>
|
||
<FCLEAR ,APARTMENT-DOOR ,OPENBIT>
|
||
<FCLEAR ,PARKVIEW-DOOR ,OPENBIT>
|
||
<FCLEAR ,JILL ,TOUCHBIT>
|
||
<FCLEAR ,GROCERIES ,TOUCHBIT>
|
||
<FCLEAR ,PAMPHLET ,TOUCHBIT>
|
||
<FCLEAR ,REFRIGERATOR ,OPENBIT>
|
||
<FCLEAR ,SOY-PATTY ,TOUCHBIT>
|
||
<FCLEAR ,CHURCH-OFFICIAL ,TOUCHBIT>
|
||
<FCLEAR ,HEADSET ,WORNBIT>
|
||
<SETG HUNGER-WARNING <>>
|
||
<SETG BRUISED <>>
|
||
<SETG MUGGED <>>
|
||
<SETG JOYBOOTH-USED <>>
|
||
<SETG MITCHELL-NEWS-FLAG <>>
|
||
<SETG MITCHELL-RAID-FLAG <>>
|
||
<SETG WILD-DOG-COUNTER 0>
|
||
<SETG DORM-RAID-FLAG <>>
|
||
<SETG APARTMENT-RAID-FLAG <>>
|
||
<SETG STONING-FLAG <>>
|
||
<SETG BEGGAR-FLAG <>>
|
||
<SETG CLERK-WAITING <>>
|
||
<SETG RAID-PROB 0>
|
||
<SETG RECORDING <>>
|
||
<SETG MAITRE-COUNTER 0>
|
||
<SETG WAITER-COUNTER 0>
|
||
<SETG MEAL-STATUS 0>
|
||
<SETG JILL-COUNTER -1>
|
||
<SETG JILL-NOT-SPOKEN-YET T>
|
||
<DISABLE <INT I-HUNGER>>
|
||
<DISABLE <INT I-JOYBOOTH-RECHARGE>>
|
||
<DISABLE <INT I-MUG>>
|
||
<DISABLE <INT I-JAIL>>
|
||
<DISABLE <INT I-CITY-NOISES>>
|
||
<DISABLE <INT I-RED-TUBE>>
|
||
<DISABLE <INT I-BROWN-TUBE>>
|
||
<DISABLE <INT I-SUNRISE-SUNSET>>
|
||
<DISABLE <INT I-JILL>>
|
||
<DISABLE <INT I-MITCHELL>>
|
||
<DISABLE <INT I-MITCHELL-RAID>>
|
||
<DISABLE <INT I-CURFEW>>
|
||
<PUTP ,SOUTHWAY-AND-RIVER ,P?SCENE 34>
|
||
<PUTP ,MAIN-AND-RIVER ,P?SCENE 0>
|
||
<PUTP ,MAIN-AND-CHURCH ,P?SCENE 50>
|
||
<PUTP ,MAIN-AND-WICKER ,P?SCENE 25>
|
||
<PUTP ,HALLEY-AND-UNIVERSITY ,P?SCENE 100>
|
||
<PUTP ,AIRPORTWAY-AND-RIVER ,P?SCENE 34>
|
||
<PUTP ,MUSEUM-ENTRANCE ,P?SCENE 100>
|
||
<PUTP ,TERMINAL ,P?SCENE 34>
|
||
<PUTP ,CENTRE-AND-KENNEDY ,P?SCENE 25>
|
||
<PUTP ,ZOO-ENTRANCE ,P?SCENE 100>
|
||
<PUTP ,WICKER-AND-RIVER ,P?SCENE 34>
|
||
<COND (<EQUAL? ,SYEAR 2041>
|
||
<SETG 2041-SECONDS <- <RANDOM 60> 1>>
|
||
<SETG 2041-TENTHS <- <RANDOM 10> 1>>)
|
||
(<EQUAL? ,SYEAR 2051>
|
||
<SETG 2051-SECONDS <- <RANDOM 60> 1>>
|
||
<SETG 2051-TENTHS <- <RANDOM 10> 1>>)
|
||
(<EQUAL? ,SYEAR 2061>
|
||
<SETG 2061-SECONDS <- <RANDOM 60> 1>>
|
||
<SETG 2061-TENTHS <- <RANDOM 10> 1>>)
|
||
(<EQUAL? ,SYEAR 2071>
|
||
<SETG 2071-SECONDS <- <RANDOM 60> 1>>
|
||
<SETG 2071-TENTHS <- <RANDOM 10> 1>>)
|
||
(<EQUAL? ,SYEAR 2081>
|
||
<SETG 2081-SECONDS <- <RANDOM 60> 1>>
|
||
<SETG 2081-TENTHS <- <RANDOM 10> 1>>)>
|
||
<CRLF> <CRLF>
|
||
;<BUFOUT <>>
|
||
<HLIGHT ,H-BOLD>
|
||
<TELL " -- SIMULATION TERMINATED --">
|
||
|
||
<HLIGHT 0>
|
||
;<BUFOUT T>
|
||
<CRLF>
|
||
<SET X <FIRST? ,ROOMS>>
|
||
<REPEAT () ;"clear the touchbit of every room"
|
||
<FCLEAR .X ,TOUCHBIT>
|
||
<SET X <NEXT? .X>>
|
||
<COND (<NOT .X>
|
||
<RETURN>)>>
|
||
<COND (<AND <NOT <QUEUED? ,I-FIRST-SIMULATION-RESULT>>
|
||
<NOT <QUEUED? ,I-VIEW>>>
|
||
<COND (<EQUAL? ,PART-FLAG 1>
|
||
<MOVE ,PERELMAN ,LOCAL-GLOBALS>
|
||
;"Perelman should be off reviewing the recordings"
|
||
<QUEUE I-MESSAGE-D 6>)
|
||
(<L? ,PART-FLAG 3> ;"in Part III he's 'busy'"
|
||
<PUT-PERELMAN-IN-THE-RIGHT-PLACE>
|
||
<QUEUE I-PERELMAN -1>
|
||
<SETG LAST-ABE-TIME <- ,TIME 1>>)>)>
|
||
<SETG L-DATE <>>
|
||
<SETG SIMULATING <>>
|
||
<SETG MODE ,COMM-MODE>
|
||
<GOTO ,COMM-ROOM>>
|
||
|
||
;"subtitle useful utility routines"
|
||
|
||
<ROUTINE MOBY-VERB? ()
|
||
<COND (<OR <PRSO-VERB?>
|
||
<PRSI-VERB?>>
|
||
<RTRUE>)
|
||
(T
|
||
<RFALSE>)>>
|
||
|
||
;<ROUTINE GENERIC-WORD? ()
|
||
<COND (<OR <EQUAL? ,P-NAM ,W?TRAIN ,W?SUBWAY ,W?TUBECAR>
|
||
<EQUAL? ,P-NAM ,W?MITCHELL ,W?BOOK ,W?BOOKS>>
|
||
<RTRUE>)
|
||
(T
|
||
<RFALSE>)>>
|
||
|
||
<ROUTINE ACCESSIBLE? (OBJ "AUX" L) ;"can player TOUCH object?"
|
||
;"revised 5/2/84 by SEM and SWG"
|
||
<SET L <LOC .OBJ>>
|
||
<COND (<FSET? .OBJ ,INVISIBLE>
|
||
<RFALSE>)
|
||
;(<EQUAL? .OBJ ,PSEUDO-OBJECT>
|
||
<COND (<EQUAL? ,LAST-PSEUDO-LOC ,HERE>
|
||
<RTRUE>)
|
||
(T
|
||
<RFALSE>)>)
|
||
(<NOT .L>
|
||
<RFALSE>)
|
||
(<EQUAL? .L ,PLAYER ,WINNER ,HERE>
|
||
<RTRUE>)
|
||
(<EQUAL? .L ,GLOBAL-OBJECTS>
|
||
<RTRUE>)
|
||
(<AND <EQUAL? .L ,LOCAL-GLOBALS>
|
||
<GLOBAL-IN? .OBJ ,HERE>>
|
||
<RTRUE>)
|
||
(<NOT <EQUAL? <META-LOC .OBJ> ,HERE>>
|
||
<RFALSE>)
|
||
(<AND <FSET? .L ,OPENBIT>
|
||
<ACCESSIBLE? .L>>
|
||
<RTRUE>)
|
||
(T
|
||
<RFALSE>)>>
|
||
|
||
<ROUTINE VISIBLE? (OBJ "AUX" (L <LOC .OBJ>)) ;"can player SEE object"
|
||
;"revised 5/2/84 by SEM and SWG"
|
||
<COND (<ACCESSIBLE? .OBJ>
|
||
<RTRUE>)
|
||
(<AND <SEE-INSIDE? .L>
|
||
<VISIBLE? .L>>
|
||
<RTRUE>)
|
||
(T
|
||
<RFALSE>)>>
|
||
|
||
<ROUTINE META-LOC (OBJ "OPTIONAL" (INV <>))
|
||
<REPEAT ()
|
||
<COND (<NOT .OBJ>
|
||
<RFALSE>)
|
||
(<AND .INV <FSET? .OBJ ,INVISIBLE>>
|
||
<RFALSE>)
|
||
(<IN? .OBJ ,GLOBAL-OBJECTS>
|
||
<RETURN ,GLOBAL-OBJECTS>)>
|
||
<COND (<IN? .OBJ ,ROOMS>
|
||
<RETURN .OBJ>)
|
||
(T
|
||
<SET OBJ <LOC .OBJ>>)>>>
|
||
|
||
<ROUTINE OTHER-SIDE (DOBJ "AUX" (P 0) TEE) ;"finds room on other side of door"
|
||
<REPEAT ()
|
||
<COND (<L? <SET P <NEXTP ,HERE .P>> ,LOW-DIRECTION>
|
||
<RETURN <>>)
|
||
(T
|
||
<SET TEE <GETPT ,HERE .P>>
|
||
<COND (<AND <EQUAL? <PTSIZE .TEE> ,DEXIT>
|
||
<EQUAL? <GET .TEE ,DEXITOBJ> .DOBJ>>
|
||
<RETURN .P>)>)>>>
|
||
|
||
<ROUTINE HELD? (OBJ "OPTIONAL" (CONT <>))
|
||
<COND (<NOT .CONT>
|
||
<SET CONT ,WINNER>)>
|
||
<COND (<NOT .OBJ>
|
||
<RFALSE>)
|
||
(<IN? .OBJ .CONT>
|
||
<RTRUE>)
|
||
(<IN? .OBJ ,ROOMS>
|
||
<RFALSE>)
|
||
(<IN? .OBJ ,GLOBAL-OBJECTS>
|
||
<RFALSE>)
|
||
(T
|
||
<HELD? <LOC .OBJ>>)>>
|
||
|
||
<ROUTINE SEE-INSIDE? (OBJ)
|
||
<AND <NOT <FSET? .OBJ ,INVISIBLE>>
|
||
<OR <FSET? .OBJ ,TRANSBIT>
|
||
<FSET? .OBJ ,OPENBIT>>>>
|
||
|
||
<ROUTINE GLOBAL-IN? (OBJ1 OBJ2 "AUX" TEE)
|
||
<COND (<SET TEE <GETPT .OBJ2 ,P?GLOBAL>>
|
||
<INTBL? .OBJ1 .TEE </ <PTSIZE .TEE> 2>>)>>
|
||
|
||
<ROUTINE FIND-IN (WHERE WHAT "AUX" W)
|
||
<SET W <FIRST? .WHERE>>
|
||
<COND (<NOT .W>
|
||
<RFALSE>)>
|
||
<REPEAT ()
|
||
<COND (<FSET? .W .WHAT>
|
||
<RETURN .W>)
|
||
(<NOT <SET W <NEXT? .W>>>
|
||
<RETURN <>>)>>>
|
||
|
||
<ROUTINE LOC-CLOSED ()
|
||
<COND (<AND <FSET? <LOC ,PRSO> ,CONTBIT>
|
||
<NOT <FSET? <LOC ,PRSO> ,OPENBIT>>
|
||
<FSET? ,PRSO ,TAKEBIT>>
|
||
<TELL "But">
|
||
<ARTICLE <LOC ,PRSO> T>
|
||
<TELL " is closed!" CR>
|
||
<RTRUE>)
|
||
(T
|
||
<RFALSE>)>>
|
||
|
||
<ROUTINE RIGHT-HERE ()
|
||
<TELL "But">
|
||
<ARTICLE ,PRSO T>
|
||
<PLURAL ,PRSO>
|
||
<TELL " right here!" CR>>
|
||
|
||
<ROUTINE DO-WALK (DIR)
|
||
<SETG P-WALK-DIR .DIR>
|
||
<PERFORM ,V?WALK .DIR>>
|
||
|
||
<ROUTINE CHANGE-OBJECT (OLD NEW)
|
||
<COND (<PRSO? .OLD>
|
||
<PERFORM ,PRSA .NEW ,PRSI>
|
||
<RTRUE>)
|
||
(T
|
||
<PERFORM ,PRSA ,PRSO .NEW>
|
||
<RTRUE>)>>
|
||
|
||
<ROUTINE CLEAR-BUF ()
|
||
<SETG P-CONT <>>
|
||
<SETG QUOTE-FLAG <>>
|
||
<RFATAL>>
|
||
|
||
<ROUTINE ROB (WHO WHERE "AUX" N X)
|
||
<SET X <FIRST? .WHO>>
|
||
<REPEAT ()
|
||
<COND (<NOT .X>
|
||
<RETURN>)>
|
||
<SET N <NEXT? .X>>
|
||
<COND (<AND <EQUAL? .WHO ,PLAYER>
|
||
<FSET? .X ,WORNBIT>>
|
||
<FCLEAR .X ,WORNBIT>)>
|
||
<MOVE .X .WHERE>
|
||
<SET X .N>>>
|
||
|
||
;<ROUTINE HOLDING-ONE-BUT-NOT-BOTH? (ONE TWO)
|
||
<COND (<AND <HELD? .ONE>
|
||
<HELD? .TWO>>
|
||
<RFALSE>)
|
||
(<HELD? .ONE>
|
||
<RTRUE>)
|
||
(<HELD? .TWO>
|
||
<RTRUE>)
|
||
(T
|
||
<RFALSE>)>>
|
||
|
||
<ROUTINE HACK-HACK (STR)
|
||
<TELL .STR>
|
||
<ARTICLE ,PRSO T>
|
||
<TELL <PICK-ONE ,HO-HUM> CR>>
|
||
|
||
<ROUTINE ARTICLE (OBJ "OPTIONAL" (THE <>))
|
||
<COND (<NOT .OBJ>
|
||
<SET OBJ ,NOT-HERE-OBJECT>)>
|
||
<COND (<NOT <FSET? .OBJ ,NARTICLEBIT>>
|
||
<COND (.THE
|
||
<TELL " the">)
|
||
(<FSET? .OBJ ,VOWELBIT>
|
||
<TELL " an">)
|
||
(T
|
||
<TELL " a">)>)>
|
||
<TELL " " D .OBJ>>
|
||
|
||
<ROUTINE PLURAL (OBJ)
|
||
<COND (<FSET? .OBJ ,PLURALBIT>
|
||
<TELL " are">)
|
||
(T
|
||
<TELL " is">)>>
|
||
|
||
<GLOBAL HO-HUM
|
||
<LTABLE
|
||
0
|
||
" doesn't do anything."
|
||
" accomplishes nothing."
|
||
" has no desirable effect.">>
|
||
|
||
<GLOBAL YUKS
|
||
<LTABLE
|
||
0
|
||
"What a concept."
|
||
"Nice try."
|
||
"You can't be serious."
|
||
"Not bloody likely.">>
|
||
|
||
<GLOBAL IMPOSSIBLES
|
||
<LTABLE
|
||
0
|
||
"You have lost your mind."
|
||
"You are clearly insane."
|
||
"That's a pretty wild idea.">>
|
||
|
||
<GLOBAL WASTES
|
||
<LTABLE
|
||
0
|
||
"An utterly useless action."
|
||
"A complete waste of time."
|
||
"A totally unhelpful idea.">> |