mirror of
https://github.com/historicalsource/seastalker
synced 2024-06-29 05:05:12 +03:00
Revision 15 (Original Source)
This commit is contained in:
commit
18809a2b43
26
atari.errors
Normal file
26
atari.errors
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
Assembling J1.XZAP.8
|
||||||
|
|
||||||
|
|
||||||
|
Inserting J1FREQ.XZAP.7 ( 620 bytes)
|
||||||
|
Inserting J1DAT.ZAP.2 (22305 bytes)
|
||||||
|
Inserting MACROS.ZAP.2 ( 104 bytes)
|
||||||
|
Inserting MAIN.ZAP.2 ( 2259 bytes)
|
||||||
|
Inserting CLOCK.ZAP.2 ( 186 bytes)
|
||||||
|
Inserting SUB.ZAP.4 (16333 bytes)
|
||||||
|
Inserting BATTLE.ZAP.2 ( 5651 bytes)
|
||||||
|
Inserting DOME.ZAP.3 ( 9902 bytes)
|
||||||
|
Inserting PLACES.ZAP.2 ( 4753 bytes)
|
||||||
|
Inserting PEOPLE.ZAP.3 (15561 bytes)
|
||||||
|
Inserting THINGS.ZAP.2 ( 2058 bytes)
|
||||||
|
Inserting GLOBAL.ZAP.2 ( 5836 bytes)
|
||||||
|
Inserting PARSER.ZAP.2 ( 5735 bytes)
|
||||||
|
Inserting SYNTAX.ZAP.3 ( 778 bytes)
|
||||||
|
Inserting VERBS.ZAP.3 (15666 bytes)
|
||||||
|
Inserting EVENTS.ZAP.2 ( 7364 bytes)
|
||||||
|
Inserting J1STR.ZAP.1 ( 2553 bytes)
|
||||||
|
25538 bytes of preload.
|
||||||
|
|
||||||
|
117728 bytes (115K).
|
||||||
|
32736 bytes too large for one-disk game on ATARI.
|
||||||
|
255 objects.
|
||||||
|
239 globals.
|
19
atari.xzap
Normal file
19
atari.xzap
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
.INSERT "J1FREQ"
|
||||||
|
.INSERT "J1DAT"
|
||||||
|
.INSERT "MACROS"
|
||||||
|
.INSERT "MAIN"
|
||||||
|
.INSERT "CLOCK"
|
||||||
|
ENDLOD::
|
||||||
|
.INSERT "SUB"
|
||||||
|
.INSERT "BATTLE"
|
||||||
|
.INSERT "DOME"
|
||||||
|
.INSERT "PLACES"
|
||||||
|
.INSERT "PEOPLE"
|
||||||
|
.INSERT "THINGS"
|
||||||
|
.INSERT "GLOBAL"
|
||||||
|
.INSERT "PARSER"
|
||||||
|
.INSERT "SYNTAX"
|
||||||
|
.INSERT "VERBS"
|
||||||
|
.INSERT "EVENTS"
|
||||||
|
.INSERT "J1STR"
|
||||||
|
.END
|
639
battle.zil
Normal file
639
battle.zil
Normal file
|
@ -0,0 +1,639 @@
|
||||||
|
"BATTLE for SEASTALKER
|
||||||
|
Copyright (C) 1984 Infocom, Inc. All rights reserved."
|
||||||
|
|
||||||
|
<GLOBAL SUB-IN-BATTLE <>>
|
||||||
|
<GLOBAL THORPE-LON 0> "position"
|
||||||
|
<GLOBAL THORPE-LAT 0>
|
||||||
|
<GLOBAL THORPE-DLON -1> "motion"
|
||||||
|
<GLOBAL THORPE-DLAT +1>
|
||||||
|
<GLOBAL THORPE-HLON -1> "heading"
|
||||||
|
<GLOBAL THORPE-HLAT +1>
|
||||||
|
<GLOBAL SNARK-LON +1> "position"
|
||||||
|
<GLOBAL SNARK-LAT -1>
|
||||||
|
<GLOBAL SNARK-HLON -1> "heading"
|
||||||
|
<GLOBAL SNARK-HLAT +1>
|
||||||
|
<GLOBAL SNARK-TRANKED <>>
|
||||||
|
|
||||||
|
<ROUTINE THORPE-SHOOT? (X Y)
|
||||||
|
<COND (,SNARK-TRANKED
|
||||||
|
<FORWARD-OF-THORPE? .X .Y>)
|
||||||
|
(T
|
||||||
|
<AND <STARBOARD-OF-THORPE? .X .Y>
|
||||||
|
<FORWARD-OF-THORPE? .X .Y>>)>>
|
||||||
|
|
||||||
|
<ROUTINE STARBOARD-OF-THORPE? (X Y)
|
||||||
|
<COND (<NOT <G? 0 <- <* ,THORPE-HLAT <- .X ,THORPE-LON>>
|
||||||
|
<* ,THORPE-HLON <- .Y ,THORPE-LAT>>>>>
|
||||||
|
<RTRUE>)
|
||||||
|
(T <RFALSE>)>>
|
||||||
|
|
||||||
|
<ROUTINE FORWARD-OF-THORPE? (X Y)
|
||||||
|
<COND (<NOT <G? 0 <- <* ,THORPE-HLON <- .X ,THORPE-LON>>
|
||||||
|
<* ,THORPE-HLAT <- ,THORPE-LAT .Y>>>>>
|
||||||
|
<RTRUE>)
|
||||||
|
(T <RFALSE>)>>
|
||||||
|
|
||||||
|
<ROUTINE THORPE-POS? (LON LAT)
|
||||||
|
<COND (<NOT <==? ,SUB-DEPTH ,AIRLOCK-DEPTH>>
|
||||||
|
<RFALSE>)
|
||||||
|
(<AND <==? .LAT <- ,THORPE-LAT ,THORPE-HLAT>>
|
||||||
|
<==? .LON <- ,THORPE-LON ,THORPE-HLON>>>
|
||||||
|
<RTRUE>)
|
||||||
|
(<AND <==? .LAT ,THORPE-LAT>
|
||||||
|
<==? .LON ,THORPE-LON>>
|
||||||
|
<RTRUE>)>>
|
||||||
|
|
||||||
|
<ROUTINE SNARK-POS? (LON LAT)
|
||||||
|
<OR <SNARK-HEAD-POS? .LON .LAT>
|
||||||
|
<SNARK-TAIL-POS? .LON .LAT>>>
|
||||||
|
|
||||||
|
<ROUTINE SNARK-HEAD-POS? (LON LAT)
|
||||||
|
<COND (<NOT <==? ,SUB-DEPTH ,AIRLOCK-DEPTH>>
|
||||||
|
<RFALSE>)
|
||||||
|
(<AND <==? .LAT ,SNARK-LAT> <==? .LON ,SNARK-LON>>
|
||||||
|
<RTRUE>)>>
|
||||||
|
|
||||||
|
<ROUTINE SNARK-TAIL-POS? (LON LAT "AUX" X Y HLON HLAT)
|
||||||
|
<COND (<NOT <==? ,SUB-DEPTH ,AIRLOCK-DEPTH>>
|
||||||
|
<RFALSE>)
|
||||||
|
(,SNARK-TRANKED
|
||||||
|
<SET HLON ,SNARK-HLON>
|
||||||
|
<SET HLAT ,SNARK-HLAT>)
|
||||||
|
(T
|
||||||
|
<SET HLON ,THORPE-HLON>
|
||||||
|
<SET HLAT ,THORPE-HLAT>)>
|
||||||
|
<SET X <- ,SNARK-LON .HLON>>
|
||||||
|
<SET Y <- ,SNARK-LAT .HLAT>>
|
||||||
|
<COND (<AND <==? .LAT .Y> <==? .LON .X>>
|
||||||
|
<RTRUE>)>
|
||||||
|
<SET X <- .X .HLON>>
|
||||||
|
<SET Y <- .Y .HLAT>>
|
||||||
|
<COND (<AND <==? .LAT .Y> <==? .LON .X>>
|
||||||
|
<RTRUE>)>
|
||||||
|
<COND (<AND <==? .LAT <- .Y .HLAT>>
|
||||||
|
<==? .LON <- .X .HLON>>>
|
||||||
|
<RTRUE>)>>
|
||||||
|
|
||||||
|
<OBJECT SNARK
|
||||||
|
(IN SUB)
|
||||||
|
(FLAGS NDESCBIT INVISIBLE)
|
||||||
|
(DESC "Snark")
|
||||||
|
(ADJECTIVE SEA THIS HUGE)
|
||||||
|
(SYNONYM SNARK MONSTER SLUG CREATURE ;BOOJUM)
|
||||||
|
(VALUE 5)
|
||||||
|
(ACTION THORPE-SUB-F)>
|
||||||
|
|
||||||
|
<OBJECT THORPE-SUB
|
||||||
|
(IN SUB)
|
||||||
|
(FLAGS NDESCBIT INVISIBLE ;NARTICLEBIT)
|
||||||
|
(DESC "Sea Cat" ;"Thorpe's tractor")
|
||||||
|
(ADJECTIVE DOCTOR DOC\'S JEROME THORPE MARINE AQUATIC SEA POWER)
|
||||||
|
(SYNONYM TRACTOR ;SUB CAT SEACAT POD)
|
||||||
|
(VALUE 5)
|
||||||
|
(TEXT "(You'll find that information in your SEASTALKER package.)")
|
||||||
|
(ACTION THORPE-SUB-F)>
|
||||||
|
|
||||||
|
<ROUTINE THORPE-SUB-F ()
|
||||||
|
<COND (<VERB? FIND> <TELL "It's not far away!" CR>)
|
||||||
|
(<VERB? MOVE PUSH> <TELL "It's too big!" CR>)
|
||||||
|
(<VERB? SHOOT KILL ATTACK>
|
||||||
|
%<XTELL
|
||||||
|
"You have to shoot" THE-PRSO " with a weapon." CR>)
|
||||||
|
(<VERB? WALK-TO> <TELL "You're the pilot!" CR>)>>
|
||||||
|
|
||||||
|
<GLOBAL THORPE-TURNING? <>>
|
||||||
|
|
||||||
|
<ROUTINE I-UPDATE-THORPE ("AUX" DLAT DLON Z)
|
||||||
|
<COND (,SUB-IN-BATTLE
|
||||||
|
<SET Z <* ,THORPE-HLON ,THORPE-HLAT>>
|
||||||
|
<COND (<NOT <THORPE-SHOOT? ,SUB-LON ,SUB-LAT>>
|
||||||
|
<COND (<AND <0? ,THORPE-DLON> <0? ,THORPE-DLAT>>
|
||||||
|
<SETG THORPE-TURNING? <NOT ,THORPE-TURNING?>>
|
||||||
|
<COND (,THORPE-TURNING? T)
|
||||||
|
(<STARBOARD-OF-THORPE? ,SUB-LON ,SUB-LAT>
|
||||||
|
<COND (<0? ,THORPE-HLON>
|
||||||
|
<SETG THORPE-HLON ,THORPE-HLAT>)
|
||||||
|
(<==? -1 .Z>
|
||||||
|
<SETG THORPE-HLON 0>)
|
||||||
|
(<==? +1 .Z>
|
||||||
|
<SETG THORPE-HLAT 0>)
|
||||||
|
(T <SETG THORPE-HLAT <- ,THORPE-HLON>>)>)
|
||||||
|
(T
|
||||||
|
<COND (<0? ,THORPE-HLON>
|
||||||
|
<SETG THORPE-HLON <- ,THORPE-HLAT>>)
|
||||||
|
(<==? -1 .Z>
|
||||||
|
<SETG THORPE-HLAT 0>)
|
||||||
|
(<==? +1 .Z>
|
||||||
|
<SETG THORPE-HLON 0>)
|
||||||
|
(T <SETG THORPE-HLAT ,THORPE-HLON>)>)>)
|
||||||
|
(T <SETG THORPE-DLON 0> <SETG THORPE-DLAT 0>)>
|
||||||
|
;<COND (,DEBUG
|
||||||
|
<TELL "[T-HLon=" N ,THORPE-HLON
|
||||||
|
", T-HLat=" N ,THORPE-HLAT "]" CR>)>)
|
||||||
|
(T
|
||||||
|
%<XTELL
|
||||||
|
"Thorpe zeroed in on you and fired his rocket! It streaks through the
|
||||||
|
water toward the " D ,SUB "! In an instant your sub will be just twisted
|
||||||
|
metal, trapping you and Tip forever in Davy Jones's locker!">
|
||||||
|
<FINISH>)>)>
|
||||||
|
<SETG THORPE-LON <+ ,THORPE-LON ,THORPE-DLON>>
|
||||||
|
<SETG THORPE-LAT <+ ,THORPE-LAT ,THORPE-DLAT>>
|
||||||
|
;<COND (,DEBUG
|
||||||
|
<TELL "[T-Lon=" N ,THORPE-LON ", T-Lat=" N ,THORPE-LAT "]"CR>)>
|
||||||
|
<SET Z <* ,THORPE-HLON ,THORPE-HLAT>>
|
||||||
|
<COND (<0? .Z>
|
||||||
|
<COND (<0? ,THORPE-HLAT>
|
||||||
|
<SETG SNARK-LAT <+ ,THORPE-LAT ,THORPE-HLON>>
|
||||||
|
<SETG SNARK-LON <+ ,THORPE-LON ,THORPE-HLON>>)
|
||||||
|
(T
|
||||||
|
<SETG SNARK-LAT <+ ,THORPE-LAT ,THORPE-HLAT>>
|
||||||
|
<SETG SNARK-LON <- ,THORPE-LON ,THORPE-HLAT>>)>)
|
||||||
|
(<==? -1 .Z>
|
||||||
|
<SETG SNARK-LON <+ ,THORPE-LON ,THORPE-HLON>>
|
||||||
|
<SETG SNARK-LAT ,THORPE-LAT>)
|
||||||
|
(<==? +1 .Z>
|
||||||
|
<SETG SNARK-LAT <+ ,THORPE-LAT ,THORPE-HLAT>>
|
||||||
|
<SETG SNARK-LON ,THORPE-LON>)>
|
||||||
|
<RFALSE>>
|
||||||
|
|
||||||
|
<GLOBAL LON-AIMED-AT <TABLE 0 0>>
|
||||||
|
<GLOBAL LAT-AIMED-AT <TABLE 0 0>>
|
||||||
|
<GLOBAL OBJ-AIMED-AT <TABLE 0 0>>
|
||||||
|
<GLOBAL ALREADY-SHOT <TABLE <> <>>>
|
||||||
|
<GLOBAL ON-SUB <TABLE <> <>>>
|
||||||
|
|
||||||
|
<OBJECT DART
|
||||||
|
(IN DOME-LAB ;GLOBAL-OBJECTS)
|
||||||
|
(DESC "dart gun")
|
||||||
|
(ADJECTIVE AQUATIC DART TRANQUILIZER TRANK)
|
||||||
|
(SYNONYM DART GUN WEAPON)
|
||||||
|
(FLAGS WEAPONBIT MUNGBIT ;TAKEBIT TRYTAKEBIT NDESCBIT)
|
||||||
|
(LDESC "There's a dart gun here.") ;"need prop to change later"
|
||||||
|
(TEXT "(You'll find that information in your SEASTALKER package.)")
|
||||||
|
(VALUE 5)
|
||||||
|
(ACTION DART-F)>
|
||||||
|
|
||||||
|
<ROUTINE DART-F () <WEAPON-F ,DART>>
|
||||||
|
|
||||||
|
<ROUTINE MOUNTING-VERB? (OBJ)
|
||||||
|
<COND (<NOT ,SUB-IN-DOME> <RFALSE>)
|
||||||
|
(<AND <EQUAL? ,PRSO .OBJ>
|
||||||
|
<OR <VERB? USE>
|
||||||
|
<AND <VERB? PUT-UNDER>
|
||||||
|
<DOBJ? ESCAPE-POD-UNIT>
|
||||||
|
<IOBJ? CHAIR PILOT-SEAT>>
|
||||||
|
<AND <VERB? PUT TIE-TO>
|
||||||
|
<IOBJ? GLOBAL-SUB LOCAL-SUB CLAW ;GLOBAL-HERE>>>>
|
||||||
|
<RTRUE>)
|
||||||
|
;(<AND <EQUAL? ,PRSI .OBJ>
|
||||||
|
<AND <VERB? TELL-ABOUT ASK-ABOUT>
|
||||||
|
<FSET? ,PRSO ,PERSON>>>
|
||||||
|
<RTRUE>)>>
|
||||||
|
|
||||||
|
<ROUTINE NO-GOOD-MUNGED ()
|
||||||
|
%<XTELL
|
||||||
|
"Doc Horvak has to fix it first." CR>>
|
||||||
|
|
||||||
|
<ROUTINE WEAPON-F (OBJ "AUX" (WHICH 0) O (NOT-ON-SUB <>) (SOMEONE <>))
|
||||||
|
<COND (<BAD-AIR?> ;<FSET? ,BLY ,MUNGBIT>
|
||||||
|
<RTRUE>)
|
||||||
|
(<VERB? FIND SEARCH-FOR TAKE> T)
|
||||||
|
(<MOUNTING-VERB? .OBJ> T)
|
||||||
|
(<REMOTE-VERB?> <RFALSE>)>
|
||||||
|
<COND (<EQUAL? .OBJ ,DART>
|
||||||
|
<SET WHICH 1>)>
|
||||||
|
<COND (<NOT <==? .OBJ <GET ,ON-SUB .WHICH>>>
|
||||||
|
<SET NOT-ON-SUB T>)>
|
||||||
|
<COND (<AND <NOT ,SUB-IN-DOME> .NOT-ON-SUB>
|
||||||
|
%<XTELL "You can't use" THE .OBJ " now!" CR>
|
||||||
|
<RTRUE>)>
|
||||||
|
<COND (.NOT-ON-SUB
|
||||||
|
<COND (<VERB? FIND SEARCH-FOR>
|
||||||
|
<COND (<AND <EQUAL? ,HERE <LOC .OBJ>>
|
||||||
|
<NOT <FSET? .OBJ ,TOUCHBIT>>>
|
||||||
|
<FCLEAR .OBJ ,NDESCBIT>
|
||||||
|
<HE-SHE-IT ,WINNER T "find">
|
||||||
|
<TELL " it among lots of equipment and supplies." CR>)>)
|
||||||
|
(<VERB? TAKE>
|
||||||
|
<COND (<1? .WHICH>
|
||||||
|
<FCLEAR ,DART ,NDESCBIT>
|
||||||
|
<COND (<FSET? ,DART ,MUNGBIT>
|
||||||
|
<NO-GOOD-MUNGED>)>)>)
|
||||||
|
(<MOUNTING-VERB? .OBJ>
|
||||||
|
<COND (<NOT <==? ,WINNER ,PLAYER>> <SET SOMEONE ,WINNER>)
|
||||||
|
(<SET SOMEONE <FIND-FLAG ,HERE ,PERSON ,PLAYER>> T)>
|
||||||
|
<COND (<NOT .SOMEONE>
|
||||||
|
<COND (<NOT <==? ,HERE <META-LOC .OBJ>>>
|
||||||
|
<NOT-HERE .OBJ>
|
||||||
|
<RTRUE>)
|
||||||
|
(<NOT <==? ,HERE ,AIRLOCK>>
|
||||||
|
<NOT-HERE ,CLAW>
|
||||||
|
<RTRUE>)>)>
|
||||||
|
<COND (<0? .WHICH>
|
||||||
|
<COND (<AND .SOMEONE <NOT <==? ,HERE ,AIRLOCK>>>
|
||||||
|
%<XTELL
|
||||||
|
"\"Good idea! That should stop the " D ,SNARK "! It could disable an
|
||||||
|
enemy sub, too! Shall I ">
|
||||||
|
<COND (<VERB? PUT> <TELL "do it">)
|
||||||
|
(T
|
||||||
|
<TELL "have it mounted">
|
||||||
|
<COND (<NOT <IOBJ? CLAW>>
|
||||||
|
<TELL
|
||||||
|
" on an " D ,CLAW " of the " D ,SUB>)>)>
|
||||||
|
<TELL "?\"">
|
||||||
|
<COND (<YES?>
|
||||||
|
<MOUNT-WEAPON ,BAZOOKA>
|
||||||
|
<FINE-SEQUENCE>)>
|
||||||
|
<RTRUE>)
|
||||||
|
(T
|
||||||
|
<MOUNT-WEAPON ,BAZOOKA>
|
||||||
|
<OKAY ,BAZOOKA "mounted">
|
||||||
|
<FINE-SEQUENCE>
|
||||||
|
<RTRUE>)>)
|
||||||
|
(<FSET? ,DART ,MUNGBIT>
|
||||||
|
<NO-GOOD-MUNGED>)
|
||||||
|
(T
|
||||||
|
<MOUNT-WEAPON ,DART>
|
||||||
|
<COND (<AND .SOMEONE <NOT <==? ,HERE ,AIRLOCK>>>
|
||||||
|
%<XTELL
|
||||||
|
D .SOMEONE " promptly mounts the " D ,DART " on an " D ,CLAW "." CR>)
|
||||||
|
(T
|
||||||
|
<OKAY ,DART "mounted">)>
|
||||||
|
<COND (<==? ,BAZOOKA <GET ,ON-SUB 0>>
|
||||||
|
<FINE-SEQUENCE>)>
|
||||||
|
<RTRUE>)>)>)
|
||||||
|
(T
|
||||||
|
<COND (<VERB? FIND EXAMINE>
|
||||||
|
%<XTELL
|
||||||
|
"It's mounted on one of the " D ,SUB "'s " D ,CLAW "s." CR>)
|
||||||
|
(<OR <VERB? TAKE> <MOUNTING-VERB? .OBJ>>
|
||||||
|
%<XTELL "You'd better leave it mounted on the " D ,CLAW "."CR>)
|
||||||
|
(<REMOTE-VERB?> <RFALSE>)
|
||||||
|
;(,SUB-IN-DOME ;<NOT <EQUAL? ,HERE ,SUB>>
|
||||||
|
%<XTELL
|
||||||
|
"You shouldn't do that inside the " D ,AQUADOME "!" CR>)
|
||||||
|
(<VERB? MOVE MOVE-DIR>
|
||||||
|
%<XTELL "You should type where you want to aim it." CR>)
|
||||||
|
(<VERB? AIM>
|
||||||
|
<COND (<FSET? ,CLAW ,MUNGBIT>
|
||||||
|
<TELL
|
||||||
|
"Nothing happens. Either the " D ,CLAW " or the " D .OBJ " was damaged
|
||||||
|
when you rammed the " D ,SNARK "!" CR>
|
||||||
|
<RTRUE>)
|
||||||
|
(<IOBJ? THORPE-SUB GLOBAL-THORPE>
|
||||||
|
<COND (<NOT <STARBOARD-OF-THORPE? ,SUB-LON ,SUB-LAT>>
|
||||||
|
<YOU-CANT "aim" ,GLOBAL-SNARK "in the way">
|
||||||
|
<RTRUE>)
|
||||||
|
(T
|
||||||
|
<COND (,SUB-IN-BATTLE <SCORE-OBJ ,THORPE-SUB>)>
|
||||||
|
<PUT ,OBJ-AIMED-AT .WHICH ,THORPE-SUB>
|
||||||
|
<PUT ,LON-AIMED-AT .WHICH ,THORPE-LON>
|
||||||
|
<PUT ,LAT-AIMED-AT .WHICH ,THORPE-LAT>)>)
|
||||||
|
(<IOBJ? SNARK GLOBAL-SNARK>
|
||||||
|
<PUT ,OBJ-AIMED-AT .WHICH ,SNARK>
|
||||||
|
<PUT ,LON-AIMED-AT .WHICH ,SNARK-LON>
|
||||||
|
<PUT ,LAT-AIMED-AT .WHICH ,SNARK-LAT>)
|
||||||
|
(T <RFALSE>)>
|
||||||
|
;<COND (<AND ,DEBUG <GET ,OBJ-AIMED-AT .WHICH>>
|
||||||
|
<TELL "[at: " D <GET ,OBJ-AIMED-AT .WHICH> "] ">)>
|
||||||
|
%<XTELL "Aimed." CR>)
|
||||||
|
(<VERB? SHOOT KILL ATTACK>
|
||||||
|
<SET O <GET ,OBJ-AIMED-AT .WHICH>>
|
||||||
|
<COND (<GET ,ALREADY-SHOT .WHICH>
|
||||||
|
%<XTELL "You already shot" THE-PRSI "!" CR>
|
||||||
|
<RTRUE>)
|
||||||
|
(<NOT .O>
|
||||||
|
%<XTELL "You have to aim it first!" CR>
|
||||||
|
<RTRUE>)>
|
||||||
|
;<COND (<0? .I> <SET I ,PRSO>)>
|
||||||
|
<COND (<OR <AND <==? ,THORPE-SUB .O>
|
||||||
|
<NOT <DOBJ? THORPE-SUB GLOBAL-THORPE>>>
|
||||||
|
<AND <==? ,SNARK .O>
|
||||||
|
<NOT <DOBJ? SNARK GLOBAL-SNARK>>>>
|
||||||
|
%<XTELL "You didn't aim it at" THE-PRSO "." CR>
|
||||||
|
<RTRUE>)>
|
||||||
|
<COND (<DOBJ? THORPE-SUB GLOBAL-THORPE>
|
||||||
|
<COND (<AND <==? <GET ,LON-AIMED-AT .WHICH> ,THORPE-LON>
|
||||||
|
<==? <GET ,LAT-AIMED-AT .WHICH>,THORPE-LAT>>
|
||||||
|
<PUT ,ALREADY-SHOT .WHICH T>
|
||||||
|
<COND (<0? .WHICH> <MUNG-TARGET>)
|
||||||
|
(T
|
||||||
|
%<XTELL
|
||||||
|
"Fudge! Your tranquilizer dart hit the " D ,THORPE-SUB ", and its metal hull can't
|
||||||
|
be put to sleep! Tough luck, "FN"." CR>)>)
|
||||||
|
(T
|
||||||
|
<TOO-BAD-BUT ,PRSO>
|
||||||
|
<TELL " moved since you aimed." CR>)>)
|
||||||
|
(<DOBJ? SNARK GLOBAL-SNARK>
|
||||||
|
<COND (<AND <==? <GET ,LON-AIMED-AT .WHICH> ,SNARK-LON>
|
||||||
|
<==? <GET ,LAT-AIMED-AT .WHICH> ,SNARK-LAT>>
|
||||||
|
<PUT ,ALREADY-SHOT .WHICH T>
|
||||||
|
<SETG SNARK-TRANKED T>
|
||||||
|
<SETG SNARK-HLON ,THORPE-HLON>
|
||||||
|
<SETG SNARK-HLAT ,THORPE-HLAT>
|
||||||
|
<COND (<0? .WHICH>
|
||||||
|
%<XTELL
|
||||||
|
"KA-VOOOM! The " D ,SNARK " shudders and stops moving! You scored a
|
||||||
|
clean hit with your " D ,BAZOOKA "!|
|
||||||
|
">
|
||||||
|
<TIP-SAYS>
|
||||||
|
<TELL
|
||||||
|
"Rats! There goes our safety shield!\" And he's right.
|
||||||
|
Even though you've saved the " D ,AQUADOME " from further danger of
|
||||||
|
monster attack, the " D ,SUB " is now exposed to the " D ,THORPE-SUB
|
||||||
|
"'s rocket weapon!" CR>)
|
||||||
|
(T %<XTELL
|
||||||
|
"Right on! The dart hits the " D ,SNARK " and sticks out of its side.
|
||||||
|
The tranquilizer spreads through the " D ,SNARK ", sending it to Slumberland.|
|
||||||
|
But this may have been a bad move. With the " D ,SNARK " fast asleep, its
|
||||||
|
huge body can't hide you from the " D ,THORPE-SUB "'s rocket attack!"
|
||||||
|
CR>)>)
|
||||||
|
(T
|
||||||
|
<TOO-BAD-BUT ,PRSO>
|
||||||
|
<TELL " moved since you aimed." CR>)>)
|
||||||
|
;(T <RFALSE>)>)>)>>
|
||||||
|
|
||||||
|
<ROUTINE MUNG-TARGET ()
|
||||||
|
<SCORE-UPD 5>
|
||||||
|
<FSET ,PRSO ,MUNGBIT>
|
||||||
|
%<XTELL
|
||||||
|
"Great! You and Tip can see" THE-PRSI " slam into the " D ,THORPE-SUB"'s power
|
||||||
|
pod!|
|
||||||
|
\"Hooray! That crippled the " D ,THORPE-SUB " for keeps!\" Tip cheers.|
|
||||||
|
You hear a voice come over the " D ,SONARPHONE ": ">
|
||||||
|
<REPEAT ()
|
||||||
|
<TELL "\"" FN ", this is Sharon! Do you read me?\"">
|
||||||
|
<COND (<YES?> <RETURN>)>>
|
||||||
|
%<XTELL
|
||||||
|
"\"Something hit us, and Thorpe's out cold! He cracked his skull on the
|
||||||
|
bulkhead! I was waking up when I saw it all happen. I'll tie him up so
|
||||||
|
he can't cause any trouble.|
|
||||||
|
The " D ,THORPE-SUB "'s regular engine is kaput, but he installed a
|
||||||
|
backup engine for emergencies. And the sonar control's still working. If
|
||||||
|
you like, I'll guide the monster to its cavern.\"|
|
||||||
|
">
|
||||||
|
<COND (<NOT <0? <GETP ,GREENUP ,P?VALUE>>>
|
||||||
|
<TIP-SAYS>
|
||||||
|
<TELL
|
||||||
|
"It's too bad we didn't find the " D ,TRAITOR " at the " D ,AQUADOME ".\"|
|
||||||
|
">)>
|
||||||
|
<TELL "|
|
||||||
|
CONGRATULATIONS, ">
|
||||||
|
<PRINT-NAME ,FIRST-NAME T>
|
||||||
|
%<XTELL
|
||||||
|
"! YOU'VE COMPLETED YOUR MISSION!!">
|
||||||
|
<FINISH>>
|
||||||
|
|
||||||
|
<ROUTINE MOUNT (WHICH WEAPON "AUX" OBJ)
|
||||||
|
<COND (<SET OBJ <GET ,ON-SUB .WHICH>> <MOVE .OBJ ,AIRLOCK>)>
|
||||||
|
<PUT ,ON-SUB .WHICH .WEAPON>
|
||||||
|
;<COND (<EQUAL? ,HERE ,SUB ,CRAWL-SPACE> <MOVE .WEAPON ,SUB>)
|
||||||
|
(T <MOVE .WEAPON ,AIRLOCK>)>>
|
||||||
|
|
||||||
|
<ROUTINE MOUNT-WEAPON (OBJ)
|
||||||
|
<COND (<==? .OBJ ,BAZOOKA>
|
||||||
|
<SCORE-OBJ ,BLY>
|
||||||
|
<PUTP ,BAZOOKA ,P?LDESC "The bazooka is mounted on a claw.">
|
||||||
|
<COND (<NOT <0? <GETP ,BAZOOKA ,P?VALUE>>>
|
||||||
|
<TELL "\"Of course I'll have to get it first.\"" CR>
|
||||||
|
<SCORE-OBJ ,BAZOOKA>)>
|
||||||
|
<MOUNT 0 ,BAZOOKA>)
|
||||||
|
(<==? .OBJ ,DART>
|
||||||
|
<PUTP ,DART ,P?LDESC "The dart is mounted on a claw.">
|
||||||
|
<SCORE-OBJ ,HORVAK>
|
||||||
|
<MOUNT 1 ,DART>)
|
||||||
|
(<GET ,ON-SUB 0>
|
||||||
|
<COND (<GET ,ON-SUB 1>
|
||||||
|
<TELL "The claws are holding all they can." CR>
|
||||||
|
<RFALSE>)
|
||||||
|
(T <PUT ,ON-SUB 1 .OBJ>)>)
|
||||||
|
(T <PUT ,ON-SUB 0 .OBJ>)>
|
||||||
|
<COND (<EQUAL? ,HERE ,SUB ,CRAWL-SPACE> <MOVE .OBJ ,SUB>)
|
||||||
|
(,SUB-IN-DOME <MOVE .OBJ ,AIRLOCK>)
|
||||||
|
(T <MOVE .OBJ ,NORTH-TANK-AREA>)>
|
||||||
|
<FSET .OBJ ,NDESCBIT>
|
||||||
|
<FCLEAR .OBJ ,TAKEBIT>
|
||||||
|
<FSET .OBJ ,TRYTAKEBIT>>
|
||||||
|
|
||||||
|
<ROUTINE FINE-SEQUENCE ()
|
||||||
|
<COND (<NOT ,TIP-FOLLOWS-YOU?>
|
||||||
|
<RFALSE>)
|
||||||
|
(<READY-FOR-SNARK?>
|
||||||
|
<RFALSE>)>
|
||||||
|
<MOVE-HERE-NOT-SUB ,BLY>
|
||||||
|
%<XTELL "\"Are you ready to take off now, "FN"?\" Zoe Bly "
|
||||||
|
<COND (<IN? ,BLY ,HERE> "ask") (T "shout")>
|
||||||
|
"s anxiously.">
|
||||||
|
<COND (<NOT <YES?>> <RFALSE>)>
|
||||||
|
%<XTELL "\"Wait!\" Tip cuts in. ">
|
||||||
|
<SETG WINNER ,PLAYER>
|
||||||
|
<PERFORM ,V?ASK-ABOUT ,TIP ,FINE-GRID>>
|
||||||
|
|
||||||
|
<OBJECT BAZOOKA
|
||||||
|
(IN DOME-STORAGE)
|
||||||
|
(DESC "bazooka")
|
||||||
|
(ADJECTIVE 49-ER 49ER PROSPECTING)
|
||||||
|
(SYNONYM BAZOOKA GUN WEAPON)
|
||||||
|
(FLAGS NDESCBIT WEAPONBIT TAKEBIT)
|
||||||
|
(LDESC "There's a bazooka here.") ;"need prop to change later"
|
||||||
|
(TEXT "(You'll find that information in your SEASTALKER package.)")
|
||||||
|
(VALUE 5)
|
||||||
|
(ACTION BAZOOKA-F)>
|
||||||
|
|
||||||
|
<ROUTINE BAZOOKA-F () <WEAPON-F ,BAZOOKA>>
|
||||||
|
|
||||||
|
<ROUTINE I-THORPE-APPEARS ()
|
||||||
|
<COND (<OR <G? +17 ,SUB-LON>
|
||||||
|
<L? -17 ,SUB-LAT>
|
||||||
|
<NOT <==? ,SUB-DEPTH ,AIRLOCK-DEPTH>>>
|
||||||
|
<COND (<L? 40 <- ,MOVES ,LEFT-DOME>>
|
||||||
|
<SETG LEFT-DOME ,MOVES>
|
||||||
|
%<XTELL "Suddenly ">
|
||||||
|
<TIP-SAYS>
|
||||||
|
<TELL
|
||||||
|
;"Say, " FN ", what " D ,INTDIR " do you think the " D
|
||||||
|
,SNARK " went, anyway?\"" CR>)>)
|
||||||
|
(T
|
||||||
|
<QUEUE I-SNARK-ATTACKS 0>
|
||||||
|
<QUEUE I-THORPE-APPEARS 0>
|
||||||
|
<ENABLE <QUEUE I-THORPE-AWAKES 9 ;-1>>
|
||||||
|
<FSET ,SEARCH-BEAM ,ONBIT>
|
||||||
|
%<XTELL
|
||||||
|
"\"Holy halibut!\" cries Tip. \"There's a big cloud of silt ahead in the "
|
||||||
|
D ,SEARCH-BEAM ". It's out of sonar range. This
|
||||||
|
could be the " D ,SNARK "! Want to hold course till we find out?\"">
|
||||||
|
<YES?>
|
||||||
|
%<XTELL
|
||||||
|
"However you steer, the cloud holds steady.
|
||||||
|
You may be on a collision course with the behemoth
|
||||||
|
that almost wrecked the " D ,AQUADOME "!|
|
||||||
|
">
|
||||||
|
%<XTELL
|
||||||
|
"Your " D ,SEARCH-BEAM " reveals TWO
|
||||||
|
objects dead ahead!|
|
||||||
|
One is the " D ,SNARK ". To the left of the tentacled
|
||||||
|
creature -- YOUR left -- you can make out a vehicle
|
||||||
|
crawling along the ocean floor.|
|
||||||
|
">
|
||||||
|
<TIP-SAYS>
|
||||||
|
<TELL
|
||||||
|
"That's one of your Sea Cats!\"|
|
||||||
|
A voice crackles over the " D ,SONARPHONE ": \"This is " D ,GLOBAL-THORPE
|
||||||
|
", " FN "! Do you read me?\"">
|
||||||
|
<YES?>
|
||||||
|
%<XTELL
|
||||||
|
"Your answer brings a rasping laugh. \"Of course
|
||||||
|
you read me, or you wouldn't be answering!
|
||||||
|
Your " D ,LAB-ASSISTANT
|
||||||
|
", " D ,SHARON ", is
|
||||||
|
seated behind me. She'll enjoy what's about to happen as much as I will.
|
||||||
|
Would you like to hear what's in store for you?\"">
|
||||||
|
<COND (<NOT <YES?>>
|
||||||
|
<TELL "\"You'll soon find out -- like it or not! ">)
|
||||||
|
(T <TELL "\"">)>
|
||||||
|
%<XTELL
|
||||||
|
"I'll blast your sub with a rocket! Then I'll guide my
|
||||||
|
synthetic monster to the " D ,AQUADOME " to destroy it! Can you guess
|
||||||
|
what sealed your doom, " FN "?\"">
|
||||||
|
<COND (<NOT <YES?>> <TELL "\"">)
|
||||||
|
(T <TELL "\"I'll tell you anyhow. ">)>
|
||||||
|
%<XTELL
|
||||||
|
;"Your undersea research station must be eliminated, so I'll have"
|
||||||
|
"I want to own the " D ,ORE-NODULES " near the " D ,AQUADOME
|
||||||
|
"! Sharon and I consider it a wedding present from you and your dad ...\"|
|
||||||
|
Thorpe breaks off with a sudden gulp, followed by some noise and
|
||||||
|
then a soft female voice:|
|
||||||
|
">
|
||||||
|
<REPEAT ()
|
||||||
|
<TELL "\"This is " D ,SHARON ", " FN "! Do you read me?\"">
|
||||||
|
<COND (<YES?>
|
||||||
|
<RETURN>)>>
|
||||||
|
<PHONE-ON ,GLOBAL-SHARON ,THORPE-SUB ,SONARPHONE ;,SUB>
|
||||||
|
<ENABLE <QUEUE I-UPDATE-THORPE -1>>
|
||||||
|
<FCLEAR ,SNARK ,INVISIBLE>
|
||||||
|
<FCLEAR ,THORPE-SUB ,INVISIBLE>
|
||||||
|
<SETG THORPE-LON <+ 2 <+ ,SUB-LON ,SONAR-RANGE>>>
|
||||||
|
<SETG THORPE-LAT <- ,SUB-LAT ,SONAR-RANGE>>
|
||||||
|
<SETG SNARK-LON <+ ,THORPE-LON ,THORPE-HLON>>
|
||||||
|
<SETG SNARK-LAT ,THORPE-LAT>
|
||||||
|
<FSET ,THORPE ,MUNGBIT>
|
||||||
|
%<XTELL
|
||||||
|
"\"Thank goodness! I conked Thorpe with a wrench! He fell onto the
|
||||||
|
microphone, and he's too heavy for me to move!\"" CR>
|
||||||
|
<SCORE-OBJ ,SNARK>
|
||||||
|
<RFATAL>)>>
|
||||||
|
|
||||||
|
<ROUTINE SHARON-EXPLAINS ()
|
||||||
|
<COND (<NOT <VERB? SAY>>
|
||||||
|
<TELL
|
||||||
|
"\"Wait a second, "FN", till I catch my breath!\" Sharon cuts in. ">)>
|
||||||
|
<SHARON-ABOUT-THORPE>
|
||||||
|
<TELL "\"Can I interrupt, "FN"?\" asks Tip.">
|
||||||
|
<COND (<NOT <YES?>>
|
||||||
|
<TIP-SAYS>
|
||||||
|
%<XTELL
|
||||||
|
"Sorry, but I have to. This is important.\"|
|
||||||
|
">)>
|
||||||
|
%<XTELL
|
||||||
|
"\"Sharon, how does Thorpe control the monster?\"|
|
||||||
|
\"By sonar pulse signals,\" she replies. " ,SHARON-ABOUT-MONSTER "|
|
||||||
|
\"Is the transducer sending out signals now?\" Tip asks her.|
|
||||||
|
\"Yes, it operates all the time. Can you make out our position on your "
|
||||||
|
D ,SONARSCOPE "?\"|
|
||||||
|
\"Thanks to the " D ,FINE-GRID "!\" says Tip.">
|
||||||
|
<COND (<NOT <0? ,THROTTLE-SETTING>>
|
||||||
|
<SETG THROTTLE-SETTING 0>
|
||||||
|
<TELL
|
||||||
|
" \"Maybe we'd better stop the " D ,SUB " before we collide with you!\"|
|
||||||
|
Tip uses his dual-control throttle to stop your sub.
|
||||||
|
Then he adds apologetically:
|
||||||
|
\"This isn't mutiny, "FN"! I just figured we should stop now.\"">)>
|
||||||
|
<CRLF>
|
||||||
|
%<XTELL ,SHARON-ABOUT-CAT "|
|
||||||
|
\"Was it out of control when it attacked the " D ,AQUADOME "?\" asks Tip.|
|
||||||
|
\"Oh no!\" Sharon replies. ">
|
||||||
|
<REPEAT ()
|
||||||
|
%<XTELL
|
||||||
|
"\"Thorpe has a helper at the " D ,AQUADOME " who put a
|
||||||
|
" D ,BLACK-BOX " on the " D ,SONAR-EQUIPMENT ", which made it emit signals to
|
||||||
|
ATTRACT the monster and make it attack. Do you follow me so far, " FN "?\"">
|
||||||
|
<COND (<YES?> <RETURN>)>>
|
||||||
|
%<XTELL
|
||||||
|
"\"Good. Before that first attack, Thorpe got the monster close enough
|
||||||
|
for the " D ,BLACK-BOX " to take over. Then he surfaced near " D ,BAY
|
||||||
|
" to get me.
|
||||||
|
By the time we went back to the ocean floor, something had gone wrong: the " D
|
||||||
|
,AQUADOME " was okay, and the monster had wandered off to its cavern.
|
||||||
|
That reminds me, "FN". ">
|
||||||
|
<REPEAT ()
|
||||||
|
%<XTELL
|
||||||
|
"Do you want to take the monster to its cavern peacefully? (With no
|
||||||
|
more sonar pulse input, it'll stay there till you're ready to study it
|
||||||
|
scientifically.)\"">
|
||||||
|
<COND (<YES?> <RETURN>)>
|
||||||
|
%<XTELL
|
||||||
|
"(Better listen, "FN". Sharon's trying to show you how to deal with
|
||||||
|
this threat to the " D ,AQUADOME ".)|
|
||||||
|
\"">>
|
||||||
|
%<XTELL
|
||||||
|
"\"First tell me, "FN": do you have any tranquilizer or weapon
|
||||||
|
to use against it?\"">
|
||||||
|
<COND (<YES?>
|
||||||
|
%<XTELL "\"Do you want to capture it for scientific study?\"">
|
||||||
|
<COND (<YES?>
|
||||||
|
%<XTELL
|
||||||
|
"\"Then try the following:|
|
||||||
|
Position your sub on the other side of the monster -- on the monster's
|
||||||
|
LEFT side -- just 5 meters from it. If anything goes wrong and it gets out
|
||||||
|
of control, you can tranquilize it immediately.\"" CR>)
|
||||||
|
(T <TELL "\"That's odd! I thought you would.\"" CR>)>)>
|
||||||
|
<RTRUE>>
|
||||||
|
|
||||||
|
<ROUTINE SHARON-ABOUT-THORPE ()
|
||||||
|
%<XTELL
|
||||||
|
"\"I'm not in on Thorpe's plot, "FN". I'm playing along, trying to wreck
|
||||||
|
his plans. I know it was risky for me to leave that " D
|
||||||
|
,CATALYST-CAPSULE " out of the " D ,SUB>
|
||||||
|
<COND (,SHARON-BROKE-CIRCUIT
|
||||||
|
<TELL ", and to open that " D ,CIRCUIT-BREAKER>)>
|
||||||
|
<TELL
|
||||||
|
", but it was part of my plan, and you got to the " D ,AQUADOME " anyway.\""
|
||||||
|
CR>>
|
||||||
|
|
||||||
|
<GLOBAL SHARON-ABOUT-MONSTER
|
||||||
|
"\"It's sensitive to the signals on its RIGHT side.
|
||||||
|
Thorpe has installed a sonar transducer on the LEFT or
|
||||||
|
PORT side of this sub. He has to stay on the same side of
|
||||||
|
the monster all the time.\"">
|
||||||
|
|
||||||
|
<GLOBAL SHARON-ABOUT-CAT
|
||||||
|
"Sharon says, \"Notice how we keep 5 meters to the monster's right and 5
|
||||||
|
meters behind its nose.
|
||||||
|
The Sea Cat is programmed that way, so the signals reach
|
||||||
|
the monster with enough strength to keep it in control.\"">
|
||||||
|
|
||||||
|
<ROUTINE I-THORPE-AWAKES ()
|
||||||
|
<FCLEAR ,THORPE ,MUNGBIT>
|
||||||
|
<SETG SUB-IN-BATTLE T>
|
||||||
|
<PHONE-OFF>
|
||||||
|
<PHONE-ON ,GLOBAL-THORPE ,THORPE-SUB ,SONARPHONE>
|
||||||
|
%<XTELL CR
|
||||||
|
"Suddenly the sonarphone gets louder.|
|
||||||
|
">
|
||||||
|
<TIP-SAYS>
|
||||||
|
<TELL
|
||||||
|
"That could mean Thorpe is awake and has moved away from the microphone!\"|
|
||||||
|
You hear a sharp cry of pain from Sharon, then Thorpe yelling: \"That'll
|
||||||
|
take care of you, my little double-crosser!\"|
|
||||||
|
Thorpe speaks into the microphone: \"Now then, "FN" "LN", I'm stopping my "
|
||||||
|
D ,THORPE-SUB " so I can blow you into
|
||||||
|
Kingdom Come as soon as you're in my sights!\"|
|
||||||
|
">
|
||||||
|
<COND (<NOT <STARBOARD-OF-THORPE? ,SUB-LON ,SUB-LAT>>
|
||||||
|
<TIP-SAYS>
|
||||||
|
%<XTELL
|
||||||
|
"He'll have to go around the " D ,SNARK " to fire at us, "FN"!
|
||||||
|
And we'll have to go around its tail to shoot at HIM!\"|
|
||||||
|
">)>
|
||||||
|
<TELL-HINT 42 ;25 ,THORPE-SUB <>>
|
||||||
|
<RFATAL>>
|
57
clock.zap
Normal file
57
clock.zap
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT QUEUE,RTN,TICK,CINT
|
||||||
|
CALL INT,RTN >CINT
|
||||||
|
PUT CINT,C-TICK,TICK
|
||||||
|
RETURN CINT
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT INT,RTN,DEMON=0,E,C,INT
|
||||||
|
ADD C-TABLE,C-TABLELEN >E
|
||||||
|
ADD C-TABLE,C-INTS >C
|
||||||
|
?PRG1: EQUAL? C,E \?ELS5
|
||||||
|
SUB C-INTS,C-INTLEN >C-INTS
|
||||||
|
ZERO? DEMON /?ELS7
|
||||||
|
SUB C-DEMONS,C-INTLEN >C-DEMONS
|
||||||
|
?ELS7: ADD C-TABLE,C-INTS >INT
|
||||||
|
PUT INT,C-RTN,RTN
|
||||||
|
RETURN INT
|
||||||
|
?ELS5: GET C,C-RTN
|
||||||
|
EQUAL? STACK,RTN \?CND3
|
||||||
|
RETURN C
|
||||||
|
?CND3: ADD C,C-INTLEN >C
|
||||||
|
JUMP ?PRG1
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT CLOCKER,C,E,TICK,FLG=0,VAL
|
||||||
|
ZERO? CLOCK-WAIT /?CND1
|
||||||
|
SET 'CLOCK-WAIT,0
|
||||||
|
RFALSE
|
||||||
|
?CND1: ZERO? P-WON /?ELS9
|
||||||
|
PUSH C-INTS
|
||||||
|
JUMP ?CND5
|
||||||
|
?ELS9: PUSH C-DEMONS
|
||||||
|
?CND5: ADD C-TABLE,STACK >C
|
||||||
|
ADD C-TABLE,C-TABLELEN >E
|
||||||
|
?PRG13: EQUAL? C,E \?ELS17
|
||||||
|
INC 'MOVES
|
||||||
|
RETURN FLG
|
||||||
|
?ELS17: GET C,C-ENABLED?
|
||||||
|
ZERO? STACK /?CND15
|
||||||
|
GET C,C-TICK >TICK
|
||||||
|
ZERO? TICK \?ELS22
|
||||||
|
JUMP ?CND15
|
||||||
|
?ELS22: SUB TICK,1
|
||||||
|
PUT C,C-TICK,STACK
|
||||||
|
GRTR? TICK,1 /?CND20
|
||||||
|
GET C,C-RTN
|
||||||
|
CALL STACK >VAL
|
||||||
|
ZERO? VAL /?CND20
|
||||||
|
ZERO? FLG /?THN33
|
||||||
|
EQUAL? VAL,M-FATAL \?CND15
|
||||||
|
?THN33: SET 'FLG,VAL
|
||||||
|
?CND20:
|
||||||
|
?CND15: ADD C,C-INTLEN >C
|
||||||
|
JUMP ?PRG13
|
||||||
|
|
||||||
|
.ENDI
|
101
clock.zil
Normal file
101
clock.zil
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
"CLOCK for SEASTALKER
|
||||||
|
Copyright (C) 1984 Infocom, Inc. All rights reserved."
|
||||||
|
|
||||||
|
"Interrupt table needs room for 33 3-word slots:
|
||||||
|
I-AIRLOCK-EMPTY
|
||||||
|
I-ALARM-RINGING
|
||||||
|
I-ANALYSIS
|
||||||
|
I-ANTRIM-REPORTS
|
||||||
|
I-ANTRIM-TO-SUB
|
||||||
|
I-AUTO-PILOT
|
||||||
|
I-BLY-PRIVATELY
|
||||||
|
I-BLY-SAYS
|
||||||
|
I-CHECK-POD
|
||||||
|
I-DOME-AIR
|
||||||
|
I-GREENUP-ESCAPE
|
||||||
|
I-LAMP-ON-SCOPE
|
||||||
|
I-LOWELL-REPORTS
|
||||||
|
I-POISON-JAB
|
||||||
|
I-PROMPT-1
|
||||||
|
I-PROMPT-2
|
||||||
|
I-SEND-SUB
|
||||||
|
I-SHARON
|
||||||
|
I-SHARON-GONE
|
||||||
|
I-SHARON-TO-HALLWAY
|
||||||
|
I-SHOW-SONAR
|
||||||
|
I-SIEGEL-REPORTS
|
||||||
|
I-SNARK-ATTACKS
|
||||||
|
I-SYNTHESIS
|
||||||
|
I-THORPE-APPEARS
|
||||||
|
I-THORPE-AWAKES
|
||||||
|
I-TIP-PRIVATELY
|
||||||
|
I-TIP-REPORTS
|
||||||
|
I-TIP-SAYS
|
||||||
|
I-TIP-SONAR-PLAN
|
||||||
|
I-UPDATE-FREIGHTER
|
||||||
|
I-UPDATE-SUB-POSITION
|
||||||
|
I-UPDATE-THORPE"
|
||||||
|
|
||||||
|
<CONSTANT C-TABLELEN 111>
|
||||||
|
|
||||||
|
<GLOBAL C-TABLE <ITABLE NONE 111>>
|
||||||
|
|
||||||
|
<GLOBAL C-DEMONS 111>
|
||||||
|
|
||||||
|
<GLOBAL C-INTS 111>
|
||||||
|
|
||||||
|
<CONSTANT C-INTLEN 6>
|
||||||
|
|
||||||
|
<CONSTANT C-ENABLED? 0>
|
||||||
|
|
||||||
|
<CONSTANT C-TICK 1>
|
||||||
|
|
||||||
|
<CONSTANT C-RTN 2>
|
||||||
|
|
||||||
|
;<ROUTINE DEMON (RTN TICK "AUX" CINT)
|
||||||
|
#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 <>>
|
||||||
|
;<GLOBAL PRESENT-TIME 0>
|
||||||
|
<ROUTINE CLOCKER ("AUX" C E TICK (FLG <>) VAL)
|
||||||
|
#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>
|
||||||
|
<SETG MOVES <+ ,MOVES 1>>
|
||||||
|
<RETURN .FLG>)
|
||||||
|
(<NOT <0? <GET .C ,C-ENABLED?>>>
|
||||||
|
<SET TICK <GET .C ,C-TICK>>
|
||||||
|
<COND (<0? .TICK>)
|
||||||
|
(T
|
||||||
|
<PUT .C ,C-TICK <- .TICK 1>>
|
||||||
|
<COND (<AND <NOT <G? .TICK 1>>
|
||||||
|
<SET VAL <APPLY <GET .C ,C-RTN>>>>
|
||||||
|
<COND (<OR <NOT .FLG>
|
||||||
|
<==? .VAL ,M-FATAL>>
|
||||||
|
<SET FLG .VAL>)>)>)>)>
|
||||||
|
<SET C <REST .C ,C-INTLEN>>>>
|
26
coco.errors
Normal file
26
coco.errors
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
Assembling J1.XZAP.8
|
||||||
|
|
||||||
|
|
||||||
|
Inserting J1FREQ.XZAP.7 ( 620 bytes)
|
||||||
|
Inserting J1DAT.ZAP.1 (22305 bytes)
|
||||||
|
Inserting MACROS.ZAP.1 ( 104 bytes)
|
||||||
|
Inserting MAIN.ZAP.1 ( 2259 bytes)
|
||||||
|
Inserting CLOCK.ZAP.1 ( 186 bytes)
|
||||||
|
Inserting SUB.ZAP.3 (16341 bytes)
|
||||||
|
Inserting BATTLE.ZAP.1 ( 5651 bytes)
|
||||||
|
Inserting DOME.ZAP.1 ( 9902 bytes)
|
||||||
|
Inserting PLACES.ZAP.1 ( 4753 bytes)
|
||||||
|
Inserting PEOPLE.ZAP.1 (15561 bytes)
|
||||||
|
Inserting THINGS.ZAP.1 ( 2058 bytes)
|
||||||
|
Inserting GLOBAL.ZAP.1 ( 5836 bytes)
|
||||||
|
Inserting PARSER.ZAP.1 ( 5735 bytes)
|
||||||
|
Inserting SYNTAX.ZAP.1 ( 778 bytes)
|
||||||
|
Inserting VERBS.ZAP.1 (15666 bytes)
|
||||||
|
Inserting EVENTS.ZAP.1 ( 7364 bytes)
|
||||||
|
Inserting J1STR.ZAP.1 ( 2553 bytes)
|
||||||
|
25538 bytes of preload.
|
||||||
|
|
||||||
|
117736 bytes (115K).
|
||||||
|
32744 bytes too large for one-disk game on ATARI.
|
||||||
|
255 objects.
|
||||||
|
239 globals.
|
1134
events.zap
Normal file
1134
events.zap
Normal file
File diff suppressed because it is too large
Load diff
815
events.zil
Normal file
815
events.zil
Normal file
|
@ -0,0 +1,815 @@
|
||||||
|
"EVENTS for SEASTALKER
|
||||||
|
Copyright (C) 1984 Infocom, Inc. All rights reserved."
|
||||||
|
|
||||||
|
<ROUTINE I-ALARM-RINGING ()
|
||||||
|
<COND (<IN-LAB? ,HERE> <TELL "The " D ,ALARM " continues to ring." CR>)>>
|
||||||
|
|
||||||
|
<ROUTINE GRAB-ATTENTION (X "OPTIONAL" (OBJ <>))
|
||||||
|
<COND (<BAD-AIR?> ;"<FSET? ,BLY ,MUNGBIT>"
|
||||||
|
<RFALSE>)
|
||||||
|
(<FSET? .X ,BUSYBIT>
|
||||||
|
<TOO-BAD-BUT .X "busy">
|
||||||
|
<RFALSE>)
|
||||||
|
(<NOT <0? ,SNARK-ATTACK-COUNT>>
|
||||||
|
<DONT-KNOW .X .OBJ>
|
||||||
|
<RFALSE>)
|
||||||
|
(T
|
||||||
|
<RTRUE>)>>
|
||||||
|
|
||||||
|
<ROUTINE TELL-HINT (CARDNUM OBJ "OPTIONAL" (CR? T))
|
||||||
|
<COND (.CR? <CRLF>)>
|
||||||
|
%<XTELL
|
||||||
|
"(If you want a clue, find Infocard #" N </ .CARDNUM 10> " in your
|
||||||
|
" D ,GAME " package. Read hidden clue #" N <MOD .CARDNUM 10> " and put
|
||||||
|
\"" D .OBJ "\" in the blank space.)" CR>>
|
||||||
|
|
||||||
|
<ROUTINE I-LAMP-ON-SCOPE ()
|
||||||
|
<COND (<GLOBAL-IN? ,VIDEOPHONE ,HERE>
|
||||||
|
<COND (<AND ,ALARM-RINGING
|
||||||
|
<NOT <FSET? ,VIDEOPHONE ,ONBIT>>>
|
||||||
|
<ENABLE <QUEUE I-LAMP-ON-SCOPE 7>>
|
||||||
|
<TELL-HINT 82 ;1 ,VIDEOPHONE>)>)
|
||||||
|
(,SUB-IN-TANK
|
||||||
|
<ENABLE <QUEUE I-LAMP-ON-SCOPE 1>>
|
||||||
|
<RFALSE>)>>
|
||||||
|
|
||||||
|
<ROUTINE I-SEND-SUB ()
|
||||||
|
<COND (<AND <FSET? ,VIDEOPHONE ,ONBIT>
|
||||||
|
<NOT ,WOMAN-ON-SCREEN>>
|
||||||
|
<TELL-HINT 81 ;2 ,LOCAL-SUB>)>>
|
||||||
|
|
||||||
|
<CONSTANT G-REACHED 1>
|
||||||
|
|
||||||
|
<GLOBAL TIP-FOLLOWS-YOU? T>
|
||||||
|
<GLOBAL OLD-HERE <>>
|
||||||
|
|
||||||
|
<ROUTINE TIP-FOLLOWS-YOU (RM)
|
||||||
|
<COND (<NOT ,TIP-FOLLOWS-YOU?> <RFALSE>)
|
||||||
|
(<AND <IN-LAB? .RM> <IN-LAB? ,OLD-HERE>>
|
||||||
|
<RFALSE>)
|
||||||
|
(<AND <IN-TANK-AREA? .RM> <IN-TANK-AREA? ,OLD-HERE>>
|
||||||
|
<RFALSE>)
|
||||||
|
(<EQUAL? .RM ,CRAWL-SPACE>
|
||||||
|
<RFALSE>)
|
||||||
|
(<NOT <==? ,OLD-HERE .RM>>
|
||||||
|
<SETG OLD-HERE .RM>
|
||||||
|
<COND (<IN? ,MICROPHONE ,TIP>
|
||||||
|
<MOVE ,MICROPHONE ,CENTER-OF-LAB>)
|
||||||
|
(<IN? ,MICROPHONE-DOME ,TIP>
|
||||||
|
<MOVE ,MICROPHONE-DOME ,COMM-BLDG>)>
|
||||||
|
<COND (<NOT <EQUAL? .RM ,SUB <LOC ,TIP>>>
|
||||||
|
<FCLEAR ,TIP ,TOUCHBIT>)>
|
||||||
|
<MOVE ,TIP .RM>)>>
|
||||||
|
|
||||||
|
<ROUTINE DIR-FROM (HERE THERE "AUX" (P 0) L T O)
|
||||||
|
#DECL ((HERE THERE O) OBJECT (P L) FIX)
|
||||||
|
<REPEAT ()
|
||||||
|
<COND (<0? <SET P <NEXTP .HERE .P>>>
|
||||||
|
<RFALSE>)
|
||||||
|
(<EQUAL? .P ,P?IN ,P?OUT> T)
|
||||||
|
(<NOT <L? .P ,LOW-DIRECTION>>
|
||||||
|
<SET T <GETPT .HERE .P>>
|
||||||
|
<SET L <PTSIZE .T>>
|
||||||
|
<COND (<AND <EQUAL? .L ,DEXIT ,UEXIT ,CEXIT>
|
||||||
|
<==? <GETB .T ,REXIT> .THERE>>
|
||||||
|
<RETURN .P>)>)>>>
|
||||||
|
|
||||||
|
<ROUTINE I-SHARON-GONE ("AUX" L)
|
||||||
|
<COND (<OR ;<NOT ,BLY-TOLD-PROBLEM> <NOT ,MONSTER-GONE>>
|
||||||
|
<QUEUE I-SHARON-GONE 4>
|
||||||
|
<RFALSE>)>
|
||||||
|
<SET L <META-LOC ,SHARON>>
|
||||||
|
<REMOVE ,SHARON>
|
||||||
|
<ROB ,SHARON ,GLOBAL-SHARON>
|
||||||
|
<FCLEAR ,FILE-DRAWER ,NDESCBIT>
|
||||||
|
<FCLEAR ,PAPERS ,NDESCBIT>
|
||||||
|
<COND (<SHARON-PASSES-YOU? .L>
|
||||||
|
<SUDDENLY-SHARON .L>
|
||||||
|
<TELL "really must go now, "FN". I'll see you later.\"" CR>
|
||||||
|
<COND (<EQUAL? ,HERE ,OFFICE>
|
||||||
|
%<XTELL
|
||||||
|
"She leaves through the " D ,OFFICE-DOOR "." CR>)>
|
||||||
|
<RTRUE>)>>
|
||||||
|
|
||||||
|
<ROUTINE ROB (WHAT THIEF "AUX" N X)
|
||||||
|
<SET X <FIRST? .WHAT>>
|
||||||
|
<REPEAT ()
|
||||||
|
<COND (<NOT .X> <RETURN>)>
|
||||||
|
<SET N <NEXT? .X>>
|
||||||
|
<MOVE .X .THIEF>
|
||||||
|
<FCLEAR .X ,TAKEBIT>
|
||||||
|
<SET X .N>>>
|
||||||
|
|
||||||
|
<ROUTINE SUDDENLY-SHARON (L)
|
||||||
|
<TELL "|
|
||||||
|
Suddenly Sharon ">
|
||||||
|
<COND (<NOT <EQUAL? .L ,HERE>> <TELL "passes by and says">)
|
||||||
|
(T <TELL "leaves, saying">)>
|
||||||
|
<TELL ", \"I ">>
|
||||||
|
|
||||||
|
<ROUTINE I-SHARON-TO-HALLWAY ("AUX" L)
|
||||||
|
<QUEUE I-SHARON-TO-HALLWAY 0>
|
||||||
|
<SET L <META-LOC ,SHARON>>
|
||||||
|
<MOVE ,SHARON ,HALLWAY>
|
||||||
|
<COND (<SHARON-PASSES-YOU? .L>
|
||||||
|
<SUDDENLY-SHARON .L>
|
||||||
|
<TELL "must go back to my office now, "FN".\"" CR>)>
|
||||||
|
<I-SHARON ,G-REACHED>>
|
||||||
|
|
||||||
|
<GLOBAL MONSTER-GONE <>>
|
||||||
|
<GLOBAL SHARON-BROKE-CIRCUIT <>>
|
||||||
|
|
||||||
|
<ROUTINE I-SHARON ("OPTIONAL" (GARG <>) "AUX" (L <LOC ,SHARON>))
|
||||||
|
<COND (<==? .GARG ,G-REACHED>
|
||||||
|
<COND (<==? .L ,HALLWAY>
|
||||||
|
<MOVE ,SHARON ,OFFICE>
|
||||||
|
<FSET ,SHARON ,NDESCBIT>
|
||||||
|
<FSET ,FILE-DRAWER ,NDESCBIT>
|
||||||
|
<FSET ,PAPERS ,NDESCBIT>
|
||||||
|
<COND (<FSET? ,VIDEOPHONE ,ONBIT>
|
||||||
|
<FCLEAR ,VIDEOPHONE ,ONBIT>
|
||||||
|
<FSET ,VIDEOPHONE ,MUNGBIT>
|
||||||
|
<PHONE-OFF>
|
||||||
|
;"<FCLEAR ,CIRCUIT-BREAKER ,NDESCBIT>"
|
||||||
|
<SETG SHARON-BROKE-CIRCUIT T>
|
||||||
|
<FSET ,CIRCUIT-BREAKER ,MUNGBIT>
|
||||||
|
<FSET ,CIRCUIT-BREAKER ,OPENBIT>
|
||||||
|
;<COND (,DEBUG<TELL"[circuit breaker just opened]" CR>)>
|
||||||
|
<SETG MONSTER-GONE T>
|
||||||
|
<COND (<IN-LAB? ,HERE>
|
||||||
|
%<XTELL CR
|
||||||
|
"Something's wrong! The picture vanished from your
|
||||||
|
" D ,VIDEOPHONE " screen, and the sound conked out!|
|
||||||
|
">
|
||||||
|
<TIP-SAYS>
|
||||||
|
<TELL
|
||||||
|
"That's strange! Maybe you should use the " D
|
||||||
|
,COMPUTESTOR ".\"" CR>)>
|
||||||
|
<SCORE-UPD -3>
|
||||||
|
<RTRUE>)>)>)>>
|
||||||
|
|
||||||
|
<ROUTINE TIP-SAYS ("OPTIONAL" (QUIET <>))
|
||||||
|
<TELL "Tip s">
|
||||||
|
<COND (<IN? ,TIP ,HERE> <TELL "ays">) (T <TELL "houts">)>
|
||||||
|
<COND (.QUIET <TELL " quietly">)>
|
||||||
|
<TELL ", \"">>
|
||||||
|
|
||||||
|
<GLOBAL BLY-PRIVATELY-COUNT 0>
|
||||||
|
<GLOBAL BLY-PRIVATELY-DELAY <>>
|
||||||
|
|
||||||
|
<ROUTINE NOT-NOW? ("OPTIONAL" (BLY? T))
|
||||||
|
<COND (<AND .BLY? ,BLY-PRIVATELY-DELAY>
|
||||||
|
<RTRUE>)
|
||||||
|
(<OR <FSET? ,BLY ,MUNGBIT>
|
||||||
|
,GREENUP-ESCAPE
|
||||||
|
<EQUAL? ,HERE ,CRAWL-SPACE ,SUB>>
|
||||||
|
<RTRUE>)>>
|
||||||
|
|
||||||
|
<ROUTINE I-BLY-PRIVATELY ()
|
||||||
|
<COND (<READY-FOR-SNARK?>
|
||||||
|
<RFALSE>)>
|
||||||
|
<COND (,ZOE-MENTIONED-EVIDENCE
|
||||||
|
<RFALSE>)>
|
||||||
|
<COND (<NOT-NOW?>
|
||||||
|
<SETG BLY-PRIVATELY-DELAY <>>
|
||||||
|
<QUEUE I-BLY-PRIVATELY 7 ;3>
|
||||||
|
<RFALSE>)>
|
||||||
|
<SETG BLY-PRIVATELY-DELAY T>
|
||||||
|
<MOVE ,PRIVATE-MATTER ,GLOBAL-OBJECTS>
|
||||||
|
<TELL CR "Suddenly " D ,BLY " ">
|
||||||
|
<COND (<NOT <EQUAL? <META-LOC ,BLY> ,HERE>>
|
||||||
|
<MOVE ,BLY ,HERE>
|
||||||
|
<TELL "comes over and ">)>
|
||||||
|
<COND (<0? ,BLY-PRIVATELY-COUNT> <TELL "say">)
|
||||||
|
(T <TELL "repeat">)>
|
||||||
|
%<XTELL
|
||||||
|
"s, \"" FN ", can we discuss a " D ,PRIVATE-MATTER " now?\"">
|
||||||
|
<INC BLY-PRIVATELY-COUNT>
|
||||||
|
<COND (<NOT <YES?>> <QUEUE I-BLY-PRIVATELY 7 ;3> <RFALSE>)>
|
||||||
|
<ASK-BLY-ABOUT-PRIVATE-MATTER>
|
||||||
|
<RTRUE>>
|
||||||
|
|
||||||
|
<ROUTINE I-BLY-SAYS ("OPTIONAL" (ASKED? <>) "AUX" L)
|
||||||
|
<COND (.ASKED?
|
||||||
|
<QUEUE I-BLY-SAYS 0>)
|
||||||
|
(<READY-FOR-SNARK?>
|
||||||
|
<RFALSE>)
|
||||||
|
(<NOT-NOW?>
|
||||||
|
<SETG BLY-PRIVATELY-DELAY <>>
|
||||||
|
<QUEUE I-BLY-SAYS 7 ;3>
|
||||||
|
<RFALSE>)>
|
||||||
|
<SETG BLY-PRIVATELY-DELAY T>
|
||||||
|
<SET L <META-LOC ,BLY>>
|
||||||
|
<COND (<OR .ASKED?
|
||||||
|
<AND <EQUAL? .L ,BLY-OFFICE>
|
||||||
|
<EQUAL? .L ,HERE>>>
|
||||||
|
<COND (<NOT .ASKED?> <CRLF>)>
|
||||||
|
%<XTELL
|
||||||
|
"\"" FN ",\" says Zoe, \"we could be in danger!
|
||||||
|
The Snark may attack again any time! Would you answer some questions?\"">
|
||||||
|
<COND (<NOT <YES?>>
|
||||||
|
<COND (.ASKED? <RTRUE>)
|
||||||
|
(T <ENABLE <QUEUE I-BLY-SAYS 3>> <RFALSE>)>)>
|
||||||
|
%<XTELL
|
||||||
|
"\"Can you use the " D ,SUB " to hunt the " D ,GLOBAL-SNARK
|
||||||
|
", instead of waiting for it to attack?\"">
|
||||||
|
<COND (<YES?>
|
||||||
|
%<XTELL
|
||||||
|
"\"Do you wish to arm the " D ,SUB " for attacking?\"">
|
||||||
|
<COND (<YES?>
|
||||||
|
<TELL-HINT 73 ;22 ,CLAW <>>
|
||||||
|
<TELL-HINT 72 ;23 ,DART ;<>>
|
||||||
|
<COND (<NOT <==? ,HERE ,DOME-LAB>>
|
||||||
|
%<XTELL
|
||||||
|
"|
|
||||||
|
\"If you want to think it over, we should go to the " D ,DOME-LAB ". Shall we
|
||||||
|
go now?\"">
|
||||||
|
<COND (<YES?>
|
||||||
|
<TELL "\"Okay, let's go.\"|
|
||||||
|
|
|
||||||
|
">
|
||||||
|
<COND (<IN? ,BLACK-BOX ,BLY>
|
||||||
|
<MOVE ,BLACK-BOX ,HERE>)>
|
||||||
|
<SETG WINNER ,PLAYER>
|
||||||
|
<COND (<GOTO ,DOME-LAB>
|
||||||
|
<MOVE ,BLY ,DOME-LAB>)>)>)>)>)>
|
||||||
|
<RFATAL>)
|
||||||
|
(T
|
||||||
|
<ENABLE <QUEUE I-BLY-SAYS 3>>
|
||||||
|
<RFALSE>)>>
|
||||||
|
|
||||||
|
<GLOBAL TIP-SAYS-1 0>
|
||||||
|
<GLOBAL TIP-SAYS-2 0>
|
||||||
|
|
||||||
|
<ROUTINE I-TIP-SAYS ()
|
||||||
|
<COND (<AND <==? ,TIP-SAYS-2 ,MAGAZINE> <FSET? ,MAGAZINE ,TOUCHBIT>>
|
||||||
|
<RFALSE>)
|
||||||
|
(<AND ,TIP-SAYS-1 <EQUAL? <META-LOC ,MAGAZINE> ,SUB ,CRAWL-SPACE>>
|
||||||
|
<TELL-HINT ,TIP-SAYS-1 ,TIP-SAYS-2>)>>
|
||||||
|
|
||||||
|
<ROUTINE I-TIP-SONAR-PLAN ("AUX" P)
|
||||||
|
<COND (<FSET? ,TIP ,BUSYBIT>
|
||||||
|
<QUEUE I-TIP-SONAR-PLAN 3>
|
||||||
|
<RFALSE>)
|
||||||
|
(<READY-FOR-SNARK?>
|
||||||
|
<QUEUE I-TIP-SONAR-PLAN 0>
|
||||||
|
<RFALSE>)>
|
||||||
|
<SET P <FIND-FLAG ,HERE ,PERSON ,PLAYER>>
|
||||||
|
<COND (<NOT .P> <TIP-COMES>)
|
||||||
|
(<==? .P ,TIP>
|
||||||
|
<REMOVE ,PLAYER>
|
||||||
|
<SET P <FIND-FLAG ,HERE ,PERSON ,TIP>>
|
||||||
|
<MOVE ,PLAYER ,HERE>
|
||||||
|
<TIP-COMES .P>)
|
||||||
|
(T
|
||||||
|
<TIP-COMES T>)>>
|
||||||
|
|
||||||
|
<ROUTINE MIKE-1-F (OBJ "OPTIONAL" (FOO <>))
|
||||||
|
<COND (<NOT .FOO>
|
||||||
|
<TELL "\"Is " D .OBJ " a suspect?\"">)
|
||||||
|
(T
|
||||||
|
<TELL
|
||||||
|
"\"Do you think " D .OBJ " could be the " D ,TRAITOR "?\"" >)>>
|
||||||
|
|
||||||
|
<ROUTINE TIP-COMES ("OPTIONAL" (ALMOST <>))
|
||||||
|
<COND (<OR ,SIEGEL-TESTED <FSET? ,SIEGEL ,BUSYBIT>>
|
||||||
|
<RFALSE>)
|
||||||
|
(<OR ,GREENUP-ESCAPE ,GREENUP-TRAPPED ,GREENUP-CUFFED>
|
||||||
|
<RFALSE>)
|
||||||
|
(<OR <EQUAL? ,HERE ,SUB ,CRAWL-SPACE> <FSET? ,TIP ,BUSYBIT>>
|
||||||
|
<QUEUE I-TIP-SONAR-PLAN 3>
|
||||||
|
<RFALSE>)
|
||||||
|
(.ALMOST
|
||||||
|
<MOVE ,TIP ,HERE>
|
||||||
|
<SET ALMOST <GET <INT I-TIP-SONAR-PLAN> 1>>
|
||||||
|
<COND (<OR <G? .ALMOST -1>
|
||||||
|
<EQUAL? <MOD <- 0 .ALMOST> 7> 2>>
|
||||||
|
<TIP-SAYS T>
|
||||||
|
<TELL FN ", I'd like to talk with you alone.\"" CR>
|
||||||
|
<COND (<G? .ALMOST -1>
|
||||||
|
<QUEUE I-TIP-SONAR-PLAN -1>)>
|
||||||
|
<RTRUE>)
|
||||||
|
(T <RFALSE>)>)>
|
||||||
|
<QUEUE I-TIP-SONAR-PLAN 0>
|
||||||
|
<CRLF>
|
||||||
|
<COND (<NOT ,BLACK-BOX-EXAMINED> <TELL-HINT 11 ;13 ,BLACK-BOX>)>
|
||||||
|
<MOVE ,TIP ,HERE>
|
||||||
|
<TIP-SAYS T>
|
||||||
|
%<XTELL
|
||||||
|
FN ", did " D ,BLY " mention any troublemakers among the " D ,CREW "?\"">
|
||||||
|
<COND (<YES?>
|
||||||
|
<TELL
|
||||||
|
"\"Do you suspect " D ,ANTRIM " or " D ,HORVAK " or " D ,SIEGEL "?\"">
|
||||||
|
<COND (<YES?>
|
||||||
|
%<XTELL "\"Marv maintains the "D ,SONAR-EQUIPMENT",\" ">
|
||||||
|
<TIP-SAYS>
|
||||||
|
<TELL
|
||||||
|
"and we'll
|
||||||
|
need it to warn us if the " D ,SNARK " comes back. Didn't Zoe say something is
|
||||||
|
wrong with it?\"">
|
||||||
|
<COND (<YES?>
|
||||||
|
%<XTELL
|
||||||
|
"\"" FN ", do you think someone tampered with it?\"">
|
||||||
|
<COND (<YES?>
|
||||||
|
%<XTELL
|
||||||
|
"\"Does Marv suspect you've discovered signs of tampering?\"">
|
||||||
|
<COND (<NOT <YES?>>
|
||||||
|
<THIS-IS-IT ,TIP-IDEA>
|
||||||
|
%<XTELL
|
||||||
|
"\"Then I have an idea how to trap Marv and find out if he's the " D ,TRAITOR
|
||||||
|
"!\"" CR>)>)>)>)>)>
|
||||||
|
<RTRUE>>
|
||||||
|
|
||||||
|
<GLOBAL SIEGEL-TESTED <>>
|
||||||
|
|
||||||
|
<ROUTINE REACTION-MAY-BE (PER)
|
||||||
|
<TELL D .PER
|
||||||
|
"'s reaction may be all you need to prove he's NOT the " D ,TRAITOR ".
|
||||||
|
But you'll have to decide for yourself." CR>>
|
||||||
|
|
||||||
|
<ROUTINE SIEGEL-BOX ()
|
||||||
|
<TELL "It will modulate the sonar's ultrasonic pulses!\"" CR>>
|
||||||
|
|
||||||
|
<ROUTINE I-SIEGEL-REPORTS ()
|
||||||
|
<COND (,DOME-AIR-BAD?
|
||||||
|
<ENABLE <QUEUE I-SIEGEL-REPORTS 3>>
|
||||||
|
<RFALSE>)>
|
||||||
|
<FCLEAR ,SIEGEL ,BUSYBIT>
|
||||||
|
<COND (<NOT <IN? ,SIEGEL ,COMM-BLDG>> <RFALSE>)>
|
||||||
|
<MOVE-HERE-NOT-SUB ,SIEGEL>
|
||||||
|
<COND (<NOT <IN? ,BLACK-BOX ,SONAR-EQUIPMENT>>
|
||||||
|
%<XTELL
|
||||||
|
"Suddenly " D ,SIEGEL " reports: \"The " D ,SONAR-EQUIPMENT " looks okay
|
||||||
|
to me, "FN".\"" CR>
|
||||||
|
<RTRUE>)>
|
||||||
|
<COND (<EQUAL? ,HERE ,COMM-BLDG>
|
||||||
|
<TELL "Suddenly " D ,SIEGEL " turns to you">)
|
||||||
|
(T
|
||||||
|
<COND (<IN? ,TIP ,HERE>
|
||||||
|
<TIP-SAYS>
|
||||||
|
%<XTELL FN ", here comes Marv, and he looks excited!\"|
|
||||||
|
">)>
|
||||||
|
<TELL "Marv comes running up to you">)>
|
||||||
|
%<XTELL " with the " D ,BLACK-BOX " and says: \"Look">
|
||||||
|
<MOVE ,BLACK-BOX ,SIEGEL>
|
||||||
|
<COND (,SIEGEL-TESTED
|
||||||
|
<TELL
|
||||||
|
"! I found the same " D ,BLACK-BOX" on the " D ,SONAR-EQUIPMENT " again!\""
|
||||||
|
CR>)
|
||||||
|
(T
|
||||||
|
<SETG SIEGEL-TESTED T>
|
||||||
|
%<XTELL
|
||||||
|
" what I found attached to the " D ,SONAR-EQUIPMENT ", " FN "! ">
|
||||||
|
<SIEGEL-BOX>
|
||||||
|
<COND (<IN? ,TIP ,HERE>
|
||||||
|
<TIP-FLASHES>
|
||||||
|
<REACTION-MAY-BE ,SIEGEL>
|
||||||
|
%<XTELL
|
||||||
|
"|
|
||||||
|
Tip snaps his fingers and says: \"" FN "! Didn't that article in the "
|
||||||
|
D ,MAGAZINE "
|
||||||
|
say " D ,THORPE "'s synthetic sea creatures reacted to ultrasonic pulses in
|
||||||
|
a special way?\"">
|
||||||
|
<ENABLE <QUEUE I-TIP-PRIVATELY 1>>
|
||||||
|
<COND (<YES?> <TELL "\"That's what I thought.\"" CR>)
|
||||||
|
(T <TELL
|
||||||
|
"\"I think you should check that.\"" CR>)>)>)>
|
||||||
|
<RTRUE>>
|
||||||
|
|
||||||
|
<GLOBAL RECONSIDER? "\"I think you should reconsider.">
|
||||||
|
|
||||||
|
<ROUTINE I-TIP-PRIVATELY ()
|
||||||
|
<COND (<OR <READY-FOR-SNARK?>
|
||||||
|
,ANTRIM-CHECKED-SUB>
|
||||||
|
<QUEUE I-TIP-PRIVATELY 0>
|
||||||
|
<RFALSE>)
|
||||||
|
(<FSET? ,TIP ,BUSYBIT>
|
||||||
|
<ENABLE <QUEUE I-TIP-PRIVATELY 3>>
|
||||||
|
<RFALSE>)>
|
||||||
|
<MOVE ,TIP ,HERE>
|
||||||
|
%<XTELL
|
||||||
|
CR "Tip draws you aside. \"Could I speak to you privately, " FN "?\"">
|
||||||
|
<COND (<NOT <YES?>> <ENABLE <QUEUE I-TIP-PRIVATELY 3>> <RFALSE>)>
|
||||||
|
%<XTELL
|
||||||
|
"\"The Snark could be a synthetic monster created by " D ,THORPE "!\" he
|
||||||
|
says when you're alone. \"I read about them in that magazine. If I'm
|
||||||
|
right, whoever attached the " D ,BLACK-BOX " to the " D ,SONAR-EQUIPMENT
|
||||||
|
" could be working for Thorpe! That way the " D ,GLOBAL-SNARK
|
||||||
|
" would be lured into attacking the " D ,AQUADOME
|
||||||
|
"! Do you agree, " FN "?\"">
|
||||||
|
<COND (<NOT <YES?>>
|
||||||
|
<TELL ,RECONSIDER? "\"" CR>)>
|
||||||
|
<MIKE-1-F ,ANTRIM T>
|
||||||
|
<COND (<NOT <YES?>>
|
||||||
|
%<XTELL ,RECONSIDER? " In fact ">)
|
||||||
|
(T <TELL "\"Then ">)>
|
||||||
|
<TELL "why not test him">
|
||||||
|
<COND (,SIEGEL-TESTED
|
||||||
|
<TELL ", since you tested " D ,SIEGEL>)>
|
||||||
|
%<XTELL
|
||||||
|
"?\" Tip
|
||||||
|
asks. \"Mick is a laser expert in charge of maintenance on subs at the " D
|
||||||
|
,AQUADOME ".\"" CR>
|
||||||
|
<COND (<IN? ,PRIVATE-MATTER ,GLOBAL-OBJECTS>
|
||||||
|
<TELL-HINT 12 ;19 ,OVERHEATING <>>
|
||||||
|
<COND (,REGULATOR-MSG-SEEN
|
||||||
|
<TELL-HINT 43 ;20 ,ANTRIM <>>)>)>
|
||||||
|
<TELL-HINT 22 ;21 ,ANTRIM <>>>
|
||||||
|
|
||||||
|
<GLOBAL BLY-HEARD-ANTRIM <>>
|
||||||
|
<ROUTINE I-ANTRIM-TO-SUB ("OPTIONAL" (STR <>))
|
||||||
|
<COND (<READY-FOR-SNARK?>
|
||||||
|
<RFALSE>)
|
||||||
|
(,ANTRIM-CHECKED-SUB <RFALSE>)
|
||||||
|
(.STR T)
|
||||||
|
(<NOT-NOW? <>>
|
||||||
|
<QUEUE I-ANTRIM-TO-SUB 3>
|
||||||
|
<RFALSE>)>
|
||||||
|
<COND (<FSET? ,VOLTAGE-REGULATOR ,MUNGBIT>
|
||||||
|
<ENABLE <QUEUE I-ANTRIM-REPORTS 9>>)
|
||||||
|
(T
|
||||||
|
<ENABLE <QUEUE I-ANTRIM-REPORTS 19>>)>
|
||||||
|
<SETG ANTRIM-CHECKED-SUB T>
|
||||||
|
<COND (<IN? ,BLY ,HERE> <SETG BLY-HEARD-ANTRIM T>)>
|
||||||
|
<FSET ,ANTRIM ,BUSYBIT>
|
||||||
|
<COND (.STR <TELL .STR>)
|
||||||
|
(T
|
||||||
|
<TELL "|
|
||||||
|
Suddenly " D ,ANTRIM>
|
||||||
|
<COND (<NOT <IN? ,ANTRIM ,HERE>> <TELL " appears and">)>
|
||||||
|
<TELL
|
||||||
|
" says, \"I'm going to check out your new " D ,SUB ", ">)>
|
||||||
|
%<XTELL FN "!\" Mick turns and ">
|
||||||
|
<MOVE ,ANTRIM ,CRAWL-SPACE>
|
||||||
|
<FSET ,ENGINE-ACCESS-HATCH ,OPENBIT>
|
||||||
|
<COND (<EQUAL? ,HERE ,SUB ,CRAWL-SPACE>
|
||||||
|
<TELL "goes to work." CR>)
|
||||||
|
(<EQUAL? ,HERE ,AIRLOCK>
|
||||||
|
<TELL "climbs aboard the " D ,SUB "." CR>)
|
||||||
|
(T
|
||||||
|
;"<MOVE ,ANTRIM ,AIRLOCK>"
|
||||||
|
<TELL "hurries toward the " D ,AIRLOCK "." CR>)>>
|
||||||
|
|
||||||
|
<GLOBAL TIP-FLASHED <>>
|
||||||
|
<ROUTINE TIP-FLASHES ()
|
||||||
|
<COND (,TIP-FLASHED <TELL "Once again ">)>
|
||||||
|
<SETG TIP-FLASHED T>
|
||||||
|
%<XTELL "Tip flashes you a meaningful glance. ">>
|
||||||
|
|
||||||
|
<ROUTINE I-ANTRIM-REPORTS ()
|
||||||
|
;<COND (,DEBUG <TELL "[time for Mick to report?]" CR>)>
|
||||||
|
<COND (<OR ,DOME-AIR-BAD?
|
||||||
|
;"<EQUAL? ,HERE ,SUB ,CRAWL-SPACE ,AIRLOCK>">
|
||||||
|
<QUEUE I-ANTRIM-REPORTS 3>
|
||||||
|
<RFALSE>)>
|
||||||
|
<FCLEAR ,ANTRIM ,BUSYBIT>
|
||||||
|
<MOVE-HERE-NOT-SUB ,ANTRIM>
|
||||||
|
<CRLF>
|
||||||
|
<COND (,ASKED-ANTRIM
|
||||||
|
%<XTELL D ,ANTRIM " reports back ">
|
||||||
|
<COND (<EQUAL? ,HERE ,SUB ,AIRLOCK> <TELL "to you">)
|
||||||
|
(T <TELL "from the " D ,AIRLOCK>)>
|
||||||
|
<COND (<FSET? ,VOLTAGE-REGULATOR ,MUNGBIT>
|
||||||
|
%<XTELL ".|
|
||||||
|
\"I think I found your " D ,OVERHEATING " problem. The " D
|
||||||
|
,VOLTAGE-REGULATOR " was making the lasers overcharge.|
|
||||||
|
I've adjusted it, but I could replace it. Want me to?\"">
|
||||||
|
<COND (<YES?> <FCLEAR ,VOLTAGE-REGULATOR ,MUNGBIT>)>)
|
||||||
|
(T %<XTELL ", looking somewhat puzzled.|
|
||||||
|
\"" FN ", I ran the " D ,ENGINE " on full, but it didn't overheat.|
|
||||||
|
The " D ,VOLTAGE-REGULATOR " PROBABLY got out of adjustment and
|
||||||
|
overcharged the lasers, but it seems okay now. Just to be safe, I
|
||||||
|
installed a new " D ,VOLTAGE-REGULATOR ".|
|
||||||
|
">)>)
|
||||||
|
(T
|
||||||
|
<COND (<OR ,BLY-HEARD-ANTRIM
|
||||||
|
<EQUAL? ,HERE ,SUB ,BLY-OFFICE <LOC ,BLY>>>
|
||||||
|
<TELL "Suddenly ">)
|
||||||
|
(T
|
||||||
|
<MOVE-HERE-NOT-SUB ,BLY>
|
||||||
|
%<XTELL
|
||||||
|
D ,BLY " is approaching.|
|
||||||
|
\"" FN ", did you send " D ,ANTRIM " to work on the " D ,SUB "?\" she
|
||||||
|
asks. \"I was just ">
|
||||||
|
<COND (<NOT <EQUAL? ,HERE ,BLY-OFFICE>>
|
||||||
|
<TELL "in my office, ">)>
|
||||||
|
%<XTELL
|
||||||
|
"checking the " D ,STATION-MONITOR " to see what each of
|
||||||
|
the crew was doing, and I discovered Mick had gone to the " D ,AIRLOCK ".
|
||||||
|
When I saw him on the " D ,STATION-MONITOR ",
|
||||||
|
he had just come out of the " D ,SUB "'s hatch.|
|
||||||
|
Wait -- here he is now!\"|
|
||||||
|
">)>
|
||||||
|
<TELL
|
||||||
|
"Mick appears and says, \"I thought maybe you had a problem on the way
|
||||||
|
here, " FN ", so I wanted to check on it. Everything seems to be okay
|
||||||
|
now.\"" CR>)>
|
||||||
|
<TIP-FLASHES>
|
||||||
|
<COND (<FSET? ,VOLTAGE-REGULATOR ,MUNGBIT>
|
||||||
|
<SETG TEST-BUTTON-READOUT ,TEST-BUTTON-NORMAL>
|
||||||
|
%<XTELL
|
||||||
|
"It now looks as though " D ,ANTRIM " can be eliminated as the " D ,TRAITOR ",
|
||||||
|
but you'll want to confirm this by pushing the " D ,TEST-BUTTON
|
||||||
|
" before you set out again in the " D ,SUB ".|
|
||||||
|
">)
|
||||||
|
(T <REACTION-MAY-BE ,ANTRIM>)>
|
||||||
|
<FCLEAR ,VOLTAGE-REGULATOR ,MUNGBIT>
|
||||||
|
<COND (<READY-FOR-SNARK?>
|
||||||
|
<RTRUE>)>
|
||||||
|
<COND (<IN? ,ESCAPE-POD-UNIT ,SUB> <RTRUE>)>
|
||||||
|
%<XTELL CR D ,ANTRIM
|
||||||
|
" turns away, then stops and says:|
|
||||||
|
\"" FN ", there's no " D ,ESCAPE-POD-UNIT "
|
||||||
|
under your seats in the " D ,SUB ". I hear you're planning a new type
|
||||||
|
of unit for the Ultramarine Bioceptor. But the standard unit will fit,
|
||||||
|
and we have one in the " D ,DOME-STORAGE ".|
|
||||||
|
Would you like one installed, just in case? " D ,GREENUP " and " D ,LOWELL
|
||||||
|
" could do it in a few minutes. Shall I tell 'em to?\"">
|
||||||
|
<COND (<YES?>
|
||||||
|
<MOVE ,ANTRIM <META-LOC ,LOWELL>>
|
||||||
|
<INSTALL-ESCAPE-POD-UNIT ,ANTRIM>
|
||||||
|
<RTRUE>)>
|
||||||
|
<TELL "\"I sure hope you don't need it.\"" CR>>
|
||||||
|
|
||||||
|
<ROUTINE INSTALL-ESCAPE-POD-UNIT (PER "AUX" (X <>))
|
||||||
|
<TELL "\"Okay">
|
||||||
|
<COND (<EQUAL? ,HERE <LOC ,LOWELL> <LOC ,GREENUP>>
|
||||||
|
<TELL ", we'll install it">)>
|
||||||
|
<TELL ".\"" CR>
|
||||||
|
<COND (<AND <EQUAL? <LOC ,SYRINGE>
|
||||||
|
,LOWELL ,GREENUP ,ESCAPE-POD-UNIT>
|
||||||
|
<SET X T>
|
||||||
|
<EQUAL? <LOC ,ESCAPE-POD-UNIT>
|
||||||
|
,LOWELL ,GREENUP ,DOME-STORAGE>>
|
||||||
|
<SCORE-OBJ ,ESCAPE-POD-UNIT>
|
||||||
|
<MOVE ,GREENUP ,SUB ;",AIRLOCK">
|
||||||
|
<MOVE ,LOWELL ,SUB ;",AIRLOCK">
|
||||||
|
<FSET ,GREENUP ,BUSYBIT>
|
||||||
|
<FSET ,LOWELL ,BUSYBIT>
|
||||||
|
<MOVE ,ESCAPE-POD-UNIT ,LOWELL>
|
||||||
|
<MOVE ,SYRINGE ,GREENUP>
|
||||||
|
<FSET ,SYRINGE ,MUNGBIT>
|
||||||
|
<ENABLE <QUEUE I-LOWELL-REPORTS 12>>)
|
||||||
|
(T
|
||||||
|
<TELL "But ">
|
||||||
|
<HE-SHE-IT .PER>
|
||||||
|
<MOVE .PER ,HERE>
|
||||||
|
<TELL
|
||||||
|
" returns a moment later and says, \"We can't find the ">
|
||||||
|
<COND (.X <TELL D ,ESCAPE-POD-UNIT>) (T <TELL D ,SYRINGE>)>
|
||||||
|
<TELL ".\"" CR>)>>
|
||||||
|
|
||||||
|
<ROUTINE I-LOWELL-REPORTS ()
|
||||||
|
<COND (<NOT-NOW? <>>
|
||||||
|
<QUEUE I-LOWELL-REPORTS 3>
|
||||||
|
<RFALSE>)>
|
||||||
|
<MOVE ,ESCAPE-POD-UNIT ,SUB>
|
||||||
|
<FCLEAR ,ESCAPE-POD-UNIT ,TAKEBIT>
|
||||||
|
<FSET ,ESCAPE-POD-UNIT ,OPENBIT>
|
||||||
|
<MOVE ,SYRINGE ,ESCAPE-POD-UNIT>
|
||||||
|
<SETG TEST-BUTTON-READOUT ,TEST-BUTTON-POD>
|
||||||
|
<MOVE ,GREENUP ,HERE>
|
||||||
|
<MOVE ,LOWELL ,HERE>
|
||||||
|
<FCLEAR ,GREENUP ,BUSYBIT>
|
||||||
|
<FCLEAR ,LOWELL ,BUSYBIT>
|
||||||
|
%<XTELL "|
|
||||||
|
Suddenly " D ,GREENUP " and " D ,LOWELL " report back from the ">
|
||||||
|
<COND (<EQUAL? ,HERE ,AIRLOCK> <TELL D ,SUB>)
|
||||||
|
(T <TELL D ,AIRLOCK>)>
|
||||||
|
%<XTELL
|
||||||
|
".|
|
||||||
|
\"That " D ,ESCAPE-POD-UNIT " is in place, " FN ",\" says Amy. \"Bill
|
||||||
|
installed the part under your pilot's seat, and I installed the rest.\"" CR>>
|
||||||
|
|
||||||
|
<GLOBAL GREENUP-GUILT <>>
|
||||||
|
<ROUTINE I-ANALYSIS ()
|
||||||
|
<FCLEAR ,HORVAK ,BUSYBIT>
|
||||||
|
<FSET ,SYRINGE ,TAKEBIT>
|
||||||
|
<COND (<MOVE-HERE-NOT-SUB ,HORVAK>
|
||||||
|
<CRLF>
|
||||||
|
<COND (<NOT <FSET? ,SYRINGE ,MUNGBIT>>
|
||||||
|
<TELL
|
||||||
|
"Suddenly " D ,HORVAK " appears. \"I couldn't find anything unusual
|
||||||
|
about the " D ,SYRINGE ".\"" CR>)
|
||||||
|
(T
|
||||||
|
<SETG GREENUP-GUILT T>
|
||||||
|
%<XTELL
|
||||||
|
D ,HORVAK "'s face is grim and pale as he reports the result of his
|
||||||
|
analysis.|
|
||||||
|
">
|
||||||
|
<PERFORM ,V?ASK-ABOUT ,HORVAK ,SYRINGE>
|
||||||
|
<COND (<IN? ,TIP ,HERE>
|
||||||
|
%<XTELL "|
|
||||||
|
Tip turns to you with a gasp. \"Holy smoke, " FN "! That's exactly what
|
||||||
|
would have happened once you warmed up the pilot's seat enough to
|
||||||
|
trigger the sensor relay!\"" CR>)>)>)
|
||||||
|
(T
|
||||||
|
<QUEUE I-ANALYSIS 2>
|
||||||
|
<RFALSE>)>>
|
||||||
|
|
||||||
|
<ROUTINE I-SYNTHESIS ()
|
||||||
|
<FCLEAR ,HORVAK ,BUSYBIT>
|
||||||
|
<MOVE ,DART ,HORVAK>
|
||||||
|
<FCLEAR ,DART ,TRYTAKEBIT>
|
||||||
|
<FSET ,DART ,TAKEBIT>
|
||||||
|
<FCLEAR ,DART ,NDESCBIT>
|
||||||
|
<FCLEAR ,DART ,MUNGBIT> ;"indicates dart fixed"
|
||||||
|
<THIS-IS-IT ,DART>
|
||||||
|
<SAID-TO ,HORVAK>
|
||||||
|
<TELL "Doc Horvak ">
|
||||||
|
<MOVE-HERE-NOT-SUB ,HORVAK "is now" "now comes rushing back,">
|
||||||
|
%<XTELL " holding an aquatic dart gun. ">
|
||||||
|
<COND (<NOT <IN? ,HORVAK ,HERE>> <TELL "He shouts from outside, ">)>
|
||||||
|
%<XTELL "\"Okay, "
|
||||||
|
FN ", I've made a special 'trank' to use against an AH-type organism!
|
||||||
|
It's loaded in the dart gun. What shall I do with it?\"" CR>
|
||||||
|
<SCORE-OBJ ,DART>
|
||||||
|
<RTRUE>>
|
||||||
|
|
||||||
|
<ROUTINE MOVE-HERE-NOT-SUB (PER "OPTIONAL" (HERE-STR <>) (NOT-HERE-STR <>))
|
||||||
|
<COND (<IN? .PER ,HERE>
|
||||||
|
<COND (.HERE-STR <TELL .HERE-STR>)>
|
||||||
|
<RTRUE>)>
|
||||||
|
<COND (<AND ;"<NOT <FSET? ,AIRLOCK-ROOF ,OPENBIT>>"
|
||||||
|
<THROUGH-ROOF? <LOC .PER>>>
|
||||||
|
<FSET ,AIRLOCK-ROOF ,OPENBIT>)>
|
||||||
|
<COND (<EQUAL? .PER ,SHARON>
|
||||||
|
<FCLEAR ,SHARON ,NDESCBIT>
|
||||||
|
<FCLEAR ,FILE-DRAWER ,NDESCBIT>
|
||||||
|
<FCLEAR ,PAPERS ,NDESCBIT>)>
|
||||||
|
<COND (.NOT-HERE-STR <TELL .NOT-HERE-STR>)>
|
||||||
|
<COND (<EQUAL? ,HERE ,CRAWL-SPACE ,SUB>
|
||||||
|
<COND (,SUB-IN-TANK <MOVE .PER ,NORTH-TANK-AREA>)
|
||||||
|
(T <MOVE .PER ,AIRLOCK>)>
|
||||||
|
<RFALSE>)
|
||||||
|
(T <MOVE .PER ,HERE>)>>
|
||||||
|
|
||||||
|
<ROUTINE I-GREENUP-ESCAPE ()
|
||||||
|
<ENABLE <QUEUE I-GREENUP-ESCAPE -1>>
|
||||||
|
<SETG GREENUP-ESCAPE <+ 1 ,GREENUP-ESCAPE>>
|
||||||
|
<COND (<EQUAL? 3 ,GREENUP-ESCAPE>
|
||||||
|
<MOVE ,GREENUP ,AIRLOCK>
|
||||||
|
%<XTELL CR
|
||||||
|
"Greenup has reached the top of the wall and is climbing down the ladder
|
||||||
|
into the " D ,AIRLOCK ". In a moment he'll reach the floor
|
||||||
|
and head for the " D ,SUB "." CR>)
|
||||||
|
(<EQUAL? 4 ,GREENUP-ESCAPE>
|
||||||
|
%<XTELL CR
|
||||||
|
"Greenup is scrambling aboard the " D ,SUB ". Tip groans.
|
||||||
|
\"There's no way to stop him now, " FN "! All he has to do is
|
||||||
|
open the " D ,AIRLOCK-HATCH " and shove off!\"" CR>
|
||||||
|
<TELL-HINT 52 ;14 ,AIRLOCK-ELECTRICITY <>>
|
||||||
|
<RTRUE>)
|
||||||
|
(<EQUAL? 9 ,GREENUP-ESCAPE>
|
||||||
|
<FCLEAR ,AIRLOCK-ROOF ,OPENBIT>
|
||||||
|
<FSET ,AIRLOCK-HATCH ,OPENBIT>
|
||||||
|
<SETG AIRLOCK-FULL T>
|
||||||
|
<QUEUE I-SNARK-ATTACKS 1>
|
||||||
|
%<XTELL
|
||||||
|
"|
|
||||||
|
Better not raise any false hopes. As the " D ,SUB " glides out,
|
||||||
|
a pall of gloom settles over the " D ,AQUADOME ". All
|
||||||
|
hands sense that there's little hope, that Greenup has
|
||||||
|
scuttled their last chance of fighting off another attack by the " D ,GLOBAL-SNARK ".|
|
||||||
|
A " D ,VIDEOPHONE " call to " D ,IU-GLOBAL " confirms that no other subs are
|
||||||
|
available for a rescue expedition, even if there were time. And a
|
||||||
|
general S.O.S. to any craft in the vicinity isn't answered.">
|
||||||
|
<FINISH>)>
|
||||||
|
<RFALSE>>
|
||||||
|
|
||||||
|
<ROUTINE GREENUP-CUFF ()
|
||||||
|
<SETG GREENUP-ESCAPE 0>
|
||||||
|
<SETG GREENUP-TRAPPED <>>
|
||||||
|
<QUEUE I-GREENUP-ESCAPE 0>
|
||||||
|
<MOVE ,GREENUP ,GALLEY>
|
||||||
|
<FSET ,GREENUP ,MUNGBIT>
|
||||||
|
<SETG GREENUP-CUFFED T>
|
||||||
|
%<XTELL
|
||||||
|
"Knowing he's trapped, " D ,GREENUP " gives up without a fight. " D ,BLY
|
||||||
|
" orders him handcuffed to a pipe in the " D ,GALLEY "." CR>
|
||||||
|
<SCORE-OBJ ,GLOBAL-GREENUP>
|
||||||
|
<RTRUE>>
|
||||||
|
|
||||||
|
<ROUTINE I-POISON-JAB ()
|
||||||
|
<COND (<AND <EQUAL? ,HERE ,SUB>
|
||||||
|
<IN? ,ESCAPE-POD-UNIT ,SUB>
|
||||||
|
<FSET? ,SYRINGE ,MUNGBIT>
|
||||||
|
<IN? ,SYRINGE ,ESCAPE-POD-UNIT>>
|
||||||
|
%<XTELL CR
|
||||||
|
"A sudden jab in your right buttock makes you realize that the "
|
||||||
|
D ,SYRINGE " in the " D ,ESCAPE-POD-UNIT " has been activated, even though
|
||||||
|
no alarm sounded.|
|
||||||
|
You realize that the " D ,SYRINGE " did NOT contain a stimulant.
|
||||||
|
Instead of feeling more alert, you're already feeling doomed.|
|
||||||
|
The truth is that you have been fatally poisoned, and the promising
|
||||||
|
career of a brilliant young inventor will be cut short.|
|
||||||
|
An investigation into your death would reveal that the " D ,ESCAPE-POD-UNIT
|
||||||
|
" under your seat had been tampered with.|
|
||||||
|
A body-heat sensor had been substituted for the electronic
|
||||||
|
monitor, and a wire was connected from the sensor to the "
|
||||||
|
D ,SYRINGE ". The stimulant in the "
|
||||||
|
D ,SYRINGE " had been replaced with arsenic stolen from the "
|
||||||
|
D ,CHEMICAL-SUPPLY-SHELVES " of the " D ,DOME-LAB ".|
|
||||||
|
As soon as you heated up your pilot's seat, the sensor
|
||||||
|
triggered the " D ,SYRINGE ", and it injected you with the poison.|
|
||||||
|
Most regrettable!">
|
||||||
|
<FINISH>)>>
|
||||||
|
|
||||||
|
<ROUTINE I-TIP-REPORTS ("AUX" B D)
|
||||||
|
<COND (<OR <FSET? ,BLY ,MUNGBIT>
|
||||||
|
;"<EQUAL? ,HERE ,CRAWL-SPACE ,SUB>">
|
||||||
|
<QUEUE I-TIP-REPORTS 3>
|
||||||
|
<RFALSE>)>
|
||||||
|
<COND (<EQUAL? ,HERE ,CRAWL-SPACE> <MOVE ,TIP ,SUB>)
|
||||||
|
(T <MOVE ,TIP ,HERE>)>
|
||||||
|
<FCLEAR ,TIP ,BUSYBIT>
|
||||||
|
<SETG TIP-FOLLOWS-YOU? T>
|
||||||
|
<SETG FINE-SONAR T>
|
||||||
|
<MOVE ,FINE-GRID ,SUB>
|
||||||
|
<FCLEAR ,FINE-GRID ,TAKEBIT>
|
||||||
|
<TIP-SAYS>
|
||||||
|
<TELL
|
||||||
|
"All set, "FN"! The " D ,FINE-GRID
|
||||||
|
" is installed on both the " D ,SONARSCOPE " and the " D ,THROTTLE>
|
||||||
|
<SET B <==? ,BAZOOKA <GET ,ON-SUB 0>>>
|
||||||
|
<SET D <==? ,DART <GET ,ON-SUB 1>>>
|
||||||
|
<COND (<OR .B .D>
|
||||||
|
<TELL " -- and so ">
|
||||||
|
<COND (<AND .B .D> <TELL "are">)
|
||||||
|
(T <TELL "is">)>
|
||||||
|
<COND (.D <TELL " the " D ,DART>)>
|
||||||
|
<COND (<AND .B .D> <TELL " and">)>
|
||||||
|
<COND (.B <TELL " the " D ,BAZOOKA>)>)>
|
||||||
|
%<XTELL "! Let's shove off and find the " D ,GLOBAL-SNARK "!\"" CR>>
|
||||||
|
|
||||||
|
<GLOBAL SNARK-ATTACK-COUNT 0>
|
||||||
|
|
||||||
|
<ROUTINE I-SNARK-ATTACKS ()
|
||||||
|
<COND (<0? ,SNARK-ATTACK-COUNT>
|
||||||
|
<COND (<NOT ,SUB-IN-DOME>
|
||||||
|
<COND (<OR <==? ,JOYSTICK-DIR ,P?SE>
|
||||||
|
<AND <NOT <L? ,SONAR-RANGE <ABS ,SUB-LON>>>
|
||||||
|
<NOT <L? ,SONAR-RANGE <ABS ,SUB-LAT>>>>>
|
||||||
|
<QUEUE I-SNARK-ATTACKS 3>
|
||||||
|
<RFALSE>)>
|
||||||
|
%<XTELL "A call comes on the "> ;"[more?]"
|
||||||
|
<COND (<EQUAL? ,HERE ,SUB ,CRAWL-SPACE>
|
||||||
|
<TELL D ,SONARPHONE>)
|
||||||
|
(T <TELL D ,VIDEOPHONE>)>
|
||||||
|
%<XTELL
|
||||||
|
" from the " D ,AQUADOME": the " D ,GLOBAL-SNARK
|
||||||
|
" is attacking and destroying it! You're too late!|
|
||||||
|
|
|
||||||
|
You'll probably do better if you restart and use fewer turns next time.">
|
||||||
|
<FINISH>)
|
||||||
|
(T <ENABLE <QUEUE I-SNARK-ATTACKS -1>>)>)>
|
||||||
|
<INC SNARK-ATTACK-COUNT>
|
||||||
|
<COND (<==? 1 ,SNARK-ATTACK-COUNT>
|
||||||
|
<MOVE ,SIEGEL ,COMM-BLDG>
|
||||||
|
<MOVE ,TIP ,HERE>
|
||||||
|
%<XTELL
|
||||||
|
"|
|
||||||
|
Suddenly an alarm rings through the " D ,AQUADOME "! " D ,SIEGEL " yells
|
||||||
|
over the squawk box:|
|
||||||
|
\"Now hear this! Two blips have appeared on the " D ,SONAR-EQUIPMENT
|
||||||
|
"! No definite form, but they're large, and they're coming closer."
|
||||||
|
"\"|
|
||||||
|
">
|
||||||
|
<COND (T ;"<IN? ,TIP ,HERE>"
|
||||||
|
<TIP-SAYS>
|
||||||
|
<TELL "One of them must be the " D ,GLOBAL-SNARK "!\" ">)>
|
||||||
|
<COND (<EQUAL? ,HERE ,SUB ,CRAWL-SPACE ,AIRLOCK>
|
||||||
|
<COND (<FSET? ,AIRLOCK-HATCH ,OPENBIT>
|
||||||
|
<FCLEAR ,AIRLOCK-HATCH ,OPENBIT>
|
||||||
|
%<XTELL
|
||||||
|
"The " D ,AIRLOCK-HATCH " closes in defense.">)>)
|
||||||
|
(T
|
||||||
|
<COND (<GLOBAL-IN? ,WINDOW ,HERE>
|
||||||
|
<TELL "\"Look out the ">)
|
||||||
|
(T <TELL "\"Let's find a ">)>
|
||||||
|
<TELL D ,WINDOW ", "FN"!\"">)>
|
||||||
|
<CRLF>
|
||||||
|
<RFATAL>)
|
||||||
|
(<==? 2 ,SNARK-ATTACK-COUNT>
|
||||||
|
%<XTELL
|
||||||
|
"|
|
||||||
|
Even as you try this, the undersea nightmare takes shape!|
|
||||||
|
\"Holy spaghetti! LOOK at that thing!\" cries Tip.|
|
||||||
|
A hideous creature, with bulblike eyes near its snout, rears out of the
|
||||||
|
murk, its tentacles flailing the " D ,GLOBAL-WATER "! In this moment of
|
||||||
|
terror, the " D ,GLOBAL-SNARK " seems as big as a house,
|
||||||
|
and it's just outside the " D ,AQUADOME "!" CR>
|
||||||
|
<RFATAL>)
|
||||||
|
(<==? 3 ,SNARK-ATTACK-COUNT>
|
||||||
|
%<XTELL
|
||||||
|
"|
|
||||||
|
No more time for that! The " D ,SNARK " has flopped down on the " D
|
||||||
|
,AQUADOME "!
|
||||||
|
There's a sound like thunder as the plastic hemisphere cracks
|
||||||
|
under the impact! The crew's screams of fear are drowned by the roar of
|
||||||
|
the sea!|
|
||||||
|
The Atlantic Ocean is pouring into the " D ,AQUADOME "! And
|
||||||
|
your last thought, before a zillion tons of " D ,GLOBAL-WATER " crushes you
|
||||||
|
to jelly, is
|
||||||
|
\"Oh gosh! I wonder if I shut off the Bunsen burner in the lab?\"">
|
||||||
|
<FINISH>)>>
|
1173
global.zap
Normal file
1173
global.zap
Normal file
File diff suppressed because it is too large
Load diff
1387
global.zil
Normal file
1387
global.zil
Normal file
File diff suppressed because it is too large
Load diff
49
j1.zap
Normal file
49
j1.zap
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
|
||||||
|
.INSERT "J1DAT" ; DATA IS IN THIS FILE
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "MACROS"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "SYNTAX"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "MAIN"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "SUB"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "BATTLE"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "THINGS"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "DOME"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "PEOPLE"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "PLACES"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "GLOBAL"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "CLOCK"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "PARSER"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "VERBS"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "EVENTS"
|
||||||
|
|
||||||
|
|
||||||
|
.INSERT "J1STR"
|
||||||
|
|
||||||
|
.END
|
55
j1.zil
Normal file
55
j1.zil
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
"COMPILE/LOAD FILE for SEASTALKER
|
||||||
|
Copyright (C) 1984 Infocom, Inc. All rights reserved."
|
||||||
|
|
||||||
|
<COND (<GASSIGNED? PREDGEN>
|
||||||
|
<PRINC "Compiling">
|
||||||
|
<ID 0>)
|
||||||
|
(T <PRINC "Loading">)>
|
||||||
|
|
||||||
|
<PRINC " SEASTALKER: junior-level interactive fiction from Infocom!">
|
||||||
|
|
||||||
|
<BLOAT 90000 0 0 3500 0 0 0 0 0 512>
|
||||||
|
|
||||||
|
<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?>>
|
||||||
|
|
||||||
|
;<DIRECTIONS NORTH SOUTH EAST WEST NE NW SE SW UP DOWN IN OUT>
|
||||||
|
<DIRECTIONS ;"Do not change the order of the first eight
|
||||||
|
without consulting MARC! -- ENCHANTER"
|
||||||
|
NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
|
||||||
|
|
||||||
|
<IFILE "MACROS" T>
|
||||||
|
<IFILE "SYNTAX" T>
|
||||||
|
<IFILE "MAIN" T>
|
||||||
|
|
||||||
|
<COND (<GASSIGNED? PREDGEN>
|
||||||
|
<IFILE "SUB" T>
|
||||||
|
<IFILE "BATTLE" T>
|
||||||
|
<IFILE "THINGS" T>
|
||||||
|
<IFILE "DOME" T>)>
|
||||||
|
|
||||||
|
<IFILE "PEOPLE" T>
|
||||||
|
<IFILE "PLACES" T>
|
||||||
|
<IFILE "GLOBAL" T>
|
||||||
|
|
||||||
|
<PROPDEF SIZE 5>
|
||||||
|
<PROPDEF CAPACITY 0>
|
||||||
|
|
||||||
|
<IFILE "CLOCK" T>
|
||||||
|
<ENDLOAD>
|
||||||
|
<IFILE "PARSER" T>
|
||||||
|
<IFILE "VERBS" T>
|
||||||
|
<COND (<GASSIGNED? PREDGEN> <IFILE "EVENTS" T>)>
|
||||||
|
|
||||||
|
<GC-MON T>
|
||||||
|
<GC 0 T 5>
|
||||||
|
|
||||||
|
<COND (<NOT <GASSIGNED? PREDGEN>>
|
||||||
|
<CLOSE!- ,XTELLCHAN>)>
|
216
j1str.zap
Normal file
216
j1str.zap
Normal file
|
@ -0,0 +1,216 @@
|
||||||
|
|
||||||
|
|
||||||
|
; STRINGS ARE DEFINED HERE
|
||||||
|
|
||||||
|
.GSTR STR?1,"You ought to be ashamed of yourself!"
|
||||||
|
.GSTR STR?2,"Hey, save that talk for the locker room!"
|
||||||
|
.GSTR STR?3,"Step outside and say that!"
|
||||||
|
.GSTR STR?4,"And so's your old man!"
|
||||||
|
.GSTR STR?5,"Please type your first name."
|
||||||
|
.GSTR STR?6,"Now type your last name."
|
||||||
|
.GSTR STR?7,"Not Here"
|
||||||
|
.GSTR STR?8,"Actor"
|
||||||
|
.GSTR STR?9,"Room (M-BEG)"
|
||||||
|
.GSTR STR?10,"Preaction"
|
||||||
|
.GSTR STR?11,"PRSI"
|
||||||
|
.GSTR STR?12,"Container"
|
||||||
|
.GSTR STR?13,"PRSO"
|
||||||
|
.GSTR STR?14,"Room (M-END)"
|
||||||
|
.GSTR STR?15,"This is your revolutionary new Ultramarine Bioceptor, named the SCIMITAR."
|
||||||
|
.GSTR STR?16,"too far away"
|
||||||
|
.GSTR STR?17,"closed"
|
||||||
|
.GSTR STR?18,"not close enough to the claw"
|
||||||
|
.GSTR STR?19,"take"
|
||||||
|
.GSTR STR?20,"push"
|
||||||
|
.GSTR STR?21,"east"
|
||||||
|
.GSTR STR?22,"south"
|
||||||
|
.GSTR STR?23,"open"
|
||||||
|
.GSTR STR?24,"under water"
|
||||||
|
.GSTR STR?25,"clean enough"
|
||||||
|
.GSTR STR?26,"The space is dimly illuminated by small work lights, but you can see machinery everywhere."
|
||||||
|
.GSTR STR?27,"The only way out is ""OUT""."
|
||||||
|
.GSTR STR?28,"(You'll find that information in your SEASTALKER package.)"
|
||||||
|
.GSTR STR?29,"fixed"
|
||||||
|
.GSTR STR?30,"orange"
|
||||||
|
.GSTR STR?31,"red"
|
||||||
|
.GSTR STR?32,"changes to orange"
|
||||||
|
.GSTR STR?33,"fades to dark again"
|
||||||
|
.GSTR STR?34,"turns red"
|
||||||
|
.GSTR STR?35,"continues to sound."
|
||||||
|
.GSTR STR?36,"ceases."
|
||||||
|
.GSTR STR?37,"rises to a shriller whine."
|
||||||
|
.GSTR STR?38,"Sonar shows the object reaching from the surface of the bay downward to a depth of 10 meters. This must be the keel of a freighter entering the harbor. It's moving toward the waterfront at the rate of 1 sea square per turn."
|
||||||
|
.GSTR STR?39,"The yellow light on the sonarscope continues to glow."
|
||||||
|
.GSTR STR?40,"The red light on the sonarscope continues to glow, and the buzzer also continues to sound."
|
||||||
|
.GSTR STR?41,"looking at it"
|
||||||
|
.GSTR STR?42,"set to automatic"
|
||||||
|
.GSTR STR?43,"set to manual"
|
||||||
|
.GSTR STR?44,"off"
|
||||||
|
.GSTR STR?45,"n"
|
||||||
|
.GSTR STR?46,"ff"
|
||||||
|
.GSTR STR?47,"on"
|
||||||
|
.GSTR STR?48,"start"
|
||||||
|
.GSTR STR?49,"turned on"
|
||||||
|
.GSTR STR?50,"stop"
|
||||||
|
.GSTR STR?51,"slow"
|
||||||
|
.GSTR STR?52,"medium"
|
||||||
|
.GSTR STR?53,"fast"
|
||||||
|
.GSTR STR?54,"submerge"
|
||||||
|
.GSTR STR?55,"here"
|
||||||
|
.GSTR STR?56,"at that depth"
|
||||||
|
.GSTR STR?57,"There's a dart gun here."
|
||||||
|
.GSTR STR?58,"find"
|
||||||
|
.GSTR STR?59,"mounted"
|
||||||
|
.GSTR STR?60,"aim"
|
||||||
|
.GSTR STR?61,"in the way"
|
||||||
|
.GSTR STR?62,"The bazooka is mounted on a claw."
|
||||||
|
.GSTR STR?63,"The dart is mounted on a claw."
|
||||||
|
.GSTR STR?64,"ask"
|
||||||
|
.GSTR STR?65,"shout"
|
||||||
|
.GSTR STR?66,"There's a bazooka here."
|
||||||
|
.GSTR STR?67,"""It's sensitive to the signals on its RIGHT side. Thorpe has installed a sonar transducer on the LEFT or PORT side of this sub. He has to stay on the same side of the monster all the time."""
|
||||||
|
.GSTR STR?68,"Sharon says, ""Notice how we keep 5 meters to the monster's right and 5 meters behind its nose. The Sea Cat is programmed that way, so the signals reach the monster with enough strength to keep it in control."""
|
||||||
|
.GSTR STR?69,"Undersea Research Station"
|
||||||
|
.GSTR STR?70,"empty"
|
||||||
|
.GSTR STR?71,"full"
|
||||||
|
.GSTR STR?72,"full of people"
|
||||||
|
.GSTR STR?73,"You can go down to the north or south."
|
||||||
|
.GSTR STR?74,"say"
|
||||||
|
.GSTR STR?75,"On each side"
|
||||||
|
.GSTR STR?76,"In each corner"
|
||||||
|
.GSTR STR?77,"refuse"
|
||||||
|
.GSTR STR?78,"other "
|
||||||
|
.GSTR STR?79,"the "
|
||||||
|
.GSTR STR?80,"It's stamped: ""AIR SUPPLY SYSTEM / Fram Bolt Wrench."""
|
||||||
|
.GSTR STR?81,"It has screw threads."
|
||||||
|
.GSTR STR?82,"It's sitting neatly in place."
|
||||||
|
.GSTR STR?83,"ea"
|
||||||
|
.GSTR STR?84,"we"
|
||||||
|
.GSTR STR?85,"nor"
|
||||||
|
.GSTR STR?86,"sou"
|
||||||
|
.GSTR STR?87,"looking out"
|
||||||
|
.GSTR STR?88,"playing with"
|
||||||
|
.GSTR STR?89,"""I can't help you there."""
|
||||||
|
.GSTR STR?90,"""That has nothing to do with me."""
|
||||||
|
.GSTR STR?91,"is "
|
||||||
|
.GSTR STR?92,"at "
|
||||||
|
.GSTR STR?93,"working on the SCIMITAR"
|
||||||
|
.GSTR STR?94,"""Wilco, "
|
||||||
|
.GSTR STR?95,"working on the sonar equipment"
|
||||||
|
.GSTR STR?96,"""If you think that will help, do it!"""
|
||||||
|
.GSTR STR?97,"""I think you can do that better yourself."""
|
||||||
|
.GSTR STR?98,"the bottom"
|
||||||
|
.GSTR STR?99,"an obstacle"
|
||||||
|
.GSTR STR?100,"looking at you anxiously"
|
||||||
|
.GSTR STR?101,"collapsing on the floor"
|
||||||
|
.GSTR STR?102,"recovering from collapse"
|
||||||
|
.GSTR STR?103,"using Oxygen Gear"
|
||||||
|
.GSTR STR?104,"north"
|
||||||
|
.GSTR STR?105,"west"
|
||||||
|
.GSTR STR?106,"northwest"
|
||||||
|
.GSTR STR?107,"northeast"
|
||||||
|
.GSTR STR?108,"southwest"
|
||||||
|
.GSTR STR?109,"southeast"
|
||||||
|
.GSTR STR?110,"downstairs"
|
||||||
|
.GSTR STR?111,"upstairs"
|
||||||
|
.GSTR STR?112,"in"
|
||||||
|
.GSTR STR?113,"out"
|
||||||
|
.GSTR STR?114,"A circuit breaker is open on the Electrical Panel."
|
||||||
|
.GSTR STR?115,"There's so much junk in here that there's barely enough room for you."
|
||||||
|
.GSTR STR?116,"The file drawer is filled with a lot of business papers."
|
||||||
|
.GSTR STR?117,"Screenplay by Jim Lawrence
|
||||||
|
"
|
||||||
|
.GSTR STR?118,"A microphone is sitting on your workbench."
|
||||||
|
.GSTR STR?119,"You have to go north to board the SCIMITAR."
|
||||||
|
.GSTR STR?120,". The hatch is "
|
||||||
|
.GSTR STR?121,".
|
||||||
|
"
|
||||||
|
.GSTR STR?122,"This vast enterprise was originally founded by your father, a world-famous inventor. You have added even greater luster to the family name with your own unique inventions."
|
||||||
|
.GSTR STR?123,"in it"
|
||||||
|
.GSTR STR?124,"careful"
|
||||||
|
.GSTR STR?125,"brief"
|
||||||
|
.GSTR STR?126,"is"
|
||||||
|
.GSTR STR?127,"can be"
|
||||||
|
.GSTR STR?128,"???"
|
||||||
|
.GSTR STR?129,"(I don't know the word """
|
||||||
|
.GSTR STR?130,""".)"
|
||||||
|
.GSTR STR?131,"ere"
|
||||||
|
.GSTR STR?132,"at"
|
||||||
|
.GSTR STR?133,"begin"
|
||||||
|
.GSTR STR?134,"end"
|
||||||
|
.GSTR STR?135,"superbrief"
|
||||||
|
.GSTR STR?136,"verbose"
|
||||||
|
.GSTR STR?137,"(Sorry, but it didn't work. Maybe your instruction manual or Reference Card can tell you why.)"
|
||||||
|
.GSTR STR?138,"go"
|
||||||
|
.GSTR STR?139," doesn't help any."
|
||||||
|
.GSTR STR?140," is a waste of time."
|
||||||
|
.GSTR STR?141," "
|
||||||
|
.GSTR STR?142," "
|
||||||
|
.GSTR STR?143," "
|
||||||
|
.GSTR STR?144," "
|
||||||
|
.GSTR STR?145," "
|
||||||
|
.GSTR STR?146,"(I assume you mean:"
|
||||||
|
.GSTR STR?147," doesn't appear interested"
|
||||||
|
.GSTR STR?148," doesn't care"
|
||||||
|
.GSTR STR?149," lets out a loud yawn"
|
||||||
|
.GSTR STR?150," seems to be growing impatient"
|
||||||
|
.GSTR STR?151,"That's ridiculous!"
|
||||||
|
.GSTR STR?152,"That's wacky!"
|
||||||
|
.GSTR STR?153,"What a fruitcake!"
|
||||||
|
.GSTR STR?154,"What a screwball!"
|
||||||
|
.GSTR STR?155,"You're off your rocker!"
|
||||||
|
.GSTR STR?156,"You're crazy in the head!"
|
||||||
|
.GSTR STR?157,"You can't be serious!"
|
||||||
|
.GSTR STR?158,"seem"
|
||||||
|
.GSTR STR?159,"escape"
|
||||||
|
.GSTR STR?160,"attack"
|
||||||
|
.GSTR STR?161,"not wired for phoning"
|
||||||
|
.GSTR STR?162,"climb onto"
|
||||||
|
.GSTR STR?163,"on the deck"
|
||||||
|
.GSTR STR?164,"on the floor"
|
||||||
|
.GSTR STR?165,"Hello"
|
||||||
|
.GSTR STR?166,"Good-bye"
|
||||||
|
.GSTR STR?167,"(You'll find plenty of help in your SEASTALKER package.
|
||||||
|
If you're really stuck, you can order an InvisiClues (TM) hint booklet either with the form in your package or by writing to:
|
||||||
|
Infocom, Dept. A2, P.O. Box 620, Garden City, NY 11530.)"
|
||||||
|
.GSTR STR?168,"Kicking"
|
||||||
|
.GSTR STR?169,"kill"
|
||||||
|
.GSTR STR?170,"kisse"
|
||||||
|
.GSTR STR?171,"standing up"
|
||||||
|
.GSTR STR?172,"look inside"
|
||||||
|
.GSTR STR?173,"look outside"
|
||||||
|
.GSTR STR?174,"locked"
|
||||||
|
.GSTR STR?175,"Pushing"
|
||||||
|
.GSTR STR?176,"pick up"
|
||||||
|
.GSTR STR?177,"Fiddling with"
|
||||||
|
.GSTR STR?178,"talk into"
|
||||||
|
.GSTR STR?179,"screw in"
|
||||||
|
.GSTR STR?180,"her"
|
||||||
|
.GSTR STR?181,"his"
|
||||||
|
.GSTR STR?182,"shoot"
|
||||||
|
.GSTR STR?183,"slap"
|
||||||
|
.GSTR STR?184,"smell"
|
||||||
|
.GSTR STR?185,"holding it"
|
||||||
|
.GSTR STR?186,"reach"
|
||||||
|
.GSTR STR?187,"talk to"
|
||||||
|
.GSTR STR?188," ducks"
|
||||||
|
.GSTR STR?189," doesn't duck"
|
||||||
|
.GSTR STR?190,"turn off"
|
||||||
|
.GSTR STR?191,"turn on"
|
||||||
|
.GSTR STR?192,"unlocked"
|
||||||
|
.GSTR STR?193,"wait until"
|
||||||
|
.GSTR STR?194,"not asleep"
|
||||||
|
.GSTR STR?195,"room."
|
||||||
|
.GSTR STR?196,"go under"
|
||||||
|
.GSTR STR?197,"beginning"
|
||||||
|
.GSTR STR?198,"fair"
|
||||||
|
.GSTR STR?199,"good"
|
||||||
|
.GSTR STR?200,"very good"
|
||||||
|
.GSTR STR?201,"master"
|
||||||
|
.GSTR STR?202,"famous"
|
||||||
|
.GSTR STR?203,"busy"
|
||||||
|
.GSTR STR?204,"""I think you should reconsider."
|
||||||
|
.GSTR STR?205,"is now"
|
||||||
|
.GSTR STR?206,"now comes rushing back,"
|
||||||
|
|
||||||
|
.ENDI
|
46
macros.zap
Normal file
46
macros.zap
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT PRINTT,O
|
||||||
|
EQUAL? O,TURN \?ELS5
|
||||||
|
PRINTI " "
|
||||||
|
PRINTN P-NUMBER
|
||||||
|
PRINTI " turns"
|
||||||
|
RTRUE
|
||||||
|
?ELS5: CALL THE?,O
|
||||||
|
PRINTI " "
|
||||||
|
PRINTD O
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT PRINTA,O
|
||||||
|
FSET? O,PERSON /?CND1
|
||||||
|
FSET? O,NARTICLEBIT \?ELS3
|
||||||
|
JUMP ?CND1
|
||||||
|
?ELS3: FSET? O,VOWELBIT \?ELS7
|
||||||
|
PRINTI "an "
|
||||||
|
JUMP ?CND1
|
||||||
|
?ELS7: PRINTI "a "
|
||||||
|
?CND1: PRINTD O
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT ZPROB,BASE
|
||||||
|
RANDOM 100
|
||||||
|
GRTR? BASE,STACK /TRUE
|
||||||
|
RFALSE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT PICK-ONE,FROB
|
||||||
|
GET FROB,0
|
||||||
|
RANDOM STACK
|
||||||
|
GET FROB,STACK
|
||||||
|
RSTACK
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT SPLIT-SCREEN?
|
||||||
|
GETB 0,1
|
||||||
|
BAND STACK,32
|
||||||
|
ZERO? STACK /FALSE
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
.ENDI
|
BIN
macros.zil
Normal file
BIN
macros.zil
Normal file
Binary file not shown.
517
main.zap
Normal file
517
main.zap
Normal file
|
@ -0,0 +1,517 @@
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT GO
|
||||||
|
START::
|
||||||
|
|
||||||
|
?FCN: SET 'LIT,1
|
||||||
|
PUTB P-LEXV,0,59
|
||||||
|
PUTB YES-LEXV,0,4
|
||||||
|
SET 'SCORE,0
|
||||||
|
PUTB FIRST-NAME,0,3
|
||||||
|
PUTB FIRST-NAME,1,45
|
||||||
|
PUTB FIRST-NAME,2,45
|
||||||
|
PUTB FIRST-NAME,3,45
|
||||||
|
PUTB LAST-NAME,0,3
|
||||||
|
PUTB LAST-NAME,1,45
|
||||||
|
PUTB LAST-NAME,2,45
|
||||||
|
PUTB LAST-NAME,3,45
|
||||||
|
SET 'WINNER,PLAYER
|
||||||
|
SET 'HERE,CENTER-OF-LAB
|
||||||
|
CALL THIS-IS-IT,VIDEOPHONE
|
||||||
|
MOVE TIP,HERE
|
||||||
|
CALL THIS-IS-IT,TIP
|
||||||
|
CALL THIS-IS-IT,SHARON
|
||||||
|
FSET? HERE,TOUCHBIT /?CND1
|
||||||
|
CALL QUEUE-MAIN-EVENTS
|
||||||
|
CALL INTRO
|
||||||
|
?CND1: MOVE PLAYER,HERE
|
||||||
|
ZERO? RESTORED-DURING-NAME-INPUT \?CND4
|
||||||
|
CALL V-LOOK
|
||||||
|
?CND4: CALL MAIN-LOOP
|
||||||
|
JUMP ?FCN
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT INTRO,N
|
||||||
|
PRINTI "Copyright (c) 1984 Infocom, Inc. All rights reserved.
|
||||||
|
|
||||||
|
Welcome to junior-level interactive fiction from Infocom!
|
||||||
|
|
||||||
|
In this story, you're the hero or heroine, so we'll use your name!"
|
||||||
|
CRLF
|
||||||
|
?PRG3: CRLF
|
||||||
|
CALL READ-NAME,FIRST-NAME,STR?5 >N
|
||||||
|
EQUAL? N,M-FATAL /FALSE
|
||||||
|
PRINTI "Hello "
|
||||||
|
CALL PRINT-NAME,FIRST-NAME
|
||||||
|
PRINTI "! "
|
||||||
|
CALL READ-NAME,LAST-NAME,STR?6 >N
|
||||||
|
EQUAL? N,M-FATAL /FALSE
|
||||||
|
PRINTI "Is "
|
||||||
|
CALL PRINT-NAME,FIRST-NAME
|
||||||
|
PRINTI " "
|
||||||
|
CALL PRINT-NAME,LAST-NAME
|
||||||
|
PRINTI " right?"
|
||||||
|
CALL YES?
|
||||||
|
ZERO? STACK /?PRG3
|
||||||
|
PRINTI "Then let the story begin!"
|
||||||
|
SET 'N,24
|
||||||
|
?PRG22: DLESS? 'N,0 \?ELS26
|
||||||
|
JUMP ?REP23
|
||||||
|
?ELS26: CRLF
|
||||||
|
JUMP ?PRG22
|
||||||
|
?REP23: CALL V-VERSION
|
||||||
|
CRLF
|
||||||
|
PRINTI """"
|
||||||
|
CALL PRINT-NAME,FIRST-NAME
|
||||||
|
PRINTI ", snap out of it!"" cries "
|
||||||
|
PRINTD GLOBAL-TIP
|
||||||
|
PRINTI ", bursting into "
|
||||||
|
PRINTD YOUR-LABORATORY
|
||||||
|
PRINTI ". ""The alert signal is on!""
|
||||||
|
You look up from your plans for the "
|
||||||
|
PRINTD SUB
|
||||||
|
PRINTI ", a top-secret submarine that's still being tested. It's designed for capturing marine life on the ocean floor. You notice the "
|
||||||
|
PRINTD ALARM
|
||||||
|
PRINTI " on the "
|
||||||
|
PRINTD VIDEOPHONE
|
||||||
|
PRINTI " ringing. Someone's trying to reach you over the private "
|
||||||
|
PRINTD VIDEOPHONE
|
||||||
|
PRINTI " network of "
|
||||||
|
PRINTD IU-GLOBAL
|
||||||
|
PRINTR "!
|
||||||
|
"
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT QUEUE-MAIN-EVENTS
|
||||||
|
SET 'ALARM-RINGING,1
|
||||||
|
CALL QUEUE,I-ALARM-RINGING,-1
|
||||||
|
PUT STACK,0,1
|
||||||
|
CALL QUEUE,I-SHOW-SONAR,0
|
||||||
|
CALL QUEUE,I-UPDATE-FREIGHTER,0
|
||||||
|
CALL QUEUE,I-UPDATE-SUB-POSITION,0
|
||||||
|
SET 'OLD-HERE,HERE
|
||||||
|
SET 'TIP-FOLLOWS-YOU?,1
|
||||||
|
RANDOM 250
|
||||||
|
ADD 250,STACK
|
||||||
|
CALL QUEUE,I-SNARK-ATTACKS,STACK
|
||||||
|
PUT STACK,0,1
|
||||||
|
CALL QUEUE,I-LAMP-ON-SCOPE,5
|
||||||
|
PUT STACK,0,1
|
||||||
|
CALL QUEUE,I-PROMPT-1,1
|
||||||
|
PUT STACK,0,1
|
||||||
|
CALL QUEUE,I-PROMPT-2,10
|
||||||
|
PUT STACK,0,1
|
||||||
|
CALL QUEUE,I-SHARON-GONE,25
|
||||||
|
PUT STACK,0,1
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT MAIN-LOOP,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,?TMP1
|
||||||
|
?PRG1: SET 'CNT,0
|
||||||
|
SET 'OBJ,0
|
||||||
|
SET 'PTBL,1
|
||||||
|
EQUAL? QCONTEXT-ROOM,HERE /?CND3
|
||||||
|
SET 'QCONTEXT,0
|
||||||
|
?CND3: CALL PARSER >P-WON
|
||||||
|
ZERO? P-WON /?ELS8
|
||||||
|
GET P-PRSI,P-MATCHLEN >ICNT
|
||||||
|
GET P-PRSO,P-MATCHLEN >OCNT
|
||||||
|
ZERO? OCNT \?ELS13
|
||||||
|
PUSH OCNT
|
||||||
|
JUMP ?CND9
|
||||||
|
?ELS13: GRTR? OCNT,1 \?ELS15
|
||||||
|
SET 'TBL,P-PRSO
|
||||||
|
ZERO? ICNT \?ELS18
|
||||||
|
SET 'OBJ,0
|
||||||
|
JUMP ?CND16
|
||||||
|
?ELS18: GET P-PRSI,1 >OBJ
|
||||||
|
?CND16: PUSH OCNT
|
||||||
|
JUMP ?CND9
|
||||||
|
?ELS15: GRTR? ICNT,1 \?ELS22
|
||||||
|
SET 'PTBL,0
|
||||||
|
SET 'TBL,P-PRSI
|
||||||
|
GET P-PRSO,1 >OBJ
|
||||||
|
PUSH ICNT
|
||||||
|
JUMP ?CND9
|
||||||
|
?ELS22: PUSH 1
|
||||||
|
?CND9: SET 'NUM,STACK
|
||||||
|
ZERO? OBJ \?CND25
|
||||||
|
EQUAL? ICNT,1 \?CND25
|
||||||
|
GET P-PRSI,1 >OBJ
|
||||||
|
?CND25: EQUAL? PRSA,V?WALK \?ELS32
|
||||||
|
CALL PERFORM,PRSA,PRSO >V
|
||||||
|
JUMP ?CND30
|
||||||
|
?ELS32: ZERO? NUM \?ELS34
|
||||||
|
GETB P-SYNTAX,P-SBITS
|
||||||
|
BAND STACK,P-SONUMS
|
||||||
|
ZERO? STACK \?ELS37
|
||||||
|
CALL PERFORM,PRSA >V
|
||||||
|
SET 'PRSO,0
|
||||||
|
JUMP ?CND30
|
||||||
|
?ELS37: PRINTI "(There isn't anything to "
|
||||||
|
GET P-ITBL,P-VERBN >TMP
|
||||||
|
ZERO? P-OFLAG /?ELS44
|
||||||
|
GET TMP,0
|
||||||
|
PRINTB STACK
|
||||||
|
JUMP ?CND42
|
||||||
|
?ELS44: GETB TMP,2 >?TMP1
|
||||||
|
GETB TMP,3
|
||||||
|
CALL WORD-PRINT,?TMP1,STACK
|
||||||
|
?CND42: PRINTI "!)"
|
||||||
|
CRLF
|
||||||
|
SET 'V,0
|
||||||
|
JUMP ?CND30
|
||||||
|
?ELS34: ZERO? PTBL /?ELS51
|
||||||
|
GRTR? NUM,1 \?ELS51
|
||||||
|
EQUAL? PRSA,V?COMPARE \?ELS51
|
||||||
|
CALL PERFORM,PRSA,OBJECT-PAIR >V
|
||||||
|
JUMP ?CND30
|
||||||
|
?ELS51: SET 'TMP,0
|
||||||
|
?PRG56: IGRTR? 'CNT,NUM \?ELS60
|
||||||
|
GRTR? TMP,0 \?REP57
|
||||||
|
PRINTI "The other thing"
|
||||||
|
EQUAL? TMP,1 /?CND66
|
||||||
|
PRINTI "s"
|
||||||
|
?CND66: PRINTI " that you mentioned "
|
||||||
|
EQUAL? TMP,1 /?ELS75
|
||||||
|
PRINTI "are"
|
||||||
|
JUMP ?CND73
|
||||||
|
?ELS75: PRINTI "is"
|
||||||
|
?CND73: PRINTI "n't here."
|
||||||
|
CRLF
|
||||||
|
JUMP ?REP57
|
||||||
|
?ELS60: ZERO? PTBL /?ELS88
|
||||||
|
GET P-PRSO,CNT >OBJ1
|
||||||
|
JUMP ?CND86
|
||||||
|
?ELS88: GET P-PRSI,CNT >OBJ1
|
||||||
|
?CND86: GRTR? NUM,1 \?CND92
|
||||||
|
EQUAL? OBJ1,NOT-HERE-OBJECT \?ELS97
|
||||||
|
INC 'TMP
|
||||||
|
JUMP ?PRG56
|
||||||
|
?ELS97: EQUAL? OBJ1,PLAYER \?ELS99
|
||||||
|
JUMP ?PRG56
|
||||||
|
?ELS99: EQUAL? OBJ1,IT \?ELS104
|
||||||
|
PRINTD P-IT-OBJECT
|
||||||
|
JUMP ?CND102
|
||||||
|
?ELS104: PRINTD OBJ1
|
||||||
|
?CND102: PRINTI ": "
|
||||||
|
?CND92: ZERO? PTBL /?ELS113
|
||||||
|
PUSH OBJ1
|
||||||
|
JUMP ?CND109
|
||||||
|
?ELS113: PUSH OBJ
|
||||||
|
?CND109: CALL QCONTEXT-CHECK,STACK >V
|
||||||
|
ZERO? PTBL /?ELS121
|
||||||
|
PUSH OBJ1
|
||||||
|
JUMP ?CND117
|
||||||
|
?ELS121: PUSH OBJ
|
||||||
|
?CND117: SET '?TMP1,STACK
|
||||||
|
ZERO? PTBL /?ELS129
|
||||||
|
PUSH OBJ
|
||||||
|
JUMP ?CND125
|
||||||
|
?ELS129: PUSH OBJ1
|
||||||
|
?CND125: CALL PERFORM,PRSA,?TMP1,STACK >V
|
||||||
|
EQUAL? V,M-FATAL \?PRG56
|
||||||
|
JUMP ?CND30
|
||||||
|
?REP57:
|
||||||
|
?CND30: EQUAL? V,M-FATAL \?CND6
|
||||||
|
SET 'P-CONT,0
|
||||||
|
JUMP ?CND6
|
||||||
|
?ELS8: SET 'P-CONT,0
|
||||||
|
?CND6: ZERO? P-WON /?PRG1
|
||||||
|
CALL GAME-VERB?
|
||||||
|
ZERO? STACK \?PRG1
|
||||||
|
CALL CLOCKER >V
|
||||||
|
JUMP ?PRG1
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT QCONTEXT-CHECK,PRSO,OTHER,WHO=0,N=0
|
||||||
|
EQUAL? PRSA,V?WHAT,V?HELP /?THN6
|
||||||
|
EQUAL? PRSA,V?TELL-ABOUT,V?SHOW \FALSE
|
||||||
|
EQUAL? PRSO,PLAYER \FALSE
|
||||||
|
?THN6: FIRST? HERE >OTHER /?KLU33
|
||||||
|
?KLU33:
|
||||||
|
?PRG10: ZERO? OTHER \?ELS14
|
||||||
|
JUMP ?REP11
|
||||||
|
?ELS14: FSET? OTHER,PERSON \?CND12
|
||||||
|
FSET? OTHER,INVISIBLE /?CND12
|
||||||
|
EQUAL? OTHER,PLAYER /?CND12
|
||||||
|
INC 'N
|
||||||
|
SET 'WHO,OTHER
|
||||||
|
?CND12: NEXT? OTHER >OTHER /?KLU34
|
||||||
|
?KLU34: JUMP ?PRG10
|
||||||
|
?REP11: EQUAL? 1,N \?CND19
|
||||||
|
ZERO? QCONTEXT \?CND19
|
||||||
|
CALL SAID-TO,WHO
|
||||||
|
?CND19: CALL QCONTEXT-GOOD?
|
||||||
|
ZERO? STACK /FALSE
|
||||||
|
EQUAL? WINNER,PLAYER \FALSE
|
||||||
|
SET 'WINNER,QCONTEXT
|
||||||
|
PRINTI "(said to "
|
||||||
|
PRINTD QCONTEXT
|
||||||
|
PRINTR ")"
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT QCONTEXT-GOOD?
|
||||||
|
ZERO? QCONTEXT /FALSE
|
||||||
|
FSET? QCONTEXT,INVISIBLE /FALSE
|
||||||
|
EQUAL? HERE,QCONTEXT-ROOM \FALSE
|
||||||
|
CALL META-LOC,QCONTEXT
|
||||||
|
EQUAL? HERE,STACK /TRUE
|
||||||
|
RFALSE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT SAID-TO,WHO
|
||||||
|
SET 'QCONTEXT,WHO
|
||||||
|
SET 'QCONTEXT-ROOM,HERE
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT OBJECT-PAIR-F,P1,P2,?TMP1
|
||||||
|
GET P-PRSO,P-MATCHLEN
|
||||||
|
LESS? 2,STACK \?ELS5
|
||||||
|
EQUAL? PRSA,V?COMPARE \TRUE
|
||||||
|
PRINTR "That's too many things to compare all at once!"
|
||||||
|
?ELS5: EQUAL? PRSA,V?COMPARE \FALSE
|
||||||
|
GET P-PRSO,1 >?TMP1
|
||||||
|
GET P-PRSO,2
|
||||||
|
CALL PERFORM,PRSA,?TMP1,STACK
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT THIS-IS-IT,OBJ
|
||||||
|
ZERO? OBJ /TRUE
|
||||||
|
EQUAL? PRSA,V?WALK \?CND4
|
||||||
|
EQUAL? OBJ,PRSO /TRUE
|
||||||
|
?CND4: FSET? OBJ,PERSON /?ELS11
|
||||||
|
EQUAL? OBJ,GLOBAL-HERE,INTDIR /TRUE
|
||||||
|
SET 'P-IT-OBJECT,OBJ
|
||||||
|
RTRUE
|
||||||
|
?ELS11: FSET? OBJ,FEMALE \?ELS16
|
||||||
|
SET 'P-HER-OBJECT,OBJ
|
||||||
|
RTRUE
|
||||||
|
?ELS16: SET 'P-HIM-OBJECT,OBJ
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT FAKE-ORPHAN,TMP,?TMP1
|
||||||
|
CALL ORPHAN,P-SYNTAX,0
|
||||||
|
PRINTI "(Be specific: what thing do you want to "
|
||||||
|
GET P-OTBL,P-VERBN >TMP
|
||||||
|
ZERO? TMP \?ELS5
|
||||||
|
PRINTI "tell"
|
||||||
|
JUMP ?CND3
|
||||||
|
?ELS5: GETB P-VTBL,2
|
||||||
|
ZERO? STACK \?ELS9
|
||||||
|
GET TMP,0
|
||||||
|
PRINTB STACK
|
||||||
|
JUMP ?CND3
|
||||||
|
?ELS9: GETB TMP,2 >?TMP1
|
||||||
|
GETB TMP,3
|
||||||
|
CALL WORD-PRINT,?TMP1,STACK
|
||||||
|
PUTB P-VTBL,2,0
|
||||||
|
?CND3: SET 'P-OFLAG,1
|
||||||
|
SET 'P-WON,0
|
||||||
|
PRINTR "?)"
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT TELL-D-LOC,OBJ
|
||||||
|
PRINTD OBJ
|
||||||
|
IN? OBJ,GLOBAL-OBJECTS \?ELS7
|
||||||
|
PRINTI "(gl)"
|
||||||
|
RTRUE
|
||||||
|
?ELS7: IN? OBJ,LOCAL-GLOBALS \?ELS11
|
||||||
|
PRINTI "(lg)"
|
||||||
|
RTRUE
|
||||||
|
?ELS11: IN? OBJ,ROOMS \FALSE
|
||||||
|
PRINTI "(rm)"
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT FIX-HIM-HER,HEM-OBJECT,V
|
||||||
|
CALL NOT-ACCESSIBLE?,HEM-OBJECT
|
||||||
|
ZERO? STACK /?CND1
|
||||||
|
GETP HEM-OBJECT,P?CHARACTER
|
||||||
|
GET GLOBAL-CHARACTER-TABLE,STACK
|
||||||
|
RSTACK
|
||||||
|
?CND1: GETP HEM-OBJECT,P?CHARACTER
|
||||||
|
GET CHARACTER-TABLE,STACK >V
|
||||||
|
LOC V
|
||||||
|
EQUAL? HERE,STACK \FALSE
|
||||||
|
RETURN V
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT PERFORM,A,O=0,I=0,V,OA,OO,OI,?TMP1
|
||||||
|
ZERO? DEBUG /?CND1
|
||||||
|
PRINTI "[Perform: "
|
||||||
|
PRINTN A
|
||||||
|
ZERO? O /?CND9
|
||||||
|
PRINTI "/"
|
||||||
|
EQUAL? A,V?WALK \?ELS17
|
||||||
|
PRINTN O
|
||||||
|
JUMP ?CND9
|
||||||
|
?ELS17: CALL TELL-D-LOC,O
|
||||||
|
?CND9: ZERO? I /?CND22
|
||||||
|
PRINTI "/"
|
||||||
|
CALL TELL-D-LOC,I
|
||||||
|
?CND22: PRINTI "]"
|
||||||
|
CRLF
|
||||||
|
?CND1: SET 'OA,PRSA
|
||||||
|
SET 'OO,PRSO
|
||||||
|
SET 'OI,PRSI
|
||||||
|
SET 'PRSA,A
|
||||||
|
EQUAL? A,V?WALK /?CND30
|
||||||
|
EQUAL? IT,I,O \?CND33
|
||||||
|
CALL NOT-ACCESSIBLE?,P-IT-OBJECT
|
||||||
|
ZERO? STACK /?CND33
|
||||||
|
ZERO? I \?ELS40
|
||||||
|
CALL FAKE-ORPHAN
|
||||||
|
RETURN 2
|
||||||
|
?ELS40: PRINTI "(Sorry, but"
|
||||||
|
CALL PRINTT,P-IT-OBJECT
|
||||||
|
PRINTI " isn't here!)"
|
||||||
|
CRLF
|
||||||
|
RETURN 2
|
||||||
|
?CND33: EQUAL? HER,I,O \?CND47
|
||||||
|
CALL FIX-HIM-HER,P-HER-OBJECT >V
|
||||||
|
ZERO? V /?CND47
|
||||||
|
EQUAL? HER,O \?CND53
|
||||||
|
SET 'O,V
|
||||||
|
?CND53: EQUAL? HER,I \?CND50
|
||||||
|
SET 'I,V
|
||||||
|
?CND50:
|
||||||
|
?CND47: EQUAL? HIM,I,O \?CND59
|
||||||
|
CALL FIX-HIM-HER,P-HIM-OBJECT >V
|
||||||
|
ZERO? V /?CND59
|
||||||
|
EQUAL? HIM,O \?CND65
|
||||||
|
SET 'O,V
|
||||||
|
?CND65: EQUAL? HIM,I \?CND62
|
||||||
|
SET 'I,V
|
||||||
|
?CND62:
|
||||||
|
?CND59: EQUAL? O,IT \?ELS73
|
||||||
|
SET 'O,P-IT-OBJECT
|
||||||
|
JUMP ?CND71
|
||||||
|
?ELS73: EQUAL? O,HER \?ELS75
|
||||||
|
SET 'O,P-HER-OBJECT
|
||||||
|
JUMP ?CND71
|
||||||
|
?ELS75: EQUAL? O,HIM \?CND71
|
||||||
|
SET 'O,P-HIM-OBJECT
|
||||||
|
?CND71: EQUAL? I,IT \?ELS80
|
||||||
|
SET 'I,P-IT-OBJECT
|
||||||
|
JUMP ?CND30
|
||||||
|
?ELS80: EQUAL? I,HER \?ELS82
|
||||||
|
SET 'I,P-HER-OBJECT
|
||||||
|
JUMP ?CND30
|
||||||
|
?ELS82: EQUAL? I,HIM \?CND30
|
||||||
|
SET 'I,P-HIM-OBJECT
|
||||||
|
?CND30: SET 'PRSI,I
|
||||||
|
SET 'PRSO,O
|
||||||
|
EQUAL? A,V?WALK /?ELS87
|
||||||
|
EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?ELS87
|
||||||
|
CALL D-APPLY,STR?7,NOT-HERE-OBJECT-F >V
|
||||||
|
ZERO? V /?ELS87
|
||||||
|
SET 'P-WON,0
|
||||||
|
JUMP ?CND85
|
||||||
|
?ELS87: CALL THIS-IS-IT,PRSI
|
||||||
|
ZERO? STACK /?ELS91
|
||||||
|
CALL THIS-IS-IT,PRSO
|
||||||
|
ZERO? STACK /?ELS91
|
||||||
|
SET 'O,PRSO
|
||||||
|
SET 'I,PRSI
|
||||||
|
CALL NULL-F
|
||||||
|
ZERO? STACK /?ELS91
|
||||||
|
CALL NULL-F
|
||||||
|
JUMP ?CND85
|
||||||
|
?ELS91: GETP WINNER,P?ACTION
|
||||||
|
CALL DD-APPLY,STR?8,WINNER,STACK >V
|
||||||
|
ZERO? V /?ELS95
|
||||||
|
JUMP ?CND85
|
||||||
|
?ELS95: LOC WINNER
|
||||||
|
GETP STACK,P?ACTION
|
||||||
|
CALL D-APPLY,STR?9,STACK,M-BEG >V
|
||||||
|
ZERO? V /?ELS97
|
||||||
|
JUMP ?CND85
|
||||||
|
?ELS97: GET PREACTIONS,A
|
||||||
|
CALL D-APPLY,STR?10,STACK >V
|
||||||
|
ZERO? V /?ELS99
|
||||||
|
JUMP ?CND85
|
||||||
|
?ELS99: ZERO? I /?ELS101
|
||||||
|
SET 'NOW-PRSI,1
|
||||||
|
GETP I,P?ACTION
|
||||||
|
CALL D-APPLY,STR?11,STACK >V
|
||||||
|
ZERO? V /?ELS101
|
||||||
|
JUMP ?CND85
|
||||||
|
?ELS101: SET 'NOW-PRSI,0
|
||||||
|
ZERO? O /?ELS105
|
||||||
|
EQUAL? A,V?WALK /?ELS105
|
||||||
|
LOC O
|
||||||
|
ZERO? STACK /?ELS105
|
||||||
|
LOC O
|
||||||
|
GETP STACK,P?CONTFCN
|
||||||
|
ZERO? STACK /?ELS105
|
||||||
|
LOC O >?TMP1
|
||||||
|
LOC O
|
||||||
|
GETP STACK,P?CONTFCN
|
||||||
|
CALL DD-APPLY,STR?12,?TMP1,STACK >V
|
||||||
|
ZERO? V /?ELS105
|
||||||
|
JUMP ?CND85
|
||||||
|
?ELS105: ZERO? O /?ELS109
|
||||||
|
EQUAL? A,V?WALK /?ELS109
|
||||||
|
GETP O,P?ACTION
|
||||||
|
CALL D-APPLY,STR?13,STACK >V
|
||||||
|
ZERO? V /?ELS109
|
||||||
|
JUMP ?CND85
|
||||||
|
?ELS109: GET ACTIONS,A
|
||||||
|
CALL D-APPLY,0,STACK >V
|
||||||
|
ZERO? V /?CND85
|
||||||
|
?CND85: EQUAL? V,M-FATAL /?CND114
|
||||||
|
LOC WINNER
|
||||||
|
EQUAL? STACK,PRSO \?CND117
|
||||||
|
SET 'PRSO,0
|
||||||
|
?CND117: LOC WINNER
|
||||||
|
GETP STACK,P?ACTION
|
||||||
|
CALL D-APPLY,STR?14,STACK,M-END >V
|
||||||
|
?CND114: SET 'PRSA,OA
|
||||||
|
SET 'PRSO,OO
|
||||||
|
SET 'PRSI,OI
|
||||||
|
RETURN V
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT DD-APPLY,STR,OBJ,FCN
|
||||||
|
ZERO? DEBUG /?CND1
|
||||||
|
PRINTI "["
|
||||||
|
PRINTD OBJ
|
||||||
|
PRINTI "=]"
|
||||||
|
?CND1: CALL D-APPLY,STR,FCN
|
||||||
|
RSTACK
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT D-APPLY,STR,FCN,FOO=0,RES
|
||||||
|
ZERO? FCN /FALSE
|
||||||
|
ZERO? DEBUG /?CND8
|
||||||
|
ZERO? STR \?ELS14
|
||||||
|
PRINTI "[Action:]"
|
||||||
|
CRLF
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS14: PRINTI "["
|
||||||
|
PRINT STR
|
||||||
|
PRINTI ": "
|
||||||
|
?CND8: ZERO? FOO /?ELS25
|
||||||
|
CALL FCN,FOO
|
||||||
|
JUMP ?CND21
|
||||||
|
?ELS25: CALL FCN
|
||||||
|
?CND21: SET 'RES,STACK
|
||||||
|
ZERO? DEBUG /?CND29
|
||||||
|
ZERO? STR /?CND29
|
||||||
|
EQUAL? RES,M-FATAL \?ELS36
|
||||||
|
PRINTI "Fatal]"
|
||||||
|
CRLF
|
||||||
|
RETURN RES
|
||||||
|
?ELS36: ZERO? RES \?ELS40
|
||||||
|
PRINTI "Not handled]"
|
||||||
|
CRLF
|
||||||
|
RETURN RES
|
||||||
|
?ELS40: PRINTI "Handled]"
|
||||||
|
CRLF
|
||||||
|
?CND29: RETURN RES
|
||||||
|
|
||||||
|
.ENDI
|
398
main.zil
Normal file
398
main.zil
Normal file
|
@ -0,0 +1,398 @@
|
||||||
|
"MAIN for SEASTALKER
|
||||||
|
Copyright (C) 1984 Infocom, Inc. All rights reserved."
|
||||||
|
|
||||||
|
<GLOBAL P-WON <>>
|
||||||
|
|
||||||
|
<CONSTANT M-FATAL 2>
|
||||||
|
|
||||||
|
<CONSTANT M-HANDLED 1>
|
||||||
|
|
||||||
|
<CONSTANT M-NOT-HANDLED <>>
|
||||||
|
|
||||||
|
<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 ()
|
||||||
|
%<COND (<NOT <GASSIGNED? PREDGEN>>
|
||||||
|
'(<SETG XTELLCHAN <OPEN "READB" ,XTELLFILE>>
|
||||||
|
<SETG LIT T>))
|
||||||
|
('<SETG LIT T>)>
|
||||||
|
<PUTB ,P-LEXV 0 59>
|
||||||
|
<PUTB ,YES-LEXV 0 4>
|
||||||
|
<SETG SCORE 0>
|
||||||
|
<PUTB ,FIRST-NAME 0 3>
|
||||||
|
<PUTB ,FIRST-NAME 1 %<ASCII !\->>
|
||||||
|
<PUTB ,FIRST-NAME 2 %<ASCII !\->>
|
||||||
|
<PUTB ,FIRST-NAME 3 %<ASCII !\->>
|
||||||
|
<PUTB ,LAST-NAME 0 3>
|
||||||
|
<PUTB ,LAST-NAME 1 %<ASCII !\->>
|
||||||
|
<PUTB ,LAST-NAME 2 %<ASCII !\->>
|
||||||
|
<PUTB ,LAST-NAME 3 %<ASCII !\->>
|
||||||
|
;"<PUTB ,GAME-NAME 1 %<ASCII !\S>>
|
||||||
|
<PUTB ,GAME-NAME 2 %<ASCII !\E>>
|
||||||
|
<PUTB ,GAME-NAME 3 %<ASCII !\A>>
|
||||||
|
<PUTB ,GAME-NAME 4 %<ASCII !\S>>
|
||||||
|
<PUTB ,GAME-NAME 5 %<ASCII !\T>>
|
||||||
|
<PUTB ,GAME-NAME 6 %<ASCII !\A>>
|
||||||
|
<PUTB ,GAME-NAME 7 %<ASCII !\L>>
|
||||||
|
<PUTB ,GAME-NAME 8 %<ASCII !\K>>
|
||||||
|
<PUTB ,GAME-NAME 9 %<ASCII !\E>>
|
||||||
|
<PUTB ,GAME-NAME 10 %<ASCII !\R>>"
|
||||||
|
<SETG WINNER ,PLAYER>
|
||||||
|
<SETG HERE ,CENTER-OF-LAB>
|
||||||
|
<THIS-IS-IT ,VIDEOPHONE>
|
||||||
|
<MOVE ,TIP ,HERE>
|
||||||
|
<THIS-IS-IT ,TIP>
|
||||||
|
<THIS-IS-IT ,SHARON>
|
||||||
|
%<COND (<GASSIGNED? PREDGEN>
|
||||||
|
'<COND (<NOT <FSET? ,HERE ,TOUCHBIT>>
|
||||||
|
<QUEUE-MAIN-EVENTS>
|
||||||
|
<INTRO>)>)
|
||||||
|
(T '<NULL-F>)>
|
||||||
|
<MOVE ,PLAYER ,HERE>
|
||||||
|
<COND (<NOT ,RESTORED-DURING-NAME-INPUT> <V-LOOK>)>
|
||||||
|
<MAIN-LOOP>
|
||||||
|
<AGAIN>>
|
||||||
|
|
||||||
|
<ROUTINE INTRO ("AUX" N)
|
||||||
|
%<XTELL
|
||||||
|
"Copyright (c) 1984 Infocom, Inc. All rights reserved.|
|
||||||
|
|
|
||||||
|
Welcome to junior-level interactive fiction from Infocom!|
|
||||||
|
|
|
||||||
|
In this story, you're the hero or heroine, so
|
||||||
|
we'll use your name!" CR>
|
||||||
|
<REPEAT ()
|
||||||
|
<TELL CR>
|
||||||
|
<SET N <READ-NAME ,FIRST-NAME "Please type your first name.">>
|
||||||
|
<COND (<==? .N ,M-FATAL> <RFALSE>)>
|
||||||
|
%<XTELL "Hello " FN "! ">
|
||||||
|
<SET N <READ-NAME ,LAST-NAME "Now type your last name.">>
|
||||||
|
<COND (<==? .N ,M-FATAL> <RFALSE>)>
|
||||||
|
%<XTELL "Is " FN " " LN " right?">
|
||||||
|
<COND (<YES?> <RETURN>)>>
|
||||||
|
%<XTELL "Then let the story begin!">
|
||||||
|
<SET N 24>
|
||||||
|
<REPEAT () <COND (<DLESS? N 0> <RETURN>) (T <CRLF>)>>
|
||||||
|
<V-VERSION>
|
||||||
|
<CRLF>
|
||||||
|
%<XTELL
|
||||||
|
"\"" FN ", snap out of it!\" cries " D ,GLOBAL-TIP ", bursting into
|
||||||
|
" D ,YOUR-LABORATORY ". \"The alert signal is on!\"|
|
||||||
|
You look up from your plans for the " D ,SUB ", a top-secret submarine
|
||||||
|
that's still being tested. It's designed for capturing marine life on
|
||||||
|
the ocean floor. You notice the " D ,ALARM " on the " D ,VIDEOPHONE "
|
||||||
|
ringing. Someone's trying to reach you over the private " D ,VIDEOPHONE
|
||||||
|
" network of " D ,IU-GLOBAL "!|
|
||||||
|
" CR>>
|
||||||
|
|
||||||
|
<ROUTINE QUEUE-MAIN-EVENTS ()
|
||||||
|
<SETG ALARM-RINGING T>
|
||||||
|
<ENABLE <QUEUE I-ALARM-RINGING -1>>
|
||||||
|
<QUEUE I-SHOW-SONAR 0>
|
||||||
|
<QUEUE I-UPDATE-FREIGHTER 0>
|
||||||
|
<QUEUE I-UPDATE-SUB-POSITION 0>
|
||||||
|
<SETG OLD-HERE ,HERE>
|
||||||
|
<SETG TIP-FOLLOWS-YOU? T>
|
||||||
|
<ENABLE <QUEUE I-SNARK-ATTACKS <+ 250 <RANDOM 250>>>>
|
||||||
|
<ENABLE <QUEUE I-LAMP-ON-SCOPE 5>>
|
||||||
|
<ENABLE <QUEUE I-PROMPT-1 1>>
|
||||||
|
<ENABLE <QUEUE I-PROMPT-2 10>>
|
||||||
|
<ENABLE <QUEUE I-SHARON-GONE 25>>>
|
||||||
|
|
||||||
|
|
||||||
|
<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 (<NOT <==? ,QCONTEXT-ROOM ,HERE>>
|
||||||
|
<SETG QCONTEXT <>>)>
|
||||||
|
<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 <>>)
|
||||||
|
(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 <>>)>)
|
||||||
|
(<AND .PTBL <G? .NUM 1> <VERB? COMPARE>>
|
||||||
|
<SET V <PERFORM ,PRSA ,OBJECT-PAIR>>)
|
||||||
|
(T
|
||||||
|
<SET TMP 0>
|
||||||
|
<REPEAT ()
|
||||||
|
<COND (<G? <SET CNT <+ .CNT 1>> .NUM>
|
||||||
|
<COND (<G? .TMP 0>
|
||||||
|
<TELL "The other thing">
|
||||||
|
<COND (<NOT <EQUAL? .TMP 1>>
|
||||||
|
<TELL "s">)>
|
||||||
|
<TELL " that you mentioned ">
|
||||||
|
<COND (<NOT <EQUAL? .TMP 1>>
|
||||||
|
<TELL "are">)
|
||||||
|
(T <TELL "is">)>
|
||||||
|
<TELL "n't here." CR>)>
|
||||||
|
<RETURN>)
|
||||||
|
(T
|
||||||
|
<COND (.PTBL <SET OBJ1 <GET ,P-PRSO .CNT>>)
|
||||||
|
(T <SET OBJ1 <GET ,P-PRSI .CNT>>)>
|
||||||
|
<COND (<G? .NUM 1>
|
||||||
|
<COND (<==? .OBJ1 ,NOT-HERE-OBJECT>
|
||||||
|
<SET TMP <+ .TMP 1>>
|
||||||
|
<AGAIN>)
|
||||||
|
(<==? .OBJ1 ,PLAYER> <AGAIN>)
|
||||||
|
;(<FSET? .OBJ1 ,DUPLICATE> <AGAIN>)
|
||||||
|
(T
|
||||||
|
<COND (<EQUAL? .OBJ1 ,IT>
|
||||||
|
<PRINTD ,P-IT-OBJECT>)
|
||||||
|
(T <PRINTD .OBJ1>)>
|
||||||
|
<TELL ": ">)>)>
|
||||||
|
<SET V <QCONTEXT-CHECK <COND (.PTBL .OBJ1)
|
||||||
|
(T .OBJ)>>>
|
||||||
|
<SET V
|
||||||
|
<PERFORM ,PRSA ;"? SETG PRSx to these?"
|
||||||
|
<COND (.PTBL .OBJ1) (T .OBJ)>
|
||||||
|
<COND (.PTBL .OBJ)(T .OBJ1)>>>
|
||||||
|
<COND (<==? .V ,M-FATAL> <RETURN>)>)>>)>
|
||||||
|
<COND (<==? .V ,M-FATAL> <SETG P-CONT <>>)>)
|
||||||
|
(T
|
||||||
|
<SETG P-CONT <>>)>
|
||||||
|
<COND (,P-WON
|
||||||
|
<COND (<NOT <GAME-VERB?>> <SET V <CLOCKER>>)>)>>>
|
||||||
|
|
||||||
|
<ROUTINE QCONTEXT-CHECK (PRSO "AUX" OTHER (WHO <>) (N 0))
|
||||||
|
<COND (<OR <VERB? ;FIND HELP WHAT>
|
||||||
|
<AND <VERB? SHOW TELL-ABOUT>
|
||||||
|
<==? .PRSO ,PLAYER>>> ;"? more?"
|
||||||
|
<SET OTHER <FIRST? ,HERE>>
|
||||||
|
<REPEAT ()
|
||||||
|
<COND (<NOT .OTHER> <RETURN>)
|
||||||
|
(<AND <FSET? .OTHER ,PERSON>
|
||||||
|
<NOT <FSET? .OTHER ,INVISIBLE>>
|
||||||
|
<NOT <==? .OTHER ,PLAYER>>>
|
||||||
|
<SET N <+ 1 .N>>
|
||||||
|
<SET WHO .OTHER>)>
|
||||||
|
<SET OTHER <NEXT? .OTHER>>>
|
||||||
|
<COND (<AND <==? 1 .N> <NOT ,QCONTEXT>>
|
||||||
|
<SAID-TO .WHO>)>
|
||||||
|
<COND (<AND <QCONTEXT-GOOD?>
|
||||||
|
<==? ,WINNER ,PLAYER>> ;"? more?"
|
||||||
|
<SETG WINNER ,QCONTEXT>
|
||||||
|
<TELL "(said to " D ,QCONTEXT ")" CR>)>)>>
|
||||||
|
|
||||||
|
<ROUTINE QCONTEXT-GOOD? ()
|
||||||
|
<COND (<AND ,QCONTEXT
|
||||||
|
<NOT <FSET? ,QCONTEXT ,INVISIBLE>>
|
||||||
|
<==? ,HERE ,QCONTEXT-ROOM>
|
||||||
|
<==? ,HERE <META-LOC ,QCONTEXT>>>
|
||||||
|
<RTRUE>)>>
|
||||||
|
|
||||||
|
<ROUTINE SAID-TO (WHO)
|
||||||
|
<SETG QCONTEXT .WHO>
|
||||||
|
<SETG QCONTEXT-ROOM ,HERE>>
|
||||||
|
|
||||||
|
"<GLOBAL L-PRSA <>>
|
||||||
|
<GLOBAL L-PRSO <>>
|
||||||
|
<GLOBAL L-PRSI <>>"
|
||||||
|
|
||||||
|
<OBJECT OBJECT-PAIR
|
||||||
|
(DESC "such things")
|
||||||
|
(ACTION OBJECT-PAIR-F)>
|
||||||
|
|
||||||
|
<ROUTINE OBJECT-PAIR-F ("AUX" P1 P2)
|
||||||
|
<COND (<L? 2 <GET ,P-PRSO ,P-MATCHLEN>>
|
||||||
|
<COND (<VERB? COMPARE>
|
||||||
|
%<XTELL
|
||||||
|
"That's too many things to compare all at once!" CR>)>
|
||||||
|
<RTRUE>)
|
||||||
|
(<VERB? COMPARE>
|
||||||
|
<PERFORM ,PRSA <1 ,P-PRSO> <2 ,P-PRSO>>
|
||||||
|
<RTRUE>)>>
|
||||||
|
|
||||||
|
<ROUTINE THIS-IS-IT (OBJ)
|
||||||
|
<COND (<NOT .OBJ>
|
||||||
|
<RTRUE>)>
|
||||||
|
<COND (<AND <VERB? WALK> <==? .OBJ ,PRSO>>
|
||||||
|
<RTRUE>)>
|
||||||
|
<COND (<NOT <FSET? .OBJ ,PERSON>>
|
||||||
|
<COND (<NOT <EQUAL? .OBJ ,GLOBAL-HERE ,INTDIR>>
|
||||||
|
<SETG P-IT-OBJECT .OBJ>)>)
|
||||||
|
(<FSET? .OBJ ,FEMALE>
|
||||||
|
<SETG P-HER-OBJECT .OBJ>)
|
||||||
|
(T
|
||||||
|
<SETG P-HIM-OBJECT .OBJ>)>
|
||||||
|
<RTRUE>>
|
||||||
|
|
||||||
|
<ROUTINE FAKE-ORPHAN ("AUX" TMP)
|
||||||
|
<ORPHAN ,P-SYNTAX <>>
|
||||||
|
<TELL "(Be specific: what thing do you want to ">
|
||||||
|
<SET TMP <GET ,P-OTBL ,P-VERBN>>
|
||||||
|
<COND (<==? .TMP 0> <TELL "tell">)
|
||||||
|
(<0? <GETB ,P-VTBL 2>>
|
||||||
|
<PRINTB <GET .TMP 0>>)
|
||||||
|
(T
|
||||||
|
<WORD-PRINT <GETB .TMP 2> <GETB .TMP 3>>
|
||||||
|
<PUTB ,P-VTBL 2 0>)>
|
||||||
|
<SETG P-OFLAG T>
|
||||||
|
<SETG P-WON <>>
|
||||||
|
<TELL "?)" CR>>
|
||||||
|
|
||||||
|
<GLOBAL NOW-PRSI <>>
|
||||||
|
|
||||||
|
<ROUTINE TELL-D-LOC (OBJ)
|
||||||
|
<TELL D .OBJ>
|
||||||
|
<COND (<IN? .OBJ ,GLOBAL-OBJECTS> <TELL "(gl)">)
|
||||||
|
(<IN? .OBJ ,LOCAL-GLOBALS> <TELL "(lg)">)
|
||||||
|
(<IN? .OBJ ,ROOMS> <TELL "(rm)">)>>
|
||||||
|
|
||||||
|
<ROUTINE FIX-HIM-HER (HEM-OBJECT "AUX" V)
|
||||||
|
<COND (<NOT-ACCESSIBLE? .HEM-OBJECT>
|
||||||
|
;<COND (,DEBUG <TELL "[" D .HEM-OBJECT ":NA]" CR>)>
|
||||||
|
<RETURN <GET ,GLOBAL-CHARACTER-TABLE
|
||||||
|
<GETP .HEM-OBJECT ,P?CHARACTER>>>)>
|
||||||
|
<SET V <GET ,CHARACTER-TABLE <GETP .HEM-OBJECT ,P?CHARACTER>>>
|
||||||
|
<COND (<EQUAL? ,HERE <LOC .V>>
|
||||||
|
;<COND (,DEBUG <TELL "[" D .HEM-OBJECT ":LO]" CR>)>
|
||||||
|
<RETURN .V>)>>
|
||||||
|
|
||||||
|
<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: ">
|
||||||
|
%<COND (<GASSIGNED? PREDGEN> '<TELL N .A>)
|
||||||
|
(T '<PRINC <NTH ,ACTIONS <+ <* .A 2> 1>>>)>
|
||||||
|
<COND (.O
|
||||||
|
<TELL "/">
|
||||||
|
<COND (<==? .A ,V?WALK> <TELL N .O>)
|
||||||
|
(T <TELL-D-LOC .O>)>)>
|
||||||
|
<COND (.I
|
||||||
|
<TELL "/">
|
||||||
|
<TELL-D-LOC .I>)>
|
||||||
|
<TELL "]" CR>)>
|
||||||
|
<SET OA ,PRSA>
|
||||||
|
<SET OO ,PRSO>
|
||||||
|
<SET OI ,PRSI>
|
||||||
|
<SETG PRSA .A>
|
||||||
|
<COND (<NOT <EQUAL? .A ,V?WALK>>
|
||||||
|
<COND (<AND <EQUAL? ,IT .I .O>
|
||||||
|
<NOT-ACCESSIBLE? ,P-IT-OBJECT>>
|
||||||
|
<COND (<NOT .I> <FAKE-ORPHAN>)
|
||||||
|
(T <TELL
|
||||||
|
"(Sorry, but" THE ,P-IT-OBJECT " isn't here!)" CR>)>
|
||||||
|
<RFATAL>)>
|
||||||
|
<COND (<EQUAL? ,HER .I .O>
|
||||||
|
<COND (<SET V <FIX-HIM-HER ,P-HER-OBJECT>>
|
||||||
|
<COND (<==? ,HER .O> <SET O .V>)>
|
||||||
|
<COND (<==? ,HER .I> <SET I .V>)>)>)>
|
||||||
|
<COND (<EQUAL? ,HIM .I .O>
|
||||||
|
<COND (<SET V <FIX-HIM-HER ,P-HIM-OBJECT>>
|
||||||
|
<COND (<==? ,HIM .O> <SET O .V>)>
|
||||||
|
<COND (<==? ,HIM .I> <SET I .V>)>)>)>
|
||||||
|
<COND (<==? .O ,IT> <SET O ,P-IT-OBJECT>)
|
||||||
|
(<==? .O ,HER> <SET O ,P-HER-OBJECT>)
|
||||||
|
(<==? .O ,HIM> <SET O ,P-HIM-OBJECT>)>
|
||||||
|
<COND (<==? .I ,IT> <SET I ,P-IT-OBJECT>)
|
||||||
|
(<==? .I ,HER> <SET I ,P-HER-OBJECT>)
|
||||||
|
(<==? .I ,HIM> <SET I ,P-HIM-OBJECT>)>)>
|
||||||
|
<SETG PRSI .I>
|
||||||
|
<SETG PRSO .O>
|
||||||
|
<COND (<AND <NOT <EQUAL? .A ,V?WALK>>
|
||||||
|
<EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>
|
||||||
|
<SET V <D-APPLY "Not Here" ,NOT-HERE-OBJECT-F>>>
|
||||||
|
<SETG P-WON <>>
|
||||||
|
.V)
|
||||||
|
(<AND <THIS-IS-IT ,PRSI>
|
||||||
|
<THIS-IS-IT ,PRSO>
|
||||||
|
<SET O ,PRSO>
|
||||||
|
<SET I ,PRSI>
|
||||||
|
<NULL-F>>
|
||||||
|
<NULL-F>) ;"[in case last clause changed PRSx]"
|
||||||
|
(<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
|
||||||
|
<SETG NOW-PRSI T>
|
||||||
|
<SET V <D-APPLY "PRSI" <GETP .I ,P?ACTION>>>>
|
||||||
|
.V)
|
||||||
|
(<AND <NOT <SETG NOW-PRSI <>>>
|
||||||
|
.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)>
|
||||||
|
<COND (<NOT <==? .V ,M-FATAL>>
|
||||||
|
<COND (<==? <LOC ,WINNER> ,PRSO> ;"was not in compiled PERFORM"
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<ROUTINE DD-APPLY (STR OBJ FCN)
|
||||||
|
<COND (,DEBUG <TELL "[" D .OBJ "=]">)>
|
||||||
|
<D-APPLY .STR .FCN>>
|
||||||
|
|
||||||
|
<ROUTINE D-APPLY (STR FCN "OPTIONAL" (FOO <>) "AUX" RES)
|
||||||
|
<COND (<NOT .FCN> <>)
|
||||||
|
(T
|
||||||
|
<COND (,DEBUG
|
||||||
|
<COND (<NOT .STR>
|
||||||
|
<TELL "[Action:]" CR>)
|
||||||
|
(T <TELL "[" .STR ": ">)>)>
|
||||||
|
<SET RES
|
||||||
|
<COND (.FOO <APPLY .FCN .FOO>)
|
||||||
|
(T <APPLY .FCN>)>>
|
||||||
|
<COND (<AND ,DEBUG .STR>
|
||||||
|
<COND (<==? .RES ,M-FATAL>
|
||||||
|
<TELL "Fatal]" CR>)
|
||||||
|
(<NOT .RES>
|
||||||
|
<TELL "Not handled]" CR>)
|
||||||
|
(T <TELL "Handled]" CR>)>)>
|
||||||
|
.RES)>>
|
1427
parser.zap
Normal file
1427
parser.zap
Normal file
File diff suppressed because it is too large
Load diff
1335
parser.zil
Normal file
1335
parser.zil
Normal file
File diff suppressed because it is too large
Load diff
2385
people.zap
Normal file
2385
people.zap
Normal file
File diff suppressed because it is too large
Load diff
2125
people.zil
Normal file
2125
people.zil
Normal file
File diff suppressed because it is too large
Load diff
884
places.zap
Normal file
884
places.zap
Normal file
|
@ -0,0 +1,884 @@
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT DIR-PRINT,DIR,THE?=1,CNT=0
|
||||||
|
?PRG1: GET DIR-STRINGS,CNT
|
||||||
|
EQUAL? STACK,DIR \?CND3
|
||||||
|
ZERO? THE? /?CND6
|
||||||
|
PRINTI "the "
|
||||||
|
?CND6: ADD CNT,1
|
||||||
|
GET DIR-STRINGS,STACK
|
||||||
|
PRINT STACK
|
||||||
|
RTRUE
|
||||||
|
?CND3: INC 'CNT
|
||||||
|
JUMP ?PRG1
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT NULL-F,A1,A2
|
||||||
|
RFALSE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT DDESC,STR1,DOOR,STR2
|
||||||
|
PRINT STR1
|
||||||
|
FSET? DOOR,OPENBIT \?ELS5
|
||||||
|
PRINTI "open"
|
||||||
|
JUMP ?CND3
|
||||||
|
?ELS5: PRINTI "closed"
|
||||||
|
?CND3: PRINT STR2
|
||||||
|
CRLF
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT DOOR-ROOM,RM,DR,P=0,T
|
||||||
|
?PRG1: NEXTP RM,P >P
|
||||||
|
ZERO? P /FALSE
|
||||||
|
LESS? P,LOW-DIRECTION /FALSE
|
||||||
|
GETPT RM,P >T
|
||||||
|
PTSIZE T
|
||||||
|
EQUAL? DEXIT,STACK \?PRG1
|
||||||
|
GETB T,DEXITOBJ
|
||||||
|
EQUAL? DR,STACK \?PRG1
|
||||||
|
GETB T,REXIT
|
||||||
|
RETURN STACK
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT FIND-FLAG,RM,FLAG,EXCLUDED=0,O
|
||||||
|
FIRST? RM >O /?KLU12
|
||||||
|
?KLU12:
|
||||||
|
?PRG1: ZERO? O /FALSE
|
||||||
|
FSET? O,FLAG \?ELS7
|
||||||
|
EQUAL? O,EXCLUDED /?ELS7
|
||||||
|
RETURN O
|
||||||
|
?ELS7: NEXT? O >O /?KLU13
|
||||||
|
?KLU13: JUMP ?PRG1
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT META-LOC,OBJ,L
|
||||||
|
LOC OBJ >L
|
||||||
|
?PRG1: ZERO? L /FALSE
|
||||||
|
EQUAL? L,LOCAL-GLOBALS,GLOBAL-OBJECTS \?ELS7
|
||||||
|
RETURN L
|
||||||
|
?ELS7: IN? OBJ,ROOMS \?ELS9
|
||||||
|
RETURN OBJ
|
||||||
|
?ELS9: SET 'OBJ,L
|
||||||
|
LOC OBJ >L
|
||||||
|
JUMP ?PRG1
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT IN-LAB-AREA?,RM
|
||||||
|
ZERO? SUB-IN-TANK /?ELS5
|
||||||
|
EQUAL? RM,SUB,CRAWL-SPACE /TRUE
|
||||||
|
?ELS5: EQUAL? RM,HALLWAY,LAB-STORAGE,OFFICE /TRUE
|
||||||
|
CALL IN-LAB?,RM
|
||||||
|
ZERO? STACK \TRUE
|
||||||
|
CALL IN-TANK-AREA?,RM
|
||||||
|
ZERO? STACK \TRUE
|
||||||
|
RFALSE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT IN-LAB?,RM
|
||||||
|
EQUAL? RM,NORTH-WALL,EAST-WALL,SOUTH-WALL /TRUE
|
||||||
|
EQUAL? RM,WEST-WALL,CENTER-OF-LAB /TRUE
|
||||||
|
RFALSE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT IN-TANK-AREA?,RM
|
||||||
|
EQUAL? RM,SOUTH-TANK-AREA,WEST-TANK-AREA,NORTH-TANK-AREA /TRUE
|
||||||
|
RFALSE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT SHARON-PASSES-YOU?,L,?ORTMP
|
||||||
|
EQUAL? HERE,OFFICE /TRUE
|
||||||
|
EQUAL? HERE,HALLWAY /?THN8
|
||||||
|
EQUAL? HERE,LAB-STORAGE \?ELS7
|
||||||
|
FSET? STORAGE-DOOR,OPENBIT \?ELS7
|
||||||
|
?THN8: EQUAL? L,OFFICE /FALSE
|
||||||
|
RTRUE
|
||||||
|
?ELS7: EQUAL? HERE,LAB-STORAGE \?ELS15
|
||||||
|
EQUAL? L,LAB-STORAGE /TRUE
|
||||||
|
RFALSE
|
||||||
|
?ELS15: CALL IN-LAB?,HERE
|
||||||
|
ZERO? STACK /?ELS19
|
||||||
|
EQUAL? L,OFFICE,HALLWAY,LAB-STORAGE /FALSE
|
||||||
|
RTRUE
|
||||||
|
?ELS19: CALL IN-TANK-AREA?,HERE
|
||||||
|
ZERO? STACK /?ELS23
|
||||||
|
CALL IN-TANK-AREA?,L
|
||||||
|
POP '?ORTMP
|
||||||
|
ZERO? ?ORTMP /?ORP27
|
||||||
|
RETURN ?ORTMP
|
||||||
|
?ORP27: EQUAL? L,SUB,CRAWL-SPACE /TRUE
|
||||||
|
RFALSE
|
||||||
|
?ELS23: EQUAL? HERE,SUB \?ELS29
|
||||||
|
EQUAL? L,SUB,CRAWL-SPACE /TRUE
|
||||||
|
RFALSE
|
||||||
|
?ELS29: EQUAL? L,CRAWL-SPACE /TRUE
|
||||||
|
RFALSE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT RESEARCH-LAB
|
||||||
|
PRINTI " the "
|
||||||
|
CALL PRINT-NAME,LAST-NAME
|
||||||
|
PRINTI " Research Lab"
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT NORTH-WALL-F,RARG=0
|
||||||
|
EQUAL? RARG,M-LOOK \FALSE
|
||||||
|
PRINTI "You're in the "
|
||||||
|
PRINTD NORTH-WALL
|
||||||
|
PRINTI " of "
|
||||||
|
PRINTD YOUR-LABORATORY
|
||||||
|
PRINTI ". A "
|
||||||
|
PRINTD COMPUTESTOR
|
||||||
|
PRINTR " stands here to help test your inventions."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT COMPUTESTOR-F
|
||||||
|
EQUAL? PRSA,V?LOOK-UNDER,V?LOOK-ON,V?LOOK-INSIDE /FALSE
|
||||||
|
EQUAL? PRSA,V?LOOK-BEHIND,V?WALK-TO,V?TAKE /FALSE
|
||||||
|
EQUAL? PRSA,V?EXAMINE \?ELS9
|
||||||
|
PRINTI "The "
|
||||||
|
PRINTD COMPUTESTOR
|
||||||
|
PRINTI " is o"
|
||||||
|
FSET? COMPUTESTOR,ONBIT \?ELS16
|
||||||
|
PUSH STR?45
|
||||||
|
JUMP ?CND12
|
||||||
|
?ELS16: PUSH STR?46
|
||||||
|
?CND12: PRINT STACK
|
||||||
|
PRINTR "."
|
||||||
|
?ELS9: EQUAL? PRSA,V?LAMP-ON \?ELS20
|
||||||
|
FSET? COMPUTESTOR,ONBIT /FALSE
|
||||||
|
FSET COMPUTESTOR,ONBIT
|
||||||
|
PRINTI "The "
|
||||||
|
PRINTD COMPUTESTOR
|
||||||
|
PRINTR " is ready for questions."
|
||||||
|
?ELS20: CALL REMOTE-VERB?
|
||||||
|
ZERO? STACK /?ELS29
|
||||||
|
EQUAL? PRSA,V?ASK-ABOUT \FALSE
|
||||||
|
EQUAL? PRSO,COMPUTESTOR \FALSE
|
||||||
|
?ELS29: FSET? COMPUTESTOR,ONBIT /?ELS35
|
||||||
|
PRINTI "The "
|
||||||
|
PRINTD COMPUTESTOR
|
||||||
|
PRINTR " is off!"
|
||||||
|
?ELS35: EQUAL? PRSA,V?USE,V?ASK \?ELS39
|
||||||
|
FSET? VIDEOPHONE,MUNGBIT \?ELS44
|
||||||
|
CALL PERFORM,V?ASK-ABOUT,COMPUTESTOR,VIDEOPHONE
|
||||||
|
RTRUE
|
||||||
|
?ELS44: IN? CATALYST-CAPSULE,REACTOR /FALSE
|
||||||
|
CALL PERFORM,V?ASK-ABOUT,COMPUTESTOR,GLOBAL-SUB
|
||||||
|
RTRUE
|
||||||
|
?ELS39: EQUAL? PRSA,V?ASK-ABOUT \FALSE
|
||||||
|
EQUAL? PRSO,COMPUTESTOR \FALSE
|
||||||
|
EQUAL? PRSI,CIRCUIT-BREAKER \?ELS57
|
||||||
|
FSET? CIRCUIT-BREAKER,OPENBIT \?ELS57
|
||||||
|
PRINTI """A "
|
||||||
|
PRINTD CIRCUIT-BREAKER
|
||||||
|
PRINTR " is open."""
|
||||||
|
?ELS57: EQUAL? PRSI,VIDEOPHONE \?ELS63
|
||||||
|
FSET? VIDEOPHONE,MUNGBIT \?ELS63
|
||||||
|
SET 'TIP-SAYS-1,32
|
||||||
|
SET 'TIP-SAYS-2,VIDEOPHONE
|
||||||
|
CALL QUEUE,I-TIP-SAYS,3
|
||||||
|
PUT STACK,0,1
|
||||||
|
PRINTI """Symptoms: no picture, no sound.
|
||||||
|
Possible causes:
|
||||||
|
1) Failure of the "
|
||||||
|
PRINTD VIDEOPHONE-TRANSMITTER
|
||||||
|
PRINTI " at source.
|
||||||
|
2) A short in the "
|
||||||
|
PRINTD VIDEOPHONE-CABLE
|
||||||
|
PRINTI " linking "
|
||||||
|
PRINTD VIDEOPHONE-TRANSMITTER
|
||||||
|
PRINTI " to"
|
||||||
|
CALL RESEARCH-LAB
|
||||||
|
PRINTI ", if signal is coming from "
|
||||||
|
PRINTD AQUADOME
|
||||||
|
PRINTI ".
|
||||||
|
3) Sunspot interference or "
|
||||||
|
PRINTD VIDEOPHONE-SATELLITE
|
||||||
|
PRINTI " malfunction if "
|
||||||
|
PRINTD VIDEOPHONE-TRANSMITTER
|
||||||
|
PRINTI " is at earth's surface.
|
||||||
|
4) Failure of the video receiver.
|
||||||
|
5) Overload in the "
|
||||||
|
PRINTD ELECTRICAL-CONTROL-PANEL
|
||||||
|
PRINTI " ("
|
||||||
|
PRINTD CIRCUIT-BREAKER
|
||||||
|
PRINTI " popped).
|
||||||
|
6) Sabotage ("
|
||||||
|
PRINTD CIRCUIT-BREAKER
|
||||||
|
PRINTR " open)."""
|
||||||
|
?ELS63: EQUAL? PRSI,VIDEOPHONE-TRANSMITTER \?ELS71
|
||||||
|
FSET? VIDEOPHONE,MUNGBIT \?ELS71
|
||||||
|
PRINTI "Impossible. It's located "
|
||||||
|
PRINTD UNDERWATER
|
||||||
|
PRINTI " at the "
|
||||||
|
PRINTD AQUADOME
|
||||||
|
PRINTI ", beyond your control. Right now you have no communication with the "
|
||||||
|
PRINTD AQUADOME
|
||||||
|
PRINTR "."
|
||||||
|
?ELS71: EQUAL? PRSI,VIDEOPHONE-CABLE \?ELS77
|
||||||
|
PRINTR "This can be done only by submarine."
|
||||||
|
?ELS77: EQUAL? PRSI,VIDEOPHONE-SATELLITE \?ELS81
|
||||||
|
PRINTI "You're goofing off, "
|
||||||
|
CALL PRINT-NAME,FIRST-NAME
|
||||||
|
PRINTI ". Video signals from the "
|
||||||
|
PRINTD AQUADOME
|
||||||
|
PRINTI " to"
|
||||||
|
CALL RESEARCH-LAB
|
||||||
|
PRINTI " are NOT relayed by a space "
|
||||||
|
PRINTD VIDEOPHONE-SATELLITE
|
||||||
|
PRINTR "."
|
||||||
|
?ELS81: EQUAL? PRSI,VIDEOPHONE-RECEIVER \?ELS87
|
||||||
|
PRINTI "You can do this by pushing the "
|
||||||
|
PRINTD TEST-BUTTON
|
||||||
|
PRINTI " on the "
|
||||||
|
PRINTD VIDEOPHONE
|
||||||
|
PRINTR "."
|
||||||
|
?ELS87: EQUAL? PRSI,REACTOR,GLOBAL-SUB \?ELS91
|
||||||
|
IN? CATALYST-CAPSULE,REACTOR /?ELS91
|
||||||
|
PRINTI """Symptom: "
|
||||||
|
PRINTD ENGINE
|
||||||
|
PRINTI " won't start.
|
||||||
|
Possible causes:
|
||||||
|
1) The "
|
||||||
|
PRINTD CATALYST-CAPSULE
|
||||||
|
PRINTI " is not inserted in the "
|
||||||
|
PRINTD REACTOR
|
||||||
|
PRINTI ".
|
||||||
|
2) The "
|
||||||
|
PRINTD REACTOR
|
||||||
|
PRINTI " is not turned on.
|
||||||
|
3) The "
|
||||||
|
PRINTD TEST-TANK
|
||||||
|
PRINTR " is not filled."""
|
||||||
|
?ELS91: PRINTI """This device is designed only to troubleshoot operating problems.""
|
||||||
|
(Maybe you can find information about"
|
||||||
|
CALL THE-PRSI-PRINT
|
||||||
|
PRINTR " in your SEASTALKER package.)"
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT VIDEOPHONE-TEST-F
|
||||||
|
EQUAL? PRSA,V?ANALYZE \FALSE
|
||||||
|
CALL PERFORM,V?ASK-ABOUT,COMPUTESTOR,PRSO
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT EAST-WALL-F,RARG=0
|
||||||
|
EQUAL? RARG,M-LOOK \?ELS5
|
||||||
|
PRINTI "You're in the "
|
||||||
|
PRINTD EAST-WALL
|
||||||
|
PRINTI " of "
|
||||||
|
PRINTD YOUR-LABORATORY
|
||||||
|
PRINTI ". A doorway leads out through a "
|
||||||
|
PRINTD HALLWAY
|
||||||
|
PRINTI " to the office of your "
|
||||||
|
PRINTD LAB-ASSISTANT
|
||||||
|
PRINTI ", "
|
||||||
|
PRINTD GLOBAL-SHARON
|
||||||
|
PRINTI ". A "
|
||||||
|
PRINTD MICROWAVE-SECURITY-SCANNER
|
||||||
|
PRINTI " stands against the wall. An "
|
||||||
|
PRINTD INTERCOM
|
||||||
|
PRINTI " sits on the "
|
||||||
|
PRINTD DESK
|
||||||
|
PRINTR "."
|
||||||
|
?ELS5: EQUAL? RARG,M-ENTER \FALSE
|
||||||
|
ZERO? BREAKER-JUST-FIXED /FALSE
|
||||||
|
FSET? CIRCUIT-BREAKER,OPENBIT /FALSE
|
||||||
|
SET 'BREAKER-JUST-FIXED,0
|
||||||
|
PRINTI "As you re-enter the lab, "
|
||||||
|
CALL TIP-SAYS
|
||||||
|
PRINTI "Look, "
|
||||||
|
CALL PRINT-NAME,FIRST-NAME
|
||||||
|
PRINTI "! The "
|
||||||
|
PRINTD VIDEOPHONE
|
||||||
|
PRINTR "'s working again! There's a normal test pattern on the screen!"""
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT MICROWAVE-SECURITY-SCANNER-F
|
||||||
|
EQUAL? PRSA,V?LAMP-ON \FALSE
|
||||||
|
PRINTR "No beep occurs. Scanner displays: ""NO INTRUDER PRESENT ON GROUNDS."""
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT DESK-F
|
||||||
|
EQUAL? PRSA,V?OPEN \?ELS5
|
||||||
|
PRINTR "It has no drawers."
|
||||||
|
?ELS5: EQUAL? PRSA,V?LOOK-ON,V?LOOK-INSIDE,V?EXAMINE \FALSE
|
||||||
|
EQUAL? PRSO,DESK \FALSE
|
||||||
|
PRINTI "An intercom is on the desk"
|
||||||
|
FIRST? DESK \?CND14
|
||||||
|
PRINTI ", as well as "
|
||||||
|
CALL PRINT-CONTENTS,DESK
|
||||||
|
?CND14: PRINTR "."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT GENERIC-DESK-F,OBJ
|
||||||
|
CALL IN-LAB?,HERE
|
||||||
|
ZERO? STACK /?ELS5
|
||||||
|
RETURN DESK
|
||||||
|
?ELS5: EQUAL? HERE,OFFICE \?ELS7
|
||||||
|
RETURN KEMP-DESK
|
||||||
|
?ELS7: ZERO? SUB-IN-DOME /FALSE
|
||||||
|
RETURN BLY-DESK
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT HALLWAY-F,RARG=0
|
||||||
|
EQUAL? RARG,M-LOOK \?ELS5
|
||||||
|
PRINTI "You're in a "
|
||||||
|
PRINTD HALLWAY
|
||||||
|
PRINTI ", with "
|
||||||
|
PRINTD YOUR-LABORATORY
|
||||||
|
PRINTI " to the west, a "
|
||||||
|
PRINTD LAB-STORAGE
|
||||||
|
PRINTI " to the south, and "
|
||||||
|
PRINTD OFFICE
|
||||||
|
PRINTI " to the east. An "
|
||||||
|
PRINTD ELECTRICAL-CONTROL-PANEL
|
||||||
|
PRINTR " fills most of the north wall."
|
||||||
|
?ELS5: EQUAL? RARG,M-ENTER \FALSE
|
||||||
|
FSET? CIRCUIT-BREAKER,MUNGBIT \FALSE
|
||||||
|
CALL TELL-HINT,31,ELECTRICAL-CONTROL-PANEL,0
|
||||||
|
RSTACK
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT ELECTRICAL-CONTROL-PANEL-F
|
||||||
|
EQUAL? PRSA,V?EXAMINE,V?ANALYZE \?ELS5
|
||||||
|
FSET? CIRCUIT-BREAKER,OPENBIT \?ELS5
|
||||||
|
CALL THIS-IS-IT,CIRCUIT-BREAKER
|
||||||
|
PRINTI "A "
|
||||||
|
PRINTD CIRCUIT-BREAKER
|
||||||
|
PRINTI " on the "
|
||||||
|
PRINTD ELECTRICAL-CONTROL-PANEL
|
||||||
|
PRINTI " is open. This "
|
||||||
|
PRINTD CIRCUIT-BREAKER
|
||||||
|
PRINTI " controls the "
|
||||||
|
PRINTD POWER-SUPPLY
|
||||||
|
PRINTI " to the "
|
||||||
|
PRINTD VIDEOPHONE
|
||||||
|
PRINTI " and other equipment in the private "
|
||||||
|
PRINTD VIDEOPHONE
|
||||||
|
PRINTI " network."
|
||||||
|
CRLF
|
||||||
|
IN? TIP,HERE \TRUE
|
||||||
|
CALL TIP-SAYS
|
||||||
|
PRINTR "How did that happen? You didn't overload the circuit."""
|
||||||
|
?ELS5: EQUAL? PRSA,V?OPEN \FALSE
|
||||||
|
PRINTI "You don't need to open the "
|
||||||
|
PRINTD ELECTRICAL-CONTROL-PANEL
|
||||||
|
PRINTR "."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT CIRCUIT-BREAKER-F,V
|
||||||
|
EQUAL? PRSA,V?EXAMINE,V?ANALYZE \?ELS5
|
||||||
|
FSET? PRSO,OPENBIT \?ELS5
|
||||||
|
CALL TELL-HINT,31,ELECTRICAL-CONTROL-PANEL,0
|
||||||
|
RSTACK
|
||||||
|
?ELS5: EQUAL? PRSA,V?TURN,V?MOVE /?THN10
|
||||||
|
EQUAL? PRSA,V?FIX,V?PUSH,V?CLOSE \?ELS9
|
||||||
|
?THN10: FSET? PRSO,OPENBIT \?ELS16
|
||||||
|
FSET PRSO,NDESCBIT
|
||||||
|
CALL OKAY,CIRCUIT-BREAKER,STR?17
|
||||||
|
FSET? PRSO,MUNGBIT \TRUE
|
||||||
|
SET 'BREAKER-JUST-FIXED,1
|
||||||
|
FCLEAR PRSO,MUNGBIT
|
||||||
|
FCLEAR VIDEOPHONE,MUNGBIT
|
||||||
|
FSET VIDEOPHONE,ONBIT
|
||||||
|
CALL SCORE-OBJ,CIRCUIT-BREAKER
|
||||||
|
RTRUE
|
||||||
|
?ELS16: CALL ALREADY,CIRCUIT-BREAKER,STR?17
|
||||||
|
RSTACK
|
||||||
|
?ELS9: EQUAL? PRSA,V?OPEN \FALSE
|
||||||
|
FSET? PRSO,OPENBIT \?ELS28
|
||||||
|
CALL ALREADY,CIRCUIT-BREAKER,STR?23
|
||||||
|
RSTACK
|
||||||
|
?ELS28: PRINTR "You shouldn't do that."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT GENERIC-STORAGE-ROOM-F,OBJ
|
||||||
|
ZERO? SUB-IN-DOME /?ELS5
|
||||||
|
RETURN DOME-STORAGE
|
||||||
|
?ELS5: ZERO? SUB-IN-TANK /FALSE
|
||||||
|
RETURN LAB-STORAGE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT GENERIC-OFFICE-F,OBJ
|
||||||
|
ZERO? SUB-IN-DOME /?ELS5
|
||||||
|
RETURN BLY-OFFICE
|
||||||
|
?ELS5: ZERO? SUB-IN-TANK /FALSE
|
||||||
|
RETURN OFFICE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT OFFICE-F,ARG=0
|
||||||
|
EQUAL? ARG,M-LOOK \?ELS5
|
||||||
|
PRINTI "You're in the office of your "
|
||||||
|
PRINTD LAB-ASSISTANT
|
||||||
|
PRINTI ", "
|
||||||
|
PRINTD GLOBAL-SHARON
|
||||||
|
PRINTI ". There is a desk and chair here, and the "
|
||||||
|
PRINTD OFFICE-DOOR
|
||||||
|
PRINTI " leading out to the parking lot. To the west, a "
|
||||||
|
PRINTD HALLWAY
|
||||||
|
PRINTI " leads back to "
|
||||||
|
PRINTD YOUR-LABORATORY
|
||||||
|
PRINTR "."
|
||||||
|
?ELS5: IN? SHARON,OFFICE \?ELS9
|
||||||
|
EQUAL? ARG,M-BEG \?ELS9
|
||||||
|
CALL EXIT-VERB?
|
||||||
|
ZERO? STACK /?ELS9
|
||||||
|
FSET SHARON,NDESCBIT
|
||||||
|
FSET FILE-DRAWER,NDESCBIT
|
||||||
|
FSET PAPERS,NDESCBIT
|
||||||
|
RFALSE
|
||||||
|
?ELS9: EQUAL? ARG,M-ENTER \FALSE
|
||||||
|
FCLEAR SHARON,NDESCBIT
|
||||||
|
FCLEAR FILE-DRAWER,NDESCBIT
|
||||||
|
FCLEAR PAPERS,NDESCBIT
|
||||||
|
IN? SHARON,OFFICE \FALSE
|
||||||
|
CALL THIS-IS-IT,SHARON
|
||||||
|
CALL THIS-IS-IT,FILE-DRAWER
|
||||||
|
PRINTI "As you enter, Sharon is hastily going through the contents of an open "
|
||||||
|
PRINTD FILE-DRAWER
|
||||||
|
PRINTR ". She turns with a startled expression as you appear in the doorway. Her face is flushed and her manner seems slightly emotional."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT OFFICE-DOOR-F
|
||||||
|
EQUAL? PRSA,V?OPEN \FALSE
|
||||||
|
PRINTR "There's nothing outside to help your mission!"
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT PAPERS-F,X
|
||||||
|
EQUAL? PRSA,V?LOOK-UP \?ELS5
|
||||||
|
EQUAL? PRSI,PAPERS,FILE-DRAWER \?ELS5
|
||||||
|
FSET? PRSO,PERSON \?ELS10
|
||||||
|
GETP LOCAL-SUB,P?TEXT
|
||||||
|
PRINT STACK
|
||||||
|
CRLF
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS10: PRINTI "There's no information in the drawer about that."
|
||||||
|
?CND8: CRLF
|
||||||
|
RTRUE
|
||||||
|
?ELS5: EQUAL? PRSA,V?CLOSE \?ELS18
|
||||||
|
IN? SHARON,OFFICE \?ELS18
|
||||||
|
PRINTI "Sharon stops you from closing it. ""Hey, "
|
||||||
|
CALL PRINT-NAME,FIRST-NAME
|
||||||
|
PRINTR "! I can't do my job here if you interfere!"""
|
||||||
|
?ELS18: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH,V?TAKE /?THN25
|
||||||
|
EQUAL? PRSA,V?READ,V?LOOK-INSIDE,V?EXAMINE \FALSE
|
||||||
|
?THN25: FSET? FILE-DRAWER,OPENBIT /?CND27
|
||||||
|
CALL TOO-BAD-BUT,FILE-DRAWER,STR?17
|
||||||
|
RTRUE
|
||||||
|
?CND27: FSET PAPERS,TOUCHBIT
|
||||||
|
PRINTI "You look "
|
||||||
|
EQUAL? P-ADVERB,W?CAREFULLY \?ELS34
|
||||||
|
PRINTI "more thoroughly through the drawer and still"
|
||||||
|
JUMP ?CND32
|
||||||
|
?ELS34: PRINTI "quickly through the drawer but"
|
||||||
|
?CND32: PRINTR " find nothing suspicious, so you decide to leave the papers alone."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT SOUTH-WALL-F,RARG=0
|
||||||
|
EQUAL? RARG,M-LOOK \FALSE
|
||||||
|
PRINTI "You're in the "
|
||||||
|
PRINTD SOUTH-WALL
|
||||||
|
PRINTI " of "
|
||||||
|
PRINTD YOUR-LABORATORY
|
||||||
|
PRINTI ", next to shelves full of chemical and electronic supplies. A door leads south to the "
|
||||||
|
PRINTD TEST-TANK
|
||||||
|
PRINTR "."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT CHEMICAL-SUPPLY-SHELVES-F
|
||||||
|
EQUAL? PRSA,V?PUT /?THN6
|
||||||
|
EQUAL? PRSA,V?LOOK-ON,V?LOOK-INSIDE,V?EXAMINE \FALSE
|
||||||
|
?THN6: FCLEAR CHEMICALS,NDESCBIT
|
||||||
|
RFALSE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT ELECTRONIC-SUPPLY-SHELVES-F
|
||||||
|
EQUAL? PRSA,V?PUT /?THN6
|
||||||
|
EQUAL? PRSA,V?LOOK-ON,V?LOOK-INSIDE,V?EXAMINE \FALSE
|
||||||
|
?THN6: FCLEAR ELECTRONICS,NDESCBIT
|
||||||
|
RFALSE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT WEST-WALL-F,RARG=0
|
||||||
|
EQUAL? RARG,M-LOOK \FALSE
|
||||||
|
PRINTI "You're in the "
|
||||||
|
PRINTD WEST-WALL
|
||||||
|
PRINTI " of "
|
||||||
|
PRINTD YOUR-LABORATORY
|
||||||
|
PRINTR ", next to a shelf full of mechanical supplies."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT MECHANICAL-SUPPLY-SHELVES-F
|
||||||
|
EQUAL? PRSA,V?PUT /?THN6
|
||||||
|
EQUAL? PRSA,V?LOOK-ON,V?LOOK-INSIDE,V?EXAMINE \FALSE
|
||||||
|
?THN6: FCLEAR MECHANICALS,NDESCBIT
|
||||||
|
RFALSE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT GENERIC-CENTER-F,OBJ
|
||||||
|
ZERO? SUB-IN-TANK /?ELS5
|
||||||
|
RETURN CENTER-OF-LAB
|
||||||
|
?ELS5: ZERO? SUB-IN-DOME /FALSE
|
||||||
|
RETURN CENTER-OF-DOME
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT CENTER-OF-LAB-F,RARG=0
|
||||||
|
EQUAL? RARG,M-BEG \?ELS5
|
||||||
|
LOC MICROPHONE
|
||||||
|
EQUAL? STACK,WINNER \?ELS5
|
||||||
|
CALL EXIT-VERB?
|
||||||
|
ZERO? STACK /?ELS5
|
||||||
|
CALL THIS-IS-IT,MICROPHONE
|
||||||
|
CALL HE-SHE-IT,WINNER,1
|
||||||
|
PRINTI " can't walk away while "
|
||||||
|
CALL HE-SHE-IT,WINNER
|
||||||
|
IN? MICROPHONE,PLAYER \?ELS12
|
||||||
|
PRINTI "'re"
|
||||||
|
JUMP ?CND10
|
||||||
|
?ELS12: PRINTI "'s"
|
||||||
|
?CND10: PRINTI " holding the "
|
||||||
|
PRINTD MICROPHONE
|
||||||
|
PRINTR "!"
|
||||||
|
?ELS5: EQUAL? RARG,M-LOOK \FALSE
|
||||||
|
PRINTI "You're at your workbench in the center of "
|
||||||
|
PRINTD YOUR-LABORATORY
|
||||||
|
PRINTI ", a small part of"
|
||||||
|
CALL RESEARCH-LAB
|
||||||
|
PRINTI " in the town of Frobton. The "
|
||||||
|
PRINTD VIDEOPHONE
|
||||||
|
PRINTI " screen looms overhead"
|
||||||
|
ZERO? ALARM-RINGING /?CND27
|
||||||
|
PRINTI ", with its "
|
||||||
|
PRINTD ALARM
|
||||||
|
PRINTI " ringing"
|
||||||
|
?CND27: PRINTR "."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT WORKBENCH-F
|
||||||
|
EQUAL? PRSA,V?PUT,V?LOOK-ON,V?LOOK-INSIDE /?THN6
|
||||||
|
EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE
|
||||||
|
?THN6: FCLEAR SUB-PLANS,NDESCBIT
|
||||||
|
RFALSE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT SUB-PLANS-F,X,STR
|
||||||
|
EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE
|
||||||
|
RANDOM 100
|
||||||
|
GRTR? 50,STACK /?PRD6
|
||||||
|
PUSH 0
|
||||||
|
JUMP ?PRD7
|
||||||
|
?PRD6: PUSH 1
|
||||||
|
?PRD7: SET 'X,STACK
|
||||||
|
SET 'STR,STR?117
|
||||||
|
PRINTI "Written in one corner is the legend:
|
||||||
|
|
||||||
|
"
|
||||||
|
ZERO? X /?CND10
|
||||||
|
PRINT STR
|
||||||
|
?CND10: PRINTI " Directed by Stu Galley
|
||||||
|
"
|
||||||
|
ZERO? X \?CND18
|
||||||
|
PRINT STR
|
||||||
|
?CND18: CRLF
|
||||||
|
CALL V-VERSION
|
||||||
|
RSTACK
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT GENERIC-MICROPHONE-F,OBJ
|
||||||
|
ZERO? SUB-IN-TANK /?ELS5
|
||||||
|
RETURN MICROPHONE
|
||||||
|
?ELS5: ZERO? SUB-IN-DOME /FALSE
|
||||||
|
RETURN MICROPHONE-DOME
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT MICROPHONE-F,DOME?=0
|
||||||
|
EQUAL? PRSA,V?EXAMINE \?ELS5
|
||||||
|
PRINTI "The "
|
||||||
|
PRINTD MICROPHONE
|
||||||
|
PRINTI " is connected to the "
|
||||||
|
PRINTD VIDEOPHONE
|
||||||
|
PRINTI " by a coiled cord. At the moment, it is turned o"
|
||||||
|
ZERO? DOME? /?ELS16
|
||||||
|
FSET? MICROPHONE-DOME,ONBIT /?THN13
|
||||||
|
?ELS16: ZERO? DOME? \?ELS12
|
||||||
|
FSET? MICROPHONE,ONBIT \?ELS12
|
||||||
|
?THN13: PRINTR "n."
|
||||||
|
?ELS12: PRINTR "ff."
|
||||||
|
?ELS5: EQUAL? PRSA,V?LAMP-OFF /?THN29
|
||||||
|
CALL DIVESTMENT?,MICROPHONE
|
||||||
|
ZERO? STACK \?THN29
|
||||||
|
CALL DIVESTMENT?,MICROPHONE-DOME
|
||||||
|
ZERO? STACK /?ELS26
|
||||||
|
?THN29: EQUAL? PRSO,MICROPHONE-DOME,MICROPHONE \?ELS26
|
||||||
|
EQUAL? VIDEOPHONE,REMOTE-PERSON-ON \?ELS26
|
||||||
|
PRINTI "You'd better say ""Good-bye"""
|
||||||
|
PRINTR " first."
|
||||||
|
?ELS26: EQUAL? PRSA,V?SAY-INTO,V?REPLY \?ELS34
|
||||||
|
FSET? VIDEOPHONE,ONBIT /?ELS34
|
||||||
|
PRINTI "That won't do any good while the "
|
||||||
|
PRINTD VIDEOPHONE
|
||||||
|
PRINTR " is off."
|
||||||
|
?ELS34: EQUAL? PRSA,V?SAY-INTO \?ELS40
|
||||||
|
EQUAL? REMOTE-PERSON-ON,VIDEOPHONE \?ELS45
|
||||||
|
PRINTD REMOTE-PERSON
|
||||||
|
PRINTR " nods at you."
|
||||||
|
?ELS45: ZERO? WOMAN-ON-SCREEN /?ELS49
|
||||||
|
PRINTR "That won't do any good while the sound is fuzzy."
|
||||||
|
?ELS49: PRINTR "It's not clear whom you're talking to."
|
||||||
|
?ELS40: EQUAL? PRSA,V?LAMP-ON \FALSE
|
||||||
|
IN? MICROPHONE,PLAYER /?THN61
|
||||||
|
IN? MICROPHONE-DOME,PLAYER \FALSE
|
||||||
|
?THN61: ZERO? DOME? /?ELS69
|
||||||
|
FSET? MICROPHONE-DOME,ONBIT /?THN66
|
||||||
|
?ELS69: ZERO? DOME? \?CND63
|
||||||
|
FSET? MICROPHONE,ONBIT \?CND63
|
||||||
|
?THN66: CALL ALREADY,MICROPHONE,STR?47
|
||||||
|
RTRUE
|
||||||
|
?CND63: ZERO? DOME? /?ELS76
|
||||||
|
CALL OKAY,MICROPHONE-DOME,STR?47
|
||||||
|
RSTACK
|
||||||
|
?ELS76: CALL OKAY,MICROPHONE,STR?47
|
||||||
|
RSTACK
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT TECHNICIAN-F
|
||||||
|
EQUAL? PRSA,V?$CALL /?THN6
|
||||||
|
EQUAL? PRSA,V?TAKE,V?PHONE,V?FIND \FALSE
|
||||||
|
?THN6: PRINTI "How can you do that? By telepathy or carrier pigeon? Seriously, "
|
||||||
|
PRINTI "your "
|
||||||
|
PRINTD LAB-ASSISTANT
|
||||||
|
PRINTR ", Sharon Kemp, is in her office, which is through a doorway to the east. Or, you could summon her by the intercom on your desk."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT GANGPLANK-F
|
||||||
|
EQUAL? PRSA,V?CLIMB-ON,V?CLIMB-DOWN,V?BOARD \FALSE
|
||||||
|
CALL DO-WALK,P?SOUTH
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT GENERIC-TANK-CONTROL-GEAR-F,OBJ
|
||||||
|
RETURN TANK-CONTROL-GEAR-1
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT GENERIC-TANK-AREA-F,OBJ
|
||||||
|
RETURN NORTH-TANK-AREA
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT TANK-AREA-F,RARG=0
|
||||||
|
EQUAL? RARG,M-LOOK \FALSE
|
||||||
|
USL
|
||||||
|
FSET NORTH-TANK-AREA,TOUCHBIT
|
||||||
|
FSET WEST-TANK-AREA,TOUCHBIT
|
||||||
|
FSET SOUTH-TANK-AREA,TOUCHBIT
|
||||||
|
EQUAL? HERE,NORTH-TANK-AREA \?ELS8
|
||||||
|
PRINTI "You're at a temporary runway or gangplank that leads from the walkway to the entry hatch of the "
|
||||||
|
PRINTD GLOBAL-SUB
|
||||||
|
CALL DDESC,STR?120,SUB-DOOR,STR?121
|
||||||
|
JUMP ?CND6
|
||||||
|
?ELS8: EQUAL? HERE,WEST-TANK-AREA \?CND6
|
||||||
|
PRINTI "You're at a "
|
||||||
|
PRINTD WORK-COUNTER
|
||||||
|
PRINTI ", next to the "
|
||||||
|
PRINTD TANK-CONTROL-GEAR-1
|
||||||
|
PRINTI " used to operate the "
|
||||||
|
PRINTD TEST-TANK
|
||||||
|
PRINTI ".
|
||||||
|
"
|
||||||
|
?CND6: PRINTI "The test tank (which is now "
|
||||||
|
ZERO? TEST-TANK-FULL /?ELS19
|
||||||
|
PRINTI "filled with "
|
||||||
|
JUMP ?CND17
|
||||||
|
?ELS19: PRINTI "empty of "
|
||||||
|
?CND17: PRINTD GLOBAL-WATER
|
||||||
|
PRINTI ") is located in a large work room, just south of "
|
||||||
|
PRINTD YOUR-LABORATORY
|
||||||
|
PRINTI ", with concrete-block walls on three sides and a high metal roof. Most of its floor is dug out and lined with steel, to form the huge tank used for developing and testing "
|
||||||
|
PRINTD UNDERWATER
|
||||||
|
PRINTR " gear and the pilot models of your submarine craft.
|
||||||
|
There's a walkway around the tank on three sides -- north, west and south. On the east side, a steel gate forms the wall of the room."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT FRESH-AIR?,RM,P,L,T,O
|
||||||
|
ZERO? DOME-AIR-BAD? /?CND1
|
||||||
|
ZERO? SUB-IN-DOME /?CND1
|
||||||
|
PRINTR "It's impossible to tell that way whether the air is good."
|
||||||
|
?CND1: SET 'P,0
|
||||||
|
?PRG8: NEXTP HERE,P >P
|
||||||
|
ZERO? P /FALSE
|
||||||
|
LESS? P,LOW-DIRECTION /?PRG8
|
||||||
|
GETPT HERE,P >T
|
||||||
|
PTSIZE T >L
|
||||||
|
EQUAL? L,DEXIT \?PRG8
|
||||||
|
GETB T,DEXITOBJ >O
|
||||||
|
FSET? O,OPENBIT \?PRG8
|
||||||
|
PRINTI "There's a pleasant breeze coming through the "
|
||||||
|
PRINTD O
|
||||||
|
PRINTR "."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT CORRIDOR-LOOK,ITM=0,C,Z,COR,VAL,FOUND=0
|
||||||
|
GETP HERE,P?CORRIDOR >C
|
||||||
|
ZERO? C /FALSE
|
||||||
|
?PRG6: SUB C,8192 >Z
|
||||||
|
LESS? Z,0 /?ELS10
|
||||||
|
SET 'COR,COR-20000
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS10: SUB C,4096 >Z
|
||||||
|
LESS? Z,0 /?ELS12
|
||||||
|
SET 'COR,COR-10000
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS12: SUB C,2048 >Z
|
||||||
|
LESS? Z,0 /?ELS14
|
||||||
|
SET 'COR,COR-4000
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS14: SUB C,1024 >Z
|
||||||
|
LESS? Z,0 /?ELS16
|
||||||
|
SET 'COR,COR-2000
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS16: SUB C,512 >Z
|
||||||
|
LESS? Z,0 /?ELS18
|
||||||
|
SET 'COR,COR-1000
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS18: SUB C,256 >Z
|
||||||
|
LESS? Z,0 /?ELS20
|
||||||
|
SET 'COR,COR-400
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS20: SUB C,128 >Z
|
||||||
|
LESS? Z,0 /?ELS22
|
||||||
|
SET 'COR,COR-200
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS22: SUB C,64 >Z
|
||||||
|
LESS? Z,0 /?ELS24
|
||||||
|
SET 'COR,COR-64
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS24: SUB C,32 >Z
|
||||||
|
LESS? Z,0 /?ELS26
|
||||||
|
SET 'COR,COR-32
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS26: SUB C,16 >Z
|
||||||
|
LESS? Z,0 /?ELS28
|
||||||
|
SET 'COR,COR-16
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS28: SUB C,8 >Z
|
||||||
|
LESS? Z,0 /?ELS30
|
||||||
|
SET 'COR,COR-8
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS30: SUB C,4 >Z
|
||||||
|
LESS? Z,0 /?ELS32
|
||||||
|
SET 'COR,COR-4
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS32: SUB C,2 >Z
|
||||||
|
LESS? Z,0 /?ELS34
|
||||||
|
SET 'COR,COR-2
|
||||||
|
JUMP ?CND8
|
||||||
|
?ELS34: SUB C,1 >Z
|
||||||
|
LESS? Z,0 /?REP7
|
||||||
|
SET 'COR,COR-1
|
||||||
|
?CND8: CALL CORRIDOR-CHECK,COR,ITM >VAL
|
||||||
|
ZERO? FOUND \?CND39
|
||||||
|
SET 'FOUND,VAL
|
||||||
|
?CND39: SET 'C,Z
|
||||||
|
JUMP ?PRG6
|
||||||
|
?REP7: RETURN FOUND
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT CORRIDOR-CHECK,COR,ITM,CNT=2,PAST=0,FOUND=0,RM,OBJ
|
||||||
|
?PRG1: GET COR,CNT >RM
|
||||||
|
ZERO? RM /FALSE
|
||||||
|
EQUAL? RM,HERE \?ELS7
|
||||||
|
SET 'PAST,1
|
||||||
|
JUMP ?CND3
|
||||||
|
?ELS7: FIRST? RM >OBJ \?CND3
|
||||||
|
?PRG10: ZERO? ITM /?ELS14
|
||||||
|
EQUAL? OBJ,ITM \?CND12
|
||||||
|
GET COR,PAST >FOUND
|
||||||
|
JUMP ?REP11
|
||||||
|
?ELS14: FSET? OBJ,PERSON \?CND12
|
||||||
|
FSET? OBJ,INVISIBLE /?CND12
|
||||||
|
FSET? OBJ,NDESCBIT /?CND12
|
||||||
|
CALL IS-CREW?,OBJ
|
||||||
|
ZERO? STACK /?ELS25
|
||||||
|
CALL CREW-5-TOGETHER?
|
||||||
|
ZERO? STACK /?ELS25
|
||||||
|
FSET? BLY,MUNGBIT /?ELS25
|
||||||
|
EQUAL? OBJ,LOWELL \?CND23
|
||||||
|
PRINTI "The five "
|
||||||
|
PRINTD CREW
|
||||||
|
PRINTI " members are off to "
|
||||||
|
GET COR,PAST
|
||||||
|
CALL DIR-PRINT,STACK
|
||||||
|
PRINTI "."
|
||||||
|
CRLF
|
||||||
|
JUMP ?CND23
|
||||||
|
?ELS25: FSET? OBJ,TOUCHBIT /?ELS36
|
||||||
|
PRINTI "Someone is off to "
|
||||||
|
GET COR,PAST
|
||||||
|
CALL DIR-PRINT,STACK
|
||||||
|
PRINTI "."
|
||||||
|
CRLF
|
||||||
|
JUMP ?CND12
|
||||||
|
?ELS36: PRINTD OBJ
|
||||||
|
PRINTI " is off to "
|
||||||
|
GET COR,PAST
|
||||||
|
CALL DIR-PRINT,STACK
|
||||||
|
PRINTI "."
|
||||||
|
CRLF
|
||||||
|
?CND23:
|
||||||
|
?CND12: NEXT? OBJ >OBJ /?KLU54
|
||||||
|
?KLU54: ZERO? OBJ \?PRG10
|
||||||
|
?REP11: ZERO? FOUND /?CND3
|
||||||
|
RETURN FOUND
|
||||||
|
?CND3: INC 'CNT
|
||||||
|
JUMP ?PRG1
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT COR-DIR,HERE,THERE,COR,RM,PAST=0,CNT=2,?TMP1
|
||||||
|
GETP THERE,P?CORRIDOR >?TMP1
|
||||||
|
GETP HERE,P?CORRIDOR
|
||||||
|
BAND ?TMP1,STACK
|
||||||
|
CALL GET-COR,STACK >COR
|
||||||
|
?PRG1: GET COR,CNT >RM
|
||||||
|
EQUAL? RM,HERE \?ELS5
|
||||||
|
SET 'PAST,1
|
||||||
|
JUMP ?REP2
|
||||||
|
?ELS5: EQUAL? RM,THERE \?CND3
|
||||||
|
JUMP ?REP2
|
||||||
|
?CND3: INC 'CNT
|
||||||
|
JUMP ?PRG1
|
||||||
|
?REP2: GET COR,PAST
|
||||||
|
RSTACK
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT GET-COR,NUM
|
||||||
|
EQUAL? NUM,1 \?ELS5
|
||||||
|
RETURN COR-1
|
||||||
|
?ELS5: EQUAL? NUM,2 \?ELS7
|
||||||
|
RETURN COR-2
|
||||||
|
?ELS7: EQUAL? NUM,4 \?ELS9
|
||||||
|
RETURN COR-4
|
||||||
|
?ELS9: EQUAL? NUM,8 \?ELS11
|
||||||
|
RETURN COR-8
|
||||||
|
?ELS11: EQUAL? NUM,16 \?ELS13
|
||||||
|
RETURN COR-16
|
||||||
|
?ELS13: EQUAL? NUM,32 \?ELS15
|
||||||
|
RETURN COR-32
|
||||||
|
?ELS15: EQUAL? NUM,64 \?ELS17
|
||||||
|
RETURN COR-64
|
||||||
|
?ELS17: EQUAL? NUM,128 \?ELS19
|
||||||
|
RETURN COR-200
|
||||||
|
?ELS19: EQUAL? NUM,256 \?ELS21
|
||||||
|
RETURN COR-400
|
||||||
|
?ELS21: EQUAL? NUM,512 \?ELS23
|
||||||
|
RETURN COR-1000
|
||||||
|
?ELS23: EQUAL? NUM,1024 \?ELS25
|
||||||
|
RETURN COR-2000
|
||||||
|
?ELS25: EQUAL? NUM,2048 \?ELS27
|
||||||
|
RETURN COR-4000
|
||||||
|
?ELS27: EQUAL? NUM,4096 \?ELS29
|
||||||
|
RETURN COR-10000
|
||||||
|
?ELS29: RETURN COR-20000
|
||||||
|
|
||||||
|
.ENDI
|
1126
places.zil
Normal file
1126
places.zil
Normal file
File diff suppressed because it is too large
Load diff
48
reg.errors
Normal file
48
reg.errors
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
Assembling REG.XZAP.1
|
||||||
|
Release: 16
|
||||||
|
|
||||||
|
64 Inserting J1FREQ.XZAP.7 (620 bytes)
|
||||||
|
684 Inserting J1DAT.ZAP.1 (22305 bytes)
|
||||||
|
22989 Inserting MACROS.ZAP.1 (104 bytes)
|
||||||
|
23093 Inserting MAIN.ZAP.1 (2259 bytes)
|
||||||
|
25352 Inserting CLOCK.ZAP.1 (186 bytes)
|
||||||
|
25538 Inserting SUB.ZAP.3 (16341 bytes)
|
||||||
|
41879 Inserting BATTLE.ZAP.2 (5651 bytes)
|
||||||
|
47530 Inserting DOME.ZAP.1 (9902 bytes)
|
||||||
|
57432 Inserting PLACES.ZAP.1 (4753 bytes)
|
||||||
|
62185 Inserting PEOPLE.ZAP.1 (15561 bytes)
|
||||||
|
77746 Inserting THINGS.ZAP.1 (2058 bytes)
|
||||||
|
79804 Inserting GLOBAL.ZAP.1 (5836 bytes)
|
||||||
|
85640 Inserting PARSER.ZAP.1 (5735 bytes)
|
||||||
|
91375 Inserting SYNTAX.ZAP.1 (778 bytes)
|
||||||
|
92153 Inserting VERBS.ZAP.4 (15692 bytes)
|
||||||
|
107845 Inserting EVENTS.ZAP.1 (7364 bytes)
|
||||||
|
115209 Inserting J1STR.ZAP.1 (2553 bytes)
|
||||||
|
|
||||||
|
Symbols unused:
|
||||||
|
SERIAL
|
||||||
|
DIR-FROM
|
||||||
|
V-SEND-FOR
|
||||||
|
V-KICK
|
||||||
|
LIT?
|
||||||
|
NO-TOUCH
|
||||||
|
FOLLOWED?
|
||||||
|
NOT-IMPORTANT
|
||||||
|
ZPROB
|
||||||
|
BIGFIX
|
||||||
|
GWIM-DISABLE
|
||||||
|
|
||||||
|
|
||||||
|
255 objects.
|
||||||
|
239 globals.
|
||||||
|
911 word vocabulary.
|
||||||
|
|
||||||
|
117762 bytes (116K).
|
||||||
|
22989 bytes of preload.
|
||||||
|
|
||||||
|
Total 4098 bytes too large for TI-99/4-A.
|
||||||
|
Preload 461 bytes too large for TI-99/4-A.
|
||||||
|
Preload 5581 bytes too large for BBC Acorn.
|
||||||
|
Preload 461 bytes too large for TRS-80 CoCo 2.
|
||||||
|
Pure 565 bytes too large for Atari.
|
||||||
|
|
1
reg.serial
Normal file
1
reg.serial
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1
|
18
reg.xzap
Normal file
18
reg.xzap
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
.INSERT "J1FREQ"
|
||||||
|
.INSERT "J1DAT.ZAP.1"
|
||||||
|
.INSERT "MACROS"
|
||||||
|
.INSERT "MAIN"
|
||||||
|
.INSERT "CLOCK"
|
||||||
|
.INSERT "SUB"
|
||||||
|
.INSERT "BATTLE"
|
||||||
|
.INSERT "DOME"
|
||||||
|
.INSERT "PLACES"
|
||||||
|
.INSERT "PEOPLE"
|
||||||
|
.INSERT "THINGS"
|
||||||
|
.INSERT "GLOBAL"
|
||||||
|
.INSERT "PARSER"
|
||||||
|
.INSERT "SYNTAX"
|
||||||
|
.INSERT "VERBS"
|
||||||
|
.INSERT "EVENTS"
|
||||||
|
.INSERT "J1STR"
|
||||||
|
.END
|
78
syntax.zap
Normal file
78
syntax.zap
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT BUZZER-WORD?,WORD
|
||||||
|
CALL QUESTION-WORD?,WORD
|
||||||
|
ZERO? STACK \TRUE
|
||||||
|
CALL NUMBER-WORD?,WORD
|
||||||
|
ZERO? STACK \TRUE
|
||||||
|
CALL NAUGHTY-WORD?,WORD
|
||||||
|
ZERO? STACK \TRUE
|
||||||
|
EQUAL? WORD,W?ALL,W?AGAIN,W?G \FALSE
|
||||||
|
PRINTI "(Sorry, but in this story you can't use the word """
|
||||||
|
PRINTB WORD
|
||||||
|
PRINTR """.)"
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT QUESTION-WORD?,WORD
|
||||||
|
EQUAL? WORD,W?WHERE \?ELS5
|
||||||
|
PRINTI "(To locate something, use the command: FIND "
|
||||||
|
PRINTD SOMETHING
|
||||||
|
PRINTR ".)"
|
||||||
|
?ELS5: EQUAL? WORD,W?WHAT,W?WHAT'S /?THN10
|
||||||
|
EQUAL? WORD,W?WHO,W?WHO'S \?ELS9
|
||||||
|
?THN10: PRINTI "(To ask about something, use the command: TELL ME ABOUT "
|
||||||
|
PRINTD SOMETHING
|
||||||
|
PRINTR ".)"
|
||||||
|
?ELS9: EQUAL? WORD,W?THAT'S,W?IT'S /?THN16
|
||||||
|
EQUAL? WORD,W?WHY,W?HOW,W?WHEN /?THN16
|
||||||
|
EQUAL? WORD,W?IS,W?DID,W?ARE /?THN16
|
||||||
|
EQUAL? WORD,W?DO,W?HAVE,W?ANY /?THN16
|
||||||
|
EQUAL? WORD,W?AM,W?I'M,W?WE'RE /?THN16
|
||||||
|
EQUAL? WORD,W?WILL,W?WAS,W?WERE /?THN16
|
||||||
|
EQUAL? WORD,W?I'LL,W?CAN,W?WHICH /?THN16
|
||||||
|
EQUAL? WORD,W?I'VE,W?WON'T,W?HAS /?THN16
|
||||||
|
EQUAL? WORD,W?YOU'RE,W?HE'S,W?SHE'S /?THN16
|
||||||
|
EQUAL? WORD,W?SHOULD,W?WOULD,W?WHEN'S /?THN16
|
||||||
|
EQUAL? WORD,W?THEY'RE,W?COULD,W?SHALL \FALSE
|
||||||
|
?THN16: PRINTI "(Please use commands"
|
||||||
|
INC 'QUESTION-WORD-COUNT
|
||||||
|
GRTR? QUESTION-WORD-COUNT,9 \?ELS22
|
||||||
|
SET 'QUESTION-WORD-COUNT,0
|
||||||
|
PRINTR "! Your commands tell the computer what you want to do in the story. You can give commands to other people in the story, too. Here are examples of commands:
|
||||||
|
TURN ON THE LAMP
|
||||||
|
LOOK UNDER THE RUG
|
||||||
|
SHARON, GIVE THE BOOK TO TIP
|
||||||
|
BILL, HELP ME
|
||||||
|
Now you can try again.)"
|
||||||
|
?ELS22: PRINTR ", not statements or questions.)"
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT NUMBER-WORD?,WRD
|
||||||
|
EQUAL? WRD,W?ZERO /?THN6
|
||||||
|
EQUAL? WRD,W?TWO,W?THREE,W?FOUR /?THN6
|
||||||
|
EQUAL? WRD,W?FIVE,W?SIX,W?SEVEN /?THN6
|
||||||
|
EQUAL? WRD,W?EIGHT,W?NINE,W?TEN /?THN6
|
||||||
|
EQUAL? WRD,W?ELEVEN,W?TWELVE,W?THIRTE /?THN6
|
||||||
|
EQUAL? WRD,W?FOURTE,W?FIFTEE,W?SIXTEE /?THN6
|
||||||
|
EQUAL? WRD,W?SEVENT,W?EIGHTE,W?NINETE /?THN6
|
||||||
|
EQUAL? WRD,W?TWENTY,W?THIRTY,W?FORTY /?THN6
|
||||||
|
EQUAL? WRD,W?FIFTY,W?SIXTY,W?EIGHTY /?THN6
|
||||||
|
EQUAL? WRD,W?NINETY,W?HUNDRE,W?THOUSA /?THN6
|
||||||
|
EQUAL? WRD,W?MILLIO,W?BILLIO,W?ONE \FALSE
|
||||||
|
?THN6: PRINTR "(Use numerals for numbers, for example ""10."")"
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT NAUGHTY-WORD?,WORD
|
||||||
|
EQUAL? WORD,W?CURSE,W?CURSES,W?CUSS /?THN6
|
||||||
|
EQUAL? WORD,W?DAMN,W?SHIT,W?FUCK /?THN6
|
||||||
|
EQUAL? WORD,W?FUDGE,W?PISS,W?PEE /?THN6
|
||||||
|
EQUAL? WORD,W?SUCK /?THN6
|
||||||
|
EQUAL? WORD,W?POO,W?SNOT,W?BASTARD \FALSE
|
||||||
|
?THN6: PRINTC 40
|
||||||
|
CALL PICK-ONE,OFFENDED
|
||||||
|
PRINT STACK
|
||||||
|
PRINTC 41
|
||||||
|
CRLF
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
.ENDI
|
853
syntax.zil
Normal file
853
syntax.zil
Normal file
|
@ -0,0 +1,853 @@
|
||||||
|
"SYNTAX for SEASTALKER
|
||||||
|
Copyright (C) 1984 Infocom, Inc. All rights reserved."
|
||||||
|
|
||||||
|
"SUBTITLE VOCABULARY"
|
||||||
|
|
||||||
|
<BUZZ A AN THE AND OF THEN ONE ;BUT ;EXCEPT \. \, \" \! \? ;Y BACK
|
||||||
|
;CARRYING ;HOLDING FIRST NOW SOON WELL THERE ;YOUR ;YOU PLEASE MAYBE
|
||||||
|
CAREFULLY CLOSELY ;THOROUGHLY QUIETLY SLOWLY QUICKLY BRIEFLY PRIVATELY
|
||||||
|
ALL AGAIN G
|
||||||
|
AM ANY ARE CAN COULD DID DO
|
||||||
|
HAS HAVE HE\'S HOW
|
||||||
|
IS IT\'S I\'LL I\'M I\'VE LET\'S SHALL SHE\'S SHOULD
|
||||||
|
THAT\'S THEY\'RE WAS WERE WE\'RE
|
||||||
|
WHAT WHAT\'S WHEN WHEN\'S WHERE WHICH WHO WHO\'S WHY
|
||||||
|
WILL WON\'T WOULD YOU\'RE
|
||||||
|
ZERO TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE TEN ELEVEN TWELVE THIRTE
|
||||||
|
FOURTE FIFTEE SIXTEE SEVENT EIGHTE NINETE TWENTY THIRTY FORTY
|
||||||
|
FIFTY SIXTY EIGHTY NINETY HUNDRE THOUSA MILLIO BILLIO
|
||||||
|
CURSE CURSES CUSS DAMN SHIT SUCK FUCK FUDGE PISS PEE POO SNOT BASTARD>
|
||||||
|
|
||||||
|
<ROUTINE BUZZER-WORD? (WORD)
|
||||||
|
<COND (<QUESTION-WORD? .WORD> <RTRUE>)
|
||||||
|
( <NUMBER-WORD? .WORD> <RTRUE>)
|
||||||
|
( <NAUGHTY-WORD? .WORD> <RTRUE>)
|
||||||
|
(<EQUAL? .WORD ,W?ALL ,W?AGAIN ,W?G>
|
||||||
|
<TELL "(Sorry, but in this story you can't use the word \"">
|
||||||
|
<PRINTB .WORD>
|
||||||
|
<TELL "\".)" CR>)>>
|
||||||
|
|
||||||
|
<GLOBAL QUESTION-WORD-COUNT 0>
|
||||||
|
<ROUTINE QUESTION-WORD? (WORD)
|
||||||
|
<COND (<EQUAL? .WORD ,W?WHERE ;",W?THERE ,W?SEEN">
|
||||||
|
<TELL
|
||||||
|
"(To locate something, use the command: FIND " D ,SOMETHING ".)" CR>)
|
||||||
|
(<OR <EQUAL? .WORD ,W?WHAT ,W?WHAT\'S>
|
||||||
|
<EQUAL? .WORD ,W?WHO ,W?WHO\'S>>
|
||||||
|
<TELL
|
||||||
|
"(To ask about something, use the command: TELL ME ABOUT " D ,SOMETHING ".)"
|
||||||
|
CR>)
|
||||||
|
(<OR <EQUAL? .WORD ,W?THAT\'S ,W?IT\'S>
|
||||||
|
<EQUAL? .WORD ,W?WHY ,W?HOW ,W?WHEN>
|
||||||
|
<EQUAL? .WORD ,W?IS ,W?DID ,W?ARE>
|
||||||
|
<EQUAL? .WORD ,W?DO ,W?HAVE ,W?ANY>
|
||||||
|
<EQUAL? .WORD ,W?AM ,W?I\'M ,W?WE\'RE>
|
||||||
|
<EQUAL? .WORD ,W?WILL ,W?WAS ,W?WERE>
|
||||||
|
<EQUAL? .WORD ,W?I\'LL ,W?CAN ,W?WHICH>
|
||||||
|
<EQUAL? .WORD ,W?I\'VE ,W?WON\'T ,W?HAS>
|
||||||
|
<EQUAL? .WORD ,W?YOU\'RE ,W?HE\'S ,W?SHE\'S>
|
||||||
|
<EQUAL? .WORD ,W?SHOULD ,W?WOULD ,W?WHEN\'S>
|
||||||
|
<EQUAL? .WORD ,W?THEY\'RE ,W?COULD ,W?SHALL>>
|
||||||
|
<TELL "(Please use commands">
|
||||||
|
<INC QUESTION-WORD-COUNT>
|
||||||
|
<COND (<G? ,QUESTION-WORD-COUNT 9>
|
||||||
|
<SETG QUESTION-WORD-COUNT 0>
|
||||||
|
%<XTELL
|
||||||
|
"! Your commands tell the computer what you want to do in the story. You
|
||||||
|
can give commands to other people in the story, too. Here are examples
|
||||||
|
of commands:|
|
||||||
|
TURN ON THE LAMP|
|
||||||
|
LOOK UNDER THE RUG|
|
||||||
|
SHARON, GIVE THE BOOK TO TIP|
|
||||||
|
BILL, HELP ME|
|
||||||
|
Now you can try again.)" CR>)
|
||||||
|
(T %<XTELL ", not statements or questions.)" CR>)>
|
||||||
|
<RTRUE>)>>
|
||||||
|
|
||||||
|
<ROUTINE NUMBER-WORD? (WRD)
|
||||||
|
<COND (<OR <EQUAL? .WRD ,W?ZERO>
|
||||||
|
<EQUAL? .WRD ,W?TWO ,W?THREE ,W?FOUR>
|
||||||
|
<EQUAL? .WRD ,W?FIVE ,W?SIX ,W?SEVEN>
|
||||||
|
<EQUAL? .WRD ,W?EIGHT ,W?NINE ,W?TEN>
|
||||||
|
<EQUAL? .WRD ,W?ELEVEN ,W?TWELVE ,W?THIRTE>
|
||||||
|
<EQUAL? .WRD ,W?FOURTE ,W?FIFTEE ,W?SIXTEE>
|
||||||
|
<EQUAL? .WRD ,W?SEVENT ,W?EIGHTE ,W?NINETE>
|
||||||
|
<EQUAL? .WRD ,W?TWENTY ,W?THIRTY ,W?FORTY>
|
||||||
|
<EQUAL? .WRD ,W?FIFTY ,W?SIXTY ,W?EIGHTY>
|
||||||
|
<EQUAL? .WRD ,W?NINETY ,W?HUNDRE ,W?THOUSA>
|
||||||
|
<EQUAL? .WRD ,W?MILLIO ,W?BILLIO ,W?ONE>>
|
||||||
|
<TELL "(Use numerals for numbers, for example \"10.\")" CR>
|
||||||
|
<RTRUE>)>>
|
||||||
|
|
||||||
|
<ROUTINE NAUGHTY-WORD? (WORD)
|
||||||
|
<COND (<OR <EQUAL? .WORD ,W?CURSE ,W?CURSES ,W?CUSS>
|
||||||
|
<EQUAL? .WORD ,W?DAMN ,W?SHIT ,W?FUCK>
|
||||||
|
<EQUAL? .WORD ,W?FUDGE ,W?PISS ,W?PEE>
|
||||||
|
<EQUAL? .WORD ,W?SUCK>
|
||||||
|
<EQUAL? .WORD ,W?POO ,W?SNOT ,W?BASTARD>>
|
||||||
|
<PRINTC %<ASCII !\(>>
|
||||||
|
<TELL <PICK-ONE ,OFFENDED>>
|
||||||
|
<PRINTC %<ASCII !\)>>
|
||||||
|
<CRLF>)>>
|
||||||
|
|
||||||
|
<GLOBAL OFFENDED
|
||||||
|
<LTABLE "You ought to be ashamed of yourself!"
|
||||||
|
"Hey, save that talk for the locker room!"
|
||||||
|
"Step outside and say that!"
|
||||||
|
"And so's your old man!">>
|
||||||
|
|
||||||
|
<SYNONYM WITH USING BY>
|
||||||
|
<SYNONYM THROUGH THRU>
|
||||||
|
<SYNONYM IN INSIDE INTO>
|
||||||
|
<SYNONYM ON ONTO>
|
||||||
|
"<SYNONYM OUT OUTSIDE>"
|
||||||
|
<SYNONYM UNDER UNDERNEATH BENEATH>
|
||||||
|
|
||||||
|
<SYNONYM NORTH N>
|
||||||
|
<SYNONYM SOUTH S>
|
||||||
|
<SYNONYM EAST E>
|
||||||
|
<SYNONYM WEST W>
|
||||||
|
<SYNONYM DOWN D>
|
||||||
|
<SYNONYM UP U>
|
||||||
|
<SYNONYM NW NORTHW>
|
||||||
|
<SYNONYM NE NORTHE>
|
||||||
|
<SYNONYM SW SOUTHW>
|
||||||
|
<SYNONYM SE SOUTHE>
|
||||||
|
|
||||||
|
<SYNTAX $VERIFY = V-$VERIFY>
|
||||||
|
|
||||||
|
<SYNTAX $DBG = V-DEBUG>
|
||||||
|
"<SYNTAX \#CODE = V-$CODE>" "produces secret code from names"
|
||||||
|
|
||||||
|
<SYNTAX $BAY = V-$BAY> "sub in bay"
|
||||||
|
"<SYNTAX $OCEAN = V-$OCEAN>" "sub in ocean"
|
||||||
|
"<SYNTAX $DOME = V-$DOME>" "sub in dome"
|
||||||
|
"<SYNTAX $SNARK = V-$SNARK>" "sub in battle"
|
||||||
|
|
||||||
|
<SYNONYM ADJUST TUNE FOCUS>
|
||||||
|
<SYNTAX ADJUST OBJECT = V-ADJUST>
|
||||||
|
<SYNTAX ADJUST OBJECT WITH OBJECT = V-ADJUST>
|
||||||
|
<SYNTAX ADJUST IN OBJECT = V-ADJUST>
|
||||||
|
|
||||||
|
<SYNONYM AIM POINT>
|
||||||
|
<SYNTAX AIM OBJECT AT OBJECT = V-AIM PRE-AIM>
|
||||||
|
<SYNTAX AIM OBJECT TO OBJECT = V-AIM PRE-AIM>
|
||||||
|
<SYNTAX AIM OBJECT OBJECT = V-AIM PRE-AIM>
|
||||||
|
<SYNTAX AIM AT OBJECT WITH OBJECT = V-SAIM PRE-SAIM>
|
||||||
|
|
||||||
|
<SYNONYM TEST ANALYSE ANALYZE CHECK ;DUST TROUBLESHOOT>
|
||||||
|
<SYNTAX TEST OBJECT = V-ANALYZE>
|
||||||
|
<SYNTAX TEST OBJECT (FIND RMUNGBIT) FOR OBJECT = V-ANALYZE>
|
||||||
|
<SYNTAX TEST OUT OBJECT = V-ANALYZE>
|
||||||
|
<SYNTAX TEST UNDER OBJECT = V-LOOK-UNDER>
|
||||||
|
<SYNTAX TEST OBJECT IN OBJECT = V-LOOK-UP>
|
||||||
|
<SYNTAX TEST OBJECT ON OBJECT = V-SANALYZE PRE-SANALYZE>
|
||||||
|
|
||||||
|
<SYNONYM ANSWER REPLY RESPOND>
|
||||||
|
<SYNTAX ANSWER = V-ANSWER>
|
||||||
|
<SYNTAX ANSWER OBJECT = V-REPLY>
|
||||||
|
|
||||||
|
<SYNTAX APPLY OBJECT (HELD MANY HAVE) TO OBJECT = V-PUT PRE-PUT>
|
||||||
|
|
||||||
|
<SYNTAX ARM OBJECT = V-ARM>
|
||||||
|
|
||||||
|
<SYNONYM ARREST CAPTURE>
|
||||||
|
<SYNTAX ARREST OBJECT (FIND PERSON) ;(MANY) = V-ARREST PRE-ARREST>
|
||||||
|
<SYNTAX ARREST OBJECT (FIND PERSON) ;(MANY) FOR OBJECT = V-ARREST PRE-ARREST>
|
||||||
|
|
||||||
|
<SYNONYM ASK QUESTION INQUIRE CONSULT>
|
||||||
|
<SYNTAX ASK OBJECT (FIND PERSON) = V-ASK PRE-ASK>
|
||||||
|
<SYNTAX ASK ABOUT OBJECT (HELD CARRIED HAVE)
|
||||||
|
= V-ASK-CONTEXT-ABOUT PRE-ASK-CONTEXT-ABOUT>
|
||||||
|
<SYNTAX ASK FOR OBJECT (HELD CARRIED HAVE)
|
||||||
|
= V-ASK-CONTEXT-FOR PRE-ASK-CONTEXT-FOR>
|
||||||
|
<SYNTAX ASK OBJECT (FIND PERSON)
|
||||||
|
ABOUT OBJECT (HELD CARRIED HAVE) = V-ASK-ABOUT PRE-ASK-ABOUT>
|
||||||
|
<SYNTAX ASK OBJECT (FIND PERSON)
|
||||||
|
FOR OBJECT (HELD CARRIED HAVE) = V-ASK-FOR PRE-ASK-FOR>
|
||||||
|
|
||||||
|
<SYNONYM ATTACK FIGHT RAPE MOLEST ASSAULT REPEL>
|
||||||
|
<SYNTAX ATTACK OBJECT (FIND PERSON) = V-ATTACK>
|
||||||
|
<SYNTAX ATTACK OFF OBJECT (FIND PERSON) = V-ATTACK>
|
||||||
|
<SYNTAX ATTACK OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
|
||||||
|
= V-ATTACK>
|
||||||
|
|
||||||
|
<SYNTAX BRIEF = V-BRIEF>
|
||||||
|
|
||||||
|
<SYNONYM BRING FETCH>
|
||||||
|
<SYNTAX BRING OBJECT = V-BRING PRE-BRING>
|
||||||
|
<SYNTAX BRING OBJECT OBJECT = V-SBRING PRE-SBRING>
|
||||||
|
<SYNTAX BRING OBJECT TO OBJECT = V-BRING PRE-BRING>
|
||||||
|
|
||||||
|
<SYNONYM BRUSH CLEAN WIPE>
|
||||||
|
<SYNTAX BRUSH OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-BRUSH>
|
||||||
|
"<SYNTAX BRUSH OFF OBJECT (HELD CARRIED) = V-BRUSH>"
|
||||||
|
<SYNTAX BRUSH OBJECT (HELD CARRIED ON-GROUND IN-ROOM) WITH OBJECT
|
||||||
|
= V-BRUSH>
|
||||||
|
|
||||||
|
"<SYNONYM BURN INCINERATE IGNITE>
|
||||||
|
<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 CALL ;HEY PHONE SUMMON SIGNAL CONTACT>
|
||||||
|
"<SYNTAX CALL = V-CALL-LOSE>"
|
||||||
|
<SYNTAX $CALL OBJECT = V-$CALL>
|
||||||
|
<SYNTAX CALL OBJECT = V-PHONE PRE-PHONE>
|
||||||
|
<SYNTAX CALL OBJECT BY OBJECT = V-PHONE PRE-PHONE>
|
||||||
|
"<SYNTAX CALL OBJECT FOR OBJECT = V-CALL-FOR>"
|
||||||
|
<SYNTAX CALL OBJECT ON OBJECT = V-PHONE PRE-PHONE>
|
||||||
|
<SYNTAX CALL FOR OBJECT = V-PHONE PRE-PHONE>
|
||||||
|
<SYNTAX CALL TO OBJECT = V-$CALL>
|
||||||
|
<SYNTAX CALL UP OBJECT = V-PHONE PRE-PHONE>
|
||||||
|
|
||||||
|
<SYNONYM CLIMB BOARD>
|
||||||
|
<SYNTAX CLIMB OBJECT (ON-GROUND IN-ROOM) = V-BOARD> "(FIND CLIMBBIT)"
|
||||||
|
<SYNTAX CLIMB DOWN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN>"(FIND CLIMBBIT)"
|
||||||
|
<SYNTAX CLIMB IN OBJECT (FIND VEHBIT)(ON-GROUND IN-ROOM) = V-BOARD>
|
||||||
|
<SYNTAX CLIMB ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
|
||||||
|
<SYNTAX CLIMB OUT OBJECT (FIND RMUNGBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
|
||||||
|
<SYNTAX CLIMB THROUGH OBJECT (FIND DOORBIT) = V-THROUGH PRE-THROUGH>
|
||||||
|
<SYNTAX CLIMB UP OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-UP> "(FIND CLIMBBIT)"
|
||||||
|
|
||||||
|
<SYNONYM CLOSE REPLACE RESET>
|
||||||
|
<SYNTAX CLOSE OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
= V-CLOSE>
|
||||||
|
<SYNTAX CLOSE OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
WITH OBJECT
|
||||||
|
= V-CLOSE>
|
||||||
|
|
||||||
|
<SYNTAX COME OBJECT = V-COME>
|
||||||
|
<SYNTAX COME TO OBJECT = V-COME>
|
||||||
|
<SYNTAX COME WITH OBJECT = V-FOLLOW>
|
||||||
|
<SYNTAX COME WITH OBJECT TO OBJECT = V-COME-WITH PRE-COME-WITH>
|
||||||
|
|
||||||
|
<SYNONYM MATCH COMPARE>
|
||||||
|
<SYNTAX MATCH OBJECT (MANY) = V-COMPARE PRE-COMPARE>
|
||||||
|
<SYNTAX MATCH OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
TO OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-COMPARE>
|
||||||
|
<SYNTAX MATCH OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
WITH OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-COMPARE>
|
||||||
|
|
||||||
|
<SYNTAX CONFRONT OBJECT (FIND PERSON) WITH OBJECT = V-CONFRONT>
|
||||||
|
|
||||||
|
"<SYNONYM COUNT>
|
||||||
|
<SYNTAX COUNT OBJECT = V-COUNT>
|
||||||
|
|
||||||
|
<SYNONYM CROSS FORD>
|
||||||
|
<SYNTAX CROSS OBJECT = V-CROSS>"
|
||||||
|
|
||||||
|
<SYNONYM CUT INTERRUPT ;"SLICE PIERCE">
|
||||||
|
<SYNTAX CUT OBJECT ;"WITH OBJECT (FIND WEAPONBIT) (CARRIED HELD)" = V-CUT>
|
||||||
|
|
||||||
|
<SYNONYM DAMAGE DESTROY BREAK SMASH CRUSH TEAR>
|
||||||
|
<SYNTAX DAMAGE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
|
||||||
|
= V-MUNG>
|
||||||
|
<SYNTAX DAMAGE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
|
||||||
|
WITH OBJECT (HELD CARRIED TAKE)
|
||||||
|
= V-MUNG>
|
||||||
|
<SYNTAX DAMAGE DOWN OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
|
||||||
|
WITH OBJECT (HELD CARRIED TAKE)
|
||||||
|
= V-MUNG>
|
||||||
|
|
||||||
|
<SYNTAX DIAGNOSE = V-DIAGNOSE>
|
||||||
|
<SYNTAX DIAGNOSE OBJECT = V-DIAGNOSE>
|
||||||
|
|
||||||
|
"<SYNTAX DIAL OBJECT = V-PHONE>
|
||||||
|
<SYNTAX DIAL OBJECT ON OBJECT = V-PHONE>
|
||||||
|
<SYNTAX DIAL UP OBJECT = V-PHONE>"
|
||||||
|
|
||||||
|
<SYNTAX DISCUSS OBJECT = V-DISCUSS PRE-DISCUSS>
|
||||||
|
<SYNTAX DISCUSS OBJECT WITH OBJECT = V-DISCUSS PRE-DISCUSS>
|
||||||
|
|
||||||
|
<SYNONYM DIVE SUBMERGE DESCEND>
|
||||||
|
<SYNTAX DIVE = V-DIVE>
|
||||||
|
<SYNTAX DIVE OBJECT = V-CLIMB-DOWN>
|
||||||
|
<SYNTAX DIVE BY OBJECT = V-CLIMB-DOWN>
|
||||||
|
<SYNTAX DIVE TO OBJECT = V-DIVE>
|
||||||
|
<SYNTAX DIVE UNDER OBJECT (FIND RMUNGBIT) = V-DIVE>
|
||||||
|
|
||||||
|
<SYNTAX DOCK OBJECT (FIND RMUNGBIT) = V-DOCK>
|
||||||
|
<SYNTAX DOCK AT OBJECT = V-DOCK>
|
||||||
|
<SYNTAX DOCK WITH OBJECT = V-DOCK>
|
||||||
|
|
||||||
|
<SYNONYM DRINK IMBIBE SWALLOW>
|
||||||
|
<SYNTAX DRINK OBJECT ;(FIND DRINKBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
= V-DRINK>
|
||||||
|
|
||||||
|
<SYNONYM DROP LOWER>
|
||||||
|
<SYNTAX DROP OBJECT (HELD MANY HAVE) = V-DROP>
|
||||||
|
<SYNTAX DROP OBJECT (HELD MANY HAVE) DOWN ;ON OBJECT = V-PUT PRE-PUT>
|
||||||
|
<SYNTAX DROP OBJECT (HELD MANY HAVE) IN OBJECT = V-PUT PRE-PUT>
|
||||||
|
<SYNTAX DROP OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT PRE-PUT>
|
||||||
|
|
||||||
|
<SYNONYM EAT CONSUME>
|
||||||
|
<SYNTAX EAT OBJECT ;(FIND FOODBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE MANY)
|
||||||
|
= V-EAT>
|
||||||
|
|
||||||
|
<SYNONYM EMPTY DRAIN BLOW>
|
||||||
|
<SYNTAX EMPTY OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
= V-EMPTY>
|
||||||
|
|
||||||
|
<SYNTAX ENTER = V-ENTER>
|
||||||
|
<SYNTAX ENTER OBJECT = V-THROUGH PRE-THROUGH>
|
||||||
|
|
||||||
|
<SYNONYM EXAMINE DESCRIBE INSPECT SCRUTINIZE STUDY OBSERVE EXPLORE>
|
||||||
|
<SYNTAX EXAMINE OBJECT (HELD CARRIED IN-ROOM ON-GROUND ;MANY)
|
||||||
|
= V-EXAMINE PRE-EXAMINE>
|
||||||
|
<SYNTAX EXAMINE UNDER OBJECT = V-LOOK-UNDER>
|
||||||
|
|
||||||
|
<SYNONYM EXTINGUISH DOUSE>
|
||||||
|
<SYNTAX EXTINGUISH
|
||||||
|
OBJECT (FIND LIGHTBIT) (MANY HELD CARRIED ON-GROUND IN-ROOM TAKE HAVE)
|
||||||
|
= V-LAMP-OFF>
|
||||||
|
|
||||||
|
<SYNONYM FILL FLOOD>
|
||||||
|
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
= V-FILL PRE-FILL>
|
||||||
|
<SYNTAX FILL OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
WITH OBJECT
|
||||||
|
= V-FILL PRE-FILL>
|
||||||
|
|
||||||
|
<SYNONYM FIND DETECT LOCATE>
|
||||||
|
<SYNTAX FIND OBJECT (;"HELD CARRIED" HAVE MANY) = V-FIND PRE-FIND>
|
||||||
|
<SYNTAX FIND OBJECT (;"HELD CARRIED" HAVE MANY) WITH OBJECT = V-FIND-WITH>
|
||||||
|
<SYNTAX FIND OUT OBJECT = V-ASK-CONTEXT-ABOUT PRE-ASK-CONTEXT-ABOUT>
|
||||||
|
|
||||||
|
<SYNTAX FIT OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT PRE-PUT>
|
||||||
|
<SYNTAX FIT OBJECT (HELD MANY HAVE) TO OBJECT = V-PUT PRE-PUT>
|
||||||
|
|
||||||
|
<SYNONYM FIX REPAIR>
|
||||||
|
<SYNTAX FIX OBJECT = V-FIX>
|
||||||
|
<SYNTAX FIX OBJECT WITH OBJECT (FIND TOOLBIT) = V-FIX>
|
||||||
|
|
||||||
|
<SYNONYM FOLLOW PURSUE CHASE TRACE>
|
||||||
|
<SYNTAX FOLLOW OBJECT = V-FOLLOW>
|
||||||
|
<SYNTAX FOLLOW OBJECT (FIND PERSON) OBJECT = V-FOLLOW> "Follow me north."
|
||||||
|
<SYNTAX FOLLOW OBJECT (FIND PERSON) TO OBJECT = V-FOLLOW> "F. me to office."
|
||||||
|
|
||||||
|
<SYNONYM HAND GIVE DONATE OFFER ;"ASSIGN" FEED>
|
||||||
|
<SYNTAX HAND OBJECT (MANY HELD HAVE ;"CARRIED ON-GROUND IN-ROOM")
|
||||||
|
TO OBJECT (FIND PERSON) (ON-GROUND)
|
||||||
|
= V-GIVE PRE-GIVE>
|
||||||
|
<SYNTAX HAND OBJECT (FIND PERSON) (ON-GROUND)
|
||||||
|
OBJECT (MANY HELD HAVE)
|
||||||
|
= V-SGIVE PRE-SGIVE>
|
||||||
|
|
||||||
|
<SYNONYM GOODBYE GOOD-BYE BYE>
|
||||||
|
<SYNTAX GOODBYE = V-GOODBYE PRE-GOODBYE>
|
||||||
|
<SYNTAX GOODBYE OBJECT = V-GOODBYE PRE-GOODBYE>
|
||||||
|
|
||||||
|
<SYNTAX HANG UP OBJECT (FIND RMUNGBIT) = V-HANGUP PRE-HANGUP>
|
||||||
|
<SYNTAX HANG OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT PRE-PUT>
|
||||||
|
|
||||||
|
<SYNONYM HELLO HI GREET GREETINGS>
|
||||||
|
<SYNTAX HELLO = V-HELLO PRE-HELLO>
|
||||||
|
<SYNTAX HELLO OBJECT = V-HELLO PRE-HELLO>
|
||||||
|
|
||||||
|
<SYNTAX HELP = V-HELP>
|
||||||
|
<SYNTAX HELP OBJECT (FIND PERSON) = V-HELP>
|
||||||
|
|
||||||
|
<SYNONYM HIDE CROUCH>
|
||||||
|
"<SYNTAX HIDE = V-HIDE>
|
||||||
|
<SYNTAX HIDE BEHIND OBJECT = V-HIDE-BEHIND>"
|
||||||
|
<SYNTAX HIDE IN OBJECT = V-THROUGH PRE-THROUGH>
|
||||||
|
<SYNTAX HIDE ON OBJECT = V-THROUGH PRE-THROUGH>
|
||||||
|
<SYNTAX HIDE OBJECT (CARRIED HELD HAVE) IN OBJECT = V-PUT PRE-PUT>
|
||||||
|
<SYNTAX HIDE OBJECT (CARRIED HELD HAVE) UNDER OBJECT = V-PUT-UNDER>
|
||||||
|
|
||||||
|
"<SYNONYM I INVENT>"
|
||||||
|
<SYNTAX I = V-INVENTORY>
|
||||||
|
<SYNTAX INVENT = V-INVENTORY>
|
||||||
|
|
||||||
|
"<SYNONYM JUMP LEAP>
|
||||||
|
<SYNTAX JUMP = V-LEAP>
|
||||||
|
<SYNTAX JUMP ACROSS OBJECT = V-LEAP>
|
||||||
|
<SYNTAX JUMP IN OBJECT = V-LEAP>
|
||||||
|
<SYNTAX JUMP OVER OBJECT = V-LEAP>"
|
||||||
|
|
||||||
|
"<SYNONYM KICK BITE TAUNT>
|
||||||
|
<SYNTAX KICK OBJECT = V-KICK>"
|
||||||
|
|
||||||
|
<SYNONYM KILL STRANGLE>
|
||||||
|
<SYNTAX KILL OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-KILL>
|
||||||
|
<SYNTAX KILL OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
|
||||||
|
= V-KILL>
|
||||||
|
|
||||||
|
<SYNTAX KISS OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-KISS>
|
||||||
|
|
||||||
|
<SYNONYM KNOCK RAP>
|
||||||
|
<SYNTAX KNOCK ON OBJECT = V-KNOCK>
|
||||||
|
<SYNTAX KNOCK AT OBJECT = V-KNOCK>
|
||||||
|
<SYNTAX KNOCK DOWN OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-ATTACK>
|
||||||
|
|
||||||
|
"<SYNTAX KNOW ABOUT OBJECT (HELD CARRIED HAVE) = V-WHAT>
|
||||||
|
<SYNTAX KNOW WHERE OBJECT (HELD CARRIED HAVE) = V-FIND PRE-FIND>"
|
||||||
|
|
||||||
|
<SYNTAX LAUNCH OBJECT (FIND RMUNGBIT) = V-LAUNCH>
|
||||||
|
|
||||||
|
"<SYNONYM LEAN STAND PROP>
|
||||||
|
<SYNTAX LEAN OBJECT AGAINST OBJECT = V-LEAN>
|
||||||
|
<SYNTAX LEAN OBJECT ON OBJECT = V-LEAN>
|
||||||
|
<SYNTAX LEAN OBJECT UP OBJECT = V-LEAN>"
|
||||||
|
<SYNTAX STAND = V-STAND>
|
||||||
|
<SYNTAX STAND UP OBJECT (FIND RMUNGBIT) = V-STAND>
|
||||||
|
|
||||||
|
<SYNTAX LEVEL OFF OBJECT (FIND RMUNGBIT) = V-LEVEL>
|
||||||
|
<SYNTAX LEVEL OUT OBJECT (FIND RMUNGBIT) = V-LEVEL>
|
||||||
|
|
||||||
|
<SYNONYM LEAVE ;"EMERGE" ABANDON EVACUATE DEBARK DISEMBARK EXIT>
|
||||||
|
<SYNTAX LEAVE = V-LEAVE>
|
||||||
|
<SYNTAX LEAVE OBJECT = V-LEAVE>
|
||||||
|
<SYNTAX LEAVE FROM OBJECT = V-LEAVE>
|
||||||
|
|
||||||
|
"<SYNONYM LIGHT>"
|
||||||
|
"<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 AT OBJECT = V-LISTEN>
|
||||||
|
|
||||||
|
<SYNTAX LOCK OBJECT (ON-GROUND IN-ROOM) = V-LOCK ;PRE-UNLOCK>
|
||||||
|
|
||||||
|
<SYNONYM LOOK L STARE GAZE PEEK SEE>
|
||||||
|
<SYNTAX LOOK = V-LOOK>
|
||||||
|
<SYNTAX LOOK AROUND OBJECT (FIND RMUNGBIT) = V-LOOK>
|
||||||
|
<SYNTAX LOOK AT OBJECT (HELD CARRIED ON-GROUND IN-ROOM MANY)
|
||||||
|
= V-EXAMINE PRE-EXAMINE>
|
||||||
|
<SYNTAX LOOK AT OBJECT (HELD CARRIED MANY) THROUGH OBJECT = V-READ PRE-READ>
|
||||||
|
<SYNTAX LOOK BEHIND OBJECT = V-LOOK-BEHIND>
|
||||||
|
<SYNTAX LOOK DOWN OBJECT (FIND RMUNGBIT) = V-LOOK-DOWN>
|
||||||
|
<SYNTAX LOOK FOR OBJECT (HELD CARRIED HAVE) = V-FIND>
|
||||||
|
<SYNTAX LOOK IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
= V-LOOK-INSIDE PRE-LOOK-INSIDE>
|
||||||
|
"<SYNTAX LOOK NEAR OBJECT = V-SEARCH-AROUND>"
|
||||||
|
<SYNTAX LOOK ON OBJECT (ON-GROUND IN-ROOM) = V-LOOK-ON>
|
||||||
|
<SYNTAX LOOK OUT OBJECT = V-LOOK-OUTSIDE>
|
||||||
|
<SYNTAX LOOK OVER OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
= V-EXAMINE PRE-EXAMINE>
|
||||||
|
<SYNTAX LOOK UNDER OBJECT = V-LOOK-UNDER>
|
||||||
|
<SYNTAX LOOK UP OBJECT (FIND RMUNGBIT) = V-LOOK-UP>
|
||||||
|
<SYNTAX LOOK UP OBJECT IN OBJECT = V-LOOK-UP>
|
||||||
|
<SYNTAX LOOK THROUGH OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
= V-LOOK-INSIDE PRE-LOOK-INSIDE>
|
||||||
|
|
||||||
|
<SYNONYM MAKE BUILD PREPARE>
|
||||||
|
<SYNTAX MAKE OBJECT FROM OBJECT (ON-GROUND IN-ROOM) = V-MAKE>
|
||||||
|
<SYNTAX MAKE OBJECT ;WITH OBJECT (ON-GROUND IN-ROOM) = V-MAKE>
|
||||||
|
|
||||||
|
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
|
||||||
|
<SYNTAX MOVE OBJECT (ON-GROUND IN-ROOM) OBJECT = V-MOVE-DIR PRE-MOVE-DIR>
|
||||||
|
<SYNTAX MOVE OBJECT TO OBJECT (FIND RMUNGBIT) = V-SET PRE-SET>
|
||||||
|
|
||||||
|
<SYNONYM NO NAY NEGATIVE NOPE>
|
||||||
|
<SYNTAX NO = V-NO>
|
||||||
|
|
||||||
|
<SYNTAX NOD AT OBJECT = V-HELLO PRE-HELLO>
|
||||||
|
<SYNTAX NOD TO OBJECT = V-HELLO PRE-HELLO>
|
||||||
|
|
||||||
|
<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 OBJECT (FIND RMUNGBIT) = V-SET PRE-SET>"
|
||||||
|
<SYNTAX OPEN OBJECT TO OBJECT (FIND RMUNGBIT) = V-SET PRE-SET>
|
||||||
|
<SYNTAX OPEN OBJECT (FIND DOORBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
WITH OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE)
|
||||||
|
= V-OPEN-WITH PRE-OPEN-WITH>
|
||||||
|
|
||||||
|
<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 = V-PLAY>
|
||||||
|
|
||||||
|
"<SYNONYM POKE JAB BLIND>
|
||||||
|
<SYNTAX POKE OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
|
||||||
|
= V-MUNG ;PRE-MUNG>"
|
||||||
|
|
||||||
|
"<SYNONYM POUR SPILL>
|
||||||
|
<SYNTAX POUR OBJECT (HELD CARRIED) = V-DROP>
|
||||||
|
<SYNTAX POUR OBJECT (HELD CARRIED) FROM OBJECT = V-DROP>
|
||||||
|
<SYNTAX POUR OBJECT (HELD CARRIED) IN OBJECT = V-DROP>
|
||||||
|
<SYNTAX POUR OBJECT (HELD CARRIED) ON OBJECT = V-POUR-ON PRE-POUR-ON>"
|
||||||
|
|
||||||
|
<SYNONYM PULL TUG>
|
||||||
|
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
|
||||||
|
<SYNTAX PULL OBJECT (ON-GROUND IN-ROOM) OBJECT = V-MOVE-DIR PRE-MOVE-DIR>
|
||||||
|
<SYNTAX PULL ON OBJECT (ON-GROUND IN-ROOM) = V-MOVE PRE-MOVE>
|
||||||
|
|
||||||
|
<SYNTAX PUMP OUT OBJECT (FIND CONTBIT) (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
= V-EMPTY>
|
||||||
|
|
||||||
|
<SYNONYM PUSH PRESS>
|
||||||
|
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
|
||||||
|
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) OBJECT
|
||||||
|
= V-MOVE-DIR PRE-MOVE-DIR>
|
||||||
|
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) ON OBJECT = V-PUSH>
|
||||||
|
<SYNTAX PUSH OBJECT (IN-ROOM ON-GROUND MANY) TO OBJECT
|
||||||
|
= V-MOVE-DIR PRE-MOVE-DIR>
|
||||||
|
<SYNTAX PUSH OBJECT UNDER OBJECT = V-PUT-UNDER>
|
||||||
|
<SYNTAX PUSH ON OBJECT (IN-ROOM ON-GROUND MANY) = V-PUSH>
|
||||||
|
|
||||||
|
<SYNONYM PLACE PUT STUFF INSERT INSTALL MOUNT LOAD>
|
||||||
|
<SYNTAX PLACE OBJECT (HELD MANY HAVE) ON OBJECT = V-PUT PRE-PUT>
|
||||||
|
<SYNTAX PLACE OBJECT (HELD MANY HAVE) IN OBJECT(FIND CONTBIT) = V-PUT PRE-PUT>
|
||||||
|
<SYNTAX PLACE OBJECT (HELD MANY HAVE) DOWN ;ON OBJECT = V-PUT PRE-PUT>
|
||||||
|
"<SYNTAX PLACE OBJECT (HELD MANY HAVE) TO OBJECT = V-PUT PRE-PUT>"
|
||||||
|
<SYNTAX PLACE OBJECT (CARRIED HELD HAVE) UNDER OBJECT = V-PUT-UNDER>
|
||||||
|
"<SYNTAX PLACE OBJECT (CARRIED HELD HAVE) AGAINST OBJECT = V-LEAN>"
|
||||||
|
<SYNTAX PLACE DOWN OBJECT (HELD MANY HAVE) = V-DROP>
|
||||||
|
<SYNTAX PLACE ON OBJECT (ON-GROUND IN-ROOM) = V-TAKE PRE-TAKE>
|
||||||
|
|
||||||
|
<SYNONYM QUIT Q>
|
||||||
|
<SYNTAX QUIT = V-QUIT>
|
||||||
|
|
||||||
|
<SYNONYM RAISE LIFT>
|
||||||
|
<SYNTAX RAISE OBJECT = V-RAISE>
|
||||||
|
<SYNTAX RAISE UP OBJECT = V-RAISE>
|
||||||
|
"<SYNTAX RAISE OBJECT OFF OBJECT = V-TAKE>"
|
||||||
|
|
||||||
|
<SYNONYM READ SKIM PERUSE>
|
||||||
|
<SYNTAX READ 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)
|
||||||
|
OBJECT = V-READ PRE-READ>
|
||||||
|
<SYNTAX READ OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
|
||||||
|
THROUGH OBJECT
|
||||||
|
= V-READ PRE-READ>
|
||||||
|
<SYNTAX READ ABOUT OBJECT
|
||||||
|
IN OBJECT (FIND READBIT) (HELD CARRIED ON-GROUND IN-ROOM TAKE)
|
||||||
|
= V-LOOK-UP>
|
||||||
|
|
||||||
|
"<SYNTAX REQUEST OBJECT (HELD CARRIED HAVE)
|
||||||
|
= V-ASK-CONTEXT-FOR PRE-ASK-CONTEXT-FOR>"
|
||||||
|
|
||||||
|
<SYNTAX RESTART = V-RESTART>
|
||||||
|
|
||||||
|
<SYNONYM RESTORE ;CONTINUE RESUME>
|
||||||
|
<SYNTAX RESTORE = V-RESTORE>
|
||||||
|
|
||||||
|
<SYNONYM RING PEAL>
|
||||||
|
<SYNTAX RING OBJECT = V-RING>
|
||||||
|
<SYNTAX RING OBJECT WITH OBJECT = V-RING>
|
||||||
|
|
||||||
|
<SYNONYM RISE ASCEND>
|
||||||
|
<SYNTAX RISE = V-RISE>
|
||||||
|
<SYNTAX RISE OBJECT = V-CLIMB-UP>
|
||||||
|
<SYNTAX RISE BY OBJECT = V-CLIMB-UP>
|
||||||
|
<SYNTAX RISE TO OBJECT = V-RISE>
|
||||||
|
|
||||||
|
<SYNONYM RUB TOUCH FEEL SHADE PAT PET>
|
||||||
|
<SYNTAX RUB OBJECT = V-RUB>
|
||||||
|
<SYNTAX RUB OBJECT (TAKE HAVE) ON OBJECT = V-RUB-OVER PRE-RUB-OVER>
|
||||||
|
<SYNTAX RUB OBJECT (TAKE HAVE) OVER OBJECT = V-RUB-OVER PRE-RUB-OVER>
|
||||||
|
<SYNTAX RUB OBJECT WITH OBJECT (TAKE HAVE) = V-RUB>
|
||||||
|
|
||||||
|
<SYNONYM SAVE SUSPEND PAUSE>
|
||||||
|
<SYNTAX SAVE = V-SAVE>
|
||||||
|
<SYNTAX SAVE OBJECT (FIND PERSON) = V-HELP>
|
||||||
|
|
||||||
|
<SYNONYM SAY TALK SPEAK STATE EXPLAIN>
|
||||||
|
<SYNTAX SAY = V-SAY>
|
||||||
|
<SYNTAX SAY OBJECT = V-TALK-ABOUT PRE-TALK-ABOUT>
|
||||||
|
<SYNTAX SAY ABOUT OBJECT = V-TALK-ABOUT PRE-TALK-ABOUT>
|
||||||
|
<SYNTAX SAY IN OBJECT = V-SAY-INTO PRE-SAY-INTO>
|
||||||
|
<SYNTAX SAY TO OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
|
||||||
|
<SYNTAX SAY TO OBJECT (FIND PERSON) (IN-ROOM) ABOUT OBJECT
|
||||||
|
= V-TELL-ABOUT PRE-TELL-ABOUT>
|
||||||
|
<SYNTAX SAY WITH OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
|
||||||
|
|
||||||
|
<SYNTAX SCORE = V-SCORE>
|
||||||
|
|
||||||
|
<SYNTAX SCREW IN OBJECT (HELD MANY HAVE) = V-SCREW-IN>
|
||||||
|
<SYNTAX SCREW OBJECT (HELD MANY HAVE) IN OBJECT = V-SCREW>
|
||||||
|
|
||||||
|
<SYNTAX SCRIPT = V-SCRIPT>
|
||||||
|
|
||||||
|
<SYNONYM SEARCH DIG>
|
||||||
|
<SYNTAX SEARCH OBJECT = V-SEARCH PRE-SEARCH>
|
||||||
|
"<SYNTAX SEARCH OBJECT AROUND OBJECT = V-SEARCH-GROUND-AROUND>"
|
||||||
|
<SYNTAX SEARCH OBJECT FOR OBJECT (HELD CARRIED HAVE)
|
||||||
|
= V-SEARCH-FOR PRE-SEARCH-FOR>
|
||||||
|
"<SYNTAX SEARCH OBJECT NEAR OBJECT = V-SEARCH-GROUND-AROUND>
|
||||||
|
<SYNTAX SEARCH OBJECT UNDER OBJECT = V-SEARCH-GROUND-UNDER>"
|
||||||
|
|
||||||
|
"<SYNTAX SEARCH AROUND OBJECT = V-SEARCH-AROUND>"
|
||||||
|
<SYNTAX SEARCH FOR OBJECT (HELD CARRIED HAVE) = V-FIND>
|
||||||
|
<SYNTAX SEARCH IN OBJECT = V-SEARCH PRE-SEARCH>
|
||||||
|
"<SYNTAX SEARCH NEAR OBJECT = V-SEARCH-AROUND>"
|
||||||
|
<SYNTAX SEARCH UP OBJECT = V-SEARCH PRE-SEARCH>
|
||||||
|
|
||||||
|
<SYNTAX SEND OBJECT = V-SEND>
|
||||||
|
"<SYNTAX SEND FOR OBJECT = V-SEND-FOR>"
|
||||||
|
<SYNTAX SEND OUT OBJECT = V-SEND-OUT>
|
||||||
|
<SYNTAX SEND OBJECT OBJECT = V-SSEND PRE-SSEND>
|
||||||
|
<SYNTAX SEND OBJECT TO OBJECT = V-SEND-TO PRE-SEND-TO>
|
||||||
|
|
||||||
|
<SYNTAX SET OBJECT TO OBJECT ;(FIND RMUNGBIT) = V-SET PRE-SET>
|
||||||
|
<SYNTAX SET OBJECT AT OBJECT ;(FIND RMUNGBIT) = V-SET PRE-SET>
|
||||||
|
<SYNTAX SET OBJECT FOR OBJECT ;(FIND RMUNGBIT) = V-SET PRE-SET>
|
||||||
|
<SYNTAX SET OBJECT IN OBJECT ;(FIND RMUNGBIT) = V-SET PRE-SET>
|
||||||
|
<SYNTAX SET OBJECT (HELD MANY HAVE) ON OBJECT (FIND RMUNGBIT) = V-PUT PRE-PUT>
|
||||||
|
<SYNTAX SET OBJECT OBJECT ;(FIND RMUNGBIT) = V-SET PRE-SET>
|
||||||
|
|
||||||
|
<SYNONYM FIRE SHOOT BLAST>
|
||||||
|
<SYNTAX FIRE OBJECT ;(FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
WITH OBJECT (FIND WEAPONBIT) ;(HELD CARRIED HAVE)
|
||||||
|
= V-SHOOT PRE-SHOOT>
|
||||||
|
<SYNTAX FIRE OBJECT (FIND PERSON) = V-SHOOT PRE-SHOOT>
|
||||||
|
<SYNTAX FIRE OBJECT (FIND WEAPONBIT) ;(HELD CARRIED HAVE)
|
||||||
|
AT OBJECT ;(FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
= V-SSHOOT PRE-SSHOOT>
|
||||||
|
|
||||||
|
<SYNTAX SHOW OBJECT (FIND PERSON) OBJECT = V-SHOW>
|
||||||
|
<SYNTAX SHOW OBJECT TO OBJECT (FIND PERSON) = V-SSHOW PRE-SSHOW>
|
||||||
|
|
||||||
|
<SYNTAX SIT ON OBJECT (FIND FURNITURE) (ON-GROUND IN-ROOM) = V-SIT>
|
||||||
|
<SYNTAX SIT DOWN OBJECT (FIND FURNITURE) (ON-GROUND IN-ROOM) = V-SIT>
|
||||||
|
<SYNTAX SIT IN OBJECT (FIND FURNITURE) (ON-GROUND IN-ROOM) = V-SIT>
|
||||||
|
|
||||||
|
<SYNONYM SLAP HURT INJURE HIT PUNCH KICK BITE>
|
||||||
|
<SYNTAX SLAP OBJECT (FIND PERSON) = V-SLAP>
|
||||||
|
<SYNTAX SLAP OBJECT (FIND PERSON) AROUND = V-SLAP>
|
||||||
|
<SYNTAX SLAP OBJECT (FIND PERSON) WITH OBJECT = V-SLAP>
|
||||||
|
|
||||||
|
"<SYNONYM SLEEP NAP>
|
||||||
|
<SYNTAX SLEEP OBJECT (FIND RMUNGBIT) = V-SLEEP-FOR>
|
||||||
|
<SYNTAX SLEEP FOR OBJECT = V-SLEEP-FOR>
|
||||||
|
<SYNTAX SLEEP TILL OBJECT = V-SLEEP-UNTIL>
|
||||||
|
<SYNTAX SLEEP UNTIL OBJECT = V-SLEEP-UNTIL>
|
||||||
|
|
||||||
|
<SYNTAX SLIDE OBJECT UNDER OBJECT = V-PUT-UNDER>"
|
||||||
|
|
||||||
|
<SYNONYM SMELL SNIFF>
|
||||||
|
<SYNTAX SMELL OBJECT = V-SMELL>
|
||||||
|
|
||||||
|
<SYNONYM SMILE GRIN WINK>
|
||||||
|
<SYNTAX SMILE AT OBJECT = V-SMILE>
|
||||||
|
|
||||||
|
<SYNTAX SMOKE OBJECT = V-SMOKE> "(FIND BURNBIT)"
|
||||||
|
|
||||||
|
"<SYNTAX SPACE = V-SPACE>"
|
||||||
|
|
||||||
|
<SYNONYM START ACTIVATE ENGAGE>
|
||||||
|
<SYNTAX START OBJECT = V-LAMP-ON>
|
||||||
|
<SYNTAX START OVER OBJECT (FIND RMUNGBIT) = V-RESTART>
|
||||||
|
|
||||||
|
<SYNTAX STOP OBJECT (FIND RMUNGBIT) = V-STOP>
|
||||||
|
"<SYNTAX SLOW = V-SLOW>
|
||||||
|
<SYNTAX MEDIUM = V-MEDIUM>
|
||||||
|
<SYNTAX FAST = V-FAST>"
|
||||||
|
|
||||||
|
<SYNTAX STRIKE OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-SLAP>
|
||||||
|
"<SYNTAX STRIKE OBJECT (ON-GROUND IN-ROOM HELD CARRIED) = V-LAMP-ON>"
|
||||||
|
<SYNTAX STRIKE OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
WITH OBJECT (FIND WEAPONBIT) (HELD CARRIED ON-GROUND IN-ROOM HAVE)
|
||||||
|
= V-ATTACK>
|
||||||
|
|
||||||
|
<SYNONYM SUPER SUPERBRIEF>
|
||||||
|
<SYNTAX SUPER = V-SUPER-BRIEF>
|
||||||
|
|
||||||
|
<SYNTAX SURFACE = V-SURFACE>
|
||||||
|
<SYNTAX SURFACE OBJECT = V-SURFACE>
|
||||||
|
|
||||||
|
<SYNONYM SWIM BATHE WADE>
|
||||||
|
<SYNTAX SWIM = V-SWIM>
|
||||||
|
<SYNTAX SWIM IN OBJECT = V-SWIM>
|
||||||
|
|
||||||
|
"<SYNONYM SWING THRUST>
|
||||||
|
<SYNTAX SWING OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
|
||||||
|
= V-SWING>
|
||||||
|
<SYNTAX SWING OBJECT (FIND WEAPONBIT) (HELD CARRIED HAVE)
|
||||||
|
AT OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
= V-SWING>"
|
||||||
|
|
||||||
|
<SYNONYM TAKE GET ;HOLD CARRY REMOVE LEAD STEAL SEIZE GRAB>
|
||||||
|
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (ON-GROUND IN-ROOM MANY)
|
||||||
|
= V-TAKE PRE-TAKE>
|
||||||
|
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
|
||||||
|
FROM 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) (CARRIED IN-ROOM MANY)
|
||||||
|
OUT ;OF OBJECT (FIND CONTBIT)
|
||||||
|
= V-TAKE PRE-TAKE>
|
||||||
|
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (MANY TAKE) TO OBJECT = V-TAKE-TO>
|
||||||
|
<SYNTAX TAKE OBJECT (FIND TAKEBIT) WITH OBJECT = V-TAKE-WITH>
|
||||||
|
<SYNTAX TAKE IN OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-BOARD>
|
||||||
|
<SYNTAX TAKE OFF OBJECT = V-DROP>
|
||||||
|
<SYNTAX TAKE ON OBJECT (FIND VEHBIT) (ON-GROUND IN-ROOM) = V-CLIMB-ON>
|
||||||
|
<SYNTAX TAKE OUT OBJECT (FIND RMUNGBIT) (ON-GROUND IN-ROOM) = V-DISEMBARK>
|
||||||
|
<SYNTAX TAKE RID ;OF OBJECT = V-DROP>
|
||||||
|
<SYNTAX TAKE UP OBJECT (FIND RMUNGBIT) = V-STAND>
|
||||||
|
|
||||||
|
<SYNTAX TELL OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
|
||||||
|
<SYNTAX TELL OBJECT (FIND PERSON) (IN-ROOM)
|
||||||
|
OBJECT ;(HELD CARRIED HAVE) = V-TELL-ABOUT PRE-TELL-ABOUT>
|
||||||
|
<SYNTAX TELL ABOUT OBJECT ;(HELD CARRIED HAVE)
|
||||||
|
= V-TALK-ABOUT PRE-TALK-ABOUT>
|
||||||
|
<SYNTAX TELL OBJECT (FIND PERSON) (IN-ROOM)
|
||||||
|
ABOUT OBJECT ;(HELD CARRIED HAVE) = V-TELL-ABOUT PRE-TELL-ABOUT>
|
||||||
|
|
||||||
|
<SYNONYM THANKS THANK>
|
||||||
|
<SYNTAX THANKS = V-THANKS>
|
||||||
|
<SYNTAX THANKS OBJECT = V-THANKS>
|
||||||
|
|
||||||
|
<SYNONYM THROW HURL CHUCK TOSS>
|
||||||
|
<SYNTAX THROW AWAY OBJECT (HELD CARRIED HAVE) = V-DROP>
|
||||||
|
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
|
||||||
|
AT OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
= V-THROW-AT>
|
||||||
|
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
|
||||||
|
IN OBJECT = V-PUT PRE-PUT>
|
||||||
|
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
|
||||||
|
ON OBJECT = V-PUT PRE-PUT>
|
||||||
|
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
|
||||||
|
OVER OBJECT = V-PUT PRE-PUT>
|
||||||
|
<SYNTAX THROW OBJECT (HELD CARRIED HAVE)
|
||||||
|
THROUGH OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
= V-THROW-THROUGH>
|
||||||
|
|
||||||
|
<SYNONYM TIE FASTEN SECURE ATTACH>
|
||||||
|
"<SYNTAX TIE OBJECT TO OBJECT = V-TIE PRE-TIE>"
|
||||||
|
<SYNTAX TIE OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
TO OBJECT (FIND FURNITURE) (ON-GROUND IN-ROOM)
|
||||||
|
= V-TIE-TO PRE-TIE-TO>
|
||||||
|
<SYNTAX TIE UP OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
TO OBJECT (FIND FURNITURE) (ON-GROUND IN-ROOM)
|
||||||
|
= V-TIE-TO PRE-TIE-TO>
|
||||||
|
<SYNTAX TIE OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
WITH OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE)
|
||||||
|
= V-TIE-WITH PRE-TIE-WITH>
|
||||||
|
<SYNTAX TIE UP OBJECT (FIND PERSON) (ON-GROUND IN-ROOM)
|
||||||
|
WITH OBJECT (FIND TOOLBIT) (ON-GROUND IN-ROOM HELD CARRIED HAVE)
|
||||||
|
= V-TIE-WITH PRE-TIE-WITH>
|
||||||
|
|
||||||
|
"<SYNONYM TIME T>
|
||||||
|
<SYNTAX TIME = V-TIME>"
|
||||||
|
|
||||||
|
<SYNONYM SWITCH FLIP SHUT SWING ;"AIM POINT">
|
||||||
|
<SYNTAX SWITCH OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-TURN>
|
||||||
|
<SYNTAX TURN OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-TURN>
|
||||||
|
<SYNTAX SWITCH OBJECT ON OBJECT = V-SET PRE-SET>
|
||||||
|
<SYNTAX TURN OBJECT ON OBJECT = V-SET PRE-SET>
|
||||||
|
<SYNTAX SWITCH OBJECT TO OBJECT = V-SET PRE-SET>
|
||||||
|
<SYNTAX TURN OBJECT TO OBJECT = V-SET PRE-SET>
|
||||||
|
"<SYNTAX SWITCH IN OBJECT (HELD CARRIED ON-GROUND IN-ROOM) = V-TURN>"
|
||||||
|
<SYNTAX SWITCH OFF OBJECT(FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM MANY)
|
||||||
|
= V-LAMP-OFF>
|
||||||
|
<SYNTAX TURN OFF OBJECT(FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM MANY)
|
||||||
|
= V-LAMP-OFF>
|
||||||
|
<SYNTAX SWITCH OFF OBJECT(FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM MANY)
|
||||||
|
WITH OBJECT
|
||||||
|
= V-LAMP-OFF>
|
||||||
|
<SYNTAX TURN OFF OBJECT(FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM MANY)
|
||||||
|
WITH OBJECT
|
||||||
|
= V-LAMP-OFF>
|
||||||
|
<SYNTAX SWITCH ON OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM MANY)
|
||||||
|
= V-LAMP-ON>
|
||||||
|
<SYNTAX TURN ON OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM MANY)
|
||||||
|
= V-LAMP-ON>
|
||||||
|
<SYNTAX SWITCH ON OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM MANY)
|
||||||
|
WITH OBJECT
|
||||||
|
= V-LAMP-ON>
|
||||||
|
<SYNTAX TURN ON OBJECT (FIND LIGHTBIT) (HELD CARRIED ON-GROUND IN-ROOM MANY)
|
||||||
|
WITH OBJECT
|
||||||
|
= V-LAMP-ON> "? IS MANY O.K.?"
|
||||||
|
<SYNTAX TURN TO OBJECT (HELD CARRIED ON-GROUND IN-ROOM)
|
||||||
|
= V-TURN>
|
||||||
|
|
||||||
|
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM) = V-UNLOCK>
|
||||||
|
<SYNTAX UNLOCK OBJECT (ON-GROUND IN-ROOM) WITH OBJECT = V-UNLOCK>
|
||||||
|
|
||||||
|
<SYNTAX UNSCRIPT = V-UNSCRIPT>
|
||||||
|
|
||||||
|
"<SYNTAX UNSPACE = V-UNSPACE>"
|
||||||
|
|
||||||
|
<SYNONYM UNTIE FREE UNFASTEN UNATTACH UNHOOK UNCUFF>
|
||||||
|
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
|
||||||
|
= V-UNTIE>
|
||||||
|
<SYNTAX UNTIE OBJECT (ON-GROUND IN-ROOM HELD CARRIED)
|
||||||
|
FROM OBJECT
|
||||||
|
= V-UNTIE>
|
||||||
|
|
||||||
|
<SYNTAX USE OBJECT = V-USE>
|
||||||
|
<SYNTAX USE OBJECT AGAINST OBJECT = V-USE-AGAINST>
|
||||||
|
|
||||||
|
<SYNTAX VERBOSE = V-VERBOSE>
|
||||||
|
|
||||||
|
<SYNONYM RELEASE REVISION VERSION EDITION>
|
||||||
|
<SYNTAX RELEASE = V-VERSION>
|
||||||
|
<SYNTAX RELEASE OBJECT (FIND PERSON) = V-UNTIE>
|
||||||
|
|
||||||
|
<SYNONYM WAIT Z STAY MEDITATE RELAX REST>
|
||||||
|
"<SYNTAX WAIT = V-WAIT>"
|
||||||
|
<SYNTAX WAIT OBJECT (FIND RMUNGBIT) = V-WAIT-FOR>
|
||||||
|
<SYNTAX WAIT FOR OBJECT (FIND RMUNGBIT) = V-WAIT-FOR>
|
||||||
|
<SYNTAX WAIT TILL OBJECT = V-WAIT-UNTIL>
|
||||||
|
<SYNTAX WAIT UNTIL OBJECT = V-WAIT-UNTIL>
|
||||||
|
|
||||||
|
<SYNONYM WAKE AWAKE SURPRISE STARTLE>
|
||||||
|
<SYNTAX WAKE OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-ALARM>
|
||||||
|
<SYNTAX WAKE UP OBJECT (FIND PERSON) (ON-GROUND IN-ROOM) = V-ALARM>
|
||||||
|
|
||||||
|
<SYNONYM WALK GO RUN PROCEED STEER HEAD DRIVE>
|
||||||
|
<SYNTAX WALK OBJECT = V-WALK>
|
||||||
|
<SYNTAX CRAWL OBJECT = V-WALK>
|
||||||
|
<SYNTAX WALK AROUND OBJECT = V-WALK-AROUND>
|
||||||
|
<SYNTAX CRAWL AROUND OBJECT = V-WALK-AROUND>
|
||||||
|
<SYNTAX WALK BEHIND OBJECT = V-THROUGH PRE-THROUGH>
|
||||||
|
<SYNTAX CRAWL BEHIND OBJECT = V-THROUGH PRE-THROUGH>
|
||||||
|
<SYNTAX WALK DOWN OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-DOWN> "(FIND CLIMBBIT)"
|
||||||
|
<SYNTAX WALK IN OBJECT = V-THROUGH PRE-THROUGH>
|
||||||
|
<SYNTAX CRAWL IN OBJECT = V-THROUGH PRE-THROUGH>
|
||||||
|
<SYNTAX WALK OBJECT OVER OBJECT = V-RUN-OVER>
|
||||||
|
<SYNTAX WALK OUT ;OF OBJECT = V-LEAVE>
|
||||||
|
<SYNTAX CRAWL OUT ;OF OBJECT = V-LEAVE>
|
||||||
|
<SYNTAX WALK TO OBJECT = V-WALK-TO>
|
||||||
|
<SYNTAX CRAWL TO OBJECT = V-WALK-TO>
|
||||||
|
<SYNTAX WALK UNDER OBJECT = V-WALK-UNDER>
|
||||||
|
<SYNTAX CRAWL UNDER OBJECT = V-WALK-UNDER>
|
||||||
|
<SYNTAX WALK UP OBJECT (ON-GROUND IN-ROOM) = V-CLIMB-UP> "(FIND CLIMBBIT)"
|
||||||
|
<SYNTAX WALK THROUGH OBJECT = V-THROUGH PRE-THROUGH>
|
||||||
|
<SYNTAX CRAWL THROUGH OBJECT = V-THROUGH PRE-THROUGH>
|
||||||
|
<SYNTAX WALK WITH OBJECT = V-FOLLOW>
|
||||||
|
|
||||||
|
"<SYNTAX WATCH OBJECT = V-EXAMINE>"
|
||||||
|
|
||||||
|
<SYNONYM NAME IDENTIFY>
|
||||||
|
<SYNTAX NAME OBJECT (HELD CARRIED HAVE) = V-WHAT>
|
||||||
|
|
||||||
|
"<SYNTAX WHAT ABOUT OBJECT (HELD CARRIED HAVE) = V-WHAT>
|
||||||
|
<SYNTAX WHAT IN OBJECT (HELD CARRIED IN-ROOM ON-GROUND MANY)
|
||||||
|
= V-LOOK-INSIDE PRE-LOOK-INSIDE>
|
||||||
|
<SYNTAX WHAT NEAR OBJECT = V-WHO-WAS-NEAR>
|
||||||
|
<SYNTAX WHAT ON OBJECT (HELD CARRIED IN-ROOM ON-GROUND MANY)
|
||||||
|
= V-LOOK-INSIDE PRE-LOOK-INSIDE>
|
||||||
|
|
||||||
|
<SYNTAX WHEN = V-THANKS>
|
||||||
|
<SYNONYM WHEN DID WHY HOW>"
|
||||||
|
|
||||||
|
<SYNONYM YELL SCREAM SHOUT>
|
||||||
|
<SYNTAX YELL = V-YELL>
|
||||||
|
<SYNTAX YELL FOR OBJECT = V-YELL-FOR>
|
||||||
|
<SYNTAX YELL IN OBJECT = V-SAY-INTO PRE-SAY-INTO>
|
||||||
|
<SYNTAX YELL TO OBJECT (FIND PERSON) (IN-ROOM) = V-TELL>
|
||||||
|
|
||||||
|
<SYNONYM YES Y AYE ROGER WILCO OK OKAY 10-4 SURE YUP YEAH AFFIRM>
|
||||||
|
<SYNTAX YES = V-YES>
|
26
tandy.errors
Normal file
26
tandy.errors
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
Assembling STD.XZAP.1
|
||||||
|
|
||||||
|
|
||||||
|
Inserting J1FREQ.XZAP.7 ( 620 bytes)
|
||||||
|
Inserting J1DAT.ZAP.1 (22305 bytes)
|
||||||
|
Inserting MACROS.ZAP.1 ( 104 bytes)
|
||||||
|
Inserting MAIN.ZAP.1 ( 2259 bytes)
|
||||||
|
Inserting CLOCK.ZAP.1 ( 186 bytes)
|
||||||
|
Inserting SUB.ZAP.3 (16341 bytes)
|
||||||
|
Inserting BATTLE.ZAP.1 ( 5651 bytes)
|
||||||
|
Inserting DOME.ZAP.1 ( 9902 bytes)
|
||||||
|
Inserting PLACES.ZAP.1 ( 4753 bytes)
|
||||||
|
Inserting PEOPLE.ZAP.1 (15561 bytes)
|
||||||
|
Inserting THINGS.ZAP.1 ( 2058 bytes)
|
||||||
|
Inserting GLOBAL.ZAP.1 ( 5836 bytes)
|
||||||
|
Inserting PARSER.ZAP.1 ( 5735 bytes)
|
||||||
|
Inserting SYNTAX.ZAP.1 ( 778 bytes)
|
||||||
|
Inserting VERBS.ZAP.3 (15682 bytes)
|
||||||
|
Inserting EVENTS.ZAP.1 ( 7364 bytes)
|
||||||
|
Inserting J1STR.ZAP.1 ( 2553 bytes)
|
||||||
|
22989 bytes of preload.
|
||||||
|
|
||||||
|
117752 bytes (115K).
|
||||||
|
32760 bytes too large for one-disk game on ATARI.
|
||||||
|
255 objects.
|
||||||
|
239 globals.
|
340
things.zap
Normal file
340
things.zap
Normal file
|
@ -0,0 +1,340 @@
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT RANDOM-PSEUDO
|
||||||
|
PRINTR "You can't do anything useful with that."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ
|
||||||
|
EQUAL? PRSO,NOT-HERE-OBJECT \?ELS3
|
||||||
|
EQUAL? PRSI,NOT-HERE-OBJECT \?ELS3
|
||||||
|
PRINTI "(Those things aren't here!)"
|
||||||
|
CRLF
|
||||||
|
RETURN 2
|
||||||
|
?ELS3: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS11
|
||||||
|
SET 'TBL,P-PRSO
|
||||||
|
JUMP ?CND1
|
||||||
|
?ELS11: SET 'TBL,P-PRSI
|
||||||
|
SET 'PRSO?,0
|
||||||
|
?CND1: EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT \?CND14
|
||||||
|
FSET? PRSO,PERSON \?CND14
|
||||||
|
IN? PRSO,GLOBAL-OBJECTS \?CND14
|
||||||
|
PRINTD PRSO
|
||||||
|
CALL NOT-HERE-PERSON,PRSO
|
||||||
|
?CND14: ZERO? PRSO? /?ELS23
|
||||||
|
EQUAL? PRSA,V?ASK-CONTEXT-ABOUT,V?BOARD /?THN28
|
||||||
|
EQUAL? PRSA,V?ASK-CONTEXT-FOR,V?TAKE-WITH /?THN28
|
||||||
|
EQUAL? PRSA,V?FIND,V?FOLLOW,V?USE /?THN28
|
||||||
|
EQUAL? PRSA,V?LEAVE,V?DISEMBARK,V?PHONE /?THN28
|
||||||
|
EQUAL? PRSA,V?THROUGH,V?WALK-TO,V?WHAT /?THN28
|
||||||
|
EQUAL? PRSA,V?BRING,V?TAKE,V?SSHOW \?CND21
|
||||||
|
EQUAL? WINNER,PLAYER /?CND21
|
||||||
|
?THN28: CALL FIND-NOT-HERE,TBL,PRSO? >OBJ
|
||||||
|
ZERO? OBJ /FALSE
|
||||||
|
EQUAL? OBJ,NOT-HERE-OBJECT /?CND21
|
||||||
|
RETURN 2
|
||||||
|
?ELS23: EQUAL? PRSA,V?ASK-ABOUT,V?ASK-FOR,V?TAKE-TO /?THN47
|
||||||
|
EQUAL? PRSA,V?SEARCH-FOR,V?TELL-ABOUT /?THN47
|
||||||
|
EQUAL? PRSA,V?SBRING,V?SHOW \?CND21
|
||||||
|
EQUAL? WINNER,PLAYER /?CND21
|
||||||
|
?THN47: CALL FIND-NOT-HERE,TBL,PRSO? >OBJ
|
||||||
|
ZERO? OBJ /FALSE
|
||||||
|
EQUAL? OBJ,NOT-HERE-OBJECT /?CND21
|
||||||
|
RETURN 2
|
||||||
|
?CND21: PRINTI "(You can't see any"
|
||||||
|
CALL NOT-HERE-PRINT
|
||||||
|
PRINTI " here!)"
|
||||||
|
CRLF
|
||||||
|
RETURN 2
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ,PERSON?=1
|
||||||
|
CALL MOBY-FIND,TBL >M-F
|
||||||
|
ZERO? DEBUG /?CND1
|
||||||
|
PRINTI "[Found "
|
||||||
|
PRINTN M-F
|
||||||
|
PRINTI " objects]"
|
||||||
|
CRLF
|
||||||
|
?CND1: EQUAL? 1,M-F \?ELS11
|
||||||
|
ZERO? DEBUG /?CND12
|
||||||
|
PRINTI "[Namely: "
|
||||||
|
PRINTD P-MOBY-FOUND
|
||||||
|
PRINTI "]"
|
||||||
|
CRLF
|
||||||
|
?CND12: ZERO? PRSO? /?ELS20
|
||||||
|
SET 'PRSO,P-MOBY-FOUND
|
||||||
|
RFALSE
|
||||||
|
?ELS20: SET 'PRSI,P-MOBY-FOUND
|
||||||
|
RFALSE
|
||||||
|
?ELS11: LESS? 1,M-F \?ELS25
|
||||||
|
GET TBL,1 >OBJ
|
||||||
|
GETP OBJ,P?GENERIC
|
||||||
|
CALL STACK,OBJ >OBJ
|
||||||
|
ZERO? OBJ /?ELS25
|
||||||
|
ZERO? DEBUG /?CND28
|
||||||
|
PRINTI "[Generic: "
|
||||||
|
PRINTD OBJ
|
||||||
|
PRINTI "]"
|
||||||
|
CRLF
|
||||||
|
?CND28: EQUAL? OBJ,NOT-HERE-OBJECT /TRUE
|
||||||
|
ZERO? PRSO? /?ELS38
|
||||||
|
SET 'PRSO,OBJ
|
||||||
|
RFALSE
|
||||||
|
?ELS38: SET 'PRSI,OBJ
|
||||||
|
RFALSE
|
||||||
|
?ELS25: ZERO? PRSO? \?ELS47
|
||||||
|
IN? PRSO,HERE \?ELS47
|
||||||
|
EQUAL? PRSA,V?TELL-ABOUT,V?ASK-FOR,V?ASK-ABOUT /?THN52
|
||||||
|
?ELS47: ZERO? PRSO? /?ELS49
|
||||||
|
CALL QCONTEXT-GOOD?
|
||||||
|
ZERO? STACK /?ELS49
|
||||||
|
EQUAL? PRSA,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT /?THN52
|
||||||
|
?ELS49: EQUAL? WINNER,PLAYER /?ELS43
|
||||||
|
EQUAL? PRSA,V?SGIVE /?THN52
|
||||||
|
EQUAL? PRSA,V?GIVE,V?WHAT,V?FIND \?ELS43
|
||||||
|
?THN52: EQUAL? PRSA,V?ASK-FOR,V?ASK-ABOUT \?ELS56
|
||||||
|
FSET? PRSO,PERSON /?CND57
|
||||||
|
SET 'PERSON?,0
|
||||||
|
PRINTI "The "
|
||||||
|
?CND57: PRINTD PRSO
|
||||||
|
JUMP ?CND54
|
||||||
|
?ELS56: CALL QCONTEXT-GOOD?
|
||||||
|
ZERO? STACK /?ELS65
|
||||||
|
FSET? QCONTEXT,PERSON /?CND66
|
||||||
|
SET 'PERSON?,0
|
||||||
|
PRINTI "The "
|
||||||
|
?CND66: PRINTD QCONTEXT
|
||||||
|
JUMP ?CND54
|
||||||
|
?ELS65: EQUAL? WINNER,PLAYER /?ELS74
|
||||||
|
PRINTD WINNER
|
||||||
|
JUMP ?CND54
|
||||||
|
?ELS74: CALL FIND-FLAG,HERE,PERSON,PLAYER >OBJ
|
||||||
|
ZERO? OBJ /?ELS78
|
||||||
|
PRINTD OBJ
|
||||||
|
JUMP ?CND54
|
||||||
|
?ELS78: CALL VISIBLE?,TIP
|
||||||
|
ZERO? STACK /?ELS82
|
||||||
|
PRINTI "Tip"
|
||||||
|
JUMP ?CND54
|
||||||
|
?ELS82: PRINTI "Someone"
|
||||||
|
?CND54: ZERO? PERSON? \?ELS91
|
||||||
|
PRINTI " isn't connected to any"
|
||||||
|
JUMP ?CND89
|
||||||
|
?ELS91: PRINTI " looks confused. ""I don't know anything about any"
|
||||||
|
?CND89: CALL NOT-HERE-PRINT
|
||||||
|
PRINTI "!"
|
||||||
|
ZERO? PERSON? /?CND100
|
||||||
|
PRINTI """"
|
||||||
|
?CND100: CRLF
|
||||||
|
RTRUE
|
||||||
|
?ELS43: ZERO? PRSO? \?ELS107
|
||||||
|
PRINTI "You wouldn't find any"
|
||||||
|
CALL NOT-HERE-PRINT
|
||||||
|
PRINTR " there."
|
||||||
|
?ELS107: RETURN NOT-HERE-OBJECT
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT NOT-HERE-PRINT,?TMP1
|
||||||
|
ZERO? P-OFLAG \?THN6
|
||||||
|
ZERO? P-MERGED /?ELS5
|
||||||
|
?THN6: ZERO? P-XADJ /?CND8
|
||||||
|
PRINTI " "
|
||||||
|
PRINTB P-XADJN
|
||||||
|
?CND8: ZERO? P-XNAM /FALSE
|
||||||
|
PRINTI " "
|
||||||
|
PRINTB P-XNAM
|
||||||
|
RTRUE
|
||||||
|
?ELS5: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS23
|
||||||
|
GET P-ITBL,P-NC1 >?TMP1
|
||||||
|
GET P-ITBL,P-NC1L
|
||||||
|
CALL BUFFER-PRINT,?TMP1,STACK,0
|
||||||
|
RSTACK
|
||||||
|
?ELS23: GET P-ITBL,P-NC2 >?TMP1
|
||||||
|
GET P-ITBL,P-NC2L
|
||||||
|
CALL BUFFER-PRINT,?TMP1,STACK,0
|
||||||
|
RSTACK
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT NO-TOUCH
|
||||||
|
PRINTR "Only clods fool around with these things for no good reason."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT THE?,NOUN
|
||||||
|
FSET? NOUN,PERSON \?ELS9
|
||||||
|
EQUAL? NOUN,PLAYER \TRUE
|
||||||
|
?ELS9: FSET? NOUN,NARTICLEBIT /TRUE
|
||||||
|
PRINTI " the"
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT NOTEBOOK-F
|
||||||
|
EQUAL? PRSA,V?TELL-ABOUT,V?ANALYZE /?THN6
|
||||||
|
EQUAL? PRSA,V?EXAMINE,V?READ,V?OPEN \FALSE
|
||||||
|
?THN6: PRINTI "(You'll find the "
|
||||||
|
PRINTD NOTEBOOK
|
||||||
|
PRINTI " in your "
|
||||||
|
PRINTD GAME
|
||||||
|
PRINTR " package.)"
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT MAGAZINE-F
|
||||||
|
CALL REMOTE-VERB?
|
||||||
|
ZERO? STACK \FALSE
|
||||||
|
EQUAL? PRSA,V?OPEN \?ELS7
|
||||||
|
CALL NOT-HOLDING?,MAGAZINE
|
||||||
|
ZERO? STACK \TRUE
|
||||||
|
?ELS7: EQUAL? PRSA,V?LOOK-UP \?ELS11
|
||||||
|
EQUAL? PRSO,GLOBAL-THORPE \?ELS11
|
||||||
|
CALL PERFORM,V?READ,ARTICLE
|
||||||
|
RTRUE
|
||||||
|
?ELS11: EQUAL? PRSA,V?ANALYZE,V?EXAMINE,V?READ \FALSE
|
||||||
|
CALL NOT-HOLDING?,MAGAZINE
|
||||||
|
ZERO? STACK \TRUE
|
||||||
|
PRINTI """Science World"" is a popular "
|
||||||
|
PRINTD MAGAZINE
|
||||||
|
PRINTI " about new scientific developments.
|
||||||
|
The cover shows "
|
||||||
|
PRINTD GLOBAL-THORPE
|
||||||
|
PRINTR ", marine biologist, surrounded by imaginative drawings of weird undersea life forms. The cover says:
|
||||||
|
""HOT FLASH FROM THE MARINE BIOLOGY FRONT!
|
||||||
|
... NEW SEA CREATURES SPAWNED BY TEST TUBE?
|
||||||
|
(SEE ARTICLE INSIDE)"""
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT ARTICLE-F
|
||||||
|
CALL DIVESTMENT?,ARTICLE
|
||||||
|
ZERO? STACK /?ELS5
|
||||||
|
CALL PERFORM,PRSA,MAGAZINE,PRSI
|
||||||
|
RTRUE
|
||||||
|
?ELS5: EQUAL? PRSA,V?ANALYZE /?THN8
|
||||||
|
EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE,V?READ \FALSE
|
||||||
|
?THN8: PRINTI "It says that "
|
||||||
|
PRINTD GLOBAL-THORPE
|
||||||
|
PRINTI " may have created synthetic forms of marine life by genetic engineering. You learn that Thorpe went into hiding to duck publicity, but before that he told friends he would soon marry "
|
||||||
|
PRINTD SHARON
|
||||||
|
PRINTR ".
|
||||||
|
The form of the creatures is unknown. They may be stimulated by ultrasonic pulses and might be trained to respond to such pulses.
|
||||||
|
Some scientists are skeptical, but Thorpe has claimed that one-celled organisms had evolved in his lab from AMINO-HYDROPHASE or AH. If rumors are true, these synthetic sea creatures should be based on the AH molecule."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT CATALYST-CAPSULE-F
|
||||||
|
EQUAL? PRSA,V?COMPARE \?ELS5
|
||||||
|
EQUAL? PRSI,CATALYST-CAPSULE \?ELS11
|
||||||
|
EQUAL? PRSO,REACTOR /?THN8
|
||||||
|
?ELS11: EQUAL? PRSO,CATALYST-CAPSULE \?ELS5
|
||||||
|
EQUAL? PRSI,REACTOR \?ELS5
|
||||||
|
?THN8: PRINTI "It looks as if the "
|
||||||
|
PRINTD CATALYST-CAPSULE
|
||||||
|
PRINTI " fits perfectly into the "
|
||||||
|
PRINTD REACTOR
|
||||||
|
PRINTR "."
|
||||||
|
?ELS5: EQUAL? PRSA,V?FIND \?ELS17
|
||||||
|
FSET? CATALYST-CAPSULE,TOUCHBIT /?ELS17
|
||||||
|
PRINTI "The capsule is usually stored on a "
|
||||||
|
PRINTD WORK-COUNTER
|
||||||
|
PRINTR " on the west wall of the tank area."
|
||||||
|
?ELS17: EQUAL? PRSA,V?PUT \?ELS23
|
||||||
|
EQUAL? PRSI,LOCAL-SUB,GLOBAL-SUB \?ELS23
|
||||||
|
PRINTR "You'll have to take it there yourself."
|
||||||
|
?ELS23: EQUAL? PRSA,V?TAKE \FALSE
|
||||||
|
FSET? CATALYST-CAPSULE,TRYTAKEBIT \FALSE
|
||||||
|
PRINTR "It's too hot to pick up."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT GENERIC-OXYGEN-GEAR-F,OBJ
|
||||||
|
CALL REMOTE-VERB?
|
||||||
|
ZERO? STACK /?ELS5
|
||||||
|
RETURN OXYGEN-GEAR
|
||||||
|
?ELS5: EQUAL? PRSA,V?TAKE \FALSE
|
||||||
|
ZERO? PRSI /FALSE
|
||||||
|
FSET? PRSI,PERSON \FALSE
|
||||||
|
EQUAL? PRSI,ANTRIM,SIEGEL,HORVAK \?ELS14
|
||||||
|
RETURN OXYGEN-GEAR-OTHER
|
||||||
|
?ELS14: EQUAL? PRSI,LOWELL,GREENUP \?ELS16
|
||||||
|
RETURN OXYGEN-GEAR-DIVER
|
||||||
|
?ELS16: EQUAL? PRSI,BLY \FALSE
|
||||||
|
RETURN OXYGEN-GEAR-BLY
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT OXYGEN-GEAR-GLOBAL-F
|
||||||
|
ZERO? SUB-IN-DOME /?THN6
|
||||||
|
CALL FIND-FLAG,HERE,PERSON,WINNER
|
||||||
|
ZERO? STACK \?ELS5
|
||||||
|
?THN6: CALL NOT-HERE,OXYGEN-GEAR-OTHER
|
||||||
|
RSTACK
|
||||||
|
?ELS5: EQUAL? PRSA,V?EXAMINE,V?TELL-ABOUT,V?SEARCH-FOR /FALSE
|
||||||
|
EQUAL? PRSA,V?FIND,V?ASK-CONTEXT-ABOUT,V?ASK-ABOUT /FALSE
|
||||||
|
CALL YOU-CANT
|
||||||
|
RSTACK
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT OXYGEN-GEAR-F
|
||||||
|
CALL REMOTE-VERB?
|
||||||
|
ZERO? STACK \FALSE
|
||||||
|
FCLEAR OXYGEN-GEAR,NDESCBIT
|
||||||
|
EQUAL? PRSA,V?TAKE \?ELS8
|
||||||
|
EQUAL? PRSO,OXYGEN-GEAR \?ELS8
|
||||||
|
CALL ITAKE
|
||||||
|
EQUAL? STACK,1 \TRUE
|
||||||
|
PRINTI "You're now wearing"
|
||||||
|
CALL THE-PRSO-PRINT
|
||||||
|
PRINTR " around your neck."
|
||||||
|
?ELS8: EQUAL? PRSA,V?OPEN /?THN18
|
||||||
|
EQUAL? PRSA,V?USE,V?TURN,V?LAMP-ON \?ELS17
|
||||||
|
?THN18: FSET? OXYGEN-GEAR,ONBIT \?ELS22
|
||||||
|
CALL ALREADY,OXYGEN-GEAR,STR?47
|
||||||
|
RTRUE
|
||||||
|
?ELS22: CALL NOT-HOLDING?,OXYGEN-GEAR
|
||||||
|
ZERO? STACK \TRUE
|
||||||
|
ZERO? DOME-AIR-BAD? \?CND20
|
||||||
|
PRINTR "You don't need it now!"
|
||||||
|
?CND20: FSET OXYGEN-GEAR,ONBIT
|
||||||
|
PRINTI "As you open the valve and suck on the rubber straw, you feel your lungs filling with pure oxygen."
|
||||||
|
ZERO? DOME-AIR-BAD? /?CND31
|
||||||
|
CALL CORRIDOR-LOOK,BLY
|
||||||
|
ZERO? STACK /?CND31
|
||||||
|
CRLF
|
||||||
|
PRINTI "But you notice Zoe Bly collapsing, and you realize she has no "
|
||||||
|
PRINTD OXYGEN-GEAR
|
||||||
|
PRINTI "!"
|
||||||
|
?CND31: CRLF
|
||||||
|
RTRUE
|
||||||
|
?ELS17: EQUAL? PRSA,V?CLOSE \FALSE
|
||||||
|
CALL PERFORM,V?LAMP-OFF,OXYGEN-GEAR
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT BADGE-PLAYER-F
|
||||||
|
CALL DIVESTMENT?,BADGE-PLAYER
|
||||||
|
ZERO? STACK /?ELS5
|
||||||
|
PRINTR "That wouldn't be good for security."
|
||||||
|
?ELS5: EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \FALSE
|
||||||
|
PRINTI "It's a special identification badge for"
|
||||||
|
CALL RESEARCH-LAB
|
||||||
|
PRINTR "."
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT GENERIC-TOOL-F,OBJ
|
||||||
|
EQUAL? PRSA,V?TAKE-WITH,V?OPEN-WITH \FALSE
|
||||||
|
RETURN UNIVERSAL-TOOL
|
||||||
|
|
||||||
|
|
||||||
|
.FUNCT V-$BAY
|
||||||
|
SET 'HERE,SUB
|
||||||
|
MOVE PLAYER,SUB
|
||||||
|
MOVE TIP,SUB
|
||||||
|
MOVE CATALYST-CAPSULE,REACTOR
|
||||||
|
FCLEAR REACTOR,OPENBIT
|
||||||
|
FSET REACTOR,ONBIT
|
||||||
|
FSET ENGINE,ONBIT
|
||||||
|
FCLEAR SUB-DOOR,OPENBIT
|
||||||
|
SET 'MONSTER-GONE,1
|
||||||
|
SET 'JOYSTICK-DIR,P?EAST
|
||||||
|
SET 'SUB-DLON,1
|
||||||
|
SET 'SUB-DLAT,0
|
||||||
|
SET 'NOW-TERRAIN,BAY-TERRAIN
|
||||||
|
SET 'SUB-IN-TANK,0
|
||||||
|
CALL QUEUE,I-UPDATE-SUB-POSITION,-1
|
||||||
|
PUT STACK,0,1
|
||||||
|
RTRUE
|
||||||
|
|
||||||
|
.ENDI
|
462
things.zil
Normal file
462
things.zil
Normal file
|
@ -0,0 +1,462 @@
|
||||||
|
"THINGS for SEASTALKER
|
||||||
|
Copyright (C) 1984 Infocom, Inc. All rights reserved."
|
||||||
|
|
||||||
|
<OBJECT PSEUDO-OBJECT
|
||||||
|
(DESC "pseudo" ;"Place holder (MUST BE 6 CHARACTERS!!!!!)")
|
||||||
|
(CONTFCN NULL-F) ;"to establish property"
|
||||||
|
(ACTION NULL-F ;"Place holder")>
|
||||||
|
|
||||||
|
<ROUTINE RANDOM-PSEUDO ()
|
||||||
|
%<XTELL "You can't do anything useful with that." CR>>
|
||||||
|
|
||||||
|
<OBJECT NOT-HERE-OBJECT
|
||||||
|
(DESC "that thing")
|
||||||
|
(FLAGS NARTICLEBIT)
|
||||||
|
(ACTION NOT-HERE-OBJECT-F)>
|
||||||
|
|
||||||
|
<ROUTINE NOT-HERE-OBJECT-F ("AUX" TBL (PRSO? T) OBJ)
|
||||||
|
;"Protocol: return ,M-FATAL if case was handled and msg TELLed,
|
||||||
|
<> if PRSO/PRSI ready to use"
|
||||||
|
<COND ;"This COND is game independent (except the TELL)"
|
||||||
|
(<AND <EQUAL? ,PRSO ,NOT-HERE-OBJECT>
|
||||||
|
<EQUAL? ,PRSI ,NOT-HERE-OBJECT>>
|
||||||
|
<TELL "(Those things aren't here!)" CR>
|
||||||
|
<RFATAL>)
|
||||||
|
(<EQUAL? ,PRSO ,NOT-HERE-OBJECT>
|
||||||
|
<SET TBL ,P-PRSO>)
|
||||||
|
(T
|
||||||
|
<SET TBL ,P-PRSI>
|
||||||
|
<SET PRSO? <>>)>
|
||||||
|
<COND (<AND <VERB? ASK-ABOUT ASK-FOR SEARCH-FOR>
|
||||||
|
<FSET? ,PRSO ,PERSON>
|
||||||
|
<IN? ,PRSO ,GLOBAL-OBJECTS>>
|
||||||
|
<TELL D ,PRSO>
|
||||||
|
<NOT-HERE-PERSON ,PRSO>)>
|
||||||
|
<COND (.PRSO?
|
||||||
|
<COND (<OR <EQUAL? ,PRSA ,V?ASK-CONTEXT-ABOUT ,V?BOARD>
|
||||||
|
<EQUAL? ,PRSA ,V?ASK-CONTEXT-FOR ,V?TAKE-WITH>
|
||||||
|
<EQUAL? ,PRSA ,V?FIND ,V?FOLLOW ,V?USE>
|
||||||
|
<EQUAL? ,PRSA ,V?LEAVE ,V?DISEMBARK ,V?PHONE>
|
||||||
|
<EQUAL? ,PRSA ,V?THROUGH ,V?WALK-TO ,V?WHAT>
|
||||||
|
<AND <EQUAL? ,PRSA ,V?BRING ,V?TAKE ,V?SSHOW>
|
||||||
|
<NOT <==? ,WINNER ,PLAYER>>>>
|
||||||
|
<COND (<SET OBJ <FIND-NOT-HERE .TBL .PRSO?>>
|
||||||
|
<COND (<NOT <==? .OBJ ,NOT-HERE-OBJECT>>
|
||||||
|
<RFATAL>)>)
|
||||||
|
(T
|
||||||
|
<RFALSE>)>)>)
|
||||||
|
(T
|
||||||
|
<COND (<OR <EQUAL? ,PRSA ,V?ASK-ABOUT ,V?ASK-FOR ,V?TAKE-TO>
|
||||||
|
<EQUAL? ,PRSA ,V?SEARCH-FOR ,V?TELL-ABOUT>
|
||||||
|
<AND <EQUAL? ,PRSA ,V?SBRING ,V?SHOW>
|
||||||
|
<NOT <==? ,WINNER ,PLAYER>>>>
|
||||||
|
<COND (<SET OBJ <FIND-NOT-HERE .TBL .PRSO?>>
|
||||||
|
<COND (<NOT <==? .OBJ ,NOT-HERE-OBJECT>>
|
||||||
|
<RFATAL>)>)
|
||||||
|
(T
|
||||||
|
<RFALSE>)>)>)>
|
||||||
|
;"Here is the default 'cant see any' printer"
|
||||||
|
<TELL "(You can't see any">
|
||||||
|
<NOT-HERE-PRINT>
|
||||||
|
<TELL " here!)" CR>
|
||||||
|
<RFATAL>>
|
||||||
|
|
||||||
|
<ROUTINE FIND-NOT-HERE (TBL PRSO? "AUX" M-F OBJ (PERSON? T))
|
||||||
|
;"Protocol: return T if case was handled and msg TELLed,
|
||||||
|
,NOT-HERE-OBJECT if 'can't see' msg TELLed,
|
||||||
|
<> if PRSO/PRSI ready to use"
|
||||||
|
;"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 "[Found " N .M-F " objects]" CR>)>
|
||||||
|
<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>)>
|
||||||
|
;<THIS-IS-IT ,P-MOBY-FOUND>
|
||||||
|
<RFALSE>)
|
||||||
|
(<AND <L? 1 .M-F>
|
||||||
|
<SET OBJ <APPLY <GETP <SET OBJ <GET .TBL 1>> ,P?GENERIC>
|
||||||
|
.OBJ>>>
|
||||||
|
;"Protocol: returns .OBJ if that's the one to use,
|
||||||
|
,NOT-HERE-OBJECT if case was handled and msg TELLed,
|
||||||
|
<> if WHICH-PRINT should be called"
|
||||||
|
<COND (,DEBUG <TELL "[Generic: " D .OBJ "]" CR>)>
|
||||||
|
<COND (<==? .OBJ ,NOT-HERE-OBJECT> <RTRUE>)
|
||||||
|
(.PRSO? <SETG PRSO .OBJ>)
|
||||||
|
(T <SETG PRSI .OBJ>)>
|
||||||
|
;<THIS-IS-IT .OBJ>
|
||||||
|
<RFALSE>)
|
||||||
|
(<OR <AND <NOT .PRSO?>
|
||||||
|
<IN? ,PRSO ,HERE>
|
||||||
|
<VERB? ASK-ABOUT ASK-FOR TELL-ABOUT>>
|
||||||
|
<AND .PRSO?
|
||||||
|
<QCONTEXT-GOOD?>
|
||||||
|
<VERB? ASK-CONTEXT-ABOUT ASK-CONTEXT-FOR>>
|
||||||
|
<AND <NOT <==? ,WINNER ,PLAYER>>
|
||||||
|
<VERB? FIND WHAT GIVE SGIVE>>>
|
||||||
|
<COND (<VERB? ASK-ABOUT ASK-FOR>
|
||||||
|
<COND (<NOT <FSET? ,PRSO ,PERSON>>
|
||||||
|
<SET PERSON? <>>
|
||||||
|
<TELL "The ">)>
|
||||||
|
<TELL D ,PRSO>)
|
||||||
|
(<QCONTEXT-GOOD?>
|
||||||
|
<COND (<NOT <FSET? ,QCONTEXT ,PERSON>>
|
||||||
|
<SET PERSON? <>>
|
||||||
|
<TELL "The ">)>
|
||||||
|
<TELL D ,QCONTEXT>)
|
||||||
|
(<NOT <==? ,WINNER ,PLAYER>>
|
||||||
|
<TELL D ,WINNER>)
|
||||||
|
(<SET OBJ <FIND-FLAG ,HERE ,PERSON ,PLAYER>>
|
||||||
|
<TELL D .OBJ>)
|
||||||
|
(<VISIBLE? ,TIP>
|
||||||
|
<TELL "Tip">)
|
||||||
|
(T <TELL "Someone">)>
|
||||||
|
<COND (<NOT .PERSON? ;<FSET? ,PRSO ,PERSON>>
|
||||||
|
<TELL " isn't connected to any">)
|
||||||
|
(T %<XTELL
|
||||||
|
" looks confused. \"I don't know anything about any">)>
|
||||||
|
<NOT-HERE-PRINT>
|
||||||
|
<TELL "!">
|
||||||
|
<COND (.PERSON? <TELL "\"">)>
|
||||||
|
<CRLF>
|
||||||
|
<RTRUE>)
|
||||||
|
(<NOT .PRSO?>
|
||||||
|
%<XTELL "You wouldn't find any">
|
||||||
|
<NOT-HERE-PRINT>
|
||||||
|
<TELL " there." CR>
|
||||||
|
<RTRUE>)
|
||||||
|
(T ,NOT-HERE-OBJECT)>>
|
||||||
|
|
||||||
|
<ROUTINE NOT-HERE-PRINT ()
|
||||||
|
<COND (<OR ,P-OFLAG ,P-MERGED>
|
||||||
|
<COND (,P-XADJ <TELL " "> <PRINTB ,P-XADJN>)>
|
||||||
|
<COND (,P-XNAM <TELL " "> <PRINTB ,P-XNAM>)>)
|
||||||
|
(<EQUAL? ,PRSO ,NOT-HERE-OBJECT>
|
||||||
|
<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> <>>)>>
|
||||||
|
|
||||||
|
<ROUTINE NO-TOUCH ()
|
||||||
|
%<XTELL
|
||||||
|
"Only clods fool around with these things for no good reason." CR>>
|
||||||
|
|
||||||
|
<ROUTINE THE? (NOUN)
|
||||||
|
<COND (<OR <AND <FSET? .NOUN ,PERSON>
|
||||||
|
<NOT <EQUAL? .NOUN ,PLAYER>>>
|
||||||
|
<FSET? .NOUN ,NARTICLEBIT>>
|
||||||
|
<RTRUE>)
|
||||||
|
(T <TELL " the">)>>
|
||||||
|
|
||||||
|
<OBJECT NOTEBOOK
|
||||||
|
(IN PLAYER)
|
||||||
|
(DESC "Logbook")
|
||||||
|
(ADJECTIVE LOG ;LAB ;LABORATORY)
|
||||||
|
(SYNONYM LOGBOOK BOOK)
|
||||||
|
(FLAGS TAKEBIT READBIT ;BURNBIT)
|
||||||
|
(ACTION NOTEBOOK-F)>
|
||||||
|
|
||||||
|
<ROUTINE NOTEBOOK-F ()
|
||||||
|
<COND (<VERB? OPEN READ EXAMINE ANALYZE TELL-ABOUT>
|
||||||
|
<TELL
|
||||||
|
"(You'll find the " D ,NOTEBOOK " in your " D ,GAME " package.)" CR>)>>
|
||||||
|
|
||||||
|
<OBJECT MAGAZINE
|
||||||
|
(IN TIP)
|
||||||
|
(DESC "magazine")
|
||||||
|
(ADJECTIVE ;TIP TIP\'S RANDALL MAGAZINE MAG)
|
||||||
|
(SYNONYM MAGAZINE MAG COVER NEWSPAPER)
|
||||||
|
(FLAGS READBIT TAKEBIT ;NDESCBIT CONTBIT SEARCHBIT)
|
||||||
|
(CAPACITY 1)
|
||||||
|
(ACTION MAGAZINE-F)>
|
||||||
|
|
||||||
|
<ROUTINE MAGAZINE-F ()
|
||||||
|
<COND (<REMOTE-VERB?>
|
||||||
|
<RFALSE>)
|
||||||
|
(<AND <VERB? OPEN> <NOT-HOLDING? ,MAGAZINE>>
|
||||||
|
;"<VERB? OPEN> added 4/11/84 by MARC"
|
||||||
|
<RTRUE>)
|
||||||
|
(<AND <VERB? LOOK-UP> <DOBJ? GLOBAL-THORPE>>
|
||||||
|
<PERFORM ,V?READ ,ARTICLE>
|
||||||
|
<RTRUE>)
|
||||||
|
(<VERB? READ ;"LOOK-INSIDE OPEN" EXAMINE ANALYZE>
|
||||||
|
;"COND added 4/11/84 by MARC"
|
||||||
|
<COND (<NOT-HOLDING? ,MAGAZINE> <RTRUE>)>
|
||||||
|
<TELL
|
||||||
|
"\"Science World\" is a popular " D ,MAGAZINE " about new
|
||||||
|
scientific developments.|
|
||||||
|
The cover shows " D ,GLOBAL-THORPE ", marine
|
||||||
|
biologist, surrounded by imaginative drawings of weird undersea life
|
||||||
|
forms. The cover says:|
|
||||||
|
\"HOT FLASH FROM THE MARINE BIOLOGY FRONT!|
|
||||||
|
... NEW SEA CREATURES SPAWNED BY TEST TUBE?|
|
||||||
|
(SEE ARTICLE INSIDE)\"" CR>)>>
|
||||||
|
|
||||||
|
<OBJECT ARTICLE
|
||||||
|
(IN MAGAZINE)
|
||||||
|
(DESC "article")
|
||||||
|
(ADJECTIVE COVER)
|
||||||
|
(SYNONYM ARTICLE STORY REPORT PAGE)
|
||||||
|
(FLAGS READBIT ;TAKEBIT ;NDESCBIT VOWELBIT)
|
||||||
|
(SIZE 1)
|
||||||
|
(ACTION ARTICLE-F)>
|
||||||
|
|
||||||
|
<ROUTINE ARTICLE-F ()
|
||||||
|
<COND (<DIVESTMENT? ,ARTICLE>
|
||||||
|
<PERFORM ,PRSA ,MAGAZINE ,PRSI>
|
||||||
|
<RTRUE>)
|
||||||
|
(<VERB? READ LOOK-INSIDE EXAMINE ANALYZE>
|
||||||
|
<TELL
|
||||||
|
"It says that " D ,GLOBAL-THORPE " may have created synthetic forms of
|
||||||
|
marine life by genetic engineering. You learn that Thorpe went into
|
||||||
|
hiding to duck publicity, but before that he told friends he would soon
|
||||||
|
marry " D ,SHARON ".|
|
||||||
|
The form of the creatures is unknown. They may be stimulated by
|
||||||
|
ultrasonic pulses and might be trained to respond to such pulses.|
|
||||||
|
Some scientists are skeptical, but Thorpe has claimed that one-celled
|
||||||
|
organisms had evolved in his lab from AMINO-HYDROPHASE or AH. If rumors
|
||||||
|
are true, these synthetic sea creatures should be based on the AH
|
||||||
|
molecule." CR>)>>
|
||||||
|
|
||||||
|
;<OBJECT LAMP
|
||||||
|
(IN LOCAL-GLOBALS)
|
||||||
|
(DESC "lamp")
|
||||||
|
(SYNONYM LAMP)
|
||||||
|
(FLAGS NDESCBIT FURNITURE ONBIT)>
|
||||||
|
|
||||||
|
;<OBJECT CABINET
|
||||||
|
(IN LOCAL-GLOBALS)
|
||||||
|
(DESC "cabinet")
|
||||||
|
(SYNONYM CABINET)
|
||||||
|
;(ACTION CUPBOARD-F)>
|
||||||
|
|
||||||
|
<OBJECT CATALYST-CAPSULE
|
||||||
|
(IN WORK-COUNTER)
|
||||||
|
(DESC "catalyst capsule")
|
||||||
|
(ADJECTIVE CATALYST)
|
||||||
|
(SYNONYM CAPSULE)
|
||||||
|
(ACTION CATALYST-CAPSULE-F)
|
||||||
|
(FLAGS TAKEBIT)
|
||||||
|
(TEXT "(You'll find that information in your SEASTALKER package.)")
|
||||||
|
;(TEXT "This capsule goes in the reactor in the SCIMITAR.")
|
||||||
|
(SIZE 11)
|
||||||
|
(VALUE 5)>
|
||||||
|
|
||||||
|
<ROUTINE CATALYST-CAPSULE-F ()
|
||||||
|
<COND (<AND <VERB? COMPARE>
|
||||||
|
<OR <AND <IOBJ? CATALYST-CAPSULE> <DOBJ? REACTOR>>
|
||||||
|
<AND <DOBJ? CATALYST-CAPSULE> <IOBJ? REACTOR>>>>
|
||||||
|
<TELL
|
||||||
|
"It looks as if the " D ,CATALYST-CAPSULE " fits perfectly into the "
|
||||||
|
D ,REACTOR "." CR>)
|
||||||
|
(<AND <VERB? FIND> <NOT <FSET? ,CATALYST-CAPSULE ,TOUCHBIT>>>
|
||||||
|
%<XTELL
|
||||||
|
"The capsule is usually stored on a " D ,WORK-COUNTER" on the west wall of the
|
||||||
|
tank area." CR>)
|
||||||
|
(<AND <VERB? PUT> <IOBJ? GLOBAL-SUB LOCAL-SUB>>
|
||||||
|
%<XTELL "You'll have to take it there yourself." CR>)
|
||||||
|
(<AND <VERB? TAKE> <FSET? ,CATALYST-CAPSULE ,TRYTAKEBIT>
|
||||||
|
;"<NOT ,SUB-IN-TANK> <NOT <EQUAL? ,NOW-TERRAIN ,BAY-TERRAIN>>">
|
||||||
|
%<XTELL "It's too hot to pick up." CR>)>>
|
||||||
|
|
||||||
|
<OBJECT OXYGEN-GEAR-OTHER
|
||||||
|
(IN GLOBAL-OBJECTS)
|
||||||
|
(DESC "other Gear")
|
||||||
|
(ADJECTIVE OTHER DOC\'S WALT\'S HORVAK MARV\'S SIEGEL MICK\'S ANTRIM)
|
||||||
|
(SYNONYM GEAR GEARS)
|
||||||
|
(FLAGS ;NARTICLEBIT VOWELBIT ;ON?BIT)
|
||||||
|
(TEXT "(You'll find that information in your SEASTALKER package.)")
|
||||||
|
(GENERIC GENERIC-OXYGEN-GEAR-F)
|
||||||
|
(ACTION OXYGEN-GEAR-GLOBAL-F)>
|
||||||
|
|
||||||
|
<OBJECT OXYGEN-GEAR-DIVER
|
||||||
|
(IN GLOBAL-OBJECTS)
|
||||||
|
(DESC "divers' Gear")
|
||||||
|
(ADJECTIVE DIVER DIVERS ;BILL BILL\'S GREENUP ;AMY AMY\'S LOWELL)
|
||||||
|
(SYNONYM GEAR GEARS)
|
||||||
|
(FLAGS ;NARTICLEBIT ;ON?BIT)
|
||||||
|
(TEXT "(You'll find that information in your SEASTALKER package.)")
|
||||||
|
(GENERIC GENERIC-OXYGEN-GEAR-F)
|
||||||
|
(ACTION OXYGEN-GEAR-GLOBAL-F)>
|
||||||
|
|
||||||
|
<OBJECT OXYGEN-GEAR-BLY
|
||||||
|
(IN GLOBAL-OBJECTS)
|
||||||
|
(DESC "Bly's Emergency Oxygen Gear")
|
||||||
|
(ADJECTIVE COMMANDER ;ZOE ZOE\'S BLY\'S EMERGE OXYGEN)
|
||||||
|
(SYNONYM GEAR)
|
||||||
|
(FLAGS NARTICLEBIT ;ON?BIT)
|
||||||
|
(TEXT "(You'll find that information in your SEASTALKER package.)")
|
||||||
|
(GENERIC GENERIC-OXYGEN-GEAR-F)
|
||||||
|
(ACTION OXYGEN-GEAR-GLOBAL-F)>
|
||||||
|
|
||||||
|
<ROUTINE GENERIC-OXYGEN-GEAR-F (OBJ)
|
||||||
|
<COND (<REMOTE-VERB?> ,OXYGEN-GEAR)
|
||||||
|
(<AND <VERB? TAKE> ,PRSI <FSET? ,PRSI ,PERSON>>
|
||||||
|
<COND (<IOBJ? HORVAK SIEGEL ANTRIM> ,OXYGEN-GEAR-OTHER)
|
||||||
|
(<IOBJ? GREENUP LOWELL> ,OXYGEN-GEAR-DIVER)
|
||||||
|
(<IOBJ? BLY> ,OXYGEN-GEAR-BLY)>)>>
|
||||||
|
|
||||||
|
<ROUTINE OXYGEN-GEAR-GLOBAL-F ()
|
||||||
|
<COND (<OR <NOT ,SUB-IN-DOME ;<IN-DOME? ,HERE>>
|
||||||
|
<NOT <FIND-FLAG ,HERE ,PERSON ,WINNER>>>
|
||||||
|
<NOT-HERE ,OXYGEN-GEAR-OTHER>)
|
||||||
|
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND SEARCH-FOR TELL-ABOUT EXAMINE>
|
||||||
|
<RFALSE>)
|
||||||
|
(T <YOU-CANT>)>>
|
||||||
|
|
||||||
|
<OBJECT OXYGEN-GEAR
|
||||||
|
(IN SUB)
|
||||||
|
(DESC "Emergency Oxygen Gear")
|
||||||
|
(ADJECTIVE EMERGE OXYGEN RUBBER MY)
|
||||||
|
(SYNONYM GEAR CANISTER VALVE STRAW)
|
||||||
|
(FLAGS NARTICLEBIT VOWELBIT TAKEBIT NDESCBIT ON?BIT)
|
||||||
|
(TEXT "(You'll find that information in your SEASTALKER package.)")
|
||||||
|
(ACTION OXYGEN-GEAR-F)>
|
||||||
|
|
||||||
|
<ROUTINE OXYGEN-GEAR-F ()
|
||||||
|
<COND (<REMOTE-VERB?> <RFALSE>)>
|
||||||
|
<FCLEAR ,OXYGEN-GEAR ,NDESCBIT>
|
||||||
|
<COND (<AND <VERB? TAKE> <DOBJ? OXYGEN-GEAR>>
|
||||||
|
<COND (<==? <ITAKE> T>
|
||||||
|
%<XTELL
|
||||||
|
"You're now wearing" THE-PRSO " around your neck." CR>)>
|
||||||
|
<RTRUE>)
|
||||||
|
(<VERB? LAMP-ON TURN USE OPEN>
|
||||||
|
<COND (<FSET? ,OXYGEN-GEAR ,ONBIT>
|
||||||
|
<ALREADY ,OXYGEN-GEAR "on">
|
||||||
|
<RTRUE>)
|
||||||
|
(<NOT-HOLDING? ,OXYGEN-GEAR>
|
||||||
|
<RTRUE>)
|
||||||
|
(<NOT ,DOME-AIR-BAD?>
|
||||||
|
%<XTELL "You don't need it now!" CR>
|
||||||
|
<RTRUE>)>
|
||||||
|
<FSET ,OXYGEN-GEAR ,ONBIT>
|
||||||
|
%<XTELL
|
||||||
|
"As you open the valve and suck on the rubber straw, you feel your lungs
|
||||||
|
filling with pure oxygen.">
|
||||||
|
<COND (<AND ,DOME-AIR-BAD? <CORRIDOR-LOOK ,BLY>>
|
||||||
|
%<XTELL CR
|
||||||
|
"But you notice Zoe Bly collapsing, and you realize she has
|
||||||
|
no " D ,OXYGEN-GEAR ;" around her neck" "!">)>
|
||||||
|
<CRLF>)
|
||||||
|
(<VERB? CLOSE>
|
||||||
|
<PERFORM ,V?LAMP-OFF ,OXYGEN-GEAR>
|
||||||
|
<RTRUE>)>>
|
||||||
|
|
||||||
|
<OBJECT BADGE-PLAYER
|
||||||
|
(IN PLAYER)
|
||||||
|
(DESC "your badge")
|
||||||
|
(ADJECTIVE THIS SPECIAL IDENTIFY MY ;YOUR)
|
||||||
|
(SYNONYM BADGE)
|
||||||
|
(FLAGS NDESCBIT ;VOWELBIT NARTICLEBIT)
|
||||||
|
(ACTION BADGE-PLAYER-F)>
|
||||||
|
|
||||||
|
<ROUTINE BADGE-PLAYER-F ()
|
||||||
|
;<FCLEAR ,BADGE-PLAYER ,NDESCBIT>
|
||||||
|
<COND (<DIVESTMENT? ,BADGE-PLAYER>
|
||||||
|
<TELL "That wouldn't be good for security." CR>)
|
||||||
|
(<VERB? ANALYZE EXAMINE READ>
|
||||||
|
<TELL "It's a special identification badge for">
|
||||||
|
<RESEARCH-LAB>
|
||||||
|
<TELL "." CR>)>>
|
||||||
|
|
||||||
|
<OBJECT BADGE-TIP
|
||||||
|
(IN TIP)
|
||||||
|
(DESC "Tip's badge")
|
||||||
|
(ADJECTIVE THIS SPECIAL IDENTIFY ;TIP TIP\'S RANDALL)
|
||||||
|
(SYNONYM BADGE)
|
||||||
|
(FLAGS NDESCBIT ;VOWELBIT NARTICLEBIT)
|
||||||
|
(ACTION BADGE-PLAYER-F)>
|
||||||
|
|
||||||
|
<OBJECT BADGE-SHARON
|
||||||
|
(IN SHARON)
|
||||||
|
(DESC "Sharon's badge")
|
||||||
|
(ADJECTIVE THIS SPECIAL IDENTIFY SHARON KEMP\'S)
|
||||||
|
(SYNONYM BADGE)
|
||||||
|
(FLAGS NDESCBIT ;VOWELBIT NARTICLEBIT)
|
||||||
|
(ACTION BADGE-PLAYER-F)>
|
||||||
|
|
||||||
|
<OBJECT UNIVERSAL-TOOL
|
||||||
|
(IN TIP)
|
||||||
|
(DESC "Universal Tool")
|
||||||
|
(ADJECTIVE UNIVERSAL TIP\'S RANDALL)
|
||||||
|
(SYNONYM TOOL)
|
||||||
|
(FLAGS ;NDESCBIT TAKEBIT TOOLBIT)
|
||||||
|
(GENERIC GENERIC-TOOL-F)>
|
||||||
|
|
||||||
|
<ROUTINE GENERIC-TOOL-F (OBJ)
|
||||||
|
<COND (<VERB? OPEN-WITH TAKE-WITH> ,UNIVERSAL-TOOL)>>
|
||||||
|
|
||||||
|
|
||||||
|
"<ROUTINE V-$CODE ('AUX' (I 0) CH)
|
||||||
|
<REPEAT ()
|
||||||
|
<COND (<OR <IGRTR? I 19>
|
||||||
|
<AND <G? .I 5>
|
||||||
|
<0? <GETB ,FIRST-NAME .I>>
|
||||||
|
<0? <GETB ,LAST-NAME .I>>>
|
||||||
|
<0? <GETB ,GAME-NAME .I>>>
|
||||||
|
<CRLF>
|
||||||
|
<RTRUE>)>
|
||||||
|
<SET CH <+ 1
|
||||||
|
<GETB ,FIRST-NAME .I>
|
||||||
|
<GETB ,LAST-NAME .I>
|
||||||
|
<GETB ,GAME-NAME .I>>>
|
||||||
|
<PRINTC <+ *101* <MOD .CH 26>>>>>"
|
||||||
|
|
||||||
|
<ROUTINE V-$BAY ()
|
||||||
|
<SETG HERE ,SUB>
|
||||||
|
<MOVE ,PLAYER ,SUB>
|
||||||
|
<MOVE ,TIP ,SUB>
|
||||||
|
<MOVE ,CATALYST-CAPSULE ,REACTOR>
|
||||||
|
<FCLEAR ,REACTOR ,OPENBIT>
|
||||||
|
<FSET ,REACTOR ,ONBIT>
|
||||||
|
<FSET ,ENGINE ,ONBIT>
|
||||||
|
<FCLEAR ,SUB-DOOR ,OPENBIT>
|
||||||
|
<SETG MONSTER-GONE T>
|
||||||
|
;<FCLEAR ,GLOBAL-SNARK ,INVISIBLE>
|
||||||
|
<SETG JOYSTICK-DIR ,P?EAST>
|
||||||
|
<SETG SUB-DLON 1>
|
||||||
|
<SETG SUB-DLAT 0>
|
||||||
|
<SETG NOW-TERRAIN ,BAY-TERRAIN>
|
||||||
|
<SETG SUB-IN-TANK <>>
|
||||||
|
<ENABLE <QUEUE I-UPDATE-SUB-POSITION -1>>
|
||||||
|
;<TELL
|
||||||
|
'\'What a totally awesome invention, ' FN '!\' says Tip sarcastically.' CR>>
|
||||||
|
|
||||||
|
"<ROUTINE V-$OCEAN ()
|
||||||
|
<V-$BAY>
|
||||||
|
<SETG NOW-TERRAIN <>>
|
||||||
|
<SETG SUB-IN-OPEN-SEA T>>
|
||||||
|
|
||||||
|
;<ROUTINE V-$DOME ()
|
||||||
|
<V-$OCEAN>
|
||||||
|
<FSET ,SUB-DOOR ,OPENBIT>
|
||||||
|
<FSET ,AIRLOCK-ROOF ,OPENBIT>
|
||||||
|
<MOVE ,PRIVATE-MATTER ,GLOBAL-OBJECTS>
|
||||||
|
<MOVE ,OXYGEN-GEAR ,PLAYER>
|
||||||
|
<FCLEAR ,OXYGEN-GEAR ,NDESCBIT>
|
||||||
|
<SETG SUB-IN-DOME T>
|
||||||
|
<SETG SUB-DEPTH ,AIRLOCK-DEPTH>
|
||||||
|
;<QUEUE I-UPDATE-SUB-POSITION 0>
|
||||||
|
<SETG SUB-IN-OPEN-SEA <>>
|
||||||
|
;<SETG NOW-TERRAIN ,SEA-TERRAIN>
|
||||||
|
;<SETG SUB-LON 6>
|
||||||
|
;<SETG SUB-LAT 5>
|
||||||
|
;<SETG SUB-DEPTH 28>
|
||||||
|
<SETG AIRLOCK-FULL <>>>
|
||||||
|
|
||||||
|
;<ROUTINE V-$SNARK ()
|
||||||
|
<V-$BAY>
|
||||||
|
<SETG NOW-TERRAIN ,SEA-TERRAIN>
|
||||||
|
<SETG JOYSTICK-DIR ,P?SE>
|
||||||
|
<SETG SUB-DEPTH ,AIRLOCK-DEPTH>
|
||||||
|
<SETG SUB-DLON 1>
|
||||||
|
<SETG SUB-DLAT -1>
|
||||||
|
<MOUNT-WEAPON ,BAZOOKA>
|
||||||
|
<MOUNT-WEAPON ,DART>
|
||||||
|
<SETG SUB-LON +19>
|
||||||
|
<SETG SUB-LAT -19>
|
||||||
|
<I-THORPE-APPEARS>>"
|
Loading…
Reference in a new issue