Revision 53 (Original Source)
commit
ef6e803369
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,48 @@
|
|||
"DEMO for
|
||||
SAMPLER
|
||||
(c) Copyright 1984 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<SET REDEFINE T>
|
||||
|
||||
;<GLOBAL BIGFIX 10000>
|
||||
|
||||
<OR <GASSIGNED? ZILCH>
|
||||
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
|
||||
|
||||
<DEFINE IFILE (STR "OPTIONAL" (FLOAD? <>) "AUX" (TIM <TIME>))
|
||||
<INSERT-FILE .STR .FLOAD?>>
|
||||
|
||||
<PRINC "Sampler ZORK I: The Great Underground Empire
|
||||
">
|
||||
|
||||
<OR <GASSIGNED? INSERT-CRUFTY>
|
||||
<DEFINE INSERT-CRUFTY (STR) <INSERT-FILE .STR T>>>
|
||||
|
||||
<COND (<GASSIGNED? PREDGEN>
|
||||
<ID 0>)>
|
||||
|
||||
<PROPDEF SIZE 5>
|
||||
<PROPDEF CAPACITY 0>
|
||||
<PROPDEF VALUE 0>
|
||||
<PROPDEF TVALUE 0>
|
||||
|
||||
<IFILE "MISC" T>
|
||||
<IFILE "SYNTAX" T>
|
||||
<IFILE "DUNGEON" T>
|
||||
<IFILE "GLOBALS" T>
|
||||
<IFILE "PARSER" T>
|
||||
<IFILE "VERBS" T>
|
||||
<IFILE "ACTIONS" T>
|
||||
<IFILE "TUTORIAL" T>
|
||||
<IFILE "PLANETFALL" T>
|
||||
<IFILE "INFIDEL" T>
|
||||
|
||||
<GC 0 T>
|
||||
|
||||
<DEFINE CNT (STR OBL)
|
||||
<PRINC .STR>
|
||||
<PRIN1 <MAPF ,+ ,LENGTH .OBL>>
|
||||
<CRLF>>
|
||||
|
||||
<COND (<NOT <GASSIGNED? PREDGEN>>
|
||||
<GC-MON T>)>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,279 @@
|
|||
"GLOBALS for
|
||||
SAMPLER
|
||||
(c) Copyright 1984 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<OBJECT GLOBAL-OBJECTS
|
||||
(FLAGS RMUNGBIT INVISIBLE TOUCHBIT SURFACEBIT TRYTAKEBIT OPENBIT
|
||||
SEARCHBIT TRANSBIT ONBIT RLANDBIT FIGHTBIT STAGGERED WEARBIT)>
|
||||
|
||||
<OBJECT LOCAL-GLOBALS
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM ZZMGCK) ;"Yes, this synonym needs to exist... sigh"
|
||||
(DESCFCN PATH-OBJECT)
|
||||
(GLOBAL GLOBAL-OBJECTS)
|
||||
(FDESC "F")
|
||||
(LDESC "F")
|
||||
(PSEUDO "FOOBAR" V-WALK)
|
||||
(CONTFCN 0)
|
||||
(VTYPE 1)
|
||||
(SIZE 0)
|
||||
(CAPACITY 0)>
|
||||
|
||||
<OBJECT ROOMS
|
||||
(IN TO ROOMS)>
|
||||
|
||||
<OBJECT INTNUM
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM INTNUM)
|
||||
(FLAGS TOOLBIT)
|
||||
(DESC "number")>
|
||||
|
||||
<OBJECT PSEUDO-OBJECT
|
||||
(IN LOCAL-GLOBALS)
|
||||
(DESC "pseudo")
|
||||
(ACTION ME-F)>
|
||||
|
||||
<OBJECT IT
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM IT THEM HER HIM)
|
||||
(DESC "it")
|
||||
(FLAGS NDESCBIT TOUCHBIT)>
|
||||
|
||||
<OBJECT NOT-HERE-OBJECT
|
||||
(DESC "thing")
|
||||
(ACTION NOT-HERE-OBJECT-F)>
|
||||
|
||||
<ROUTINE NOT-HERE-OBJECT-F ("AUX" TBL (PRSO? T) OBJ)
|
||||
;"This COND is game independent (except the TELL)"
|
||||
<COND (<AND <EQUAL? ,PRSO ,NOT-HERE-OBJECT>
|
||||
<EQUAL? ,PRSI ,NOT-HERE-OBJECT>>
|
||||
<TELL "Those things aren't here!" CR>
|
||||
<RTRUE>)
|
||||
(<EQUAL? ,PRSO ,NOT-HERE-OBJECT>
|
||||
<SET TBL ,P-PRSO>)
|
||||
(T
|
||||
<SET TBL ,P-PRSI>
|
||||
<SET PRSO? <>>)>
|
||||
;"Here is the default 'cant see any' printer"
|
||||
<SETG P-CONT <>>
|
||||
<SETG QUOTE-FLAG <>>
|
||||
<COND (<EQUAL? ,WINNER ,PLAYER>
|
||||
<TELL "You can't see any">
|
||||
<NOT-HERE-PRINT .PRSO?>
|
||||
<TELL " here!" CR>
|
||||
<COND (<AND ,TUTORIAL-MODE <NOT ,CANT-SEE-FLAG>>
|
||||
<SETG CANT-SEE-FLAG T>
|
||||
<TELL "|
|
||||
(In this case, you referred to an object in the game that was not
|
||||
accessible to you. This may mean that the object is in a different
|
||||
location from your own, or that it's in a closed container.)" CR>)>)
|
||||
(T
|
||||
<TELL "The " D ,WINNER " seems confused. \"I don't see any">
|
||||
<NOT-HERE-PRINT .PRSO?>
|
||||
<TELL " here!\"" CR>)>
|
||||
<RTRUE>>
|
||||
|
||||
<GLOBAL CANT-SEE-FLAG <>>
|
||||
|
||||
;<ROUTINE FIND-NOT-HERE (TBL PRSO? "AUX" M-F OBJ)
|
||||
;"not referenced, removed 2/27/85 by SEM"
|
||||
;"Here is where special-case code goes. <MOBY-FIND .TBL> returns
|
||||
number of matches. If 1, then P-MOBY-FOUND is it. One may treat
|
||||
the 0 and >1 cases alike or different. It doesn't matter. Always
|
||||
return RFALSE (not handled) if you have resolved the problem."
|
||||
<SET M-F <MOBY-FIND .TBL>>
|
||||
<COND (,DEBUG
|
||||
<TELL "[Moby-found " N .M-F " objects" "]" CR>)>
|
||||
<COND (<AND <G? .M-F 1>
|
||||
<SET OBJ <GETP <1 .TBL> ,P?GLOBAL>>>
|
||||
<SET M-F 1>
|
||||
<SETG P-MOBY-FOUND .OBJ>)>
|
||||
<COND (<==? 1 .M-F>
|
||||
<COND (,DEBUG <TELL "[Namely: " D ,P-MOBY-FOUND "]" CR>)>
|
||||
<COND (.PRSO? <SETG PRSO ,P-MOBY-FOUND>)
|
||||
(T <SETG PRSI ,P-MOBY-FOUND>)>
|
||||
<RFALSE>)
|
||||
(<NOT .PRSO?>
|
||||
<TELL "You wouldn't find any">
|
||||
<NOT-HERE-PRINT .PRSO?>
|
||||
<TELL " there." CR>
|
||||
<RTRUE>)
|
||||
(T ,NOT-HERE-OBJECT)>>
|
||||
|
||||
;<ROUTINE GLOBAL-NOT-HERE-PRINT (OBJ) ;"not referenced, removed 2/27/85 by SEM"
|
||||
;<COND (,P-MULT <SETG P-NOT-HERE <+ ,P-NOT-HERE 1>>)>
|
||||
<SETG P-CONT <>>
|
||||
<SETG QUOTE-FLAG <>>
|
||||
<TELL "You can't see any">
|
||||
<COND (<EQUAL? .OBJ ,PRSO> <PRSO-PRINT>)
|
||||
(T <PRSI-PRINT>)>
|
||||
<TELL " here." CR>>
|
||||
|
||||
<ROUTINE NOT-HERE-PRINT (PRSO?)
|
||||
<COND (<OR ,P-OFLAG ,P-MERGED>
|
||||
<COND (,P-XADJ <TELL " "> <PRINTB ,P-XADJN>)>
|
||||
<COND (,P-XNAM
|
||||
<COND (<EQUAL? ,P-XNAM ,W?FLOYD> <TELL "Floyd">)
|
||||
(T <TELL " "> <PRINTB ,P-XNAM>)>)>)
|
||||
(.PRSO?
|
||||
<BUFFER-PRINT <GET ,P-ITBL ,P-NC1> <GET ,P-ITBL ,P-NC1L> <>>)
|
||||
(T
|
||||
<BUFFER-PRINT <GET ,P-ITBL ,P-NC2> <GET ,P-ITBL ,P-NC2L> <>>)>>
|
||||
|
||||
/^L
|
||||
|
||||
<GLOBAL LOAD-MAX 100>
|
||||
|
||||
<GLOBAL LOAD-ALLOWED 100>
|
||||
|
||||
<OBJECT STAIRS
|
||||
(IN LOCAL-GLOBALS)
|
||||
(SYNONYM STAIRS STEPS STAIRCASE STAIRWAY ;GANGWAY)
|
||||
(ADJECTIVE STONE DARK MARBLE FORBIDDING STEEP)
|
||||
(DESC "flight of stairs")
|
||||
(FLAGS NDESCBIT CLIMBBIT)
|
||||
(ACTION STAIRS-F)>
|
||||
|
||||
<ROUTINE STAIRS-F ()
|
||||
<COND (<VERB? THROUGH>
|
||||
<TELL
|
||||
"You should indicate whether you want to go up or down." CR>)>>
|
||||
|
||||
<OBJECT GROUND
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM GROUND SAND DIRT FLOOR)
|
||||
(DESC "ground")
|
||||
(ACTION GROUND-FUNCTION)>
|
||||
|
||||
<ROUTINE GROUND-FUNCTION ()
|
||||
<COND (<AND <VERB? PUT PUT-ON>
|
||||
<EQUAL? ,PRSI ,GROUND>>
|
||||
<PERFORM ,V?DROP ,PRSO>
|
||||
<RTRUE>)
|
||||
(<VERB? SIT CLIMB-ON>
|
||||
<SETG C-ELAPSED 28>
|
||||
<TELL
|
||||
"You sit down on the floor. After a while, you stand up again." CR>)
|
||||
(<AND <VERB? EXAMINE>
|
||||
<EQUAL? ,HERE ,ADMIN-CORRIDOR-S>>
|
||||
<TELL "A narrow, jagged crevice runs across the floor." CR>)
|
||||
(<VERB? DIG>
|
||||
<TELL "The ground is too hard for digging here." CR>)>>
|
||||
|
||||
<OBJECT GRUE
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "lurking grue")
|
||||
(SYNONYM GRUE)
|
||||
(ADJECTIVE LURKING VICIOUS CARNIV SINISTER HUNGRY SILENT)
|
||||
(ACTION GRUE-F)>
|
||||
|
||||
<ROUTINE GRUE-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<COND (<EQUAL? ,GAME-FLAG 2>
|
||||
<TELL
|
||||
"Grues are vicious, carnivorous beasts first introduced to Earth by a
|
||||
visiting alien spaceship during the late 22nd century. Grues spread throughout
|
||||
the galaxy alongside man. Although now extinct on all civilized planets,
|
||||
they still exist in some backwater corners of the galaxy. Their favorite diet
|
||||
is Ensigns Seventh Class, but their insatiable appetite is tempered by their
|
||||
fear of light." CR>)
|
||||
(T
|
||||
<TELL
|
||||
"The grue is a sinister, lurking presence in the dark places of the
|
||||
earth. Its favorite diet is adventurers, but its insatiable appetite
|
||||
is tempered by its fear of light. No grue has ever been seen by the
|
||||
light of day, and few have survived its fearsome jaws to tell the tale." CR>)>)
|
||||
(<VERB? FIND>
|
||||
<TELL
|
||||
"There is no grue here, but I'm sure there is at least one lurking
|
||||
in the darkness nearby. I wouldn't ">
|
||||
<COND (<EQUAL? ,GAME-FLAG 2>
|
||||
<TELL "spend much time in the dark">)
|
||||
(T <TELL "let my light go out">)>
|
||||
<TELL " if I were you!" CR>)
|
||||
(<VERB? LISTEN>
|
||||
<TELL
|
||||
"It makes no sound but is always lurking in the darkness nearby." CR>)
|
||||
(T <TELL "There is no grue here, and a good thing too." CR>)>>
|
||||
|
||||
<OBJECT ME
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM ME MYSELF SELF CRETIN)
|
||||
(DESC "you")
|
||||
(FLAGS ACTORBIT)
|
||||
(ACTION ME-F)>
|
||||
|
||||
<ROUTINE ME-F ()
|
||||
<COND (<VERB? TELL>
|
||||
<SETG P-CONT <>>
|
||||
<SETG QUOTE-FLAG <>>
|
||||
<TELL
|
||||
"Talking to yourself is said to be a sign of impending mental collapse." CR>)
|
||||
(<AND <VERB? GIVE>
|
||||
<EQUAL? ,PRSI ,ME>>
|
||||
<PERFORM ,V?TAKE ,PRSO>
|
||||
<RTRUE>)
|
||||
(<VERB? FOLLOW>
|
||||
<TELL "It would be hard not to." CR>)
|
||||
(<VERB? SMELL>
|
||||
<TELL "Phew!" CR>)
|
||||
(<VERB? DROP>
|
||||
<TELL "Huh?" CR>)
|
||||
(<VERB? MAKE>
|
||||
<TELL "Only you can do that." CR>)
|
||||
(<VERB? DISEMBARK>
|
||||
<TELL "You'll have to do that on your own." CR>)
|
||||
(<VERB? EAT>
|
||||
<TELL "Auto-cannibalism is not the answer." CR>)
|
||||
(<VERB? ATTACK MUNG>
|
||||
<COND (<AND ,PRSI <FSET? ,PRSI ,WEAPONBIT>>
|
||||
<JIGS-UP "If you insist.... Poof, you're dead!">)
|
||||
(T
|
||||
<TELL "Suicide is not the answer." CR>)>)
|
||||
(<VERB? TAKE>
|
||||
<TELL "How romantic!" CR>)
|
||||
(<VERB? ALARM>
|
||||
<TELL "You're awake." CR>)
|
||||
(<VERB? EXAMINE>
|
||||
<TELL
|
||||
"That's difficult unless your eyes are prehensile." CR>)>>
|
||||
|
||||
<OBJECT ADVENTURER
|
||||
(SYNONYM ADVENTURER)
|
||||
(DESC "cretin")
|
||||
(FLAGS NDESCBIT INVISIBLE ACTORBIT)
|
||||
(STRENGTH 0)
|
||||
(ACTION 0)>
|
||||
|
||||
<OBJECT PATHOBJ
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM PASSAGE CRAWLWAY TRAIL PATH)
|
||||
(ADJECTIVE FOREST NARROW LONG WINDING)
|
||||
(DESC "path")
|
||||
(FLAGS NDESCBIT)
|
||||
(ACTION PATH-OBJECT)>
|
||||
|
||||
<ROUTINE PATH-OBJECT ()
|
||||
<COND (<VERB? TAKE FOLLOW>
|
||||
<TELL "You must specify a direction to go." CR>)
|
||||
(<VERB? FIND>
|
||||
<TELL "I can't help you there...." CR>)
|
||||
(<VERB? DIG>
|
||||
<TELL "Not a chance." CR>)>>
|
||||
|
||||
<OBJECT HANDS
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM PAIR HANDS HAND)
|
||||
(ADJECTIVE BARE)
|
||||
(DESC "pair of hands")
|
||||
(FLAGS NDESCBIT TOOLBIT)
|
||||
(ACTION HANDS-F)>
|
||||
|
||||
<OBJECT GLOBAL-DUST
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(SYNONYM DUST)
|
||||
(DESC "clump of dust")
|
||||
(ACTION GLOBAL-DUST-F)>
|
||||
|
||||
<ROUTINE GLOBAL-DUST-F ()
|
||||
<TELL "Are you really that fascinated by dust?" CR>>
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,572 @@
|
|||
"MISC for
|
||||
SAMPLER
|
||||
(c) Copyright 1984 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
;"former MACROS file"
|
||||
|
||||
<SETG C-ENABLED? 0>
|
||||
<SETG C-ENABLED 1>
|
||||
<SETG C-DISABLED 0>
|
||||
|
||||
<DEFMAC TELL ("ARGS" A)
|
||||
<FORM PROG ()
|
||||
!<MAPF ,LIST
|
||||
<FUNCTION ("AUX" E P O)
|
||||
<COND (<EMPTY? .A> <MAPSTOP>)
|
||||
(<SET E <NTH .A 1>>
|
||||
<SET A <REST .A>>)>
|
||||
<COND (<TYPE? .E ATOM>
|
||||
<COND (<OR <=? <SET P <SPNAME .E>>
|
||||
"CRLF">
|
||||
<=? .P "CR">>
|
||||
<MAPRET '<CRLF>>)
|
||||
(<EMPTY? .A>
|
||||
<ERROR INDICATOR-AT-END? .E>)
|
||||
(ELSE
|
||||
<SET O <NTH .A 1>>
|
||||
<SET A <REST .A>>
|
||||
<COND (<OR <=? <SET P <SPNAME .E>>
|
||||
"DESC">
|
||||
<=? .P "D">
|
||||
<=? .P "OBJ">
|
||||
<=? .P "O">>
|
||||
<MAPRET <FORM PRINTD .O>>)
|
||||
(<OR <=? .P "A">
|
||||
<=? .P "AN">>
|
||||
<MAPRET <FORM PRINTA .O>>)
|
||||
(<OR <=? .P "NUM">
|
||||
<=? .P "N">>
|
||||
<MAPRET <FORM PRINTN .O>>)
|
||||
(<OR <=? .P "CHAR">
|
||||
<=? .P "CHR">
|
||||
<=? .P "C">>
|
||||
<MAPRET <FORM PRINTC .O>>)
|
||||
(ELSE
|
||||
<MAPRET
|
||||
<FORM PRINT
|
||||
<FORM GETP .O .E>>>)>)>)
|
||||
(<TYPE? .E STRING ZSTRING>
|
||||
<MAPRET <FORM PRINTI .E>>)
|
||||
(<TYPE? .E FORM LVAL GVAL>
|
||||
<MAPRET <FORM PRINT .E>>)
|
||||
(ELSE <ERROR UNKNOWN-TYPE .E>)>>>>>
|
||||
|
||||
<ROUTINE PRINTA (O)
|
||||
<COND (<FSET? .O ,VOWELBIT>
|
||||
<TELL "an " D .O>)
|
||||
(T
|
||||
<TELL "a " D .O>)>>
|
||||
|
||||
<DEFMAC VERB? ("ARGS" ATMS)
|
||||
<MULTIFROB PRSA .ATMS>>
|
||||
|
||||
<DEFMAC PRSO? ("ARGS" ATMS)
|
||||
<MULTIFROB PRSO .ATMS>>
|
||||
|
||||
<DEFMAC PRSI? ("ARGS" ATMS)
|
||||
<MULTIFROB PRSI .ATMS>>
|
||||
|
||||
<DEFMAC ROOM? ("ARGS" ATMS)
|
||||
<MULTIFROB HERE .ATMS>>
|
||||
|
||||
<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (L ()) ATM)
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS>
|
||||
<RETURN!- <COND (<LENGTH? .OO 1> <ERROR .X>)
|
||||
(<LENGTH? .OO 2> <NTH .OO 2>)
|
||||
(ELSE <CHTYPE .OO FORM>)>>)>
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS> <RETURN!->)>
|
||||
<SET ATM <NTH .ATMS 1>>
|
||||
<SET L
|
||||
(<COND (<TYPE? .ATM ATOM>
|
||||
<FORM GVAL
|
||||
<COND (<==? .X PRSA>
|
||||
<PARSE
|
||||
<STRING "V?"
|
||||
<SPNAME .ATM>>>)
|
||||
(ELSE .ATM)>>)
|
||||
(ELSE .ATM)>
|
||||
!.L)>
|
||||
<SET ATMS <REST .ATMS>>
|
||||
<COND (<==? <LENGTH .L> 3> <RETURN!->)>>
|
||||
<SET O <REST <PUTREST .O (<FORM EQUAL? <FORM GVAL .X> !.L>)>>>
|
||||
<SET L ()>>>
|
||||
|
||||
<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" (O ()) ATM)
|
||||
<REPEAT ()
|
||||
<COND (<EMPTY? .ATMS>
|
||||
<RETURN!- <COND (<LENGTH? .O 1> <NTH .O 1>)
|
||||
(<==? .X FSET?> <FORM OR !.O>)
|
||||
(ELSE <FORM PROG () !.O>)>>)>
|
||||
<SET ATM <NTH .ATMS 1>>
|
||||
<SET ATMS <REST .ATMS>>
|
||||
<SET O
|
||||
(<FORM .X
|
||||
.OBJ
|
||||
<COND (<TYPE? .ATM FORM> .ATM)
|
||||
(ELSE <FORM GVAL .ATM>)>>
|
||||
!.O)>>>
|
||||
|
||||
<DEFMAC RFATAL ()
|
||||
'<PROG () <PUSH 2> <RSTACK>>>
|
||||
|
||||
<DEFMAC PROB ('BASE? "OPTIONAL" 'LOSER?)
|
||||
<COND (<ASSIGNED? LOSER?> <FORM ZPROB .BASE?>)
|
||||
(ELSE <FORM G? .BASE? '<RANDOM 100>>)>>
|
||||
|
||||
<ROUTINE ZPROB
|
||||
(BASE)
|
||||
<COND (,LUCKY <G? .BASE <RANDOM 100>>)
|
||||
(ELSE <G? .BASE <RANDOM 300>>)>>
|
||||
|
||||
<ROUTINE RANDOM-ELEMENT (FROB)
|
||||
<GET .FROB <RANDOM <GET .FROB 0>>>>
|
||||
|
||||
<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>
|
||||
|
||||
<DEFMAC ENABLE ('INT) <FORM PUT .INT ,C-ENABLED? 1>>
|
||||
|
||||
<DEFMAC DISABLE ('INT) <FORM PUT .INT ,C-ENABLED? 0>>
|
||||
|
||||
<ROUTINE FLAMING? (OBJ)
|
||||
<AND <FSET? .OBJ ,FLAMEBIT> <FSET? .OBJ ,ONBIT>>>
|
||||
|
||||
<DEFMAC OPENABLE? ('OBJ)
|
||||
<FORM OR <FORM FSET? .OBJ ',DOORBIT>
|
||||
<FORM FSET? .OBJ ',CONTBIT>>>
|
||||
|
||||
<DEFMAC ABS ('NUM)
|
||||
<FORM COND (<FORM L? .NUM 0> <FORM - 0 .NUM>)
|
||||
(T .NUM)>>
|
||||
|
||||
;"former MAIN file"
|
||||
|
||||
<GLOBAL C-ELAPSED 0>
|
||||
|
||||
<GLOBAL PLAYER <>>
|
||||
|
||||
<GLOBAL P-WON <>>
|
||||
|
||||
<CONSTANT M-FATAL 2>
|
||||
|
||||
<CONSTANT M-HANDLED 1>
|
||||
|
||||
<CONSTANT M-NOT-HANDLED <>>
|
||||
|
||||
<CONSTANT M-OBJECT <>>
|
||||
|
||||
<CONSTANT M-BEG 1>
|
||||
|
||||
<CONSTANT M-END 6>
|
||||
|
||||
<CONSTANT M-ENTER 2>
|
||||
|
||||
<CONSTANT M-LOOK 3>
|
||||
|
||||
<CONSTANT M-FLASH 4>
|
||||
|
||||
<CONSTANT M-OBJDESC 5>
|
||||
|
||||
<GLOBAL DEBUG <>>
|
||||
|
||||
<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
|
||||
<REPEAT ()
|
||||
<SETG C-ELAPSED 7>
|
||||
<SET CNT 0>
|
||||
<SET OBJ <>>
|
||||
<SET PTBL T>
|
||||
<COND (<SETG P-WON <PARSER>>
|
||||
<SET ICNT <GET ,P-PRSI ,P-MATCHLEN>>
|
||||
<SET NUM
|
||||
<COND (<0? <SET OCNT <GET ,P-PRSO ,P-MATCHLEN>>> .OCNT)
|
||||
(<G? .OCNT 1>
|
||||
<SET TBL ,P-PRSO>
|
||||
<COND (<0? .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>>)>
|
||||
<COND (<==? ,PRSA ,V?WALK>
|
||||
<SET V <PERFORM ,PRSA ,PRSO>>)
|
||||
(<0? .NUM>
|
||||
<COND (<0? <BAND <GETB ,P-SYNTAX ,P-SBITS> ,P-SONUMS>>
|
||||
<SET V <PERFORM ,PRSA>>
|
||||
<SETG PRSO <>>)
|
||||
(<NOT ,LIT>
|
||||
<TELL "It's too dark to see." CR>)
|
||||
(T
|
||||
<TELL "It's not clear what you're referring to." CR>
|
||||
<SET V <>>)>)
|
||||
(T
|
||||
<SETG P-NOT-HERE 0>
|
||||
<SETG P-MULT <>>
|
||||
<COND (<G? .NUM 1>
|
||||
<SETG P-MULT T>)>
|
||||
<SET TMP <>>
|
||||
<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
|
||||
"There's nothing here you can take." CR>)>
|
||||
<RETURN>)
|
||||
(T
|
||||
<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 (<EQUAL? .OBJ1 ,NOT-HERE-OBJECT>
|
||||
<SETG P-NOT-HERE <+ ,P-NOT-HERE 1>>
|
||||
<AGAIN>)
|
||||
(<AND <VERB? TAKE>
|
||||
,PRSI
|
||||
<EQUAL?
|
||||
<GET <GET ,P-ITBL ,P-NC1> 0>
|
||||
,W?ALL>
|
||||
<NOT <IN? ,PRSO ,PRSI>>>
|
||||
<AGAIN>)
|
||||
(<AND <EQUAL? ,P-GETFLAGS ,P-ALL>
|
||||
<VERB? TAKE>
|
||||
<OR <AND <NOT <EQUAL?
|
||||
<LOC .OBJ1>
|
||||
,WINNER
|
||||
,HERE>>
|
||||
<NOT <FSET?
|
||||
<LOC .OBJ1>
|
||||
,SURFACEBIT>>>
|
||||
<NOT <OR <FSET?
|
||||
.OBJ1
|
||||
,TAKEBIT>
|
||||
<FSET?
|
||||
.OBJ1
|
||||
,TRYTAKEBIT>>>>>
|
||||
<AGAIN>)
|
||||
(T
|
||||
<COND (<EQUAL? .OBJ1 ,IT>
|
||||
<PRINTD ,P-IT-OBJECT>)
|
||||
(T
|
||||
<PRINTD .OBJ1>)>
|
||||
<TELL ": ">)>)>
|
||||
<SET TMP T>
|
||||
<SET V <PERFORM ,PRSA ,PRSO ,PRSI>>
|
||||
<COND (<==? .V ,M-FATAL>
|
||||
<RETURN>)>)>>)>
|
||||
<COND (<NOT <==? .V ,M-FATAL>>
|
||||
;<COND (<==? <LOC ,WINNER> ,PRSO>
|
||||
<SETG PRSO <>>)> ;"Retrofix 17"
|
||||
<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-END>>)>
|
||||
<COND (<VERB? AGAIN ;WALK SAVE RESTORE SCORE VERSION ;WAIT>
|
||||
T)
|
||||
(T
|
||||
<SETG L-PRSA ,PRSA>
|
||||
<SETG L-PRSO ,PRSO>
|
||||
<SETG L-PRSI ,PRSI>
|
||||
<SETG PRSI <>>)> ;"attempted AGAIN patch"
|
||||
<COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE
|
||||
SAVE RESTORE HELP VERSION SCORE SAY>
|
||||
<SETG C-ELAPSED 0>)>
|
||||
<SETG INTERNAL-MOVES <+ ,INTERNAL-MOVES ,C-ELAPSED>>
|
||||
<COND (<==? .V ,M-FATAL>
|
||||
<SETG P-CONT <>>)>)
|
||||
(T
|
||||
<SETG P-CONT <>>)>
|
||||
<COND (<EQUAL? ,GAME-FLAG 2>
|
||||
<COND (<NOT <IN? ,CHRONOMETER ,ADVENTURER>>
|
||||
<SETG MOVES 0>)
|
||||
(T
|
||||
<SETG MOVES ,INTERNAL-MOVES>)>)>
|
||||
<COND (,P-WON
|
||||
<COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE
|
||||
HELP SAVE RESTORE VERSION SCORE SAY>
|
||||
T)
|
||||
(T
|
||||
<SET V <CLOCKER>>)>)>>>
|
||||
|
||||
<GLOBAL L-PRSA <>>
|
||||
|
||||
<GLOBAL L-PRSO <>>
|
||||
|
||||
<GLOBAL L-PRSI <>>
|
||||
|
||||
<GLOBAL P-MULT <>>
|
||||
|
||||
<GLOBAL P-NOT-HERE 0>
|
||||
|
||||
|
||||
|
||||
%<COND (<GASSIGNED? PREDGEN>
|
||||
|
||||
'<ROUTINE PERFORM (A "OPTIONAL" (O <>) (I <>) "AUX" V OA OO OI)
|
||||
<COND (,DEBUG
|
||||
<TELL "[Perform: ">
|
||||
%<COND (<GASSIGNED? PREDGEN> '<TELL N .A>)
|
||||
(T '<PRINC <NTH ,ACTIONS <+ <* .A 2> 1>>>)>
|
||||
<COND (.O
|
||||
<COND (<NOT <==? .A ,V?WALK>>
|
||||
<TELL "/" D .O>)
|
||||
(T <TELL "/" N .O>)>)>
|
||||
<COND (.I <TELL "/" D .I>)>
|
||||
<TELL "]" CR>)>
|
||||
<SET OA ,PRSA>
|
||||
<SET OO ,PRSO>
|
||||
<SET OI ,PRSI>
|
||||
<COND (<AND <NOT <==? .A ,V?WALK>>
|
||||
<OR <EQUAL? ,IT .I .O>
|
||||
<EQUAL? ,NOT-HERE-OBJECT .I .O>>
|
||||
<NOT <EQUAL? ,P-IT-LOC ,HERE>>>
|
||||
<TELL "I don't see what you are referring to." CR>
|
||||
<SETG P-WON <>> ;"to keep clock from running"
|
||||
<RFATAL>)>
|
||||
<COND (<==? .A ,V?WALK> T)
|
||||
(<==? .O ,IT> <SET O ,P-IT-OBJECT>)
|
||||
(<==? .I ,IT> <SET I ,P-IT-OBJECT>)>
|
||||
<SETG PRSA .A>
|
||||
<SETG PRSO .O>
|
||||
<COND (<AND ,PRSO <NOT <EQUAL? ,PRSI ,IT>> <NOT <VERB? WALK>>>
|
||||
<SETG P-IT-OBJECT ,PRSO>
|
||||
<SETG P-IT-LOC ,HERE>)>
|
||||
<SETG PRSI .I>
|
||||
<COND (<AND <NOT <VERB? WALK>>
|
||||
<EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
|
||||
<SET V <NOT-HERE-OBJECT-F>>>
|
||||
<SETG P-WON <>> ;"to keep clock from running"
|
||||
.V)
|
||||
(T
|
||||
<SET O ,PRSO>
|
||||
<SET I ,PRSI>
|
||||
<COND
|
||||
(<SET V <APPLY <GETP ,WINNER ,P?ACTION>>> .V)
|
||||
(<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-BEG>> .V)
|
||||
(<SET V <APPLY <GET ,PREACTIONS .A>>> .V)
|
||||
(<AND .I <SET V <APPLY <GETP .I ,P?ACTION>>>> .V)
|
||||
(<AND .O
|
||||
<NOT <==? .A ,V?WALK>>
|
||||
<LOC .O>
|
||||
<SET V <APPLY <GETP <LOC .O> ,P?CONTFCN>>>>
|
||||
.V)
|
||||
(<AND .O
|
||||
<NOT <==? .A ,V?WALK>>
|
||||
<SET V <APPLY <GETP .O ,P?ACTION>>>>
|
||||
.V)
|
||||
(<SET V <APPLY <GET ,ACTIONS .A>>> .V)>)>
|
||||
<SETG PRSA .OA>
|
||||
<SETG PRSO .OO>
|
||||
<SETG PRSI .OI>
|
||||
.V>)
|
||||
(T
|
||||
|
||||
'<PROG ()
|
||||
|
||||
<SETG DEBUG <>>
|
||||
|
||||
<ROUTINE PERFORM (A "OPTIONAL" (O <>) (I <>) "AUX" V OA OO OI)
|
||||
#DECL ((A) FIX (O) <OR FALSE OBJECT FIX> (I) <OR FALSE OBJECT> (V) ANY)
|
||||
<COND (,DEBUG
|
||||
<TELL "** PERFORM: PRSA = ">
|
||||
<PRINC <NTH ,ACTIONS <+ <* .A 2> 1>>>
|
||||
<COND (.O
|
||||
<COND (<==? .A ,V?WALK>
|
||||
<TELL " | DIR = " N .O>)
|
||||
(T <TELL " | PRSO = " D .O>)>)>
|
||||
<COND (.I <TELL " | PRSI = " D .I>)>)>
|
||||
<SET OA ,PRSA>
|
||||
<SET OO ,PRSO>
|
||||
<SET OI ,PRSI>
|
||||
<COND (<AND <NOT <==? .A ,V?WALK>>
|
||||
<EQUAL? ,IT .I .O>
|
||||
<NOT <EQUAL? ,P-IT-LOC ,HERE>>>
|
||||
<TELL "I don't see what you are referring to." CR>
|
||||
<RFATAL>)>
|
||||
<COND (<==? .A ,V?WALK> T)
|
||||
(<==? .O ,IT> <SET O ,P-IT-OBJECT>)
|
||||
(<==? .I ,IT> <SET I ,P-IT-OBJECT>)>
|
||||
<SETG PRSA .A>
|
||||
<SETG PRSO .O>
|
||||
<COND (<AND ,PRSO <NOT <VERB? WALK>>>
|
||||
<SETG P-IT-OBJECT ,PRSO>
|
||||
<SETG P-IT-LOC ,HERE>)>
|
||||
<SETG PRSI .I>
|
||||
<COND (<AND <NOT <VERB? WALK>>
|
||||
<EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
|
||||
<SET V <D-APPLY "Not Here" ,NOT-HERE-OBJECT-F>>> .V)
|
||||
(T
|
||||
<SET O ,PRSO>
|
||||
<SET I ,PRSI>
|
||||
<COND (<SET V <DD-APPLY "Actor" ,WINNER
|
||||
<GETP ,WINNER ,P?ACTION>>> .V)
|
||||
(<SET V <D-APPLY "Room (M-BEG)"
|
||||
<GETP <LOC ,WINNER> ,P?ACTION>
|
||||
,M-BEG>> .V)
|
||||
(<SET V <D-APPLY "Preaction"
|
||||
<GET ,PREACTIONS .A>>> .V)
|
||||
(<AND .I <SET V <D-APPLY "PRSI"
|
||||
<GETP .I ,P?ACTION>>>> .V)
|
||||
(<AND .O
|
||||
<NOT <==? .A ,V?WALK>>
|
||||
<LOC .O>
|
||||
<GETP <LOC .O> ,P?CONTFCN>
|
||||
<SET V <DD-APPLY "Container" <LOC .O>
|
||||
<GETP <LOC .O> ,P?CONTFCN>>>>
|
||||
.V)
|
||||
(<AND .O
|
||||
<NOT <==? .A ,V?WALK>>
|
||||
<SET V <D-APPLY "PRSO"
|
||||
<GETP .O ,P?ACTION>>>>
|
||||
.V)
|
||||
(<SET V <D-APPLY <>
|
||||
<GET ,ACTIONS .A>>> .V)>)>
|
||||
<SETG PRSA .OA>
|
||||
<SETG PRSO .OO>
|
||||
<SETG PRSI .OI>
|
||||
.V>
|
||||
|
||||
<DEFINE D-APPLY (STR FCN "OPTIONAL" FOO "AUX" RES)
|
||||
<COND (<NOT .FCN> <>)
|
||||
(T
|
||||
<COND (,DEBUG
|
||||
<COND (<NOT .STR>
|
||||
<TELL CR " Default ->" CR>)
|
||||
(T <TELL CR " " .STR " -> ">)>)>
|
||||
<SET RES
|
||||
<COND (<ASSIGNED? FOO>
|
||||
<APPLY .FCN .FOO>)
|
||||
(T <APPLY .FCN>)>>
|
||||
<COND (<AND ,DEBUG .STR>
|
||||
<COND (<==? .RES 2>
|
||||
<TELL "Fatal" CR>)
|
||||
(<NOT .RES>
|
||||
<TELL "Not handled">)
|
||||
(T <TELL "Handled" CR>)>)>
|
||||
.RES)>>
|
||||
|
||||
<ROUTINE DD-APPLY (STR OBJ FCN "OPTIONAL" (FOO <>))
|
||||
<COND (,DEBUG <TELL "[" D .OBJ "=]">)>
|
||||
<D-APPLY .STR .FCN .FOO>>
|
||||
>)>
|
||||
|
||||
;"former CLOCK file"
|
||||
|
||||
<CONSTANT C-TABLELEN 180>
|
||||
|
||||
<GLOBAL C-TABLE <ITABLE NONE 180>>
|
||||
|
||||
<GLOBAL C-DEMONS 180>
|
||||
|
||||
<GLOBAL C-INTS 180>
|
||||
|
||||
<CONSTANT C-INTLEN 6>
|
||||
|
||||
<CONSTANT C-ENABLED? 0>
|
||||
|
||||
<CONSTANT C-TICK 1>
|
||||
|
||||
<CONSTANT C-RTN 2>
|
||||
|
||||
;<ROUTINE DEMON (RTN TICK "AUX" CINT) ;"not referenced, removed 2/27/85 by SEM"
|
||||
#DECL ((RTN) ATOM (TICK) FIX (CINT) <PRIMTYPE VECTOR>)
|
||||
<PUT <SET CINT <INT .RTN T>> ,C-TICK .TICK>
|
||||
.CINT>
|
||||
|
||||
<ROUTINE QUEUE (RTN TICK "AUX" CINT)
|
||||
#DECL ((RTN) ATOM (TICK) FIX (CINT) <PRIMTYPE VECTOR>)
|
||||
<PUT <SET CINT <INT .RTN>> ,C-TICK .TICK>
|
||||
.CINT>
|
||||
|
||||
<ROUTINE INT (RTN "OPTIONAL" (DEMON <>) E C INT)
|
||||
#DECL ((RTN) ATOM (DEMON) <OR ATOM FALSE> (E C INT) <PRIMTYPE
|
||||
VECTOR>)
|
||||
<SET E <REST ,C-TABLE ,C-TABLELEN>>
|
||||
<SET C <REST ,C-TABLE ,C-INTS>>
|
||||
<REPEAT ()
|
||||
<COND (<==? .C .E>
|
||||
<SETG C-INTS <- ,C-INTS ,C-INTLEN>>
|
||||
<AND .DEMON <SETG C-DEMONS <- ,C-DEMONS ,C-INTLEN>>>
|
||||
<SET INT <REST ,C-TABLE ,C-INTS>>
|
||||
<PUT .INT ,C-RTN .RTN>
|
||||
<RETURN .INT>)
|
||||
(<EQUAL? <GET .C ,C-RTN> .RTN> <RETURN .C>)>
|
||||
<SET C <REST .C ,C-INTLEN>>>>
|
||||
|
||||
<GLOBAL CLOCK-WAIT <>>
|
||||
|
||||
<ROUTINE CLOCKER ("AUX" C E TICK (FLG <>))
|
||||
#DECL ((C E) <PRIMTYPE VECTOR> (TICK) FIX (FLG) <OR FALSE ATOM>)
|
||||
<COND (,CLOCK-WAIT
|
||||
<SETG CLOCK-WAIT <>>
|
||||
<RFALSE>)>
|
||||
<SET C <REST ,C-TABLE <COND (,P-WON ,C-INTS) (T ,C-DEMONS)>>>
|
||||
<SET E <REST ,C-TABLE ,C-TABLELEN>>
|
||||
<REPEAT ()
|
||||
<COND (<==? .C .E>
|
||||
<COND (<AND <NOT <EQUAL? ,GAME-FLAG 2>>
|
||||
<G? <SETG MOVES <+ ,MOVES 1>> 999>>
|
||||
<SETG MOVES 0>)>
|
||||
<RETURN .FLG>)
|
||||
(<NOT <0? <GET .C ,C-ENABLED?>>>
|
||||
<SET TICK <GET .C ,C-TICK>>
|
||||
<COND (<0? .TICK>)
|
||||
(<AND <EQUAL? ,GAME-FLAG 2>
|
||||
<==? .TICK -1>>
|
||||
<COND (<APPLY <GET .C ,C-RTN>>
|
||||
<SET FLG T>)>)
|
||||
(T
|
||||
<COND (<EQUAL? ,GAME-FLAG 2>
|
||||
<PUT .C ,C-TICK
|
||||
<SET TICK <- .TICK ,C-ELAPSED>>>)
|
||||
(T
|
||||
<PUT .C ,C-TICK <- .TICK 1>>)>
|
||||
<COND (<NOT <G? .TICK 1>>
|
||||
<COND (<EQUAL? ,GAME-FLAG 2>
|
||||
<PUT .C ,C-TICK 0>)>
|
||||
<COND (<APPLY <GET .C ,C-RTN>>
|
||||
<SET FLG T>)>)>)>)>
|
||||
<SET C <REST .C ,C-INTLEN>>>>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,13 @@
|
|||
|
||||
<ROUTINE V-QUIT ("OPTIONAL" (ASK? T) "AUX" SCOR)
|
||||
#DECL ((ASK?) <OR ATOM <PRIMTYPE LIST>> (SCOR) FIX)
|
||||
<V-SCORE>
|
||||
<COND (.ASK?
|
||||
<SAY-SURE>
|
||||
<TELL "leave the story now?">
|
||||
<COND (<YES?>
|
||||
<QUIT>)
|
||||
(T
|
||||
<TELL ,OKAY "the story continues..." CR>)>)
|
||||
(T
|
||||
<QUIT>)>>
|
|
@ -0,0 +1,48 @@
|
|||
"DEMO for--
|
||||
SAMPLER
|
||||
(c) Copyright 1984 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<SET REDEFINE T>
|
||||
|
||||
;<GLOBAL BIGFIX 10000>
|
||||
|
||||
<OR <GASSIGNED? ZILCH>
|
||||
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
|
||||
|
||||
<DEFINE IFILE (STR "OPTIONAL" (FLOAD? <>) "AUX" (TIM <TIME>))
|
||||
<INSERT-FILE .STR .FLOAD?>>
|
||||
|
||||
<PRINC "Sampler ZORK I: The Great Underground Empire
|
||||
">
|
||||
|
||||
<OR <GASSIGNED? INSERT-CRUFTY>
|
||||
<DEFINE INSERT-CRUFTY (STR) <INSERT-FILE .STR T>>>
|
||||
|
||||
<COND (<GASSIGNED? PREDGEN>
|
||||
<ID 0>)>
|
||||
|
||||
<IFILE "MISC" T>
|
||||
<IFILE "SYNTAX" T>
|
||||
<IFILE "DUNGEON" T>
|
||||
<IFILE "GLOBALS" T>
|
||||
<IFILE "PARSER" T>
|
||||
<IFILE "VERBS" T>
|
||||
<IFILE "ACTIONS" T>
|
||||
<IFILE "TUTORIAL" T>
|
||||
<IFILE "PLANETFALL" T>
|
||||
<IFILE "INFIDEL" T>
|
||||
|
||||
<PROPDEF SIZE 5>
|
||||
<PROPDEF CAPACITY 0>
|
||||
<PROPDEF VALUE 0>
|
||||
<PROPDEF TVALUE 0>
|
||||
|
||||
<GC 0 T>
|
||||
|
||||
<DEFINE CNT (STR OBL)
|
||||
<PRINC .STR>
|
||||
<PRIN1 <MAPF ,+ ,LENGTH .OBL>>
|
||||
<CRLF>>
|
||||
|
||||
<COND (<NOT <GASSIGNED? PREDGEN>>
|
||||
<GC-MON T>)>
|
|
@ -0,0 +1,634 @@
|
|||
"SYNTAX for
|
||||
DEMO
|
||||
(c) Copyright 1984 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
"Buzzwords, Prepositions and Directions"
|
||||
|
||||
<BUZZ A AN THE IS AND OF THEN ALL ONE BUT EXCEPT \. \, \" YES NO Y HERE
|
||||
TUTORIAL PLANET INFIDE WITNES PROPAG NOTHIN BLATAN>
|
||||
|
||||
<SYNONYM WITH USING>
|
||||
<SYNONYM THROUGH THRU> ;"broken out from WITH by JW - 3/21/85"
|
||||
<SYNONYM IN INSIDE INTO>
|
||||
<SYNONYM ON ONTO>
|
||||
<SYNONYM UNDER UNDERNEATH BENEATH BELOW>
|
||||
|
||||
<SYNONYM NORTH N FORE FORWARD FOREWARD F>
|
||||
<SYNONYM SOUTH S AFT>
|
||||
<SYNONYM EAST E STARBOARD SB>
|
||||
<SYNONYM WEST W PORT P>
|
||||
<SYNONYM DOWN D>
|
||||
<SYNONYM UP U>
|
||||
;<SYNONYM NW NORTHWEST>
|
||||
;<SYNONYM NE NORTHE>
|
||||
;<SYNONYM SW SOUTHWEST>
|
||||
;<SYNONYM SE SOUTHE>
|
||||
|
||||
^L
|
||||
|
||||
"Game Commands"
|
||||
|
||||
<SYNTAX VERBOSE = V-VERBOSE>
|
||||
|
||||
<SYNTAX BRIEF = V-BRIEF>
|
||||
|
||||
<SYNTAX SUPER = V-SUPER-BRIEF>
|
||||
<SYNONYM SUPER SUPERBRIEF>
|
||||
|
||||
<SYNTAX DIAGNOSE = V-DIAGNOSE>
|
||||
|
||||
<SYNTAX INVENTORY = V-INVENTORY>
|
||||
<SYNONYM INVENTORY I>
|
||||
|
||||
<SYNTAX QUIT = V-QUIT>
|
||||
<SYNONYM QUIT Q>
|
||||
|
||||
<SYNTAX RESTART = V-RESTART>
|
||||
|
||||
<SYNTAX RESTORE = 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 $DEBUG = V-DEBUG>
|
||||
|
||||
^L
|
||||
|
||||
"Real Verbs"
|
||||
|
||||
<SYNTAX ACTIVATE OBJECT (FIND LIGHTBIT)
|
||||
(HELD CARRIED ON-GROUND IN-ROOM) = V-LAMP-ON>
|
||||
|
||||
<SYNTAX AGAIN = V-AGAIN>
|
||||
<SYNONYM AGAIN G>
|
||||
|
||||
<SYNTAX ANSWER = V-ANSWER>
|
||||
<SYNTAX ANSWER OBJECT = V-REPLY>
|
||||
<SYNONYM ANSWER REPLY>
|
||||
|
||||
<SYNTAX APPLY OBJECT TO OBJECT = V-PUT PRE-PUT>
|
||||
|
||||
<SYNTAX ATTACK OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-ATTACK>
|
||||
<SYNONYM ATTACK FIGHT HURT INJURE HIT>
|
||||
|
||||
<SYNTAX BACK = V-BACK>
|
||||
|
||||
<SYNTAX BLAST = V-BLAST>
|
||||
|
||||
<SYNTAX BLOW OUT OBJECT = V-LAMP-OFF>
|
||||
<SYNTAX BLOW UP OBJECT WITH
|
||||
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED) = V-INFLATE>
|
||||
<SYNTAX BLOW UP OBJECT = V-BLAST>
|
||||
<SYNTAX BLOW IN OBJECT = V-BREATHE>
|
||||
|
||||
<SYNTAX BOARD OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
|
||||
|
||||
<SYNTAX BRUSH OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-BRUSH>
|
||||
<SYNTAX BRUSH OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
WITH OBJECT = V-BRUSH>
|
||||
<SYNONYM BRUSH CLEAN>
|
||||
|
||||
<SYNTAX BUG = V-BUG>
|
||||
|
||||
<SYNTAX BURN OBJECT (FIND BURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
|
||||
= V-BURN PRE-BURN>
|
||||
<SYNTAX BURN DOWN OBJECT (FIND BURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
|
||||
= V-BURN PRE-BURN>
|
||||
<SYNONYM BURN INCINERATE IGNITE>
|
||||
|
||||
<SYNTAX CATCH OBJECT IN OBJECT = V-CATCH>
|
||||
<SYNTAX CATCH OBJECT WITH OBJECT = V-CATCH>
|
||||
<SYNTAX TRAP OBJECT IN OBJECT = V-CATCH>
|
||||
<SYNTAX TRAP OBJECT WITH OBJECT = V-CATCH>
|
||||
<SYNONYM CATCH SNARE CAPTURE>
|
||||
|
||||
<SYNTAX CHOMP = V-CHOMP>
|
||||
<SYNONYM CHOMP LOSE BARF>
|
||||
|
||||
<SYNTAX CLIMB = V-CLIMB-UP>
|
||||
<SYNTAX CLIMB UP OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
|
||||
<SYNTAX CLIMB DOWN OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
|
||||
<SYNTAX CLIMB OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-FOO>
|
||||
<SYNTAX CLIMB IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
|
||||
<SYNTAX CLIMB ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
|
||||
<SYNTAX CLIMB THROUGH OBJECT = V-THROUGH>
|
||||
|
||||
<SYNTAX CLOSE OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-CLOSE>
|
||||
<SYNONYM CLOSE SHUT COLLAPSE SHORTEN>
|
||||
|
||||
<SYNTAX COMMAND OBJECT (FIND ACTORBIT) = V-COMMAND>
|
||||
|
||||
<SYNTAX COUNT OBJECT = V-COUNT>
|
||||
|
||||
<SYNTAX CROSS OBJECT = V-CROSS>
|
||||
<SYNONYM CROSS FORD>
|
||||
|
||||
<SYNTAX CUT OBJECT WITH OBJECT (FIND WEAPONBIT) (CARRIED HELD) = V-CUT>
|
||||
<SYNONYM CUT SLICE PIERCE>
|
||||
|
||||
<SYNTAX CURSE = V-CURSES>
|
||||
<SYNTAX CURSE OBJECT (FIND ACTORBIT) = V-CURSES>
|
||||
<SYNONYM CURSE DAMN SHIT FUCK TROT KRIP MEGAKRIP TROTTING>
|
||||
|
||||
<SYNTAX DEFLATE OBJECT = V-DEFLATE>
|
||||
|
||||
<SYNTAX DESTROY OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
|
||||
WITH OBJECT (HELD CARRIED TAKE) = V-MUNG PRE-MUNG>
|
||||
<SYNTAX DESTROY DOWN OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
|
||||
WITH OBJECT (HELD CARRIED TAKE) = V-MUNG PRE-MUNG>
|
||||
<SYNTAX DESTROY IN OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-OPEN>
|
||||
<SYNONYM DESTROY DAMAGE BREAK BLOCK SMASH>
|
||||
|
||||
<SYNTAX DIG IN OBJECT = V-DIG PRE-DIG>
|
||||
<SYNTAX DIG
|
||||
OBJECT (ON-GROUND IN-ROOM)
|
||||
WITH
|
||||
OBJECT (FIND TOOLBIT) (HELD CARRIED HAVE)
|
||||
= V-DIG PRE-DIG ;*>
|
||||
<SYNTAX DIG
|
||||
IN
|
||||
OBJECT (ON-GROUND IN-ROOM)
|
||||
WITH
|
||||
OBJECT (FIND TOOLBIT) (HELD CARRIED HAVE)
|
||||
= V-DIG PRE-DIG>
|
||||
<SYNTAX DIG OBJECT IN OBJECT = V-HOLE-DIG>
|
||||
<SYNTAX DIG WITH OBJECT = V-DIG-WITH>
|
||||
|
||||
|
||||
<SYNTAX DISEMBARK OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM)
|
||||
= V-DISEMBARK>
|
||||
|
||||
<SYNTAX DISENCHANT OBJECT = V-DISENCHANT>
|
||||
|
||||
<SYNTAX DRINK OBJECT (FIND DRINKBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
= V-DRINK>
|
||||
<SYNTAX DRINK FROM OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-DRINK-FROM>
|
||||
<SYNTAX DRINK OBJECT FROM OBJECT (HELD CARRIED) = V-DRINK-FROM>
|
||||
<SYNONYM DRINK SIP IMBIBE SWALLOW>
|
||||
|
||||
<SYNTAX DROP OBJECT (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-ON PRE-PUT>
|
||||
<SYNONYM DROP RELEASE>
|
||||
|
||||
<SYNTAX EAT OBJECT (FIND FOODBIT) (HELD CARRIED ON-GROUND IN-ROOM ;HAVE)
|
||||
= V-EAT PRE-EAT>
|
||||
<SYNONYM EAT CONSUME TASTE BITE>
|
||||
|
||||
<SYNTAX ECHO = V-ECHO>
|
||||
|
||||
<SYNTAX ENTER = V-ENTER>
|
||||
<SYNTAX ENTER OBJECT = V-THROUGH>
|
||||
|
||||
<SYNTAX EXIT = V-EXIT>
|
||||
<SYNTAX EXIT OBJECT = V-EXIT>
|
||||
|
||||
<SYNTAX EXAMINE OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) ;(MANY)
|
||||
= V-EXAMINE PRE-EXAMINE>
|
||||
<SYNTAX EXAMINE IN OBJECT (HELD CARRIED IN-ROOM ON-GROUND MANY)
|
||||
= V-LOOK-INSIDE>
|
||||
<SYNTAX EXAMINE ON OBJECT (HELD CARRIED IN-ROOM ON-GROUND MANY)
|
||||
= V-LOOK-INSIDE>
|
||||
<SYNONYM EXAMINE DESCRIBE WHAT WHATS>
|
||||
|
||||
<SYNTAX EXORCISE OBJECT = V-EXORCISE>
|
||||
<SYNTAX EXORCISE OUT OBJECT (FIND ACTORBIT) = V-EXORCISE>
|
||||
<SYNTAX EXORCISE AWAY OBJECT (FIND ACTORBIT) = V-EXORCISE>
|
||||
<SYNONYM EXORCISE BANISH CAST DRIVE BEGONE>
|
||||
|
||||
<SYNTAX EXTINGUISH OBJECT (FIND ONBIT)
|
||||
(HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE) = V-LAMP-OFF>
|
||||
<SYNONYM EXTINGUISH DOUSE>
|
||||
|
||||
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
WITH OBJECT = V-FILL ;PRE-FILL>
|
||||
<SYNTAX FILL OBJECT (FIND CONTBIT)
|
||||
(HELD CARRIED ON-GROUND IN-ROOM) = V-FILL ;PRE-FILL>
|
||||
<SYNTAX FILL OUT OBJECT = V-FILL-OUT>
|
||||
<SYNTAX FILL OUT OBJECT WITH OBJECT = V-FILL-OUT>
|
||||
|
||||
<SYNTAX FIND OBJECT = V-FIND>
|
||||
<SYNONYM FIND WHERE SEEK SEE>
|
||||
|
||||
<SYNTAX FIRE OBJECT WITH OBJECT (HELD) = V-SZAP PRE-SZAP>
|
||||
<SYNTAX FIRE OBJECT = V-ZAP PRE-ZAP>
|
||||
<SYNTAX FIRE AT OBJECT = V-ZAP PRE-ZAP>
|
||||
<SYNTAX FIRE OBJECT (HELD) AT OBJECT = V-ZAP>
|
||||
<SYNONYM FIRE ZAP BLAST SHOOT ;BURN>
|
||||
|
||||
<SYNTAX FLUSH OBJECT = V-FLUSH>
|
||||
|
||||
<SYNTAX FOLD OBJECT = V-FOLD>
|
||||
<SYNTAX UNFOLD OBJECT = V-UNFOLD>
|
||||
|
||||
<SYNTAX FOLLOW = V-FOLLOW>
|
||||
<SYNTAX FOLLOW OBJECT = V-FOLLOW>
|
||||
<SYNONYM FOLLOW PURSUE CHASE COME>
|
||||
|
||||
<SYNTAX FROBOZZ = V-FROBOZZ>
|
||||
|
||||
<SYNTAX GIVE OBJECT (MANY HELD HAVE)
|
||||
TO OBJECT (FIND ACTORBIT) (ON-GROUND) = V-GIVE PRE-GIVE>
|
||||
<SYNTAX GIVE OBJECT (FIND ACTORBIT) (ON-GROUND)
|
||||
OBJECT (MANY HELD HAVE) = V-SGIVE PRE-SGIVE>
|
||||
<SYNTAX HAND OBJECT (MANY HELD HAVE)
|
||||
TO OBJECT (FIND ACTORBIT) (ON-GROUND) = V-GIVE PRE-GIVE>
|
||||
<SYNTAX HAND OBJECT (FIND ACTORBIT) (ON-GROUND)
|
||||
OBJECT (MANY HELD HAVE) = V-SGIVE PRE-SGIVE>
|
||||
<SYNONYM GIVE DONATE OFFER FEED>
|
||||
|
||||
<SYNTAX HATCH OBJECT = V-HATCH>
|
||||
|
||||
<SYNTAX HELLO = V-HELLO>
|
||||
<SYNTAX HELLO OBJECT = V-HELLO>
|
||||
<SYNONYM HELLO HI>
|
||||
|
||||
<SYNTAX INFLAT OBJECT WITH
|
||||
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED) = V-INFLATE>
|
||||
|
||||
<SYNTAX IS OBJECT IN OBJECT = V-IS-IN>
|
||||
<SYNTAX IS OBJECT ON OBJECT = V-IS-IN>
|
||||
|
||||
<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 OFF OBJECT = V-LEAP>
|
||||
<SYNONYM JUMP LEAP DIVE>
|
||||
|
||||
<SYNTAX KICK OBJECT = V-KICK>
|
||||
<SYNONYM KICK TAUNT>
|
||||
|
||||
<SYNTAX KILL OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-ATTACK>
|
||||
<SYNONYM KILL MURDER SLAY DISPATCH>
|
||||
|
||||
<SYNTAX STAB OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-STAB>
|
||||
<SYNTAX STAB OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-ATTACK>
|
||||
|
||||
<SYNTAX KISS OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-KISS>
|
||||
|
||||
<SYNTAX KNOCK AT OBJECT = V-KNOCK>
|
||||
<SYNTAX KNOCK ON OBJECT = V-KNOCK>
|
||||
<SYNTAX KNOCK DOWN OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-ATTACK>
|
||||
<SYNONYM KNOCK RAP>
|
||||
|
||||
<SYNTAX LAUNCH OBJECT (FIND VEHBIT) = V-LAUNCH>
|
||||
|
||||
<SYNTAX LEAN ON OBJECT (HELD HAVE) = V-LEAN-ON>
|
||||
|
||||
<SYNTAX LEAVE = V-LEAVE>
|
||||
<SYNTAX LEAVE OBJECT = V-DROP PRE-DROP>
|
||||
|
||||
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT)
|
||||
(HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE) = V-LAMP-ON>
|
||||
<SYNTAX LIGHT OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND FLAMEBIT) (HELD CARRIED TAKE HAVE) = V-BURN PRE-BURN>
|
||||
|
||||
<SYNTAX LISTEN TO OBJECT = V-LISTEN>
|
||||
<SYNTAX LISTEN FOR OBJECT = V-LISTEN>
|
||||
|
||||
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) WITH
|
||||
OBJECT (FIND TOOLBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE) = V-LOCK>
|
||||
|
||||
<SYNTAX LOOK = V-LOOK>
|
||||
<SYNTAX LOOK OBJECT = V-LOOK-CRETIN>
|
||||
<SYNTAX LOOK AROUND OBJECT (FIND RMUNGBIT) = V-LOOK>
|
||||
<SYNTAX LOOK DOWN OBJECT (FIND RMUNGBIT) = V-LOOK>
|
||||
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) = V-EXAMINE
|
||||
PRE-EXAMINE>
|
||||
<SYNTAX LOOK ON OBJECT = V-LOOK-ON PRE-LOOK-ON>
|
||||
<SYNTAX LOOK THROUGH OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) =
|
||||
V-LOOK-INSIDE>
|
||||
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER>
|
||||
<SYNTAX LOOK UP OBJECT (FIND RMUNGBIT) = V-LOOK-UP>
|
||||
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
|
||||
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY) = V-LOOK-INSIDE>
|
||||
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
WITH OBJECT = V-READ PRE-READ>
|
||||
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
THROUGH OBJECT = V-READ PRE-READ>
|
||||
<SYNTAX LOOK FOR OBJECT = V-FIND>
|
||||
<SYNONYM LOOK L STARE GAZE>
|
||||
|
||||
<SYNTAX LOWER OBJECT = V-LOWER>
|
||||
|
||||
<SYNTAX OIL OBJECT = V-OIL>
|
||||
<SYNTAX OIL OBJECT WITH OBJECT (HAVE) = V-OIL>
|
||||
<SYNONYM OIL LUBRICATE GREASE>
|
||||
|
||||
<SYNTAX MAKE OBJECT = V-MAKE>
|
||||
|
||||
<SYNTAX MELT OBJECT
|
||||
WITH OBJECT (FIND FLAMEBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-MELT>
|
||||
<SYNONYM MELT LIQUIFY>
|
||||
|
||||
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
|
||||
<SYNTAX MOVE OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX MOVE OBJECT WITH OBJECT (FIND TOOLBIT) = V-TURN PRE-TURN>
|
||||
<SYNTAX ROLL UP OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
|
||||
|
||||
<SYNTAX MUMBLE = V-MUMBLE>
|
||||
<SYNONYM MUMBLE SIGH>
|
||||
|
||||
<SYNTAX ODYSSEUS = V-ODYSSEUS>
|
||||
<SYNONYM ODYSSEUS ULYSSES>
|
||||
|
||||
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) = V-OPEN>
|
||||
<SYNTAX OPEN UP OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
= V-OPEN>
|
||||
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM) WITH
|
||||
OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE) = V-UNLOCK>
|
||||
<SYNONYM OPEN EXTEND LENGTHEN>
|
||||
|
||||
<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 PLAY OBJECT = V-PLAY>
|
||||
<SYNTAX PLAY WITH OBJECT (FIND ACTORBIT) = V-PLAY-WITH>
|
||||
|
||||
<SYNTAX PLUG OBJECT WITH OBJECT = V-PLUG>
|
||||
<SYNONYM PLUG GLUE PATCH REPAIR FIX>
|
||||
|
||||
<SYNTAX PLUGH = V-ADVENT>
|
||||
<SYNONYM PLUGH XYZZY PLOVER>
|
||||
|
||||
<SYNTAX POKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-MUNG PRE-MUNG>
|
||||
<SYNTAX PUNCTURE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-MUNG PRE-MUNG>
|
||||
|
||||
<SYNTAX POUR OBJECT (HELD CARRIED) = V-POUR PRE-DROP>
|
||||
<SYNTAX POUR OBJECT (HELD CARRIED) IN OBJECT = V-POUR-IN>
|
||||
<SYNTAX POUR OBJECT (HELD CARRIED) ON OBJECT = V-POUR-ON>
|
||||
<SYNTAX POUR OBJECT (HELD CARRIED) FROM OBJECT = V-DROP PRE-DROP>
|
||||
<SYNONYM POUR SPILL>
|
||||
|
||||
<SYNTAX PRAY = V-PRAY>
|
||||
|
||||
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
|
||||
<SYNTAX PULL ON OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
|
||||
<SYNTAX PULL UP OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
|
||||
<SYNONYM PULL TUG YANK>
|
||||
|
||||
<SYNTAX PUMP UP OBJECT = V-PUMP>
|
||||
<SYNTAX PUMP UP OBJECT WITH OBJECT = V-PUMP>
|
||||
|
||||
<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 MANY) = V-PUSH>
|
||||
<SYNTAX PUSH UP OBJECT = V-PUSH-UP>
|
||||
<SYNTAX PUSH DOWN OBJECT = V-PUSH-DOWN>
|
||||
<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
|
||||
<SYNTAX PUSH OBJECT WITH OBJECT (FIND TOOLBIT) = V-TURN PRE-TURN>
|
||||
<SYNTAX PUSH OBJECT UNDER OBJECT = V-PUT-UNDER>
|
||||
<SYNTAX PUSH OBJECT THROUGH OBJECT = V-PUSH-THROUGH>
|
||||
<SYNONYM PUSH PRESS>
|
||||
|
||||
<SYNTAX PUT OBJECT (HELD MANY) IN OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX PUT OBJECT (HELD MANY) ON OBJECT = V-PUT-ON PRE-PUT>
|
||||
<SYNTAX PUT DOWN OBJECT (HELD MANY) = V-DROP PRE-DROP>
|
||||
<SYNTAX PUT OBJECT (HELD HAVE) UNDER OBJECT = V-PUT-UNDER>
|
||||
<SYNTAX PUT OUT OBJECT (FIND ONBIT)
|
||||
(HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE) = V-LAMP-OFF>
|
||||
<SYNTAX PUT ON OBJECT (IN-ROOM ON-GROUND CARRIED MANY) = V-WEAR>
|
||||
<SYNTAX PUT OBJECT (HELD MANY HAVE) BEHIND OBJECT = V-PUT-BEHIND>
|
||||
<SYNTAX PUT OBJECT (HELD CARRIED HAVE) THROUGH OBJECT = V-SLIDE>
|
||||
<SYNTAX PUT OBJECT (TAKE) OVER OBJECT = V-ATTRACT>
|
||||
<SYNTAX PUT OBJECT (TAKE) NEAR OBJECT = V-ATTRACT>
|
||||
<SYNTAX PUT OBJECT ACROSS OBJECT = V-SPAN>
|
||||
<SYNONYM PUT STUFF INSERT PLACE HIDE>
|
||||
|
||||
<SYNTAX RAISE OBJECT = V-RAISE>
|
||||
<SYNTAX RAISE UP OBJECT = V-RAISE>
|
||||
<SYNONYM RAISE LIFT>
|
||||
|
||||
<SYNTAX RAPE OBJECT (FIND ACTORBIT) = V-RAPE>
|
||||
<SYNONYM RAPE MOLEST>
|
||||
|
||||
<SYNTAX REACH IN OBJECT (FIND CONTBIT) = V-REACH>
|
||||
|
||||
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
|
||||
= V-READ PRE-READ>
|
||||
<SYNTAX READ INSIDE OBJECT = V-READ-INSIDE>
|
||||
<SYNTAX READ FROM OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
|
||||
= V-READ PRE-READ>
|
||||
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
|
||||
THROUGH OBJECT = V-READ PRE-READ>
|
||||
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
|
||||
WITH OBJECT = V-READ PRE-READ>
|
||||
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
|
||||
OBJECT = V-READ-PAGE>
|
||||
<SYNONYM READ SKIM>
|
||||
|
||||
<SYNTAX REMOVE OBJECT = V-REMOVE>
|
||||
|
||||
<SYNTAX REPENT = V-REPENT>
|
||||
|
||||
<SYNTAX RING OBJECT (TAKE) = V-RING>
|
||||
<SYNTAX RING OBJECT (TAKE) WITH OBJECT = V-RING>
|
||||
<SYNONYM RING PEAL>
|
||||
|
||||
<SYNTAX RUB OBJECT = V-RUB>
|
||||
<SYNTAX RUB OBJECT WITH OBJECT (TAKE) = V-ZATTRACT>
|
||||
<SYNTAX RUB OBJECT (TAKE) TO OBJECT = V-ATTRACT>
|
||||
<SYNONYM RUB TOUCH FEEL PAT PET>
|
||||
|
||||
<SYNTAX TALK TO OBJECT (FIND ACTORBIT) (IN-ROOM) = V-TELL>
|
||||
<SYNTAX SAY = V-SAY>
|
||||
|
||||
<SYNTAX SCOLD OBJECT (FIND ACTORBIT) = V-SCOLD>
|
||||
|
||||
<SYNTAX SEARCH OBJECT = V-SEARCH>
|
||||
<SYNTAX SEARCH IN OBJECT = V-SEARCH>
|
||||
<SYNTAX SEARCH FOR OBJECT = V-FIND>
|
||||
|
||||
<SYNTAX SEND FOR OBJECT = V-SEND>
|
||||
|
||||
<SYNTAX SHAKE OBJECT = V-SHAKE>
|
||||
|
||||
<SYNTAX SHOW OBJECT (HAVE) TO OBJECT (FIND ACTORBIT) = V-SHOW>
|
||||
|
||||
<SYNTAX SKIP = V-SKIP>
|
||||
<SYNONYM SKIP HOP>
|
||||
|
||||
<SYNTAX SIT = V-SIT>
|
||||
<SYNTAX SIT ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
|
||||
<SYNTAX SIT DOWN OBJECT (FIND RMUNGBIT) = V-SIT-DOWN>
|
||||
<SYNTAX SIT IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD PRE-BOARD>
|
||||
<SYNTAX SIT OBJECT (HELD MANY HAVE TAKE) IN OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX SIT OBJECT (HELD MANY HAVE TAKE) UNDER OBJECT
|
||||
= V-PUT-UNDER PRE-PUT-UNDER>
|
||||
<SYNTAX SIT OBJECT (TAKE) OVER OBJECT = V-ATTRACT>
|
||||
<SYNTAX SIT OBJECT (TAKE) NEAR OBJECT = V-ATTRACT>
|
||||
<SYNTAX SIT OBJECT ACROSS OBJECT = V-SPAN>
|
||||
<SYNONYM SIT RECLINE LIE LAY>
|
||||
|
||||
<SYNTAX SLEEP = V-SLEEP>
|
||||
|
||||
<SYNTAX SLIDE OBJECT UNDER OBJECT = V-PUT-UNDER>
|
||||
<SYNTAX SLIDE OBJECT (IN-ROOM ON-GROUND) OBJECT = V-PUSH-TO>
|
||||
<SYNTAX SLIDE OBJECT (IN-ROOM ON-GROUND) TO OBJECT = V-PUSH-TO>
|
||||
<SYNTAX SLIDE OBJECT (HELD CARRIED HAVE) THROUGH OBJECT = V-SLIDE>
|
||||
<SYNTAX SLIDE OBJECT ACROSS OBJECT = V-SPAN>
|
||||
|
||||
<SYNTAX SMELL OBJECT = V-SMELL>
|
||||
<SYNONYM SMELL SNIFF>
|
||||
|
||||
<SYNTAX SPIN OBJECT = V-SPIN>
|
||||
|
||||
<SYNTAX SPRAY OBJECT ON OBJECT = V-SPRAY>
|
||||
<SYNTAX SPRAY OBJECT WITH OBJECT = V-SSPRAY>
|
||||
|
||||
<SYNTAX SQUEEZE OBJECT = V-SQUEEZE>
|
||||
<SYNTAX SQUEEZE OBJECT ON OBJECT = V-PUT PRE-PUT>
|
||||
|
||||
<SYNTAX STAND = V-STAND>
|
||||
<SYNTAX STAND UP OBJECT (FIND RMUNGBIT) = V-STAND>
|
||||
<SYNTAX STAND UNDER OBJECT = V-STAND-UNDER>
|
||||
|
||||
<SYNTAX STAY = V-STAY>
|
||||
|
||||
<SYNTAX STRIKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) WITH OBJECT
|
||||
(FIND WEAPONBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE) = V-ATTACK>
|
||||
<SYNTAX STRIKE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-STRIKE>
|
||||
|
||||
<SYNTAX SWIM = V-SWIM>
|
||||
<SYNTAX SWIM IN OBJECT = V-SWIM>
|
||||
<SYNONYM SWIM BATHE WADE>
|
||||
|
||||
<SYNTAX SWING OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE) = V-SWING>
|
||||
<SYNTAX SWING OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
|
||||
AT OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-SWING>
|
||||
<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 VEHBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
|
||||
<SYNTAX TAKE ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
|
||||
<SYNTAX TAKE UP OBJECT (FIND RMUNGBIT) = V-STAND>
|
||||
<SYNTAX TAKE OFF OBJECT (FIND WEARBIT) (HELD CARRIED MANY) = V-TAKE-OFF>
|
||||
<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 (TAKE) OVER OBJECT = V-ATTRACT>
|
||||
<SYNTAX TAKE OBJECT (TAKE) NEAR OBJECT = V-ATTRACT>
|
||||
<SYNTAX TAKE OBJECT WITH OBJECT (TAKE) = V-ZATTRACT>
|
||||
<SYNONYM TAKE GET CARRY ;REMOVE GRAB>
|
||||
|
||||
<SYNTAX TASTE OBJECT = V-TASTE>
|
||||
|
||||
<SYNTAX TELL OBJECT (FIND ACTORBIT) (IN-ROOM) = V-TELL>
|
||||
<SYNTAX TELL OBJECT (FIND ACTORBIT) (IN-ROOM) FOR OBJECT = V-ASK-FOR>
|
||||
<SYNONYM TELL ASK>
|
||||
|
||||
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
|
||||
AT OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-THROW>
|
||||
<SYNTAX THROW OBJECT (HELD MANY HAVE) OVER OBJECT = V-SWING>
|
||||
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
|
||||
THROUGH OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-THROW>
|
||||
<SYNTAX THROW OBJECT OBJECT = V-OVERBOARD>
|
||||
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) IN OBJECT = V-PUT PRE-PUT>
|
||||
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) ON OBJECT = V-PUT-ON PRE-PUT>
|
||||
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) OFF OBJECT = V-THROW-OFF>
|
||||
<SYNTAX THROW OBJECT (HELD CARRIED HAVE) OVER OBJECT = V-THROW-OFF>
|
||||
<SYNONYM THROW HURL CHUCK TOSS>
|
||||
|
||||
<SYNTAX TIE OBJECT TO OBJECT = V-TIE>
|
||||
<SYNTAX TIE UP OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) WITH OBJECT
|
||||
(FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE) = V-TIE-UP>
|
||||
<SYNONYM TIE FASTEN SECURE ATTACH>
|
||||
|
||||
<SYNTAX TIME = V-TIME>
|
||||
<SYNONYM TIME T>
|
||||
|
||||
<SYNTAX TREASURE = V-TREASURE>
|
||||
<SYNONYM TREASURE TEMPLE>
|
||||
|
||||
<SYNTAX TURN OBJECT (FIND TURNBIT) TO OBJECT = V-TURN PRE-TURN>
|
||||
<SYNTAX TURN OBJECT (FIND TURNBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||
WITH OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE)
|
||||
= V-TURN PRE-TURN>
|
||||
<SYNTAX TURN ON OBJECT (FIND LIGHTBIT)
|
||||
(HELD CARRIED ON-GROUND IN-ROOM) = V-LAMP-ON>
|
||||
<SYNTAX TURN ON OBJECT WITH OBJECT (HAVE) = V-LAMP-ON>
|
||||
<SYNTAX TURN OFF OBJECT (FIND ONBIT)
|
||||
(HELD CARRIED ON-GROUND IN-ROOM ;HAVE) = V-LAMP-OFF>
|
||||
<SYNTAX TURN OBJECT (FIND TURNBIT) FOR OBJECT = V-TURN PRE-TURN>
|
||||
;<SYNTAX TURN OBJECT (FIND TURNBIT) = V-TURN PRE-TURN>
|
||||
<SYNONYM TURN SET FLIP>
|
||||
|
||||
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT
|
||||
(FIND TOOLBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE) = 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>
|
||||
<SYNONYM UNTIE FREE RELEASE UNFASTEN UNATTACH UNHOOK>
|
||||
|
||||
<SYNTAX WAIT = V-WAIT>
|
||||
<SYNONYM WAIT Z>
|
||||
|
||||
<SYNTAX WAKE OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-ALARM>
|
||||
<SYNTAX WAKE UP OBJECT (FIND ACTORBIT) (ON-GROUND IN-ROOM) = V-ALARM>
|
||||
<SYNONYM WAKE AWAKE SURPRISE STARTLE>
|
||||
|
||||
<SYNTAX WALK OBJECT = V-WALK>
|
||||
<SYNTAX WALK AWAY OBJECT = V-WALK>
|
||||
<SYNTAX WALK IN OBJECT = V-THROUGH>
|
||||
<SYNTAX WALK THROUGH OBJECT = V-THROUGH>
|
||||
<SYNTAX WALK ON OBJECT = V-THROUGH>
|
||||
<SYNTAX WALK OVER OBJECT = V-LEAP>
|
||||
<SYNTAX WALK TO OBJECT = V-WALK-TO>
|
||||
<SYNTAX WALK AROUND OBJECT = V-WALK-AROUND>
|
||||
<SYNTAX WALK UP OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-UP>
|
||||
<SYNTAX WALK DOWN OBJECT (FIND CLIMBBIT) (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>
|
||||
<SYNTAX WALK OBJECT (HELD CARRIED HAVE) THROUGH OBJECT = V-SLIDE>
|
||||
<SYNONYM WALK GO RUN PROCEED STEP RETURN>
|
||||
|
||||
<SYNTAX WAVE OBJECT (HELD CARRIED TAKE HAVE) = V-WAVE>
|
||||
<SYNTAX WAVE AT OBJECT = V-WAVE>
|
||||
<SYNTAX WAVE OBJECT (HELD CARRIED TAKE HAVE) AT OBJECT = V-WAVE>
|
||||
<SYNTAX WAVE OBJECT (TAKE) OVER OBJECT = V-ATTRACT>
|
||||
<SYNTAX WAVE OBJECT (TAKE) NEAR OBJECT = V-ATTRACT>
|
||||
<SYNONYM WAVE BRANDISH>
|
||||
|
||||
<SYNTAX WEAR OBJECT = V-WEAR>
|
||||
|
||||
<SYNTAX WIN = V-WIN>
|
||||
<SYNONYM WIN WINNAGE>
|
||||
|
||||
<SYNTAX WIND OBJECT = V-WIND>
|
||||
<SYNTAX WIND UP OBJECT = V-WIND>
|
||||
|
||||
<SYNTAX WISH = V-WISH>
|
||||
|
||||
<SYNTAX YELL = V-YELL>
|
||||
<SYNTAX YELL AT OBJECT (FIND ACTORBIT) = V-SCOLD>
|
||||
<SYNONYM YELL SCREAM SHOUT>
|
||||
|
||||
<SYNTAX ZORK = V-ZORK>
|
||||
|
||||
<SYNTAX HELP = V-HELP>
|
||||
|
||||
<SYNTAX COMPAR OBJECT TO OBJECT = V-COMPARE PRE-COMPARE>
|
||||
<SYNTAX COMPAR OBJECT (MANY) = V-FOO-COMPARE>
|
|
@ -0,0 +1,864 @@
|
|||
"TUTORIAL for
|
||||
SAMPLER
|
||||
(c) Copyright 1984 Infocom, Inc. All Rights Reserved."
|
||||
|
||||
<ROUTINE INTRO ()
|
||||
<TELL "|
|
||||
In what follows, text in parentheses (here is an example) is part of the
|
||||
Tutorial and not part of the story itself. Infocom's interactive
|
||||
fiction starts with a description of your location within a story. At
|
||||
the end of the description comes the prompting character \">\", which
|
||||
indicates that the program is waiting for you to type in what to do
|
||||
next.|
|
||||
|
|
||||
The Tutorial is designed to provide you with help as you move through
|
||||
the sample scenario. If you can't decide what to do at a prompt, type
|
||||
HELP and press the RETURN (or ENTER) key. Note that HELP is available
|
||||
only in this Tutorial. You'll have to use your own wits in the excerpts
|
||||
from Zork I, Planetfall, and Infidel.|
|
||||
|
|
||||
Now press the RETURN (or ENTER) key to see the opening of the Tutorial
|
||||
story.">
|
||||
<READ ,P-LEXV ,P-INBUF>
|
||||
<CRLF>
|
||||
<CRLF>
|
||||
<V-VERSION>
|
||||
<CRLF>
|
||||
<V-LOOK>
|
||||
<TELL "|
|
||||
>|
|
||||
(Hit the RETURN key now to continue the tutorial.)">
|
||||
<READ ,P-INBUF ,P-LEXV>
|
||||
<TELL "|
|
||||
(In order to proceed you need some idea of your purpose in the story. In one
|
||||
fantasy game, for example, the goal is to obtain treasures; in a mystery game,
|
||||
the goal is to arrest the murderer. The goal of each game is usually presented
|
||||
in the game documentation. The goal for the Tutorial Game is:|
|
||||
|
|
||||
To trap the prized butterfly in the room to the south of the living room.|
|
||||
|
|
||||
Hit the RETURN key now to continue the tutorial.)">
|
||||
<READ ,P-INBUF ,P-LEXV>
|
||||
<TELL "|
|
||||
(You indicate your desires within the story by typing English sentences.
|
||||
A good rule of thumb in determining the kinds of sentences that will
|
||||
be understood is to think of completing the following sentence: \"I want
|
||||
to ... \" The three dots stand for the words you will type in. You will
|
||||
often want to see the description of the place you're in: you can type
|
||||
\"LOOK AROUND\" or, simply, \"LOOK\" to do just that. Try that now at the
|
||||
prompt. Remember to end all of your typing by hitting the RETURN key.)|">
|
||||
<PUTP ,ADVENTURER ,P?ACTION A-LOOK>>
|
||||
|
||||
<ROUTINE A-LOOK ("OPTIONAL" FOO)
|
||||
<COND (<VERB? QUIT SAVE RESTORE RESTART ;HELP VERSION DEBUG> <RFALSE>)
|
||||
(<AND <VERB? LOOK>
|
||||
<EQUAL? ,PRSO ,ROOMS <>>>
|
||||
<ENABLE <QUEUE I-LOOK 1>>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<TELL
|
||||
"(Please type \"LOOK\" or \"LOOK AROUND\" to get a description of your
|
||||
surroundings.)" CR>)>>
|
||||
|
||||
<GLOBAL LAST-COMMENT
|
||||
"If you're having trouble, you might want to review the Tutorial. Type RESTART
|
||||
to return to the menu.">
|
||||
|
||||
<ROUTINE COMMENT (STR "OPTIONAL" (BEF <>) (AFT <>))
|
||||
<COND (.BEF <CRLF>)>
|
||||
<SETG LAST-COMMENT .STR>
|
||||
<TELL .STR>
|
||||
<COND (.AFT <CRLF>)>
|
||||
T>
|
||||
|
||||
<ROUTINE I-LOOK ()
|
||||
<COMMENT
|
||||
"(Good! You have now seen a description of the living room on your screen.
|
||||
A few special commands should be noted. One, \"SCORE\", lets you know how
|
||||
well you're doing in comparison to the best possible score. You might have
|
||||
noticed the special line at the top of the screen. It is called the Status
|
||||
Line, and always indicates your location in the game, your score, and the
|
||||
number of turns (sometimes called moves) you have taken.|
|
||||
|
|
||||
Another useful command is \"INVENTORY\". It lets you know what objects you
|
||||
are carrying. Try it now.)|
|
||||
" T>
|
||||
<SETG LAST-COMMENT
|
||||
"(Try using the \"INVENTORY\" command to find out what you're carrying.)">
|
||||
<PUTP ,WINNER ,P?ACTION A-INVENTORY>>
|
||||
|
||||
<ROUTINE A-INVENTORY ("OPTIONAL" FOO)
|
||||
<COND (<VERB? QUIT SAVE RESTORE RESTART VERIFY HELP VERSION DEBUG>
|
||||
<RFALSE>)
|
||||
(<VERB? LOOK SCORE>
|
||||
<RFALSE>)
|
||||
(<VERB? INVENTORY>
|
||||
<ENABLE <QUEUE I-INVENTORY 1>>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<COMMENT
|
||||
"(Please try typing \"INVENTORY\" to get a list of your possessions.)" <> T>)>>
|
||||
|
||||
<ROUTINE I-INVENTORY ()
|
||||
<COMMENT
|
||||
"(Oh, well. You weren't carrying anything to start with, but you might have
|
||||
been, so it's good to have checked. For convenience \"I\" is a short form of
|
||||
\"INVENTORY\" and \"L\" is a short form of \"LOOK AROUND\".|
|
||||
|
|
||||
To move around, you use compass directions. For example,
|
||||
to walk to the east, you can type \"WALK EAST\". The stories often mention
|
||||
passages, tunnels, roads, and the like in descriptions, but these are
|
||||
mentioned for descriptive purposes only. Let's try going east.)" T T>
|
||||
<PUTP ,WINNER ,P?ACTION A-WALK>>
|
||||
|
||||
<ROUTINE ENTER-CHECK ()
|
||||
<COND (<VERB? THROUGH WALK-TO>
|
||||
<COND (<EQUAL? ,PRSO ,CLOSET-OBJ>
|
||||
<COND (<EQUAL? ,HERE ,T-LIVING-ROOM>
|
||||
<DO-WALK ,P?EAST>
|
||||
<RTRUE>)>)
|
||||
(<EQUAL? ,PRSO ,EAST-DOOR>
|
||||
<COND (<EQUAL? ,HERE ,CLOSET>
|
||||
<SETG PRSO ,P?WEST>)
|
||||
(T <SETG PRSO ,P?EAST>)>
|
||||
<DO-WALK ,PRSO>
|
||||
<RTRUE>)
|
||||
(<EQUAL? ,PRSO ,SOUTH-DOOR>
|
||||
<COND (<EQUAL? ,HERE ,T-LIVING-ROOM>
|
||||
<SETG PRSO ,P?SOUTH>)
|
||||
(T
|
||||
<SETG PRSO ,P?NORTH>)>
|
||||
<DO-WALK ,PRSO>
|
||||
<RTRUE>)>)
|
||||
(<VERB? DROP>
|
||||
<COND (<EQUAL? ,PRSO ,CLOSET-OBJ>
|
||||
<COND (<EQUAL? ,HERE ,CLOSET>
|
||||
<DO-WALK ,P?WEST>
|
||||
<RTRUE>)>)>)>>
|
||||
|
||||
<ROUTINE A-WALK ("OPTIONAL" FOO)
|
||||
<COND (<AND <VERB? THROUGH DROP WALK-TO> <ENTER-CHECK>> <RTRUE>)>
|
||||
<COND (<VERB? QUIT SAVE RESTORE WALK-TO RESTART VERIFY HELP
|
||||
VERSION DEBUG>
|
||||
<RFALSE>)
|
||||
(<VERB? WALK>
|
||||
<COND (<==? ,PRSO ,P?EAST>
|
||||
<ENABLE <QUEUE I-WALK 1>>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<TELL
|
||||
"(Try the other directions on your own time! It's more interesting to the
|
||||
east. Trust me.)" CR>)>)
|
||||
(<VERB? LOOK INVENTORY SCORE>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<TELL
|
||||
"(Let's go east for now.)" CR>)>>
|
||||
|
||||
<ROUTINE I-WALK ()
|
||||
<COMMENT
|
||||
"(Hmm. This illustrates two important points. First, don't believe
|
||||
everything a computer tells you. Second, objects lying around like
|
||||
tools, lights, and weapons can be useful and should probably be
|
||||
carried around for situations like this. Luckily, we have seen a lantern
|
||||
in the living room. As the man said, \"Go west!\")" T T>
|
||||
<PUTP ,WINNER ,P?ACTION A-RETURN-LR>>
|
||||
|
||||
<ROUTINE A-RETURN-LR ("OPTIONAL" FOO)
|
||||
<COND (<AND <VERB? THROUGH DROP WALK-TO> <ENTER-CHECK>> <RTRUE>)>
|
||||
<COND (<VERB? QUIT SAVE RESTORE WALK-TO RESTART VERIFY
|
||||
HELP VERSION DEBUG>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? WALK> <==? ,PRSO ,P?WEST>>
|
||||
<ENABLE <QUEUE I-RETURN-LR 1>>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? EXAMINE FIND> <==? ,PRSO ,GRUE>>
|
||||
<ENABLE <QUEUE I-FALSE-1 1>>
|
||||
<RFALSE>)
|
||||
(<VERB? LOOK INVENTORY SCORE>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<COMMENT
|
||||
"(Type \"WALK WEST\", \"GO WEST\", or simply \"WEST\" to go back to
|
||||
the living room from here.)" <> T>)>>
|
||||
|
||||
<ROUTINE I-FALSE-1 ()
|
||||
<TELL CR
|
||||
"(You couldn't wait to find out, could you.... Now try going back
|
||||
to the living room.)" CR>>
|
||||
|
||||
<ROUTINE I-RETURN-LR ()
|
||||
<TELL
|
||||
"|
|
||||
(We're back now and, from the look of things, in need of light.
|
||||
There are many common verbs that are understood in Infocom's interactive
|
||||
fiction. These include TAKE, DROP, PUT, TURN ON, TURN OFF, EXAMINE,
|
||||
READ, BREAK, HIT, EAT and a host of others. Rather than include a vocabulary
|
||||
list, we build a large vocabulary into them and encourage you
|
||||
to try anything you like.|
|
||||
|
|
||||
From now on, you're going to be more on your own. If you get stuck, though,
|
||||
you can always type \"HELP\" for a nudge in the right direction.|
|
||||
|
|
||||
Using some of the verbs mentioned earlier, try to shed some light on the
|
||||
broom closet.)|
|
||||
">
|
||||
<SETG LAST-COMMENT
|
||||
"(In trying to shed some light on the broom closet, you will need to carry
|
||||
something that is lighted into the closet with you. Some of the verbs you
|
||||
might need are TAKE, TURN ON, and WALK.)">
|
||||
<PUTP ,WINNER ,P?ACTION A-LAMP>>
|
||||
|
||||
<ROUTINE A-LAMP ("OPTIONAL" FOO)
|
||||
<COND (<AND <VERB? THROUGH DROP WALK-TO> <ENTER-CHECK>> <RTRUE>)>
|
||||
<COND (<VERB? QUIT SAVE RESTORE WALK-TO RESTART VERIFY
|
||||
HELP VERSION DEBUG>
|
||||
<RFALSE>)
|
||||
(<VERB? LOOK INVENTORY SCORE>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? LAMP-ON>
|
||||
<EQUAL? ,PRSO ,T-LANTERN>
|
||||
<NOT <FSET? ,PRSO ,ONBIT>>>
|
||||
<ENABLE <QUEUE I-LAMP-ON 1>>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? TAKE>
|
||||
<EQUAL? ,PRSO ,T-LANTERN>
|
||||
<NOT <IN? ,PRSO ,WINNER>>>
|
||||
<ENABLE <QUEUE I-LAMP-TAKE 1>>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? EXAMINE>
|
||||
<EQUAL? ,PRSO ,T-LANTERN>
|
||||
<NOT <FSET? ,PRSO ,ONBIT>>>
|
||||
<ENABLE <QUEUE I-LAMP-EXAMINE 1>>
|
||||
<TELL "The lantern isn't lit." CR>)
|
||||
(<AND <VERB? EXAMINE>
|
||||
<EQUAL? ,PRSO ,T-LANTERN>>
|
||||
<ENABLE <QUEUE I-LAMP-EXAMINE-1 1>>
|
||||
<TELL "The lantern is lit." CR>)
|
||||
(<VERB? WALK>
|
||||
<COND (<==? ,PRSO ,P?EAST>
|
||||
<COND (<AND <FSET? ,T-LANTERN ,ONBIT>
|
||||
<IN? ,T-LANTERN ,WINNER>
|
||||
<EQUAL? ,HERE ,T-LIVING-ROOM>>
|
||||
<ENABLE <QUEUE I-RETURN-CLOSET 1>>
|
||||
<RFALSE>)
|
||||
(<AND <IN? ,T-LANTERN ,WINNER>
|
||||
<EQUAL? ,HERE ,T-LIVING-ROOM>>
|
||||
<COMMENT
|
||||
"(You had better light that lantern before going back into that
|
||||
dark closet again.)" <> T>)
|
||||
(T
|
||||
<COMMENT
|
||||
"(You should get something that gives off light before going into that
|
||||
dark closet again. Remember, use \"INVENTORY\" to list your possessions
|
||||
and \"LOOK AROUND\" to describe your location.)" <> T>)>)
|
||||
(T
|
||||
<TELL
|
||||
"(Let's stick to going into the closet for now.)" CR>)>)
|
||||
(<EQUAL? ,PRSO ,T-LANTERN>
|
||||
<COND (<AND <IN? ,T-LANTERN ,WINNER>
|
||||
<FSET? ,T-LANTERN ,ONBIT>>
|
||||
<TELL
|
||||
"(You've done enough with the lantern. Why don't you try returning to
|
||||
the closet to see what's inside?)" CR>)
|
||||
(<AND <VERB? PUT>
|
||||
<EQUAL? ,PRSI ,CLOSET-OBJ>>
|
||||
<TELL
|
||||
"(You can't do that without going into the closet yourself. Why don't
|
||||
you try that?)" CR>)
|
||||
(T
|
||||
<TELL
|
||||
"(Doing that to the lantern isn't very useful. Try doing something
|
||||
with the lantern that will help you see what's in the closet.)" CR>)>)
|
||||
(<AND <IN? ,T-LANTERN ,WINNER>
|
||||
<FSET? ,T-LANTERN ,ONBIT>>
|
||||
<TELL
|
||||
"(Try returning to the closet, now that you have the lighted
|
||||
lantern.)" CR>)
|
||||
(T
|
||||
<TELL
|
||||
"(Try sticking to sentences dealing with the lantern, which is
|
||||
useful if we're going to see anything in the closet.)" CR>)>>
|
||||
|
||||
<ROUTINE I-LAMP-ON ()
|
||||
<TELL CR
|
||||
"(That was a good idea. If you examined the lantern beforehand, you knew
|
||||
for a fact that it wasn't lit. By the way, you could have typed \"LIGHT THE
|
||||
SHINY BRASS LANTERN\", \"TURN ON THE BRASS LANTERN\", \"TURN THE LANTERN
|
||||
ON\", etc. to turn it on. The large number of ways of expressing your desires
|
||||
greatly enhances the playability of Infocom's interactive fiction.)" CR>
|
||||
<SETG SCORE <+ ,SCORE 10>>>
|
||||
|
||||
<ROUTINE I-LAMP-TAKE ()
|
||||
<TELL CR
|
||||
"(Good move. You will need the lantern with you when you return to the
|
||||
closet if you intend to see anything. You could have gotten the lamp
|
||||
with \"TAKE LANTERN\", \"PICK UP THE LANTERN\", \"TAKE THE LANTERN FROM THE
|
||||
TABLE\", \"GET THE LANTERN\", or anything similar. You could also
|
||||
have called the lantern a lamp.)" CR>
|
||||
<SETG SCORE <+ ,SCORE 10>>>
|
||||
|
||||
<ROUTINE I-LAMP-EXAMINE ()
|
||||
<TELL CR
|
||||
"(Examining the lantern revealed that it wasn't lit. This tells you
|
||||
something that will need to be done before proceeding. \"LOOK AT
|
||||
THE LANTERN\" and \"EXAMINE LANTERN\" are two ways of doing this.)" CR>>
|
||||
|
||||
<ROUTINE I-LAMP-EXAMINE-1 ()
|
||||
<TELL CR
|
||||
"(Examining the lantern revealed that it was lit. It never hurts
|
||||
to be safe, especially when danger is nearby.)" CR>>
|
||||
|
||||
<ROUTINE I-RETURN-CLOSET ()
|
||||
<COMMENT
|
||||
"(With the lantern in your possession, you can see what's in the closet.
|
||||
Two items of interest there are the net, which we will certainly need to
|
||||
capture the prize butterfly, and a key. One never knows where a key will
|
||||
be needed. Let's get those things and return to the living room with
|
||||
them.)" T T>
|
||||
<PUTP ,WINNER ,P?ACTION A-TAKE-STUFF>>
|
||||
|
||||
<ROUTINE A-TAKE-STUFF ("OPTIONAL" FOO)
|
||||
<COND (<AND <VERB? THROUGH DROP WALK-TO> <ENTER-CHECK>> <RTRUE>)>
|
||||
<COND (<VERB? QUIT SAVE RESTORE WALK-TO RESTART VERIFY
|
||||
HELP VERSION DEBUG> <RFALSE>)
|
||||
(<VERB? LOOK INVENTORY SCORE>
|
||||
<RFALSE>)
|
||||
(<VERB? TAKE>
|
||||
<ENABLE <QUEUE I-TAKE-STUFF 1>>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? WALK>
|
||||
<EQUAL? ,PRSO ,P?WEST ,P?OUT>
|
||||
<==? ,HERE ,CLOSET>>
|
||||
<COND (<AND <IN? ,KEY ,WINNER>
|
||||
<IN? ,NET ,WINNER>>
|
||||
<ENABLE <QUEUE I-TAKE-STUFF-1 1>>
|
||||
<RFALSE>)>)
|
||||
(<AND <VERB? LAMP-OFF>
|
||||
<==? ,PRSO ,T-LANTERN>
|
||||
<NOT <FSET? ,HERE ,ONBIT>>>
|
||||
<TELL
|
||||
"(This is not a promising idea in an otherwise dark room.)" CR>)
|
||||
(<VERB? WALK EAT EXAMINE LAMP-ON LAMP-OFF>
|
||||
<RFALSE>)
|
||||
(<AND <IN? ,KEY ,WINNER> <IN? ,NET ,WINNER>>
|
||||
<COMMENT
|
||||
"(Try returning to the living room.)" <> T>)
|
||||
(T
|
||||
<COMMENT
|
||||
"(Make sure you've taken all of the objects from the broom closet and
|
||||
then return to the living room.)" <> T>)>>
|
||||
|
||||
<GLOBAL TOLD-ALREADY <>>
|
||||
|
||||
<ROUTINE I-TAKE-STUFF ()
|
||||
<COND (,TOLD-ALREADY <RFALSE>)
|
||||
(<AND <IN? ,KEY ,WINNER>
|
||||
<IN? ,NET ,WINNER>>
|
||||
<SETG TOLD-ALREADY T>
|
||||
<COMMENT
|
||||
"(It seems as if you have everything worth taking, since the dust
|
||||
won't be of much help. By the way, Infocom's interactive fiction allows
|
||||
you to mention more than one object at a time. For example, to take both
|
||||
the net and the key, you may type \"TAKE THE NET AND THE KEY\".
|
||||
Let's return now to the living room.)" <> T>
|
||||
<SETG SCORE <+ ,SCORE 10>>)>>
|
||||
|
||||
<ROUTINE I-TAKE-STUFF-1 ()
|
||||
<COMMENT
|
||||
"(Great. Notice that the long description of the living room is not
|
||||
being repeated when we return to it. This is for your convenience. You
|
||||
can always get the description of your surroundings by typing \"LOOK\".
|
||||
Now let's try to find those butterflies. There's only one direction that
|
||||
doesn't return us to the closet and that's south. Oh, I just remembered.
|
||||
There was a sign over the mahogany door. Like other reading materials
|
||||
in our scenarios, it's likely to be helpful. Try to find out
|
||||
what's written on it.)" T T>
|
||||
<SETG LAST-COMMENT
|
||||
"(Let's try reading the sign now.)">
|
||||
<PUTP ,WINNER ,P?ACTION A-READ-SIGN>>
|
||||
|
||||
<ROUTINE A-READ-SIGN ("OPTIONAL" FOO)
|
||||
<COND (<VERB? QUIT SAVE RESTORE WALK-TO RESTART VERIFY
|
||||
HELP VERSION DEBUG> <RFALSE>)
|
||||
(<VERB? INVENTORY LOOK SCORE>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? READ EXAMINE>
|
||||
<EQUAL? ,PRSO ,SIGN>>
|
||||
<ENABLE <QUEUE I-READ-SIGN 1>>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<COMMENT
|
||||
"(To see what's written on the sign, try simply typing \"READ THE SIGN\" or
|
||||
\"EXAMINE THE SIGN\".)" <> T>)>>
|
||||
|
||||
<ROUTINE I-READ-SIGN ()
|
||||
<TELL CR
|
||||
"(This confirms what we had suspected. Now let's get going.)" CR>
|
||||
<SETG LAST-COMMENT
|
||||
"(The butterfly is in the room on the other side of the mahogany door. Let's
|
||||
open it up!)">
|
||||
<PUTP ,WINNER ,P?ACTION A-GO-SOUTH>>
|
||||
|
||||
;<ROUTINE I-UNLOCK-DOOR () ;"not referenced, removed 2/27/85 by SEM"
|
||||
<TELL CR
|
||||
"(Makes sense. Let's see what's to the south.)" CR>
|
||||
<SETG LAST-COMMENT
|
||||
"(Now that the door's unlocked, let's open it up and go through it.)">
|
||||
<PUTP ,WINNER ,P?ACTION A-GO-SOUTH>>
|
||||
|
||||
<ROUTINE A-GO-SOUTH ("OPTIONAL" FOO)
|
||||
<COND (<AND <VERB? THROUGH DROP WALK-TO> <ENTER-CHECK>> <RTRUE>)>
|
||||
<COND (<VERB? QUIT SAVE RESTORE WALK-TO RESTART VERIFY
|
||||
HELP VERSION DEBUG>
|
||||
<RFALSE>)
|
||||
(<VERB? LOOK INVENTORY SCORE>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? READ EXAMINE>
|
||||
<EQUAL? ,PRSO ,SIGN>>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? THROUGH> <EQUAL? ,PRSO ,SOUTH-DOOR>>
|
||||
<TELL
|
||||
"(This is a reasonable thing to try, although few of our stories will
|
||||
understand this method of movement. It's always easier to simply use
|
||||
\"WALK direction\" or just \"direction\" to move around.)" CR>)
|
||||
(<VERB? WALK>
|
||||
<COND (<==? ,PRSO ,P?SOUTH>
|
||||
<COND (<NOT <FSET? ,SOUTH-DOOR ,OPENBIT>>
|
||||
<ENABLE <QUEUE I-TRY-SOUTH 1>>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<ENABLE <QUEUE I-THROUGH-DOOR 1>>
|
||||
<RFALSE>)>)
|
||||
(T
|
||||
<COMMENT
|
||||
"(We've been everyplace else in this little universe already. Concentrate
|
||||
on going to the south.)" <> T>)>)
|
||||
(<AND <VERB? DROP> <IN? ,PRSO ,WINNER>>
|
||||
<TELL
|
||||
"(Be careful! You may need everything you are carrying!)" CR>)
|
||||
(<AND <VERB? UNLOCK>
|
||||
<EQUAL? ,PRSO ,SOUTH-DOOR>>
|
||||
<COND (,DOOR-LOCKED
|
||||
<ENABLE <QUEUE I-TRY-UNLOCK 1>>)>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? OPEN> <EQUAL? ,PRSO ,SOUTH-DOOR>>
|
||||
<ENABLE <QUEUE I-TRY-OPEN 1>>
|
||||
<RFALSE>)
|
||||
(<VERB? SCORE LOOK INVENTORY EXAMINE TAKE DROP EAT MUNG>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<COMMENT
|
||||
"(Try something relevant to going through the mahogany door.)" <> T>)>>
|
||||
|
||||
<ROUTINE I-TRY-UNLOCK ()
|
||||
<COND (,DOOR-LOCKED
|
||||
<COMMENT
|
||||
"(Try unlocking the south door with the key....)" T T>)
|
||||
(T
|
||||
<TELL CR
|
||||
"(Great! You're on your way.)" CR>)>>
|
||||
|
||||
<ROUTINE I-TRY-OPEN ()
|
||||
<COND (,DOOR-LOCKED
|
||||
<TELL CR
|
||||
"(It's a lucky thing that you just happened to take that key, isn't it?)" CR>)
|
||||
(<FSET? ,SOUTH-DOOR ,OPENBIT>
|
||||
<COMMENT
|
||||
"(Let's go south and get 'em!)" T T>
|
||||
<SETG SCORE <+ ,SCORE 10>>)
|
||||
(T
|
||||
<TELL CR
|
||||
"(Maybe you should have tried opening the south door?)" CR>)>>
|
||||
|
||||
<ROUTINE I-TRY-SOUTH ()
|
||||
<COND (,DOOR-LOCKED
|
||||
<TELL CR
|
||||
"(Since it's closed, we might as well open it.)" CR>)
|
||||
(T
|
||||
<TELL CR
|
||||
"(It's not locked anymore, but it's still closed....)" CR>)>>
|
||||
|
||||
<ROUTINE I-THROUGH-DOOR ()
|
||||
<COMMENT
|
||||
"(Congratulations. You're practically finished. All that's left is
|
||||
to catch that butterfly! Be VERY careful, though. Don't let it get
|
||||
away!)" T T>
|
||||
<SETG LAST-COMMENT
|
||||
"(All that's left is to catch the butterfly! Be very careful, though,
|
||||
or it'll get away!)">
|
||||
<PUTP ,WINNER ,P?ACTION A-CLOSE-DOOR>>
|
||||
|
||||
<ROUTINE A-CLOSE-DOOR ("OPTIONAL" FOO)
|
||||
<COND (<VERB? QUIT SAVE RESTORE WALK-TO RESTART VERIFY
|
||||
HELP VERSION DEBUG> <RFALSE>)
|
||||
(<VERB? SAVE>
|
||||
<TELL
|
||||
"(Not a bad idea. If this weren't the Tutorial, it might be a good
|
||||
idea to save the game here in case something unexpected happens at
|
||||
this crucial time. Sadly, you will have to think of something else.)" CR>)
|
||||
(<AND <VERB? CLOSE> <==? ,PRSO ,SOUTH-DOOR>>
|
||||
<ENABLE <QUEUE I-CLOSE-DOOR 1>>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<TELL
|
||||
"Before you can even start, the butterfly flies gaily through the door
|
||||
and out of your life. As tears well up in your eyes, you ponder
|
||||
the glory that was yours had you only closed the door first." CR>
|
||||
<ENABLE <QUEUE I-LOST 1>>
|
||||
<RTRUE>)>>
|
||||
|
||||
<ROUTINE I-LOST ()
|
||||
<TELL CR
|
||||
"(Oh, well, you can't win them all. This brings up another important
|
||||
feature of Infocom's interactive fiction: the ability to suspend your play
|
||||
at any time and continue from that point at a later time, much like placing a
|
||||
bookmark in a book that you are reading. In an actual game, you might
|
||||
have suspended the game prior to entering the Butterfly Room, thus
|
||||
making it easier for you to go back and try another approach without
|
||||
restarting the game from scratch. Live and learn.|
|
||||
|
|
||||
Another important point: the solution to catching the butterfly involved
|
||||
using a complex sentence like \"CATCH THE BUTTERFLY IN THE NET\" or
|
||||
\"PLACE THE NET OVER THE BUTTERFLY\". The ability to understand sentences
|
||||
of this kind is an integral part of Infocom's interactive fiction.)" CR>
|
||||
<FINIS>>
|
||||
|
||||
<ROUTINE FINIS ()
|
||||
<SETG LAST-COMMENT
|
||||
"In the complete versions of these stories you're on your own. Don't spend
|
||||
too much time working on any one obstacle. Go on and try other things. If you
|
||||
ever become completely stuck, we offer hint booklets and maps at a nominal
|
||||
cost.">
|
||||
<FINISH>>
|
||||
|
||||
<ROUTINE V-HELP ()
|
||||
<TELL ,LAST-COMMENT CR>>
|
||||
|
||||
<ROUTINE I-CLOSE-DOOR ()
|
||||
<COMMENT
|
||||
"(Your instinct was correct. The butterfly, no mental midget,
|
||||
headed straight for the open door -- but you were quicker. Had you
|
||||
not closed the door right away, it would have flown the coop. Let's
|
||||
get it!)" T T>
|
||||
<PUTP ,WINNER ,P?ACTION A-CATCH>>
|
||||
|
||||
<ROUTINE A-CATCH ("OPTIONAL" FOO)
|
||||
<COND (<VERB? QUIT SAVE RESTORE WALK-TO RESTART VERIFY
|
||||
HELP VERSION DEBUG>
|
||||
<RFALSE>)
|
||||
(<AND <EQUAL? ,PRSO ,BUTTERFLY>
|
||||
<EQUAL? ,PRSI ,NET>
|
||||
<VERB? CATCH PUT>>
|
||||
<COND (<NOT <IN? ,NET ,WINNER>>
|
||||
<TELL
|
||||
"You don't have the net, I'm afraid." CR>
|
||||
<RTRUE>)>
|
||||
<SETG SCORE <+ ,SCORE 10>>
|
||||
<TELL ,WINNAGE CR>
|
||||
<FINIS>)
|
||||
(<AND <EQUAL? ,PRSO ,NET>
|
||||
<EQUAL? ,PRSI ,BUTTERFLY>
|
||||
<VERB? SWING ATTRACT>>
|
||||
<COND (<NOT <IN? ,NET ,WINNER>>
|
||||
<TELL
|
||||
"You don't have the net, I'm afraid." CR>)>
|
||||
<TELL ,WINNAGE CR>
|
||||
<FINIS>)
|
||||
(<AND <VERB? CATCH PUT>
|
||||
<EQUAL? ,PRSO ,BUTTERFLY>>
|
||||
<TELL
|
||||
"You would catch it in that?!?" CR>)
|
||||
(<VERB? EXAMINE INVENTORY LOOK SCORE>
|
||||
<RFALSE>)
|
||||
(<AND <VERB? TAKE>
|
||||
<EQUAL? ,PRSO ,BUTTERFLY>>
|
||||
<TELL
|
||||
"You grab for the butterfly, but it's too quick! It continues
|
||||
to flutter gracefully about the room." CR>)
|
||||
(<VERB? TAKE DROP PUT>
|
||||
<ENABLE <QUEUE I-COME-ON 1>>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<TELL
|
||||
"(How about trying something more in line with catching the butterfly?)" CR>)>>
|
||||
|
||||
<GLOBAL WINNAGE
|
||||
"With a deft motion of your arm, the butterfly is trapped within
|
||||
the net.|
|
||||
|
|
||||
(You might have typed anything like the following to have
|
||||
trapped the butterfly: \"TRAP THE BUTTERFLY IN THE NET\", \"CATCH
|
||||
THE BUTTERFLY WITH THE NET\", \"SWING THE NET OVER THE BUTTERFLY\",
|
||||
or anything similar. With Infocom's interactive fiction, you are
|
||||
encouraged to try whatever comes to your mind. If it doesn't work, try
|
||||
something similar. Half of the fun is in trying unusual things!)|
|
||||
|
|
||||
Congratulations! You have completed your goal of catching the prized
|
||||
butterfly. You're now ready for the innovative challenges of Infocom's
|
||||
line of interactive fiction.">
|
||||
|
||||
<ROUTINE I-COME-ON ()
|
||||
<TELL CR
|
||||
"(All right, all right. Now let's catch the butterfly.)" CR>>
|
||||
|
||||
<OBJECT CLOSET-OBJ
|
||||
(IN LOCAL-GLOBALS)
|
||||
(DESC "closet")
|
||||
(SYNONYM CLOSET)
|
||||
(ADJECTIVE BROOM)
|
||||
(FLAGS NDESCBIT)>
|
||||
|
||||
<OBJECT DUST
|
||||
(IN CLOSET)
|
||||
(DESC "dust")
|
||||
(SYNONYM DUST)
|
||||
(FLAGS NDESCBIT)
|
||||
(ACTION DUST-F)>
|
||||
|
||||
;"DUST-F is in the PLANETFALL file"
|
||||
|
||||
<OBJECT SIGN
|
||||
(IN T-LIVING-ROOM)
|
||||
(DESC "sign")
|
||||
(SYNONYM SIGN LETTER)
|
||||
(ADJECTIVE FADED)
|
||||
(FLAGS READBIT NDESCBIT)
|
||||
(TEXT
|
||||
"The sign says: \"Butterflies are free. Bring your net.\"")>
|
||||
|
||||
<OBJECT LIVING-ROOM-O
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "living room")
|
||||
(SYNONYM ROOM)
|
||||
(ADJECTIVE LIVING)
|
||||
(ACTION ROOM-OBJECT-F)>
|
||||
|
||||
<OBJECT BROOM-CLOSET-O
|
||||
(IN GLOBAL-OBJECTS)
|
||||
(DESC "broom closet")
|
||||
(SYNONYM CLOSET)
|
||||
(ADJECTIVE BROOM)
|
||||
(ACTION ROOM-OBJECT-F)>
|
||||
|
||||
<ROUTINE ROOM-OBJECT-F ()
|
||||
<COND (<VERB? WALK-TO>
|
||||
<TELL
|
||||
"(In most stories of this type, you move around by indicating the direction in
|
||||
which you wish to travel, rather than referring to the place by name.)" CR>)
|
||||
(<VERB? EXAMINE>
|
||||
<TELL
|
||||
"(To examine your surroundings, type \"LOOK AROUND\" or something like
|
||||
that.)" CR>)
|
||||
(T
|
||||
<TELL
|
||||
"(You usually can't refer to rooms by their names.)" CR>)>>
|
||||
|
||||
<ROOM T-LIVING-ROOM
|
||||
(IN ROOMS)
|
||||
(DESC "Living Room")
|
||||
(SOUTH TO BUTTERFLY-ROOM IF SOUTH-DOOR IS OPEN)
|
||||
(EAST TO CLOSET IF EAST-DOOR IS OPEN)
|
||||
(FLAGS ONBIT RLANDBIT)
|
||||
(ACTION T-LIVING-ROOM-F)
|
||||
(GLOBAL EAST-DOOR SOUTH-DOOR CLOSET-OBJ)>
|
||||
|
||||
<ROUTINE T-LIVING-ROOM-F (RARG)
|
||||
<COND (<==? .RARG ,M-LOOK>
|
||||
<TELL
|
||||
"You are standing in the living room of a large house. The room is bare
|
||||
except for a small, square table in the center of the room." CR>
|
||||
<COND (<FSET? ,EAST-DOOR ,OPENBIT>
|
||||
<TELL
|
||||
"An oak door to the east opens into a darkened area">)
|
||||
(T
|
||||
<TELL
|
||||
"An oak door to the east is closed">)>
|
||||
<TELL " and a mahogany door to the south is ">
|
||||
<COND (<FSET? ,SOUTH-DOOR ,OPENBIT>
|
||||
<TELL "wide open">)
|
||||
(T <TELL "closed">)>
|
||||
<TELL "." CR>
|
||||
<TELL
|
||||
"Above the mahogany door is an old sign with some faded lettering." CR>)>>
|
||||
|
||||
<OBJECT T-LANTERN
|
||||
(IN XTABLE)
|
||||
(DESC "shiny brass lantern")
|
||||
(FDESC "A shiny brass lantern is sitting in the center of the table.")
|
||||
(SYNONYM LANTERN LAMP)
|
||||
(ADJECTIVE SHINY BRASS)
|
||||
(FLAGS LIGHTBIT TAKEBIT)
|
||||
(SIZE 10)
|
||||
(ACTION T-LANTERN-F)>
|
||||
|
||||
<ROUTINE T-LANTERN-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL "The lantern is ">
|
||||
<COND (<NOT <FSET? ,T-LANTERN ,ONBIT>>
|
||||
<TELL "not ">)>
|
||||
<TELL "lit." CR>)>>
|
||||
|
||||
<OBJECT XTABLE
|
||||
(IN T-LIVING-ROOM)
|
||||
(DESC "table")
|
||||
(SYNONYM TABLE)
|
||||
(ADJECTIVE SMALL SQUARE)
|
||||
(FLAGS CONTBIT SURFACEBIT OPENBIT NDESCBIT)
|
||||
(CAPACITY 20)
|
||||
(ACTION XTABLE-F)>
|
||||
|
||||
<ROUTINE XTABLE-F ()
|
||||
<COND (<VERB? TAKE>
|
||||
<TELL
|
||||
"It seems to be firmly attached to the floor." CR>)>>
|
||||
|
||||
<ROOM CLOSET
|
||||
(IN ROOMS)
|
||||
(DESC "Broom Closet")
|
||||
(LDESC
|
||||
"This rather undistinguished place seems to be a broom closet. Oddly
|
||||
enough, there is no broom here, although there is enough dust and dirt
|
||||
on the ground to merit a few dozen.")
|
||||
(FLAGS RLANDBIT)
|
||||
(WEST TO T-LIVING-ROOM IF EAST-DOOR IS OPEN)
|
||||
(OUT TO T-LIVING-ROOM IF EAST-DOOR IS OPEN)
|
||||
(GLOBAL EAST-DOOR CLOSET-OBJ)>
|
||||
|
||||
<OBJECT KEY
|
||||
(IN CLOSET)
|
||||
(DESC "skeleton key")
|
||||
(LDESC
|
||||
"Amidst the grime, a small skeleton key can be seen on the ground.")
|
||||
(SYNONYM KEY)
|
||||
(ADJECTIVE SKELETON SMALL)
|
||||
(FLAGS TAKEBIT TOOLBIT)
|
||||
(ACTION KEY-F)>
|
||||
|
||||
<ROUTINE KEY-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"The key isn't very interesting, except that it might unlock the mahogany
|
||||
door in the living room." CR>)>>
|
||||
|
||||
<OBJECT NET
|
||||
(IN CLOSET)
|
||||
(DESC "net")
|
||||
(LDESC
|
||||
"A net, suitable for catching butterflies, is sitting in the corner.")
|
||||
(SYNONYM NET)
|
||||
(FLAGS TAKEBIT)
|
||||
(ACTION NET-F)>
|
||||
|
||||
<ROUTINE NET-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"The net is a typical butterfly net (quite a lucky find)." CR>)>>
|
||||
|
||||
<OBJECT EAST-DOOR
|
||||
(IN LOCAL-GLOBALS)
|
||||
(DESC "oak door")
|
||||
(SYNONYM DOOR)
|
||||
(ADJECTIVE EAST EASTERN OAK)
|
||||
(FLAGS DOORBIT CONTBIT OPENBIT)>
|
||||
|
||||
<OBJECT SOUTH-DOOR
|
||||
(IN LOCAL-GLOBALS)
|
||||
(DESC "mahogany door")
|
||||
(SYNONYM DOOR)
|
||||
(ADJECTIVE MAHOGANY SOUTH SOUTHE)
|
||||
(FLAGS DOORBIT CONTBIT)
|
||||
(ACTION SOUTH-DOOR-F)>
|
||||
|
||||
<GLOBAL DOOR-LOCKED T>
|
||||
|
||||
<ROUTINE SOUTH-DOOR-F ()
|
||||
<COND (<VERB? UNLOCK>
|
||||
<COND (<NOT ,DOOR-LOCKED>
|
||||
<TELL
|
||||
"The door is already unlocked, or don't you remember!" CR>)
|
||||
(<EQUAL? ,PRSI ,KEY>
|
||||
<TELL
|
||||
"Fortunately for you, the key was the correct one and the door unlocks." CR>
|
||||
<SETG DOOR-LOCKED <>>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<TELL
|
||||
"That wasn't a very smart thing to try; " D ,PRSI "s are rarely used
|
||||
in unlocking doors." CR>)>)
|
||||
(<VERB? LOCK>
|
||||
<COND (,DOOR-LOCKED
|
||||
<TELL
|
||||
"The door is sufficiently locked without your help.">)
|
||||
(<EQUAL? ,PRSI ,KEY>
|
||||
<TELL
|
||||
"Very well. The door is now locked." CR>
|
||||
<SETG DOOR-LOCKED T>)
|
||||
(T
|
||||
<TELL
|
||||
"Dear, dear. What will you think of next?" CR>)>)
|
||||
(<AND <VERB? OPEN> ,DOOR-LOCKED>
|
||||
<TELL
|
||||
"It seems to be locked!" CR>)
|
||||
(<VERB? KNOCK>
|
||||
<COND (<FSET? ,PRSO ,OPENBIT>
|
||||
<TELL
|
||||
"Why are you knocking on an open door?" CR>)
|
||||
(T
|
||||
<TELL
|
||||
"Nobody answers." CR>)>)
|
||||
(<VERB? MUNG>
|
||||
<TELL
|
||||
"Besides hurting your shoulder, the effort gets you nowhere." CR>)
|
||||
(<VERB? LISTEN>
|
||||
<TELL
|
||||
"You hear nothing through the door." CR>)>>
|
||||
|
||||
<ROOM BUTTERFLY-ROOM
|
||||
(IN ROOMS)
|
||||
(DESC "Butterfly Room")
|
||||
(NORTH TO T-LIVING-ROOM IF SOUTH-DOOR IS OPEN)
|
||||
(FLAGS RLANDBIT ONBIT)
|
||||
(ACTION BUTTERFLY-ROOM-F)
|
||||
(GLOBAL SOUTH-DOOR)>
|
||||
|
||||
<ROUTINE BUTTERFLY-ROOM-F (RARG)
|
||||
<COND (<==? .RARG ,M-LOOK>
|
||||
<TELL
|
||||
"This is a smaller room than one would expect for the storage of
|
||||
butterflies, but then again, one doesn't expect rooms to be used for
|
||||
storing butterflies. The only way out is through a door to the north
|
||||
that is ">
|
||||
<COND (<FSET? ,SOUTH-DOOR ,OPENBIT>
|
||||
<TELL "open">)
|
||||
(T <TELL "closed">)>
|
||||
<TELL "." CR>)>>
|
||||
|
||||
<OBJECT BUTTERFLY
|
||||
(IN BUTTERFLY-ROOM)
|
||||
(DESC "beautiful butterfly")
|
||||
(LDESC
|
||||
"Flying around the room in graceful arcs is the most beautiful butterfly
|
||||
you have ever seen. Catching it will enhance your reputation as the world's
|
||||
foremost collector of rare butterflies.")
|
||||
(SYNONYM BUTTERFLY INSECT)
|
||||
(ADJECTIVE MOST BEAUTI)
|
||||
(FLAGS TAKEBIT)
|
||||
(ACTION BUTTERFLY-F)>
|
||||
|
||||
<ROUTINE BUTTERFLY-F ()
|
||||
<COND (<VERB? EXAMINE>
|
||||
<TELL
|
||||
"This is, without doubt, the most beautiful butterfly you have ever
|
||||
seen. Your collection would be greatly enhanced by its presence." CR>)>>
|
||||
|
||||
<ROUTINE V-CATCH ()
|
||||
<TELL "Why would you want to catch that!" CR>>
|
||||
|
||||
<ROOM WELCOME-MAT
|
||||
(IN ROOMS)
|
||||
(DESC "Welcome to Infocom")>
|
||||
|
||||
<ROOM WITNESS-ROOM
|
||||
(IN ROOMS)
|
||||
(DESC "Witness")>
|
Loading…
Reference in New Issue