1089 lines
26 KiB
Plaintext
1089 lines
26 KiB
Plaintext
"MISC for BUREAUCRACY: (C)1987 Infocom, Inc. All Rights Reserved."
|
|
|
|
<FILE-FLAGS MDL-ZIL?>
|
|
|
|
<INCLUDE "OLD-PARSERDEFS" "FORMDEFS">
|
|
|
|
<USE "NEWSTRUC">
|
|
|
|
<DIRECTIONS NORTH EAST SOUTH WEST UP DOWN IN OUT>
|
|
|
|
"*** ZCODE STARTS HERE ***"
|
|
|
|
<OBJECT DUMMY-OBJECT>
|
|
|
|
<CONSTANT SL-TABLE <ITABLE NONE 80>>
|
|
<SETG OLD-HERE <>>
|
|
<SETG OLD-LEN 0>
|
|
|
|
<SETG WINNER 0>
|
|
|
|
<CONSTANT YOU-SEE "You see ">
|
|
<CONSTANT CANT "You can't ">
|
|
<CONSTANT DONT "You don't ">
|
|
<CONSTANT PERIOD ".|
|
|
">
|
|
<CONSTANT PCR ".|
|
|
|
|
|
">
|
|
<CONSTANT BRACKET "]|
|
|
|
|
|
">
|
|
|
|
<MSETG S-TEXT 0>
|
|
<MSETG S-WINDOW 1>
|
|
|
|
<MSETG S-BEEP 1>
|
|
<MSETG S-BOOP 2>
|
|
|
|
<MSETG H-NORMAL 0>
|
|
<MSETG H-INVERSE 1>
|
|
<MSETG H-BOLD 2>
|
|
<MSETG H-ITALIC 4>
|
|
|
|
<MSETG D-SCREEN-ON 1>
|
|
<MSETG D-SCREEN-OFF -1>
|
|
<MSETG D-PRINTER-ON 2>
|
|
<MSETG D-PRINTER-OFF -2>
|
|
<MSETG D-TABLE-ON 3>
|
|
<MSETG D-TABLE-OFF -3>
|
|
<MSETG D-RECORD-ON 4>
|
|
<MSETG D-RECORD-OFF -4>
|
|
|
|
<SETG WIDTH 0> ; "Width of screen."
|
|
<SETG HEIGHT 0> ; "Height of screen."
|
|
|
|
<SETG CURRENT-MESSAGE <>>
|
|
|
|
<DEFINE DO-MAIN-LOOP ("AUX" X)
|
|
<REPEAT ()
|
|
<SETG CURRENT-MESSAGE <>>
|
|
<SET X <MAIN-LOOP>>>>
|
|
|
|
<SETG P-MULT? <>>
|
|
|
|
<DEFINE DO-PRINT-WORD (WRD "AUX" (FOO ,LONG-WORD-TABLE))
|
|
<COND (<SET FOO <INTBL? .WRD <ZREST .FOO 2> <ZGET .FOO 0>>>
|
|
<TELL <ZGET .FOO 1>>)
|
|
(T
|
|
<ZPRINTB .WRD>)>>
|
|
|
|
<SETG OBJECTS-GROUPED <>>
|
|
|
|
<DEFINE OBJECTS-GROUPED? OG? (TBL "AUX" (CNT:FIX <ZGET .TBL 0>))
|
|
<SET TBL <ZREST .TBL 2>>
|
|
<COND (<AND <==? .CNT 2>
|
|
<INTBL? ,BWIRE .TBL .CNT>
|
|
<INTBL? ,RWIRE .TBL .CNT>>
|
|
T)
|
|
(<G=? .CNT 2>
|
|
<REPEAT (O (X1 <>) (X2 <>))
|
|
<COND (<NOT <INTBL? <SET O <ZGET .TBL <SET CNT <- .CNT 1>>>>
|
|
,ALL-HANDLES ,HANDLE-COUNT>>
|
|
<RETURN <> .OG?>)>
|
|
<COND (<F? .X1> <SET X1 .O>)
|
|
(<F? .X2>
|
|
<COND (<N==? .O .X1> <SET X2 .O>)
|
|
(T
|
|
<RETURN <> .OG?>)>)
|
|
(<OR <==? .O .X1>
|
|
<==? .O .X2>>
|
|
<RETURN <> .OG?>)>
|
|
<COND (<==? .CNT 0>
|
|
<RETURN T .OG?>)>>)>>
|
|
|
|
<SETG QCONTEXT <>>
|
|
<SETG QCONTEXT-ROOM <>>
|
|
|
|
<DEFINE MAIN-LOOP ("OPT" (GROUP? <>) (FAKE? <>)
|
|
"AUX" ICNT:FIX OCNT:FIX NUM:FIX CNT:FIX OBJ TBL (V <>)
|
|
PTBL OBJ1 TMP X (OLD-THEM <>))
|
|
<SET CNT 0>
|
|
<SET OBJ <>>
|
|
<SET PTBL T>
|
|
<COND (<NOT <HERE? QCONTEXT-ROOM>>
|
|
<SETG QCONTEXT <>>)>
|
|
<COND (<AND <F? .GROUP?>
|
|
<F? .FAKE?>>
|
|
<SETG P-MULT? <>>
|
|
<SETG P-WON <PARSER>>)>
|
|
<COND (<T? ,P-WON>
|
|
<SET ICNT <ZGET ,P-PRSI ,P-MATCHLEN>>
|
|
<SET OCNT <ZGET ,P-PRSO ,P-MATCHLEN>>
|
|
<COND (<AND <T? ,P-IT-OBJECT>
|
|
<ACCESSIBLE? ,P-IT-OBJECT>>
|
|
<SET TMP <>>
|
|
<REPEAT ()
|
|
<COND (<G? <SET CNT <+ .CNT 1>> .ICNT>
|
|
<RETURN>)
|
|
(T
|
|
<COND (<EQUAL? <ZGET ,P-PRSI .CNT> ,IT>
|
|
<ZPUT ,P-PRSI .CNT ,P-IT-OBJECT>
|
|
<SET TMP T>
|
|
<RETURN>)>)>>
|
|
<COND (<ZERO? .TMP>
|
|
<SET CNT 0>
|
|
<REPEAT ()
|
|
<COND (<G? <SET CNT <+ .CNT 1>> .OCNT>
|
|
<RETURN>)
|
|
(T
|
|
<COND (<EQUAL? <ZGET ,P-PRSO .CNT> ,IT>
|
|
<ZPUT ,P-PRSO .CNT ,P-IT-OBJECT>
|
|
<RETURN>)>)>>)>
|
|
<SET CNT 0>)>
|
|
<SET NUM
|
|
<COND (<ZERO? .OCNT>
|
|
.OCNT)
|
|
(<G? .OCNT 1>
|
|
<SET TBL ,P-PRSO>
|
|
<COND (<ZERO? .ICNT>
|
|
<SET OBJ <>>)
|
|
(T
|
|
<SET OBJ <ZGET ,P-PRSI 1>>)>
|
|
.OCNT)
|
|
(<G? .ICNT 1>
|
|
<SET PTBL <>>
|
|
<SET TBL ,P-PRSI>
|
|
<SET OBJ <ZGET ,P-PRSO 1>>
|
|
.ICNT)
|
|
(T
|
|
1)>>
|
|
<COND (<AND <ZERO? .OBJ>
|
|
<EQUAL? .ICNT 1>>
|
|
<SET OBJ <ZGET ,P-PRSI 1>>)>
|
|
<COND (<AND <VERB? WALK>
|
|
<OR <T? ,P-WALK-DIR>
|
|
<T? ,PRSO>>>
|
|
<SET V <PERFORM ,PRSA ,PRSO>>)
|
|
(<ZERO? .NUM>
|
|
<COND (<ZERO? <BAND <GETB ,P-SYNTAX ,P-SBITS> ,P-SONUMS>>
|
|
<SET V <PERFORM ,PRSA>>
|
|
<SETG PRSO <>>)
|
|
;(<ZERO? ,LIT?>
|
|
<PCLEAR>
|
|
<TOO-DARK>)
|
|
(T
|
|
<PCLEAR>
|
|
<TELL "[There isn't anything to ">
|
|
<SET TMP <ZGET ,P-ITBL ,P-VERBN>>
|
|
<COND (<INTBL? ,PRSA ,TALKVERBS ,NTVERBS>
|
|
<TELL "talk to">)
|
|
(<OR <T? ,P-MERGED>
|
|
<T? ,P-OFLAG>>
|
|
<DO-PRINT-WORD <ZGET .TMP 0>>)
|
|
(T
|
|
<SET V <WORD-PRINT <GETB .TMP 2>
|
|
<GETB .TMP 3>>>)>
|
|
<TELL ".]" CR>
|
|
<SET V <>>)>)
|
|
; (<AND <T? .PTBL>
|
|
<G? .NUM 1>
|
|
<VERB? COMPARE>>
|
|
<SET V <PERFORM ,PRSA ,OBJECT-PAIR>>)
|
|
(T
|
|
<SET X 0>
|
|
<SETG P-MULT? <>>
|
|
<SETG OBJECTS-GROUPED <>>
|
|
<COND (<AND <G? .OCNT 1>
|
|
<F? .GROUP?>
|
|
<OBJECTS-GROUPED? ,P-PRSO>>
|
|
<SETG OBJECTS-GROUPED T>)
|
|
(<G? .NUM 1>
|
|
<SETG P-MULT? T>
|
|
<COND (<F? <SET OLD-THEM ,P-THEM-OBJECT>>
|
|
<SET OLD-THEM -2>)>)>
|
|
<SET TMP <>>
|
|
<REPEAT ()
|
|
<COND (<G? <SET CNT <+ .CNT 1>> .NUM>
|
|
<COND (<G? .X 0>
|
|
<TELL "[The ">
|
|
<COND (<NOT <EQUAL? .X .NUM>>
|
|
<TELL "other ">)>
|
|
<TELL "object">
|
|
<COND (<NOT <EQUAL? .X 1>>
|
|
<TELL "s">)>
|
|
<TELL " that you mentioned ">
|
|
<COND (<NOT <EQUAL? .X 1>>
|
|
<TELL "are">)
|
|
(T <TELL "is">)>
|
|
<TELL "n't here.]" CR>)
|
|
(<ZERO? .TMP>
|
|
<REFERRING>)>
|
|
<RETURN>)
|
|
(T
|
|
<COND (<T? .PTBL>
|
|
<SET OBJ1 <ZGET ,P-PRSO .CNT>>)
|
|
(T
|
|
<SET OBJ1 <ZGET ,P-PRSI .CNT>>)>
|
|
<COND (<OR <G? .NUM 1>
|
|
<EQUAL? <ZGET <ZGET ,P-ITBL ,P-NC1> 0> ,W?ALL ,W?EVERYTHING>>
|
|
<COND (<EQUAL? .OBJ1 ,NOT-HERE-OBJECT>
|
|
<SET X <+ .X 1>>
|
|
<AGAIN>)
|
|
(<AND <EQUAL? ,P-GETFLAGS ,P-ALL>
|
|
<DONT-ALL? .OBJ1 .OBJ>>
|
|
<AGAIN>)
|
|
(<NOT <ACCESSIBLE? .OBJ1>>
|
|
<AGAIN>)
|
|
(<EQUAL? .OBJ1 ,PLAYER>
|
|
<AGAIN>)
|
|
(T
|
|
<COND (<F? ,OBJECTS-GROUPED>
|
|
<COND (<EQUAL? .OBJ1 ,IT>
|
|
<TELL CTHE ,P-IT-OBJECT>)
|
|
(T
|
|
<COND
|
|
(<EQUAL? .OBJ1 ,THEM .OLD-THEM>
|
|
<SET OLD-THEM -1>)>
|
|
<TELL CTHE .OBJ1>)>
|
|
<TELL ": ">)>)>)>
|
|
<SET TMP T>
|
|
<SETG PRSO <COND (<T? .PTBL> .OBJ1)
|
|
(T .OBJ)>>
|
|
<SETG PRSI <COND (<T? .PTBL> .OBJ)
|
|
(T .OBJ1)>>
|
|
<SET V <PERFORM ,PRSA ,PRSO ,PRSI>>
|
|
<COND (<EQUAL? .V ,FATAL-VALUE>
|
|
<RETURN>)>)>
|
|
<COND (<AND <G? .NUM 1>
|
|
<F? ,P-MULT?>>
|
|
<RETURN>)>>
|
|
; "OLD-THEM 0 means no p-mult. -1 means THEM was
|
|
used here; -2 means no previous them object."
|
|
<COND (<EQUAL? .OLD-THEM 0 -1 -2> T)
|
|
(T <SETG P-THEM-OBJECT <>>)>)>
|
|
<COND (<EQUAL? .V ,FATAL-VALUE>
|
|
<SETG P-CONT <>>)>)
|
|
(T
|
|
<COND (<F? ,P-OFLAG>
|
|
<UPDATE-BP 2>)>
|
|
<SETG P-CONT <>>)>
|
|
<COND (.GROUP?
|
|
<SETG P-MULT? <>>)>
|
|
<COND (<AND <T? ,P-WON>
|
|
<F? .FAKE?>
|
|
<F? .GROUP?>
|
|
<NOT <EQUAL? .V ,FATAL-VALUE>>
|
|
<NOT <GAME-VERB?>>
|
|
<NOT <VERB? SAY>>>
|
|
<SET V <CLOCKER>>)>
|
|
<SETG PRSA <>>
|
|
<SETG PRSO <>>
|
|
<SETG PRSI <>>>
|
|
|
|
<CONSTANT GAME-VERBS
|
|
<PLTABLE
|
|
V?INVENTORY V?TELL V?TIME V?SCORE
|
|
V?SAVE V?RESTORE V?SCRIPT V?UNSCRIPT V?DIAGNOSE V?HELP
|
|
V?VERBOSE V?BRIEF V?SUPER-BRIEF V?VERSION V?QUIT V?$REFRESH
|
|
V?$VERIFY V?$ID V?NOTIFY V?$COMMAND
|
|
V?$UNRECORD V?$COMMAND V?$RANDOM ;V?$DEBUG ;V?$CHEAT>>
|
|
|
|
<DEFINE GAME-VERB? ("AUX" (GV ,GAME-VERBS))
|
|
<COND (<INTBL? ,PRSA <ZREST .GV 2>
|
|
<ZGET .GV 0>> T)
|
|
(T <>)>>
|
|
|
|
<DEFINE TOUCHING? ()
|
|
<INTBL? ,PRSA ,TOUCHVERBS ,NTOUCHES>>
|
|
|
|
<DEFINE PUTTING? ()
|
|
<INTBL? ,PRSA ,PUTVERBS ,NUMPUTS>>
|
|
|
|
<DEFINE MOVING? ()
|
|
<INTBL? ,PRSA ,MOVEVERBS ,NMVERBS>>
|
|
|
|
<DEFINE HURTING? ()
|
|
<INTBL? ,PRSA ,HURTVERBS ,NHVERBS>>
|
|
|
|
<DEFINE SEEING? ()
|
|
<INTBL? ,PRSA ,SEEVERBS ,NSVERBS>>
|
|
|
|
<DEFINE HAVING? ()
|
|
<INTBL? ,PRSA ,HAVEVERBS ,NHAVES>>
|
|
|
|
<DEFINE DONT-ALL? DA (O I "AUX" L)
|
|
<SET L <LOC .O>>
|
|
<COND (<OR <ZERO? .L>
|
|
<EQUAL? .O .I>>)
|
|
(<VERB? TAKE>
|
|
<COND (<EQUAL? .L ,WINNER>
|
|
T)
|
|
(<IS? .O ,NOALL>
|
|
T)
|
|
(<AND <NOT <IS? .O ,TAKEABLE>>
|
|
<NOT <IS? .O ,TRYTAKE>>>
|
|
T)
|
|
(<==? .L ,LLAMA-PEN> <>)
|
|
(<AND <IS? .L ,CONTAINER>
|
|
<NOT <IS? .L ,OPENED>>>
|
|
T)
|
|
(<AND <IS? .L ,CONTAINER>
|
|
<IS? .L ,TAKEABLE>
|
|
<N==? .L .I>>
|
|
T)
|
|
(<T? .I>
|
|
<COND (<NOT <EQUAL? .L .I>> T)
|
|
(<SEE-INSIDE? .I>
|
|
<RETURN <> .DA>)>)
|
|
(<OR <EQUAL? .L ,HERE>
|
|
<SEE-INSIDE? .L>>
|
|
<RETURN <> .DA>)>)
|
|
(<VERB? DROP PUT PUT-ON THROW THROW-OVER>
|
|
<COND (<EQUAL? .O ,POCKET> T)
|
|
(<EQUAL? .L ,POCKET> T)
|
|
(<IS? .O ,WORN> T)
|
|
(<EQUAL? .L ,WINNER>
|
|
<RETURN <> .DA>)>)
|
|
(T
|
|
<RETURN <> .DA>)>
|
|
T>
|
|
|
|
<DEFINE ACCESSIBLE? (OBJ)
|
|
<COND (<EQUAL? .OBJ <> ,NOT-HERE-OBJECT>
|
|
<>)
|
|
(<EQUAL? <META-LOC .OBJ> ,WINNER ,HERE ,GLOBAL-OBJECTS>
|
|
T)
|
|
(<==? .OBJ ,RANDOM-OBJECT> T)
|
|
(<AND <==? .OBJ ,AISLE>
|
|
<HERE? SEAT AISLE>> T)
|
|
(<AND <==? .OBJ ,SEAT>
|
|
<HERE? SEAT AISLE>> T)
|
|
(<AND <==? .OBJ ,UNDER-TRAP-DOOR>
|
|
<HERE? LANDING-STRIP>> T)
|
|
(<VISIBLE? .OBJ>
|
|
T)
|
|
(T
|
|
<>)>>
|
|
|
|
<DEFINE VISIBLE? VIS (OBJ "AUX" L)
|
|
<COND (<EQUAL? .OBJ <> ,NOT-HERE-OBJECT>
|
|
<RETURN <> .VIS>)>
|
|
<SET L <LOC .OBJ>>
|
|
<COND (<==? .OBJ ,RANDOM-PERSON> T)
|
|
(<EQUAL? .L <> ,GLOBAL-OBJECTS>
|
|
<>)
|
|
(<EQUAL? .L ,HERE ,PLAYER ,WINNER>
|
|
T)
|
|
(<AND <EQUAL? .L ,LOCAL-GLOBALS>
|
|
<GLOBAL-IN? .OBJ ,HERE>>
|
|
T)
|
|
(<AND <SEE-INSIDE? .L>
|
|
<VISIBLE? .L>>
|
|
T)
|
|
(T
|
|
<>)>>
|
|
|
|
<DEFINE META-IN? MI (OBJ LOC)
|
|
<REPEAT ()
|
|
<COND (<IN? .OBJ .LOC> <RETURN T .MI>)>
|
|
<COND (<F? <SET OBJ <LOC .OBJ>>> <RETURN <> .MI>)>>>
|
|
|
|
<DEFINE META-LOC ML (OBJ)
|
|
<REPEAT ()
|
|
<COND (<ZERO? .OBJ>
|
|
<RETURN <> .ML>)
|
|
(<IN? .OBJ ,GLOBAL-OBJECTS>
|
|
<RETURN ,GLOBAL-OBJECTS .ML>)
|
|
(<IN? .OBJ ,ROOMS>
|
|
<RETURN .OBJ .ML>)
|
|
(T
|
|
<SET OBJ <LOC .OBJ>>)>>>
|
|
|
|
<DEFINE DISPLAY-PLACE ("AUX" NL)
|
|
<COND (<NOT <HERE? OLD-HERE>>
|
|
<SETG OLD-HERE ,HERE>
|
|
<ZBUFOUT <>>
|
|
<SCREEN ,S-WINDOW>
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-INVERSE>
|
|
<SET NL <SAY-HERE 1>>
|
|
; "Doesn't do any screen output, returns len"
|
|
<CURSET 1 2> ; "Erase old desc."
|
|
<PRINT-SPACES ,OLD-LEN>
|
|
<SETG OLD-LEN .NL> ; "Print new HERE desc."
|
|
<CURSET 1 2>
|
|
<SAY-HERE 2>
|
|
<HLIGHT ,H-NORMAL>
|
|
<SCREEN ,S-TEXT>
|
|
<ZBUFOUT T> ; "Back to main screen.")>>
|
|
|
|
<DEFINE PRINT-SPACES (N)
|
|
<REPEAT ()
|
|
<COND (<L? <SET N <- .N 1>> 0>
|
|
<RETURN>)>
|
|
<PRINTC 32>>>
|
|
|
|
<DEFINE SAY-HERE ("OPT" (SL-MODE? <>))
|
|
<COND (<==? .SL-MODE? 1>
|
|
<DIROUT ,D-TABLE-ON ,SL-TABLE>
|
|
<TELL D ,HERE>
|
|
;<COND (<ZERO? ,LIT?>
|
|
<TELL "Darkness">)
|
|
(T
|
|
<TELL D ,HERE>)>
|
|
<DIROUT ,D-TABLE-OFF>
|
|
<ZGET ,SL-TABLE 0>)
|
|
;(<ZERO? ,LIT?>
|
|
<TELL "Darkness">)
|
|
(T
|
|
<START-CAPS>
|
|
<TELL D ,HERE>
|
|
; "Says to capitalise all words"
|
|
<END-CAPS T>
|
|
;<COND (<F? .SL-MODE?>
|
|
<ZBUFOUT <>>
|
|
<DIROUT ,D-SCREEN-OFF>
|
|
<TELL D ,HERE>
|
|
<DIROUT ,D-SCREEN-ON>
|
|
<ZBUFOUT T>)>)>>
|
|
|
|
<SETG BP <ORB <* 120 ,SYSTOLIC-SHIFT> 80>> ; "Blood pressure."
|
|
<SETG OLD-BP 0> ; "Previous blood pressure."
|
|
|
|
<DEFINE DISPLAY-BP ("AUX" S)
|
|
<COND (<NOT <EQUAL? ,OLD-BP ,BP>>
|
|
<SETG OLD-BP ,BP>
|
|
<ZBUFOUT <>>
|
|
<SCREEN ,S-WINDOW>
|
|
<HLIGHT ,H-NORMAL>
|
|
<HLIGHT ,H-INVERSE>
|
|
<SET S <- ,WIDTH 7>>
|
|
<CURSET 1 .S> ; "Erase old numbers."
|
|
<PRINT-SPACES 7>
|
|
<CURSET 1 .S>
|
|
<SAY-BP>
|
|
<HLIGHT ,H-NORMAL>
|
|
<SCREEN ,S-TEXT>
|
|
<ZBUFOUT T> ; "Back to main screen.")>>
|
|
|
|
<DEFINE SAY-BP ("AUX" (SYSTOLIC <GET-SYSTOLIC>)
|
|
(DIASTOLIC <ANDB ,BP *377*>))
|
|
<TELL N .SYSTOLIC "/" N .DIASTOLIC>>
|
|
|
|
<DEFINE PRINT-PICK-ONE (TBL)
|
|
<TELL <PICK-ONE .TBL>>>
|
|
|
|
<DEFINE PRINT-PICK-NEXT (TBL)
|
|
<TELL <PICK-NEXT .TBL>>>
|
|
|
|
<DEFINE CTHE-PRINT ("OPTIONAL" (O <>))
|
|
<COND (<ZERO? .O>
|
|
<SET O ,PRSO>)>
|
|
<COND (<NOT <IS? .O ,NOARTICLE>>
|
|
<TELL "The " D .O>)
|
|
(T
|
|
<START-CAPS>
|
|
<TELL D .O>
|
|
<END-CAPS>)>>
|
|
|
|
<DEFINE THE-PRINT ("OPTIONAL" (O <>))
|
|
<COND (<ZERO? .O>
|
|
<SET O ,PRSO>)>
|
|
<COND (<NOT <IS? .O ,NOARTICLE>>
|
|
<TELL "the ">)>
|
|
<TELL D .O>>
|
|
|
|
<DEFINE CTHEI-PRINT ()
|
|
<CTHE-PRINT ,PRSI>
|
|
T>
|
|
|
|
<DEFINE THEI-PRINT ()
|
|
<THE-PRINT ,PRSI>
|
|
T>
|
|
|
|
<DEFINE DPRINT (O "AUX" X)
|
|
<SET X <GETP .O ,P?SDESC>>
|
|
<COND (<T? .X>
|
|
<ZAPPLY .X>)
|
|
(T
|
|
<PRINTD .O>)>>
|
|
|
|
<DEFINE CPRINTA (O)
|
|
<START-CAPS>
|
|
<PRINTA .O>
|
|
<END-CAPS>>
|
|
|
|
<DEFINE PRINTA (O)
|
|
<COND (<NOT <IS? .O ,NOARTICLE>>
|
|
<COND (<IS? .O ,PLURAL>
|
|
<COND (<IS? .O ,PERSON>
|
|
<TELL "the ">)>)
|
|
(<IS? .O ,VOWEL>
|
|
<PRINTI "an ">)
|
|
(T
|
|
<PRINTI "a ">)>)>
|
|
<TELL D .O>>
|
|
|
|
<OBJECT GLOBAL-OBJECTS
|
|
(FLAGS LOCATION LIGHTED INDOORS PLACE FOODBIT
|
|
NODESC NOARTICLE VOWEL PLURAL NOALL SEEN
|
|
TOUCHED SURFACE CONTAINER OPENABLE DOORLIKE
|
|
OPENED TRANSPARENT LOCKED TAKEABLE TRYTAKE
|
|
CLOTHING WORN LIVING PERSON FEMALE IN-TERMINAL
|
|
IN-TOWN IN-AIRPLANE
|
|
TOOL VEHBIT READABLE MANUALLY CLERK-TOLD AGENT-TOLD
|
|
DMAN-TOLD SHITTY NO-NERD SPECIAL-DROP SHARPENED
|
|
SEARCH-ME MUSICAL INVISIBLE NEEDS-IDENTITY)>
|
|
|
|
<OBJECT LOCAL-GLOBALS
|
|
(LOC GLOBAL-OBJECTS)
|
|
(SYNONYM ZZZP)
|
|
(DESCFCN 0)
|
|
(GLOBAL GLOBAL-OBJECTS)
|
|
(FDESC "F")
|
|
(LDESC "L")
|
|
(CONTFCN 0)
|
|
(SIZE 0)
|
|
(CAPACITY 0)
|
|
; (VALUE 0)>
|
|
|
|
<OBJECT ROOMS
|
|
(FLAGS NODESC NOARTICLE LOCATION)
|
|
(DESC "that")
|
|
(IN TO ROOMS)>
|
|
|
|
<OBJECT INTNUM
|
|
(LOC GLOBAL-OBJECTS)
|
|
(DESC "number")
|
|
(SYNONYM INTNUM PAGE)
|
|
(ADJECTIVE PAGE OMNIA GALLIA FLIGHT INTNUM)
|
|
(ACTION INTNUM-F)>
|
|
|
|
<DEFINE INTNUM-F INTNUM ("AUX" X)
|
|
<COND (<AND <EQUAL? ,P-NUMBER 42>
|
|
<ADJ-USED? ,W?FLIGHT ,W?ZALAGASA ,W?AIR>>
|
|
<COND (<THIS-PRSI?>
|
|
<ZPUT ,P-NAMW 1 ,W?FLIGHT>
|
|
<ZPUT ,P-OFW 1 <>>
|
|
<SET X <PERFORM ,PRSA ,PRSO ,THE-FLIGHT>>
|
|
<RETURN T .INTNUM>)>
|
|
<ZPUT ,P-NAMW 0 ,W?FLIGHT>
|
|
<ZPUT ,P-OFW 0 <>>
|
|
<SET X <PERFORM ,PRSA ,THE-FLIGHT ,PRSI>>
|
|
T)
|
|
(<OR <ADJ-USED? ,W?PAGE>
|
|
<NOUN-USED? ,W?PAGE>>
|
|
<COND (<AND <VISIBLE? ,ABOOK>
|
|
<EQUAL? ,P-NUMBER 1 2 3>>
|
|
<COND (<NOT <IS? ,ABOOK ,OPENED>>
|
|
<MAKE ,ABOOK ,OPENED>
|
|
<TELL "[opening " THE ,ABOOK
|
|
" first" ,BRACKET>)>
|
|
<SET X ,PAGE-1>
|
|
<COND (<EQUAL? ,P-NUMBER 2>
|
|
<SET X ,PAGE-2>)
|
|
(<EQUAL? ,P-NUMBER 3>
|
|
<SET X ,PAGE-3>)>
|
|
<COND (<THIS-PRSI?>
|
|
<SET X <PERFORM ,PRSA ,PRSO .X>>)
|
|
(T
|
|
<SET X <PERFORM ,PRSA .X ,PRSI>>)>
|
|
T)
|
|
(T
|
|
<REFERRING>
|
|
,FATAL-VALUE)>)
|
|
(T
|
|
<>)>>
|
|
|
|
<OBJECT IT
|
|
(LOC GLOBAL-OBJECTS)
|
|
(DESC "it")
|
|
(FLAGS VOWEL NOARTICLE NODESC TOUCHED)
|
|
(SYNONYM IT THAT ITSELF THIS)>
|
|
|
|
<DEFINE BE-SPECIFIC ()
|
|
<TELL "[Be specific: what do you want to ">>
|
|
|
|
<DEFINE TO-DO-THING-USE (STR1 STR2)
|
|
<TELL "[To " .STR1 " something, use the command: "
|
|
.STR2 " THING.]" CR>>
|
|
|
|
<DEFINE CANT-USE (PTR "AUX" BUF)
|
|
<SETG QUOTE-FLAG <>>
|
|
<SETG P-OFLAG <>>
|
|
<TELL "[This story can't understand the word \"">
|
|
<WORD-PRINT <GETB <ZREST ,P-LEXV <SET BUF <* .PTR 2>>> 2>
|
|
<GETB <ZREST ,P-LEXV .BUF> 3>>
|
|
<TELL "\" when you use it that way.]" CR>>
|
|
|
|
<DEFINE DONT-UNDERSTAND ()
|
|
<TELL "[Please try to express that another way.]" CR>>
|
|
|
|
<DEFINE NOT-IN-SENTENCE (STR)
|
|
<TELL "[There aren't " .STR " in that sentence.]" CR>>
|
|
|
|
<OBJECT PLAYER
|
|
(SYNONYM PROTAGONIST)
|
|
(DESC "yourself")
|
|
(FLAGS NODESC NOARTICLE)
|
|
(ACTION PLAYER-F)
|
|
(SIZE 0)
|
|
(CAPACITY 1000)>
|
|
|
|
<SETG HUNGER 1>
|
|
|
|
<MSETG HUNGER-SLIGHT 40> ;"Slightly hunger"
|
|
<MSETG HUNGER-MORE 80> ;"Hungry"
|
|
<MSETG MUNGER-VERY 120> ;"Very hungry"
|
|
<MSETG HUNGER-FAMISH 160> ;"Famished"
|
|
<MSETG HUNGER-DELERIOUS 200> ;"Delirious"
|
|
|
|
<MSETG H-ERRS 0> ;"Offset for error messages"
|
|
<MSETG H-EAT 1> ;"Offset for msgs during eating."
|
|
<MSETG H-HUNG 2> ;"Offset for msgs when hunger achieved."
|
|
;<MSETG H-PROB 3> ;"Offset for hunger probs."
|
|
;<MSETG H-LLAMA-EAT-MSGS 4>
|
|
<MSETG H-LLAMA-EAT-MSGS 3> ;"Offset for msgs if try eating LLAMA food."
|
|
|
|
<MSETG HUNGER-MAX 4>
|
|
|
|
<CONSTANT HUNGER-MSGS
|
|
<PTABLE
|
|
<PLTABLE "A fainting feeling prevents this simple action."
|
|
"Your compelling thoughts of a nice juicy steak temporarily distract you."
|
|
"Daydreaming about your last meal causes you to forget what you were doing."
|
|
"You find yourself becoming completely engrossed in your lack of food."
|
|
"You are delirious with hunger and can't even do this.">
|
|
<PTABLE "You're not hungry but eat anyway."
|
|
"You're slightly hungry so you eat with little enjoyment."
|
|
"You're pretty hungry so you eat with satisfaction."
|
|
"You're very hungry and decide the burger hits the spot."
|
|
"You're famished so you stuff it into your mouth as fast as you can."
|
|
"You're delirious with hunger and are amazed you can even get it into your mouth.">
|
|
<PTABLE "You are starting to feel hungry."
|
|
"You are feeling hungry."
|
|
"You are feeling very hungry."
|
|
"You are famished."
|
|
"You are weak with hunger.">
|
|
;<PTABLE (BYTE) 0 1 5 10 20 60>
|
|
<PTABLE "You're not even hungry."
|
|
"There are obviously better things to eat."
|
|
"They don't really seem appetising."
|
|
"You taste one and think better of it."
|
|
"As hungry as you are, they taste too disgusting to eat."
|
|
"You try imagining they are nacho chips but just can't bring yourself to swallow them.">>>
|
|
|
|
<SETG MOVES 0>
|
|
|
|
<SETG NO-HUNGER-INT <>>
|
|
|
|
<DEFINE PLAYER-F ("OPTIONAL" (CONTEXT <>) "AUX" (H:FIX ,HUNGER) PR:FIX H1:FIX)
|
|
<COND (<==? .CONTEXT ,M-WINNER>
|
|
<SETG MOVES <+ ,MOVES:FIX 1>>)>
|
|
<COND (<AND <THIS-PRSO?>
|
|
<VERB? UNPLUG>
|
|
<IN? ,CHUTE ,PLAYER>>
|
|
<PERFORM ,V?TAKE-OFF ,CHUTE>)
|
|
(<AND <N==? .H 0> <==? .CONTEXT ,M-WINNER>>
|
|
;<SET H1 </ .H 40>>
|
|
;<SET PR <GETB <ZGET ,HUNGER-MSGS ,H-PROB> .H1>>
|
|
<SET PR 60>
|
|
<COND (<AND <G=? .H ,HUNGER-DELERIOUS>
|
|
;<N==? .PR 0>
|
|
<PROB .PR>
|
|
<NOT <GAME-VERB?>>
|
|
<N==? ,PRSA ,V?WAIT>>
|
|
<TELL PONE <ZGET ,HUNGER-MSGS ,H-ERRS> CR>
|
|
<SETG NO-HUNGER-INT T>
|
|
,FATAL-VALUE)
|
|
(ELSE <>)>)>>
|
|
|
|
<DEFINE I-HUNGER ("OPT" (CR? T) "AUX" H1:FIX)
|
|
<COND (<L? ,HUNGER:FIX ,HUNGER-DELERIOUS>
|
|
<SETG HUNGER <+ ,HUNGER:FIX 1>>)>
|
|
<COND (<AND <F? ,NO-HUNGER-INT>
|
|
<==? <* <SET H1 </ ,HUNGER:FIX 40>> 40> ,HUNGER:FIX>>
|
|
<COND (<G? .H1 ,HUNGER-MAX>
|
|
<SET H1 ,HUNGER-MAX>)>
|
|
<COND (.CR? <ZCRLF>)>
|
|
<TELL <ZGET <ZGET ,HUNGER-MSGS ,H-HUNG> .H1> CR>
|
|
T)
|
|
(T
|
|
<SETG NO-HUNGER-INT <>>
|
|
<>)>>
|
|
|
|
<DEFINE EAT-LLAMA-TREATS ()
|
|
<TELL <ZGET <ZGET ,HUNGER-MSGS ,H-LLAMA-EAT-MSGS>
|
|
</ ,HUNGER 40>> CR>>
|
|
|
|
<DEFINE INAPPROPRIATE ()
|
|
<TELL "That would hardly be an appropriate thing to do." CR>>
|
|
|
|
<DEFINE WONT-HELP ()
|
|
<TELL " isn't likely to help matters." CR>>
|
|
|
|
<OBJECT GLOBAL-ROOM
|
|
(LOC GLOBAL-OBJECTS)
|
|
(DESC "room")
|
|
(SYNONYM ROOM AREA PLACE)
|
|
(ADJECTIVE OPENED THIS)
|
|
(ACTION GLOBAL-ROOM-F)>
|
|
|
|
<DEFINE GLOBAL-ROOM-F ()
|
|
<COND (<VERB? EXAMINE LOOK-ON LOOK-INSIDE>
|
|
<V-LOOK>
|
|
T)
|
|
(<OR <ENTERING?>
|
|
<VERB? DROP EXIT>>
|
|
<V-WALK-AROUND>
|
|
,FATAL-VALUE)
|
|
(<VERB? WALK-AROUND>
|
|
<TELL
|
|
"Walking around the area reveals nothing new" ,PCR
|
|
"[If you want to go somewhere, simply indicate a " D ,INTDIR ".]" CR>
|
|
T)
|
|
(T
|
|
<>)>>
|
|
|
|
<DEFINE CANT-SEE-ANY-STR (STR)
|
|
<CANT-SEE-ANY <> .STR>>
|
|
|
|
<DEFINE CANT-SEE-ANY ("OPTIONAL" (THING <>) (STRING? <>))
|
|
<SETG CLOCK-WAIT? T>
|
|
<PCLEAR>
|
|
<SETG P-IT-OBJECT ,NOT-HERE-OBJECT>
|
|
<TELL ,CANT>
|
|
<COND (<VERB? LISTEN>
|
|
<TELL "hear ">)
|
|
(<VERB? SMELL>
|
|
<TELL "smell ">)
|
|
(T
|
|
<TELL "see ">)>
|
|
<COND (<T? .STRING?>
|
|
<TELL .STRING?>)
|
|
(<T? .THING>
|
|
<COND (<NOT <IS? .THING ,NOARTICLE>>
|
|
<TELL "any ">)>
|
|
<TELL D .THING>)
|
|
(T
|
|
<TELL D ,NOT-HERE-OBJECT>)>
|
|
<TELL " here." CR>>
|
|
|
|
<DEFINE HOW? ()
|
|
<TELL "How do you ">
|
|
<COND (<PROB 50>
|
|
<TELL "expect ">)
|
|
(T
|
|
<TELL "intend ">)>
|
|
<TELL "to do that?" CR>>
|
|
|
|
<DEFINE NOT-LIKELY (THING STR)
|
|
<TELL "It" PNEXT ,LIKELIES " that " THE .THING>
|
|
<SPACE>
|
|
<TELL .STR ,PERIOD>>
|
|
|
|
<CONSTANT LIKELIES
|
|
<TABLE (LENGTH PATTERN (BYTE [REST WORD]))
|
|
#BYTE 0
|
|
" isn't likely"
|
|
" seems doubtful"
|
|
" seems unlikely"
|
|
"'s unlikely"
|
|
"'s not likely"
|
|
"'s doubtful">>
|
|
|
|
<DEFINE YOUD-HAVE-TO (STR THING)
|
|
<THIS-IS-IT .THING>
|
|
<TELL "You'd have to " .STR>
|
|
<SPACE>
|
|
<TELL THE .THING " to do that." CR>>
|
|
|
|
<OBJECT HER
|
|
(LOC GLOBAL-OBJECTS)
|
|
(SYNONYM SHE HER HERSELF)
|
|
(DESC "her")
|
|
(FLAGS NOARTICLE PERSON LIVING FEMALE)>
|
|
|
|
<OBJECT HIM
|
|
(LOC GLOBAL-OBJECTS)
|
|
(SYNONYM HE HIM HIMSELF)
|
|
(DESC "him")
|
|
(FLAGS NOARTICLE PERSON LIVING)>
|
|
|
|
<DEFINE NO-NEED ()
|
|
<TELL ,DONT "need to do that." CR>>
|
|
|
|
<DEFINE ITALICIZE (STR "AUX" (PTR 2) (ST 0) LEN CHAR)
|
|
<COND (<EQUAL? <LOWCORE INTID> 5> ; "Atari ST?"
|
|
<SET ST <+ .ST 1>>)>
|
|
<DIROUT ,D-SCREEN-OFF>
|
|
<DIROUT ,D-TABLE-ON ,SL-TABLE>
|
|
<TELL .STR>
|
|
<DIROUT ,D-TABLE-OFF>
|
|
<DIROUT ,D-SCREEN-ON>
|
|
<SET LEN <ZGET ,SL-TABLE 0>>
|
|
<SET LEN <+ .LEN 1>>
|
|
<COND (<L? .LEN 2>)
|
|
(; <BAND <GETB 0 1> 8>
|
|
<OR <ZIL?>
|
|
<BAND <LOWCORE (ZVERSION 1)>
|
|
;<GETB 0 1> 8>> ; "ITALICS BIT SET?"
|
|
<HLIGHT ,H-ITALIC>
|
|
<REPEAT ()
|
|
<SET CHAR <GETB ,SL-TABLE .PTR>>
|
|
<COND (<AND <ZERO? .ST>
|
|
<OR <EQUAL? .CHAR 32 46 44>
|
|
<EQUAL? .CHAR 33 63 59>
|
|
<EQUAL? .CHAR 58>>>
|
|
<HLIGHT ,H-NORMAL>
|
|
<PRINTC .CHAR>
|
|
<HLIGHT ,H-ITALIC>)
|
|
(T
|
|
<PRINTC .CHAR>)>
|
|
<COND (<EQUAL? .PTR .LEN>
|
|
<RETURN>)>
|
|
<SET PTR <+ .PTR 1>>>
|
|
<HLIGHT ,H-NORMAL>)
|
|
(T
|
|
<REPEAT () ; "Caps if no italics."
|
|
<SET CHAR <GETB ,SL-TABLE .PTR>>
|
|
<COND (<AND <G? .CHAR 96>
|
|
<L? .CHAR 123>>
|
|
<SET CHAR <- .CHAR 32>>)>
|
|
<PRINTC .CHAR>
|
|
<COND (<EQUAL? .PTR .LEN>
|
|
<RETURN>)>
|
|
<SET PTR <+ .PTR 1>>>)>
|
|
;<ZBUFOUT <>>
|
|
;<DIROUT ,D-SCREEN-OFF>
|
|
;<TELL .STR>
|
|
;<DIROUT ,D-SCREEN-ON>
|
|
;<ZBUFOUT T>
|
|
T>
|
|
|
|
<DEFINE WRONG-WINNER? ()
|
|
<COND (<EQUAL? ,WINNER ,PLAYER>
|
|
<>)
|
|
(T
|
|
<TELL "[" ,CANT "tell characters to do that.]" CR>
|
|
T)>>
|
|
|
|
<DEFINE NOT-IN ("OPTIONAL" (THING <>))
|
|
<COND (<ZERO? .THING>
|
|
<SET THING ,PRSO>)>
|
|
<THIS-IS-IT .THING>
|
|
<TELL "You're not in " THE .THING ,PERIOD>>
|
|
|
|
<DEFINE NOT-ON ("OPTIONAL" (THING <>))
|
|
<COND (<ZERO? .THING>
|
|
<SET THING ,PRSO>)>
|
|
<THIS-IS-IT .THING>
|
|
<TELL "You're not on " THE .THING ,PERIOD>>
|
|
|
|
<DEFINE ALREADY-IN ("OPTIONAL" (THING <>))
|
|
<COND (<ZERO? .THING>
|
|
<SET THING ,PRSO>)>
|
|
<THIS-IS-IT .THING>
|
|
<YOURE-ALREADY "in " <>>
|
|
<TELL THE .THING ,PERIOD>>
|
|
|
|
<DEFINE ALREADY-ON ("OPTIONAL" (THING <>))
|
|
<COND (<ZERO? .THING>
|
|
<SET THING ,PRSO>)>
|
|
<THIS-IS-IT .THING>
|
|
<YOURE-ALREADY "on " <>>
|
|
<TELL THE .THING ,PERIOD>>
|
|
|
|
<DEFINE ALREADY-AT-TOP ("OPTIONAL" (OBJ <>))
|
|
<ALREADY-AT "top" .OBJ>>
|
|
|
|
<DEFINE ALREADY-AT-BOTTOM ("OPTIONAL" (OBJ <>))
|
|
<ALREADY-AT "bottom" .OBJ>>
|
|
|
|
<DEFINE ALREADY-AT (STR OBJ)
|
|
<COND (<ZERO? .OBJ>
|
|
<SET OBJ ,PRSO>)>
|
|
<THIS-IS-IT .OBJ>
|
|
<YOURE-ALREADY "at the " <>>
|
|
<TELL .STR " of " THE .OBJ ,PERIOD>>
|
|
|
|
<DEFINE CANT-SEE-MUCH ()
|
|
<TELL "Little can be seen from where you are." CR>>
|
|
|
|
;<DEFINE CANT-SEE-FROM-HERE ("OPTIONAL" (THING <>))
|
|
<COND (<ZERO? .THING>
|
|
<SET THING ,PRSO>)>
|
|
<TELL ,CANT "see " THE .THING " from here." CR>>
|
|
|
|
<DEFINE NOT-A (FRM STR)
|
|
<TELL "In order to become a "
|
|
.STR ", you must submit a form " .FRM
|
|
". To obtain one, apply in person at the Office of Forms in Point Barrow."
|
|
CR>>
|
|
|
|
<DEFINE OPEN-CLOSED ("OPTIONAL" (THING <>) (VOWEL T))
|
|
<COND (<ZERO? .THING>
|
|
<SET THING ,PRSO>)>
|
|
<COND (<IS? .THING ,OPENED>
|
|
<COND (<T? .VOWEL>
|
|
<TELL "n">)>
|
|
<TELL " open ">)
|
|
(T
|
|
<TELL " closed ">)>
|
|
<TELL D .THING>>
|
|
|
|
<DEFINE CANT-FROM-HERE ()
|
|
<TELL "You couldn't do that from " PNEXT ,COULDNTS ,PERIOD>>
|
|
|
|
<CONSTANT COULDNTS
|
|
<TABLE (LENGTH PATTERN (BYTE [REST WORD]))
|
|
#BYTE 0 "here" "where you are" "here">>
|
|
|
|
<DEFINE IS-ARE ("OPTIONAL" (THING <>))
|
|
<COND (<ZERO? .THING>
|
|
<SET THING ,PRSO>)>
|
|
<COND (<IS? .THING ,PLURAL>
|
|
<TELL " are ">)
|
|
(T
|
|
<TELL " is ">)>>
|
|
|
|
<DEFINE ISNT-ARENT ("OPTIONAL" (THING <>))
|
|
<COND (<ZERO? .THING>
|
|
<SET THING ,PRSO>)>
|
|
<COND (<IS? .THING ,PLURAL>
|
|
<TELL " aren't ">)
|
|
(T
|
|
<TELL " isn't ">)>>
|
|
|
|
<DEFINE CARRIAGE-RETURNS ("OPTIONAL" (CNT 23))
|
|
<COND (<G? .CNT 0>
|
|
<REPEAT ()
|
|
<ZCRLF>
|
|
<COND (<L=? <SET CNT <- .CNT 1>> 0>
|
|
<RETURN>)>>)>
|
|
T>
|
|
|
|
<DEFINE WHICH-WAY-IN ()
|
|
<WHICH-WAY "in">
|
|
<>>
|
|
|
|
<DEFINE WHICH-WAY-OUT ()
|
|
<WHICH-WAY "out">
|
|
<>>
|
|
|
|
<DEFINE WHICH-WAY (STR)
|
|
<TELL "[Which way do you want to go " .STR "?]" CR>>
|
|
|
|
<DEFINE FIRMLY-ATTACHED (THING TO "OPT" (OTHER <>))
|
|
<THIS-IS-IT .THING>
|
|
<TELL CTHE .THING>
|
|
<IS-ARE .THING>
|
|
<TELL PNEXT <ZGET ,FIXTURES 0> "ly "
|
|
PNEXT <ZGET ,FIXTURES 1> " to ">
|
|
<COND (<F? .TO>
|
|
<TELL .OTHER>)
|
|
(T
|
|
<TELL THE .TO>)>
|
|
<TELL ,PERIOD>>
|
|
|
|
<CONSTANT FIXTURES
|
|
<PTABLE
|
|
<TABLE (LENGTH PATTERN (BYTE [REST WORD]))
|
|
#BYTE 0 "firm" "permanent" "immovab" "secure">
|
|
<TABLE (LENGTH PATTERN (BYTE [REST WORD]))
|
|
#BYTE 0 "attached" "affixed">>>
|
|
|
|
<DEFINE PRSO-NOUN-USED? (WORD1 "OPT" (WORD2 <>) (WORD3 <>) "AUX" WD OFWD)
|
|
<COND (<OR <T? ,PRSO>
|
|
<G? <ZGET ,P-PRSO 0> 0>>
|
|
<SET WD <ZGET ,P-NAMW 0>>
|
|
<SET OFWD <ZGET ,P-OFW 0>>
|
|
<COND (<OR <AND .WD <EQUAL? .WD .WORD1 .WORD2 .WORD3>>
|
|
<AND .OFWD <EQUAL? .OFWD .WORD1 .WORD2 .WORD3>>>
|
|
T)
|
|
(T <>)>)
|
|
(T <>)>>
|
|
|
|
<DEFINE PRSI-NOUN-USED? (WORD1 "OPT" (WORD2 <>) (WORD3 <>) "AUX" WD OFWD)
|
|
<COND (<OR <T? ,PRSI>
|
|
<G? <ZGET ,P-PRSI 0> 0>>
|
|
<SET WD <ZGET ,P-NAMW 1>>
|
|
<SET OFWD <ZGET ,P-OFW 1>>
|
|
<COND (<OR <AND .WD <EQUAL? .WD .WORD1 .WORD2 .WORD3>>
|
|
<AND .OFWD <EQUAL? .OFWD .WORD1 .WORD2 .WORD3>>>
|
|
T)
|
|
(T <>)>)
|
|
(T <>)>>
|
|
|
|
<DEFINE NOUN-USED? (WORD1 "OPTIONAL" (WORD2 <>) (WORD3 <>)
|
|
"AUX" O I OOF IOF)
|
|
<COND (<THIS-PRSI?>
|
|
<PRSI-NOUN-USED? .WORD1 .WORD2 .WORD3>)
|
|
(T
|
|
<PRSO-NOUN-USED? .WORD1 .WORD2 .WORD3>)>>
|
|
|
|
<DEFINE PRSO-ADJ-USED? (WORD1 "OPT" (WORD2 <>) (WORD3 <>) "AUX" ADJ)
|
|
<COND (<T? ,PRSO>
|
|
<COND (<AND <SET ADJ <ZGET ,P-ADJW 0>>
|
|
<EQUAL? .ADJ .WORD1 .WORD2 .WORD3>>
|
|
T)
|
|
(T <>)>)
|
|
(T <>)>>
|
|
|
|
<DEFINE PRSI-ADJ-USED? (WORD1 "OPT" (WORD2 <>) (WORD3 <>) "AUX" ADJ)
|
|
<COND (<T? ,PRSI>
|
|
<COND (<AND <SET ADJ <ZGET ,P-ADJW 1>>
|
|
<EQUAL? .ADJ .WORD1 .WORD2 .WORD3>>
|
|
T)
|
|
(T <>)>)
|
|
(T <>)>>
|
|
|
|
<DEFINE ADJ-USED? (WORD1 "OPTIONAL" (WORD2 <>) (WORD3 <>))
|
|
<COND (<THIS-PRSI?>
|
|
<PRSI-ADJ-USED? .WORD1 .WORD2 .WORD3>)
|
|
(T
|
|
<PRSO-ADJ-USED? .WORD1 .WORD2 .WORD3>)>>
|
|
|
|
<DEFINE HERE-F ()
|
|
<COND (<THIS-PRSI?>
|
|
<COND (<VERB? PUT EMPTY-INTO>
|
|
<PERFORM ,V?DROP ,PRSO>
|
|
T)
|
|
(T
|
|
<>)>)
|
|
(<VERB? EXAMINE LOOK-ON LOOK-INSIDE SEARCH WATCH>
|
|
<V-LOOK>
|
|
T)
|
|
(<VERB? LOOK-BEHIND LOOK-OUTSIDE>
|
|
<CANT-SEE-MUCH>
|
|
T)
|
|
(<VERB? ENTER WALK-TO FIND>
|
|
<ALREADY-IN>
|
|
T)
|
|
(<OR <EXITING?>
|
|
<VERB? FOLLOW THROUGH CROSS CLIMB-OVER CLIMB-UP
|
|
CLIMB-DOWN CLIMB-ON>>
|
|
<V-WALK-AROUND>
|
|
T)
|
|
(T
|
|
<>)>>
|
|
|
|
<DEFINE PCLEAR ()
|
|
<SETG P-CONT <>>
|
|
<SETG QUOTE-FLAG <>>
|
|
T>
|
|
|
|
<DEFINE YOU-DONT-NEED (THING "OPTIONAL" (STRING? <>))
|
|
<TELL "[" ,DONT "need to refer to ">
|
|
<COND (<T? .STRING?>
|
|
<TELL "the " .THING>)
|
|
(T
|
|
<TELL THE .THING>)>
|
|
<TO-COMPLETE>
|
|
T>
|
|
|
|
<DEFINE TO-COMPLETE ()
|
|
<TELL " to complete this story.]" CR>>
|
|
|
|
;<DEFINE PLACEHOLDER (STR)
|
|
<TELL "[TESTER: " .STR ". Film at eleven.]" CR>
|
|
T>
|
|
|
|
<DEFINE GENDER-PRINT (MALE FEMALE)
|
|
<COND (<T? ,SEX> <TELL .FEMALE>)
|
|
(<T? .MALE> <TELL .MALE>)>
|
|
T>
|
|
|
|
<CONSTANT PHONE-NUMBERS <ITABLE 14 0>>
|