Final Revision

This commit is contained in:
historicalsource 2019-04-13 23:58:43 -04:00
parent fa9390b02c
commit 5f9e044602
14 changed files with 2921 additions and 69 deletions

73
a1.zil Normal file
View file

@ -0,0 +1,73 @@
"
INFIDEL
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<SNAME "INFIDEL">
<GC-MON <>>
;<COND (<GASSIGNED? ZILCH> <GC 0 T>)
(T <GC 0 T 5>)>
<GC 0 T 5>
<BLOAT 90000 0 0 3500 0 0 0 0 0 512>
;<SETG SHORT-STRINGS 2>
<SET REDEFINE T>
<GLOBAL BIGFIX 10000>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !\= !,WBREAKS>>>
<OR <GASSIGNED? INSERT-CRUFTY>
<DEFINE INSERT-CRUFTY (STR) <IFILE .STR T>>>
<DEFINE IFILE (STR "OPTIONAL" (FLOAD? <>) "AUX" (TIM <TIME>))
<INSERT-FILE .STR .FLOAD?>>
<PRINC "INFIDEL: Interlogic Adventure Fiction
">
<COND (<GASSIGNED? PREDGEN>
<ID 0>)>
<IFILE "MACROS" T>
<IFILE "GLOBALS" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<PROPDEF VALUE 0>
<IFILE "SYNTAX" T>
<ENDLOAD>
<IFILE "CLOCK" T>
<IFILE "MAIN" T>
<IFILE "PARSER" T>
<INSERT-CRUFTY "CRUFTY">
<IFILE "VERBS" T>
;"MIKE: Add your files here, as with ROBOTS"
<IFILE "INTERRUPTS" T>
<IFILE "RA" T>
<IFILE "ANTE" T>
<IFILE "DIAMOND" T>
<IFILE "BARGE" T>
<IFILE "CUBE" T>
<IFILE "CAMP" T>
<IFILE "TEMPLE" T>
<PRINC "INFIDEL: Interlogic Adventure Fiction
Get ready!">

View file

