Revision 203 (Original Source)
This commit is contained in:
commit
7edaa11951
|
@ -0,0 +1,35 @@
|
|||
"DEBUG for
|
||||
The Lurking Horror
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
%<DEBUG-CODE <GLOBAL ZDEBUG <>>>
|
||||
|
||||
%<DEBUG-CODE <SYNTAX $DEBUG = V-$DEBUG>>
|
||||
|
||||
%<DEBUG-CODE
|
||||
<ROUTINE V-$DEBUG ()
|
||||
<COND (<SETG ZDEBUG <NOT ,ZDEBUG>>
|
||||
<TELL-ON>)
|
||||
(T <TELL-OFF>)>>>
|
||||
|
||||
%<DEBUG-CODE <ROUTINE TELL-ON () <TELL "On." CR>>>
|
||||
%<DEBUG-CODE <ROUTINE TELL-OFF () <TELL "Off." CR>>>
|
||||
|
||||
%<DEBUG-CODE <SYNTAX $BLORPLE OBJECT = V-$BLORPLE>>
|
||||
|
||||
%<DEBUG-CODE <SYNTAX $CHEAT = V-$CHEAT>>
|
||||
|
||||
%<DEBUG-CODE
|
||||
<SYNTAX $TAKE OBJECT = V-$TAKE>>
|
||||
|
||||
%<DEBUG-CODE
|
||||
<ROUTINE V-$TAKE ("AUX" CUBE)
|
||||
<MOVE ,PRSO ,WINNER>
|
||||
<FCLEAR ,PRSO ,NDESCBIT>
|
||||
<FCLEAR ,PRSO ,INVISIBLE>
|
||||
<TELL ,TAKEN>>>
|
||||
|
||||
%<DEBUG-CODE
|
||||
<ROUTINE TELL-C-INTS ()
|
||||
<TELL "[MaxInts: " N </ <- ,C-TABLELEN ,C-MAXINTS> ,C-INTLEN>
|
||||
"]" CR>>>
|
|
@ -0,0 +1,295 @@
|
|||
"DESC for
|
||||
Your Game
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
"The fabled new describers, as updated and modified to conform to the
|
||||
latest bug fixes. See ZD:DESC.DOC for details. See Z:DESC.ZIL for
|
||||
the source."
|
||||
|
||||
<CONSTANT M-OBJDESC? 9> ;"modify if necessary for games with other M-..."
|
||||
|
||||
<GLOBAL DESCRIBED-ROOM? <>>
|
||||
|
||||
<ROUTINE DESCRIBE-ROOM ("OPTIONAL" (LOOK? <>) "AUX" V? STR AV)
|
||||
<COND (<NOT ,LIT>
|
||||
<TELL "It is pitch black." CR>
|
||||
<RFALSE>)>
|
||||
<COND (<IN? ,HERE ,ROOMS> <TELL 'HERE>)>
|
||||
<SET AV <LOC ,WINNER>>
|
||||
<COND (<FSET? .AV ,VEHBIT>
|
||||
<COND (<FSET? .AV ,SURFACEBIT>
|
||||
<TELL ", on ">)
|
||||
(ELSE
|
||||
<TELL ", in ">)>
|
||||
<TELL THE .AV>)>
|
||||
<CRLF>
|
||||
<SET V? <OR .LOOK? <EQUAL? ,VERBOSITY 2>>>
|
||||
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
|
||||
<FSET ,HERE ,TOUCHBIT>
|
||||
<COND (,VERBOSITY <SET V? T>)>)>
|
||||
<SETG DESCRIBED-ROOM? .V?>
|
||||
<COND (.V?
|
||||
<COND (<AND <NOT <EQUAL? ,HERE .AV>>
|
||||
<FSET? .AV ,VEHBIT>
|
||||
<APPLY <GETP .AV ,P?ACTION> ,M-LOOK>>
|
||||
<RTRUE>)
|
||||
(<APPLY <GETP ,HERE ,P?ACTION> ,M-LOOK>
|
||||
<RTRUE>)
|
||||
(<SET STR <GETP ,HERE ,P?LDESC>>
|
||||
<TELL .STR CR>)>)>
|
||||
T>
|
||||
|
||||
<ROUTINE DESCRIBE-OBJECTS ("AUX" O STR (AV <LOC ,WINNER>) TMP)
|
||||
<SET O <FIRST? ,HERE>>
|
||||
<COND (<NOT .O> <RFALSE>)>
|
||||
<REPEAT () ;"FDESCS and MISC."
|
||||
<COND (<NOT .O> <RETURN>)
|
||||
(<AND <DESCRIBABLE? .O>
|
||||
<NOT <FSET? .O ,TOUCHBIT>>
|
||||
<SET STR <GETP .O ,P?FDESC>>>
|
||||
<THIS-IS-IT .O>
|
||||
<CRLF>
|
||||
<TELL .STR>
|
||||
<COND (<FSET? .O ,CONTBIT>
|
||||
<DESCRIBE-CONTENTS .O
|
||||
T
|
||||
<+ ,D-ALL?
|
||||
,D-PARA?>>)>
|
||||
<CRLF>)>
|
||||
<SET O <NEXT? .O>>>
|
||||
<SET O <FIRST? ,HERE>>
|
||||
<REPEAT () ;"DESCFCNS and LDESCS"
|
||||
<COND (<NOT .O> <RETURN>)
|
||||
(<OR <NOT <DESCRIBABLE? .O>>
|
||||
<AND <GETP .O ,P?FDESC>
|
||||
<NOT <FSET? .O ,TOUCHBIT>>>>
|
||||
T)
|
||||
(<AND <SET STR <GETP .O ,P?DESCFCN>>
|
||||
<SET TMP <APPLY .STR ,M-OBJDESC? .O>>>
|
||||
<COND (<NOT <EQUAL? .TMP ,M-FATAL>>
|
||||
<THIS-IS-IT .O>
|
||||
<CRLF>
|
||||
<COND (<SET STR <APPLY .STR ,M-OBJDESC .O>>
|
||||
<COND (<AND <FSET? .O ,CONTBIT>
|
||||
<N==? .STR ,M-FATAL>>
|
||||
<DESCRIBE-CONTENTS
|
||||
.O
|
||||
T
|
||||
<+ ,D-ALL?
|
||||
,D-PARA?>>)>)>
|
||||
<CRLF>)>)
|
||||
(<SET STR <GETP .O ,P?LDESC>>
|
||||
<THIS-IS-IT .O>
|
||||
<CRLF>
|
||||
<TELL .STR>
|
||||
<COND (<FSET? .O ,CONTBIT>
|
||||
<DESCRIBE-CONTENTS .O
|
||||
T
|
||||
<+ ,D-ALL?
|
||||
,D-PARA?>>)>
|
||||
<CRLF>)>
|
||||
<SET O <NEXT? .O>>>
|
||||
<DESCRIBE-CONTENTS ,HERE <> <>>
|
||||
<COND (<AND .AV <NOT <EQUAL? ,HERE .AV>>>
|
||||
<DESCRIBE-CONTENTS .AV <> <>>)>>
|
||||
|
||||
<CONSTANT D-ALL? 1> ;"print everything?"
|
||||
<CONSTANT D-PARA? 2> ;"started paragraph yet?"
|
||||
|
||||
"<DESCRIBE-CONTENTS object-whose-contents-to-describe
|
||||
level: -1 means only top level (default)
|
||||
<> means top-level (include crlf)
|
||||
T for all other levels
|
||||
or string to print
|
||||
all?: t if not being called from room-desc >
|
||||
|
||||
Prints nothing and rfalses if there was nothing to list.
|
||||
|
||||
'The wall crumbles to dust, revealing ' <DESCRIBE-CONTENTS .OBJ> "
|
||||
|
||||
<ROUTINE DESCRIBE-CONTENTS (OBJ "OPTIONAL" (LEVEL -1) (ALL? ,D-ALL?)
|
||||
"AUX" (F <>) N (1ST? T) (IT? <>) (TWO? <>)
|
||||
(START? <>) (PARA? <>) DB)
|
||||
<COND (<EQUAL? .LEVEL 2>
|
||||
<SET LEVEL T>
|
||||
<SET PARA? T>
|
||||
<SET START? T>)
|
||||
(<BTST .ALL? ,D-PARA?>
|
||||
<SET PARA? T>)>
|
||||
<SET N <FIRST? .OBJ>>
|
||||
<COND (<OR .START?
|
||||
<IN? .OBJ ,ROOMS>
|
||||
<FSET? .OBJ ,PERSON>
|
||||
<AND .N
|
||||
<FSET? .OBJ ,CONTBIT>
|
||||
<OR <FSET? .OBJ ,OPENBIT>
|
||||
<FSET? .OBJ ,TRANSBIT>>
|
||||
<OR <EQUAL? .LEVEL -1>
|
||||
<FSET? .OBJ ,SEARCHBIT>>>>
|
||||
<REPEAT ()
|
||||
<COND (<OR <NOT .N>
|
||||
<AND <DESCRIBABLE? .N>
|
||||
<OR <BTST .ALL? ,D-ALL?>
|
||||
<SIMPLE-DESC? .N>>>>
|
||||
<COND (.F
|
||||
<COND (.1ST?
|
||||
<SET 1ST? <>>
|
||||
<COND (<EQUAL? .LEVEL <> T>
|
||||
<COND (<NOT .START?>
|
||||
<COND (<NOT .PARA?>
|
||||
<SET PARA? T>
|
||||
<CRLF>)
|
||||
(<EQUAL? .LEVEL T>
|
||||
<TELL " ">)>
|
||||
<DESCRIBE-START .OBJ .N>)>)
|
||||
(<NOT <EQUAL? .LEVEL -1>>
|
||||
<TELL .LEVEL>)>)
|
||||
(.N
|
||||
<TELL ", ">)
|
||||
(ELSE
|
||||
<TELL " and ">)>
|
||||
<TELL A .F>
|
||||
<DESCRIBE-SPECIAL .F>
|
||||
<COND (<AND <NOT .IT?> <NOT .TWO?>>
|
||||
<SET IT? .F>)
|
||||
(T
|
||||
<SET TWO? T>
|
||||
<SET IT? <>>)>)>
|
||||
<SET F .N>)>
|
||||
<COND (.N <SET N <NEXT? .N>>)>
|
||||
<COND (<AND <NOT .F> <NOT .N>>
|
||||
<COND (<AND .IT? <NOT .TWO?>>
|
||||
<THIS-IS-IT .IT?>)>
|
||||
<COND (<AND .1ST? .START?>
|
||||
<TELL " nothing">
|
||||
<RFALSE>)
|
||||
(<AND <NOT .1ST?>
|
||||
<EQUAL? .LEVEL <> T>>
|
||||
<COND (<EQUAL? .OBJ ,HERE>
|
||||
<TELL " here">)>
|
||||
<TELL ".">)>
|
||||
<RETURN>)>>
|
||||
<COND (<EQUAL? .LEVEL <> T>
|
||||
<SET F <FIRST? .OBJ>>
|
||||
<REPEAT ()
|
||||
<COND (<NOT .F> <RETURN>)
|
||||
(<AND <FSET? .F ,CONTBIT>
|
||||
<DESCRIBABLE? .F T>
|
||||
<OR <BTST .ALL? ,D-ALL?>
|
||||
<SIMPLE-DESC? .F>>>
|
||||
<SET DB ,D-BIT>
|
||||
<SETG D-BIT <>>
|
||||
<COND (<DESCRIBE-CONTENTS
|
||||
.F
|
||||
T
|
||||
<COND (.PARA?
|
||||
<+ ,D-ALL?
|
||||
,D-PARA?>)
|
||||
(ELSE ,D-ALL?)>>
|
||||
<SET 1ST? <>>
|
||||
<SET PARA? T>)>
|
||||
<SETG D-BIT .DB>)>
|
||||
<SET F <NEXT? .F>>>)>
|
||||
<COND (<AND <NOT .1ST?>
|
||||
<EQUAL? .LEVEL <> T>
|
||||
<EQUAL? .OBJ ,HERE <LOC ,WINNER>>>
|
||||
<CRLF>)>
|
||||
<NOT .1ST?>)>>
|
||||
|
||||
"DESCRIBE-START -- add starters for special classes of objects here"
|
||||
|
||||
<ROUTINE DESCRIBE-START (OBJ N)
|
||||
<COND (<EQUAL? .OBJ ,HERE>
|
||||
<TELL "There is ">)
|
||||
(<EQUAL? .OBJ ,PLAYER>
|
||||
<COND (<EQUAL? ,D-BIT ,WEARBIT>
|
||||
<TELL " You are wearing ">)
|
||||
(T
|
||||
<TELL "You are carrying ">)>)
|
||||
(<FSET? .OBJ ,PERSON>
|
||||
;<COND (<NOT <FSET? .OBJ ,NOTHEBIT>>
|
||||
<TELL "The ">)> ;"hand is only one this clause catches"
|
||||
<TELL CTHE .OBJ " wears ">)
|
||||
(<FSET? .OBJ ,SURFACEBIT>
|
||||
<TELL "Sitting on " THE .OBJ " is ">)
|
||||
(ELSE
|
||||
<TELL CTHE .OBJ " contains ">)>>
|
||||
|
||||
"DESCRIBE-SPECIAL -- add special trailers to object descriptions here"
|
||||
|
||||
<ROUTINE DESCRIBE-SPECIAL (OBJ)
|
||||
<COND (<FSET? .OBJ ,ONBIT>
|
||||
<TELL " (providing light)">)
|
||||
;(<EQUAL? .OBJ ,SLIME>
|
||||
<TELL " (crawling up your arm)">)
|
||||
(<FSET? .OBJ ,SLIMEBIT>
|
||||
<TELL " (slimed)">)
|
||||
(<AND <EQUAL? .OBJ ,HAND>
|
||||
<FSET? ,HAND ,PERSON>
|
||||
<IN? ,HAND ,PLAYER>>
|
||||
<TELL " (perched on your shoulder)">)
|
||||
;(<FSET? .OBJ ,WEARBIT>
|
||||
<TELL " (being worn)">)>>
|
||||
|
||||
"determines if an object is describable at all."
|
||||
|
||||
<GLOBAL D-BIT <>> ;"bit to screen objects"
|
||||
|
||||
<ROUTINE DESCRIBABLE? (OBJ "OPT" (CONT? <>))
|
||||
<COND (<FSET? .OBJ ,INVISIBLE> <RFALSE>)
|
||||
(<EQUAL? .OBJ ,WINNER> <RFALSE>)
|
||||
(<AND <EQUAL? .OBJ <LOC ,WINNER>>
|
||||
<NOT <EQUAL? ,HERE <LOC ,WINNER>>>>
|
||||
<RFALSE>)
|
||||
(<AND <NOT .CONT?> <FSET? .OBJ ,NDESCBIT>>
|
||||
<RFALSE>)
|
||||
(,D-BIT
|
||||
<COND (<G? ,D-BIT 0>
|
||||
<COND (<FSET? .OBJ ,D-BIT> <RTRUE>)
|
||||
(ELSE <RFALSE>)>)
|
||||
(<NOT <FSET? .OBJ <- ,D-BIT>>>
|
||||
<RTRUE>)
|
||||
(ELSE <RFALSE>)>)
|
||||
(ELSE
|
||||
<RTRUE>)>>
|
||||
|
||||
"Determines, for DESCRIBE-OBJECTS, if an object has a simple description
|
||||
(not a FDESC, LDESC, or whatever)."
|
||||
|
||||
<ROUTINE SIMPLE-DESC? (OBJ "AUX" STR)
|
||||
<COND (<AND <GETP .OBJ ,P?FDESC>
|
||||
<NOT <FSET? .OBJ ,TOUCHBIT>>>
|
||||
<RFALSE>)
|
||||
(<AND <SET STR <GETP .OBJ ,P?DESCFCN>>
|
||||
<APPLY .STR ,M-OBJDESC? .OBJ>>
|
||||
<RFALSE>)
|
||||
(<GETP .OBJ ,P?LDESC> <RFALSE>)
|
||||
(ELSE <RTRUE>)>>
|
||||
|
||||
|
||||
|
||||
"DESCRIBE-REST finishes 'Opening the crocodile's mouth reveals '"
|
||||
|
||||
<ROUTINE DESCRIBE-REST (OBJ)
|
||||
<COND (<NOT <DESCRIBE-CONTENTS .OBJ>>
|
||||
<TELL "nothing">)>
|
||||
<RTRUE>>
|
||||
|
||||
"DESCRIBE-SENT does the whole ball of wax"
|
||||
|
||||
<ROUTINE DESCRIBE-SENT (OBJ)
|
||||
<COND (<NOT <DESCRIBE-CONTENTS .OBJ <> <+ ,D-ALL? ,D-PARA?>>>
|
||||
<TELL "The " D .OBJ " is empty.">)>
|
||||
<RTRUE>>
|
||||
|
||||
"DESCRIBE-NOTHING returns false if nothing was described"
|
||||
|
||||
;<ROUTINE DESCRIBE-NOTHING ()
|
||||
<COND (<DESCRIBE-CONTENTS ,PRSO 2>
|
||||
<COND (<NOT <IN? ,WINNER ,PRSO>>
|
||||
<CRLF>)>
|
||||
<RTRUE>)
|
||||
(T ;"nothing"
|
||||
<RFALSE>)>>
|
||||
|
||||
;"END"
|
|
@ -0,0 +1,650 @@
|
|||
"GLOBALS for
|
||||
The Lurking Horror
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<DIRECTIONS ;"Do not change the order of the first 8 without consulting MARC!"
|
||||
NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
|
||||
|
||||
<SYNONYM NORTH N>
|
||||
<SYNONYM SOUTH S>
|
||||
<SYNONYM EAST E>
|
||||
<SYNONYM WEST W>
|
||||
<SYNONYM DOWN D>
|
||||
<SYNONYM UP U>
|
||||
<SYNONYM NE NORTHEAST>
|
||||
<SYNONYM NW NORTHWEST>
|
||||
<SYNONYM SE SOUTHEAST>
|
||||
<SYNONYM SW SOUTHWEST>
|
||||
<SYNONYM IN AHEAD>
|
||||
|
||||
<GLOBAL HERE <>>
|
||||
|
||||
<GLOBAL LIT <>>
|
||||
|
||||
<GLOBAL MOVES 0>
|
||||
|
||||
<GLOBAL SCORE 0>
|
||||
|
||||
;<GLOBAL DIR-TABLE
|
||||
<PLTABLE 1 P?NORTH "north"
|
||||
2 P?EAST "east"
|
||||
4 P?WEST "west"
|
||||
8 P?SOUTH "south"
|
||||
16 P?NE "northeast"
|
||||
32 P?NW "northwest"
|
||||
64 P?SE "southeast"
|
||||
128 P?SW "southwest">>
|
||||
|
||||
<CONSTANT DIR-BIT 1>
|
||||
<CONSTANT DIR-DIR 2>
|
||||
<CONSTANT DIR-NAME 3>
|
||||
|
||||
;<ROUTINE DIR-BASE (DIR I O "AUX" (L <GET ,DIR-TABLE 0>))
|
||||
<DO (CNT 0 .L 3)
|
||||
<COND (<EQUAL? <GET ,DIR-TABLE <+ .CNT .I>> .DIR>
|
||||
<RETURN <GET ,DIR-TABLE <+ .CNT .O>>>)>>>
|
||||
|
||||
"global objects and associated routines"
|
||||
|
||||
<OBJECT GLOBAL-OBJECTS
|
||||
(FLAGS AN
|
||||
CONTBIT
|
||||
DOORBIT
|
||||
INVISIBLE
|
||||
LOCKED
|
||||
NDESCBIT
|
||||
NOABIT
|
||||
NOTHEBIT
|
||||
ONBIT
|
||||
OUTSIDE
|
||||
OPENBIT
|
||||
PERSON
|
||||
POWERBIT
|
||||
;RAIRBIT
|
||||
READBIT
|
||||
RLANDBIT
|
||||
RMUNGBIT
|
||||
;RWATERBIT
|
||||
SEARCHBIT
|
||||
SLIMEBIT
|
||||
SURFACEBIT
|
||||
TAKEBIT
|
||||
THE
|
||||
TOOLBIT
|
||||
TOUCHBIT
|
||||
TRANSBIT
|
||||
TRYTAKEBIT
|
||||
VEHBIT
|
||||
WEAPONBIT
|
||||
WEARBIT)>
|
||||
|
||||
<OBJECT LOCAL-GLOBALS
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM ZZMGCK) ;"Yes, this needs to exist."
|
||||
(DESCFCN 0)
|
||||
(CONTFCN 0)
|
||||
(GLOBAL GLOBAL-OBJECTS)
|
||||
(FDESC "F")
|
||||
(LDESC "F")
|
||||
;(NAME 0)
|
||||
;(PSEUDO "FOOBAR" V-WALK)
|
||||
(THINGS 0)
|
||||
(COUNT 0)
|
||||
(SIZE 0)
|
||||
(TEXT "")
|
||||
(CAPACITY 0)>
|
||||
|
||||
<OBJECT ROOMS
|
||||
(IN TO ROOMS)>
|
||||
|
||||
<GLOBAL P-DIRECTION <>>
|
||||
|
||||
<OBJECT INTDIR
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "direction")>
|
||||
|
||||
<OBJECT INTNUM
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "number")
|
||||
(SYNONYM INTNUM)
|
||||
(ADJECTIVE NUMBER)
|
||||
(ACTION INTNUM-F)>
|
||||
|
||||
<ROUTINE INTNUM-F ()
|
||||
<COND (<PRSO? ,INTNUM>
|
||||
<COND (<HERE? ,CS-ELEVATOR-ROOM>
|
||||
<REDIRECT ,INTNUM ,FLOOR-BUTTON>
|
||||
<RTRUE>)
|
||||
(<HERE? ,KITCHEN>
|
||||
<PUT ,P-ADJW 0 ,W?INTNUM>
|
||||
<REDIRECT ,INTNUM ,CONTROLS>
|
||||
<RTRUE>)
|
||||
(<VERB? PUSH>
|
||||
<TELL S "There's no number ""to push here." CR>)>)>>
|
||||
|
||||
<OBJECT PSEUDO-OBJECT
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "pseudo")
|
||||
(ACTION ME-F)>
|
||||
|
||||
<OBJECT IT
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM IT THEM OBJECT FROB)
|
||||
(DESC "it")
|
||||
(FLAGS AN NOABIT NOTHEBIT NDESCBIT TOUCHBIT)>
|
||||
|
||||
<OBJECT HIM
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM HIM HER)
|
||||
(DESC "him")
|
||||
(FLAGS NOABIT NOTHEBIT NDESCBIT TOUCHBIT)>
|
||||
|
||||
<OBJECT NOT-HERE-OBJECT
|
||||
(DESC "it")
|
||||
(FLAGS NOABIT NOTHEBIT)
|
||||
(ACTION NOT-HERE-OBJECT-F)>
|
||||
|
||||
"NOT-HERE-OBJECT-F returns false if it was successful in substituting
|
||||
an object for the not-here-object. if it returns true, it failed for
|
||||
some reason."
|
||||
|
||||
<ROUTINE NOT-HERE-OBJECT-F ("AUX" TBL (PRSO? T) (X <>))
|
||||
<COND (<AND <PRSO? ,NOT-HERE-OBJECT>
|
||||
<PRSI? ,NOT-HERE-OBJECT>>
|
||||
<TELL "Those things aren't here!" CR>
|
||||
<RTRUE>)
|
||||
(<PRSO? ,NOT-HERE-OBJECT>
|
||||
<SET TBL ,P-PRSO>
|
||||
<COND (<VERB? FOLLOW WAIT-FOR FIND
|
||||
TELL WHAT WHERE WHO>
|
||||
<SET X T>)>)
|
||||
(T
|
||||
<SET TBL ,P-PRSI>
|
||||
<COND (<VERB? ASK-ABOUT ASK-FOR TELL-ABOUT>
|
||||
<SET X T>)>
|
||||
<SET PRSO? <>>)>
|
||||
<COND (<AND .X <NOT <FIND-NOT-HERE .TBL .PRSO?>>>
|
||||
<COND (<VERB? FOLLOW>
|
||||
<TELL
|
||||
"I'm afraid that's not possible." CR>
|
||||
<RTRUE>)
|
||||
(<VERB? WAIT-FOR>
|
||||
<COND (<AND <PRSO? ,RATS>
|
||||
<IN-TUNNEL? ,RATS>
|
||||
<IN-TUNNEL?>>
|
||||
<TELL "All in good time..." CR>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<COND (<PLURAL? ,PRSO>
|
||||
<TELL "They're">)
|
||||
(ELSE
|
||||
<TELL "He's">)>
|
||||
<TELL " not expected any time soon." CR>
|
||||
<RTRUE>)>)
|
||||
(<AND <VERB? TELL>
|
||||
<OR <NOT <EQUAL? <LOC ,PRSO>
|
||||
,INF-1 ,INF-2 ,INF-3
|
||||
,INF-4 ,INF-5>>
|
||||
<NOT <HERE? ,INF-1 ,INF-2 ,INF-3
|
||||
,INF-4 ,INF-5>>>>
|
||||
;<CANT-SEE-ANY-HERE .PRSO?>
|
||||
;<RTRUE>)
|
||||
(ELSE
|
||||
<RFALSE>)>)>
|
||||
;"Here is the default 'cant see any' printer"
|
||||
<CANT-SEE-ANY-HERE .PRSO?>>
|
||||
|
||||
<ROUTINE CANT-SEE-ANY-HERE (PRSO?)
|
||||
<COND (<WINNER? ,PLAYER>
|
||||
<TELL "You">)
|
||||
(ELSE
|
||||
<TELL CTHE ,WINNER>)>
|
||||
<TELL " can't see any ">
|
||||
<COND (,P-OFLAG
|
||||
<COND (<PRINT-ADJT ,P-XADJNT>)>
|
||||
<COND (,P-XNAM <PRINTB ,P-XNAM>)>)
|
||||
(ELSE
|
||||
<THING-PRINT .PRSO?>)>
|
||||
<TELL " here." CR>
|
||||
<END-QUOTE>>
|
||||
|
||||
<ROUTINE FIND-NOT-HERE (TBL PRSO? "AUX" M-F OBJ)
|
||||
;"Special-case code goes here. <MOBY-FIND .TBL> returns # of matches. If 1,
|
||||
then P-MOBY-FOUND is it. You can treat the 0 and >1 cases alike or differently.
|
||||
Always return RFALSE (not handled) if you have resolved the problem."
|
||||
<SET M-F <MOBY-FIND .TBL>>
|
||||
%<DEBUG-CODE
|
||||
<COND (,ZDEBUG
|
||||
<TELL "[Found " N .M-F " obj]" CR>)>>
|
||||
<COND (<EQUAL? 1 .M-F>
|
||||
%<DEBUG-CODE
|
||||
<COND (,ZDEBUG
|
||||
<TELL "[Namely: " D ,P-MOBY-FOUND "]" CR>)>>
|
||||
<COND (.PRSO?
|
||||
<SETG PRSO ,P-MOBY-FOUND>)
|
||||
(T
|
||||
<SETG PRSI ,P-MOBY-FOUND>)>
|
||||
<RFALSE>)
|
||||
(T
|
||||
,NOT-HERE-OBJECT)>>
|
||||
|
||||
<OBJECT LIGHT
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "light")
|
||||
(SYNONYM LIGHT LIGHTS)
|
||||
(ACTION LIGHT-F)>
|
||||
|
||||
<ROUTINE LIGHT-F ()
|
||||
<COND (<VERB? LAMP-ON>
|
||||
<COND (,LIT
|
||||
<TELL ,IT-IS-ALREADY "light" ,PERIOD>)
|
||||
(T
|
||||
<TELL
|
||||
"You need a light source!" CR>)>)
|
||||
(<VERB? LAMP-OFF>
|
||||
<TELL ,WASTE-OF-TIME>)>>
|
||||
|
||||
<OBJECT GLOBAL-HOLE
|
||||
(IN LOCAL-GLOBALS)
|
||||
(FLAGS NDESCBIT TOUCHBIT)
|
||||
(DESC "hole")
|
||||
(SYNONYM HOLE)
|
||||
(ADJECTIVE MUDDY)
|
||||
(ACTION GLOBAL-HOLE-F)>
|
||||
|
||||
<ROUTINE GLOBAL-HOLE-F ()
|
||||
<COND (<P? DIG GLOBAL-HOLE *>
|
||||
<PERFORM ,V?DIG ,PRSI>
|
||||
<RTRUE>)
|
||||
(<VERB? REACH-IN>
|
||||
<TELL ,YOU-FIND-NOTHING " of interest." CR>)>>
|
||||
|
||||
<OBJECT CEILING
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(FLAGS NDESCBIT TOUCHBIT)
|
||||
(DESC "ceiling")
|
||||
(SYNONYM CEILIN ROOF)
|
||||
(ACTION CEILING-F)>
|
||||
|
||||
<ROUTINE CEILING-F ()
|
||||
<COND (<VERB? LOOK-UNDER>
|
||||
<NEW-VERB ,V?LOOK>
|
||||
<RTRUE>)>>
|
||||
|
||||
<OBJECT AIR
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "air")
|
||||
(SYNONYM AIR COLD)
|
||||
(FLAGS AN NOABIT)>
|
||||
|
||||
<OBJECT FEET
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM FEET FOOT)
|
||||
(DESC "your feet")
|
||||
(FLAGS NDESCBIT TOOLBIT TOUCHBIT NOABIT NOTHEBIT)>
|
||||
|
||||
<OBJECT HANDS
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM HANDS HAND)
|
||||
(ADJECTIVE BARE MY)
|
||||
(DESC "your hand")
|
||||
(FLAGS NDESCBIT TOOLBIT TOUCHBIT NOABIT NOTHEBIT)
|
||||
(GENERIC GENERIC-HAND-F)>
|
||||
|
||||
<ROUTINE GENERIC-HAND-F ()
|
||||
,HAND>
|
||||
|
||||
<OBJECT HEAD
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "your head")
|
||||
(SYNONYM HEAD FACE)
|
||||
(ADJECTIVE YOUR MY)
|
||||
(FLAGS NOABIT NOTHEBIT)>
|
||||
|
||||
<OBJECT EYES
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "your eyes")
|
||||
(SYNONYM EYE EYES)
|
||||
(ADJECTIVE YOUR MY)
|
||||
(FLAGS NOABIT NOTHEBIT)
|
||||
(ACTION EYES-F)>
|
||||
|
||||
<ROUTINE EYES-F ()
|
||||
<COND (<VERB? OPEN>
|
||||
<TELL "They are." CR>)
|
||||
(<VERB? CLOSE>
|
||||
<TELL "That won't help." CR>)
|
||||
(<NOT ,LIT>
|
||||
<TELL ,TOO-DARK>)>>
|
||||
|
||||
<OBJECT PLAYER
|
||||
(IN TERMINAL-ROOM)
|
||||
(SYNONYM PROTAG)
|
||||
(DESC "it")
|
||||
(FLAGS NDESCBIT INVISIBLE PERSON CONTBIT TRANSBIT)
|
||||
(ACTION PLAYER-F)>
|
||||
|
||||
<ROUTINE PLAYER-F ("AUX" DOOR)
|
||||
<COND (,ON-CABLE?
|
||||
<COND (<OR <P? DROP ROOMS>
|
||||
<VERB? DISEMBARK TAKE TAKE-OFF>
|
||||
<HOSTILE-VERB?>
|
||||
<AND <VERB? WALK>
|
||||
<EQUAL? ,P-WALK-DIR ,P?DOWN>>>
|
||||
<SETG ON-CABLE? <>>
|
||||
<TELL "You let go of the cable and drop to the floor">
|
||||
<COND (,RATS-HERE
|
||||
<COND (<L? ,RATS-HERE 2>
|
||||
<SETG RATS-HERE 2>)>
|
||||
<TELL
|
||||
" among the now-frenzied rats">)>
|
||||
<TELL ,PERIOD>)>)
|
||||
(,HOLDING-DOORS?
|
||||
<SET DOOR <THIS-FLOOR-DOOR>>
|
||||
<COND (<AND <NOT <PRSO? ,ELEVATOR-DOOR .DOOR>>
|
||||
<NOT <PRSI? ,ELEVATOR-DOOR .DOOR>>
|
||||
<NOT <GAME-VERB?>>
|
||||
<NOT <PASSIVE-VERB?>>>
|
||||
<TELL ,HOLDING-IS-ALL CR>)>)
|
||||
(ELSE <RFALSE>)>>
|
||||
|
||||
<OBJECT ME
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM ME MYSELF SELF)
|
||||
(DESC "yourself")
|
||||
(FLAGS PERSON TOUCHBIT NOABIT NOTHEBIT)
|
||||
(ACTION ME-F)>
|
||||
|
||||
<ROUTINE MENTAL-COLLAPSE ()
|
||||
<TELL
|
||||
"Talking to yourself is a sign of impending mental collapse." CR>>
|
||||
|
||||
<ROUTINE ME-F ("AUX" OLIT)
|
||||
<COND (<P? EXAMINE ,ME>
|
||||
<V-DIAGNOSE>)
|
||||
(<VERB? TELL HELP>
|
||||
<MENTAL-COLLAPSE>
|
||||
<END-QUOTE>)
|
||||
(<VERB? LISTEN>
|
||||
<TELL "Yes?" CR>)
|
||||
(<VERB? WAKE>
|
||||
<TELL ,YOU-ARE>
|
||||
<TELL ,PERIOD>)
|
||||
(<AND <WINNER? ,PLAYER>
|
||||
<VERB? GIVE>>
|
||||
<COND (<PRSO? ,ME>
|
||||
<TELL ,WASTE-OF-TIME>)
|
||||
(<PRSI? ,ME>
|
||||
<COND (<IN? ,PRSO ,PLAYER>
|
||||
<PRE-TAKE>)
|
||||
(T
|
||||
<PERFORM ,V?TAKE ,PRSO>
|
||||
<RTRUE>)>)>)
|
||||
(<VERB? MOVE>
|
||||
<V-WALK-AROUND>)
|
||||
(<VERB? SEARCH>
|
||||
<V-INVENTORY>
|
||||
<RTRUE>)
|
||||
(<VERB? KILL MUNG BURY SMELL>
|
||||
<JIGS-UP
|
||||
"Verdict: suicide while the balance of the mind was disturbed.">
|
||||
<RTRUE>)
|
||||
(<VERB? WHO>
|
||||
<V-WHAT>)
|
||||
(<VERB? FOLLOW>
|
||||
<TELL
|
||||
"You're getting ahead of yourself." CR>)
|
||||
(<VERB? LOOK-BEHIND>
|
||||
<TELL
|
||||
"You look back over your shoulder. ">
|
||||
<COND (<PROB 80>
|
||||
<TELL
|
||||
S "There's nothing ""there." CR>)
|
||||
(<PROB 80>
|
||||
<TELL
|
||||
"Was that a flicker of movement in the distance?" CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"You see something duck back into the shadows." CR>)>)>>
|
||||
|
||||
<OBJECT GLOBAL-ROOM
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "room")
|
||||
(SYNONYM ROOM CHAMBER PLACE BASEMENT)
|
||||
(ADJECTIVE AREA)
|
||||
(ACTION GLOBAL-ROOM-F)>
|
||||
|
||||
<ROUTINE GLOBAL-ROOM-F ()
|
||||
<COND (<VERB? LOOK EXAMINE LOOK-INSIDE>
|
||||
<V-LOOK>
|
||||
<RTRUE>)
|
||||
(<P? PUT * ,GLOBAL-ROOM>
|
||||
<PERFORM ,V?DROP ,PRSO>
|
||||
<RTRUE>)
|
||||
(<VERB? THROUGH WALK-TO>
|
||||
<V-WALK-AROUND>)
|
||||
(<VERB? DROP LEAVE EXIT>
|
||||
<DO-WALK ,P?OUT>)
|
||||
(<VERB? WALK-AROUND>
|
||||
<TELL
|
||||
"Walking around the room reveals nothing new. To move elsewhere, just type
|
||||
the desired direction." CR>)
|
||||
(<VERB? LAMP-ON>
|
||||
<NEW-PRSO ,LIGHT>
|
||||
<RTRUE>)>>
|
||||
|
||||
|
||||
<SETG C-NORTH 1>
|
||||
<SETG C-EAST 2>
|
||||
<SETG C-WEST 4>
|
||||
<SETG C-SOUTH 8>
|
||||
<SETG C-NE 16>
|
||||
<SETG C-NW 32>
|
||||
<SETG C-SE 64>
|
||||
<SETG C-SW 128>
|
||||
|
||||
<CONSTANT C-NORTH 1>
|
||||
<CONSTANT C-EAST 2>
|
||||
<CONSTANT C-WEST 4>
|
||||
<CONSTANT C-SOUTH 8>
|
||||
<CONSTANT C-NE 16>
|
||||
<CONSTANT C-NW 32>
|
||||
<CONSTANT C-SE 64>
|
||||
<CONSTANT C-SW 128>
|
||||
|
||||
<OBJECT NORTH-WALL
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "north wall")
|
||||
(SYNONYM WALL)
|
||||
(ADJECTIVE NORTH)
|
||||
(GENERIC GENERIC-WALL-F)
|
||||
(ACTION WALL-F)>
|
||||
|
||||
<OBJECT EAST-WALL
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "east wall")
|
||||
(SYNONYM WALL)
|
||||
(ADJECTIVE EAST)
|
||||
(FLAGS AN)
|
||||
(GENERIC GENERIC-WALL-F)
|
||||
(ACTION WALL-F)>
|
||||
|
||||
<OBJECT WEST-WALL
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "west wall")
|
||||
(SYNONYM WALL)
|
||||
(ADJECTIVE WEST)
|
||||
(GENERIC GENERIC-WALL-F)
|
||||
(ACTION WALL-F)>
|
||||
|
||||
<OBJECT SOUTH-WALL
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "south wall")
|
||||
(SYNONYM WALL)
|
||||
(ADJECTIVE SOUTH)
|
||||
(GENERIC GENERIC-WALL-F)
|
||||
(ACTION WALL-F)>
|
||||
|
||||
<OBJECT WALL
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "wall")
|
||||
(SYNONYM WALL WALLS)
|
||||
(GENERIC GENERIC-WALL-F)
|
||||
(ACTION WALL-F)>
|
||||
|
||||
<ROUTINE GENERIC-WALL-F ()
|
||||
,WALL>
|
||||
|
||||
<ROUTINE WALL-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL ,IT-LOOKS-LIKE "a wall." CR>)
|
||||
(<VERB? LOWER MUNG>
|
||||
<TELL ,YOU-CANT "pull down a wall that easily." CR>)>>
|
||||
|
||||
<OBJECT DIRT
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "dirt")
|
||||
(SYNONYM RUBBLE DEBRIS DUST DIRT)
|
||||
(FLAGS NOABIT)>
|
||||
|
||||
<OBJECT GROUND
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM FLOOR GROUND FIELD)
|
||||
(ADJECTIVE STONE SANDY TINY LEVEL)
|
||||
(DESC "floor")
|
||||
;(FLAGS NOABIT)
|
||||
(ACTION GROUND-F)>
|
||||
|
||||
<ROUTINE GROUND-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<COND ;(<FSET? ,HERE ,RAIRBIT>
|
||||
<TELL
|
||||
"It's a long way down." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"It's still there." CR>)>)
|
||||
(<P? PUT * ,GROUND>
|
||||
<PERFORM ,V?BURY ,PRSO>
|
||||
<RTRUE>)
|
||||
(<VERB? CLIMB-UP CLIMB-ON CLIMB-FOO BOARD>
|
||||
<TELL ,WASTE-OF-TIME>)
|
||||
(<VERB? LOOK-UNDER>
|
||||
<TELL
|
||||
"You never did master X-rays. Freshman physics was such a drag." CR>)>>
|
||||
|
||||
<OBJECT CORRIDOR
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "passage")
|
||||
(SYNONYM PASSAGE CORRIDOR EXIT TUNNEL)
|
||||
(ADJECTIVE LONG DARK STEAM)
|
||||
(ACTION CORRIDOR-F)>
|
||||
|
||||
<ROUTINE CORRIDOR-F ()
|
||||
<COND (<VERB? THROUGH WALK-TO>
|
||||
<V-WALK-AROUND>)
|
||||
(<AND <VERB? FOLLOW CLIMB-DOWN>
|
||||
<HERE? ,YUGGOTH ,BOWL-ROOM ,PLATFORM-ROOM>>
|
||||
<DO-WALK ,P?DOWN>)
|
||||
(<VERB? CLIMB-DOWN>
|
||||
<COND (<HERE? ,DEAD-STORAGE>
|
||||
<DO-WALK ,P?EAST>)>)>>
|
||||
|
||||
;<OBJECT LOCAL-WATER
|
||||
(SYNONYM WATER)
|
||||
(ADJECTIVE FRESH SALT SEA)
|
||||
(DESC "water")
|
||||
(FLAGS NOABIT)
|
||||
(ACTION WATER-F)>
|
||||
|
||||
;<OBJECT WATER
|
||||
(IN LOCAL-GLOBALS)
|
||||
(SYNONYM WATER)
|
||||
(DESC "water")
|
||||
(FLAGS NDESCBIT NOABIT)
|
||||
(ACTION WATER-F)>
|
||||
|
||||
;<ROUTINE WATER-F ()
|
||||
<COND (<P? (POUR THROW) ,LOCAL-WATER>
|
||||
<COND (<AND <LOC ,PRSO>
|
||||
<IN? <LOC ,PRSO> ,WINNER>>
|
||||
<PERFORM ,V?POUR <LOC ,PRSO>>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<DONT-HAVE-THAT>)>)
|
||||
(<VERB? EAT DRINK DRINK-FROM>
|
||||
<COND (<PRSO? ,LOCAL-WATER>
|
||||
<COND (<IN? <LOC ,PRSO> ,WINNER>
|
||||
<COND (<FSET? <LOC ,PRSO> ,OPENBIT>
|
||||
<REMOVE ,PRSO>)
|
||||
(ELSE
|
||||
<TELL-OPEN-CLOSED <LOC ,PRSO>>
|
||||
<RTRUE>)>)
|
||||
(<NOT <GLOBAL-IN? ,WATER ,HERE>>
|
||||
<TELL ,YOU-DONT-HAVE THE <LOC ,PRSO> ,PERIOD>
|
||||
<RTRUE>)>)>
|
||||
<COND (<OR <AND <PRSO? ,LOCAL-WATER>
|
||||
<FSET? ,PRSO ,RMUNGBIT>>
|
||||
;<AND <PRSO? ,WATER>
|
||||
<HERE? ;"ROOM WITH WATER">>>
|
||||
<TELL
|
||||
"It's bitter and you spit it out immediately.">)
|
||||
(ELSE
|
||||
<TELL
|
||||
"That was refreshing, but you shouldn't drink untested water.">)>
|
||||
<CRLF>)
|
||||
(<VERB? REACH-IN RUB>
|
||||
<TELL
|
||||
"It's wet." CR>)
|
||||
(<VERB? LOOK-INSIDE LOOK-UNDER>
|
||||
<MAKE-OUT>)
|
||||
;(<VERB? THROUGH LEAP>
|
||||
<COND (<FSET? ,HERE ,RWATERBIT>
|
||||
<TELL ,YOU-ARE ,PERIOD>)>)>>
|
||||
|
||||
<ROUTINE RANDOM-PSEUDO ()
|
||||
<COND (<AND <EQUAL? ,P-PNAM ,W?SHAFT>
|
||||
<VERB? EXAMINE LOOK-UP>>
|
||||
<LIKE-A-SHAFT>)
|
||||
(<AND <EQUAL? ,P-PNAM ,W?TRIANGLE>
|
||||
<VERB? EXAMINE>>
|
||||
<TELL
|
||||
"It's \"Floppy Triangles,\" a work of modern sculpture." CR>)
|
||||
(<VERB? EXAMINE LOOK-INSIDE LOOK-BEHIND>
|
||||
<TELL S "You see nothing special about " "it." CR>)
|
||||
(<VERB? TAKE>
|
||||
<YOU-CANT-X-THAT "take">)>>
|
||||
|
||||
"sleep, hunger, etc."
|
||||
|
||||
;<GLOBAL LAST-SLEPT 40> ;"move when you last woke-up, for purposed of V-TIME"
|
||||
|
||||
<OBJECT GLOBAL-SLEEP
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "sleep")
|
||||
(SYNONYM SLEEP NAP)
|
||||
(FLAGS NOABIT NOTHEBIT)
|
||||
(ACTION GLOBAL-SLEEP-F)>
|
||||
|
||||
<ROUTINE GLOBAL-SLEEP-F ()
|
||||
<COND (<VERB? WALK-TO TAKE>
|
||||
<NEW-VERB ,V?SLEEP>
|
||||
<RTRUE>)
|
||||
(<VERB? FIND>
|
||||
<TELL "Sleep anywhere." CR>)>>
|
||||
|
||||
<OBJECT NOISE
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "noise")
|
||||
(SYNONYM NOISE SOUND)>
|
||||
|
||||
<OBJECT SNOW
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "snow")
|
||||
(SYNONYM SNOW SNOWSTORM BLIZZARD)
|
||||
(ACTION SNOW-F)>
|
||||
|
||||
<ROUTINE SNOW-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<COND (<FSET? ,HERE ,OUTSIDE>
|
||||
<TELL "It's still coming down." CR>)
|
||||
(ELSE <TELL "You are inside." CR>)>)>>
|
|
@ -0,0 +1,659 @@
|
|||
"BROWN for
|
||||
Horror
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<ROOM BROWN-BUILDING
|
||||
(IN ROOMS)
|
||||
(DESC "Brown Building")
|
||||
(UP TO BROWN-TOP-FLOOR)
|
||||
(DOWN TO BROWN-BASEMENT)
|
||||
(SOUTH TO COURTYARD)
|
||||
(OUT TO COURTYARD)
|
||||
(FLAGS ONBIT)
|
||||
(GLOBAL OUTSIDE-DOOR)
|
||||
(ACTION BROWN-BUILDING-F)>
|
||||
|
||||
<OBJECT BROWN-ELEVATOR
|
||||
(IN BROWN-BUILDING)
|
||||
(DESC "elevator doors")
|
||||
(SYNONYM DOOR DOORS ELEVATOR)
|
||||
(ADJECTIVE ELEVATOR)
|
||||
(FLAGS NDESCBIT)
|
||||
(ACTION BROWN-ELEVATOR-F)>
|
||||
|
||||
<ROUTINE BROWN-ELEVATOR-F ()
|
||||
<COND (<VERB? OPEN PRY WEDGE>
|
||||
<TELL
|
||||
"It's broken." CR>)>>
|
||||
|
||||
<GLOBAL THE-LOBBY "This is the lobby of the ">
|
||||
|
||||
<ROUTINE BROWN-BUILDING-F (RARG)
|
||||
<COND (<RARG? LOOK>
|
||||
<TELL
|
||||
,THE-LOBBY "Brown Building, an eighteen-story skyscraper
|
||||
which houses the Meteorology Department and other outposts of the
|
||||
Earth Sciences. The elevator is out of order, but a long stairway leads up
|
||||
to the roof, and another leads
|
||||
down to the basement. A revolving door leads out into the night." CR>)>>
|
||||
|
||||
<ROOM COURTYARD
|
||||
(IN ROOMS)
|
||||
(DESC "Small Courtyard")
|
||||
(LDESC
|
||||
"This courtyard is a triumph of modern architecture. It is spare,
|
||||
cold, angular, overwhelming in size, and bears a striking resemblance
|
||||
to a wind tunnel whenever the breeze picks up. Right now this is true
|
||||
of the whole campus, though. A huge mass lurks nearby, and an almost
|
||||
featureless skyscraper is to the north.")
|
||||
(IN TO BROWN-BUILDING)
|
||||
(NORTH TO BROWN-BUILDING)
|
||||
(GLOBAL OUTSIDE-DOOR)
|
||||
(FLAGS ONBIT OUTSIDE)
|
||||
(ACTION COURTYARD-F)
|
||||
(THINGS <PSEUDO (FLOPPY TRIANGLE RANDOM-PSEUDO)
|
||||
(HUGE MASS RANDOM-PSEUDO)>)>
|
||||
|
||||
<ROUTINE COURTYARD-F (RARG)
|
||||
<COND ;(<RARG? LOOK>
|
||||
<TELL
|
||||
CR>)
|
||||
(<RARG? ENTER>
|
||||
<EXIT-TO-COLD>)
|
||||
(<RARG? LEAVE>
|
||||
<EXIT-FROM-COLD>)>>
|
||||
|
||||
<OBJECT OUTSIDE-DOOR
|
||||
(IN LOCAL-GLOBALS)
|
||||
(DESC "outside door")
|
||||
(SYNONYM DOOR)
|
||||
(ADJECTIVE OUTSIDE)
|
||||
(FLAGS DOORBIT LOCKED NDESCBIT OPENABLE)
|
||||
(GENERIC GENERIC-DOOR-F)
|
||||
(ACTION OUTSIDE-DOOR-F)>
|
||||
|
||||
<ROUTINE OUTSIDE-DOOR-F ()
|
||||
<COND (<FSET? ,HERE ,OUTSIDE>
|
||||
<COND (<VERB? THROUGH>
|
||||
<DO-WALK ,P?IN>)
|
||||
(<HERE? ,MASS-AVE ,SMITH-ST ,COURTYARD ,CS-ROOF>
|
||||
<COND (<VERB? OPEN>
|
||||
<TELL
|
||||
"The door opens from this side." CR>)
|
||||
(<P? UNLOCK * MASTER-KEY>
|
||||
<TELL
|
||||
"The door is not keyed to this key." CR>)>)
|
||||
(<VERB? OPEN UNLOCK>
|
||||
<TELL
|
||||
"The door is securely locked." CR>)>)
|
||||
(ELSE
|
||||
<COND (<VERB? THROUGH>
|
||||
<DO-WALK ,P?OUT>)
|
||||
(<VERB? OPEN>
|
||||
<TELL
|
||||
"You can open the door, but it shuts automatically immediately
|
||||
thereafter." CR>)>)>>
|
||||
|
||||
<ROOM GREAT-COURT
|
||||
(IN ROOMS)
|
||||
(DESC "Great Court")
|
||||
(LDESC
|
||||
"In the spring and summer, this cheery green court is a haven from
|
||||
classwork. Right now, the majestic buildings of the main campus are
|
||||
almost invisible in the howling blizzard. A locked door bars your
|
||||
way to the north.")
|
||||
(NORTH "The door is locked.")
|
||||
(FLAGS ONBIT OUTSIDE)
|
||||
(GLOBAL OUTSIDE-DOOR)
|
||||
(ACTION GREAT-COURT-F)>
|
||||
|
||||
<ROUTINE GREAT-COURT-F (RARG)
|
||||
<COND ;(<RARG? LOOK>
|
||||
<TELL
|
||||
CR>)
|
||||
(<RARG? ENTER>
|
||||
<AS-YOU-ENTER-LEAVE "leave">
|
||||
<EXIT-TO-COLD>)
|
||||
;(<RARG? LEAVE>
|
||||
<EXIT-FROM-COLD>)>>
|
||||
|
||||
<ROUTINE AS-YOU-ENTER-LEAVE (EL)
|
||||
<TELL
|
||||
"As you " .EL ", the door closes and locks behind you." CR CR>>
|
||||
|
||||
<ROOM BROWN-BASEMENT
|
||||
(IN ROOMS)
|
||||
(DESC "Brown Basement")
|
||||
(LDESC
|
||||
"This is a cluttered basement below the Brown Building. Discarded equipment
|
||||
nearly blocks an already narrow hallway that terminates in a stairway leading
|
||||
up. The passage itself continues northwest.")
|
||||
(UP TO BROWN-BUILDING)
|
||||
(NW TO BROWN-TUNNEL)
|
||||
(FLAGS ONBIT)
|
||||
;(ACTION BROWN-BASEMENT-F)
|
||||
(THINGS <PSEUDO (ELECTRIC EQUIPMENT RANDOM-PSEUDO)
|
||||
(FILE CABINET RANDOM-PSEUDO)
|
||||
(<> DETRITUS RANDOM-PSEUDO)>)>
|
||||
|
||||
;<ROUTINE BROWN-BASEMENT-F (RARG)
|
||||
<COND (<RARG? LOOK>
|
||||
<TELL
|
||||
CR>)>>
|
||||
|
||||
<ROOM BROWN-TOP-FLOOR
|
||||
(IN ROOMS)
|
||||
(DESC "Top Floor")
|
||||
(LDESC
|
||||
"This is the top of the stairway. A door leads out to the roof here, and
|
||||
you can hear the wind blowing beyond. There is a sign on the door.")
|
||||
(DOWN TO BROWN-BUILDING)
|
||||
(WEST TO BROWN-ROOF IF ROOF-DOOR IS OPEN)
|
||||
(OUT TO BROWN-ROOF IF ROOF-DOOR IS OPEN)
|
||||
(FLAGS ONBIT)
|
||||
(GLOBAL ROOF-DOOR)
|
||||
;(ACTION BROWN-TOP-FLOOR-F)>
|
||||
|
||||
;<ROUTINE BROWN-TOP-FLOOR-F (RARG)
|
||||
<COND (<RARG? LOOK>
|
||||
<TELL
|
||||
CR>)>>
|
||||
|
||||
<OBJECT ROOF-DOOR
|
||||
(IN LOCAL-GLOBALS)
|
||||
(DESC "roof door")
|
||||
(SYNONYM DOOR)
|
||||
(ADJECTIVE ROOF)
|
||||
(FLAGS DOORBIT LOCKED NDESCBIT OPENABLE)
|
||||
(ACTION ROOF-DOOR-F)>
|
||||
|
||||
<ROUTINE ROOF-DOOR-F ()
|
||||
<COND (<AND <VERB? OPEN>
|
||||
<NOT <FSET? ,ROOF-DOOR ,LOCKED>>
|
||||
<NOT <FSET? ,ROOF-DOOR ,OPENBIT>>>
|
||||
<FSET ,ROOF-DOOR ,OPENBIT>
|
||||
<TELL
|
||||
"You push the door open">
|
||||
<COND (<HERE? ,BROWN-TOP-FLOOR>
|
||||
<TELL
|
||||
", revealing a windswept, snow-covered roof. Frigid
|
||||
wind whips snow into your face">)>
|
||||
<TELL "." CR>)
|
||||
(<P? UNLOCK * MASTER-KEY>
|
||||
<FCLEAR ,PRSO ,LOCKED>
|
||||
<TELL ,DOOR-NOW-UNLOCKED>)
|
||||
(<P? LOCK * MASTER-KEY>
|
||||
<FSET ,PRSO ,LOCKED>
|
||||
<TELL
|
||||
"The door is now locked." CR>)
|
||||
(<VERB? THROUGH>
|
||||
<COND (<HERE? ,BROWN-ROOF>
|
||||
<DO-WALK ,P?IN>)
|
||||
(ELSE
|
||||
<DO-WALK ,P?OUT>)>)>>
|
||||
|
||||
<OBJECT ROOF-DOOR-SIGN
|
||||
(IN BROWN-TOP-FLOOR)
|
||||
(DESC "sign")
|
||||
(SYNONYM SIGN)
|
||||
(FLAGS READBIT NDESCBIT)
|
||||
(TEXT
|
||||
"It says \"NO ADMITTANCE!\" In smaller, hand-written letters below,
|
||||
it says \"This means you!\" and below that in different handwriting,
|
||||
it says \"Who, me?\"")>
|
||||
|
||||
<ROOM BROWN-ROOF
|
||||
(IN ROOMS)
|
||||
(DESC "Skyscraper Roof")
|
||||
(LDESC
|
||||
"A low parapet surrounds a small roof here. The air conditioning cooling
|
||||
tower and the small protrusion containing the stairs are dwarfed by a
|
||||
semitransparent dome which towers above you. The blowing snow obscures
|
||||
all detail of the city across the river to the south.")
|
||||
(IN PER BROWN-ROOF-EXIT) ;BROWN-TOP-FLOOR
|
||||
(EAST PER BROWN-ROOF-EXIT)
|
||||
(UP TO INSIDE-DOME)
|
||||
(FLAGS ONBIT OUTSIDE)
|
||||
(GLOBAL ROOF-DOOR LADDER DOME)
|
||||
(ACTION BROWN-ROOF-F)>
|
||||
|
||||
<ROUTINE BROWN-ROOF-EXIT ()
|
||||
<COND (<IN? ,FLIER ,HERE>
|
||||
<TELL
|
||||
"The dark shape, its foul stench overpowering the wind, ">
|
||||
<COND (<IN? ,FLIER-SHAPE ,HERE>
|
||||
<REMOVE ,FLIER-SHAPE>
|
||||
<SETG FLIER-COUNT 3>
|
||||
<TELL "drops from the dome and ">)>
|
||||
<TELL "blocks your escape." CR>
|
||||
<RFALSE>)
|
||||
(<FSET? ,ROOF-DOOR ,OPENBIT>
|
||||
,BROWN-TOP-FLOOR)
|
||||
(ELSE
|
||||
<TELL "The door leading inside is closed." CR>
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE BROWN-ROOF-F (RARG)
|
||||
<COND ;(<RARG? LOOK>
|
||||
<TELL
|
||||
CR>)
|
||||
(<RARG? ENTER>
|
||||
<EXIT-TO-COLD>)
|
||||
(<RARG? LEAVE>
|
||||
<EXIT-FROM-COLD>)
|
||||
(<RARG? BEG>
|
||||
<ROOF-BEGS>)>>
|
||||
|
||||
<ROUTINE ROOF-BEGS ()
|
||||
<COND (<P? EXAMINE CEILING>
|
||||
<TELL "It's made of ">
|
||||
<COND (<HERE? ,ON-DOME>
|
||||
<TELL "concrete." CR>)
|
||||
(ELSE
|
||||
<TELL "tiny, tarry cinders." CR>)>)
|
||||
(<P? THROW-OFF * CEILING>
|
||||
<COND (<AND <PRSO? SMOOTH-STONE>
|
||||
<IN? ,FLIER ,HERE>>
|
||||
<PERFORM ,V?ATTACK ,FLIER ,SMOOTH-STONE>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<COND (<HERE? ,BROWN-ROOF>
|
||||
<MOVE ,PRSO ,COURTYARD>)
|
||||
(ELSE <REMOVE ,PRSO>)>
|
||||
<OBJ-OFF-ROOF ,PRSO>)>)
|
||||
(<VERB? LEAP>
|
||||
<COND (<IN? ,FLIER ,HERE>
|
||||
<TELL
|
||||
"The creature sees you preparing to leap, and springs toward you in a
|
||||
desperate effort, blood-red mouth contorted with a cry of frustration,
|
||||
but it's too late." CR>)>
|
||||
<JIGS-UP
|
||||
"You leap over the edge. Freezing ice crystals hitting you in the face
|
||||
as you fall. Then you hit the ground, which is more unpleasant still.">)>>
|
||||
|
||||
<OBJECT DOME
|
||||
(IN LOCAL-GLOBALS)
|
||||
(DESC "dome")
|
||||
(SYNONYM DOME)
|
||||
(ADJECTIVE LARGE WEATHER GREAT)
|
||||
(FLAGS NDESCBIT)
|
||||
(ACTION DOME-F)>
|
||||
|
||||
<ROUTINE DOME-F ()
|
||||
<COND (<VERB? THROUGH CLIMB-FOO>
|
||||
<DO-WALK ,P?UP>)
|
||||
(<HERE? ,BROWN-ROOF>
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"The dome is large and semitransparent. It's made of some sort of
|
||||
milky-colored plastic. It dominates the roof. You can climb up to the
|
||||
entrance via a short ladder." CR>)>)
|
||||
(ELSE
|
||||
<COND (<VERB? LEAP>
|
||||
<JIGS-UP
|
||||
"It was a long way down. It was quick, though.">)>)>>
|
||||
|
||||
<ROOM INSIDE-DOME
|
||||
(IN ROOMS)
|
||||
(DESC "Inside Dome")
|
||||
(LDESC
|
||||
"You are inside a large domed area. The dome contains equipment that
|
||||
makes it clear it is a weather observation station. For some reason,
|
||||
it also contains a small peach tree. Wind whistles outside, and snow
|
||||
blasts against the semitransparent material of the dome.")
|
||||
(DOWN PER INSIDE-DOME-EXIT) ;BROWN-ROOF
|
||||
(OUT PER INSIDE-DOME-EXIT)
|
||||
(FLAGS ONBIT)
|
||||
(GLOBAL GLOBAL-HOLE LADDER)
|
||||
(ACTION INSIDE-DOME-F)
|
||||
(THINGS
|
||||
<PSEUDO (<> EQUIPMENT RANDOM-PSEUDO)
|
||||
(<> DOME RANDOM-PSEUDO)>)>
|
||||
|
||||
<ROUTINE INSIDE-DOME-EXIT ()
|
||||
<COND (<IN? ,FLIER ,HERE>
|
||||
<TELL
|
||||
"The creature is blocking your exit." CR>
|
||||
<RFALSE>)
|
||||
(ELSE
|
||||
,BROWN-ROOF)>>
|
||||
|
||||
<ROUTINE INSIDE-DOME-F (RARG)
|
||||
<COND ;(<RARG? LOOK>
|
||||
<TELL
|
||||
CR>)
|
||||
(<RARG? ENTER>
|
||||
<COND (<AND <ZERO? ,FLIER-COUNT>
|
||||
<HELD? ,SMOOTH-STONE>>
|
||||
<QUEUE I-FLIER -1>)>)
|
||||
(<RARG? BEG>
|
||||
<COND (<P? (DIG SEARCH) DIRT>
|
||||
<NEW-PRSO ,TUB>
|
||||
<RTRUE>)>)
|
||||
(<RARG? END>
|
||||
<COND (<AND <ZERO? ,FLIER-COUNT>
|
||||
<HELD? ,HAND>>
|
||||
<QUEUE I-FLIER -1>)>)>>
|
||||
|
||||
<GLOBAL FLIER-COUNT 0>
|
||||
|
||||
<ROUTINE I-FLIER ()
|
||||
<COND (<AND <NOT <ZERO? ,FLIER-COUNT>>
|
||||
<IN? ,FLIER ,GLOBAL-OBJECTS>>
|
||||
<DEQUEUE I-FLIER>
|
||||
<RFALSE>)>
|
||||
<SETG FLIER-COUNT <+ ,FLIER-COUNT 1>>
|
||||
<QUEUE I-FLIER -1>
|
||||
<COND (<HERE? ,INSIDE-DOME>
|
||||
<COND (<EQUAL? ,FLIER-COUNT 1>
|
||||
<MOVE ,FLIER-SHAPE ,HERE>
|
||||
<MOVE ,FLIER ,BROWN-ROOF>
|
||||
<TELL CR
|
||||
"Something smashes against the glass of the dome! You turn
|
||||
and see a dark shape clinging to the outside of the structure." CR>)
|
||||
(<EQUAL? ,FLIER-COUNT 2>
|
||||
<TELL CR ,SHAPE-TWITCHES CR>)
|
||||
(<EQUAL? ,FLIER-COUNT 3>
|
||||
<REMOVE ,FLIER-SHAPE>
|
||||
<TELL CR
|
||||
"The shape drops out of view." CR>)
|
||||
(<EQUAL? ,FLIER-COUNT 4>
|
||||
<TELL CR
|
||||
"You hear, on the ladder outside, hard claws painfully
|
||||
climbing towards the dome entrance." CR>)
|
||||
(<AND <G=? ,FLIER-COUNT 5>
|
||||
<NOT <IN? ,FLIER ,HERE>>>
|
||||
<MOVE ,FLIER ,HERE>
|
||||
<TELL CR
|
||||
"The creature enters the dome, screaming viciously at you, its
|
||||
claws reaching out to grasp and rend." CR>)
|
||||
(ELSE
|
||||
<FLIER-EATS-HAND?>)>)
|
||||
(<HERE? ,BROWN-ROOF>
|
||||
<COND (<EQUAL? ,FLIER-COUNT 1>
|
||||
<MOVE ,FLIER-SHAPE ,INSIDE-DOME>
|
||||
<MOVE ,FLIER ,BROWN-ROOF>
|
||||
<TELL CR
|
||||
"You hear a strange confusion of wings, and then something
|
||||
dark and shapeless smashes against the dome above you!" CR>)
|
||||
(<EQUAL? ,FLIER-COUNT 2>
|
||||
<TELL CR ,SHAPE-TWITCHES CR>)
|
||||
(<EQUAL? ,FLIER-COUNT 3>
|
||||
<REMOVE ,FLIER-SHAPE>
|
||||
<TELL CR
|
||||
"The shape drops, crunching into the snow almost next to you.
|
||||
Its scaly head turns toward you, eyes like coals
|
||||
staring into yours." CR>)
|
||||
(<EQUAL? ,FLIER-COUNT 4>
|
||||
<TELL CR
|
||||
"The shape rises, baring needle-sharp teeth and pumping its
|
||||
wings painfully in the gale." CR>)
|
||||
(<EQUAL? ,FLIER-COUNT 5>
|
||||
<TELL CR
|
||||
"The creature approaches, hissing at you as it nears." CR>)
|
||||
(ELSE <FLIER-EATS-HAND?>)>)>>
|
||||
|
||||
<GLOBAL SHAPE-TWITCHES
|
||||
"The dark shape moves. Above the howl of the wind you
|
||||
hear a high-pitched keening noise.">
|
||||
|
||||
<ROUTINE FLIER-EATS-HAND? ("OPT" (NOCR? <>))
|
||||
<COND (<AND <IN? ,FLIER ,HERE>
|
||||
<OR .NOCR?
|
||||
<IN? ,HAND ,PLAYER>
|
||||
<IN? ,HAND ,HERE>>>
|
||||
<MOVE ,FLIER ,GLOBAL-OBJECTS>
|
||||
<COND (<NOT .NOCR?> <CRLF>)>
|
||||
<TELL
|
||||
"In a snake-like strike, the creature ">
|
||||
<COND (<IN? ,HAND ,WINNER>
|
||||
<TELL
|
||||
"attacks! Its toothy jaws close on your hand! Not your hand, but the ">)
|
||||
(ELSE
|
||||
<TELL
|
||||
"snaps at the ">)>
|
||||
<REMOVE ,HAND>
|
||||
<COND (<NOT <FSET? ,HAND ,PERSON>>
|
||||
<TELL "mummified ">)>
|
||||
<TELL "hand you dug out of the
|
||||
tub! With a disgusting gobbling noise, the flier swallows the hand, and
|
||||
then, ">
|
||||
<COND (<HERE? ,BROWN-ROOF>
|
||||
<TELL
|
||||
"its wings beating feebly against the wind, it sails away into the gale.">)
|
||||
(ELSE
|
||||
<TELL
|
||||
"using its wings to push itself away, it scuttles out into the cold and
|
||||
away.">)>
|
||||
<CRLF>)>>
|
||||
|
||||
<OBJECT FLIER-SHAPE
|
||||
(DESC "dark shape")
|
||||
(SYNONYM SHAPE FLIER THING)
|
||||
(ADJECTIVE DARK SHAPELESS)
|
||||
(FLAGS NDESCBIT)
|
||||
(ACTION FLIER-SHAPE-F)>
|
||||
|
||||
<ROUTINE FLIER-SHAPE-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
,YOU-CANT "tell much from here. It's large and dark,
|
||||
but the dome obscures all detail." CR>)>>
|
||||
|
||||
<OBJECT FLIER
|
||||
(DESC "creature")
|
||||
(SYNONYM SHAPE FLIER CREATURE)
|
||||
(ADJECTIVE DARK)
|
||||
(DESCFCN FLIER-DESC)
|
||||
(GENERIC GENERIC-CREATURE-F)
|
||||
(VALUE 5)
|
||||
(ACTION FLIER-F)>
|
||||
|
||||
<ROUTINE FLIER-DESC (RARG OBJ)
|
||||
<COND (<RARG? OBJDESC?> <RTRUE>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"A dark shape watches balefully from nearby.">)>>
|
||||
|
||||
<ROUTINE FLIER-F ()
|
||||
<COND (<IN? ,FLIER ,GLOBAL-OBJECTS>
|
||||
<COND (<NOT <ABSTRACT-VERB?>>
|
||||
<TELL
|
||||
"The creature has disappeared as though it never was." CR>)>)
|
||||
(<VERB? EXAMINE>
|
||||
<TELL
|
||||
"Like a black sheet flapping in the wind, the dark flier is hard to see.
|
||||
Red eyes glow like coals on its scaly, bullet-shaped head. Human-like
|
||||
hands clench and unclench. Sharp needles of teeth project wickedly from
|
||||
its twisted jaw." CR>)
|
||||
(<VERB? SMELL>
|
||||
<TELL
|
||||
"Its stench is that of a foul eater of carrion, overlaid with another
|
||||
smell you can't place, but which is even less appetizing." CR>)
|
||||
(<AND <VERB? ATTACK KILL> <NOT <PRSI? ,SMOOTH-STONE>>>
|
||||
<TELL
|
||||
"Hissing and screeching, the creature fends off your attack. Its
|
||||
head jerks from side to side, watching you." CR>)
|
||||
(<VERB? GIVE>
|
||||
<COND (<PRSO? ,HAND>
|
||||
<FLIER-EATS-HAND? T>)
|
||||
(<PRSO? ,SMOOTH-STONE>
|
||||
<TELL
|
||||
CTHE ,PRSI " edges away." CR>)>)
|
||||
(<AND <P? (THROW POUR) * FLIER>
|
||||
<NOT <PRSO? ,SMOOTH-STONE ,ELIXIR>>>
|
||||
<MOVE ,PRSO ,HERE>
|
||||
<TELL
|
||||
"The creature darts to the side, dodging " THE ,PRSO ,PERIOD>)>>
|
||||
|
||||
<OBJECT PEACH-TREE
|
||||
(IN INSIDE-DOME)
|
||||
(DESC "peach tree")
|
||||
(SYNONYM TREE)
|
||||
(ADJECTIVE PEACH)
|
||||
(FLAGS NDESCBIT)
|
||||
(ACTION PEACH-TREE-F)>
|
||||
|
||||
<ROUTINE PEACH-TREE-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"It's a small peach tree planted in a very large tub of
|
||||
earth. It appears healthy, although as it is wintertime, the tree
|
||||
has no leaves." CR>)
|
||||
(<VERB? RUB>
|
||||
<TELL
|
||||
"It feels like wood, but there is something slippery on it higher up." CR>)
|
||||
(<P? (ATTACK CUT) * AXE>
|
||||
<TELL
|
||||
"At the last second, you realize it would be an unspeakable act of
|
||||
vandalism." CR>)
|
||||
(<VERB? SHAKE>
|
||||
<TELL
|
||||
"You shake it, but nothing drops. Its branches are bare." CR>)
|
||||
(<VERB? CLIMB-ON CLIMB-UP CLIMB-FOO>
|
||||
<TELL
|
||||
S "You start to climb " "the tree, but
|
||||
as you get partway up, your hands encounter a slippery substance
|
||||
which covers the limbs at this height. Not only is it extremely unpleasant
|
||||
to touch, it makes the tree too slippery to climb any further." CR>)>>
|
||||
|
||||
<OBJECT TUB
|
||||
(IN INSIDE-DOME)
|
||||
(DESC "tub of dirt")
|
||||
(SYNONYM TUB DIRT EARTH)
|
||||
(ADJECTIVE WOODEN LARGE)
|
||||
(FLAGS NDESCBIT CONTBIT OPENBIT SEARCHBIT)
|
||||
(CAPACITY 30)
|
||||
(ACTION TUB-F)>
|
||||
|
||||
<ROUTINE TUB-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"The tub is full of dirt and \"condo chips\" (those pine bark
|
||||
chips that are spread around condos and shopping centers by the
|
||||
ton). The dirt has been disturbed recently." CR>)
|
||||
(<VERB? DIG SEARCH LOOK-INSIDE>
|
||||
<COND (<NOT <FSET? ,HAND ,TOUCHBIT>>
|
||||
<FSET ,HAND ,TOUCHBIT>
|
||||
<MOVE ,HAND ,TUB>
|
||||
<SCORE-OBJECT ,HAND>
|
||||
<TELL
|
||||
S "You root around ""in the dirt for a while, when you encounter something
|
||||
hard. Further exploration reveals it to be a dried, chewed
|
||||
looking human hand." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
,YOU-FIND-NOTHING " further, which is something of a relief." CR>)>)>>
|
||||
|
||||
<OBJECT TATTOO
|
||||
(IN HAND)
|
||||
(DESC "tattoo")
|
||||
(SYNONYM TATTOO SYMBOL)
|
||||
(ADJECTIVE STRANGE)
|
||||
(FLAGS NDESCBIT)
|
||||
(SIZE 0)
|
||||
(GENERIC GENERIC-SYMBOL-F)
|
||||
(ACTION TATTOO-F)>
|
||||
|
||||
<ROUTINE TATTOO-F ()
|
||||
<COND (<VERB? EXAMINE READ>
|
||||
<TELL
|
||||
"The tattoo is old and faded. It was done in red ink and is very
|
||||
artistically drawn. ">
|
||||
<TELL-SYMBOL ,HAND>
|
||||
<CRLF>)
|
||||
(<VERB? RUB>
|
||||
<TELL
|
||||
"This part of the hand feels particularly cold." CR>)>>
|
||||
|
||||
<OBJECT HAND
|
||||
(DESC "human hand")
|
||||
(SYNONYM HAND)
|
||||
(ADJECTIVE DEAD MUMMIFIED HUMAN)
|
||||
(VALUE 5)
|
||||
(HEAT 0)
|
||||
(FLAGS TAKEBIT SEARCHBIT OPENBIT CONTBIT)
|
||||
(GENERIC GENERIC-HAND-F)
|
||||
(CONTFCN HAND-F)
|
||||
(ACTION HAND-F)>
|
||||
|
||||
<ROUTINE HAND-F ("OPT" (RARG <>))
|
||||
<COND (<RARG? CONTAINER>
|
||||
<COND (<FSET? ,HAND ,PERSON>
|
||||
<COND (<VERB? WEAR>
|
||||
<TAKE-OUT-FIRST ,PRSO ,HAND>)
|
||||
(<OR <NOT <VERB? TAKE>>
|
||||
<NOT <HELD? ,HAND>>>
|
||||
<NEW-PRSO ,HAND>)>)>)
|
||||
(<WINNER? ,HAND>
|
||||
<TELL
|
||||
"As you speak, the hand sits still, but there is
|
||||
no other noticeable result." CR>
|
||||
<END-QUOTE>)
|
||||
(<VERB? EXAMINE>
|
||||
<COND (<FSET? ,HAND ,PERSON>
|
||||
<TELL
|
||||
"There are stains, scars, ">
|
||||
<COND (<IN? ,RING ,HAND>
|
||||
<TELL A ,RING ", ">)>
|
||||
<TELL "and a tattoo on the hand. ">
|
||||
<COND (,LAIR-FLAG
|
||||
<COND (<HELD? ,HAND>
|
||||
<HAND-POINTS>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"It's splashing in" ,THE-POOL>)>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"It looks perfectly normal and alive, ignoring the fact that there
|
||||
is no arm attached to it. It doesn't appear to mind, so why should you?" CR>)>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"The hand is very old. It's dry and very light, mummified in fact. There
|
||||
are stains, scars, and dried blood on it. There is a tattoo on the back
|
||||
of it. The hand appears to have been severed by the application of very
|
||||
sharp teeth, perhaps an animal's." CR>)>)
|
||||
(<AND <PRSO? ,HAND>
|
||||
<OR <VERB? TAKE PUT THROW>
|
||||
<P? RUB * HAND>
|
||||
<HOSTILE-VERB?>>
|
||||
<FSET? ,HAND ,PERSON>>
|
||||
<COND (<HERE? ,INNER-LAIR>
|
||||
<TELL
|
||||
CTHE ,HAND ", muddy and wet, wiggles out of your grasp." CR>)
|
||||
(<IN? ,HAND ,PLAYER>
|
||||
<TELL
|
||||
CTHE ,HAND " scuttles away to your other shoulder." CR>)>)
|
||||
(<P? PUT-ON RING HAND>
|
||||
<COND (<FSET? ,HAND ,PERSON>
|
||||
<FCLEAR ,RING ,WEARBIT>
|
||||
<MOVE ,RING ,HAND>
|
||||
<TELL
|
||||
"The ring fits the hand perfectly." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
,YOU-CANT "get the ring onto the dry flesh of the hand." CR>)>)
|
||||
(<P? (GIVE SHOW) * HAND>
|
||||
<COND (<FSET? ,HAND ,PERSON>
|
||||
<TELL "The hand ">
|
||||
<COND (<IN? ,HAND ,VAT>
|
||||
<TELL "is preoccupied." CR>)
|
||||
(<FSET? ,PRSO ,PERSON>
|
||||
<TELL "doesn't react." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"scurries to " THE ,PRSO " and touches it all over, much as a
|
||||
blind person would examine something." CR>)>)>)
|
||||
(<P? RUB ,HAND>
|
||||
<COND (<NOT <HELD? ,HAND>>
|
||||
<NOT-HOLDING ,HAND>)
|
||||
(<FSET? ,HAND ,PERSON>
|
||||
<TELL
|
||||
"It's warm and dry." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"It's dry and cold. In fact, it's mummified." CR>)>)
|
||||
(<AND <VERB? FOLLOW>
|
||||
<HERE? ,INNER-LAIR>>
|
||||
<TELL
|
||||
"The pool isn't that deep!" CR>)>>
|
|
@ -0,0 +1,35 @@
|
|||
"H for
|
||||
The Lurking Horror
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<SNAME "H1">
|
||||
|
||||
<PRINC "
|
||||
*** The Lurking Horror: Interactive Horror ***
|
||||
">
|
||||
|
||||
<VERSION ZIP> ;"maybe ezip or xzip someday"
|
||||
<FREQUENT-WORDS?> ;"include frequent words"
|
||||
;<LONG-WORDS?> ;"make a table of long words"
|
||||
<SETG ZDEBUGGING? <>> ;"don't include debugging code"
|
||||
<SETG NEW-VOC? T> ;"allows words to be adj/noun/verb all at once!"
|
||||
<SET REDEFINE T> ;"don't stop and ask"
|
||||
|
||||
<INSERT-FILE "MISC">
|
||||
<INSERT-FILE "PARSER">
|
||||
<INSERT-FILE "SYNTAX">
|
||||
<INSERT-FILE "DEBUG">
|
||||
<INSERT-FILE "RECORD">
|
||||
<INSERT-FILE "INTERRUPTS">
|
||||
<INSERT-FILE "DESC">
|
||||
<INSERT-FILE "VERBS">
|
||||
<INSERT-FILE "GLOBALS">
|
||||
<INSERT-FILE "CS">
|
||||
<INSERT-FILE "HACKER">
|
||||
<INSERT-FILE "PC">
|
||||
<INSERT-FILE "YUGGOTH">
|
||||
<INSERT-FILE "GREEN">
|
||||
<INSERT-FILE "FROB">
|
||||
|
||||
<PROPDEF SIZE 5>
|
||||
<PROPDEF CAPACITY 0>
|
|
@ -0,0 +1,200 @@
|
|||
.FSTR FSTR?1,"the " ;2376 1189
|
||||
.FSTR FSTR?2,"The " ;1167 390
|
||||
.FSTR FSTR?3,", " ;1157 1158
|
||||
.FSTR FSTR?4,"You " ;954 319
|
||||
.FSTR FSTR?5,"and " ;928 465
|
||||
.FSTR FSTR?6,". " ;741 742
|
||||
.FSTR FSTR?7,"It's " ;610 123
|
||||
.FSTR FSTR?8,"you " ;598 300
|
||||
.FSTR FSTR?9,"is " ;493 494
|
||||
.FSTR FSTR?10,"your " ;486 163
|
||||
.FSTR FSTR?11,"of " ;469 470
|
||||
.FSTR FSTR?12,"to " ;426 427
|
||||
.FSTR FSTR?13,"There " ;410 83
|
||||
.FSTR FSTR?14,"with " ;378 127
|
||||
.FSTR FSTR?15,"that " ;321 108
|
||||
.FSTR FSTR?16,"are " ;306 154
|
||||
.FSTR FSTR?17,"This " ;300 76
|
||||
.FSTR FSTR?18,"something " ;296 38
|
||||
.FSTR FSTR?19,"from " ;279 94
|
||||
.FSTR FSTR?20,"into " ;273 92
|
||||
.FSTR FSTR?21,"It " ;272 137
|
||||
.FSTR FSTR?22,"in " ;251 252
|
||||
.FSTR FSTR?23,"but " ;248 125
|
||||
.FSTR FSTR?24,"through " ;222 38
|
||||
.FSTR FSTR?25,"like " ;213 72
|
||||
.FSTR FSTR?26,"can't " ;210 43
|
||||
.FSTR FSTR?27,"doesn't " ;210 31
|
||||
.FSTR FSTR?28,"elevator " ;189 28
|
||||
.FSTR FSTR?29,"it " ;181 182
|
||||
.FSTR FSTR?30,"don't " ;180 37
|
||||
.FSTR FSTR?31,"almost " ;180 37
|
||||
.FSTR FSTR?32,"already " ;180 31
|
||||
.FSTR FSTR?33,"around " ;170 35
|
||||
.FSTR FSTR?34,"appears " ;168 29
|
||||
.FSTR FSTR?35,"have " ;162 55
|
||||
.FSTR FSTR?36,"floor " ;160 41
|
||||
.FSTR FSTR?37,"He " ;156 79
|
||||
.FSTR FSTR?38,"it's " ;156 40
|
||||
.FSTR FSTR?39,"looks " ;144 37
|
||||
.FSTR FSTR?40,"which " ;140 36
|
||||
.FSTR FSTR?41,"this " ;135 46
|
||||
.FSTR FSTR?42,"on " ;133 134
|
||||
.FSTR FSTR?43,"here" ;132 67
|
||||
.FSTR FSTR?44,"for " ;132 67
|
||||
.FSTR FSTR?45,"hacker " ;125 26
|
||||
.FSTR FSTR?46,"about " ;124 32
|
||||
.FSTR FSTR?47,"very " ;123 42
|
||||
.FSTR FSTR?48,"out " ;120 61
|
||||
.FSTR FSTR?49,"more " ;117 40
|
||||
.FSTR FSTR?50,"chain " ;112 29
|
||||
.FSTR FSTR?51,"some " ;111 38
|
||||
.FSTR FSTR?52,"see " ;108 55
|
||||
.FSTR FSTR?53,"other " ;108 28
|
||||
.FSTR FSTR?54,"leads " ;108 28
|
||||
.FSTR FSTR?55,"over " ;105 36
|
||||
.FSTR FSTR?56,"floor" ;105 36
|
||||
.FSTR FSTR?57,"isn't " ;105 22
|
||||
.FSTR FSTR?58,"creature " ;105 16
|
||||
.FSTR FSTR?59,"They " ;104 27
|
||||
.FSTR FSTR?60,"revealing " ;104 14
|
||||
.FSTR FSTR?61,"There's " ;104 14
|
||||
.FSTR FSTR?62,"one " ;102 52
|
||||
.FSTR FSTR?63,"can " ;102 52
|
||||
.FSTR FSTR?64,"not " ;100 51
|
||||
.FSTR FSTR?65,"tunnel " ;100 21
|
||||
.FSTR FSTR?66,"anything " ;98 15
|
||||
.FSTR FSTR?67,"all " ;96 49
|
||||
.FSTR FSTR?68,"only " ;96 33
|
||||
.FSTR FSTR?69,"door " ;96 33
|
||||
.FSTR FSTR?70,"small " ;96 25
|
||||
.FSTR FSTR?71,"covered " ;96 17
|
||||
.FSTR FSTR?72,"little " ;95 20
|
||||
.FSTR FSTR?73,"ladder " ;95 20
|
||||
.FSTR FSTR?74,"begins " ;95 20
|
||||
.FSTR FSTR?75,"Tunnel" ;95 20
|
||||
.FSTR FSTR?76,"has " ;94 48
|
||||
.FSTR FSTR?77,"open " ;93 32
|
||||
.FSTR FSTR?78,"just " ;93 32
|
||||
.FSTR FSTR?79,"as " ;92 93
|
||||
.FSTR FSTR?80,"Your " ;92 24
|
||||
.FSTR FSTR?81,"you" ;91 92
|
||||
.FSTR FSTR?82,"nothing " ;90 16
|
||||
.FSTR FSTR?83,"holding " ;90 16
|
||||
.FSTR FSTR?84,"maintenance " ;90 10
|
||||
.FSTR FSTR?85,"at " ;89 90
|
||||
.FSTR FSTR?86,"there " ;88 23
|
||||
.FSTR FSTR?87,"continues " ;88 12
|
||||
.FSTR FSTR?88,"get " ;86 44
|
||||
.FSTR FSTR?89,"then " ;84 29
|
||||
.FSTR FSTR?90,"looking " ;84 15
|
||||
.FSTR FSTR?91,"You're " ;84 13
|
||||
.FSTR FSTR?92,"what " ;81 28
|
||||
.FSTR FSTR?93,"its " ;80 41
|
||||
.FSTR FSTR?94,"metal " ;80 21
|
||||
.FSTR FSTR?95,"Department " ;80 9
|
||||
.FSTR FSTR?96,"been " ;78 27
|
||||
|
||||
|
||||
;word frequency table of 96 most common words
|
||||
|
||||
WORDS:: .TABLE
|
||||
FSTR?1
|
||||
FSTR?2
|
||||
FSTR?3
|
||||
FSTR?4
|
||||
FSTR?5
|
||||
FSTR?6
|
||||
FSTR?7
|
||||
FSTR?8
|
||||
FSTR?9
|
||||
FSTR?10
|
||||
FSTR?11
|
||||
FSTR?12
|
||||
FSTR?13
|
||||
FSTR?14
|
||||
FSTR?15
|
||||
FSTR?16
|
||||
FSTR?17
|
||||
FSTR?18
|
||||
FSTR?19
|
||||
FSTR?20
|
||||
FSTR?21
|
||||
FSTR?22
|
||||
FSTR?23
|
||||
FSTR?24
|
||||
FSTR?25
|
||||
FSTR?26
|
||||
FSTR?27
|
||||
FSTR?28
|
||||
FSTR?29
|
||||
FSTR?30
|
||||
FSTR?31
|
||||
FSTR?32
|
||||
FSTR?33
|
||||
FSTR?34
|
||||
FSTR?35
|
||||
FSTR?36
|
||||
FSTR?37
|
||||
FSTR?38
|
||||
FSTR?39
|
||||
FSTR?40
|
||||
FSTR?41
|
||||
FSTR?42
|
||||
FSTR?43
|
||||
FSTR?44
|
||||
FSTR?45
|
||||
FSTR?46
|
||||
FSTR?47
|
||||
FSTR?48
|
||||
FSTR?49
|
||||
FSTR?50
|
||||
FSTR?51
|
||||
FSTR?52
|
||||
FSTR?53
|
||||
FSTR?54
|
||||
FSTR?55
|
||||
FSTR?56
|
||||
FSTR?57
|
||||
FSTR?58
|
||||
FSTR?59
|
||||
FSTR?60
|
||||
FSTR?61
|
||||
FSTR?62
|
||||
FSTR?63
|
||||
FSTR?64
|
||||
FSTR?65
|
||||
FSTR?66
|
||||
FSTR?67
|
||||
FSTR?68
|
||||
FSTR?69
|
||||
FSTR?70
|
||||
FSTR?71
|
||||
FSTR?72
|
||||
FSTR?73
|
||||
FSTR?74
|
||||
FSTR?75
|
||||
FSTR?76
|
||||
FSTR?77
|
||||
FSTR?78
|
||||
FSTR?79
|
||||
FSTR?80
|
||||
FSTR?81
|
||||
FSTR?82
|
||||
FSTR?83
|
||||
FSTR?84
|
||||
FSTR?85
|
||||
FSTR?86
|
||||
FSTR?87
|
||||
FSTR?88
|
||||
FSTR?89
|
||||
FSTR?90
|
||||
FSTR?91
|
||||
FSTR?92
|
||||
FSTR?93
|
||||
FSTR?94
|
||||
FSTR?95
|
||||
FSTR?96
|
||||
.ENDT
|
||||
|
||||
.ENDI
|
|
@ -0,0 +1,950 @@
|
|||
"HACKER for
|
||||
The Lurking Horror
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<OBJECT HACKER
|
||||
(IN TERMINAL-ROOM)
|
||||
(DESC "hacker")
|
||||
(SYNONYM HACKER YOURSELF)
|
||||
(FLAGS SEARCHBIT PERSON OPENBIT CONTBIT)
|
||||
(DESCFCN HACKER-DESC)
|
||||
(CONTFCN HACKER-F)
|
||||
(ACTION HACKER-F)>
|
||||
|
||||
<ROUTINE HACKER-DESC ("OPT" RARG OBJ)
|
||||
<COND (<RARG? OBJDESC?> <RTRUE>)
|
||||
(ELSE
|
||||
<COND (<HERE? ,TERMINAL-ROOM>
|
||||
<TELL
|
||||
"Sitting at a terminal is a hacker whom you recognize.">)
|
||||
(ELSE
|
||||
<TELL
|
||||
"A muddy, scratched-up hacker stands tiredly here.">)>
|
||||
<RFATAL>)>>
|
||||
|
||||
<GLOBAL TOTALLY-UNRESPONSIVE "He is totally unresponsive.|">
|
||||
|
||||
<ROUTINE HACKER-F ("OPT" (RARG <>) "AUX" H)
|
||||
<COND (<RARG? CONTAINER>
|
||||
<COND (<VERB? TAKE MOVE>
|
||||
<COND (<G? ,LAIR-CNT 6>
|
||||
<TELL
|
||||
"You don't want to get that close to him." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"Hey! No snarfage, loser!\" You determine that this means, \"Stop!\"" CR>)>)>)
|
||||
(<WINNER? ,HACKER>
|
||||
<COND (<G? ,LAIR-CNT 6>
|
||||
<TELL
|
||||
"The hacker replies, \"Meld!\"" CR>)
|
||||
(<VERB? HELP>
|
||||
<COND (<HERE? ,TERMINAL-ROOM>
|
||||
<TELL "\"Be patient!\"" CR>)
|
||||
(<FSET? ,SMOOTH-STONE ,TOUCHBIT>
|
||||
<PERFORM ,V?TELL-ME-ABOUT ,PROGRAM>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"Help? I'm not a T.A. I've got work to do.\"" CR>)>)
|
||||
(<P? WHO LOVECRAFT>
|
||||
<NEW-VERB ,V?WHAT>
|
||||
<RTRUE>)
|
||||
(<VERB? TELL-ME-ABOUT WHAT>
|
||||
<COND (<PRSO? ,HACKER>
|
||||
<TELL
|
||||
"He's reluctant to boast." CR>)
|
||||
(<PRSO? ,KEYRING ,KEY-1 ,KEY-2 ,KEY-3 ,KEY-4>
|
||||
<COND (<GETPT ,MASTER-KEY ,P?VALUE>
|
||||
<FSET ,MASTER-KEY ,TOUCHBIT>
|
||||
<MOVE ,MASTER-KEY ,KEYRING>)>
|
||||
<TELL
|
||||
"\"I've accumulated a few keys over the years. I'm a licensed locksmith,
|
||||
which helps. I can get into any room at Tech.\" He pulls the keyring
|
||||
out on its chain, and shows off a key you hadn't noticed before. \"This is
|
||||
a master key,\" he says." CR>)
|
||||
(<PRSO? ,CHINESE-FOOD ,SNACK>
|
||||
<TELL
|
||||
"\"Yeah! I'd love some yummy Chinese food. Szechuan style. Ummm!\"" CR>)
|
||||
(<PRSO? ,MASTER-KEY>
|
||||
<COND (<IN? ,MASTER-KEY ,GLOBAL-OBJECTS>
|
||||
<TELL S
|
||||
"\"Who said anything about any master keys?\" he asks suspiciously.|">)
|
||||
(ELSE
|
||||
<THIS-IS-IT ,MASTER-KEY>
|
||||
<TELL
|
||||
"\"That's one of my best keys. It's a Tech master key. Not that it really
|
||||
opens every door at Tech, but I'd say three out of five, at least. Naturally,
|
||||
some labs are off-limits even to this key.\"" CR>)>)
|
||||
(<PRSO? ,STUDENTS>
|
||||
<TELL
|
||||
"\"Missing students? I knew one of them slightly. Not the sort who would
|
||||
go away, you know? He was sort of hackeresque, not dumb for an undergrad,
|
||||
either. Not the type to disappear.\"" CR>)
|
||||
(<PRSO? ,PROGRAM ,PC ,MENU-BOX ,YAK-WINDOW
|
||||
,HELP-KEY>
|
||||
<COND (<ZERO? ,HACKER-HELP>
|
||||
<TELL
|
||||
"\"You should consult the documentation.\" He's preoccupied with his
|
||||
own debugging." CR>)
|
||||
(<QUEUED? I-HACKER-HELPS>
|
||||
<TELL
|
||||
"\"I'm looking at it. Be patient. This isn't some little micro. We're
|
||||
on a hairy OS on a hairy net.\"" CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"I already looked at it. The bug is fixed in the sources. Your paper
|
||||
is gone, unless those Alchemy chompers have a copy.\"" CR>)>)
|
||||
(<PRSO? ,LOVECRAFT>
|
||||
<TELL
|
||||
"\"Wasn't he a fantasy author?\"" CR>)
|
||||
(<PRSO? ,SMOOTH-STONE>
|
||||
<TELL
|
||||
"\"I've never seen one like that. Pretty tasteful, I'd say.\"" CR>)
|
||||
(<PRSO? ,GLOBAL-URCHINS>
|
||||
<TELL
|
||||
"\"There are always urchins around. I remember one or two who became
|
||||
hackers.\"" CR>)
|
||||
(<PRSO? ,REPEATER ,INPUT-CABLE ,INPUT-SOCKET>
|
||||
<TELL
|
||||
"\"I'll fix it!\"" CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"The hacker studiously ignores you, loath to admit there is something he
|
||||
doesn't know about." CR>)>)
|
||||
(<VERB? FOLLOW>
|
||||
<COND (<HERE? ,INNER-LAIR>
|
||||
<TELL "\"I'm here, aren't I?\"" CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"I haven't got time. I have new versions of the system, the assembler,
|
||||
the editor, and the debugger to finish hacking.\"" CR>)>)
|
||||
(<P? GIVE * ME>
|
||||
<COND (<NOT <IN? ,CARTON ,HACKER>>
|
||||
<QUEUE I-FOOD-HINT 2>)>
|
||||
<COND (<PRSO? ,HELP-KEY>
|
||||
<PERFORM ,V?HELP>
|
||||
<RTRUE>)
|
||||
(<PRSO? ,KEYRING>
|
||||
<TELL
|
||||
"\"Well, I can't give you ">
|
||||
<COND (<IN? ,CARTON ,HACKER>
|
||||
<TELL "all ">)>
|
||||
<TELL "my keys, I need them.\" He fondles his
|
||||
keyring proudly." CR>)
|
||||
(<PRSO? ,MASTER-KEY>
|
||||
<COND (<IN? ,MASTER-KEY ,GLOBAL-OBJECTS>
|
||||
<TELL S
|
||||
"\"Who said anything about any master keys?\" he asks suspiciously.|">)
|
||||
(<IN? ,CARTON ,HACKER>
|
||||
<HACKER-LOANS-KEY>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"Fat chance! This is a master key! What have you done for me
|
||||
lately?\"" CR>)>)
|
||||
(<PRSO? ,KEY-1 ,KEY-2 ,KEY-3 ,KEY-4>
|
||||
<TELL
|
||||
"\"Those are boring old keys. They don't open anything interesting.\"" CR>)
|
||||
(ELSE
|
||||
<TELL "\"I don't have that.\"" CR>)>)
|
||||
(<VERB? TRADE>
|
||||
<COND (<AND <PRSO? ,CHINESE-FOOD ,CARTON ,MASTER-KEY>
|
||||
<PRSO? ,CHINESE-FOOD ,CARTON ,MASTER-KEY>>
|
||||
<SETG HACKER-TRADE? T>
|
||||
<TELL
|
||||
"\"You give me the food first.\"" CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"That's not a good trade.\"" CR>)>)
|
||||
(<VERB? HELLO>
|
||||
<TELL
|
||||
"\"Greetingage.\"">
|
||||
<COND (<HERE? ,TERMINAL-ROOM>
|
||||
<TELL " He turns back to his hacking.">)>
|
||||
<CRLF>)
|
||||
(ELSE
|
||||
<TELL "\"Mumble. Frotz.\"" CR>)>)
|
||||
(<VERB? EXAMINE>
|
||||
<COND (<HERE? ,INNER-LAIR>
|
||||
<COND (<G? ,LAIR-CNT 6>
|
||||
<TELL
|
||||
"He looks vacant-eyed and dangerous." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"He's muddy, wet, and tired looking." CR>)>)
|
||||
(ELSE
|
||||
<TELL "The hacker ">
|
||||
<COND (<AND <NOT <ZERO? ,HACKER-HELP>>
|
||||
<QUEUED? I-HACKER-HELPS>>
|
||||
<TELL "is ">
|
||||
<COND (<EQUAL? ,HACKER-HELP 1>
|
||||
<TELL "star">)
|
||||
(ELSE <TELL "sitt">)>
|
||||
<TELL "ing at your terminal">
|
||||
<COND (<G? ,HACKER-HELP 1>
|
||||
<TELL ", typing furiously">)>
|
||||
<TELL ". Every so
|
||||
often, he pauses briefly and twirls a lock of his hair. He is also
|
||||
humming under his breath.">)
|
||||
(ELSE
|
||||
<TELL
|
||||
"sits comfortably on an office chair facing a terminal table,
|
||||
or perhaps it's just a pile of old listings as tall as a terminal table.
|
||||
He is typing madly, using just two fingers, but achieves
|
||||
speeds that typists using all ten fingers only dream of. He is apparently
|
||||
debugging a large assembly language program, as the screen of his terminal
|
||||
looks like a spray of completely random characters.">)>
|
||||
<TELL " The hacker is dressed
|
||||
in blue jeans, an old work shirt, and what might once have been running
|
||||
shoes. Hanging from his belt is an enormous ring of keys. He is in need
|
||||
of a bath." CR>)>)
|
||||
(<VERB? THANK>
|
||||
<COND (<G? ,LAIR-CNT 6>
|
||||
<TELL "It doesn't impress him." CR>)
|
||||
(<OR <HELD? ,MASTER-KEY>
|
||||
<NOT <ZERO? ,HACKER-HELP>>>
|
||||
<TELL
|
||||
"He blushes." CR>)>)
|
||||
(<VERB? LISTEN>
|
||||
<COND (<G? ,LAIR-CNT 6>
|
||||
<TELL
|
||||
"He sounds like an insincere Moonie." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"He is humming something. It sounds classical, perhaps Bach?" CR>)>)
|
||||
(<VERB? SMELL>
|
||||
<TELL
|
||||
"Either the hacker, his clothing, or both are in need of cleaning." CR>)
|
||||
(<P? TELL-ABOUT HACKER>
|
||||
<COND (<G? ,LAIR-CNT 6>
|
||||
<TELL
|
||||
"He doesn't appear to be listening." CR>)
|
||||
(<PRSI? ,PROGRAM ,PC>
|
||||
<COND (,HACKER-HELP
|
||||
<TELL
|
||||
"He listens, more or less. The impression he gives is that non-hackers
|
||||
don't know anything about the bugs they cause." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"The hacker isn't too interested, and doesn't bother to get up and
|
||||
investigate more closely. He mumbles something about sending him a
|
||||
bug message, and returns to his work." CR>)>)
|
||||
(<IN? ,PRSI ,PLAYER>
|
||||
<PERFORM ,V?SHOW ,PRSI ,HACKER>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"The hacker shows little interest in your remarks." CR>)>)
|
||||
(<VERB? SHOW>
|
||||
<COND (<G? ,LAIR-CNT 6>
|
||||
<TELL ,TOTALLY-UNRESPONSIVE>)
|
||||
(<FSET? ,PRSO ,FOODBIT>
|
||||
<TELL
|
||||
"\"Winnage! I could do with some of that.\"" CR>)
|
||||
(<PRSO? ,SMOOTH-STONE>
|
||||
<TELL
|
||||
"\"Odd-looking thing. Are you a rock-jock?\"" CR>)
|
||||
(<PRSO? ,HAND>
|
||||
<TELL
|
||||
"\"Mondo grosso!\"" CR>)
|
||||
(<PRSO? ,DEAD-RAT>
|
||||
<TELL
|
||||
"\"I have enough of those in my basement. Get rid of it!\"" CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"He more or less grunts at you, but shows little interest in " THE ,PRSO
|
||||
,PERIOD>)>)
|
||||
(<VERB? GIVE>
|
||||
<COND (<G? ,LAIR-CNT 6>
|
||||
<TELL ,TOTALLY-UNRESPONSIVE>)
|
||||
(<AND <PRSO? ,CARTON ,CHINESE-FOOD>
|
||||
<IN? ,CHINESE-FOOD ,CARTON>>
|
||||
<DEQUEUE I-FOOD-HINT>
|
||||
<SET H <GETP ,CHINESE-FOOD ,P?HEAT>>
|
||||
<COND (<FSET? ,CHINESE-FOOD ,RMUNGBIT>
|
||||
<REMOVE ,CARTON>
|
||||
<TELL
|
||||
"\"Ouch! This is ridiculous! You've overcooked it. Look at those
|
||||
poor shrimp! It's ruined, chomper!\" He throws it away." CR>)
|
||||
(<G=? .H 12>
|
||||
<MOVE ,CARTON ,HACKER>
|
||||
<REMOVE ,CHINESE-FOOD>
|
||||
;<SCORE-OBJECT ,CHINESE-FOOD>
|
||||
<TELL
|
||||
"\"Ah! Serious food!\" He plunges into the food with all the delicacy
|
||||
and table manners of a shark at a feeding frenzy. Soon a satisfied
|
||||
expression appears on his face. ">
|
||||
<COND (,HACKER-TRADE?
|
||||
<HACKER-LOANS-KEY>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"Now, what was it you were wanting?\" he asks." CR>)>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"Yuck! This is">
|
||||
<COND (<ZERO? .H> <TELL " cold">)
|
||||
(ELSE
|
||||
<TELL "n't warm enough">)>
|
||||
<TELL "!\" He
|
||||
thrusts it back into your hands." CR>)>)
|
||||
(<AND <PRSO? ,SNACK>
|
||||
<NOT <FSET? ,SNACK ,RMUNGBIT>>>
|
||||
<MOVE ,SNACK ,HACKER>
|
||||
<TELL
|
||||
"\"Hey, thanks!\" He stuffs it down in no time.">
|
||||
<AFTER-HACKER-EATS>)
|
||||
(<PRSO? ,COKE>
|
||||
<TELL
|
||||
"\"I only drink Diet Coke,\" he complains.">
|
||||
<AFTER-HACKER-EATS>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"\"No thanks, keep it for now.\"" CR>)>)
|
||||
(<HOSTILE-VERB?>
|
||||
<COND (<VERB? THROW>
|
||||
<MOVE ,PRSO ,HERE>
|
||||
<TELL "Thrown. ">)>
|
||||
<COND (<G? ,LAIR-CNT 6>
|
||||
<TELL
|
||||
"He is unharmed. \"It is peaceful within,\" he remarks." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"The hacker retreats. \"I know karate!\" he says, somewhat
|
||||
unconvincingly." CR>)>)>>
|
||||
|
||||
<ROUTINE AFTER-HACKER-EATS ()
|
||||
<COND (<NOT <IN? ,CARTON ,HACKER>>
|
||||
<TELL
|
||||
" \"I could really do with some Chinese food, though.\"">)>
|
||||
<CRLF>>
|
||||
|
||||
<GLOBAL HACKER-TRADE? <>>
|
||||
|
||||
<ROUTINE HACKER-LOANS-KEY ()
|
||||
<SETG HACKER-TRADE? <>>
|
||||
<MOVE ,MASTER-KEY ,PLAYER>
|
||||
<SCORE-OBJECT ,MASTER-KEY>
|
||||
<TELL
|
||||
"\"Well, I suppose I could loan you " THE ,MASTER-KEY " for a while. Just
|
||||
don't get into trouble, okay? I'll find you later, when I'm done with all this,
|
||||
and get it back.\" He hands you the key." CR>>
|
||||
|
||||
<ROUTINE I-FOOD-HINT ()
|
||||
<COND (<OR <NOT ,FOOD-COUNT>
|
||||
<NOT <HERE? <LOC ,HACKER>>>>
|
||||
<RFALSE>)
|
||||
(ELSE
|
||||
<COND (<G? <SETG FOOD-COUNT <+ ,FOOD-COUNT 1>>
|
||||
<GET ,FOOD-HINTS 0>>
|
||||
<SETG FOOD-COUNT <>>
|
||||
<RFALSE>)
|
||||
(ELSE
|
||||
<QUEUE I-FOOD-HINT 2>
|
||||
<TELL CR
|
||||
"The hacker turns to you and says, \"" <GET ,FOOD-HINTS ,FOOD-COUNT>
|
||||
"\"" CR>)>)>>
|
||||
|
||||
<GLOBAL FOOD-COUNT:FIX 1>
|
||||
|
||||
<GLOBAL FOOD-HINTS
|
||||
<LTABLE (PURE)
|
||||
"I could stand a little snack, though."
|
||||
"I don't know where I can get something to eat, what with all the snow."
|
||||
"I'd hate to leave, with the machines so empty. On the other hand, I'm
|
||||
seriously starving."
|
||||
"Why don't you see if you can cons up some food? Then I might be able
|
||||
to do something for you.">>
|
||||
|
||||
<OBJECT KEYRING
|
||||
(IN HACKER)
|
||||
(DESC "keyring")
|
||||
(SYNONYM KEYRING RING KEYCHAIN)
|
||||
(ADJECTIVE YOUR KEY)
|
||||
(FLAGS NDESCBIT TAKEBIT CONTBIT SURFACEBIT OPENBIT)
|
||||
(CONTFCN HACKER-F)
|
||||
(ACTION KEYRING-F)>
|
||||
|
||||
<ROUTINE KEYRING-F ()
|
||||
<FSET ,KEYRING ,SEARCHBIT>
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"Hanging from the hacker's belt is a watchman's keyring. The large and almost
|
||||
full ring is connected by an extensible chain to a reel attached to the
|
||||
hacker's belt. It is difficult to lose such a keyring. ">
|
||||
<AMONG-THE-KEYS>)
|
||||
(<VERB? TAKE>
|
||||
<TELL ,HACKER-PREVENTS "Chomp!\" he says." CR>)
|
||||
(<VERB? LOOK-INSIDE>
|
||||
<AMONG-THE-KEYS>)>>
|
||||
|
||||
<GLOBAL HACKER-PREVENTS "The hacker prevents you. \"">
|
||||
|
||||
<ROUTINE AMONG-THE-KEYS ()
|
||||
<TELL
|
||||
"There are multitudinous keys hanging on the keyring. Among them are ">
|
||||
<DESCRIBE-REST ,KEYRING>
|
||||
<TELL ,PERIOD>>
|
||||
|
||||
<OBJECT KEY-1
|
||||
(IN KEYRING)
|
||||
(DESC "red aluminum Yale key")
|
||||
(SYNONYM KEY KEYS)
|
||||
(ADJECTIVE YOUR RED ALUMINUM METAL YALE)
|
||||
(FLAGS TAKEBIT)
|
||||
(GENERIC GENERIC-KEY-F)>
|
||||
|
||||
<OBJECT KEY-2
|
||||
(IN KEYRING)
|
||||
(DESC "green aluminum Yale key")
|
||||
(SYNONYM KEY KEYS)
|
||||
(ADJECTIVE YOUR GREEN ALUMINUM METAL YALE)
|
||||
(FLAGS TAKEBIT)
|
||||
(GENERIC GENERIC-KEY-F)>
|
||||
|
||||
<OBJECT KEY-3
|
||||
(IN KEYRING)
|
||||
(DESC "green brass Yale key")
|
||||
(SYNONYM KEY KEYS)
|
||||
(ADJECTIVE YOUR GREEN BRASS METAL YALE)
|
||||
(FLAGS TAKEBIT)
|
||||
(GENERIC GENERIC-KEY-F)>
|
||||
|
||||
<OBJECT KEY-4
|
||||
(IN KEYRING)
|
||||
(DESC "green aluminum Medeco key")
|
||||
(SYNONYM KEY KEYS)
|
||||
(ADJECTIVE YOUR GREEN ALUMINUM METAL MEDECO)
|
||||
(FLAGS TAKEBIT)
|
||||
(GENERIC GENERIC-KEY-F)>
|
||||
|
||||
<ROUTINE GENERIC-KEY-F ()
|
||||
<COND (<ACCESSIBLE? ,KEYRING>
|
||||
,KEYRING)>>
|
||||
|
||||
<OBJECT MASTER-KEY
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "master key")
|
||||
(SYNONYM KEY)
|
||||
(ADJECTIVE MASTER)
|
||||
(FLAGS TAKEBIT TRYTAKEBIT)
|
||||
(VALUE 5)
|
||||
(ACTION MASTER-KEY-F)
|
||||
(GENERIC GENERIC-KEY-F)>
|
||||
|
||||
<ROUTINE MASTER-KEY-F ()
|
||||
<COND (<AND <VERB? EXAMINE>
|
||||
<NOT <IN? ,MASTER-KEY ,GLOBAL-OBJECTS>>>
|
||||
<TELL
|
||||
"The key appears to be a master key. There is no indication of what locks
|
||||
it might fit, however." CR>)
|
||||
(<AND <VERB? TAKE>
|
||||
<IN? ,MASTER-KEY ,GLOBAL-OBJECTS>>
|
||||
<TELL
|
||||
"You haven't seen any master key." CR>)>>
|
||||
|
||||
<OBJECT CARTON
|
||||
(IN REFRIGERATOR)
|
||||
(DESC "cardboard carton")
|
||||
(SYNONYM CARTON SYMBOL)
|
||||
(ADJECTIVE CARDBOARD STRANGE SCRAWLED INCOMPREHENSIBLE)
|
||||
(FLAGS READBIT TRYTAKEBIT TAKEBIT SEARCHBIT FOODBIT CONTBIT OPENABLE)
|
||||
(CAPACITY 10)
|
||||
(GENERIC GENERIC-SYMBOL-F)
|
||||
(ACTION CARTON-F)>
|
||||
|
||||
<ROUTINE CARTON-F ()
|
||||
<COND (<OR <EQUAL? ,W?SYMBOL <GET ,P-NAMW 0>>
|
||||
<EQUAL? ,W?SYMBOL <GET ,P-NAMW 1>>>
|
||||
<CARTON-SYMBOL-F>)
|
||||
(<VERB? EXAMINE>
|
||||
<TELL
|
||||
"This is a cardboard carton with an incomprehensible symbol scrawled on
|
||||
the top." CR>)
|
||||
(<VERB? READ>
|
||||
<CARTON-SYMBOL-F>)
|
||||
(<AND <VERB? SMELL>
|
||||
<IN? ,CHINESE-FOOD ,CARTON>>
|
||||
<NEW-PRSO ,CHINESE-FOOD>
|
||||
<RTRUE>)
|
||||
(<AND <VERB? RUB>
|
||||
<IN? ,CHINESE-FOOD ,CARTON>
|
||||
<G? <GETP ,CHINESE-FOOD ,P?HEAT> 8>>
|
||||
<TELL
|
||||
"The carton feels warm." CR>)
|
||||
(<VERB? EAT>
|
||||
<TELL
|
||||
"You might find the contents more agreeable than the carton itself." CR>)>>
|
||||
|
||||
<ROUTINE CARTON-SYMBOL-F ()
|
||||
<COND (<VERB? EXAMINE READ>
|
||||
<TELL
|
||||
S "It doesn't look like ""Chinese, English, or any other language you know. ">
|
||||
<TELL-SYMBOL ,CARTON>
|
||||
<CRLF>)>>
|
||||
|
||||
<OBJECT CHINESE-FOOD
|
||||
(IN CARTON)
|
||||
(DESC "Chinese food")
|
||||
(SYNONYM FOOD SHRIMP)
|
||||
(ADJECTIVE CHINESE SZECHUAN)
|
||||
(FLAGS NOABIT TAKEBIT TRYTAKEBIT FOODBIT)
|
||||
;(VALUE 5)
|
||||
(HEAT 0)
|
||||
(ACTION CHINESE-FOOD-F)>
|
||||
|
||||
<ROUTINE HEAT (OBJ "AUX" (H <GETP .OBJ ,P?HEAT>))
|
||||
<COND (<G=? .H 20> "radioactive")
|
||||
(<G=? .H 16> "volcanic")
|
||||
(<G=? .H 12> "hot")
|
||||
(<G=? .H 8> "warm")
|
||||
(<G=? .H 4> "lukewarm")
|
||||
(ELSE "cold")>>
|
||||
|
||||
<ROUTINE CHINESE-FOOD-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"This is a carton of " <HEAT ,CHINESE-FOOD> " Szechuan shrimp. Lovely red peppers
|
||||
poke out of the sauce." CR>)
|
||||
(<AND <VERB? TAKE>
|
||||
<NOT ,PRSI>>
|
||||
<COND (<IN? ,PRSO ,CARTON>
|
||||
<TELL
|
||||
"If you take it out, it will spill
|
||||
all over you. Why not take the carton instead?" CR>)>)
|
||||
(<AND <P? PUT ,CHINESE-FOOD>
|
||||
<IN? ,CHINESE-FOOD ,CARTON>>
|
||||
<NEW-PRSO ,CARTON>
|
||||
<RTRUE>)
|
||||
(<VERB? EAT TASTE>
|
||||
<TELL
|
||||
"It's very (chemically) hot, spicy, and " <HEAT ,CHINESE-FOOD> ".">
|
||||
<COND (<VERB? EAT>
|
||||
<REMOVE ,CHINESE-FOOD>
|
||||
<TELL
|
||||
" You immediately want to drink something to wash it down.">)>
|
||||
<CRLF>)>>
|
||||
|
||||
<OBJECT COKE
|
||||
(IN REFRIGERATOR)
|
||||
(DESC "two liter bottle of Classic Coke")
|
||||
(SYNONYM COKE COCA-COLA CAP)
|
||||
(ADJECTIVE TWO LITER BOTTLE CLASSIC)
|
||||
(FLAGS TAKEBIT FOODBIT OPENABLE)
|
||||
(SIZE 5)
|
||||
(HEAT 0)
|
||||
(ACTION COKE-F)>
|
||||
|
||||
<ROUTINE COKE-F ("AUX" SIZ TIRE)
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"This is a">
|
||||
<SET SIZ <GETP ,COKE ,P?SIZE>>
|
||||
<COND (<EQUAL? .SIZ 1> <TELL "n empty">)
|
||||
(<EQUAL? .SIZ 2> <TELL " nearly empty">)
|
||||
(<EQUAL? .SIZ 3> <TELL " partly full">)
|
||||
(<EQUAL? .SIZ 4> <TELL " partly empty">)
|
||||
(<EQUAL? .SIZ 5> <TELL " full">)>
|
||||
<TELL
|
||||
" two-liter bottle of ">
|
||||
<COND (<G? .SIZ 1> <TELL <HEAT ,COKE> " ">)>
|
||||
<TELL "Classic Coke." CR>)
|
||||
(<VERB? TASTE>
|
||||
<TELL "Tastes like the real thing." CR>)
|
||||
(<VERB? DRINK>
|
||||
<COND (<G? <SET SIZ <GETP ,COKE ,P?SIZE>> 1>
|
||||
<PUTP ,COKE ,P?SIZE <SET SIZ <- .SIZ 1>>>
|
||||
<COND (<SET TIRE <QUEUED? I-TIRED>>
|
||||
<COND (<G? ,AWAKE -1>
|
||||
<SETG AWAKE <- ,AWAKE 1>>
|
||||
<SETG FUMBLE-NUMBER <+ ,FUMBLE-NUMBER 1>>
|
||||
<SETG LOAD-ALLOWED <+ ,LOAD-ALLOWED 10>>)>
|
||||
<SET SIZ <+ <GET .TIRE ,C-TICK> 200>>
|
||||
<PUT .TIRE ,C-TICK .SIZ>)>
|
||||
<TELL
|
||||
"Delicious! Contains caffeine, one of the four basic food groups. Too
|
||||
bad they make it with fructose these days, instead of sucrose. You feel
|
||||
much more alert and awake now." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"The bottle is empty." CR>)>)
|
||||
(<VERB? OPEN CLOSE>
|
||||
<TELL
|
||||
"You fiddle with the cap for a while. What fun! Much better than working
|
||||
on your paper." CR>)
|
||||
(<VERB? LOOK-INSIDE>
|
||||
<TELL
|
||||
,IT-LOOKS-LIKE "the inside of a Coke bottle." CR>)
|
||||
(<AND <VERB? SHAKE>
|
||||
<G? <SET SIZ <GETP ,COKE ,P?SIZE>> 1>>
|
||||
<TELL
|
||||
"The Coke fizzes up." CR>)
|
||||
(<P? POUR COKE>
|
||||
<COND (<EQUAL? <SET SIZ <GETP ,COKE ,P?SIZE>> 1>
|
||||
<TELL
|
||||
"There is none left in the bottle." CR>)
|
||||
(ELSE
|
||||
<PUTP ,COKE ,P?SIZE 1>
|
||||
<TELL
|
||||
"You pour the Coke on ">
|
||||
<COND (,PRSI <TELL THE ,PRSI>)
|
||||
(ELSE <TELL "the ground">)>
|
||||
<TELL ", wasting it." CR>)>)>>
|
||||
|
||||
<OBJECT SNACK
|
||||
(IN KITCHEN-COUNTER)
|
||||
(DESC "package of Funny Bones")
|
||||
(SYNONYM PACKAGE FOOD BONES WRAPPER)
|
||||
(ADJECTIVE FUNNY SNACK JUNK)
|
||||
(FLAGS TAKEBIT FOODBIT READBIT OPENABLE)
|
||||
(HEAT 0)
|
||||
(TEXT "\"Funny Bones\"")
|
||||
(ACTION SNACK-F)>
|
||||
|
||||
<ROUTINE SNACK-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"This is a">
|
||||
<COND (<FSET? ,SNACK ,RMUNGBIT>
|
||||
<TELL "n empty">)
|
||||
(<FSET? ,SNACK ,OPENBIT>
|
||||
<TELL "n open">
|
||||
<COND (<GETP ,SNACK ,P?HEAT>
|
||||
<TELL ", " <HEAT ,SNACK>>)>)>
|
||||
<TELL
|
||||
" " 'SNACK ", a snack food made with peanut butter
|
||||
and chocolate cake." CR>)
|
||||
(<VERB? OPEN>
|
||||
<COND (<NOT <FSET? ,SNACK ,OPENBIT>>
|
||||
<FSET ,SNACK ,OPENBIT>
|
||||
<TELL
|
||||
"You open the package, revealing yummy junk food inside." CR>)>)
|
||||
(<VERB? EAT>
|
||||
<COND (<FSET? ,SNACK ,RMUNGBIT>
|
||||
<TELL
|
||||
"You already did. " S "There's nothing " "left but the wrapper." CR>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"You ">
|
||||
<COND (<NOT <FSET? ,SNACK ,OPENBIT>>
|
||||
<FSET ,SNACK ,OPENBIT>
|
||||
<TELL "tear open the package and ">)>
|
||||
<COND (<G? <GETP ,SNACK ,P?HEAT> 12>
|
||||
<TELL
|
||||
"discover that they are too hot to eat." CR>)
|
||||
(ELSE
|
||||
<FSET ,SNACK ,RMUNGBIT>
|
||||
<TELL
|
||||
"devour the delicious food-like substance." CR>)>)>)>>
|
||||
|
||||
<OBJECT MICROWAVE
|
||||
(IN KITCHEN)
|
||||
(DESC "microwave oven")
|
||||
(SYNONYM OVEN)
|
||||
(ADJECTIVE MICROWAVE OVEN)
|
||||
(FLAGS NDESCBIT SEARCHBIT CONTBIT TRANSBIT OPENABLE)
|
||||
(CAPACITY 30)
|
||||
(ACTION MICROWAVE-F)>
|
||||
|
||||
<ROUTINE MICROWAVE-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"The microwave oven hangs over the kitchen counter. It
|
||||
has more complicated controls than your pc. There is an LED
|
||||
readout above the controls. The microwave is ">
|
||||
<COND (<QUEUED? I-MICROWAVE>
|
||||
<TELL "on." CR>)
|
||||
(ELSE
|
||||
<TELL "off and it's ">
|
||||
<OPEN-CLOSED ,MICROWAVE>)>)
|
||||
(<VERB? LAMP-ON>
|
||||
<PUT ,P-ADJW 0 ,W?START>
|
||||
<PERFORM ,V?PUSH ,CONTROLS>
|
||||
<RTRUE>)
|
||||
(<VERB? LAMP-OFF>
|
||||
<PUT ,P-ADJW 0 ,W?STOP>
|
||||
<PERFORM ,V?PUSH ,CONTROLS>
|
||||
<RTRUE>)
|
||||
(<VERB? UNPLUG>
|
||||
<CANT-GET-TO-PLUG>)
|
||||
(<VERB? OPEN>
|
||||
<COND (<NOT <FSET? ,MICROWAVE ,OPENBIT>>
|
||||
<FSET ,MICROWAVE ,OPENBIT>
|
||||
<TELL CTHE ,MICROWAVE>
|
||||
<COND (<QUEUED? I-MICROWAVE>
|
||||
<DEQUEUE I-MICROWAVE>
|
||||
<TELL " shuts off, and">)>
|
||||
<TELL " is now open." CR>)>)
|
||||
(<VERB? CLOSE>
|
||||
<CLOSE-A-DOOR>)>>
|
||||
|
||||
<OBJECT READOUT
|
||||
(IN KITCHEN)
|
||||
(DESC "display")
|
||||
(SYNONYM READOUT DISPLAY)
|
||||
(ADJECTIVE LED)
|
||||
(FLAGS NDESCBIT)
|
||||
(ACTION READOUT-F)>
|
||||
|
||||
<ROUTINE READOUT-F ("AUX" SEC)
|
||||
<COND (<VERB? EXAMINE READ>
|
||||
<TELL
|
||||
"The display is currently displaying ">
|
||||
<COND (<ZERO? ,MICROWAVE-TIMER>
|
||||
<TELL "the current time">)
|
||||
(ELSE
|
||||
<TELL N </ ,MICROWAVE-TIMER 60> ":">
|
||||
<COND (<L? <SET SEC <MOD ,MICROWAVE-TIMER 60>> 10>
|
||||
<TELL "0">)>
|
||||
<TELL N .SEC>)>
|
||||
<TELL " and the word \""
|
||||
<GET ,MICROWAVE-TEMPS ,MICROWAVE-TEMP>
|
||||
".\"" CR>)>>
|
||||
|
||||
<GLOBAL MICROWAVE-TIMER 0>
|
||||
<GLOBAL MICROWAVE-TBL <TABLE 0 0 0 0>>
|
||||
<GLOBAL MICROWAVE-TEMP 0>
|
||||
<GLOBAL MICROWAVE-TEMPS
|
||||
<TABLE (PURE) "off" "warm" "low" "medium" "high">>
|
||||
|
||||
<OBJECT CONTROLS
|
||||
(IN KITCHEN)
|
||||
(DESC "microwave controls")
|
||||
(SYNONYM CONTROL BUTTON TIMER)
|
||||
(ADJECTIVE INTNUM WM LO MED HIGH START STOP CLEAR)
|
||||
(FLAGS NDESCBIT NOABIT)
|
||||
(ACTION CONTROLS-F)>
|
||||
|
||||
<ADJ-SYNONYM HIGH HI>
|
||||
|
||||
<ROUTINE CONTROLS-F ("AUX" ADJ N)
|
||||
<COND (<VERB? EXAMINE READ>
|
||||
<TELL
|
||||
"There are controls labelled 0 to 9, WM, LO, MED, HI, START, CLEAR, and
|
||||
STOP. ">
|
||||
<TELL-TIMER>)
|
||||
(<P? TURN * ,INTNUM>
|
||||
<CLEAR-MICROWAVE-TBL>
|
||||
<SETG MICROWAVE-TIMER ,P-NUMBER>
|
||||
<COND (<G? ,MICROWAVE-TIMER 3600>
|
||||
<TELL
|
||||
,YOU-CANT "set it for that long a time." CR>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<TELL-TIMER>)>)
|
||||
(<VERB? RUB PUSH TYPE ENTER>
|
||||
<COND (<NOT <SET ADJ <GET ,P-ADJW 0>>>)
|
||||
(<EQUAL? .ADJ ,W?INTNUM>
|
||||
<COND (<G? ,P-NUMBER 9>
|
||||
<COND (,P-TIME?
|
||||
<TELL
|
||||
"Why don't you try setting the timer to that?" CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
S "There's no number " "\"" N ,P-NUMBER "\" on the control panel!" CR>)>)
|
||||
(ELSE
|
||||
<PUT ,MICROWAVE-TBL 3 <GET ,MICROWAVE-TBL 2>>
|
||||
<PUT ,MICROWAVE-TBL 2 <GET ,MICROWAVE-TBL 1>>
|
||||
<PUT ,MICROWAVE-TBL 1 <GET ,MICROWAVE-TBL 0>>
|
||||
<PUT ,MICROWAVE-TBL 0 ,P-NUMBER>
|
||||
<SETG MICROWAVE-TIMER
|
||||
<+ <GET ,MICROWAVE-TBL 0>
|
||||
<* <GET ,MICROWAVE-TBL 1> 10>
|
||||
<* <GET ,MICROWAVE-TBL 2> 60>
|
||||
<* <GET ,MICROWAVE-TBL 3> 600>>>
|
||||
<TELL-TIMER>)>)
|
||||
(<EQUAL? .ADJ ,W?START>
|
||||
<COND (<QUEUED? I-MICROWAVE>
|
||||
<TELL
|
||||
"It's already started." CR>)
|
||||
(<OR <FSET? ,MICROWAVE ,OPENBIT>
|
||||
<ZERO? ,MICROWAVE-TIMER>>
|
||||
<TELL "Nothing happens, as there's ">
|
||||
<COND (<NOT <ZERO? ,MICROWAVE-TIMER>>
|
||||
<TELL
|
||||
"a safety interlock engaged when the door is open." CR>)
|
||||
(<ZERO? ,MICROWAVE-TIMER>
|
||||
<TELL
|
||||
"no time set on it yet." CR>)>)
|
||||
(ELSE
|
||||
<COND (<ZERO? ,MICROWAVE-TEMP>
|
||||
<SETG MICROWAVE-TEMP 4>)>
|
||||
<CLEAR-MICROWAVE-TBL>
|
||||
<QUEUE I-MICROWAVE -1>
|
||||
<TELL
|
||||
"The microwave starts up. The timer begins counting down." CR>)>)
|
||||
(<EQUAL? .ADJ ,W?STOP>
|
||||
<COND (<QUEUED? I-MICROWAVE>
|
||||
<CLEAR-MICROWAVE-TBL>
|
||||
<DEQUEUE I-MICROWAVE>
|
||||
;<HEAT-CONTENTS ,MICROWAVE>
|
||||
<TELL ,MICROWAVE-STOPS>
|
||||
<TELL-HEAT 0>)
|
||||
(ELSE
|
||||
<ITS-ALREADY-X "off">)>)
|
||||
(<EQUAL? .ADJ ,W?CLEAR>
|
||||
<COND (<QUEUED? I-MICROWAVE>
|
||||
<TELL ,NOTHING-HAPPENS>)
|
||||
(ELSE
|
||||
<CLEAR-MICROWAVE-TBL>
|
||||
<SETG MICROWAVE-TIMER 0>
|
||||
<TELL
|
||||
"The timer clears to zero." CR>)>)
|
||||
(<EQUAL? .ADJ ,W?WM ,W?LO ,W?MED ,W?HIGH ,W?HI>
|
||||
<COND (<QUEUED? I-MICROWAVE>
|
||||
<TELL ,NOTHING-HAPPENS>)
|
||||
(<EQUAL? .ADJ ,W?WM> <TELL-HEAT 1>)
|
||||
(<EQUAL? .ADJ ,W?LO> <TELL-HEAT 2>)
|
||||
(<EQUAL? .ADJ ,W?MED> <TELL-HEAT 3>)
|
||||
(ELSE <TELL-HEAT 4>)>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"Which button?" CR>)>)>>
|
||||
|
||||
<ROUTINE CLEAR-MICROWAVE-TBL ()
|
||||
<PUT ,MICROWAVE-TBL 0 0>
|
||||
<PUT ,MICROWAVE-TBL 1 0>
|
||||
<PUT ,MICROWAVE-TBL 2 0>
|
||||
<PUT ,MICROWAVE-TBL 3 0>>
|
||||
|
||||
<GLOBAL HEAT-TABLE
|
||||
<LTABLE SMOOTH-STONE 0 DEAD-RAT 0 HAND 0
|
||||
CHINESE-FOOD 0 COKE 0 SNACK 0>>
|
||||
|
||||
<ROUTINE I-COOL ("AUX" (CNT 0) (L <GET ,HEAT-TABLE 0>) OBJ H (Q? <>)
|
||||
MICROWAVE-RUNNING?)
|
||||
<SET MICROWAVE-RUNNING? <QUEUED? I-MICROWAVE>>
|
||||
<REPEAT ()
|
||||
<COND (<G? <SET CNT <+ .CNT 1>> .L>
|
||||
<COND (.Q?
|
||||
<QUEUE I-COOL 2>)>
|
||||
<RETURN>)>
|
||||
<SET OBJ <GET ,HEAT-TABLE .CNT>>
|
||||
<SET CNT <+ .CNT 1>>
|
||||
<COND (<ZERO? <GET ,HEAT-TABLE .CNT>>
|
||||
<SET Q? T>
|
||||
<PUT ,HEAT-TABLE .CNT ,MOVES>)>
|
||||
<COND (<AND <IN? .OBJ ,MICROWAVE>
|
||||
.MICROWAVE-RUNNING?>
|
||||
<SET Q? T>)
|
||||
(<NOT <ZERO? <SET H <GETP .OBJ ,P?HEAT>>>>
|
||||
<COND (<G? <- ,MOVES <GET ,HEAT-TABLE .CNT>> 3>
|
||||
<PUT ,HEAT-TABLE .CNT ,MOVES>
|
||||
<PUTP .OBJ ,P?HEAT <SET H <- .H 1>>>)>
|
||||
<COND (<NOT <ZERO? .H>>
|
||||
<SET Q? T>)>)>>>
|
||||
|
||||
<ROUTINE HEAT-CONTENTS (WHAT TIM "AUX" H)
|
||||
<MAP-CONTENTS (M .WHAT)
|
||||
<COND (<GETPT .M ,P?HEAT>
|
||||
<QUEUE I-COOL 2 T>
|
||||
<SET H <+ <GETP .M ,P?HEAT> ,MICROWAVE-TEMP>>
|
||||
<COND (<L? .TIM 0>
|
||||
<SET H
|
||||
<+ .H
|
||||
</ .TIM
|
||||
</ 60 ,MICROWAVE-TEMP>>>>)>
|
||||
<PUTP .M ,P?HEAT .H>
|
||||
<COND (<AND <EQUAL? .M ,HAND>
|
||||
<FSET? .M ,PERSON>>
|
||||
<SETG ANIMATION-COUNT 0>
|
||||
<FCLEAR .M ,PERSON>
|
||||
<COND (<HERE? ,KITCHEN>
|
||||
<TELL CR
|
||||
"The hand scrabbles frantically around inside " THE <LOC ,HAND> ", and
|
||||
then at last lies still." CR>)>)
|
||||
(<AND <EQUAL? .M ,CHINESE-FOOD>
|
||||
<G? .H 20>>
|
||||
<FSET .M ,RMUNGBIT>)>)
|
||||
(ELSE
|
||||
<HEAT-CONTENTS .M .TIM>)>>>
|
||||
|
||||
;<GLOBAL FOOD-SCORE 5>
|
||||
|
||||
<ROUTINE I-MICROWAVE ()
|
||||
<SETG MICROWAVE-TIMER <- ,MICROWAVE-TIMER 60>>
|
||||
<HEAT-CONTENTS ,MICROWAVE ,MICROWAVE-TIMER>
|
||||
<COND (<L=? ,MICROWAVE-TIMER 0>
|
||||
<SETG MICROWAVE-TIMER 0>
|
||||
<DEQUEUE I-MICROWAVE>)>
|
||||
<COND (<HERE? ,KITCHEN>
|
||||
<CRLF>
|
||||
<COND (<ZERO? ,MICROWAVE-TIMER>
|
||||
<TELL ,MICROWAVE-STOPS>)>
|
||||
<TELL-TIMER>)>>
|
||||
|
||||
<GLOBAL MICROWAVE-STOPS "The microwave stops. ">
|
||||
|
||||
<ROUTINE TELL-TIMER ()
|
||||
<TELL
|
||||
"The timer display now reads " N </ ,MICROWAVE-TIMER 60> ":">
|
||||
<COND (<L? <MOD ,MICROWAVE-TIMER 60> 10>
|
||||
<TELL "0">)>
|
||||
<TELL N <MOD ,MICROWAVE-TIMER 60> ,PERIOD>>
|
||||
|
||||
<ROUTINE TELL-HEAT (N)
|
||||
<SETG MICROWAVE-TEMP .N>
|
||||
<TELL
|
||||
"The bottom of the display now reads \"" <GET ,MICROWAVE-TEMPS .N> ".\"" CR>>
|
||||
|
||||
<OBJECT KITCHEN-COUNTER
|
||||
(IN KITCHEN)
|
||||
(DESC "kitchen counter")
|
||||
(SYNONYM COUNTER)
|
||||
(ADJECTIVE KITCHEN)
|
||||
(FLAGS NDESCBIT OPENBIT CONTBIT SEARCHBIT SURFACEBIT)
|
||||
(CAPACITY 200)>
|
||||
|
||||
<OBJECT REFRIGERATOR
|
||||
(IN KITCHEN)
|
||||
(DESC "refrigerator")
|
||||
(SYNONYM REFRIGERATOR FRIDGE SIGN)
|
||||
(ADJECTIVE REFRIGERATOR FRIDGE)
|
||||
(FLAGS NDESCBIT SEARCHBIT CONTBIT OPENABLE READBIT)
|
||||
(CAPACITY 200)
|
||||
(ACTION REFRIGERATOR-F)>
|
||||
|
||||
<ROUTINE REFRIGERATOR-F ()
|
||||
<COND (<VERB? EXAMINE READ>
|
||||
<COND (<EQUAL? <GET ,P-NAMW 0> ,W?SIGN>
|
||||
<TELL "\"Everything in this fridge must have a
|
||||
name and date on it!\" (The sign has neither.)" CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"This is a medium-sized refrigerator whose door is ">
|
||||
<COND (<FSET? ,PRSO ,OPENBIT>
|
||||
<TELL "open">)
|
||||
(ELSE <TELL "closed">)>
|
||||
<TELL ". There is a sign on the front." CR>)>)
|
||||
(<VERB? LOOK-INSIDE>
|
||||
<COND (<FSET? ,REFRIGERATOR ,OPENBIT>
|
||||
<TELL
|
||||
"The interior of the refrigerator is appalling. There are soggy
|
||||
lunch bags, ancient sandwiches and other less identifiable items">
|
||||
<COND (<FIRST? ,REFRIGERATOR>
|
||||
<TELL
|
||||
". More appetizingly, you see ">
|
||||
<DESCRIBE-REST ,REFRIGERATOR>)>
|
||||
<TELL ,PERIOD>)
|
||||
(ELSE
|
||||
<TELL
|
||||
,YOU-HAVE-TO "open it to look in it." CR>)>)
|
||||
(<VERB? UNPLUG>
|
||||
<CANT-GET-TO-PLUG>)>>
|
||||
|
||||
<ROUTINE CANT-GET-TO-PLUG ()
|
||||
<TELL ,YOU-CANT "get to the plug." CR>>
|
||||
|
||||
<ROOM KITCHEN
|
||||
(IN ROOMS)
|
||||
(DESC "Kitchen")
|
||||
(LDESC
|
||||
"This is a filthy kitchen. The exit is to the east. On the wall near a
|
||||
counter are a refrigerator and a microwave.")
|
||||
(EAST TO CS-2ND)
|
||||
(FLAGS RLANDBIT ONBIT)
|
||||
;(ACTION KITCHEN-F)>
|
||||
|
||||
;<ROUTINE KITCHEN-F (RARG)
|
||||
<COND (<RARG? LOOK>
|
||||
<TELL
|
||||
CR>)>>
|
|
@ -0,0 +1,27 @@
|
|||
"INTERRUPTS for
|
||||
The Lurking Horror
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
;"GENERICS"
|
||||
|
||||
<GLOBAL LOAD-MAX 150>
|
||||
<GLOBAL LOAD-ALLOWED 150>
|
||||
|
||||
<GLOBAL AWAKE -1>
|
||||
|
||||
<ROUTINE I-TIRED ("AUX" (FORG <>))
|
||||
<QUEUE I-TIRED 25>
|
||||
<COND (<G? ,LOAD-ALLOWED 10>
|
||||
<SETG LOAD-ALLOWED <- ,LOAD-ALLOWED 10>>)>
|
||||
<COND (<G? ,FUMBLE-NUMBER 1>
|
||||
<SETG FUMBLE-NUMBER <- ,FUMBLE-NUMBER 1>>)>
|
||||
<SETG AWAKE <+ ,AWAKE 1>>
|
||||
<CRLF>
|
||||
<COND (<G? ,AWAKE 8>
|
||||
<TELL
|
||||
"You are so exhausted you can't stay awake any longer." CR>
|
||||
<CRLF>
|
||||
<V-SLEEP T>
|
||||
<RFATAL>)
|
||||
(T
|
||||
<TELL "You are " <GET ,TIRED-TELL ,AWAKE> ,PERIOD>)>>
|
|
@ -0,0 +1,917 @@
|
|||
"MISC for
|
||||
The Lurking Horror
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<DEFINE DEBUG-CODE ('X "OPTIONAL" ('Y T))
|
||||
<COND (,ZDEBUGGING? .X)(ELSE .Y)>>
|
||||
|
||||
;"tell macro and friends"
|
||||
|
||||
<TELL-TOKENS (CRLF CR) <CRLF>
|
||||
(NUM N) * <PRINTN .X>
|
||||
(CHAR CHR C) * <PRINTC .X>
|
||||
S *:STRING <PRINT .X>
|
||||
D ,PRSO <DPRINT-PRSO>
|
||||
D ,PRSI <DPRINT-PRSI>
|
||||
D * <DPRINT .X>
|
||||
CD ,PRSO <CDPRINT-PRSO>
|
||||
CD ,PRSI <CDPRINT-PRSI>
|
||||
CD * <CDPRINT .X>
|
||||
THE ,PRSO <THE-PRINT-PRSO>
|
||||
THE ,PRSI <THE-PRINT-PRSI>
|
||||
THE * <THE-PRINT .X>
|
||||
CTHE ,PRSO <CTHE-PRINT-PRSO>
|
||||
CTHE ,PRSI <CTHE-PRINT-PRSI>
|
||||
CTHE * <CTHE-PRINT .X>
|
||||
(A AN) ,PRSO <PRINTA-PRSO>
|
||||
(A AN) ,PRSI <PRINTA-PRSI>
|
||||
(A AN) * <PRINTA .X>>
|
||||
|
||||
<ROUTINE CTHE-PRINT-PRSO ()
|
||||
<THE-PRINT ,PRSO T>>
|
||||
|
||||
<ROUTINE CTHE-PRINT-PRSI ()
|
||||
<THE-PRINT ,PRSI T>>
|
||||
|
||||
<ROUTINE CTHE-PRINT (O)
|
||||
<THE-PRINT .O T>>
|
||||
|
||||
<ROUTINE THE-PRINT-PRSO ()
|
||||
<THE-PRINT ,PRSO>>
|
||||
|
||||
<ROUTINE THE-PRINT-PRSI ()
|
||||
<THE-PRINT ,PRSI>>
|
||||
|
||||
<ROUTINE THE-PRINT (O "OPTIONAL" (CAP? <>))
|
||||
<DPRINT .O .CAP? <NOT <FSET? .O ,NOTHEBIT>>>>
|
||||
|
||||
<ROUTINE PRINTA-PRSO ()
|
||||
<PRINTA ,PRSO>>
|
||||
|
||||
<ROUTINE PRINTA-PRSI ()
|
||||
<PRINTA ,PRSI>>
|
||||
|
||||
<ROUTINE PRINTA (O)
|
||||
<COND (<FSET? .O ,THE> <PRINTI "the ">)
|
||||
(<NOT <FSET? .O ,NOABIT>>
|
||||
<COND (<FSET? .O ,AN> <PRINTI "an ">)
|
||||
(ELSE <PRINTI "a ">)>)>
|
||||
<IPRINT .O>>
|
||||
|
||||
;<ROUTINE CDPRINT-PRSO ()
|
||||
<DPRINT ,PRSO T>>
|
||||
|
||||
;<ROUTINE CDPRINT-PRSI ()
|
||||
<DPRINT ,PRSI T>>
|
||||
|
||||
;<ROUTINE CDPRINT (O)
|
||||
<DPRINT .O T>>
|
||||
|
||||
<ROUTINE DPRINT (O "OPTIONAL" (CAP? <>) (THE? <>) "AUX" S)
|
||||
<COND (<OR .THE? <FSET? .O ,THE>>
|
||||
<COND (.CAP? <PRINTI "The ">)
|
||||
(T <PRINTI "the ">)>)>
|
||||
<IPRINT .O>>
|
||||
|
||||
<ROUTINE IPRINT (O)
|
||||
<COND (<AND <EQUAL? .O ,PSEUDO-OBJECT>
|
||||
<NOT ,P-MERGED>
|
||||
<EQUAL? .O ,PRSO ,PRSI>>
|
||||
<THING-PRINT ,PSEUDO-PRSO ;"<EQUAL? .O ,PRSO>">)
|
||||
(<EQUAL? .O ,INTNAME>
|
||||
<PRINTB ,P-NAME>)
|
||||
(ELSE
|
||||
<PRINTD .O>)>>
|
||||
|
||||
<COND (<GASSIGNED? ZILCH>
|
||||
<DEFINE PE (F I)
|
||||
<COND (<TYPE? .I LIST>
|
||||
<FORM .F !.I>)
|
||||
(ELSE
|
||||
<FORM .F .I>)>>
|
||||
|
||||
<DEFMAC P? ('V "OPT" ('O '*) ('I '*) ('W '*) "AUX" (L ()))
|
||||
<COND (<N==? .I '*>
|
||||
<SET L (<PE PRSI? .I> !.L)>)>
|
||||
<COND (<N==? .O '*>
|
||||
<SET L (<PE PRSO? .O> !.L)>)>
|
||||
<COND (<N==? .V '*>
|
||||
<SET L (<PE VERB? .V> !.L)>)>
|
||||
<COND (<N==? .W '*>
|
||||
<SET L (<PE WINNER? .W> !.L)>)>
|
||||
<COND (<EMPTY? <REST .L>>
|
||||
<1 .L>)
|
||||
(ELSE <FORM AND !.L>)>>
|
||||
|
||||
<DEFMAC VERB? ("ARGS" ATMS)
|
||||
<MULTIFROB ',PRSA .ATMS>>
|
||||
|
||||
<DEFMAC CONTEXT? ("ARGS" ATMS)
|
||||
<MULTIFROB '.RARG .ATMS>>
|
||||
|
||||
<SETG RARG? ,CONTEXT?>
|
||||
|
||||
<DEFMAC WINNER? ("ARGS" ATMS)
|
||||
<MULTIFROB ',WINNER .ATMS>>
|
||||
|
||||
<DEFMAC PRSO? ("ARGS" ATMS)
|
||||
<MULTIFROB ',PRSO .ATMS>>
|
||||
|
||||
<DEFMAC PRSI? ("ARGS" ATMS)
|
||||
<MULTIFROB ',PRSI .ATMS>>
|
||||
|
||||
<DEFMAC HERE? ("ARGS" ATMS)
|
||||
<MULTIFROB ',HERE .ATMS>>
|
||||
|
||||
<SETG ROOM? ,HERE?>
|
||||
|
||||
<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (L ()) ATM SP)
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS>
|
||||
<RETURN!- <COND (<LENGTH? .OO 1> <ERROR .X>)
|
||||
(<LENGTH? .OO 2> <NTH .OO 2>)
|
||||
(ELSE <CHTYPE .OO FORM>)>>)>
|
||||
<REST
|
||||
<PUTREST
|
||||
.O
|
||||
<SET O
|
||||
(<REPEAT
|
||||
((LL <FORM EQUAL? .X>)
|
||||
(L <REST .LL>))
|
||||
<COND (<OR <EMPTY? .ATMS>
|
||||
<==? <LENGTH <REST .LL 2>> 3>>
|
||||
<RETURN!- .LL>)>
|
||||
<SET ATM <NTH .ATMS 1>>
|
||||
<PUTREST
|
||||
.L
|
||||
<SET L
|
||||
(<COND
|
||||
(<TYPE? .ATM ATOM>
|
||||
<SET SP <SPNAME .ATM>>
|
||||
<MAKE-GVAL
|
||||
<COND (<==? .X ',PRSA>
|
||||
<PARSE <STRING "V?" .SP>>)
|
||||
(<==? .X '.RARG>
|
||||
<COND (<AND <G? <LENGTH .SP> 2>
|
||||
<==? <1 .SP> !\M>
|
||||
<==? <2 .SP> !\->>
|
||||
.ATM)
|
||||
(ELSE
|
||||
<PARSE
|
||||
<STRING "M-" .SP>>)>)
|
||||
(ELSE .ATM)>>)
|
||||
(ELSE .ATM)>)>>
|
||||
<SET ATMS <REST .ATMS>>>)>>>>>)
|
||||
(ELSE
|
||||
<DEFINE P? (V "OPT" (O '*) (I '*) (W '*) "AUX" (L <>))
|
||||
<AND <OR <==? .W '*> <WINNER? .W>>
|
||||
<OR <==? .V '*> <VERB? .V>>
|
||||
<OR <==? .O '*> <PRSO? .O>>
|
||||
<OR <==? .I '*> <PRSI? .I>>>>
|
||||
|
||||
<DEFINE VERB? ("TUPLE" ATMS)
|
||||
<MAPF <>
|
||||
<FUNCTION (A "AUX" ATM)
|
||||
<COND (<TYPE? .A ATOM>
|
||||
<COND (<SET ATM
|
||||
<LOOKUP <STRING "V?" <SPNAME .A>>
|
||||
<MOBLIST INITIAL>>>
|
||||
<COND (<EQUAL? ,PRSA ,.ATM>
|
||||
<MAPLEAVE T>)>)
|
||||
(ELSE
|
||||
<ERROR NOT-A-VERB? .A>)>)
|
||||
(<EQUAL? ,PRSA .A>
|
||||
<MAPLEAVE T>)>>
|
||||
.ATMS>>
|
||||
<DEFINE CONTEXT? ("TUPLE" ATMS)
|
||||
<MAPF <>
|
||||
<FUNCTION (A "AUX" ATM)
|
||||
<COND (<TYPE? .A ATOM>
|
||||
<COND (<AND <G? <LENGTH <SET ATM <SPNAME .A>>> 2>
|
||||
<==? <1 .ATM> !\M>
|
||||
<==? <2 .ATM> !\->>
|
||||
<COND (<EQUAL? .RARG ,.ATM>
|
||||
<MAPLEAVE T>)>)
|
||||
(<SET ATM
|
||||
<LOOKUP <STRING "M-" <SPNAME .A>>
|
||||
<MOBLIST INITIAL>>>
|
||||
<COND (<EQUAL? .RARG ,.ATM>
|
||||
<MAPLEAVE T>)>)
|
||||
(ELSE
|
||||
<ERROR NOT-A-CONTEXT? .A>)>)
|
||||
(<EQUAL? .RARG .A>
|
||||
<MAPLEAVE T>)>>
|
||||
.ATMS>>
|
||||
<SETG RARG? ,CONTEXT?>
|
||||
<DEFINE WINNER? ("TUPLE" ATMS)
|
||||
<MULTIFROB ,WINNER .ATMS>>
|
||||
<DEFINE PRSO? ("TUPLE" ATMS)
|
||||
<MULTIFROB ,PRSO .ATMS>>
|
||||
<DEFINE PRSI? ("TUPLE" ATMS)
|
||||
<MULTIFROB ,PRSI .ATMS>>
|
||||
<DEFINE HERE? ("TUPLE" ATMS)
|
||||
<MULTIFROB HERE .ATMS>>
|
||||
<SETG ROOM? ,HERE?>
|
||||
<DEFINE MULTIFROB (X ATMS)
|
||||
<MAPF <>
|
||||
<FUNCTION (A)
|
||||
<COND (<TYPE? .A ATOM> <SET A ,.A>)>
|
||||
<COND (<EQUAL? .X .A>
|
||||
<MAPLEAVE T>)>>
|
||||
.ATMS>>)>
|
||||
|
||||
<COND (<GASSIGNED? ZILCH>
|
||||
<DEFMAC BSET ('OBJ "ARGS" BITS)
|
||||
<MULTIBITS FSET .OBJ .BITS>>
|
||||
|
||||
<DEFMAC BCLEAR ('OBJ "ARGS" BITS)
|
||||
<MULTIBITS FCLEAR .OBJ .BITS>>
|
||||
|
||||
<DEFMAC BSET? ('OBJ "ARGS" BITS)
|
||||
<MULTIBITS FSET? .OBJ .BITS>>
|
||||
|
||||
<DEFINE MULTIBITS (X OBJ ATMS
|
||||
"AUX" (OT <COND (<==? .X FSET?> <FORM OR>)
|
||||
(ELSE <FORM PROG ()>)>)
|
||||
(OO <COND (<LENGTH? .OT 1> .OT)
|
||||
(ELSE <REST .OT>)>)
|
||||
(O .OO)
|
||||
ATM)
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS>
|
||||
<RETURN!- .OT>)>
|
||||
<SET ATM <NTH .ATMS 1>>
|
||||
<SET ATMS <REST .ATMS>>
|
||||
<PUTREST .O
|
||||
<SET O
|
||||
(<FORM .X
|
||||
.OBJ
|
||||
<COND (<TYPE? .ATM FORM> .ATM)
|
||||
(ELSE <MAKE-GVAL .ATM>)>>)>>>>)
|
||||
(ELSE
|
||||
<DEFINE BSET (OBJ "TUPLE" BITS)
|
||||
<MULTIBITS ,FSET .OBJ .BITS>>
|
||||
|
||||
<DEFINE BCLEAR (OBJ "TUPLE" BITS)
|
||||
<MULTIBITS ,FCLEAR .OBJ .BITS>>
|
||||
|
||||
<DEFINE BSET? (OBJ "TUPLE" BITS)
|
||||
<MAPF <>
|
||||
<FUNCTION (A)
|
||||
<COND (<FSET? .OBJ ,.A> <MAPLEAVE T>)>>
|
||||
.BITS>>
|
||||
|
||||
<DEFINE MULTIBITS (X OBJ ATMS)
|
||||
<MAPF <>
|
||||
<FUNCTION (A)
|
||||
<APPLY!- .X .OBJ ,.A>>
|
||||
.ATMS>>)>
|
||||
|
||||
<DEFMAC RFATAL ()
|
||||
'<RETURN ,M-FATAL>>
|
||||
|
||||
<COND (<GASSIGNED? ZILCH>
|
||||
<DEFMAC PROB ('BASE?)
|
||||
<FORM NOT <FORM L? .BASE? '<RANDOM 100>>>>)
|
||||
(ELSE
|
||||
<DEFINE PROB (BASE?)
|
||||
<NOT <L? .BASE? <RANDOM 100>>>>)>
|
||||
|
||||
<ROUTINE PICK-ONE (FROB
|
||||
"AUX" (L <GET .FROB 0>) (CNT <GET .FROB 1>) RND MSG RFROB)
|
||||
<SET L <- .L 1>>
|
||||
<SET FROB <REST .FROB 2>>
|
||||
<SET RFROB <REST .FROB <* .CNT 2>>>
|
||||
<SET RND <RANDOM <- .L .CNT>>>
|
||||
<SET MSG <GET .RFROB .RND>>
|
||||
<PUT .RFROB .RND <GET .RFROB 1>>
|
||||
<PUT .RFROB 1 .MSG>
|
||||
<SET CNT <+ .CNT 1>>
|
||||
<COND (<==? .CNT .L> <SET CNT 0>)>
|
||||
<PUT .FROB 0 .CNT>
|
||||
.MSG>
|
||||
|
||||
<ROUTINE RANDOM-ELEMENT (FROB)
|
||||
<GET .FROB <RANDOM <GET .FROB 0>>>>
|
||||
|
||||
|
||||
|
||||
;"former MAIN.ZIL stuff"
|
||||
|
||||
<GLOBAL P-WON <>>
|
||||
|
||||
<CONSTANT M-FATAL 2>
|
||||
|
||||
<CONSTANT M-BEG 1>
|
||||
<CONSTANT M-END 2>
|
||||
<CONSTANT M-ENTER 3>
|
||||
<CONSTANT M-LEAVE 4>
|
||||
<CONSTANT M-LOOK 5>
|
||||
<CONSTANT M-FLASH 6>
|
||||
<CONSTANT M-OBJDESC 7>
|
||||
<CONSTANT M-CONTAINER 8>
|
||||
|
||||
<ROUTINE GO ()
|
||||
<PUT-GLOBAL ,TOMB 0 0>
|
||||
<PUT-GLOBAL ,TOMB 1 0>
|
||||
;"put interrupts on clock chain"
|
||||
<SETG CLOCK-HAND <REST ,C-TABLE ,C-TABLELEN>>
|
||||
<QUEUE I-URCHIN 10>
|
||||
<QUEUE I-TIRED 200>
|
||||
;"set up and go"
|
||||
<SETG P-HIM-OBJECT ,HACKER>
|
||||
<SETG P-IT-OBJECT ,PC>
|
||||
<SETG WINNER ,PLAYER>
|
||||
<SETG HERE ,TERMINAL-ROOM>
|
||||
<SETG LIT <LIT? ,HERE>>
|
||||
<USL>
|
||||
<TELL
|
||||
"You've waited until the last minute again. This time it's the end of
|
||||
the term, so all the TechNet terminals in the dorm are occupied.
|
||||
So, off you go to the old Comp Center. Too bad it's the worst storm of
|
||||
the winter (Murphy's Law, right?), and you practically froze to death
|
||||
slogging over here from the dorm. Not to mention jumping at every
|
||||
shadow, what with all the recent disappearances. Time to find a free
|
||||
machine, get to work, and write that twenty page paper." CR CR>
|
||||
<V-VERSION>
|
||||
<CRLF>
|
||||
<V-LOOK>
|
||||
<MAIN-LOOP>>
|
||||
|
||||
<ROUTINE MAIN-LOOP ("AUX" TRASH)
|
||||
<REPEAT ()
|
||||
<SET TRASH <MAIN-LOOP-1>>>>
|
||||
|
||||
<GLOBAL WAS-IT? <>>
|
||||
<GLOBAL WAS-HIM? <>>
|
||||
|
||||
<GLOBAL PERFORM-DEPTH 0> ;"number recursive calls to perform"
|
||||
|
||||
<ROUTINE MAIN-LOOP-1 ("AUX" ICNT OCNT NUM (CNT 0) (OBJ <>) TBL
|
||||
(V <>) (PTBL T) OBJ1 TMP ONUM)
|
||||
<COND (<SETG P-WON <PARSER>>
|
||||
<SET ICNT <GET ,P-PRSI ,P-MATCHLEN>>
|
||||
<SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>
|
||||
<SETG WAS-IT? <OBJECT-SUBSTITUTE ,IT ,P-IT-OBJECT>>
|
||||
<SETG WAS-HIM? <OBJECT-SUBSTITUTE ,HIM ,P-HIM-OBJECT>>
|
||||
<SET ONUM <BAND <GETB ,P-SYNTAX ,P-SBITS> ,P-SONUMS>>
|
||||
<SET NUM
|
||||
<COND (<OR <ZERO? .OCNT>
|
||||
<AND <ZERO? .ICNT>
|
||||
<EQUAL? .ONUM 2>>>
|
||||
0)
|
||||
(<G? .OCNT 1>
|
||||
<SET TBL ,P-PRSO>
|
||||
<COND (<ZERO? .ICNT> <SET OBJ <>>)
|
||||
(T <SET OBJ <GET ,P-PRSI 1>>)>
|
||||
.OCNT)
|
||||
(<G? .ICNT 1>
|
||||
<SET PTBL <>>
|
||||
<SET TBL ,P-PRSI>
|
||||
<SET OBJ <GET ,P-PRSO 1>>
|
||||
.ICNT)
|
||||
(T 1)>>
|
||||
<COND (<AND <NOT .OBJ> <1? .ICNT>>
|
||||
<SET OBJ <GET ,P-PRSI 1>>)>
|
||||
<SETG PERFORM-DEPTH 0>
|
||||
<COND (<EQUAL? ,PRSA ,V?WALK> <SET V <PERFORM-PRSA ,PRSO>>)
|
||||
(<ZERO? .NUM>
|
||||
<COND (<ZERO? .ONUM>
|
||||
<SET V <PERFORM-PRSA>>
|
||||
<SETG PRSO <>>)
|
||||
(<NOT ,LIT>
|
||||
<TELL ,TOO-DARK>
|
||||
<END-QUOTE>)
|
||||
(T
|
||||
<TELL "There isn't anything to ">
|
||||
<SET TMP <GET ,P-ITBL ,P-VERBN>>
|
||||
<COND (<VERB? TELL>
|
||||
<TELL "talk to">)
|
||||
(<OR ,P-OFLAG ,P-MERGED>
|
||||
<PRINTB <GET .TMP 0>>)
|
||||
(T
|
||||
<WORD-PRINT <GETB .TMP 2>
|
||||
<GETB .TMP 3>>)>
|
||||
<TELL "!" CR>
|
||||
<SET V <>>
|
||||
<END-QUOTE>)>)
|
||||
(T
|
||||
<SETG P-NOT-HERE 0>
|
||||
<SETG P-MULT <>>
|
||||
<COND (<G? .NUM 1> <SETG P-MULT 1>)>
|
||||
<SET TMP <>>
|
||||
<SET CNT 0>
|
||||
<REPEAT ()
|
||||
<COND (<G? <SET CNT <+ .CNT 1>> .NUM>
|
||||
<COND (<G? ,P-NOT-HERE 0>
|
||||
<TELL "The ">
|
||||
<COND (<NOT <EQUAL? ,P-NOT-HERE .NUM>>
|
||||
<TELL "other ">)>
|
||||
<TELL "object">
|
||||
<COND (<NOT <EQUAL? ,P-NOT-HERE 1>>
|
||||
<TELL "s">)>
|
||||
<TELL " that you mentioned ">
|
||||
<COND (<NOT <EQUAL? ,P-NOT-HERE 1>>
|
||||
<TELL "are">)
|
||||
(T <TELL "is">)>
|
||||
<TELL "n't here." CR>)
|
||||
(<NOT .TMP>
|
||||
<TELL ,REFERRING CR>)>
|
||||
<RETURN>)
|
||||
|
||||
(T ;"REFORMATTED AREA"
|
||||
<COND (.PTBL <SET OBJ1 <GET ,P-PRSO .CNT>>)
|
||||
(T <SET OBJ1 <GET ,P-PRSI .CNT>>)>
|
||||
<SETG PRSO <COND (.PTBL .OBJ1) (T .OBJ)>>
|
||||
<SETG PRSI <COND (.PTBL .OBJ) (T .OBJ1)>>
|
||||
<COND (<OR <G? .NUM 1>
|
||||
<EQUAL? <GET <GET ,P-ITBL ,P-NC1> 0> ,W?ALL>>
|
||||
<COND (<MULTIPLE-EXCEPTION? .OBJ1> <AGAIN>)
|
||||
(<VERB? COMPARE-MANY>)
|
||||
(T
|
||||
<COND (<EQUAL? .OBJ1 ,IT>
|
||||
<TELL D ,P-IT-OBJECT>)
|
||||
(ELSE
|
||||
<TELL D .OBJ1>)>
|
||||
<TELL ": ">)>)>
|
||||
<SET TMP T>
|
||||
<SETG PSEUDO-PRSO <COND (<PRSO? ,PSEUDO-OBJECT>)>>
|
||||
<SET V <PERFORM-PRSA ,PRSO ,PRSI>>
|
||||
<COND (<EQUAL? .V ,M-FATAL> <RETURN>)>
|
||||
<COND (,P-MULT <SETG P-MULT <+ ,P-MULT 1>>)>) ;"END REFORMATTING"
|
||||
|
||||
>>)>
|
||||
<COND (<NOT <EQUAL? .V ,M-FATAL>>
|
||||
<COND (<GAME-VERB?> T)
|
||||
(<LOC ,WINNER>
|
||||
<SET V
|
||||
%<DEBUG-CODE
|
||||
<D-APPLY "End"
|
||||
<GETP <LOC ,WINNER> ,P?ACTION>
|
||||
,M-END>
|
||||
<APPLY <GETP <LOC ,WINNER> ,P?ACTION>
|
||||
,M-END>>>)>)>
|
||||
<COND (<EQUAL? .V ,M-FATAL>
|
||||
<SETG P-CONT <>>)>)
|
||||
(T
|
||||
<SETG P-CONT <>>)>
|
||||
<COND (,P-WON
|
||||
%<DEBUG-CODE
|
||||
<COND (<VERB? $DEBUG>
|
||||
<AGAIN>)>>
|
||||
<COND (<GAME-VERB?> T)
|
||||
(T
|
||||
<SET V <CLOCKER>>)>
|
||||
<SETG PRSA <>>
|
||||
<SETG PRSO <>>
|
||||
<SETG PRSI <>>)>>
|
||||
|
||||
<ROUTINE OBJECT-SUBSTITUTE (OBJ VAR "AUX" (TMP <>) (CNT 0) ICNT OCNT)
|
||||
<COND (<AND .VAR <ACCESSIBLE? .VAR>>
|
||||
<SET ICNT <GET ,P-PRSI ,P-MATCHLEN>>
|
||||
<SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>
|
||||
<REPEAT ()
|
||||
<COND (<G? <SET CNT <+ .CNT 1>> .ICNT>
|
||||
<RETURN>)
|
||||
(T
|
||||
<COND (<EQUAL? <GET ,P-PRSI .CNT> .OBJ>
|
||||
<PUT ,P-PRSI .CNT .VAR>
|
||||
<SET TMP T>
|
||||
<RETURN>)>)>>
|
||||
<SET CNT 0>
|
||||
<REPEAT ()
|
||||
<COND (<G? <SET CNT <+ .CNT 1>> .OCNT>
|
||||
<RETURN>)
|
||||
(T
|
||||
<COND (<EQUAL? <GET ,P-PRSO .CNT> .OBJ>
|
||||
<PUT ,P-PRSO .CNT .VAR>
|
||||
<SET TMP T>
|
||||
<RETURN>)>)>>
|
||||
.TMP)>>
|
||||
|
||||
<GLOBAL PSEUDO-PRSO <>> ;"T IF ORIGINAL PRSO WAS PSEUDO-OBJECT"
|
||||
|
||||
<ROUTINE GAME-VERB? ()
|
||||
<COND (<AND <VERB? TELL> ,P-CONT> <RTRUE>)
|
||||
(<AND <VERB? HELP>
|
||||
<NOT ,PRSO>
|
||||
<NOT <IN? ,PC ,HERE>>>
|
||||
<RTRUE>)
|
||||
(<VERB? QUIT VERSION BRIEF SUPER-BRIEF VERBOSE
|
||||
$VERIFY RESTART SAVE RESTORE SCRIPT UNSCRIPT
|
||||
$RANDOM $COMMAND $RECORD $UNRECORD SCORE
|
||||
TIME>
|
||||
<RTRUE>)>>
|
||||
|
||||
"MULTIPLE-EXCEPTION? -- return true if an object found by all should not
|
||||
be included when the crunch comes."
|
||||
|
||||
<ROUTINE MULTIPLE-EXCEPTION? (OBJ1 "AUX" (L <LOC .OBJ1>))
|
||||
<COND (<EQUAL? .OBJ1 ,NOT-HERE-OBJECT>
|
||||
<SETG P-NOT-HERE <+ ,P-NOT-HERE 1>>
|
||||
<RTRUE>)
|
||||
(<AND <VERB? TAKE>
|
||||
,PRSI
|
||||
<NOT <IN? ,PRSO ,PRSI>>>
|
||||
;"TAKE X FROM Y and x not in y"
|
||||
<RTRUE>)
|
||||
(<NOT <ACCESSIBLE? .OBJ1>>
|
||||
;"can't get at object"
|
||||
<RTRUE>)
|
||||
(<EQUAL? ,P-GETFLAGS ,P-ALL>
|
||||
;"cases for ALL"
|
||||
<COND (<AND ,PRSI
|
||||
<PRSO? ,PRSI>>
|
||||
;"VERB ALL and prso = prsi"
|
||||
<RTRUE>)
|
||||
(<AND <VERB? TAKE> <NOT ,PRSI>>
|
||||
<COND (<OR <AND <NOT <EQUAL? .L ,WINNER ,HERE ,PRSI>>
|
||||
<NOT <EQUAL? .L <LOC ,WINNER>>>
|
||||
<NOT <FSET? .L ,SURFACEBIT>>
|
||||
<NOT <FSET? .L ,SEARCHBIT>>>
|
||||
<AND <NOT <FSET? .OBJ1 ,TAKEBIT>>
|
||||
<NOT <FSET? .OBJ1 ,TRYTAKEBIT>>>>
|
||||
;"TAKE ALL and object not accessible or takeable"
|
||||
<RTRUE>)
|
||||
(<OR <FSET? .L ,PERSON>
|
||||
<FSET? <LOC .L> ,PERSON>>
|
||||
;"TAKE ALL held by a person (use TAKE ALL FROM)"
|
||||
<RTRUE>)
|
||||
(<HELD? ,PRSO>
|
||||
;"TAKE ALL and one object has others in it"
|
||||
<RTRUE>)
|
||||
(<AND <PRSO? DOME-LADDER>
|
||||
<OR ,LADDER-TOP? ,LADDER-BOTTOM?>>
|
||||
;"TAKE ALL and ladder set up"
|
||||
<RTRUE>)
|
||||
(<AND <PRSO? CHAIN CHAIN-1 CHAIN-2>
|
||||
<OR ,CHAIN-HOOKED? ,CHAIN-LOOPED?>
|
||||
<NOT <EQUAL? .L
|
||||
,ELEVATOR-PIT ,CS-BASEMENT>>>
|
||||
;"TAKE ALL and chain looped or hooked"
|
||||
<RTRUE>)
|
||||
(<AND <PRSO? PADLOCK>
|
||||
,PADLOCK-ON?>
|
||||
;"TAKE ALL and padlock locked"
|
||||
<RTRUE>)>)
|
||||
(<VERB? DROP GIVE>
|
||||
<COND (<NOT <IN? .OBJ1 ,WINNER>>
|
||||
;"GIVE/DROP ALL and object not held"
|
||||
<RTRUE>)
|
||||
(<FSET? .OBJ1 ,WEARBIT>
|
||||
;"GIVE/DROP ALL and object worn"
|
||||
<RTRUE>)>)
|
||||
(<AND <VERB? PUT>
|
||||
<NOT <IN? ,PRSO ,WINNER>>
|
||||
<HELD? ,PRSO ,PRSI>>
|
||||
;"PUT ALL IN X and object already in x"
|
||||
<RTRUE>)>)>>
|
||||
|
||||
;<ROUTINE SAVE-INPUT (TBL "AUX" (OFFS 0) CNT TMP)
|
||||
<SET CNT <+ <GETB ,P-LEXV <SET TMP <* 4 ,P-INPUT-WORDS>>>
|
||||
<GETB ,P-LEXV <+ .TMP 1>>>>
|
||||
<COND (<EQUAL? .CNT 0> ;"failed"
|
||||
<RFALSE>)>
|
||||
<SET CNT <- .CNT 1>>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .OFFS .CNT>
|
||||
<PUTB .TBL .OFFS 0>
|
||||
<RETURN>)
|
||||
(T
|
||||
<PUTB .TBL .OFFS <GETB ,P-INBUF <+ .OFFS 1>>>)>
|
||||
<SET OFFS <+ .OFFS 1>>>
|
||||
<RTRUE>>
|
||||
|
||||
;<ROUTINE RESTORE-INPUT (TBL "AUX" CHR)
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? <SET CHR <GETB .TBL 0>> 0>
|
||||
<RETURN>)
|
||||
(T
|
||||
<PRINTC .CHR>
|
||||
<SET TBL <REST .TBL>>)>>>
|
||||
|
||||
<GLOBAL P-MULT <>>
|
||||
|
||||
<GLOBAL P-NOT-HERE 0>
|
||||
|
||||
|
||||
<GLOBAL WHAT-DO-YOU-WANT-TO "What do you want to ">
|
||||
|
||||
<ROUTINE FAKE-ORPHAN ("AUX" TMP)
|
||||
<ORPHAN ,P-SYNTAX <>>
|
||||
<TELL ,WHAT-DO-YOU-WANT-TO>
|
||||
<SET TMP <GET ,P-OTBL ,P-VERBN>>
|
||||
<COND (<EQUAL? .TMP 0>
|
||||
<TELL "tell">)
|
||||
(<ZERO? <GETB ,P-VTBL 2>>
|
||||
<PRINTB <GET .TMP 0>>)
|
||||
(T
|
||||
<WORD-PRINT <GETB .TMP 2> <GETB .TMP 3>>
|
||||
<PUTB ,P-VTBL 2 0>)>
|
||||
<SETG P-OFLAG T>
|
||||
<SETG P-WON <>>
|
||||
<PREP-PRINT
|
||||
<GETB ,P-SYNTAX ,P-SPREP1>>
|
||||
<TELL "?" CR>>
|
||||
|
||||
<ROUTINE PERFORM (A "OPTIONAL" (O <>) (I <>) "AUX" (V <>) OA OO OI CNT)
|
||||
<SETG PERFORM-DEPTH <+ ,PERFORM-DEPTH 1>>
|
||||
%<DEBUG-CODE
|
||||
<COND (,ZDEBUG
|
||||
<TELL "[Perform: ">
|
||||
%<COND (<GASSIGNED? ZILCH> '<TELL N .A>)
|
||||
(T '<PRINT <SPNAME <NTH ,ACTIONS <+ <* .A 2> 1>>>>)>
|
||||
<COND (.O
|
||||
<COND (<AND <EQUAL? .A ,V?WALK>
|
||||
,P-WALK-DIR>
|
||||
<TELL "/" N .O>)
|
||||
(ELSE
|
||||
<TELL "/" D .O>)>)>
|
||||
<COND (.I <TELL "/" D .I>)>
|
||||
<TELL "]" CR>)>>
|
||||
<SET OA ,PRSA>
|
||||
<SET OO ,PRSO>
|
||||
<SET OI ,PRSI>
|
||||
<SETG PRSA .A>
|
||||
<COND (<EQUAL? ,IT .I .O>
|
||||
<COND (<NOT .I>
|
||||
<FAKE-ORPHAN>)
|
||||
(T
|
||||
<TELL ,REFERRING CR>)>
|
||||
<RFATAL>)>
|
||||
<COND (<AND .I
|
||||
<NOT <VERB? WALK>>
|
||||
<NOT <EQUAL? .I ,NOT-HERE-OBJECT>>>
|
||||
<THIS-IS-IT .I>)>
|
||||
<COND (<AND .O
|
||||
<NOT <VERB? WALK>>
|
||||
<NOT <EQUAL? .O ,NOT-HERE-OBJECT>>>
|
||||
<THIS-IS-IT .O>)>
|
||||
<SETG PRSO .O>
|
||||
<SETG PRSI .I>
|
||||
<COND (<AND <NOT <EQUAL? .A ,V?WALK>>
|
||||
<EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
|
||||
<SET V
|
||||
%<DEBUG-CODE
|
||||
<D-APPLY "Not Here" ,NOT-HERE-OBJECT-F>
|
||||
<APPLY ,NOT-HERE-OBJECT-F>>>>
|
||||
;<SETG P-WON <>>)
|
||||
(T
|
||||
<SET O ,PRSO>
|
||||
<SET I ,PRSI>
|
||||
<COND (<AND <NOT <VERB? TELL-ABOUT SGIVE SSHOW SRUB SPUT-ON>>
|
||||
<SET V
|
||||
%<DEBUG-CODE
|
||||
<DD-APPLY "Actor" ,WINNER
|
||||
<GETP ,WINNER ,P?ACTION>>
|
||||
<APPLY <GETP ,WINNER ,P?ACTION>>>>>)
|
||||
(<AND <LOC ,WINNER>
|
||||
<NOT <EQUAL? <LOC ,WINNER> ,HERE>>
|
||||
<SET V
|
||||
%<DEBUG-CODE
|
||||
<D-APPLY "Begin"
|
||||
<GETP <LOC ,WINNER> ,P?ACTION>
|
||||
,M-BEG>
|
||||
<APPLY <GETP <LOC ,WINNER> ,P?ACTION>
|
||||
,M-BEG>>>>)
|
||||
(<SET V
|
||||
%<DEBUG-CODE
|
||||
<D-APPLY "Begin"
|
||||
<GETP ,HERE ,P?ACTION>
|
||||
,M-BEG>
|
||||
<APPLY <GETP ,HERE ,P?ACTION>
|
||||
,M-BEG>>>)
|
||||
(<SET V
|
||||
%<DEBUG-CODE
|
||||
<D-APPLY "Preaction"
|
||||
<GET ,PREACTIONS .A>>
|
||||
<APPLY <GET ,PREACTIONS .A>>>>)
|
||||
(<AND .I
|
||||
<SET V
|
||||
%<DEBUG-CODE
|
||||
<D-APPLY "PRSI" <GETP .I ,P?ACTION>>
|
||||
<APPLY <GETP .I ,P?ACTION>>>>>)
|
||||
(<AND .O
|
||||
<NOT <EQUAL? .A ,V?WALK>>
|
||||
<LOC .O>
|
||||
<GETP <LOC .O> ,P?CONTFCN>
|
||||
<SET V
|
||||
%<DEBUG-CODE
|
||||
<D-APPLY "Container"
|
||||
<GETP <LOC .O> ,P?CONTFCN>
|
||||
,M-CONTAINER>
|
||||
<APPLY <GETP <LOC .O> ,P?CONTFCN>
|
||||
,M-CONTAINER>>>>)
|
||||
(<AND .O
|
||||
<NOT <EQUAL? .A ,V?WALK>>
|
||||
<SET V
|
||||
%<DEBUG-CODE
|
||||
<D-APPLY "PRSO"
|
||||
<GETP .O ,P?ACTION>>
|
||||
<APPLY <GETP .O ,P?ACTION>>>>>)
|
||||
(<SET V
|
||||
%<DEBUG-CODE
|
||||
<D-APPLY <>
|
||||
<GET ,ACTIONS .A>>
|
||||
<APPLY <GET ,ACTIONS .A>>>>)>)>
|
||||
<SETG PRSA .OA>
|
||||
<SETG PRSO .OO>
|
||||
<SETG PRSI .OI>
|
||||
.V>
|
||||
|
||||
%<COND (,ZDEBUGGING?
|
||||
<COND (<GASSIGNED? ZILCH>
|
||||
<ROUTINE II-APPLY (STR FCN)
|
||||
<COND (,ZDEBUG
|
||||
<TELL "[I- " N <* .FCN 2> " ">)>
|
||||
<D-APPLY .STR .FCN>>)
|
||||
(ELSE
|
||||
<ROUTINE II-APPLY (STR FCN)
|
||||
<D-APPLY <COND (<TYPE? .FCN ATOM> <SPNAME .FCN>)
|
||||
(ELSE .STR)>
|
||||
.FCN>>)>)>
|
||||
|
||||
%<DEBUG-CODE
|
||||
<ROUTINE DD-APPLY (STR OBJ FCN)
|
||||
<COND (,ZDEBUG <TELL "[" D .OBJ "=]">)>
|
||||
<D-APPLY .STR .FCN>>>
|
||||
|
||||
%<DEBUG-CODE
|
||||
<ROUTINE D-APPLY (STR FCN "OPTIONAL" (FOO <>) "AUX" RES)
|
||||
<COND (<NOT .FCN> <>)
|
||||
(T
|
||||
<COND (,ZDEBUG
|
||||
<COND (<NOT .STR>
|
||||
<TELL "[Action:]" CR>)
|
||||
(T <TELL "[" .STR ": ">)>)>
|
||||
<SET RES
|
||||
<COND (.FOO <APPLY .FCN .FOO>)
|
||||
(T <APPLY .FCN>)>>
|
||||
%<DEBUG-CODE
|
||||
<COND (<AND ,ZDEBUG .STR>
|
||||
<COND (<EQUAL? .RES ,M-FATAL>
|
||||
<TELL "Fatal]" CR>)
|
||||
(<NOT .RES>
|
||||
<TELL "Not handled]" CR>)
|
||||
(T <TELL "Handled]" CR>)>)>>
|
||||
.RES)>>>
|
||||
|
||||
;"former CLOCK.ZIL stuff"
|
||||
|
||||
<GLOBAL CLOCK-WAIT <>>
|
||||
|
||||
<GLOBAL C-TABLE <ITABLE 13 <> <>>>
|
||||
|
||||
<CONSTANT C-INTLEN 4> ;"length of an interrupt entry in bytes"
|
||||
<CONSTANT C-RTN 0> ;"word offset of routine name"
|
||||
<CONSTANT C-TICK 1> ;"word offset of count"
|
||||
|
||||
<CONSTANT C-TABLELEN 52> ;"length of interrupt table in bytes"
|
||||
<GLOBAL C-INTS 52> ;"start of queued interrupts in bytes"
|
||||
%<DEBUG-CODE <GLOBAL C-MAXINTS 52>>
|
||||
|
||||
<ROUTINE DEQUEUE (RTN "AUX" TIM)
|
||||
<COND (<SET RTN <QUEUED? .RTN>>
|
||||
<SET TIM <GET .RTN ,C-TICK>>
|
||||
<PUT .RTN ,C-RTN 0>
|
||||
.TIM)>>
|
||||
|
||||
<ROUTINE QUEUED? (RTN "AUX" C E)
|
||||
<SET E <REST ,C-TABLE ,C-TABLELEN>>
|
||||
<SET C <REST ,C-TABLE ,C-INTS>>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .C .E> <RFALSE>)
|
||||
(<EQUAL? <GET .C ,C-RTN> .RTN>
|
||||
<COND (<ZERO? <GET .C ,C-TICK>>
|
||||
<RFALSE>)
|
||||
(T <RETURN .C>)>)>
|
||||
<SET C <REST .C ,C-INTLEN>>>>
|
||||
|
||||
"this version of QUEUE automatically enables as well"
|
||||
|
||||
"QUEUE routine when fresh?:t means only queue if not currently queued"
|
||||
|
||||
<ROUTINE QUEUE (RTN TICK "OPT" (I? <>) "AUX" C E (INT <>))
|
||||
<SET E <REST ,C-TABLE ,C-TABLELEN>>
|
||||
<SET C <REST ,C-TABLE ,C-INTS>>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .C .E>
|
||||
<COND (.INT
|
||||
<SET C .INT>)
|
||||
(ELSE
|
||||
%<DEBUG-CODE
|
||||
<COND (<L? ,C-INTS ,C-INTLEN>
|
||||
<TELL
|
||||
"[**Too many interrupts!**]" CR>)>>
|
||||
<SETG C-INTS <- ,C-INTS ,C-INTLEN>>
|
||||
%<DEBUG-CODE
|
||||
<COND (<L? ,C-INTS ,C-MAXINTS>
|
||||
<SETG C-MAXINTS ,C-INTS>)>>
|
||||
<SET INT <REST ,C-TABLE ,C-INTS>>)>
|
||||
<PUT .INT ,C-RTN .RTN>
|
||||
<RETURN>)
|
||||
(<EQUAL? <GET .C ,C-RTN> .RTN>
|
||||
<COND (.I? <RFALSE>)
|
||||
(ELSE
|
||||
<SET INT .C>
|
||||
<RETURN>)>)
|
||||
(<ZERO? <GET .C ,C-RTN>>
|
||||
<SET INT .C>)>
|
||||
<SET C <REST .C ,C-INTLEN>>>
|
||||
<COND (%<COND (<GASSIGNED? ZILCH>
|
||||
'<G? .INT ,CLOCK-HAND>)
|
||||
(ELSE
|
||||
'<L=? <LENGTH .INT> <LENGTH ,CLOCK-HAND>>)>
|
||||
<SET TICK <- <+ .TICK 3>>>)>
|
||||
<PUT .INT ,C-TICK .TICK>
|
||||
.INT>
|
||||
|
||||
<GLOBAL CLOCK-HAND <>>
|
||||
|
||||
<ROUTINE CLOCKER ("AUX" E TICK RTN (FLG <>) (Q? <>) OWINNER)
|
||||
<COND (,CLOCK-WAIT <SETG CLOCK-WAIT <>> <RFALSE>)>
|
||||
<SETG CLOCK-HAND <REST ,C-TABLE ,C-INTS>>
|
||||
<SET E <REST ,C-TABLE ,C-TABLELEN>>
|
||||
<SET OWINNER ,WINNER>
|
||||
<SETG WINNER ,PLAYER>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? ,CLOCK-HAND .E>
|
||||
<SETG CLOCK-HAND .E>
|
||||
<SETG MOVES <+ ,MOVES 1>>
|
||||
<SETG WINNER .OWINNER>
|
||||
<RETURN .FLG>)
|
||||
(<NOT <ZERO? <GET ,CLOCK-HAND ,C-RTN>>>
|
||||
<SET TICK <GET ,CLOCK-HAND ,C-TICK>>
|
||||
<COND (<L? .TICK -1>
|
||||
<PUT ,CLOCK-HAND ,C-TICK <- <- .TICK> 3>>
|
||||
<SET Q? ,CLOCK-HAND>)
|
||||
(<NOT <ZERO? .TICK>>
|
||||
<COND (<G? .TICK 0>
|
||||
<SET TICK <- .TICK 1>>
|
||||
<PUT ,CLOCK-HAND ,C-TICK .TICK>)>
|
||||
<COND (<NOT <ZERO? .TICK>>
|
||||
<SET Q? ,CLOCK-HAND>)>
|
||||
<COND (<NOT <G? .TICK 0>>
|
||||
<SET RTN
|
||||
%<COND (<GASSIGNED? ZILCH>
|
||||
'<GET ,CLOCK-HAND ,C-RTN>)
|
||||
(ELSE
|
||||
'<NTH ,CLOCK-HAND
|
||||
<+ <* ,C-RTN 2>
|
||||
1>>)>>
|
||||
<COND (<ZERO? .TICK>
|
||||
<PUT ,CLOCK-HAND ,C-RTN 0>)>
|
||||
<COND (%<COND
|
||||
(,ZDEBUGGING?
|
||||
'<II-APPLY "Int" .RTN>)
|
||||
(ELSE
|
||||
'<APPLY .RTN>)>
|
||||
<SET FLG T>)>
|
||||
<COND (<AND <NOT .Q?>
|
||||
<NOT
|
||||
<ZERO?
|
||||
<GET ,CLOCK-HAND
|
||||
,C-RTN>>>>
|
||||
<SET Q? T>)>)>)>)>
|
||||
<SETG CLOCK-HAND <REST ,CLOCK-HAND ,C-INTLEN>>
|
||||
<COND (<NOT .Q?>
|
||||
<SETG C-INTS <+ ,C-INTS ,C-INTLEN>>)>>>
|
||||
|
||||
<DEFINE PSEUDO ("TUPLE" V)
|
||||
<MAPF ,PLTABLE
|
||||
<FUNCTION (OBJ)
|
||||
<COND (<N==? <LENGTH .OBJ> 3>
|
||||
<ERROR BAD-THING .OBJ>)>
|
||||
<MAPRET <COND (<NTH .OBJ 1>
|
||||
<VOC <SPNAME <NTH .OBJ 1>> ADJECTIVE>)>
|
||||
<COND (<NTH .OBJ 2>
|
||||
<VOC <SPNAME <NTH .OBJ 2>> NOUN>)>
|
||||
;<3 .OBJ>>>
|
||||
.V>>
|
||||
|
||||
<ROUTINE PERFORM-PRSA ("OPT" (O <>) (I <>))
|
||||
<PERFORM ,PRSA .O .I>>
|
||||
|
||||
<ROUTINE NEW-VERB (V)
|
||||
<PERFORM .V ,PRSO ,PRSI>>
|
||||
|
||||
<ROUTINE SWAP-VERB (V)
|
||||
<PERFORM .V ,PRSI ,PRSO>>
|
||||
|
||||
<ROUTINE NEW-PRSO (O)
|
||||
<PERFORM-PRSA .O ,PRSI>>
|
||||
|
||||
<ROUTINE NEW-PRSI (I)
|
||||
<PERFORM-PRSA ,PRSO .I>>
|
||||
|
||||
<ROUTINE NEW-WINNER-PRSO (A "OPT" (O <>) (I <>) "AUX" OW)
|
||||
<SET OW ,WINNER>
|
||||
<SETG WINNER ,PRSO>
|
||||
<PERFORM .A .O .I>
|
||||
<SETG WINNER .OW>>
|
||||
|
||||
<ROUTINE REDIRECT (FROM TO "AUX" O I)
|
||||
<SET O <COND (<PRSO? .FROM> .TO) (ELSE ,PRSO)>>
|
||||
<SET I <COND (<PRSI? .FROM> .TO) (ELSE ,PRSI)>>
|
||||
<PERFORM-PRSA .O .I>
|
||||
<RTRUE>>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,529 @@
|
|||
"PC for
|
||||
The Lurking Horror
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<OBJECT ASSIGNMENT
|
||||
(IN PLAYER)
|
||||
(DESC "assignment")
|
||||
(SYNONYM ASSIGNMENT)
|
||||
(FLAGS AN READBIT TAKEBIT)
|
||||
(SIZE 1)
|
||||
(ACTION ASSIGNMENT-F)>
|
||||
|
||||
<ROUTINE ASSIGNMENT-F ()
|
||||
<COND (<VERB? EXAMINE READ>
|
||||
<TELL
|
||||
"Laser printed on creamy bond paper, the assignment is due tomorrow.
|
||||
It's from your freshman course in \"The Classics in the Modern Idiom,\"
|
||||
better known as \"21.014.\" It reads, in part: \"Twenty pages on modern
|
||||
analogues of Xenophon's 'Anabasis.'\" You're not sure whether this refers
|
||||
to the movie \"The Warriors\" or \"Alien,\" but this is the last
|
||||
assignment you need to complete in this course this term. You wonder,
|
||||
yet again, why a technical school requires you to endure this sort of
|
||||
stuff." CR>)>>
|
||||
|
||||
<OBJECT CHAIR
|
||||
(IN TERMINAL-ROOM)
|
||||
(FDESC
|
||||
"Nearby is one of those ugly molded plastic chairs.")
|
||||
(DESC "chair")
|
||||
(SYNONYM CHAIR)
|
||||
(ADJECTIVE MOLDED PLASTIC UGLY)
|
||||
(FLAGS TAKEBIT VEHBIT SEARCHBIT CONTBIT OPENBIT FURNITURE SURFACEBIT)
|
||||
(SIZE 100)
|
||||
(ACTION CHAIR-F)>
|
||||
|
||||
<ROUTINE CHAIR-F ("OPT" (RARG <>))
|
||||
<COND (<RARG? BEG>
|
||||
<COND (<QUEUED? I-COMPULSION> <RFALSE>)
|
||||
(<VERB? WALK>
|
||||
<MOVE ,WINNER <LOC ,CHAIR>>
|
||||
<TELL "First, you arise from the chair." CR>)
|
||||
(<P? SIT CHAIR>
|
||||
<TELL ,YOU-ARE ,PERIOD>)
|
||||
(<P? (STAND DISEMBARK) CHAIR>
|
||||
<MOVE ,WINNER <LOC ,CHAIR>>
|
||||
<TELL "You get out of the chair." CR>)>)
|
||||
(<RARG? <>>
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"It's a molded plastic chair, a cheap knock-off of a designer
|
||||
chair, and even more uncomfortable." CR>)
|
||||
(<AND <VERB? TAKE>
|
||||
<IN? ,HACKER ,CHAIR>>
|
||||
<TELL "It's in use." CR>)
|
||||
(<VERB? SIT BOARD>
|
||||
<COND (<IN? ,HACKER ,CHAIR>
|
||||
<TELL
|
||||
"The hacker is already using it." CR>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<COND (<HELD? ,CHAIR>
|
||||
<MOVE ,CHAIR <LOC ,WINNER>>)>
|
||||
<MOVE ,WINNER ,CHAIR>
|
||||
<TELL
|
||||
,YOU-ARE-NOW "sitting in the chair." CR>)>)>)>>
|
||||
|
||||
<OBJECT OUTLET
|
||||
(IN LOCAL-GLOBALS)
|
||||
(DESC "outlet")
|
||||
(SYNONYM OUTLET SOCKET)
|
||||
(ADJECTIVE ELECTRIC WALL)
|
||||
(FLAGS NDESCBIT AN)>
|
||||
|
||||
<GLOBAL PC-UNPLUGGED? <>>
|
||||
|
||||
<OBJECT HELP-KEY
|
||||
(IN PC)
|
||||
(DESC "HELP key")
|
||||
(SYNONYM HELP KEY)
|
||||
(ADJECTIVE HELP)
|
||||
(FLAGS NDESCBIT READBIT)
|
||||
(ACTION HELP-KEY-F)
|
||||
(TEXT "It says \"HELP\" in reassuring blue letters.")>
|
||||
|
||||
<ROUTINE HELP-KEY-F ()
|
||||
<COND (<MOUSE-VERB?>
|
||||
<COND (<NOT <FSET? ,PC ,POWERBIT>>
|
||||
<TELL
|
||||
"Well," ,LC-NOTHING-HAPPENS " Perhaps you should turn on the computer?" CR>
|
||||
<RTRUE>)>
|
||||
<TELL
|
||||
"You push the friendly-looking HELP key. A spritely little box appears
|
||||
on the screen, which reads: \"">
|
||||
<COND (<NOT ,LOGGED-IN?>
|
||||
<TELL "You should ">
|
||||
<COND (<NOT ,USERNAME?>
|
||||
<TELL
|
||||
"\"LOGIN your-user-id\" and then ">)>
|
||||
<TELL
|
||||
"\"PASSWORD your-password\".">)
|
||||
(<IN? ,MORE-BOX ,PC>
|
||||
<TELL "Please">
|
||||
<COND (<NOT ,READ-PAGE?>
|
||||
<TELL
|
||||
" read the page on the screen and then">)>
|
||||
<TELL " click the MORE box.">)
|
||||
(<IN? ,YAK-WINDOW ,PC>
|
||||
<TELL
|
||||
"Please click the box representing the file you wish to edit or view.
|
||||
I notice that one file is marked as urgent, so you should probably click
|
||||
its box.">)
|
||||
(<IN? ,MENU-BOX ,PC>
|
||||
<TELL
|
||||
"You should click the menu box, as you previously set it up as an urgent
|
||||
task.">)
|
||||
(ELSE
|
||||
<TELL
|
||||
"I can't help you at this point.">)>
|
||||
<TELL "\"" CR>)>>
|
||||
|
||||
<OBJECT MOUSE
|
||||
(IN PC)
|
||||
(DESC "mouse")
|
||||
(SYNONYM MOUSE)
|
||||
(FLAGS NDESCBIT)
|
||||
(ACTION MOUSE-F)>
|
||||
|
||||
<ROUTINE MOUSE-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"It's a plastic pointing device." CR>)
|
||||
(<VERB? TAKE>
|
||||
<TELL
|
||||
"It's attached to the computer." CR>)
|
||||
(<VERB? MOVE>
|
||||
<TELL
|
||||
"It rolls smoothly." CR>)
|
||||
(<AND <MOUSE-VERB?>
|
||||
<PRSO? MOUSE>>
|
||||
<COND (,PRSI
|
||||
<PERFORM ,V?CLICK ,PRSI>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<TELL
|
||||
,YOU-HAVE-TO "click something with the mouse." CR>)>)
|
||||
(<AND <MOUSE-VERB?>
|
||||
<PRSI? MOUSE>>
|
||||
<PERFORM ,V?CLICK ,PRSO>
|
||||
<RTRUE>)>>
|
||||
|
||||
<OBJECT PC
|
||||
(IN TERMINAL-ROOM)
|
||||
(DESC "pc")
|
||||
(FDESC
|
||||
"A really whiz-bang pc is right inside the door.")
|
||||
(SYNONYM PC COMPUTER SCREEN TERMINAL)
|
||||
(ADJECTIVE PERSONAL MY MONITOR)
|
||||
(FLAGS TAKEBIT TRYTAKEBIT OPENBIT CONTBIT SEARCHBIT SURFACEBIT)
|
||||
(SIZE 30)
|
||||
(ACTION PC-F)>
|
||||
|
||||
<GLOBAL COMPUTER-POWERS "The computer powers ">
|
||||
|
||||
<ROUTINE PC-F ("AUX" TMP)
|
||||
<COND (<VERB? EXAMINE>
|
||||
<COND (<EQUAL? <GET ,P-NAMW 0> ,W?SCREEN>
|
||||
<NEW-VERB ,V?READ>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"This is a beyond-state-of-the-art personal computer. It has a
|
||||
1024 by 1024 pixel color monitor, a mouse, an attached hard disk,
|
||||
and a local area network connection. Fortunately, one of its features
|
||||
is a prominent HELP key.">
|
||||
<COND (<NOT <FSET? ,PC ,POWERBIT>>
|
||||
<TELL S " It is currently ""turned off.">)
|
||||
(<FIRST? ,PC>
|
||||
<TELL
|
||||
" On the screen you see " A <FIRST? ,PC> ".">)>
|
||||
<CRLF>)>)
|
||||
(<AND <VERB? LISTEN>
|
||||
<FSET? ,PC ,POWERBIT>>
|
||||
<TELL "It hums contentedly." CR>)
|
||||
(<VERB? TAKE>
|
||||
<COND (<QUEUED? I-HACKER-HELPS>
|
||||
<NEW-VERB ,V?UNPLUG>
|
||||
<RTRUE>)
|
||||
(<EQUAL? <ITAKE> T>
|
||||
<TELL
|
||||
"You take it">
|
||||
<COND (<NOT ,PC-UNPLUGGED?>
|
||||
<TELL ", ">
|
||||
<COND (<FSET? ,PC ,POWERBIT>
|
||||
<INIT-PC>
|
||||
<TELL
|
||||
"turning it off and ">)>
|
||||
<SETG PC-UNPLUGGED? T>
|
||||
<TELL
|
||||
"unplugging it first">)>
|
||||
<TELL ,PERIOD>)
|
||||
(ELSE <RTRUE>)>)
|
||||
(<P? (PUT PUT-ON) * PC>
|
||||
<NO-GOOD-SURFACE>)
|
||||
(<VERB? READ>
|
||||
<COND (<AND <QUEUED? I-HACKER-HELPS>
|
||||
<L? ,HACKER-HELP 3>>
|
||||
<TELL
|
||||
S "There's nothing ""recognizable on the screen." CR>
|
||||
<RTRUE>)>
|
||||
<SET TMP
|
||||
<COND (<IN? ,ODD-PAPER ,PC> ,ODD-PAPER)
|
||||
;(<IN? ,REAL-PAPER ,PC> ,REAL-PAPER)
|
||||
(<IN? ,MENU-BOX ,PC> ,MENU-BOX)
|
||||
(<IN? ,MORE-BOX ,PC> ,MORE-BOX)
|
||||
(<IN? ,YAK-WINDOW ,PC> ,YAK-WINDOW)>>
|
||||
<COND (.TMP
|
||||
<NEW-PRSO .TMP>
|
||||
<RTRUE>)
|
||||
(ELSE
|
||||
<TELL
|
||||
S "There's nothing ""to read on the screen now." CR>)>)
|
||||
(<VERB? LAMP-ON>
|
||||
<COND (,PC-UNPLUGGED?
|
||||
<TELL
|
||||
"It's unplugged. You should plug it in first." CR>)
|
||||
(<NOT <FSET? ,PC ,POWERBIT>>
|
||||
<FSET ,PC ,POWERBIT>
|
||||
<TELL
|
||||
,COMPUTER-POWERS "up, goes through a remarkably fast self-check,
|
||||
and greets you, requesting " ,LOGIN-PLEASE " The only sound you hear is
|
||||
a very low hum." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"It's on. Maybe you didn't notice." CR>)>)
|
||||
(<VERB? PLUG-IN>
|
||||
<COND (,PC-UNPLUGGED?
|
||||
<SETG PC-UNPLUGGED? <>>
|
||||
<TELL
|
||||
"You plug in the computer." CR>)
|
||||
(ELSE <TELL ,IT-ALREADY-IS>)>)
|
||||
(<VERB? UNPLUG>
|
||||
<COND (,PC-UNPLUGGED?
|
||||
<TELL ,IT-ALREADY-IS>
|
||||
<RTRUE>)
|
||||
(<QUEUED? I-HACKER-HELPS>
|
||||
<TELL S
|
||||
"The hacker stops you. \"You'll mung the bits, chomper!\"|">)
|
||||
(ELSE
|
||||
<INIT-PC>
|
||||
<SETG PC-UNPLUGGED? T>
|
||||
<TELL
|
||||
"Okay, it's unplugged now." CR>)>)
|
||||
(<VERB? LAMP-OFF>
|
||||
<COND (<QUEUED? I-HACKER-HELPS>
|
||||
<TELL S
|
||||
"The hacker stops you. \"You'll mung the bits, chomper!\"|">)
|
||||
(<FSET? ,PC ,POWERBIT>
|
||||
<INIT-PC>
|
||||
<COMPUTER-POWERS-OFF>)
|
||||
(ELSE
|
||||
<ITS-ALREADY-X "off">)>)
|
||||
(<VERB? READ>
|
||||
<COND (<IN? ,ODD-PAPER ,PC>
|
||||
<NEW-PRSO ,ODD-PAPER>
|
||||
<RTRUE>)>)
|
||||
(<AND <VERB? SIT-AT>
|
||||
<IN? ,CHAIR ,HERE>>
|
||||
<PERFORM ,V?SIT ,CHAIR>
|
||||
<RTRUE>)>>
|
||||
|
||||
<ROUTINE COMPUTER-POWERS-OFF ()
|
||||
<FCLEAR ,PRSO ,POWERBIT>
|
||||
<TELL
|
||||
,COMPUTER-POWERS "off. It no longer makes a sound." CR>>
|
||||
|
||||
<ROUTINE INIT-PC ()
|
||||
<FCLEAR ,PC ,POWERBIT>
|
||||
<SETG LOGGED-IN? <>>
|
||||
<SETG USERNAME? <>>
|
||||
<REMOVE ,MENU-BOX>
|
||||
<REMOVE ,MORE-BOX>
|
||||
<MOVE ,YAK-WINDOW ,GLOBAL-OBJECTS>
|
||||
<COND (<NOT <IN? ,ODD-PAPER ,GLOBAL-OBJECTS>>
|
||||
<REMOVE ,ODD-PAPER>)>>
|
||||
|
||||
<OBJECT INTNAME
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM INTNAME)
|
||||
(FLAGS NDESCBIT)>
|
||||
|
||||
<SYNTAX LOGIN OBJECT = V-LOGIN>
|
||||
<SYNTAX LOGIN ON OBJECT = V-LOGIN>
|
||||
<SYNTAX LOGIN AS OBJECT = V-LOGIN>
|
||||
<SYNTAX PASSWORD OBJECT = V-PASSWORD>
|
||||
|
||||
<GLOBAL LOGGED-IN? <>>
|
||||
<GLOBAL USERNAME? <>>
|
||||
|
||||
<ROUTINE CANT-USE-COMPUTER? ("AUX" (COMP <>))
|
||||
<COND (<ACCESSIBLE? ,PC> <SET COMP ,PC>)
|
||||
(<ACCESSIBLE? ,LOVECRAFT> <SET COMP ,LOVECRAFT>)
|
||||
(ELSE
|
||||
<TELL "Login on what?" CR>
|
||||
<RTRUE>)>
|
||||
<COND (<POWER-ON-FIRST? .COMP> <RTRUE>)
|
||||
(<EQUAL? .COMP ,LOVECRAFT>
|
||||
<TELL S "\"Unable to boot because: No disk inserted. Please
|
||||
insert a dismountable disk.\"" CR>
|
||||
<RTRUE>)>>
|
||||
|
||||
<ROUTINE V-LOGIN ()
|
||||
<COND (<CANT-USE-COMPUTER?> <RTRUE>)
|
||||
(<AND <PRSO? ,INTNAME>
|
||||
<EQUAL? ,P-NAME ,W?XYZZY>>
|
||||
<SETG USERNAME? ,W?XYZZY>)
|
||||
(ELSE
|
||||
<SETG USERNAME? T>)>
|
||||
<TELL
|
||||
,COMPUTER-RESPONDS "PASSWORD PLEASE:\"" CR>>
|
||||
|
||||
<GLOBAL COMPUTER-RESPONDS "The computer responds \"">
|
||||
|
||||
<ROUTINE POWER-ON-FIRST? (COMP)
|
||||
<COND (<NOT <FSET? .COMP ,POWERBIT>>
|
||||
<TELL
|
||||
"It would help if you turned on the computer first." CR>
|
||||
<RTRUE>)>>
|
||||
|
||||
<ROUTINE V-PASSWORD ()
|
||||
<COND (<CANT-USE-COMPUTER?> <RTRUE>)
|
||||
(<AND <PRSO? ,INTNAME>
|
||||
<EQUAL? ,P-NAME ,W?PLUGH>
|
||||
<EQUAL? ,USERNAME? ,W?XYZZY>>
|
||||
<SETG LOGGED-IN? T>
|
||||
<MOVE ,MENU-BOX ,PC>
|
||||
<TELL
|
||||
,COMPUTER-RESPONDS "Good evening. You're here awfully late.\" It
|
||||
displays a list of pending tasks, one of which is in blinking
|
||||
red letters, with large arrows pointing to it. The task reads \"Classics
|
||||
Paper,\" some particularly ominous words next to it say \"DUE
|
||||
TOMORROW!\" and more reassuringly, a menu box next to that
|
||||
reads " <GETP ,MENU-BOX ,P?TEXT> CR>)
|
||||
(ELSE
|
||||
<SETG USERNAME? <>>
|
||||
<SETG LOGGED-IN? <>>
|
||||
<TELL
|
||||
,COMPUTER-RESPONDS "INVALID LOGIN\" and then " ,LOGIN-PLEASE CR>)>>
|
||||
|
||||
<GLOBAL LOGIN-PLEASE "\"LOGIN PLEASE:\".">
|
||||
|
||||
<OBJECT MENU-BOX
|
||||
(DESC "menu box")
|
||||
(SYNONYM BOX PAPER LIST)
|
||||
(ADJECTIVE EDIT MENU CLASSIC RED)
|
||||
(FLAGS NDESCBIT READBIT)
|
||||
(ACTION MENU-BOX-F)
|
||||
(TEXT
|
||||
"\"Edit Classics Paper.\"")>
|
||||
|
||||
<ROUTINE MOUSE-VERB? ()
|
||||
<VERB? PUSH RUB CLICK POINT EDIT ATTACK>>
|
||||
|
||||
<ROUTINE MENU-BOX-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"The most immediate thing you see is the red menu box that refers to
|
||||
an urgent task." CR>)
|
||||
(<MOUSE-VERB?>
|
||||
<REMOVE ,MENU-BOX>
|
||||
<MOVE ,YAK-WINDOW ,PC>
|
||||
<TELL
|
||||
"The menu box is replaced by the YAK text editor and menu boxes
|
||||
listing the titles of your files. The one for your paper is highlighted in a
|
||||
rather urgent-looking shade of red." CR>)>>
|
||||
|
||||
<OBJECT YAK-WINDOW
|
||||
(IN LOCAL-GLOBALS)
|
||||
(DESC "YAK editor")
|
||||
(SYNONYM WINDOW PAPER BOX)
|
||||
(ADJECTIVE MENU YAK EDITOR FORMATTER CLASSIC RED URGENT)
|
||||
(FLAGS NDESCBIT READBIT)
|
||||
(GENERIC GENERIC-PAPER-F)
|
||||
(ACTION YAK-WINDOW-F)
|
||||
(TEXT
|
||||
"\"YAK 5.3\"")>
|
||||
|
||||
<ROUTINE GENERIC-PAPER-F ()
|
||||
<COND (<IN? ,YAK-WINDOW ,PC> ,YAK-WINDOW)
|
||||
(ELSE ,ODD-PAPER)>>
|
||||
|
||||
<ROUTINE YAK-WINDOW-F ()
|
||||
<COND (<IN? ,YAK-WINDOW ,GLOBAL-OBJECTS>
|
||||
<COND (<NOT <ABSTRACT-VERB?>>
|
||||
<YOU-SEE-NO ,YAK-WINDOW>)>)
|
||||
(<VERB? EXAMINE READ>
|
||||
<COND (<EQUAL? <GET ,P-NAMW 0> ,W?BOX ,W?SCREEN>
|
||||
<TELL
|
||||
"There's one for your paper." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
,YOU-HAVE-TO "touch the box for it first." CR>)>)
|
||||
(<MOUSE-VERB?>
|
||||
<MOVE ,YAK-WINDOW ,GLOBAL-OBJECTS>
|
||||
<MOVE ,MORE-BOX ,PC>
|
||||
<SETG READ-PAGE? <>>
|
||||
<TELL
|
||||
"You click the box for your paper, and">
|
||||
<COND (<NOT <FSET? ,ODD-PAPER ,TOUCHBIT>>
|
||||
<MOVE ,ODD-PAPER ,PC>
|
||||
<TELL
|
||||
" the box grows reassuringly until
|
||||
it fills most of the screen. Unfortunately, the text that fills it
|
||||
bears no resemblance to your paper. The title is the same, but after
|
||||
that, there is something different, very different." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
,LC-NOTHING-HAPPENS " \"Your paper is lost!\" reminds the hacker." CR>)>)>>
|
||||
|
||||
<OBJECT MORE-BOX
|
||||
(DESC "more box")
|
||||
(SYNONYM BOX)
|
||||
(ADJECTIVE MORE)
|
||||
(FLAGS READBIT NDESCBIT)
|
||||
(ACTION MORE-BOX-F)>
|
||||
|
||||
<ROUTINE MORE-BOX-F ()
|
||||
<COND (<VERB? READ>
|
||||
<TELL "It says \"MORE\" in a subdued typeface." CR>)
|
||||
(<MOUSE-VERB?>
|
||||
<COND (<NOT ,READ-PAGE?>
|
||||
<TELL
|
||||
"You haven't read the page yet. You probably shouldn't touch the MORE
|
||||
box until then." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"You touch the MORE box, and a new page appears." CR>)>)>>
|
||||
|
||||
<OBJECT ODD-PAPER
|
||||
(DESC "classics paper")
|
||||
(SYNONYM PAPER TEXT PAGE)
|
||||
(ADJECTIVE MY STRANGE ODD CLASSIC)
|
||||
(FLAGS READBIT NDESCBIT)
|
||||
(GENERIC GENERIC-PAPER-F)
|
||||
(ACTION ODD-PAPER-F)>
|
||||
|
||||
<GLOBAL ALREADY-DISPLAYED
|
||||
"It's already displayed. It hasn't changed, either.|">
|
||||
|
||||
<ROUTINE ODD-PAPER-F ()
|
||||
<COND (<IN? ,ODD-PAPER ,GLOBAL-OBJECTS>
|
||||
<COND (<NOT <ABSTRACT-VERB?>>
|
||||
<TELL "It's been lost!" CR>)>)
|
||||
(<MOUSE-VERB?>
|
||||
<TELL ,ALREADY-DISPLAYED>)
|
||||
(<VERB? READ EXAMINE>
|
||||
<SETG READ-PAGE? T>
|
||||
<COND (<QUEUE I-COMPULSION 2 T>
|
||||
<SETG COMPCNT 1>
|
||||
<TELL <GET ,COMPDESCS ,COMPCNT> CR CR
|
||||
"As you look at it more closely, you
|
||||
find it hard to focus on the screen, but impossible to look away. Your
|
||||
finger strays toward the \"MORE\" box..." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"You click the \"MORE\" box and read what appears." CR>)>)>>
|
||||
|
||||
<GLOBAL READ-PAGE? <>>
|
||||
|
||||
<GLOBAL COMPCNT 0>
|
||||
|
||||
<ROUTINE I-COMPULSION ()
|
||||
<FSET ,ODD-PAPER ,TOUCHBIT>
|
||||
<COND (<G? <SETG COMPCNT <+ ,COMPCNT 1>> <GET ,COMPDESCS 0>>
|
||||
<TELL CR "You faint, and when you awaken..." CR CR>
|
||||
<DEQUEUE I-COMPULSION>
|
||||
<REMOVE ,MORE-BOX>
|
||||
<MOVE ,MENU-BOX ,PC>
|
||||
<COND (<NOT <IN? ,PLAYER ,HERE>>
|
||||
<MOVE ,PLAYER ,HERE>)>
|
||||
<ROB ,PLAYER ,FROB>
|
||||
<GOTO ,YUGGOTH>)
|
||||
(ELSE
|
||||
<QUEUE I-COMPULSION 1>
|
||||
<SETG READ-PAGE? T>
|
||||
<TELL CR <GET ,COMPDESCS ,COMPCNT> CR>)>>
|
||||
|
||||
<GLOBAL COMPDESCS <LTABLE (PURE)
|
||||
"The paper appears to be a facsimile overlaid with occasional typescript.
|
||||
The text is mostly in a sort of \"Olde English\" you've never seen before.
|
||||
What you read is a combination of incomprehensible gibberish, latinate
|
||||
pseudowords, debased Hebrew and Arabic scripts, and an occasional
|
||||
disquieting phrase in English."
|
||||
|
||||
"The second page is much like the first, but around the edges, not when
|
||||
you look at it straight, it's almost readable. There is something about
|
||||
a \"summoning,\" or a \"visitor.\""
|
||||
|
||||
"The third page is in the same script as the first, but laid out
|
||||
like a poem. There are woodcut illustrations
|
||||
which are queasily disturbing.|
|
||||
|
|
||||
There is a translation, or notes for one, typed
|
||||
between the lines of the poem:|
|
||||
|
|
||||
\"He returns, he is called back (?)|
|
||||
The loyal ones (acolytes?) make a sacrifice|
|
||||
Those who survive will meet him (be absorbed? eaten?)|
|
||||
They will live, yet die|
|
||||
Forever will be (is?) nothing to them (to him?)|
|
||||
|
|
||||
\"His place (lair? burrow?) must be prepared|
|
||||
His food (offerings?) must be prepared|
|
||||
Call him forth (invite him?) with great power|
|
||||
Only an acceptable (tasteful?) sacrifice will call him forth|
|
||||
He will be grateful (satiated?)\"|
|
||||
|
|
||||
The rest is even more fragmentary."
|
||||
|
||||
"The fourth page is a
|
||||
photograph. You try to recoil from the screen, but cannot. Fascinated
|
||||
and repelled at the same time, you wonder: is that a mouth, and what
|
||||
is in it?">>
|
||||
|
||||
<OBJECT PROGRAM
|
||||
(IN LOCAL-GLOBALS)
|
||||
(DESC "program")
|
||||
(SYNONYM PROGRAM BUG PROBLEM)
|
||||
(ADJECTIVE ASSEMBLY)
|
||||
(FLAGS NDESCBIT)>
|
|
@ -0,0 +1,30 @@
|
|||
"RECORD for
|
||||
The Lurking Horror
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<SYNTAX \#RANDOM OBJECT = V-$RANDOM>
|
||||
<SYNTAX \#COMMAND = V-$COMMAND>
|
||||
<SYNTAX \#RECORD = V-$RECORD>
|
||||
<SYNTAX \#UNRECORD = V-$UNRECORD>
|
||||
|
||||
<ROUTINE V-$COMMAND ()
|
||||
<DIRIN 1>
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE V-$RANDOM ()
|
||||
<COND (<NOT <PRSO? ,INTNUM>>
|
||||
<TELL "Illegal call to #RANDOM." CR>)
|
||||
(T
|
||||
<RANDOM <- 0 ,P-NUMBER>>
|
||||
<RTRUE>)>>
|
||||
|
||||
<CONSTANT D-RECORD-ON 4>
|
||||
<CONSTANT D-RECORD-OFF -4>
|
||||
|
||||
<ROUTINE V-$RECORD ()
|
||||
<DIROUT ,D-RECORD-ON> ;"all READS and INPUTS get sent to command file"
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE V-$UNRECORD ()
|
||||
<DIROUT ,D-RECORD-OFF>
|
||||
<RTRUE>>
|
|
@ -0,0 +1,737 @@
|
|||
"SYNTAX for
|
||||
The Lurking Horror
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<BUZZ XYZZY PLUGH> ;"username/password"
|
||||
|
||||
<BUZZ A AN THE IS ARE AM AND OF THEN ALL ONE BUT EXCEPT \. \, \"
|
||||
;PLEASE ;HERE ;SOME G AGAIN OOPS O>
|
||||
|
||||
<PREP-SYNONYM WITH USING>
|
||||
<PREP-SYNONYM THROUGH THRU>
|
||||
<PREP-SYNONYM ON ONTO>
|
||||
<PREP-SYNONYM IN INSIDE INTO>
|
||||
<PREP-SYNONYM UNDER BELOW BENEATH UNDERNEATH>
|
||||
<PREP-SYNONYM AROUND ALONG>
|
||||
|
||||
<SYNONYM ALL BOTH EVERYTHING>
|
||||
|
||||
\
|
||||
|
||||
;"game commands"
|
||||
|
||||
<SYNTAX VERBOSE = V-VERBOSE>
|
||||
|
||||
<SYNTAX BRIEF = V-BRIEF>
|
||||
|
||||
<SYNTAX SUPER = V-SUPER-BRIEF>
|
||||
<VERB-SYNONYM SUPER SUPERBRIEF>
|
||||
|
||||
<SYNTAX DIAGNOSE = V-DIAGNOSE>
|
||||
|
||||
<SYNTAX I = V-INVENTORY>
|
||||
<VERB-SYNONYM I INVENTORY>
|
||||
|
||||
<SYNTAX QUIT = V-QUIT>
|
||||
<VERB-SYNONYM QUIT Q>
|
||||
|
||||
<SYNTAX RESTAR = V-RESTART>
|
||||
|
||||
<SYNTAX RESTOR = V-RESTORE>
|
||||
|
||||
<SYNTAX SAVE = V-SAVE>
|
||||
|
||||
<SYNTAX SCORE = V-SCORE>
|
||||
|
||||
<SYNTAX SCRIPT = V-SCRIPT>
|
||||
|
||||
<SYNTAX UNSCRIPT = V-UNSCRIPT>
|
||||
|
||||
<SYNTAX VERSION = V-VERSION>
|
||||
|
||||
<SYNTAX $VERIFY = V-$VERIFY>
|
||||
<SYNTAX $VERIFY OBJECT = V-$VERIFY>
|
||||
|
||||
\
|
||||
|
||||
;"subtitle real verbs"
|
||||
|
||||
<SYNTAX ANSWER = V-ANSWER>
|
||||
<SYNTAX ANSWER OBJECT = V-REPLY>
|
||||
<VERB-SYNONYM ANSWER REPLY RESPOND>
|
||||
|
||||
<SYNTAX APPLY OBJECT (HELD MANY HAVE) TO OBJECT = V-PUT PRE-PUT>
|
||||
|
||||
<SYNTAX ASK FOR OBJECT = V-ASK-FOR PRE-ASK-FOR>
|
||||
<SYNTAX ASK OBJECT (FIND PERSON) FOR OBJECT = V-ASK-FOR PRE-ASK-FOR>
|
||||
<SYNTAX ASK ABOUT OBJECT = V-ASK-ABOUT PRE-ASK-ABOUT>
|
||||
<SYNTAX ASK OBJECT (FIND PERSON) ABOUT OBJECT = V-ASK-ABOUT PRE-ASK-ABOUT>
|
||||
<VERB-SYNONYM ASK QUIZ>
|
||||
|
||||
<SYNTAX ATTACK OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-ATTACK>
|
||||
<SYNTAX ATTACK OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-ATTACK>
|
||||
<VERB-SYNONYM ATTACK FIGHT HIT STRIKE>
|
||||
|
||||
<SYNTAX BITE OBJECT = V-BITE>
|
||||
|
||||
;<SYNTAX BLOW UP OBJECT = V-INFLATE>
|
||||
<SYNTAX BLOW OUT OBJECT = V-LAMP-OFF>
|
||||
|
||||
<SYNTAX BOARD OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
|
||||
<VERB-SYNONYM BOARD RIDE>
|
||||
|
||||
<SYNTAX BURN OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM HAVE) = V-BURN>
|
||||
<SYNTAX BURN DOWN OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM HAVE) = V-BURN>
|
||||
<VERB-SYNONYM BURN IGNITE>
|
||||
|
||||
<SYNTAX CLIMB OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-FOO>
|
||||
<SYNTAX CLIMB ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
|
||||
<SYNTAX CLIMB UP OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
|
||||
<SYNTAX CLIMB DOWN OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
|
||||
<SYNTAX CLIMB OVER OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-OVER>
|
||||
<SYNTAX CLIMB IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
|
||||
<SYNTAX CLIMB OFF OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
|
||||
<SYNTAX CLIMB OUT OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
|
||||
<VERB-SYNONYM CLIMB SCALE>
|
||||
|
||||
<SYNTAX COVER OBJECT WITH OBJECT (ON-GROUND IN-ROOM) = V-SPUT-ON PRE-SPUT-ON>
|
||||
|
||||
<SYNTAX DESCEN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
|
||||
|
||||
<SYNTAX LIE DOWN OBJECT (FIND RLANDBIT) = V-SLEEP>
|
||||
<SYNTAX LIE ON OBJECT (FIND VEHBIT) = V-BOARD>
|
||||
;<VERB-SYNONYM LIE>
|
||||
|
||||
<SYNTAX CLOSE OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
= V-CLOSE>
|
||||
<SYNTAX CLOSE OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND WEAPONBIT) = V-CLOSE>
|
||||
<VERB-SYNONYM CLOSE SHUT>
|
||||
|
||||
<SYNTAX COMPARE OBJECT (MANY) = V-COMPARE-MANY>
|
||||
<SYNTAX COMPARE OBJECT TO OBJECT = V-COMPARE>
|
||||
<SYNTAX COMPARE OBJECT WITH OBJECT = V-COMPARE>
|
||||
|
||||
<SYNTAX COUNT OBJECT = V-WASTE-OF-TIME <> COUNT>
|
||||
<SYNTAX COUNT OBJECT IN OBJECT = V-WASTE-OF-TIME <> COUNT>
|
||||
;<VERB-SYNONYM COUNT>
|
||||
|
||||
<SYNTAX CROSS OBJECT = V-CROSS>
|
||||
;<VERB-SYNONYM CROSS TRAVERSE>
|
||||
|
||||
<SYNTAX CUT OBJECT
|
||||
WITH OBJECT (FIND WEAPONBIT) (CARRIED HELD HAVE) = V-CUT>
|
||||
<SYNTAX CUT THROUGH OBJECT
|
||||
WITH OBJECT (FIND WEAPONBIT) (CARRIED HELD HAVE) = V-CUT>
|
||||
<VERB-SYNONYM CUT CHOP SLICE SLASH ;SEVER SPLIT ;DIVIDE PRUNE>
|
||||
|
||||
<SYNTAX SHIT = V-CURSE>
|
||||
;<SYNTAX SHIT OBJECT = V-CURSE>
|
||||
;<SYNTAX SHIT OFF OBJECT (FIND RLANDBIT) = V-CURSE>
|
||||
<VERB-SYNONYM SHIT DAMN FUCK>
|
||||
|
||||
<SYNTAX CRACK OBJECT (ON-GROUND IN-ROOM) = V-MUNG>
|
||||
<SYNTAX CRACK OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
|
||||
WITH OBJECT (HELD CARRIED TAKE HAVE) = V-MUNG>
|
||||
<SYNTAX CRACK DOWN OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
|
||||
WITH OBJECT (HELD CARRIED TAKE HAVE) = V-MUNG>
|
||||
<VERB-SYNONYM CRACK DESTROY BREAK SMASH WRECK SCRATCH ;SCUFF SCRAPE>
|
||||
|
||||
<SYNTAX DIG IN OBJECT = V-WASTE-OF-TIME <> DIG>
|
||||
<SYNTAX DIG WITH OBJECT = V-WASTE-OF-TIME <> DIG>
|
||||
<SYNTAX DIG THROUGH OBJECT = V-WASTE-OF-TIME <> DIG>
|
||||
<SYNTAX DIG OBJECT (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND TOOLBIT) (HELD CARRIED HAVE)
|
||||
= V-WASTE-OF-TIME <> DIG>
|
||||
<SYNTAX DIG IN OBJECT (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND TOOLBIT) (HELD CARRIED HAVE)
|
||||
= V-WASTE-OF-TIME <> DIG>
|
||||
;<VERB-SYNONYM DIG EXCAVATE>
|
||||
|
||||
<SYNTAX DISEMBARK = V-DISEMBARK>
|
||||
<SYNTAX DISEMBARK OBJECT (ON-GROUND IN-ROOM) = V-DISEMBARK>
|
||||
;<VERB-SYNONYM DISEMBARK DEBARK DISMOUNT>
|
||||
|
||||
<SYNTAX DRINK OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-DRINK>
|
||||
<SYNTAX DRINK FROM OBJECT (HELD CARRIED) = V-DRINK-FROM>
|
||||
<VERB-SYNONYM DRINK SIP SWALLOW>
|
||||
|
||||
<SYNTAX DROP OBJECT ;(FIND RLANDBIT) (HELD MANY HAVE) = V-DROP PRE-DROP>
|
||||
<SYNTAX DROP OBJECT (HELD MANY HAVE) DOWN OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX DROP OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX DROP OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX DROP FROM OBJECT = V-DROP PRE-DROP>
|
||||
<VERB-SYNONYM DROP DUMP>
|
||||
|
||||
<SYNTAX RELEASE OBJECT = V-RELEASE>
|
||||
|
||||
<SYNTAX EAT OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) = V-EAT>
|
||||
<VERB-SYNONYM EAT CONSUME ;TASTE ;INGEST GOBBLE>
|
||||
|
||||
<SYNTAX TASTE OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) = V-TASTE>
|
||||
<VERB-SYNONYM TASTE SAMPLE>
|
||||
|
||||
<SYNTAX ENTER = V-ENTER>
|
||||
<SYNTAX ENTER OBJECT = V-THROUGH>
|
||||
|
||||
<SYNTAX EXIT = V-EXIT>
|
||||
<SYNTAX EXIT OBJECT = V-EXIT>
|
||||
<VERB-SYNONYM EXIT DEPART WITHDRAW>
|
||||
|
||||
<SYNTAX EXAMINE OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
= V-EXAMINE PRE-EXAMINE>
|
||||
<SYNTAX EXAMINE IN OBJECT (HELD CARRIED IN-ROOM ON-GROUND)
|
||||
= V-LOOK-INSIDE>
|
||||
<SYNTAX EXAMINE ON OBJECT (HELD CARRIED IN-ROOM ON-GROUND)
|
||||
= V-LOOK-INSIDE>
|
||||
<SYNTAX EXAMINE FOR OBJECT = V-FIND>
|
||||
<VERB-SYNONYM EXAMINE X ;INSPECT DESCRIBE CHECK ;OBSERVE WATCH>
|
||||
|
||||
;<SYNTAX EXORCISE OBJECT = V-EXORCISE>
|
||||
;<SYNTAX EXORCISE OUT OBJECT (FIND PERSON) = V-EXORCISE>
|
||||
;<SYNTAX EXORCISE AWAY OBJECT (FIND PERSON) = V-EXORCISE>
|
||||
;<VERB-SYNONYM EXORCISE BANISH DRIVE>
|
||||
|
||||
<SYNTAX EXTINGUISH OBJECT
|
||||
(MANY HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE) = V-LAMP-OFF>
|
||||
;<VERB-SYNONYM EXTINGUISH DOUSE>
|
||||
|
||||
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD TAKE HAVE) = V-FILL>
|
||||
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD TAKE HAVE)
|
||||
WITH OBJECT = V-FILL>
|
||||
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD TAKE HAVE)
|
||||
AT OBJECT = V-FILL>
|
||||
|
||||
<SYNTAX FIND OBJECT = V-FIND>
|
||||
;<VERB-SYNONYM FIND SEEK SEE>
|
||||
|
||||
;<SYNTAX FLY = V-FLY>
|
||||
;<SYNTAX FLY OBJECT = V-FLY>
|
||||
;<SYNONYM FLY LAUNCH>
|
||||
|
||||
<SYNTAX FOLLOW = V-FOLLOW>
|
||||
<SYNTAX FOLLOW OBJECT = V-FOLLOW>
|
||||
<VERB-SYNONYM FOLLOW ;PURSUE CHASE>
|
||||
|
||||
;<SYNTAX FORGET OBJECT = V-FORGET>
|
||||
;<VERB-SYNONYM FORGET UNLEARN ;UNMEMORIZE>
|
||||
|
||||
<SYNTAX GIVE OBJECT (MANY HELD CARRIED HAVE)
|
||||
TO OBJECT (FIND PERSON) (ON-GROUND) = V-GIVE PRE-GIVE>
|
||||
<SYNTAX GIVE OBJECT (FIND PERSON) (ON-GROUND) OBJECT (MANY HELD CARRIED HAVE)
|
||||
= V-SGIVE PRE-SGIVE>
|
||||
<SYNTAX GIVE OBJECT (FIND PERSON) (ON-GROUND)
|
||||
WITH OBJECT (MANY HELD CARRIED HAVE)
|
||||
= V-SGIVE PRE-SGIVE>
|
||||
<SYNTAX GIVE OBJECT (HELD CARRIED HAVE) FOR OBJECT = V-TRADE>
|
||||
<VERB-SYNONYM GIVE OFFER FEED ;PRESENT>
|
||||
|
||||
<SYNTAX HELLO = V-HELLO>
|
||||
<SYNTAX HELLO OBJECT = V-HELLO>
|
||||
<VERB-SYNONYM HELLO HI GREETINGS>
|
||||
|
||||
<SYNTAX HELP = V-HELP>
|
||||
<SYNTAX HELP OBJECT = V-HELP>
|
||||
<VERB-SYNONYM HELP HINT ;HINTS>
|
||||
|
||||
<SYNTAX HIDE = V-HIDE>
|
||||
<SYNTAX HIDE OBJECT (HELD HAVE) = V-HIDE>
|
||||
<SYNTAX HIDE UNDER OBJECT = V-HIDE>
|
||||
<SYNTAX HIDE BEHIND OBJECT = V-HIDE>
|
||||
<SYNTAX HIDE OBJECT (HELD HAVE) FROM OBJECT = V-HIDE>
|
||||
<SYNTAX HIDE IN OBJECT = V-BOARD>
|
||||
<SYNTAX HIDE FROM OBJECT = V-HIDE-FROM>
|
||||
<VERB-SYNONYM HIDE CONCEAL ;STASH>
|
||||
|
||||
;<SYNTAX INFLAT OBJECT = V-INFLATE>
|
||||
|
||||
<SYNTAX JUMP = V-LEAP>
|
||||
<SYNTAX JUMP OVER OBJECT = V-LEAP>
|
||||
<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
|
||||
<SYNTAX JUMP IN OBJECT = V-LEAP>
|
||||
<SYNTAX JUMP FROM OBJECT = V-LEAP>
|
||||
<SYNTAX JUMP DOWN OBJECT (FIND RLANDBIT) = V-LEAP>
|
||||
<SYNTAX JUMP OFF OBJECT = V-LEAP>
|
||||
<SYNTAX JUMP ON OBJECT = V-CLIMB-ON>
|
||||
<SYNTAX JUMP TO OBJECT = V-CLIMB-ON>
|
||||
<VERB-SYNONYM JUMP LEAP DIVE>
|
||||
|
||||
<SYNTAX KICK OBJECT = V-KICK PRE-OPEN>
|
||||
|
||||
<SYNTAX KILL OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-KILL>
|
||||
<SYNTAX KILL OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-KILL>
|
||||
<VERB-SYNONYM KILL MURDER SLAY STAB>
|
||||
|
||||
<SYNTAX KISS OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-KISS>
|
||||
|
||||
<SYNTAX KNOCK AT OBJECT = V-KNOCK>
|
||||
<SYNTAX KNOCK ON OBJECT = V-KNOCK>
|
||||
<SYNTAX KNOCK DOWN OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-ATTACK>
|
||||
<VERB-SYNONYM KNOCK RAP>
|
||||
|
||||
;<SYNTAX LAND = V-LAND>
|
||||
|
||||
<SYNTAX LEAN ON OBJECT (HELD HAVE) = V-LEAN-ON>
|
||||
<SYNTAX LEAN OBJECT ON OBJECT = V-RAISE>
|
||||
<SYNTAX LEAN OBJECT AGAINST OBJECT = V-RAISE>
|
||||
|
||||
<SYNTAX LEAVE = V-LEAVE>
|
||||
<SYNTAX LEAVE OBJECT = V-DROP PRE-DROP>
|
||||
|
||||
<SYNTAX LISTEN = V-LISTEN>
|
||||
<SYNTAX LISTEN TO OBJECT = V-LISTEN>
|
||||
<SYNTAX LISTEN FOR OBJECT = V-LISTEN>
|
||||
|
||||
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT
|
||||
(HELD CARRIED HAVE) = V-LOCK>
|
||||
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) TO OBJECT = V-LOCK>
|
||||
|
||||
<SYNTAX LOOK = V-LOOK>
|
||||
<SYNTAX LOOK AROUND OBJECT (FIND RLANDBIT) = V-LOOK>
|
||||
<SYNTAX LOOK DOWN OBJECT (FIND RLANDBIT) = V-LOOK-DOWN>
|
||||
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
= V-EXAMINE PRE-EXAMINE>
|
||||
<SYNTAX LOOK THROUGH OBJECT = V-LOOK-INSIDE>
|
||||
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER>
|
||||
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
|
||||
<SYNTAX LOOK ON OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
= V-LOOK-INSIDE>
|
||||
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-LOOK-INSIDE>
|
||||
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM TAKE) THROUGH OBJECT
|
||||
= V-READ PRE-READ>
|
||||
<SYNTAX LOOK UP OBJECT (FIND RLANDBIT) = V-LOOK-UP>
|
||||
<SYNTAX LOOK UP OBJECT IN OBJECT = V-WHAT>
|
||||
<SYNTAX LOOK FOR OBJECT = V-FIND>
|
||||
<SYNTAX LOOK OBJECT = V-CHASTISE>
|
||||
<VERB-SYNONYM LOOK L STARE GAZE>
|
||||
|
||||
<SYNTAX LOWER OBJECT = V-LOWER>
|
||||
<SYNTAX LOWER OBJECT IN OBJECT = V-LOWER-INTO>
|
||||
<SYNTAX LOWER OBJECT DOWN OBJECT = V-LOWER-INTO>
|
||||
|
||||
<SYNTAX MELT OBJECT WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-MELT>
|
||||
<VERB-SYNONYM MELT THAW>
|
||||
|
||||
<SYNTAX MOVE = V-WALK-AROUND>
|
||||
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
|
||||
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT = V-PRY PRE-PRY>
|
||||
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM)
|
||||
TO OBJECT = V-PUSH-TO>
|
||||
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM)
|
||||
ON OBJECT = V-PUSH-TO>
|
||||
<SYNTAX ROLL UP OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
|
||||
<VERB-SYNONYM MOVE SHIFT CLEAR>
|
||||
|
||||
;<SYNTAX PAY OBJECT (MANY HELD HAVE) = V-PAY>
|
||||
;<SYNTAX PAY OBJECT (FIND PERSON) WITH OBJECT (MANY HELD HAVE) = V-PAY>
|
||||
;<SYNTAX PAY OBJECT (MANY HELD HAVE) TO OBJECT (FIND PERSON) = V-SPAY>
|
||||
;<SYNTAX PAY OBJECT (FIND PERSON) OBJECT (MANY HELD HAVE) = V-PAY>
|
||||
|
||||
;<SYNTAX PLAY OBJECT = V-PLAY>
|
||||
|
||||
<SYNTAX PRAY = V-PRAY>
|
||||
|
||||
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
|
||||
<SYNTAX PULL ON OBJECT (ON-GROUND IN-ROOM) = V-MOVE>
|
||||
<SYNTAX PULL DOWN OBJECT = V-LOWER>
|
||||
<VERB-SYNONYM PULL TUG DRAG>
|
||||
|
||||
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
= V-OPEN PRE-OPEN>
|
||||
<SYNTAX OPEN UP OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
= V-OPEN PRE-OPEN>
|
||||
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED)
|
||||
= V-OPEN PRE-OPEN>
|
||||
;<VERB-SYNONYM OPEN UNZIP>
|
||||
|
||||
<SYNTAX PICK OBJECT = V-PICK>
|
||||
<SYNTAX PICK OBJECT WITH OBJECT = V-PICK>
|
||||
<SYNTAX PICK UP OBJECT (FIND TAKEBIT) (ON-GROUND MANY) = V-TAKE PRE-TAKE>
|
||||
|
||||
<SYNTAX PLUG OBJECT WITH OBJECT = V-PLUG>
|
||||
<SYNTAX PLUG IN OBJECT = V-PLUG-IN>
|
||||
<SYNTAX PLUG OBJECT IN OBJECT = V-PLUG>
|
||||
<VERB-SYNONYM PLUG ;CLOG ;BLOCK SCREW>
|
||||
|
||||
<SYNTAX UNPLUG OBJECT = V-UNPLUG>
|
||||
<SYNTAX UNPLUG OBJECT FROM OBJECT = V-UNTIE>
|
||||
<SYNTAX UNPLUG OBJECT WITH OBJECT = V-PRY PRE-PRY>
|
||||
<VERB-SYNONYM UNPLUG UNSCREW>
|
||||
|
||||
<SYNTAX REPAIR OBJECT = V-REPAIR>
|
||||
<SYNTAX REPAIR OBJECT WITH OBJECT = V-REPAIR>
|
||||
<VERB-SYNONYM REPAIR PATCH FIX>
|
||||
|
||||
<SYNTAX POINT AT OBJECT = V-POINT>
|
||||
<SYNTAX POINT TO OBJECT = V-POINT>
|
||||
<VERB-SYNONYM POINT GESTURE>
|
||||
|
||||
;<SYNTAX POKE OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED TAKE HAVE) = V-MUNG>
|
||||
;<VERB-SYNONYM POKE JAB BLIND>
|
||||
|
||||
<SYNTAX POUR OBJECT (HELD CARRIED) = V-POUR PRE-POUR>
|
||||
<SYNTAX POUR OBJECT (HELD CARRIED) IN OBJECT = V-PUT>
|
||||
<SYNTAX POUR OBJECT (HELD CARRIED) ON OBJECT = V-POUR PRE-POUR>
|
||||
<SYNTAX POUR OBJECT (HELD CARRIED) OVER OBJECT = V-POUR PRE-POUR>
|
||||
<SYNTAX POUR OBJECT (HELD CARRIED) THROUGH OBJECT = V-POUR PRE-POUR>
|
||||
<SYNTAX POUR OBJECT (HELD CARRIED) FROM OBJECT = V-POUR-FROM>
|
||||
<VERB-SYNONYM POUR EMPTY SPILL>
|
||||
|
||||
;<SYNTAX PUMP UP OBJECT = V-PUMP>
|
||||
;<SYNTAX PUMP UP OBJECT WITH OBJECT = V-PUMP>
|
||||
|
||||
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND) = V-PUSH>
|
||||
<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND) = V-PUSH>
|
||||
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND) OBJECT = V-PUSH-TO>
|
||||
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND) TO OBJECT = V-PUSH-TO>
|
||||
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND) ON OBJECT = V-PUSH-TO>
|
||||
<SYNTAX PUSH OBJECT UNDER OBJECT = V-PUT-UNDER>
|
||||
<SYNTAX PUSH DOWN OBJECT (FIND RLANDBIT) = V-PUSH-DOWN>
|
||||
<SYNTAX PUSH UP OBJECT (FIND RLANDBIT) = V-PUSH-UP>
|
||||
<VERB-SYNONYM PUSH PRESS SHOVE>
|
||||
|
||||
<SYNTAX PUT OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX PUT OBJECT (HELD MANY HAVE) DOWN OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX PUT OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT-ON PRE-PUT>
|
||||
<SYNTAX PUT OBJECT (HELD MANY HAVE) OVER OBJECT = V-PUT-ON PRE-PUT>
|
||||
<SYNTAX PUT OBJECT (HELD MANY HAVE) ACROSS OBJECT = V-PUT-ON PRE-PUT>
|
||||
<SYNTAX PUT DOWN OBJECT (HELD MANY) = V-DROP PRE-DROP>
|
||||
<SYNTAX PUT OBJECT (HELD MANY HAVE) UNDER OBJECT = V-PUT-UNDER>
|
||||
<SYNTAX PUT ON OBJECT (HELD CARRIED ON-GROUND IN-ROOM HAVE TAKE MANY) = V-WEAR>
|
||||
<SYNTAX PUT OBJECT (HELD MANY HAVE) BEHIND OBJECT = V-PUT-BEHIND>
|
||||
<SYNTAX PUT OBJECT (HELD HAVE) BETWEEN OBJECT = V-PUT-BETWEEN>
|
||||
<SYNTAX PUT OBJECT (HELD HAVE) AROUND OBJECT = V-TIE>
|
||||
<SYNTAX PUT UP OBJECT = V-RAISE>
|
||||
<VERB-SYNONYM PUT ;STUFF INSERT PLACE LAY ;FIT>
|
||||
|
||||
<SYNTAX RAISE OBJECT = V-RAISE>
|
||||
<SYNTAX RAISE UP OBJECT = V-RAISE>
|
||||
<SYNTAX RAISE OBJECT WITH OBJECT = V-PRY PRE-PRY>
|
||||
<SYNTAX RAISE UP OBJECT WITH OBJECT = V-PRY PRE-PRY>
|
||||
<VERB-SYNONYM RAISE LIFT ERECT>
|
||||
|
||||
<SYNTAX REACH IN OBJECT (ON-GROUND IN-ROOM) = V-REACH-IN>
|
||||
<SYNTAX REACH IN OBJECT (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (HELD CARRIED HAVE) = V-REACH-IN>
|
||||
<SYNTAX REACH UNDER OBJECT (ON-GROUND IN-ROOM) = V-SEARCH>
|
||||
|
||||
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
= V-READ PRE-READ>
|
||||
;<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
THROUGH OBJECT = V-READ PRE-READ>
|
||||
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
TO OBJECT (FIND PERSON) = V-SHOW>
|
||||
<SYNTAX READ ABOUT OBJECT = V-WHAT>
|
||||
;<SYNTAX READ ABOUT OBJECT IN OBJECT = V-WHAT>
|
||||
;<VERB-SYNONYM READ>
|
||||
|
||||
<SYNTAX REMOVE OBJECT = V-TAKE-OFF>
|
||||
<SYNTAX REMOVE OBJECT WITH OBJECT = V-PRY PRE-PRY>
|
||||
<SYNTAX REMOVE OBJECT FROM OBJECT = V-TAKE PRE-TAKE>
|
||||
<VERB-SYNONYM REMOVE SHED>
|
||||
|
||||
<SYNTAX SAY TO OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
|
||||
<SYNTAX SAY = V-SAY>
|
||||
<SYNTAX SAY OBJECT = V-SAY>
|
||||
<VERB-SYNONYM SAY TALK CALL>
|
||||
|
||||
<SYNTAX SEARCH OBJECT = V-SEARCH>
|
||||
<SYNTAX SEARCH IN OBJECT = V-SEARCH>
|
||||
<SYNTAX SEARCH FOR OBJECT = V-FIND>
|
||||
<VERB-SYNONYM SEARCH RUMMAGE ;FRISK>
|
||||
|
||||
;<SYNTAX SEND FOR OBJECT = V-SEND>
|
||||
|
||||
<SYNTAX SHAKE OBJECT = V-SHAKE>
|
||||
<SYNTAX SHAKE OBJECT AT OBJECT = V-WAVE-AT>
|
||||
<VERB-SYNONYM SHAKE ;JOSTLE RATTLE>
|
||||
|
||||
<SYNTAX SHARPEN OBJECT WITH OBJECT = V-SHARPEN>
|
||||
<SYNTAX SHARPEN OBJECT ON OBJECT = V-SHARPEN>
|
||||
<VERB-SYNONYM SHARPEN HONE>
|
||||
|
||||
<SYNTAX SHOOT OBJECT = V-SHOOT>
|
||||
;<VERB-SYNONYM SHOOT FIRE>
|
||||
|
||||
<SYNTAX SHOW OBJECT TO OBJECT (FIND PERSON) = V-SHOW>
|
||||
<SYNTAX SHOW OBJECT (FIND PERSON) OBJECT = V-SSHOW PRE-SSHOW>
|
||||
|
||||
<SYNTAX SIT ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-SIT>
|
||||
<SYNTAX SIT DOWN OBJECT (FIND RLANDBIT) (ON-GROUND IN-ROOM) = V-SIT>
|
||||
<SYNTAX SIT IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
|
||||
<SYNTAX SIT AT OBJECT = V-SIT <> SIT-AT>
|
||||
<VERB-SYNONYM SIT REST ;MEDITATE>
|
||||
|
||||
<SYNTAX SKIP = V-SKIP>
|
||||
<VERB-SYNONYM SKIP HOP ;CAVORT ;GAMBOL>
|
||||
|
||||
<SYNTAX SLEEP = V-SLEEP>
|
||||
<SYNTAX SLEEP IN OBJECT (IN-ROOM ON-GROUND) = V-BOARD>
|
||||
<SYNTAX SLEEP ON OBJECT (IN-ROOM ON-GROUND) = V-BOARD>
|
||||
<VERB-SYNONYM SLEEP NAP ;SNOOZE>
|
||||
|
||||
<SYNTAX SLIDE OBJECT = V-MOVE>
|
||||
<SYNTAX SLIDE ON OBJECT = V-BOARD>
|
||||
<SYNTAX SLIDE OBJECT UNDER OBJECT = V-PUT-UNDER>
|
||||
|
||||
<SYNTAX SMELL = V-SMELL>
|
||||
<SYNTAX SMELL OBJECT = V-SMELL>
|
||||
<VERB-SYNONYM SMELL SNIFF>
|
||||
|
||||
;<SYNTAX SPIN OBJECT = V-SPIN>
|
||||
;<VERB-SYNONYM SPIN WHIRL ROTATE>
|
||||
|
||||
<SYNTAX STAND = V-STAND>
|
||||
<SYNTAX STAND UP OBJECT (FIND RLANDBIT) = V-STAND>
|
||||
<SYNTAX STAND IN OBJECT = V-BOARD>
|
||||
<SYNTAX STAND ON OBJECT = V-WASTE-OF-TIME <> STAND-ON>
|
||||
<SYNTAX STAND OBJECT AGAINST OBJECT = V-RAISE>
|
||||
<VERB-SYNONYM STAND RISE>
|
||||
|
||||
<SYNTAX START OBJECT = V-LAMP-ON>
|
||||
<SYNTAX START UP OBJECT = V-LAMP-ON>
|
||||
|
||||
<SYNTAX SWIM = V-SWIM>
|
||||
<SYNTAX SWIM IN OBJECT = V-SWIM>
|
||||
<VERB-SYNONYM SWIM WADE>
|
||||
|
||||
<SYNTAX SWING OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-SWING>
|
||||
<SYNTAX SWING OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
|
||||
AT OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-SWING>
|
||||
<VERB-SYNONYM SWING THRUST>
|
||||
|
||||
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY) = V-TAKE PRE-TAKE>
|
||||
<SYNTAX TAKE IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
|
||||
<SYNTAX TAKE OUT OBJECT (FIND RLANDBIT) (ON-GROUND) = V-DISEMBARK>
|
||||
<SYNTAX TAKE ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
|
||||
<SYNTAX TAKE UP OBJECT (FIND RLANDBIT) = V-STAND>
|
||||
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY)
|
||||
OUT OBJECT = V-TAKE PRE-TAKE>
|
||||
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY)
|
||||
OFF OBJECT = V-TAKE PRE-TAKE>
|
||||
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
|
||||
FROM OBJECT = V-TAKE PRE-TAKE>
|
||||
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
|
||||
IN OBJECT = V-TAKE PRE-TAKE>
|
||||
<SYNTAX TAKE OFF OBJECT = V-TAKE-OFF>
|
||||
<SYNTAX TAKE DOWN OBJECT = V-LOWER>
|
||||
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
|
||||
WITH OBJECT = V-PRY PRE-PRY>
|
||||
<VERB-SYNONYM TAKE GRAB CATCH GET HOLD CARRY SNATCH>
|
||||
|
||||
<SYNTAX TELL OBJECT (FIND PERSON) (HELD CARRIED IN-ROOM) = V-TELL>
|
||||
<SYNTAX TELL OBJECT ABOUT OBJECT = V-TELL-ABOUT PRE-TELL-ABOUT>
|
||||
<SYNTAX TELL OBJECT OBJECT = V-REPLY>
|
||||
<SYNTAX TELL ABOUT OBJECT = V-TELL-ME-ABOUT>
|
||||
|
||||
<SYNTAX THANK OBJECT = V-THANK>
|
||||
<SYNTAX THANK = V-THANK>
|
||||
<VERB-SYNONYM THANK THANKS>
|
||||
|
||||
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) = V-THROW>
|
||||
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
|
||||
AT OBJECT (ON-GROUND IN-ROOM) = V-THROW>
|
||||
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
|
||||
TO OBJECT (ON-GROUND IN-ROOM) = V-THROW>
|
||||
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) OFF OBJECT = V-THROW-OFF>
|
||||
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) OVER OBJECT = V-THROW-OFF>
|
||||
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
|
||||
THROUGH OBJECT (ON-GROUND IN-ROOM) = V-THROW>
|
||||
<SYNTAX THROW OBJECT (HELD MANY HAVE) DOWN OBJECT = V-THROW>
|
||||
<SYNTAX THROW OBJECT (HELD MANY HAVE) IN OBJECT = V-THROW>
|
||||
<SYNTAX THROW OBJECT (HELD MANY HAVE) ON OBJECT = V-THROW>
|
||||
<SYNTAX THROW AWAY OBJECT (HELD MANY HAVE) = V-DROP PRE-DROP>
|
||||
<SYNTAX THROW OBJECT (HELD MANY HAVE)
|
||||
AWAY OBJECT (FIND RLANDBIT) = V-DROP PRE-DROP>
|
||||
<VERB-SYNONYM THROW HURL TOSS PITCH>
|
||||
|
||||
<SYNTAX TIE OBJECT TO OBJECT = V-TIE>
|
||||
<SYNTAX TIE OBJECT AROUND OBJECT = V-TIE>
|
||||
<SYNTAX TIE OBJECT ON OBJECT = V-TIE>
|
||||
<SYNTAX TIE UP OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) WITH OBJECT
|
||||
(FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE) = V-TIE-UP>
|
||||
<VERB-SYNONYM TIE LOOP WRAP FASTEN ATTACH HOOK CONNECT>
|
||||
|
||||
<SYNTAX TIME = V-TIME>
|
||||
<VERB-SYNONYM TIME T>
|
||||
|
||||
<SYNTAX TORTUR OBJECT = V-TORTURE>
|
||||
|
||||
<SYNTAX TOUCH OBJECT = V-RUB>
|
||||
<SYNTAX TOUCH OBJECT WITH OBJECT = V-RUB>
|
||||
<SYNTAX TOUCH OBJECT TO OBJECT = V-SRUB PRE-SRUB>
|
||||
<VERB-SYNONYM TOUCH FEEL PAT PET RUB SQUEEZE>
|
||||
|
||||
<SYNTAX TURN OBJECT TO OBJECT = V-TURN>
|
||||
<SYNTAX TURN OBJECT = V-TURN>
|
||||
<SYNTAX TURN OBJECT WITH OBJECT (FIND TOOLBIT) (HAVE) = V-TURN>
|
||||
<SYNTAX TURN ON OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-LAMP-ON>
|
||||
<SYNTAX TURN OFF OBJECT (HELD CARRIED ON-GROUND IN-ROOM TAKE) = V-LAMP-OFF>
|
||||
<SYNTAX TURN OVER OBJECT = V-TURN-OVER>
|
||||
<SYNTAX TURN AROUND OBJECT (FIND RLANDBIT) = V-TURN-AROUND>
|
||||
<SYNTAX TURN UP OBJECT = V-LAMP-ON>
|
||||
<VERB-SYNONYM TURN FLIP POWER SET>
|
||||
|
||||
<SYNTAX STOP OBJECT = V-STOP>
|
||||
|
||||
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT) = V-LAMP-ON>
|
||||
<SYNTAX LIGHT UP OBJECT (FIND LIGHTBIT) = V-LAMP-ON>
|
||||
|
||||
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (HELD CARRIED HAVE) = V-UNLOCK>
|
||||
|
||||
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-UNTIE>
|
||||
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) FROM OBJECT = V-UNTIE>
|
||||
<VERB-SYNONYM UNTIE UNWRAP FREE UNFASTEN UNATTACH UNHOOK DISCONNECT DETACH>
|
||||
|
||||
<SYNTAX WAIT = V-WAIT>
|
||||
<SYNTAX WAIT OBJECT = V-WAIT>
|
||||
<SYNTAX WAIT FOR OBJECT = V-WAIT-FOR>
|
||||
<VERB-SYNONYM WAIT Z>
|
||||
|
||||
<SYNTAX SCARE OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-SCARE>
|
||||
<SYNTAX SCARE OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) WITH OBJECT = V-SCARE>
|
||||
<VERB-SYNONYM SCARE SURPRISE STARTLE CURDLE>
|
||||
|
||||
<SYNTAX WAKE OBJECT (FIND RLANDBIT) = V-WAKE>
|
||||
<SYNTAX WAKE UP OBJECT (FIND RLANDBIT) = V-WAKE>
|
||||
<VERB-SYNONYM WAKE AWAKE ;ROUSE>
|
||||
|
||||
<SYNTAX WALK = V-WALK-AROUND>
|
||||
<SYNTAX WALK OBJECT = V-WALK>
|
||||
<SYNTAX WALK IN OBJECT (FIND RLANDBIT) = V-THROUGH>
|
||||
<SYNTAX WALK ON OBJECT = V-STEP-ON>
|
||||
<SYNTAX WALK OVER OBJECT = V-LEAP>
|
||||
<SYNTAX WALK THROUGH OBJECT = V-THROUGH>
|
||||
<SYNTAX WALK AROUND OBJECT = V-WALK-AROUND>
|
||||
<SYNTAX WALK UP OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-UP>
|
||||
<SYNTAX WALK DOWN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
|
||||
<SYNTAX WALK TO OBJECT = V-WALK-TO>
|
||||
<SYNTAX WALK UNDER OBJECT = V-WALK-UNDER>
|
||||
<SYNTAX WALK AWAY OBJECT (FIND RLANDBIT) = V-LEAVE>
|
||||
<SYNTAX WALK OBJECT ON OBJECT = V-DRIVE-ON>
|
||||
<SYNTAX WALK OBJECT OVER OBJECT = V-DRIVE-ON>
|
||||
<SYNTAX WALK OBJECT OBJECT = V-DRIVE-TO>
|
||||
<VERB-SYNONYM WALK GO RUN PROCEED STEP DRIVE STEER>
|
||||
|
||||
<SYNTAX APPROACH OBJECT = V-WALK-TO>
|
||||
|
||||
<SYNTAX WAVE OBJECT (HELD CARRIED) = V-WAVE>
|
||||
<SYNTAX WAVE AT OBJECT = V-WAVE-AT>
|
||||
<SYNTAX WAVE TO OBJECT = V-WAVE-AT>
|
||||
<SYNTAX YELL AT OBJECT = V-WAVE-AT>
|
||||
<SYNTAX WAVE OBJECT (HELD CARRIED) AT OBJECT = V-WAVE>
|
||||
<VERB-SYNONYM WAVE ;MOTION BECKON>
|
||||
|
||||
<SYNTAX WEAR OBJECT (HELD CARRIED ON-GROUND IN-ROOM HAVE TAKE MANY) = V-WEAR>
|
||||
|
||||
<SYNTAX WHAT OBJECT = V-WHAT>
|
||||
<SYNTAX WHAT ABOUT OBJECT = V-WHAT>
|
||||
;<VERB-SYNONYM WHAT WHATS>
|
||||
|
||||
<SYNTAX WHERE = V-WHERE>
|
||||
<SYNTAX WHERE OBJECT = V-WHERE>
|
||||
;<VERB-SYNONYM WHERE WHERES>
|
||||
|
||||
<SYNTAX WHO = V-WHO>
|
||||
<SYNTAX WHO OBJECT = V-WHO>
|
||||
;<VERB-SYNONYM WHO WHOS>
|
||||
|
||||
<SYNTAX YAWN = V-YAWN>
|
||||
|
||||
<SYNTAX YELL = V-YELL>
|
||||
<VERB-SYNONYM YELL SCREAM SHOUT>
|
||||
|
||||
\^L
|
||||
|
||||
;"magic spell syntaxes"
|
||||
|
||||
;<SYNTAX LABEL OBJECT (HELD CARRIED) = V-SWRITE PRE-SWRITE>
|
||||
;<SYNTAX LABEL OBJECT (HELD CARRIED) WITH OBJECT = V-SWRITE PRE-SWRITE>
|
||||
|
||||
;<SYNTAX WRITE OBJECT = V-WRITE PRE-WRITE>
|
||||
;<SYNTAX WRITE OBJECT ON OBJECT (HELD CARRIED) = V-WRITE PRE-WRITE>
|
||||
;<SYNTAX WRITE OBJECT IN OBJECT (HELD CARRIED) = V-WRITE PRE-WRITE>
|
||||
;<SYNTAX WRITE ON OBJECT (HELD CARRIED) = V-WRITE-ON PRE-WRITE-ON>
|
||||
;<SYNTAX WRITE IN OBJECT (HELD CARRIED) = V-WRITE-ON PRE-WRITE-ON>
|
||||
;<SYNTAX WRITE ON OBJECT (HELD CARRIED)
|
||||
WITH OBJECT (FIND TOOLBIT) = V-WRITE-ON PRE-WRITE-ON>
|
||||
;<SYNTAX WRITE IN OBJECT (HELD CARRIED)
|
||||
WITH OBJECT (FIND TOOLBIT) = V-WRITE-ON PRE-WRITE-ON>
|
||||
;<VERB-SYNONYM WRITE PRINT INSCRIBE SCRIBE>
|
||||
|
||||
<SYNTAX PRY OBJECT WITH OBJECT = V-PRY PRE-PRY>
|
||||
<SYNTAX PRY OUT OBJECT WITH OBJECT = V-PRY PRE-PRY>
|
||||
<SYNONYM PRY LEVER>
|
||||
|
||||
<SYNTAX BURY OBJECT = V-BURY>
|
||||
<SYNTAX BURY OBJECT IN OBJECT = V-BURY>
|
||||
|
||||
<SYNTAX YES = V-YES>
|
||||
<VERB-SYNONYM YES Y OKAY>
|
||||
<SYNTAX NO = V-NO>
|
||||
<VERB-SYNONYM NO NOPE>
|
||||
|
||||
<SYNTAX BUY OBJECT FROM OBJECT (FIND PERSON) = V-BUY>
|
||||
<SYNTAX BUY OBJECT WITH OBJECT = V-BUY>
|
||||
<VERB-SYNONYM BUY PURCHASE>
|
||||
|
||||
<SYNTAX SELL OBJECT TO OBJECT (FIND PERSON) = V-SELL>
|
||||
<SYNTAX SELL OBJECT OBJECT = V-SSELL PRE-SSELL>
|
||||
|
||||
<SYNTAX TRADE OBJECT (HELD CARRIED HAVE) WITH OBJECT (FIND PERSON) = V-TRADE>
|
||||
<SYNTAX TRADE OBJECT (HELD CARRIED HAVE) FOR OBJECT = V-TRADE>
|
||||
<SYNTAX TRADE OBJECT (HELD CARRIED HAVE) = V-TRADE>
|
||||
|
||||
<SYNTAX ERASE OBJECT = V-ERASE>
|
||||
|
||||
<SYNTAX ADMIRE OBJECT (FIND PERSON) = V-ADMIRE>
|
||||
<VERB-SYNONYM ADMIRE COMPLIMENT>
|
||||
|
||||
;<SYNTAX COPY OBJECT (FIND READBIT)
|
||||
WITH OBJECT (FIND TOOLBIT) = V-COPY>
|
||||
;<SYNTAX COPY OBJECT (FIND READBIT)
|
||||
ON OBJECT = V-COPY>
|
||||
;<SYNTAX COPY OBJECT (FIND READBIT)
|
||||
TO OBJECT = V-COPY>
|
||||
;<SYNTAX COPY OBJECT (FIND READBIT) = V-COPY>
|
||||
|
||||
<SYNTAX BARGAIN WITH OBJECT (FIND PERSON) = V-BARGAIN>
|
||||
;<VERB-SYNONYM BARGAIN HAGGLE>
|
||||
|
||||
<SYNTAX EDIT OBJECT = V-EDIT>
|
||||
<SYNTAX CLICK OBJECT = V-CLICK>
|
||||
<SYNTAX CLICK OBJECT WITH OBJECT = V-CLICK>
|
||||
<SYNTAX CLICK ON OBJECT = V-CLICK>
|
||||
<SYNTAX CLICK ON OBJECT WITH OBJECT = V-CLICK>
|
||||
<VERB-SYNONYM CLICK SELECT CHOOSE>
|
||||
|
||||
<SYNTAX LET GO OBJECT (FIND RLANDBIT) = V-DROP PRE-DROP>
|
||||
<SYNTAX HANG FROM OBJECT = V-BOARD PRE-BOARD>
|
||||
<SYNTAX HANG OBJECT ON OBJECT = V-PUT-ON>
|
||||
<SYNTAX HANG OBJECT FROM OBJECT = V-PUT-ON>
|
||||
|
||||
<SYNTAX TYPE OBJECT = V-TYPE>
|
||||
<SYNTAX TYPE LOGIN OBJECT = V-LOGIN>
|
||||
<SYNTAX TYPE PASSWORD OBJECT = V-PASSWORD>
|
||||
<VERB-SYNONYM TYPE INPUT>
|
||||
|
||||
<SYNTAX WEDGE OBJECT WITH OBJECT = V-WEDGE>
|
||||
<SYNTAX WEDGE OBJECT IN OBJECT = V-SWEDGE PRE-SWEDGE>
|
||||
<SYNTAX WEDGE OBJECT BETWEEN OBJECT = V-SWEDGE PRE-SWEDGE>
|
||||
<VERB-SYNONYM WEDGE PROP>
|
||||
|
||||
<SYNTAX DIE = V-DIE>
|
||||
|
||||
<SYNTAX HACK = V-HACK>
|
||||
<SYNTAX HACK OBJECT = V-HACK>
|
||||
|
||||
<SYNTAX COOK OBJECT = V-COOK>
|
||||
<VERB-SYNONYM COOK WARM HEAT>
|
|
@ -0,0 +1,302 @@
|
|||
"YUGGOTH for
|
||||
The Lurking Horror
|
||||
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<ROUTINE I-YUGGOTH ()
|
||||
<COND (<HERE? ,YUGGOTH>
|
||||
<TELL CR
|
||||
"From below, a low noise begins, and slowly builds. You feel yourself drawn
|
||||
downward by the noise." CR CR>
|
||||
<GOTO ,BOWL-ROOM>
|
||||
<RFATAL>)
|
||||
(<HERE? ,BOWL-ROOM>
|
||||
<TELL CR
|
||||
"The crowd around you begins to sway and groan. They are expecting
|
||||
something. You are drawn forward by the noise." CR CR>
|
||||
<GOTO ,PLATFORM-ROOM>
|
||||
<RFATAL>)>>
|
||||
|
||||
<ROOM YUGGOTH
|
||||
(IN ROOMS)
|
||||
(DESC "Place")
|
||||
(LDESC
|
||||
"This is a place. Things move about on a broken, rocky surface.
|
||||
Harsh sounds split the air. Something sticky grabs at your feet.
|
||||
There is no color, everything is drained of brightness, dull and
|
||||
lifeless. A path descends into a shallow bowl of black basalt.")
|
||||
(DOWN TO BOWL-ROOM)
|
||||
(FLAGS ONBIT)
|
||||
(ACTION RANDOM-YUGGOTH-F)>
|
||||
|
||||
<ROUTINE RANDOM-YUGGOTH-F (RARG)
|
||||
<COND (<RARG? ENTER>
|
||||
<QUEUE I-YUGGOTH 2>)>>
|
||||
|
||||
<ROOM BOWL-ROOM
|
||||
(IN ROOMS)
|
||||
(DESC "Basalt Bowl")
|
||||
(LDESC
|
||||
"You are at the bottom of a deeply cut, smooth basalt bowl. Dimly seen
|
||||
shapes crowd you on all sides. Ahead, in the focus of the movement, is
|
||||
a rock platform.")
|
||||
(UP TO YUGGOTH)
|
||||
(IN TO PLATFORM-ROOM)
|
||||
(DOWN TO PLATFORM-ROOM)
|
||||
(GLOBAL PLATFORM)
|
||||
(FLAGS ONBIT)
|
||||
(ACTION RANDOM-YUGGOTH-F)>
|
||||
|
||||
<ROOM PLATFORM-ROOM
|
||||
(IN ROOMS)
|
||||
(DESC "At Platform")
|
||||
(LDESC
|
||||
"You stand before a low rock platform, more like an afterthought of
|
||||
piled rocks or a glacial moraine than a work of artifice. You are
|
||||
pushed against the pile by the crowd around you.")
|
||||
(FLAGS ONBIT)
|
||||
(GLOBAL PLATFORM)
|
||||
(ACTION PLATFORM-ROOM-F)>
|
||||
|
||||
<ROUTINE PLATFORM-ROOM-F (RARG)
|
||||
<COND ;(<RARG? LOOK>
|
||||
<TELL
|
||||
CR>)
|
||||
(<RARG? BEG>
|
||||
<COND (<VERB? WALK>
|
||||
<COND (<EQUAL? ,P-WALK-DIR ,P?UP>
|
||||
<TELL
|
||||
"You are prevented, as the crowd holds you back." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"The crowding is such that you can barely move, much less walk." CR>)>)
|
||||
(<P? LISTEN (<> NOISE)>
|
||||
<TELL
|
||||
"It sounds like supplication." CR>)
|
||||
(<AND <P? SMELL <>>
|
||||
<IN? ,LURKER ,HERE>>
|
||||
<NEW-PRSO ,LURKER>
|
||||
<RTRUE>)
|
||||
(<OR <P? (DROP PUT THROW) SMOOTH-STONE>
|
||||
<P? ATTACK * SMOOTH-STONE>>
|
||||
<TELL
|
||||
"You can't. You go through the motions, but the stone doesn't leave your
|
||||
hand." CR>)>)>>
|
||||
|
||||
<OBJECT PLATFORM
|
||||
(IN LOCAL-GLOBALS)
|
||||
(DESC "platform")
|
||||
(SYNONYM PLATFORM ROCKS PILE)
|
||||
(ADJECTIVE BASALT)
|
||||
(FLAGS NDESCBIT VEHBIT SURFACEBIT)
|
||||
(ACTION PLATFORM-F)>
|
||||
|
||||
<ROUTINE PLATFORM-F ()
|
||||
<COND (<VERB? WALK-TO THROUGH BOARD>
|
||||
<COND (<HERE? ,BOWL-ROOM>
|
||||
<DO-WALK ,P?IN>)
|
||||
(ELSE
|
||||
<DO-WALK ,P?UP>)>)
|
||||
(<VERB? EXAMINE LOOK-UNDER LOOK-BEHIND>
|
||||
<TELL
|
||||
"The platform is made of the same rocks as the surrounding terrain.
|
||||
In fact, you can't tell whether it is natural or constructed." CR>)>>
|
||||
|
||||
<OBJECT SMOOTH-STONE
|
||||
(IN PLATFORM-ROOM)
|
||||
(DESC "smooth stone")
|
||||
(SYNONYM STONE)
|
||||
(ADJECTIVE SMOOTH SHINY SMALL)
|
||||
(FLAGS TAKEBIT SEARCHBIT OPENBIT CONTBIT WEAPONBIT)
|
||||
(VALUE 5)
|
||||
(DESCFCN SMOOTH-STONE-DESC)
|
||||
(ACTION SMOOTH-STONE-F)>
|
||||
|
||||
<ROUTINE SMOOTH-STONE-DESC (RARG OBJ)
|
||||
<COND (<RARG? OBJDESC?>
|
||||
<COND (<NOT <FSET? ,SMOOTH-STONE ,TOUCHBIT>>
|
||||
<RTRUE>)>)
|
||||
(<NOT <FSET? ,SMOOTH-STONE ,TOUCHBIT>>
|
||||
<COND (<HERE? ,INNER-LAIR>
|
||||
<TELL
|
||||
"The stone sits on a hummock of mud. From here it appears to have a crack
|
||||
in it.">)
|
||||
(ELSE
|
||||
<TELL
|
||||
"One small stone stands out in the pile, smooth, shiny, and glowing with a blazing
|
||||
light.">)>)>>
|
||||
|
||||
<ROUTINE SMOOTH-STONE-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"It's a ">
|
||||
<COND (<AND <HERE? ,INNER-LAIR>
|
||||
<NOT <FSET? ,SMOOTH-STONE ,TOUCHBIT>>>
|
||||
<TELL "cracked">)
|
||||
(ELSE
|
||||
<TELL "smooth, shiny">)>
|
||||
<TELL " piece of what might be obsidian. Scratched on it
|
||||
is a symbol." CR>)
|
||||
(<AND <VERB? TAKE>
|
||||
<IN? ,PRSO ,HERE>>
|
||||
<COND (<HERE? ,PLATFORM-ROOM>
|
||||
<QUEUE I-COOL 20 T>
|
||||
<QUEUE I-LURKER-APPEARS -1>
|
||||
<RFALSE>)
|
||||
(<AND <HERE? ,BROWN-ROOF ,INSIDE-DOME>
|
||||
<IN? ,FLIER ,HERE>>
|
||||
<TELL
|
||||
"The noisome creature jabs at you with its razor beak, but appears
|
||||
unwilling to approach the stone." CR>)
|
||||
(<AND <HERE? ,INNER-LAIR>
|
||||
<NOT <FSET? ,SMOOTH-STONE ,TOUCHBIT>>>
|
||||
<TELL
|
||||
"You pick up the stone. It has a long jagged crack that almost breaks
|
||||
it in half. As you pick it up, you feel it bump to one side. Then, as
|
||||
you are holding it in your hand, something pushes its way out through
|
||||
the crack, breaking the stone into two pieces. Something small, pale,
|
||||
and damp blinks its watery eyes at you. It hisses, gaining strength,
|
||||
and spreads membranous wings. It takes to the air, at first clumsily, then
|
||||
with increased assurance, and disappears into the gloom. One eerie
|
||||
cry drifts back to where you stand." CR CR>
|
||||
<TELL
|
||||
"Something rises out of the mud, slowly straightening.
|
||||
The hacker, mud-covered and weak, staggers
|
||||
to his feet. \"Can I have my key back?\" he asks." CR>
|
||||
<FINISH>)>)
|
||||
(<VERB? DROP>
|
||||
<COND (<IN? ,FLIER ,HERE>
|
||||
<MOVE ,SMOOTH-STONE ,HERE>
|
||||
<TELL
|
||||
"The shape becomes agitated, screeching and cawing as it approaches the
|
||||
stone." CR>)>)
|
||||
(<AND <VERB? KICK MOVE RUB>
|
||||
<NOT <HELD? ,PRSO>>
|
||||
<IN? ,FLIER ,HERE>>
|
||||
<TELL
|
||||
,YOU-CANT "get close enough." CR>)
|
||||
(<P? RUB SMOOTH-STONE>
|
||||
<TELL
|
||||
"The stone is smooth and ">
|
||||
<COND (<NOT <ZERO? ,END-CNT>> <TELL "warm">)
|
||||
(ELSE <TELL "cool">)>
|
||||
<TELL "." CR>)
|
||||
(<P? ATTACK * SMOOTH-STONE>
|
||||
<COND (<PRSO? ,FLIER-SHAPE>
|
||||
<MOVE ,SMOOTH-STONE ,HERE>
|
||||
<TELL
|
||||
"The stone crashes against the wall of the dome. The shape
|
||||
screams, a hissing fit of anger and frustration." CR>)
|
||||
(<PRSO? ,FLIER>
|
||||
<TELL
|
||||
"The stone hits the dark beast, and appears to go completely through
|
||||
it as though the creature was made of air. ">
|
||||
<COND (<HERE? ,INSIDE-DOME>
|
||||
<MOVE ,SMOOTH-STONE ,HERE>
|
||||
<MOVE ,FLIER ,BROWN-ROOF>
|
||||
<QUEUE I-FLIER 3> ;"time to get outside"
|
||||
<TELL
|
||||
"The stone tumbles onto the floor. The creature, hissing vilely,
|
||||
retreats." CR>)
|
||||
(<HERE? ,BROWN-ROOF>
|
||||
<OBJ-OFF-ROOF ,SMOOTH-STONE>)>)>)
|
||||
(<VERB? OPEN>
|
||||
<TELL-YUKS>)>>
|
||||
|
||||
<ROUTINE OBJ-OFF-ROOF (OBJ)
|
||||
<MOVE .OBJ ,COURTYARD>
|
||||
<TELL
|
||||
CTHE .OBJ " disappears over the south edge of the building">
|
||||
<COND (<IN? ,FLIER ,HERE>
|
||||
<TELL ", and the creature ">
|
||||
<COND (<EQUAL? .OBJ ,SMOOTH-STONE>
|
||||
<SCORE-OBJECT ,FLIER>
|
||||
<MOVE ,FLIER ,GLOBAL-OBJECTS>
|
||||
<TELL
|
||||
"follows it, screaming frustration into the storm." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"watches it fall with cunning attention." CR>)>)
|
||||
(ELSE <TELL "." CR>)>>
|
||||
|
||||
<OBJECT STONE-SYMBOL
|
||||
(IN SMOOTH-STONE)
|
||||
(DESC "carved symbol")
|
||||
(SYNONYM SYMBOL)
|
||||
(ADJECTIVE STONE SCRATCH CARVED STRANGE INCOMPREHENSIBLE)
|
||||
(FLAGS NDESCBIT)
|
||||
(SIZE 0)
|
||||
(GENERIC GENERIC-SYMBOL-F)
|
||||
(ACTION STONE-SYMBOL-F)>
|
||||
|
||||
<ROUTINE STONE-SYMBOL-F ()
|
||||
<COND (<VERB? EXAMINE READ>
|
||||
<TELL
|
||||
,SYMBOL-APPEARS "carved into the " 'SMOOTH-STONE ", perhaps with a claw. ">
|
||||
<TELL-SYMBOL ,SMOOTH-STONE>
|
||||
<CRLF>)
|
||||
(<VERB? RUB>
|
||||
<TELL
|
||||
"The symbol is rough." CR>)>>
|
||||
|
||||
<GLOBAL YUGGOTH-COUNT 0>
|
||||
|
||||
<ROUTINE I-LURKER-APPEARS ()
|
||||
<CRLF>
|
||||
<COND (<EQUAL? <SETG YUGGOTH-COUNT <+ ,YUGGOTH-COUNT 1>> 1>
|
||||
<MOVE ,LURKER ,HERE>
|
||||
<TELL
|
||||
"Suddenly, the dimness becomes darkness, and the crowd around you explodes
|
||||
with excitement. You are jostled and shoved from all sides. A low keening
|
||||
begins, building into a deafening, almost mechanical chant. The darkness
|
||||
before you compacts and deepens." CR>)
|
||||
(<EQUAL? ,YUGGOTH-COUNT 2>
|
||||
<TELL
|
||||
"The darkness before you, now visible, is a creature. It towers over the
|
||||
now-silent crowd. The thing jerks this way and that, spraying a foul
|
||||
ichor. Its palps twitch expectantly, then pound impatiently against the
|
||||
rock. You can feel the " 'SMOOTH-STONE " vibrating in your hand." CR>)
|
||||
(<EQUAL? ,YUGGOTH-COUNT 3>
|
||||
<TELL
|
||||
"The thing now turns, sensing the presence of the stone. It quests almost
|
||||
blindly for it, then those surrounding you thrust you forward. The thing
|
||||
stoops, its mandibles grasping you. You are lifted towards its gaping
|
||||
maw. The stench and the sounds issuing from it are overwhelming, and
|
||||
you fall unconscious." CR CR>
|
||||
<DEQUEUE I-LURKER-APPEARS>
|
||||
<COND (<IN? ,CHAIR ,TERMINAL-ROOM>
|
||||
<MOVE ,CHAIR ,HERE>
|
||||
<MOVE ,PLAYER ,CHAIR>)>
|
||||
<MOVE ,ODD-PAPER ,GLOBAL-OBJECTS>
|
||||
<GOTO ,TERMINAL-ROOM>
|
||||
<ROB ,FROB ,PLAYER>
|
||||
<RTRUE>)>>
|
||||
|
||||
<OBJECT LURKER
|
||||
(DESC "thing")
|
||||
(SYNONYM CREATURE THING DARKNESS DARK)
|
||||
(ADJECTIVE VISIBLE)
|
||||
(FLAGS NDESCBIT PERSON)
|
||||
(GENERIC GENERIC-CREATURE-F)
|
||||
(ACTION LURKER-F)>
|
||||
|
||||
<ROUTINE GENERIC-CREATURE-F ()
|
||||
,LURKER>
|
||||
|
||||
<ROUTINE LURKER-F ()
|
||||
<COND (<WINNER? ,LURKER>
|
||||
<TELL
|
||||
,NO-RESPONSE " You are not even sure that you produced any sound
|
||||
when you spoke." CR>
|
||||
<END-QUOTE>)
|
||||
(<VERB? EXAMINE>
|
||||
<COND (<G? ,YUGGOTH-COUNT 1>
|
||||
<TELL
|
||||
"It is large, smooth and yet scaly. It has too many limbs,
|
||||
and they are not in the right places. To look at it gives you a
|
||||
headache." CR>)
|
||||
(ELSE
|
||||
<TELL
|
||||
"You see a visible darkness, in a shape not easily grasped." CR>)>)
|
||||
(<VERB? SMELL>
|
||||
<TELL
|
||||
"The thing gives off a charnel stench." CR>)>>
|
Loading…
Reference in New Issue