@ -783,14 +783,16 @@ into the walls, one on either side of the passageway.")
(DESC "plaster") (DESC "plaster")
(SYNONYM PLASTE) (SYNONYM PLASTE)
(SIZE 5) (SIZE 5)
(TEXT
"Some hieroglyphics on the plaster say:|
|
*-> # !!! :: ...> .-")
(ACTION PLASTER1-FCN)> (ACTION PLASTER1-FCN)>
<ROUTINE PLASTER1-FCN () <ROUTINE PLASTER1-FCN ()
<COND (<VERB? TAKE MUNG ATTACK> <COND (<VERB? EXAMINE READ>
<TELL
"Some hieroglyphics on the plaster say:|
">
<PLASTER1-GLYPHS>
<RTRUE>)
(<VERB? TAKE MUNG ATTACK>
<COND (<NOT ,PRSI> <COND (<NOT ,PRSI>
<COND (<IN? ,PICK-AXE ,WINNER> <COND (<IN? ,PICK-AXE ,WINNER>
<SETG PRSI ,PICK-AXE>) <SETG PRSI ,PICK-AXE>)
@ -1219,7 +1221,17 @@ far enough above the surface of the table to activate a mechanism. You hear it
click just before the ceiling comes down to meet the floor."> click just before the ceiling comes down to meet the floor.">
<ROUTINE SCARAB-CHECK-FCN ("AUX" L-W R-W (L-OBJ <>) (R-OBJ <>)) <ROUTINE SCARAB-CHECK-FCN ("AUX" L-W R-W (L-OBJ <>) (R-OBJ <>))
<COND (<VERB? TAKE> <COND (<VERB? EXAMINE READ>
<TELL
"Etched onto its back is the following:|
">
<FIXED-FONT-ON>
<TELL "|
>*>|
">
<FIXED-FONT-OFF>
<RTRUE>)
(<VERB? TAKE>
<SETG CAN-TURN-STATUES <>> <SETG CAN-TURN-STATUES <>>
<SET L-OBJ <FIRST? ,LEFT-DISC>> <SET L-OBJ <FIRST? ,LEFT-DISC>>
<SET R-OBJ <FIRST? ,RIGHT-DISC>> <SET R-OBJ <FIRST? ,RIGHT-DISC>>
@ -1269,10 +1281,6 @@ the scarab within the smaller outlined area on the cover." CR>)>
(DESC "scarab") (DESC "scarab")
(VALUE 10) (VALUE 10)
(SYNONYM SCARAB) (SYNONYM SCARAB)
(TEXT
"Etched onto its back is the following:|
|
>*>")
(SIZE 8) (SIZE 8)
(MAP 3) (MAP 3)
(ACTION SCARAB-CHECK-FCN)> (ACTION SCARAB-CHECK-FCN)>
@ -1294,18 +1302,24 @@ the scarab within the smaller outlined area on the cover." CR>)>
(SYNONYM PAGE) (SYNONYM PAGE)
(FLAGS NDESCBIT READBIT BURNBIT TURNBIT DONTTAKE TRYTAKEBIT) (FLAGS NDESCBIT READBIT BURNBIT TURNBIT DONTTAKE TRYTAKEBIT)
(ACTION PAGE-FCN) (ACTION PAGE-FCN)
(SIZE 1) (SIZE 1)>
(TEXT
<ROUTINE PAGE-FCN ()
<COND (<VERB? EXAMINE READ>
<TELL
"Hieroglyphs can be seen as follows:| "Hieroglyphs can be seen as follows:|
| ">
<FIXED-FONT-ON>
<TELL "|
= . ! !| = . ! !|
<-* # = - # !@! !---!| <-* # = - # !@! !---!|
| |
. ! !| . ! !|
:: # >*> - # !@! !--!")> :: # >*> - # !@! !--!|
">
<ROUTINE PAGE-FCN () <FIXED-FONT-OFF>
<COND (<VERB? TURN> <RTRUE>)
(<VERB? TURN>
<TELL "Unnecessary page turning may destroy the book." CR> <TELL "Unnecessary page turning may destroy the book." CR>
<RTRUE>) <RTRUE>)
(<VERB? BURN> (<VERB? BURN>
@ -1337,9 +1351,12 @@ referred to, it too has seen better days.")
<COND (<NOT <FSET? ,DEAD-BOOK ,OPENBIT>> <COND (<NOT <FSET? ,DEAD-BOOK ,OPENBIT>>
<TELL <TELL
"The book isn't open. On the cover is the following, though:| "The book isn't open. On the cover is the following, though:|
| ">
<FIXED-FONT-ON>
<TELL "|
=| =|
=" CR>) =" CR>
<FIXED-FONT-OFF>)
(T (T
<PERFORM ,V?READ ,PAGE>)> <PERFORM ,V?READ ,PAGE>)>
<RTRUE>) <RTRUE>)

View file

@ -371,11 +371,6 @@ wood. Although only a few feet of it rise above the deck, it was probably used
at one time as a mast.") at one time as a mast.")
(SYNONYM BEAM MAST) (SYNONYM BEAM MAST)
(ADJECTIVE WOODEN STURDY) (ADJECTIVE WOODEN STURDY)
(TEXT
"This wooden beam is made of an extremely hard wood. It's 10 feet long and has
a diameter of 12 inches. Scratched into it is the following symbol:|
|
/!\\")
(SIZE 10) (SIZE 10)
(VALUE 15) (VALUE 15)
(ACTION BEAM-FCN) (ACTION BEAM-FCN)
@ -598,7 +593,18 @@ the deck with a thud." CR>)>)
>> >>
<ROUTINE DESCRIBE-BEAM-FCN (RARG "AUX" STR) <ROUTINE DESCRIBE-BEAM-FCN (RARG "AUX" STR)
<COND (<OR <NOT <EQUAL? .RARG ,M-OBJDESC>> <COND (<VERB? EXAMINE READ>
<TELL
"This wooden beam is made of an extremely hard wood. It's 10 feet long and has
a diameter of 12 inches. Scratched into it is the following symbol:|
">
<FIXED-FONT-ON>
<TELL "|
/!\\|
">
<FIXED-FONT-OFF>
<RTRUE>)
(<OR <NOT <EQUAL? .RARG ,M-OBJDESC>>
<NOT ,BEAM-PLACED>> <NOT ,BEAM-PLACED>>
<RFALSE>) <RFALSE>)
(<EQUAL? ,BEAM-PLACED 4> ;"CASE: In N. Ante, beam wedged" (<EQUAL? ,BEAM-PLACED 4> ;"CASE: In N. Ante, beam wedged"
@ -647,10 +653,13 @@ beam." CR>
<RFALSE>)> <RFALSE>)>
<TELL <TELL
"The scroll reads as follows:| "The scroll reads as follows:|
| ">
<FIXED-FONT-ON>
<TELL "|
*-> <.> <:.> ... <::.>| *-> <.> <:.> ... <::.>|
| |
:: : ** --->> -) (*)" CR> :: : ** --->> -) (*)" CR>
<FIXED-FONT-OFF>
<RTRUE>> <RTRUE>>
;<ROUTINE CLEAR-THE-BEAM ("AUX" F N (FLG <>) STR) ;<ROUTINE CLEAR-THE-BEAM ("AUX" F N (FLG <>) STR)

View file

@ -846,18 +846,24 @@ crystal-clear lake glimmering on the horizon, just to the north.">>
(ADJECTIVE SQUARE) (ADJECTIVE SQUARE)
(CAPACITY 5) (CAPACITY 5)
(MAP 3) (MAP 3)
(TEXT (ACTION ENTER-OPENING-FCN)>
<ROUTINE ENTER-OPENING-FCN ()
<COND (<VERB? EXAMINE READ>
<TELL
"The opening sits in the upper right-hand corner of the block. It's a small "The opening sits in the upper right-hand corner of the block. It's a small
square opening, about four inches square, far too small for you square opening, about four inches square, far too small for you
to enter, and rather shallow. Some hieroglyphs travel across the block, to enter, and rather shallow. Some hieroglyphs travel across the block,
cut off by the opening:| cut off by the opening:|
| ">
<FIXED-FONT-ON>
<TELL "|
!-! !-!| !-! !-!|
-> #. ! ! - # ! ! /") -> #. ! ! - # ! ! /|
(ACTION ENTER-OPENING-FCN)> ">
<FIXED-FONT-OFF>
<ROUTINE ENTER-OPENING-FCN () <RTRUE>)
<COND (<VERB? OPEN CLOSE> (<VERB? OPEN CLOSE>
<HOW? ,PRSO>) <HOW? ,PRSO>)
(<VERB? THROUGH> (<VERB? THROUGH>
<TELL <TELL
@ -1171,7 +1177,7 @@ the dotted line unless you want the manual shipped via alternate shipping.
Include your address unless your mailing address and shipping address differ Include your address unless your mailing address and shipping address differ
from your postal delivery route. If you are having the manual air-freighted, from your postal delivery route. If you are having the manual air-freighted,
fill in your airport's zip code unless you're within thirty miles of a large fill in your airport's zip code unless you're within thirty miles of a large
corn field. After checking whether that box has been checked, check it. corn field. After checking whether that box has been checked, check it.|
| |
Before you mail this, be certain you've read the instructions and have filled Before you mail this, be certain you've read the instructions and have filled
out all three sides of the form. In case of doubt, contact the Coupon out all three sides of the form. In case of doubt, contact the Coupon
@ -1347,11 +1353,6 @@ personality, it has seen better days.")>
(IN MAP) (IN MAP)
(FLAGS TAKEBIT READBIT) (FLAGS TAKEBIT READBIT)
(DESC "stone cube") (DESC "stone cube")
(TEXT
"This is a small stone cube, almost four inches on a side, with ancient
markings on it. The markings look like this:|
|
# !@! :: (()) !@! //\\\\")
(SYNONYM CUBE) (SYNONYM CUBE)
(MAP 3) (MAP 3)
(ADJECTIVE SMALL STONE) (ADJECTIVE SMALL STONE)
@ -1360,7 +1361,18 @@ markings on it. The markings look like this:|
<GLOBAL PYRAMID-OPENED <>> <GLOBAL PYRAMID-OPENED <>>
<ROUTINE STONE-KEY-FCN () <ROUTINE STONE-KEY-FCN ()
<COND (<AND <VERB? PUT> <COND (<VERB? EXAMINE READ>
<TELL
"This is a small stone cube, almost four inches on a side, with ancient
markings on it. The markings look like this:|
">
<FIXED-FONT-ON>
<TELL "|
# !@! :: (()) !@! //\\\\|
">
<FIXED-FONT-OFF>
<RTRUE>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,ROCK-LOCK>> <EQUAL? ,PRSI ,ROCK-LOCK>>
<TELL "The ancient stones beneath your feet shake and <TELL "The ancient stones beneath your feet shake and
tremble as they move the sands. You leap out of the way and manage to tremble as they move the sands. You leap out of the way and manage to
@ -1545,7 +1557,7 @@ didn't hang you with it.")
(TEXT (TEXT
"The note reads:| "The note reads:|
| |
Fi aman Allah! Fi aman Allah!|
| |
Hereafter you shall pursue your fool dream of the hidden pyramid and its riches Hereafter you shall pursue your fool dream of the hidden pyramid and its riches
alone. May the jackals feed well on your bones. We have left you what you need alone. May the jackals feed well on your bones. We have left you what you need
@ -1736,8 +1748,9 @@ face, blinding you for long enough to lose track of the " D ,PRSO "." CR>
656 EX3 706 EX6 751 P6 752 P7 753 P8 656 EX3 706 EX6 751 P6 752 P7 753 P8
754 EX7 755 EX8 756 EX9>> 754 EX7 755 EX8 756 EX9>>
<ROUTINE DESERT-TO-TABLE (SLOC "AUX" (TBL ,DESERT-TABLE) (CNT 0) <ROUTINE DESERT-TO-TABLE (SLOC "AUX" TBL (CNT 0)
(F <FIRST? ,ENDLESS-DESERT>) N) (F <FIRST? ,ENDLESS-DESERT>) N)
<SET TBL ,DESERT-TABLE>
<REPEAT () <REPEAT ()
<COND (.F <SET N <NEXT? .F>>) <COND (.F <SET N <NEXT? .F>>)
(ELSE <RETURN>)> (ELSE <RETURN>)>
@ -1755,7 +1768,8 @@ face, blinding you for long enough to lose track of the " D ,PRSO "." CR>
<SET F .N>>> <SET F .N>>>
<ROUTINE TABLE-TO-DESERT (SLOC <ROUTINE TABLE-TO-DESERT (SLOC
"AUX" (TBL ,DESERT-TABLE) (CNT 0)) "AUX" TBL (CNT 0))
<SET TBL ,DESERT-TABLE>
<REPEAT () <REPEAT ()
<COND (<NOT <L? .CNT 100>> <COND (<NOT <L? .CNT 100>>
<RETURN>) <RETURN>)

22
crufty.xzap Normal file
View file

@ -0,0 +1,22 @@
.FUNCT THIS-IT?,OBJ,TBL,SYNS,?TMP1
FSET? OBJ,INVISIBLE /FALSE
ZERO? P-NAM /?THN3
GETPT OBJ,P?SYNONYM >SYNS
PTSIZE SYNS
DIV STACK,2
SUB STACK,1
CALL ZMEMQ,P-NAM,SYNS,STACK
ZERO? STACK /FALSE
?THN3: ZERO? P-ADJ /?ELS8
GETPT OBJ,P?ADJECTIVE >SYNS
ZERO? SYNS /FALSE
PTSIZE SYNS
SUB STACK,1
CALL ZMEMQB,P-ADJ,SYNS,STACK
ZERO? STACK /FALSE
?ELS8: ZERO? P-GWIMBIT /TRUE
FSET? OBJ,P-GWIMBIT /TRUE
RFALSE
.ENDI

View file

@ -198,6 +198,7 @@ see one of the cube rooms.")
", three rows by three columns. These bricks look as if they could be easily ", three rows by three columns. These bricks look as if they could be easily
removed and are marked with numerical symbols." CR>)> removed and are marked with numerical symbols." CR>)>
<CRLF> <CRLF>
<FIXED-FONT-ON>
<TELL ,DASH-STR CR> <TELL ,DASH-STR CR>
<TELL ,EX-SP-EX-STR CR> <TELL ,EX-SP-EX-STR CR>
<TELL "! "> <TELL "! ">
@ -243,6 +244,7 @@ removed and are marked with numerical symbols." CR>)>
<TELL " !" CR> <TELL " !" CR>
<TELL ,EX-SP-EX-STR CR> <TELL ,EX-SP-EX-STR CR>
<TELL ,DASH-STR CR> <TELL ,DASH-STR CR>
<FIXED-FONT-OFF>
<RTRUE>) <RTRUE>)
(<VERB? OPEN CLOSE> (<VERB? OPEN CLOSE>
<HOW? ,PUNCH-PANEL> <HOW? ,PUNCH-PANEL>
@ -351,7 +353,12 @@ removed and are marked with numerical symbols." CR>)>
<GLOBAL WRONG-BRICK <>> <GLOBAL WRONG-BRICK <>>
<ROUTINE TAKE-BRICK-FCN () <ROUTINE TAKE-BRICK-FCN ()
<COND (<AND <VERB? PUT> <COND (<VERB? EXAMINE READ>
<FIXED-FONT-ON>
<TELL <GETP ,PRSO ,P?TEXT> CR>
<FIXED-FONT-OFF>
<RTRUE>)
(<AND <VERB? PUT>
<EQUAL? ,PRSI ,PUNCH-PANEL>> <EQUAL? ,PRSI ,PUNCH-PANEL>>
<FSET ,PRSO ,NDESCBIT> <FSET ,PRSO ,NDESCBIT>
<SETG BRICKS-TAKEN <- ,BRICKS-TAKEN 1>> <SETG BRICKS-TAKEN <- ,BRICKS-TAKEN 1>>

View file

@ -565,31 +565,45 @@ will be too." CR>)
(ADJECTIVE STRANGE) (ADJECTIVE STRANGE)
(ACTION HIERO-FCN)> (ACTION HIERO-FCN)>
<ROUTINE FIXED-FONT-ON () <PUT 0 8 <BOR <GET 0 8> 2>>>
<ROUTINE FIXED-FONT-OFF() <PUT 0 8 <BAND <GET 0 8> -3>>>
<ROUTINE PLASTER1-GLYPHS ()
<FIXED-FONT-ON>
<TELL CR "*-> # !!! :: ...> .-" CR>
<FIXED-FONT-OFF>>
<ROUTINE HIERO-FCN ("AUX" TEMP (COUNTER 0) OFFSET) <ROUTINE HIERO-FCN ("AUX" TEMP (COUNTER 0) OFFSET)
<COND (<NOT <VERB? READ EXAMINE>> <COND (<NOT <VERB? READ EXAMINE>>
<RFALSE>)> <RFALSE>)>
<COND (<AND <IN? ,WINNER ,STAIRS-BOTTOM> <COND (<AND <IN? ,WINNER ,STAIRS-BOTTOM>
<IN? ,PLASTER1 ,STAIRS-BOTTOM>> <IN? ,PLASTER1 ,STAIRS-BOTTOM>>
<TELL CR <PLASTER1-GLYPHS>
"*-> # !!! :: ...> .-" CR>) <RTRUE>)
(<IN? ,WINNER ,WEST-END-OF-PASSAGE> (<IN? ,WINNER ,WEST-END-OF-PASSAGE>
<COND (<FSET? ,PIT ,INVISIBLE> <COND (<FSET? ,PIT ,INVISIBLE>
<FIXED-FONT-ON>
<TELL CR <TELL CR
" .| " .|
<-* # /!\\ - # (= =)| <-* # /!\\ - # (= =)|
| |
:: *-> # !!!" CR>) :: *-> # !!!" CR>
<FIXED-FONT-OFF>)
(T (T
<TELL "They're gone with the plaster." CR>)>) <TELL "They're gone with the plaster." CR>)>)
(<AND <ROOM? ,NORTH-ANTECHAMBER> (<AND <ROOM? ,NORTH-ANTECHAMBER>
<NOT <FSET? ,BURIAL-CHAMBER ,RMUNGBIT>>> <NOT <FSET? ,BURIAL-CHAMBER ,RMUNGBIT>>>
<FIXED-FONT-ON>
<TELL CR <TELL CR
" - !=!| " - !=!|
<-* # /!\\ . # ! !| <-* # /!\\ . # ! !|
| |
:: *-> # !!!" CR>) :: *-> # !!!" CR>
<FIXED-FONT-OFF>)
(<AND <ROOM? SOUTH-ANTECHAMBER> (<AND <ROOM? SOUTH-ANTECHAMBER>
<NOT <FSET? ,ANNEX-DOOR ,OPENBIT>>> <NOT <FSET? ,ANNEX-DOOR ,OPENBIT>>>
<FIXED-FONT-ON>
<TELL CR <TELL CR
" -| " -|
<-* # /!\\ (.) # ! !| <-* # /!\\ (.) # ! !|
@ -597,7 +611,8 @@ will be too." CR>)
| |
-| -|
:: ( # ! !| :: ( # ! !|
-" CR>) -" CR>
<FIXED-FONT-OFF>)
(<ROOM? ,ROOM-OF-NEPHTHYS ,ROOM-OF-ISIS (<ROOM? ,ROOM-OF-NEPHTHYS ,ROOM-OF-ISIS
,ROOM-OF-SELKIS ,ROOM-OF-NEITH> ,ROOM-OF-SELKIS ,ROOM-OF-NEITH>
<COND (<EQUAL? ,HERE ,ROOM-OF-NEPHTHYS> <COND (<EQUAL? ,HERE ,ROOM-OF-NEPHTHYS>
@ -616,6 +631,7 @@ will be too." CR>)
<COND (<EQUAL? .TEMP <COND (<EQUAL? .TEMP
<GET ,ORDER-LTBL .COUNTER>> <GET ,ORDER-LTBL .COUNTER>>
<RETURN>)>> <RETURN>)>>
<FIXED-FONT-ON>
<TELL CR " " <GET ,STAR-LTBL .COUNTER> CR> <TELL CR " " <GET ,STAR-LTBL .COUNTER> CR>
<TELL CR <TELL CR
" " <GET ,COMPASS-POINTS-LTBL .OFFSET> CR> " " <GET ,COMPASS-POINTS-LTBL .OFFSET> CR>
@ -623,41 +639,52 @@ will be too." CR>)
")) / # " <GET ,COMPASS-TAILS-LTBL .OFFSET> " ::| ")) / # " <GET ,COMPASS-TAILS-LTBL .OFFSET> " ::|
| |
<-* " <-* "
<GET ,STAR-LTBL .COUNTER> " =!= / *" CR>) <GET ,STAR-LTBL .COUNTER> " =!= / *" CR>
<FIXED-FONT-OFF>)
(<IN? ,WINNER ,BEND-HALL> (<IN? ,WINNER ,BEND-HALL>
<FIXED-FONT-ON>
<TELL <TELL
" "
. = - -| . = - -|
!@! ...> - # * = :: <... ;| !@! ...> - # * = :: <... ;|
| |
# *| # *|
=" CR>) =" CR>
<FIXED-FONT-OFF>)
(<IN? ,WINNER ,CENTRAL-ROOM> (<IN? ,WINNER ,CENTRAL-ROOM>
<TELL <TELL
"The hieroglyphs look like this:| "The hieroglyphs look like this:|
| ">
<FIXED-FONT-ON>
<TELL "|
!-!| !-!|
...> -. >... # ! ! !| ...> -. >... # ! ! !|
!-!| !-!|
| |
/ ...> / # !@!" CR>) / ...> / # !@!" CR>
<FIXED-FONT-OFF>)
(<EQUAL? ,HERE ,SOUTH-CENTER> (<EQUAL? ,HERE ,SOUTH-CENTER>
<TELL <TELL
"The hieroglyphs look like this: "The hieroglyphs look like this:|
| ">
| <FIXED-FONT-ON>
<TELL "|
<.> <:> <:.>| <.> <:> <:.>|
| |
<::> <::.> <:::>| <::> <::.> <:::>|
| |
<:::.> <::::> <::::.>" CR>) <:::.> <::::> <::::.>" CR>
<FIXED-FONT-OFF>)
(<EQUAL? <LOC ,WINNER> ,SKELETON-ROOM ,SILVER-ROOM ,GOLDEN-ROOM> (<EQUAL? <LOC ,WINNER> ,SKELETON-ROOM ,SILVER-ROOM ,GOLDEN-ROOM>
<TELL <TELL
"The hieroglyphs look like this:| "The hieroglyphs look like this:|
| ">
<FIXED-FONT-ON>
<TELL "|
-!- # !* :: # *! ::| -!- # !* :: # *! ::|
| |
*-> # !@! >*>" CR>) *-> # !@! >*>" CR>
<FIXED-FONT-OFF>)
(T (T
<TELL "I don't see them here." CR>)> <TELL "I don't see them here." CR>)>
<RTRUE>> <RTRUE>>

1980
infidel.str Normal file

File diff suppressed because it is too large Load diff

58
infidel.xzap Normal file
View file

@ -0,0 +1,58 @@
.INSERT "INFIDELFREQ"
.INSERT "INFIDELDAT" ; DATA IS IN THIS FILE
.INSERT "MACROS"
.INSERT "GLOBALS"
.INSERT "SYNTAX"
.INSERT "CLOCK"
.INSERT "MAIN"
.INSERT "PARSER"
.INSERT "CRUFTY"
.INSERT "VERBS"
.INSERT "INTERRUPTS"
.INSERT "RA"
.INSERT "ANTE"
.INSERT "DIAMOND"
.INSERT "BARGE"
.INSERT "CUBE"
.INSERT "CAMP"
.INSERT "TEMPLE"
.INSERT "INFIDELSTR"
.END

200
infidelfreq.xzap Normal file
View file

@ -0,0 +1,200 @@
.FSTR FSTR?1,"the " ;2234 1117
.FSTR FSTR?2,"You " ;819 273
.FSTR FSTR?3,"The " ;642 214
.FSTR FSTR?4,", " ;625 625
.FSTR FSTR?5,"you " ;520 260
.FSTR FSTR?6,"your " ;483 161
.FSTR FSTR?7,"and " ;446 223
.FSTR FSTR?8,". " ;409 409
.FSTR FSTR?9,"of " ;393 393
.FSTR FSTR?10,"to " ;385 385
.FSTR FSTR?11,"are " ;330 165
.FSTR FSTR?12,"There's " ;312 39
.FSTR FSTR?13,"can't " ;290 58
.FSTR FSTR?14,"is " ;262 262
.FSTR FSTR?15,"in " ;243 243
.FSTR FSTR?16,"It's " ;235 47
.FSTR FSTR?17,"through " ;234 39
.FSTR FSTR?18,"into " ;225 75
.FSTR FSTR?19,"with " ;219 73
.FSTR FSTR?20,"that " ;216 72
.FSTR FSTR?21,"from " ;192 64
.FSTR FSTR?22,"already " ;174 29
.FSTR FSTR?23,"There " ;170 34
.FSTR FSTR?24,"You're " ;161 23
.FSTR FSTR?25,"see " ;160 80
.FSTR FSTR?26,"small " ;160 40
.FSTR FSTR?27,"which " ;156 39
.FSTR FSTR?28,"nothing " ;150 25
.FSTR FSTR?29,"on " ;141 141
.FSTR FSTR?30,"this " ;141 47
.FSTR FSTR?31,"don't " ;140 28
.FSTR FSTR?32,"down " ;138 46
.FSTR FSTR?33,"can " ;136 68
.FSTR FSTR?34,"walls " ;132 33
.FSTR FSTR?35,"out " ;130 65
.FSTR FSTR?36,"room " ;129 43
.FSTR FSTR?37,"have " ;129 43
.FSTR FSTR?38,"doorway " ;126 21
.FSTR FSTR?39,"around " ;125 25
.FSTR FSTR?40,"Sitting " ;119 17
.FSTR FSTR?41,"would " ;112 28
.FSTR FSTR?42,"west " ;105 35
.FSTR FSTR?43,"enough " ;105 21
.FSTR FSTR?44,"It " ;104 52
.FSTR FSTR?45,"like " ;102 34
.FSTR FSTR?46,"Chamber" ;102 17
.FSTR FSTR?47,"This " ;100 25
.FSTR FSTR?48,"but " ;98 49
.FSTR FSTR?49,"yourself " ;98 14
.FSTR FSTR?50,"sand " ;96 32
.FSTR FSTR?51,"just " ;96 32
.FSTR FSTR?52,"about " ;96 24
.FSTR FSTR?53,"something " ;96 12
.FSTR FSTR?54,"encampment" ;96 12
.FSTR FSTR?55,"standing " ;91 13
.FSTR FSTR?56,"it " ;90 90
.FSTR FSTR?57,"before " ;90 18
.FSTR FSTR?58,"hieroglyphs " ;90 9
.FSTR FSTR?59,"seems " ;88 22
.FSTR FSTR?60,"isn't " ;85 17
.FSTR FSTR?61,"think " ;84 21
.FSTR FSTR?62,"light " ;84 21
.FSTR FSTR?63,"ancient " ;84 14
.FSTR FSTR?64,"You'd " ;84 14
.FSTR FSTR?65,"for " ;80 40
.FSTR FSTR?66,"that" ;78 39
.FSTR FSTR?67,"here" ;78 39
.FSTR FSTR?68,"pyramid " ;78 13
.FSTR FSTR?69,"staircase" ;77 11
.FSTR FSTR?70,"stone " ;76 19
.FSTR FSTR?71,"first" ;75 25
.FSTR FSTR?72,"door " ;75 25
.FSTR FSTR?73,"square " ;75 15
.FSTR FSTR?74,"better " ;75 15
.FSTR FSTR?75,"north" ;72 24
.FSTR FSTR?76,"floor" ;72 24
.FSTR FSTR?77,"Your " ;72 18
.FSTR FSTR?78,"you're " ;72 12
.FSTR FSTR?79,"plaster " ;72 12
.FSTR FSTR?80,"sarcophagus" ;72 8
.FSTR FSTR?81,"Chamber " ;70 10
.FSTR FSTR?82,"one " ;68 34
.FSTR FSTR?83,"its " ;68 34
.FSTR FSTR?84,"north " ;68 17
.FSTR FSTR?85,"quickly " ;66 11
.FSTR FSTR?86,"Hallway" ;66 11
.FSTR FSTR?87,"middle " ;65 13
.FSTR FSTR?88,"little " ;65 13
.FSTR FSTR?89,"I " ;64 64
.FSTR FSTR?90,"has " ;64 32
.FSTR FSTR?91,"while " ;64 16
.FSTR FSTR?92,"their " ;64 16
.FSTR FSTR?93,"back " ;63 21
.FSTR FSTR?94,"doorways " ;63 9
.FSTR FSTR?95,"hieroglyphs" ;63 7
.FSTR FSTR?96,"off " ;62 31
;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

View file

@ -28,6 +28,7 @@
<CONSTANT M-OBJDESC 5> <CONSTANT M-OBJDESC 5>
<ROUTINE GO () <ROUTINE GO ()
<PUTB ,P-LEXV 0 59>
;"put interrupts on clock chain" ;"put interrupts on clock chain"
<RANDOMIZE-HOLES> <RANDOMIZE-HOLES>
<ENABLE <QUEUE I-GINANDTONIC -1>> <ENABLE <QUEUE I-GINANDTONIC -1>>
@ -195,7 +196,9 @@
(T (T
<SETG P-CONT <>>)> <SETG P-CONT <>>)>
<COND (,P-WON <COND (,P-WON
<COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE SAVE VERSION> T) <COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE SAVE VERSION
QUIT RESTART SCORE SCRIPT UNSCRIPT RESTORE>
<VERB? TELL BRIEF SUPER-BRIEF VERBOSE SAVE VERSION> T)
(T <SET V <CLOCKER>>)>)>>> (T <SET V <CLOCKER>>)>)>>>
<GLOBAL P-MULT <>> <GLOBAL P-MULT <>>

View file

@ -285,8 +285,9 @@ long description (fdesc or ldesc), otherwise will print short."
<ROUTINE V-VERSION ("AUX" (CNT 17)) <ROUTINE V-VERSION ("AUX" (CNT 17))
<TELL <TELL
"INFIDEL| "INFIDEL|
Copyright 1983 by Infocom, Inc. All rights reserved.| Infocom interactive fiction - an adventure story|
INFIDEL is a trademark of Infocom, Inc.| Copyright (c) 1983 by Infocom, Inc. All rights reserved.|
INFIDEL is a registered trademark of Infocom, Inc.|
Release "> Release ">
<PRINTN <BAND <GET 0 1> *3777*>> <PRINTN <BAND <GET 0 1> *3777*>>
<TELL " / Serial number "> <TELL " / Serial number ">
@ -785,7 +786,7 @@ your problem to the address provided in your documentation." CR>>
<GLOBAL COPR-NOTICE <GLOBAL COPR-NOTICE
" a transcript of interaction with INFIDEL.| " a transcript of interaction with INFIDEL.|
INFIDEL is a trademark of Infocom, Inc.| INFIDEL is a registered trademark of Infocom, Inc.|
Copyright (c) 1983 Infocom, Inc. All rights reserved.|"> Copyright (c) 1983 Infocom, Inc. All rights reserved.|">
<ROUTINE V-SCRIPT () <ROUTINE V-SCRIPT ()
@ -1301,7 +1302,7 @@ a few moments." CR>
<ROUTINE V-LEAP ("AUX" T S) #DECL ((T) <OR FALSE TABLE>) <ROUTINE V-LEAP ("AUX" T S) #DECL ((T) <OR FALSE TABLE>)
<COND (<AND ,PRSO <COND (<AND ,PRSO
<NOT <PRSO? ,INTDIR>>> <NOT <PRSO? ,INTDIR ,MAST-HOLE>>>
<PERFORM V?BOARD ,PRSO> <PERFORM V?BOARD ,PRSO>
<RTRUE>) <RTRUE>)
(<SET T <GETPT ,HERE ,P?DOWN>> (<SET T <GETPT ,HERE ,P?DOWN>>
@ -1342,10 +1343,11 @@ a few moments." CR>
"Wheeeeeeeeee!!!!!" "Wheeeeeeeeee!!!!!"
"Do you expect me to applaud?">> "Do you expect me to applaud?">>
<GLOBAL JUMPLOSS <GLOBAL JUMPLOSS <LTABLE "You should have looked before you leaped."
<LTABLE "You should have looked before you leaped." "I'm afraid that leap was a bit much for your weak
"I'm afraid that leap was a bit much for your weak frame." frame."
"In the movies, your life would be passing in front of your eyes." "In the movies, your life would be passing in front of
your eyes."
"Geronimo.....">> "Geronimo.....">>
<ROUTINE PRE-READ () <ROUTINE PRE-READ ()
@ -2571,7 +2573,10 @@ specify which preposition you'd like to use next time, like LOOK AT THE " D ,PRS
<COND (<NOT <EQUAL? ,PRSO ,WINNER>> <COND (<NOT <EQUAL? ,PRSO ,WINNER>>
<TELL "The " D ,PRSO " doesn't need any help." CR> <TELL "The " D ,PRSO " doesn't need any help." CR>
<RTRUE>)>)> <RTRUE>)>)>
<TELL "You got yourself into this -- now get yourself out of it." CR>> <TELL
"You got yourself into this -- now get yourself out of it.|
[If you really need help, you can order an InvisiClues Hint Booklet
and a complete map by using the order form that came in your package.]" CR>>
<ROUTINE V-STAND-UNDER () <ROUTINE V-STAND-UNDER ()
<COND (<AND <EQUAL? ,PRSO ,CRATE ,PLANE ,PARACHUTE> <COND (<AND <EQUAL? ,PRSO ,CRATE ,PLANE ,PARACHUTE>

73
zload.zil Normal file
View file

@ -0,0 +1,73 @@
"
INFIDEL
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<SNAME "INFIDEL">
<GC-MON <>>
;<COND (<GASSIGNED? ZILCH> <GC 0 T>)
(T <GC 0 T 5>)>
<GC 0 T 5>
<BLOAT 90000 0 0 3500 0 0 0 0 0 512>
;<SETG SHORT-STRINGS 2>
<SET REDEFINE T>
<GLOBAL BIGFIX 10000>
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !\= !,WBREAKS>>>
<OR <GASSIGNED? INSERT-CRUFTY>
<DEFINE INSERT-CRUFTY (STR) <IFILE .STR T>>>
<DEFINE IFILE (STR "OPTIONAL" (FLOAD? <>) "AUX" (TIM <TIME>))
<INSERT-FILE .STR .FLOAD?>>
<PRINC "INFIDEL: Interlogic Adventure Fiction
">
<COND (<GASSIGNED? PREDGEN>
<ID 0>)>
<IFILE "MACROS" T>
<IFILE "GLOBALS" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<PROPDEF VALUE 0>
<IFILE "SYNTAX" T>
<ENDLOAD>
<IFILE "CLOCK" T>
<IFILE "ZMAIN" T>
<IFILE "PARSER" T>
<INSERT-CRUFTY "CRUFTY">
<IFILE "VERBS" T>
;"MIKE: Add your files here, as with ROBOTS"
;<IFILE "INTERRUPTS" T>
<IFILE "RA" T>
;<IFILE "ANTE" T>
;<IFILE "DIAMOND" T>
;<IFILE "BARGE" T>
;<IFILE "CUBE" T>
<IFILE "CAMP" T>
;<IFILE "TEMPLE" T>
<PRINC "INFIDEL: Interlogic Adventure Fiction
Get ready!">

364
zmain.zil Normal file
View file

@ -0,0 +1,364 @@
"MAIN for
INFIDEL
Copyright 1983 Infocom, Inc. All Rights Reserved.
"
<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>
<ROUTINE GO ()
;"put interrupts on clock chain"
;<RANDOMIZE-HOLES>
;<ENABLE <QUEUE I-GINANDTONIC -1>>
;<ENABLE <QUEUE I-PARACHUTE -1>>
;<ENABLE <QUEUE I-GROWL -1>>
<REMOVE ,WATER>
;"set up and go"
<SETG LIT T>
<SETG WINNER ,ADVENTURER>
<SETG PLAYER ,WINNER>
<SETG HERE ,TENT>
<SETG P-IT-LOC ,HERE>
<SETG P-IT-OBJECT <>>
<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
<TELL ,START-STR CR>
<CRLF>
<V-VERSION>
<CRLF>)>
<MOVE ,WINNER ,COT>
<V-LOOK>
<MAIN-LOOP>
<AGAIN>>
<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
#DECL ((CNT OCNT ICNT NUM) FIX (V) <OR 'T FIX FALSE> (OBJ) <OR FALSE OBJECT>
(OBJ1) OBJECT (TBL) TABLE (PTBL) <OR FALSE ATOM>)
<REPEAT ()
<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
;"** M" <COND (.OBJ
<COND (<AND <FSET? .OBJ ,CONTBIT>
<NOT <FSET? .OBJ ,OPENBIT>>>
<TELL "Better open the " D .OBJ
" first." CR>
<THIS-IS-IT .OBJ>
<SET V <>>)
(<NOT <FSET? .OBJ ,CONTBIT>>
<TELL "There's nothing in that." CR>
<SET V <>>)
(T
<TELL "It's not in that." CR>
<SET V <>>)>)
(T
<TELL "There isn't anything to ">
<SET TMP <GET ,P-ITBL ,P-VERBN>>
<COND (,P-OFLAG
<PRINTB <GET .TMP 0>>)
(T
<WORD-PRINT <GETB .TMP 2>
<GETB .TMP 3>>)>
<TELL "!" 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
"I don't know what you're referring to." 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 (<VERB? COMPARE> T)
(<G? .NUM 1>
<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>
,TRANSBIT>>>
<FSET? .OBJ1
,DONTTAKE>
<EQUAL? .OBJ1
,PLASTER
,PLASTER1>>>
<AGAIN>)
(<AND <EQUAL? ,P-GETFLAGS
,P-ALL>
<VERB? DROP>
<NOT <IN? .OBJ1 ,WINNER>>
<NOT <IN? ,P-IT-OBJECT
,WINNER>>>
<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 <>>)>
;"Removing this code should fix the problem that AGAIN
loses when in a vehicle and it is the PRSO."
<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>)>
<COND (<==? .V ,M-FATAL> <SETG P-CONT <>>)>)
(T
<SETG P-CONT <>>)>
<COND (,P-WON
<COND (<VERB? TELL BRIEF SUPER-BRIEF VERBOSE SAVE VERSION> T)
(T <SET V <CLOCKER>>)>)>>>
<GLOBAL P-MULT <>>
<GLOBAL P-NOT-HERE 0>
<GLOBAL L-PRSA <>>
<GLOBAL L-PRSO <>>
<GLOBAL L-PRSI <>>
%<COND (<GASSIGNED? PREDGEN>
'<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)
<SET OA ,PRSA>
<SET OO ,PRSO>
<SET OI ,PRSI>
<COND (<AND <EQUAL? ,IT .I .O>
<NOT <EQUAL? ,P-IT-LOC ,HERE>>>
<TELL "I don't see what you are referring to." CR>
<RFATAL>)>
<COND (<==? .O ,IT> <SET O ,P-IT-OBJECT>)>
<COND (<==? .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 <EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
<SET V <NOT-HERE-OBJECT-F>>>
<SETG P-WON <>>
.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)>)>
<COND (<NOT <==? .V ,M-FATAL>>
<COND (<==? <LOC ,WINNER> ,PRSO>
<SETG PRSO <>>)>
<SET V <APPLY <GETP <LOC ,WINNER> ,P?ACTION> ,M-END>>)>
<SETG PRSA .OA>
<SETG PRSO .OO>
<SETG PRSI .OI>
.V>)
(T
'<PROG ()
<SETG PDEBUG <>>
<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 (,PDEBUG
<TELL "** PERFORM: PRSA = ">
<PRINC <NTH ,ACTIONS <+ <* .A 2> 1>>>
<COND (<AND .O <NOT <==? .A ,V?WALK>>>
<TELL " | PRSO = " D .O>)>
<COND (.I <TELL " | PRSI = " D .I>)>)>
<SET OA ,PRSA>
<SET OO ,PRSO>
<SET OI ,PRSI>
<COND (<AND <EQUAL? ,IT .I .O>
<NOT <EQUAL? ,P-IT-LOC ,HERE>>>
<TELL "I don't see what you are referring to." CR>
<RFATAL>)>
<COND (<==? .O ,IT> <SET O ,P-IT-OBJECT>)>
<COND (<==? .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 <EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
<SET V <D-APPLY "Not Here" ,NOT-HERE-OBJECT-F>>>
<SETG P-WON <>>
.V)
(T
<SET O ,PRSO>
<SET I ,PRSI>
<COND (<SET V <D-APPLY "Actor"
<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>
<SET V <D-APPLY "Container"
<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)>)>
<COND (<NOT <==? .V ,M-FATAL>>
<COND (<==? <LOC ,WINNER> ,PRSO>
<SETG PRSO <>>)>
<SET V <D-APPLY "Room (M-END)"
<GETP <LOC ,WINNER> ,P?ACTION> ,M-END>>)>
<SETG PRSA .OA>
<SETG PRSO .OO>
<SETG PRSI .OI>
.V>
<DEFINE D-APPLY (STR FCN "OPTIONAL" FOO "AUX" RES)
<COND (<NOT .FCN> <>)
(T
<COND (,PDEBUG
<COND (<NOT .STR>
<TELL CR " Default ->" CR>)
(T <TELL CR " " .STR " -> ">)>)>
<SET RES
<COND (<ASSIGNED? FOO>
<APPLY .FCN .FOO>)
(T <APPLY .FCN>)>>
<COND (<AND ,PDEBUG .STR>
<COND (<==? .RES 2>
<TELL "Fatal" CR>)
(<NOT .RES>
<TELL "Not handled">)
(T <TELL "Handled" CR>)>)>
.RES)>>
>)>
<GLOBAL START-STR
"You wake slowly, sit up in your bunk, look around the tent, and try to ignore
the pounding in your head, the cottony taste in your mouth, and the ache in
your stomach. The droning of a plane's engine breaks the stillness and you
realize that things outside are quiet -- too quiet. You know that this can
mean only one thing: your workmen have deserted you. They complained over the
last few weeks, grumbling about the small pay and lack of food, and your
inability to locate the pyramid. And after what you stupidly did yesterday,
trying to make them work on a holy day, their leaving is understandable.|
|
The Professor's map was just an ancient map -- as worthless as an ice cube in
the Arctic without an instrument fine enough to accurately measure longitude
and latitude. You knew that the site was nearby. You dug, and you ordered the
workers to dig, even without the box. As you listen to the plane and rub your
aching eyes, you pray they left you supplies enough to find the pyramid and to
survive, and that the plane's carrying the long-overdue box.">