1
0
mirror of https://github.com/historicalsource/seastalker.git synced 2026-03-03 18:36:03 +00:00

Final Revision

This commit is contained in:
historicalsource
2019-04-13 22:35:09 -04:00
parent 18809a2b43
commit 7ef7f3e553
79 changed files with 42023 additions and 2483 deletions

52
a2.zil Normal file
View File

@@ -0,0 +1,52 @@
"COMPILE/LOAD FILE for SEASTALKER
Copyright (C) 1984 Infocom, Inc. All rights reserved."
<COND (<GASSIGNED? PREDGEN>
<PRINC "Compiling">
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>
<ID 0>)
(T <PRINC "Loading">)>
<PRINC " SEASTALKER: junior-level interactive fiction from Infocom!">
<COND (<GASSIGNED? MUDDLE>
<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 ;"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>
<IFILE "SUB" T>
<IFILE "BATTLE" T>
<IFILE "THINGS" T>
<IFILE "DOME" T>
<IFILE "PEOPLE" T>
<IFILE "PLACES" T>
<IFILE "GLOBAL" T>
<CONSTANT SERIAL 0>
<IFILE "CLOCK" T>
<ENDLOAD>
<IFILE "PARSER" T>
<IFILE "VERBS" T>
<IFILE "EVENTS" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<GC-MON T>
<COND (<GASSIGNED? MUDDLE>
<GC 0 T 5>)>

BIN
atari.zip

Binary file not shown.

733
battle.xzap Normal file
View File

@@ -0,0 +1,733 @@
.FUNCT THORPE-SHOOT?,X,Y
ZERO? SNARK-TRANKED /?ELS5
CALL FORWARD-OF-THORPE?,X,Y
RSTACK
?ELS5: CALL STARBOARD-OF-THORPE?,X,Y
ZERO? STACK /FALSE
CALL FORWARD-OF-THORPE?,X,Y
RSTACK
.FUNCT STARBOARD-OF-THORPE?,X,Y,?TMP1
SUB X,THORPE-LON
MUL THORPE-HLAT,STACK >?TMP1
SUB Y,THORPE-LAT
MUL THORPE-HLON,STACK
SUB ?TMP1,STACK
GRTR? 0,STACK /FALSE
RTRUE
.FUNCT FORWARD-OF-THORPE?,X,Y,?TMP1
SUB X,THORPE-LON
MUL THORPE-HLON,STACK >?TMP1
SUB THORPE-LAT,Y
MUL THORPE-HLAT,STACK
SUB ?TMP1,STACK
GRTR? 0,STACK /FALSE
RTRUE
.FUNCT THORPE-POS?,LON,LAT
EQUAL? SUB-DEPTH,AIRLOCK-DEPTH \FALSE
SUB THORPE-LAT,THORPE-HLAT
EQUAL? LAT,STACK \?ELS7
SUB THORPE-LON,THORPE-HLON
EQUAL? LON,STACK /TRUE
?ELS7: EQUAL? LAT,THORPE-LAT \FALSE
EQUAL? LON,THORPE-LON /TRUE
RFALSE
.FUNCT SNARK-POS?,LON,LAT,?ORTMP
CALL SNARK-HEAD-POS?,LON,LAT
POP '?ORTMP
ZERO? ?ORTMP /?ORP4
RETURN ?ORTMP
?ORP4: CALL SNARK-TAIL-POS?,LON,LAT
RSTACK
.FUNCT SNARK-HEAD-POS?,LON,LAT
EQUAL? SUB-DEPTH,AIRLOCK-DEPTH \FALSE
EQUAL? LAT,SNARK-LAT \FALSE
EQUAL? LON,SNARK-LON /TRUE
RFALSE
.FUNCT SNARK-TAIL-POS?,LON,LAT,X,Y,HLON,HLAT
EQUAL? SUB-DEPTH,AIRLOCK-DEPTH \FALSE
ZERO? SNARK-TRANKED /?ELS5
SET 'HLON,SNARK-HLON
SET 'HLAT,SNARK-HLAT
JUMP ?CND1
?ELS5: SET 'HLON,THORPE-HLON
SET 'HLAT,THORPE-HLAT
?CND1: SUB SNARK-LON,HLON >X
SUB SNARK-LAT,HLAT >Y
EQUAL? LAT,Y \?CND9
EQUAL? LON,X /TRUE
?CND9: SUB X,HLON >X
SUB Y,HLAT >Y
EQUAL? LAT,Y \?CND14
EQUAL? LON,X /TRUE
?CND14: SUB Y,HLAT
EQUAL? LAT,STACK \FALSE
SUB X,HLON
EQUAL? LON,STACK /TRUE
RFALSE
.FUNCT THORPE-SUB-F
EQUAL? PRSA,V?FIND \?ELS5
PRINTR "It's not far away!"
?ELS5: EQUAL? PRSA,V?PUSH,V?MOVE \?ELS9
PRINTR "It's too big!"
?ELS9: EQUAL? PRSA,V?ATTACK,V?KILL,V?SHOOT \?ELS13
PRINTI "You have to shoot"
CALL THE-PRSO-PRINT
PRINTR " with a weapon."
?ELS13: EQUAL? PRSA,V?WALK-TO \FALSE
PRINTR "You're the pilot!"
.FUNCT I-UPDATE-THORPE,DLAT,DLON,Z
ZERO? SUB-IN-BATTLE /?CND1
MUL THORPE-HLON,THORPE-HLAT >Z
CALL THORPE-SHOOT?,SUB-LON,SUB-LAT
ZERO? STACK \?ELS7
ZERO? THORPE-DLON \?ELS10
ZERO? THORPE-DLAT \?ELS10
ZERO? THORPE-TURNING? \?PRD13
PUSH 1
JUMP ?PRD14
?PRD13: PUSH 0
?PRD14: SET 'THORPE-TURNING?,STACK
ZERO? THORPE-TURNING? /?ELS17
JUMP ?CND1
?ELS17: CALL STARBOARD-OF-THORPE?,SUB-LON,SUB-LAT
ZERO? STACK /?ELS20
ZERO? THORPE-HLON \?ELS23
SET 'THORPE-HLON,THORPE-HLAT
JUMP ?CND5
?ELS23: EQUAL? -1,Z \?ELS25
SET 'THORPE-HLON,0
JUMP ?CND5
?ELS25: EQUAL? 1,Z \?ELS27
SET 'THORPE-HLAT,0
JUMP ?CND5
?ELS27: SUB 0,THORPE-HLON >THORPE-HLAT
JUMP ?CND5
?ELS20: ZERO? THORPE-HLON \?ELS34
SUB 0,THORPE-HLAT >THORPE-HLON
JUMP ?CND5
?ELS34: EQUAL? -1,Z \?ELS36
SET 'THORPE-HLAT,0
JUMP ?CND5
?ELS36: EQUAL? 1,Z \?ELS38
SET 'THORPE-HLON,0
JUMP ?CND5
?ELS38: SET 'THORPE-HLAT,THORPE-HLON
JUMP ?CND5
?ELS10: SET 'THORPE-DLON,0
SET 'THORPE-DLAT,0
JUMP ?CND5
?ELS7: PRINTI "Thorpe zeroed in on you and fired his rocket! It streaks through the water toward the "
PRINTD SUB
PRINTI "! In an instant your sub will be just twisted metal, trapping you and Tip forever in Davy Jones's locker!"
CALL FINISH
?CND5:
?CND1: ADD THORPE-LON,THORPE-DLON >THORPE-LON
ADD THORPE-LAT,THORPE-DLAT >THORPE-LAT
MUL THORPE-HLON,THORPE-HLAT >Z
ZERO? Z \?ELS49
ZERO? THORPE-HLAT \?ELS52
ADD THORPE-LAT,THORPE-HLON >SNARK-LAT
ADD THORPE-LON,THORPE-HLON >SNARK-LON
RFALSE
?ELS52: ADD THORPE-LAT,THORPE-HLAT >SNARK-LAT
SUB THORPE-LON,THORPE-HLAT >SNARK-LON
RFALSE
?ELS49: EQUAL? -1,Z \?ELS56
ADD THORPE-LON,THORPE-HLON >SNARK-LON
SET 'SNARK-LAT,THORPE-LAT
RFALSE
?ELS56: EQUAL? 1,Z \FALSE
ADD THORPE-LAT,THORPE-HLAT >SNARK-LAT
SET 'SNARK-LON,THORPE-LON
RFALSE
.FUNCT DART-F
CALL WEAPON-F,DART
RSTACK
.FUNCT MOUNTING-VERB?,OBJ
ZERO? SUB-IN-DOME /FALSE
EQUAL? PRSO,OBJ \FALSE
EQUAL? PRSA,V?USE /TRUE
EQUAL? PRSA,V?PUT-UNDER \?ELS13
EQUAL? PRSO,ESCAPE-POD-UNIT \?ELS13
EQUAL? PRSI,PILOT-SEAT,CHAIR /TRUE
?ELS13: EQUAL? PRSA,V?TIE-TO,V?PUT \FALSE
EQUAL? PRSI,CLAW,LOCAL-SUB,GLOBAL-SUB /TRUE
RFALSE
.FUNCT NO-GOOD-MUNGED
PRINTR "Doc Horvak has to fix it first."
.FUNCT WEAPON-F,OBJ,WHICH=0,O,NOT-ON-SUB=0,SOMEONE=0
CALL BAD-AIR?
ZERO? STACK \TRUE
EQUAL? PRSA,V?TAKE,V?SEARCH-FOR,V?FIND \?ELS5
JUMP ?CND1
?ELS5: CALL MOUNTING-VERB?,OBJ
ZERO? STACK /?ELS7
JUMP ?CND1
?ELS7: CALL REMOTE-VERB?
ZERO? STACK \FALSE
?CND1: EQUAL? OBJ,DART \?CND10
SET 'WHICH,1
?CND10: GET ON-SUB,WHICH
EQUAL? OBJ,STACK /?CND13
SET 'NOT-ON-SUB,1
?CND13: ZERO? SUB-IN-DOME \?CND16
ZERO? NOT-ON-SUB /?CND16
PRINTI "You can't use"
CALL PRINTT,OBJ
PRINTR " now!"
?CND16: ZERO? NOT-ON-SUB /?ELS27
EQUAL? PRSA,V?SEARCH-FOR,V?FIND \?ELS33
LOC OBJ
EQUAL? HERE,STACK \FALSE
FSET? OBJ,TOUCHBIT /FALSE
FCLEAR OBJ,NDESCBIT
CALL HE-SHE-IT,WINNER,1,STR?58
PRINTR " it among lots of equipment and supplies."
?ELS33: EQUAL? PRSA,V?TAKE \?ELS44
EQUAL? WHICH,1 \FALSE
FCLEAR DART,NDESCBIT
FSET? DART,MUNGBIT \FALSE
CALL NO-GOOD-MUNGED
RSTACK
?ELS44: CALL MOUNTING-VERB?,OBJ
ZERO? STACK /FALSE
EQUAL? WINNER,PLAYER /?ELS59
SET 'SOMEONE,WINNER
JUMP ?CND57
?ELS59: CALL FIND-FLAG,HERE,PERSON,PLAYER >SOMEONE
ZERO? SOMEONE /?CND57
?CND57: ZERO? SOMEONE \?CND62
CALL META-LOC,OBJ
EQUAL? HERE,STACK /?ELS67
CALL NOT-HERE,OBJ
RTRUE
?ELS67: EQUAL? HERE,AIRLOCK /?CND62
CALL NOT-HERE,CLAW
RTRUE
?CND62: ZERO? WHICH \?ELS74
ZERO? SOMEONE /?ELS79
EQUAL? HERE,AIRLOCK /?ELS79
PRINTI """Good idea! That should stop the "
PRINTD SNARK
PRINTI "! It could disable an enemy sub, too! Shall I "
EQUAL? PRSA,V?PUT \?ELS86
PRINTI "do it"
JUMP ?CND84
?ELS86: PRINTI "have it mounted"
EQUAL? PRSI,CLAW /?CND84
PRINTI " on an "
PRINTD CLAW
PRINTI " of the "
PRINTD SUB
?CND84: PRINTI "?"""
CALL YES?
ZERO? STACK /TRUE
CALL MOUNT-WEAPON,BAZOOKA
CALL FINE-SEQUENCE
RTRUE
?ELS79: CALL MOUNT-WEAPON,BAZOOKA
CALL OKAY,BAZOOKA,STR?59
CALL FINE-SEQUENCE
RTRUE
?ELS74: FSET? DART,MUNGBIT \?ELS106
CALL NO-GOOD-MUNGED
RSTACK
?ELS106: CALL MOUNT-WEAPON,DART
ZERO? SOMEONE /?ELS111
EQUAL? HERE,AIRLOCK /?ELS111
PRINTD SOMEONE
PRINTI " promptly mounts the "
PRINTD DART
PRINTI " on an "
PRINTD CLAW
PRINTI "."
CRLF
JUMP ?CND109
?ELS111: CALL OKAY,DART,STR?59
?CND109: GET ON-SUB,0
EQUAL? BAZOOKA,STACK \TRUE
CALL FINE-SEQUENCE
RTRUE
?ELS27: EQUAL? PRSA,V?EXAMINE,V?FIND \?ELS127
PRINTI "It's mounted on one of the "
PRINTD SUB
PRINTI "'s "
PRINTD CLAW
PRINTR "s."
?ELS127: EQUAL? PRSA,V?TAKE /?THN132
CALL MOUNTING-VERB?,OBJ
ZERO? STACK /?ELS131
?THN132: PRINTI "You'd better leave it mounted on the "
PRINTD CLAW
PRINTR "."
?ELS131: CALL REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?MOVE-DIR,V?MOVE \?ELS139
PRINTR "You should type where you want to aim it."
?ELS139: EQUAL? PRSA,V?AIM \?ELS143
FSET? CLAW,MUNGBIT \?ELS146
PRINTI "Nothing happens. Either the "
PRINTD CLAW
PRINTI " or the "
PRINTD OBJ
PRINTI " was damaged when you rammed the "
PRINTD SNARK
PRINTR "!"
?ELS146: EQUAL? PRSI,GLOBAL-THORPE,THORPE-SUB \?ELS150
CALL STARBOARD-OF-THORPE?,SUB-LON,SUB-LAT
ZERO? STACK \?ELS153
CALL YOU-CANT,STR?60,GLOBAL-SNARK,STR?61
RTRUE
?ELS153: ZERO? SUB-IN-BATTLE /?CND156
CALL SCORE-OBJ,THORPE-SUB
?CND156: PUT OBJ-AIMED-AT,WHICH,THORPE-SUB
PUT LON-AIMED-AT,WHICH,THORPE-LON
PUT LAT-AIMED-AT,WHICH,THORPE-LAT
JUMP ?CND144
?ELS150: EQUAL? PRSI,GLOBAL-SNARK,SNARK \FALSE
PUT OBJ-AIMED-AT,WHICH,SNARK
PUT LON-AIMED-AT,WHICH,SNARK-LON
PUT LAT-AIMED-AT,WHICH,SNARK-LAT
?CND144: PRINTR "Aimed."
?ELS143: EQUAL? PRSA,V?ATTACK,V?KILL,V?SHOOT \FALSE
GET OBJ-AIMED-AT,WHICH >O
GET ALREADY-SHOT,WHICH
ZERO? STACK /?ELS170
PRINTI "You already shot"
CALL THE-PRSI-PRINT
PRINTR "!"
?ELS170: ZERO? O \?CND168
PRINTR "You have to aim it first!"
?CND168: EQUAL? THORPE-SUB,O \?ELS183
EQUAL? PRSO,GLOBAL-THORPE,THORPE-SUB \?THN180
?ELS183: EQUAL? SNARK,O \?CND177
EQUAL? PRSO,GLOBAL-SNARK,SNARK /?CND177
?THN180: PRINTI "You didn't aim it at"
CALL THE-PRSO-PRINT
PRINTR "."
?CND177: EQUAL? PRSO,GLOBAL-THORPE,THORPE-SUB \?ELS192
GET LON-AIMED-AT,WHICH
EQUAL? STACK,THORPE-LON \?ELS197
GET LAT-AIMED-AT,WHICH
EQUAL? STACK,THORPE-LAT \?ELS197
PUT ALREADY-SHOT,WHICH,1
ZERO? WHICH \?ELS204
CALL MUNG-TARGET
RSTACK
?ELS204: PRINTI "Fudge! Your tranquilizer dart hit the "
PRINTD THORPE-SUB
PRINTI ", and its metal hull can't be put to sleep! Tough luck, "
CALL PRINT-NAME,FIRST-NAME
PRINTR "."
?ELS197: CALL TOO-BAD-BUT,PRSO
PRINTR " moved since you aimed."
?ELS192: EQUAL? PRSO,GLOBAL-SNARK,SNARK \FALSE
GET LON-AIMED-AT,WHICH
EQUAL? STACK,SNARK-LON \?ELS219
GET LAT-AIMED-AT,WHICH
EQUAL? STACK,SNARK-LAT \?ELS219
PUT ALREADY-SHOT,WHICH,1
SET 'SNARK-TRANKED,1
SET 'SNARK-HLON,THORPE-HLON
SET 'SNARK-HLAT,THORPE-HLAT
ZERO? WHICH \?ELS226
PRINTI "KA-VOOOM! The "
PRINTD SNARK
PRINTI " shudders and stops moving! You scored a clean hit with your "
PRINTD BAZOOKA
PRINTI "!
"
CALL TIP-SAYS
PRINTI "Rats! There goes our safety shield!"" And he's right. Even though you've saved the "
PRINTD AQUADOME
PRINTI " from further danger of monster attack, the "
PRINTD SUB
PRINTI " is now exposed to the "
PRINTD THORPE-SUB
PRINTR "'s rocket weapon!"
?ELS226: PRINTI "Right on! The dart hits the "
PRINTD SNARK
PRINTI " and sticks out of its side. The tranquilizer spreads through the "
PRINTD SNARK
PRINTI ", sending it to Slumberland.
But this may have been a bad move. With the "
PRINTD SNARK
PRINTI " fast asleep, its huge body can't hide you from the "
PRINTD THORPE-SUB
PRINTR "'s rocket attack!"
?ELS219: CALL TOO-BAD-BUT,PRSO
PRINTR " moved since you aimed."
.FUNCT MUNG-TARGET
CALL SCORE-UPD,5
FSET PRSO,MUNGBIT
PRINTI "Great! You and Tip can see"
CALL THE-PRSI-PRINT
PRINTI " slam into the "
PRINTD THORPE-SUB
PRINTI "'s power pod!
""Hooray! That crippled the "
PRINTD THORPE-SUB
PRINTI " for keeps!"" Tip cheers.
You hear a voice come over the "
PRINTD SONARPHONE
PRINTI ": "
?PRG3: PRINTI """"
CALL PRINT-NAME,FIRST-NAME
PRINTI ", this is Sharon! Do you read me?"""
CALL YES?
ZERO? STACK /?PRG3
PRINTI """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 "
PRINTD THORPE-SUB
PRINTI "'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.""
"
GETP GREENUP,P?VALUE
ZERO? STACK /?CND12
CALL TIP-SAYS
PRINTI "It's too bad we didn't find the "
PRINTD TRAITOR
PRINTI " at the "
PRINTD AQUADOME
PRINTI ".""
"
?CND12: PRINTI "
CONGRATULATIONS, "
CALL PRINT-NAME,FIRST-NAME,1
PRINTI "! YOU'VE COMPLETED YOUR MISSION!!"
CALL FINISH
RSTACK
.FUNCT MOUNT,WHICH,WEAPON,OBJ
GET ON-SUB,WHICH >OBJ
ZERO? OBJ /?CND1
MOVE OBJ,AIRLOCK
?CND1: PUT ON-SUB,WHICH,WEAPON
RTRUE
.FUNCT MOUNT-WEAPON,OBJ
EQUAL? OBJ,BAZOOKA \?ELS3
CALL SCORE-OBJ,BLY
PUTP BAZOOKA,P?LDESC,STR?62
GETP BAZOOKA,P?VALUE
ZERO? STACK /?CND4
PRINTI """Of course I'll have to get it first."""
CRLF
CALL SCORE-OBJ,BAZOOKA
?CND4: CALL MOUNT,0,BAZOOKA
JUMP ?CND1
?ELS3: EQUAL? OBJ,DART \?ELS10
PUTP DART,P?LDESC,STR?63
CALL SCORE-OBJ,HORVAK
CALL MOUNT,1,DART
JUMP ?CND1
?ELS10: GET ON-SUB,0
ZERO? STACK /?ELS12
GET ON-SUB,1
ZERO? STACK /?ELS15
PRINTI "The claws are holding all they can."
CRLF
RFALSE
?ELS15: PUT ON-SUB,1,OBJ
JUMP ?CND1
?ELS12: PUT ON-SUB,0,OBJ
?CND1: EQUAL? HERE,SUB,CRAWL-SPACE \?ELS24
MOVE OBJ,SUB
JUMP ?CND22
?ELS24: ZERO? SUB-IN-DOME /?ELS26
MOVE OBJ,AIRLOCK
JUMP ?CND22
?ELS26: MOVE OBJ,NORTH-TANK-AREA
?CND22: FSET OBJ,NDESCBIT
FCLEAR OBJ,TAKEBIT
FSET OBJ,TRYTAKEBIT
RTRUE
.FUNCT FINE-SEQUENCE
ZERO? TIP-FOLLOWS-YOU? /FALSE
CALL READY-FOR-SNARK?
ZERO? STACK \FALSE
CALL MOVE-HERE-NOT-SUB,BLY
PRINTI """Are you ready to take off now, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "?"" Zoe Bly "
IN? BLY,HERE \?ELS12
PUSH STR?64
JUMP ?CND8
?ELS12: PUSH STR?65
?CND8: PRINT STACK
PRINTI "s anxiously."
CALL YES?
ZERO? STACK /FALSE
PRINTI """Wait!"" Tip cuts in. "
SET 'WINNER,PLAYER
CALL PERFORM,V?ASK-ABOUT,TIP,FINE-GRID
RSTACK
.FUNCT BAZOOKA-F
CALL WEAPON-F,BAZOOKA
RSTACK
.FUNCT I-THORPE-APPEARS
GRTR? 17,SUB-LON /?THN6
LESS? -17,SUB-LAT /?THN6
EQUAL? SUB-DEPTH,AIRLOCK-DEPTH /?ELS5
?THN6: SUB MOVES,LEFT-DOME
LESS? 40,STACK \FALSE
SET 'LEFT-DOME,MOVES
PRINTI "Suddenly "
CALL TIP-SAYS
CALL PRINT-NAME,FIRST-NAME
PRINTI ", what "
PRINTD INTDIR
PRINTI " do you think the "
PRINTD SNARK
PRINTR " went, anyway?"""
?ELS5: CALL QUEUE,I-SNARK-ATTACKS,0
CALL QUEUE,I-THORPE-APPEARS,0
CALL QUEUE,I-THORPE-AWAKES,9
PUT STACK,0,1
FSET SEARCH-BEAM,ONBIT
PRINTI """Holy halibut!"" cries Tip. ""There's a big cloud of silt ahead in the "
PRINTD SEARCH-BEAM
PRINTI ". It's out of sonar range. This could be the "
PRINTD SNARK
PRINTI "! Want to hold course till we find out?"""
CALL YES?
PRINTI "However you steer, the cloud holds steady. You may be on a collision course with the behemoth that almost wrecked the "
PRINTD AQUADOME
PRINTI "!
"
PRINTI "Your "
PRINTD SEARCH-BEAM
PRINTI " reveals TWO objects dead ahead!
One is the "
PRINTD SNARK
PRINTI ". To the left of the tentacled creature -- YOUR left -- you can make out a vehicle crawling along the ocean floor.
"
CALL TIP-SAYS
PRINTI "That's one of your Sea Cats!""
A voice crackles over the "
PRINTD SONARPHONE
PRINTI ": ""This is "
PRINTD GLOBAL-THORPE
PRINTI ", "
CALL PRINT-NAME,FIRST-NAME
PRINTI "! Do you read me?"""
CALL YES?
PRINTI "Your answer brings a rasping laugh. ""Of course you read me, or you wouldn't be answering! Your "
PRINTD LAB-ASSISTANT
PRINTI ", "
PRINTD SHARON
PRINTI ", 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?"""
CALL YES?
ZERO? STACK \?ELS31
PRINTI """You'll soon find out -- like it or not! "
JUMP ?CND29
?ELS31: PRINTI """"
?CND29: PRINTI "I'll blast your sub with a rocket! Then I'll guide my synthetic monster to the "
PRINTD AQUADOME
PRINTI " to destroy it! Can you guess what sealed your doom, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "?"""
CALL YES?
ZERO? STACK \?ELS42
PRINTI """"
JUMP ?CND40
?ELS42: PRINTI """I'll tell you anyhow. "
?CND40: PRINTI "I want to own the "
PRINTD ORE-NODULES
PRINTI " near the "
PRINTD AQUADOME
PRINTI "! 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:
"
?PRG51: PRINTI """This is "
PRINTD SHARON
PRINTI ", "
CALL PRINT-NAME,FIRST-NAME
PRINTI "! Do you read me?"""
CALL YES?
ZERO? STACK /?PRG51
CALL PHONE-ON,GLOBAL-SHARON,THORPE-SUB,SONARPHONE
CALL QUEUE,I-UPDATE-THORPE,-1
PUT STACK,0,1
FCLEAR SNARK,INVISIBLE
FCLEAR THORPE-SUB,INVISIBLE
ADD SUB-LON,SONAR-RANGE
ADD 2,STACK >THORPE-LON
SUB SUB-LAT,SONAR-RANGE >THORPE-LAT
ADD THORPE-LON,THORPE-HLON >SNARK-LON
SET 'SNARK-LAT,THORPE-LAT
FSET THORPE,MUNGBIT
PRINTI """Thank goodness! I conked Thorpe with a wrench! He fell onto the microphone, and he's too heavy for me to move!"""
CRLF
CALL SCORE-OBJ,SNARK
RETURN 2
.FUNCT SHARON-EXPLAINS
EQUAL? PRSA,V?SAY /?CND1
PRINTI """Wait a second, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ", till I catch my breath!"" Sharon cuts in. "
?CND1: CALL SHARON-ABOUT-THORPE
PRINTI """Can I interrupt, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "?"" asks Tip."
CALL YES?
ZERO? STACK \?CND8
CALL TIP-SAYS
PRINTI "Sorry, but I have to. This is important.""
"
?CND8: PRINTI """Sharon, how does Thorpe control the monster?""
""By sonar pulse signals,"" she replies. "
PRINT SHARON-ABOUT-MONSTER
PRINTI "
""Is the transducer sending out signals now?"" Tip asks her.
""Yes, it operates all the time. Can you make out our position on your "
PRINTD SONARSCOPE
PRINTI "?""
""Thanks to the "
PRINTD FINE-GRID
PRINTI "!"" says Tip."
ZERO? THROTTLE-SETTING /?CND15
SET 'THROTTLE-SETTING,0
PRINTI " ""Maybe we'd better stop the "
PRINTD SUB
PRINTI " before we collide with you!""
Tip uses his dual-control throttle to stop your sub. Then he adds apologetically: ""This isn't mutiny, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "! I just figured we should stop now."""
?CND15: CRLF
PRINT SHARON-ABOUT-CAT
PRINTI "
""Was it out of control when it attacked the "
PRINTD AQUADOME
PRINTI "?"" asks Tip.
""Oh no!"" Sharon replies. "
?PRG22: PRINTI """Thorpe has a helper at the "
PRINTD AQUADOME
PRINTI " who put a "
PRINTD BLACK-BOX
PRINTI " on the "
PRINTD SONAR-EQUIPMENT
PRINTI ", which made it emit signals to ATTRACT the monster and make it attack. Do you follow me so far, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "?"""
CALL YES?
ZERO? STACK /?PRG22
PRINTI """Good. Before that first attack, Thorpe got the monster close enough for the "
PRINTD BLACK-BOX
PRINTI " to take over. Then he surfaced near "
PRINTD BAY
PRINTI " to get me. By the time we went back to the ocean floor, something had gone wrong: the "
PRINTD AQUADOME
PRINTI " was okay, and the monster had wandered off to its cavern. That reminds me, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ". "
?PRG31: PRINTI "Do you want to take the monster to its cavern peacefully? (With no more sonar pulse input, it'll stay there until you're ready to study it scientifically.)"""
CALL YES?
ZERO? STACK /?CND35
JUMP ?REP32
?CND35: PRINTI "(Better listen, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ". Sharon's trying to show you how to deal with this threat to the "
PRINTD AQUADOME
PRINTI ".)
"""
JUMP ?PRG31
?REP32: PRINTI """First tell me, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ": do you have any tranquilizer or weapon to use against it?"""
CALL YES?
ZERO? STACK /TRUE
PRINTI """Do you want to capture it for scientific study?"""
CALL YES?
ZERO? STACK /?ELS49
PRINTR """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."""
?ELS49: PRINTI """That's odd! I thought you would."""
CRLF
RTRUE
.FUNCT SHARON-ABOUT-THORPE
PRINTI """I'm not in on Thorpe's plot, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ". I'm playing along, trying to wreck his plans. I know it was risky for me to leave that "
PRINTD CATALYST-CAPSULE
PRINTI " out of the "
PRINTD SUB
ZERO? SHARON-BROKE-CIRCUIT /?CND3
PRINTI ", and to open that "
PRINTD CIRCUIT-BREAKER
?CND3: PRINTI ", but it was part of my plan, and you got to the "
PRINTD AQUADOME
PRINTR " anyway."""
.FUNCT I-THORPE-AWAKES
FCLEAR THORPE,MUNGBIT
SET 'SUB-IN-BATTLE,1
CALL PHONE-OFF
CALL PHONE-ON,GLOBAL-THORPE,THORPE-SUB,SONARPHONE
CRLF
PRINTI "Suddenly the sonarphone gets louder.
"
CALL TIP-SAYS
PRINTI "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, "
CALL PRINT-NAME,FIRST-NAME
PRINTI " "
CALL PRINT-NAME,LAST-NAME
PRINTI ", I'm stopping my "
PRINTD THORPE-SUB
PRINTI " so I can blow you into Kingdom Come as soon as you're in my sights!""
"
CALL STARBOARD-OF-THORPE?,SUB-LON,SUB-LAT
ZERO? STACK \?CND5
CALL TIP-SAYS
PRINTI "He'll have to go around the "
PRINTD SNARK
PRINTI " to fire at us, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "! And we'll have to go around its tail to shoot at HIM!""
"
?CND5: CALL TELL-HINT,42,THORPE-SUB,0
RETURN 2
.ENDI

747
battle.zap Normal file
View File

@@ -0,0 +1,747 @@
.FUNCT THORPE-SHOOT?,X,Y
ZERO? SNARK-TRANKED /?ELS5
CALL FORWARD-OF-THORPE?,X,Y
RSTACK
?ELS5: CALL STARBOARD-OF-THORPE?,X,Y
ZERO? STACK /FALSE
CALL FORWARD-OF-THORPE?,X,Y
RSTACK
.FUNCT STARBOARD-OF-THORPE?,X,Y,?TMP1
SUB X,THORPE-LON
MUL THORPE-HLAT,STACK >?TMP1
SUB Y,THORPE-LAT
MUL THORPE-HLON,STACK
SUB ?TMP1,STACK
GRTR? 0,STACK /FALSE
RTRUE
.FUNCT FORWARD-OF-THORPE?,X,Y,?TMP1
SUB X,THORPE-LON
MUL THORPE-HLON,STACK >?TMP1
SUB THORPE-LAT,Y
MUL THORPE-HLAT,STACK
SUB ?TMP1,STACK
GRTR? 0,STACK /FALSE
RTRUE
.FUNCT THORPE-POS?,LON,LAT
EQUAL? SUB-DEPTH,AIRLOCK-DEPTH \FALSE
SUB THORPE-LAT,THORPE-HLAT
EQUAL? LAT,STACK \?ELS7
SUB THORPE-LON,THORPE-HLON
EQUAL? LON,STACK /TRUE
?ELS7: EQUAL? LAT,THORPE-LAT \FALSE
EQUAL? LON,THORPE-LON /TRUE
RFALSE
.FUNCT SNARK-POS?,LON,LAT,?ORTMP
CALL SNARK-HEAD-POS?,LON,LAT
POP '?ORTMP
ZERO? ?ORTMP /?ORP4
RETURN ?ORTMP
?ORP4: CALL SNARK-TAIL-POS?,LON,LAT
RSTACK
.FUNCT SNARK-HEAD-POS?,LON,LAT
EQUAL? SUB-DEPTH,AIRLOCK-DEPTH \FALSE
EQUAL? LAT,SNARK-LAT \FALSE
EQUAL? LON,SNARK-LON /TRUE
RFALSE
.FUNCT SNARK-TAIL-POS?,LON,LAT,X,Y,HLON,HLAT
EQUAL? SUB-DEPTH,AIRLOCK-DEPTH \FALSE
ZERO? SNARK-TRANKED /?ELS5
SET 'HLON,SNARK-HLON
SET 'HLAT,SNARK-HLAT
JUMP ?CND1
?ELS5: SET 'HLON,THORPE-HLON
SET 'HLAT,THORPE-HLAT
?CND1: SUB SNARK-LON,HLON >X
SUB SNARK-LAT,HLAT >Y
EQUAL? LAT,Y \?CND9
EQUAL? LON,X /TRUE
?CND9: SUB X,HLON >X
SUB Y,HLAT >Y
EQUAL? LAT,Y \?CND14
EQUAL? LON,X /TRUE
?CND14: SUB Y,HLAT
EQUAL? LAT,STACK \FALSE
SUB X,HLON
EQUAL? LON,STACK /TRUE
RFALSE
.FUNCT THORPE-SUB-F
EQUAL? PRSA,V?FIND \?ELS5
PRINTR "It's not far away!"
?ELS5: EQUAL? PRSA,V?PUSH,V?MOVE \?ELS9
PRINTR "It's too big!"
?ELS9: EQUAL? PRSA,V?ATTACK,V?KILL,V?SHOOT \?ELS13
PRINTI "You have to shoot"
CALL THE-PRSO-PRINT
PRINTR " with a weapon."
?ELS13: EQUAL? PRSA,V?WALK-TO \FALSE
PRINTR "You're the pilot!"
.FUNCT I-UPDATE-THORPE,DLAT,DLON,Z
ZERO? SUB-IN-BATTLE /?CND1
MUL THORPE-HLON,THORPE-HLAT >Z
CALL THORPE-SHOOT?,SUB-LON,SUB-LAT
ZERO? STACK \?ELS7
ZERO? THORPE-DLON \?ELS10
ZERO? THORPE-DLAT \?ELS10
ZERO? THORPE-TURNING? \?PRD13
PUSH 1
JUMP ?PRD14
?PRD13: PUSH 0
?PRD14: SET 'THORPE-TURNING?,STACK
ZERO? THORPE-TURNING? /?ELS17
JUMP ?CND1
?ELS17: CALL STARBOARD-OF-THORPE?,SUB-LON,SUB-LAT
ZERO? STACK /?ELS20
ZERO? THORPE-HLON \?ELS23
SET 'THORPE-HLON,THORPE-HLAT
JUMP ?CND5
?ELS23: EQUAL? -1,Z \?ELS25
SET 'THORPE-HLON,0
JUMP ?CND5
?ELS25: EQUAL? 1,Z \?ELS27
SET 'THORPE-HLAT,0
JUMP ?CND5
?ELS27: SUB 0,THORPE-HLON >THORPE-HLAT
JUMP ?CND5
?ELS20: ZERO? THORPE-HLON \?ELS34
SUB 0,THORPE-HLAT >THORPE-HLON
JUMP ?CND5
?ELS34: EQUAL? -1,Z \?ELS36
SET 'THORPE-HLAT,0
JUMP ?CND5
?ELS36: EQUAL? 1,Z \?ELS38
SET 'THORPE-HLON,0
JUMP ?CND5
?ELS38: SET 'THORPE-HLAT,THORPE-HLON
JUMP ?CND5
?ELS10: SET 'THORPE-DLON,0
SET 'THORPE-DLAT,0
JUMP ?CND5
?ELS7: PRINTI "Thorpe zeroed in on you and fired his rocket! It streaks through the water toward the "
PRINTD SUB
PRINTI "! In an instant your sub will be just twisted metal, trapping you and Tip forever in Davy Jones's locker!"
CALL FINISH
?CND5:
?CND1: ADD THORPE-LON,THORPE-DLON >THORPE-LON
ADD THORPE-LAT,THORPE-DLAT >THORPE-LAT
MUL THORPE-HLON,THORPE-HLAT >Z
ZERO? Z \?ELS49
ZERO? THORPE-HLAT \?ELS52
ADD THORPE-LAT,THORPE-HLON >SNARK-LAT
ADD THORPE-LON,THORPE-HLON >SNARK-LON
RFALSE
?ELS52: ADD THORPE-LAT,THORPE-HLAT >SNARK-LAT
SUB THORPE-LON,THORPE-HLAT >SNARK-LON
RFALSE
?ELS49: EQUAL? -1,Z \?ELS56
ADD THORPE-LON,THORPE-HLON >SNARK-LON
SET 'SNARK-LAT,THORPE-LAT
RFALSE
?ELS56: EQUAL? 1,Z \FALSE
ADD THORPE-LAT,THORPE-HLAT >SNARK-LAT
SET 'SNARK-LON,THORPE-LON
RFALSE
.FUNCT DART-F
CALL WEAPON-F,DART
RSTACK
.FUNCT MOUNTING-VERB?,OBJ
ZERO? SUB-IN-DOME /FALSE
EQUAL? PRSO,OBJ \FALSE
EQUAL? PRSA,V?USE /TRUE
EQUAL? PRSA,V?SHOW \?ELS13
EQUAL? PRSO,BLY \?ELS13
EQUAL? PRSI,BAZOOKA /TRUE
?ELS13: EQUAL? PRSA,V?PUT-UNDER \?ELS15
EQUAL? PRSO,ESCAPE-POD-UNIT \?ELS15
EQUAL? PRSI,PILOT-SEAT,CHAIR /TRUE
?ELS15: EQUAL? PRSA,V?TIE-TO,V?PUT \FALSE
EQUAL? PRSI,CLAW,LOCAL-SUB,GLOBAL-SUB /TRUE
RFALSE
.FUNCT NO-GOOD-MUNGED
PRINTD HORVAK
PRINTR " has to fix it first."
.FUNCT WEAPON-F,OBJ,WHICH=0,O,NOT-ON-SUB=0,SOMEONE=0
CALL BAD-AIR?
ZERO? STACK \TRUE
EQUAL? PRSA,V?TAKE,V?SEARCH-FOR,V?FIND \?ELS5
JUMP ?CND1
?ELS5: CALL MOUNTING-VERB?,OBJ
ZERO? STACK /?ELS7
JUMP ?CND1
?ELS7: CALL REMOTE-VERB?
ZERO? STACK \FALSE
?CND1: EQUAL? OBJ,DART \?CND10
SET 'WHICH,1
?CND10: GET ON-SUB,WHICH
EQUAL? OBJ,STACK /?CND13
SET 'NOT-ON-SUB,TRUE-VALUE
?CND13: ZERO? SUB-IN-DOME \?CND16
ZERO? NOT-ON-SUB /?CND16
PRINTI "You can't use"
CALL PRINTT,OBJ
PRINTR " now!"
?CND16: ZERO? NOT-ON-SUB /?ELS27
EQUAL? PRSA,V?SEARCH-FOR,V?FIND \?ELS33
LOC OBJ
EQUAL? HERE,STACK \FALSE
FSET? OBJ,TOUCHBIT /FALSE
FCLEAR OBJ,NDESCBIT
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?55
PRINTR " it among lots of equipment and supplies."
?ELS33: EQUAL? PRSA,V?TAKE \?ELS44
EQUAL? WHICH,1 \FALSE
FCLEAR DART,NDESCBIT
FSET? DART,MUNGBIT \FALSE
CALL NO-GOOD-MUNGED
RSTACK
?ELS44: CALL MOUNTING-VERB?,OBJ
ZERO? STACK /FALSE
EQUAL? WINNER,PLAYER /?ELS59
SET 'SOMEONE,WINNER
JUMP ?CND57
?ELS59: CALL FIND-FLAG,HERE,PERSON,PLAYER >SOMEONE
ZERO? SOMEONE /?CND57
?CND57: ZERO? SOMEONE \?CND62
CALL META-LOC,OBJ
EQUAL? HERE,STACK /?ELS67
CALL NOT-HERE,OBJ
RTRUE
?ELS67: EQUAL? HERE,AIRLOCK /?CND62
CALL NOT-HERE,CLAW
RTRUE
?CND62: ZERO? WHICH \?ELS74
ZERO? SOMEONE /?ELS79
EQUAL? HERE,AIRLOCK /?ELS79
PRINTI """Good idea! That should stop the "
PRINTD SNARK
PRINTI "! It could disable an enemy sub, too! Shall I "
EQUAL? PRSA,V?PUT \?ELS86
PRINTI "do it"
JUMP ?CND84
?ELS86: PRINTI "have it mounted"
EQUAL? PRSI,CLAW /?CND84
PRINTI " on an "
PRINTD CLAW
PRINTI " of the "
PRINTD SUB
?CND84: PRINTI "?"""
CALL YES?
ZERO? STACK /TRUE
CALL MOUNT-WEAPON,BAZOOKA
CALL FINE-SEQUENCE
RTRUE
?ELS79: CALL MOUNT-WEAPON,BAZOOKA
CALL OKAY,BAZOOKA,STR?56
CALL FINE-SEQUENCE
RTRUE
?ELS74: FSET? DART,MUNGBIT \?ELS106
CALL NO-GOOD-MUNGED
RSTACK
?ELS106: CALL MOUNT-WEAPON,DART
ZERO? SOMEONE /?ELS111
EQUAL? HERE,AIRLOCK /?ELS111
PRINTD SOMEONE
PRINTI " promptly mounts the "
PRINTD DART
PRINTI " on an "
PRINTD CLAW
PRINTI "."
CRLF
JUMP ?CND109
?ELS111: CALL OKAY,DART,STR?56
?CND109: GET ON-SUB,0
EQUAL? BAZOOKA,STACK \TRUE
CALL FINE-SEQUENCE
RTRUE
?ELS27: EQUAL? PRSA,V?EXAMINE,V?FIND \?ELS127
PRINTI "It's mounted on one of the "
PRINTD SUB
PRINTI "'s "
PRINTD CLAW
PRINTR "s."
?ELS127: EQUAL? PRSA,V?TAKE /?THN132
CALL MOUNTING-VERB?,OBJ
ZERO? STACK /?ELS131
?THN132: PRINTI "You'd better leave it mounted on the "
PRINTD CLAW
PRINTR "."
?ELS131: CALL REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?MOVE-DIR,V?MOVE \?ELS139
PRINTR "You should type where you want to aim it."
?ELS139: EQUAL? PRSA,V?AIM \?ELS143
FSET? CLAW,MUNGBIT \?ELS146
PRINTI "Nothing happens. Either the "
PRINTD CLAW
PRINTI " or the "
PRINTD OBJ
PRINTI " was damaged when you rammed the "
PRINTD SNARK
PRINTR "!"
?ELS146: EQUAL? PRSI,GLOBAL-THORPE,THORPE-SUB \?ELS150
CALL STARBOARD-OF-THORPE?,SUB-LON,SUB-LAT
ZERO? STACK \?ELS153
CALL YOU-CANT,STR?57,GLOBAL-SNARK,STR?58
RTRUE
?ELS153: ZERO? SUB-IN-BATTLE /?CND156
CALL SCORE-OBJ,THORPE-SUB
?CND156: PUT OBJ-AIMED-AT,WHICH,THORPE-SUB
PUT LON-AIMED-AT,WHICH,THORPE-LON
PUT LAT-AIMED-AT,WHICH,THORPE-LAT
JUMP ?CND144
?ELS150: EQUAL? PRSI,GLOBAL-SNARK,SNARK \FALSE
PUT OBJ-AIMED-AT,WHICH,SNARK
PUT LON-AIMED-AT,WHICH,SNARK-LON
PUT LAT-AIMED-AT,WHICH,SNARK-LAT
?CND144: PRINTR "Aimed."
?ELS143: EQUAL? PRSA,V?ATTACK,V?KILL,V?SHOOT \FALSE
GET OBJ-AIMED-AT,WHICH >O
GET ALREADY-SHOT,WHICH
ZERO? STACK /?ELS170
PRINTI "You already shot"
CALL THE-PRSI-PRINT
PRINTR "!"
?ELS170: ZERO? O \?CND168
PRINTR "You have to aim it first!"
?CND168: EQUAL? THORPE-SUB,O \?ELS183
EQUAL? PRSO,GLOBAL-THORPE,THORPE-SUB \?THN180
?ELS183: EQUAL? SNARK,O \?CND177
EQUAL? PRSO,GLOBAL-SNARK,SNARK /?CND177
?THN180: PRINTI "You didn't aim it at"
CALL THE-PRSO-PRINT
PRINTR "."
?CND177: EQUAL? PRSO,GLOBAL-THORPE,THORPE-SUB \?ELS192
GET LON-AIMED-AT,WHICH
EQUAL? STACK,THORPE-LON \?ELS197
GET LAT-AIMED-AT,WHICH
EQUAL? STACK,THORPE-LAT \?ELS197
PUT ALREADY-SHOT,WHICH,TRUE-VALUE
ZERO? WHICH \?ELS204
CALL MUNG-TARGET
RSTACK
?ELS204: PRINTI "Fudge! Your tranquilizer dart hit the "
PRINTD THORPE-SUB
PRINTI ", and its metal hull can't be put to sleep! Tough luck, "
CALL PRINT-NAME,FIRST-NAME
PRINTR "."
?ELS197: CALL TOO-BAD-BUT,PRSO
PRINTR " moved since you aimed."
?ELS192: EQUAL? PRSO,GLOBAL-SNARK,SNARK \FALSE
GET LON-AIMED-AT,WHICH
EQUAL? STACK,SNARK-LON \?ELS219
GET LAT-AIMED-AT,WHICH
EQUAL? STACK,SNARK-LAT \?ELS219
PUT ALREADY-SHOT,WHICH,TRUE-VALUE
SET 'SNARK-TRANKED,TRUE-VALUE
SET 'SNARK-HLON,THORPE-HLON
SET 'SNARK-HLAT,THORPE-HLAT
ZERO? WHICH \?ELS226
PRINTI "KA-VOOOM! The "
PRINTD SNARK
PRINTI " shudders and stops moving! You scored a clean hit with your "
PRINTD BAZOOKA
PRINTI "!
"
CALL TIP-SAYS
PRINTI "Rats! There goes our safety shield!"" And he's right. Even though you've saved the "
PRINTD AQUADOME
PRINTI " from further danger of monster attack, the "
PRINTD SUB
PRINTI " is now exposed to the "
PRINTD THORPE-SUB
PRINTR "'s rocket weapon!"
?ELS226: PRINTI "Right on! The dart hits the "
PRINTD SNARK
PRINTI " and sticks out of its side. The tranquilizer spreads through the "
PRINTD SNARK
PRINTI ", sending it to Slumberland.
But this may have been a bad move. With the "
PRINTD SNARK
PRINTI " fast asleep, its huge body can't hide you from the "
PRINTD THORPE-SUB
PRINTR "'s rocket attack!"
?ELS219: CALL TOO-BAD-BUT,PRSO
PRINTR " moved since you aimed."
.FUNCT MUNG-TARGET
CALL SCORE-UPD,5
FSET PRSO,MUNGBIT
PRINTI "Great! You and Tip can see"
CALL THE-PRSI-PRINT
PRINTI " slam into the "
PRINTD THORPE-SUB
PRINTI "'s power pod!
""Hooray! That crippled the "
PRINTD THORPE-SUB
PRINTI " for keeps!"" Tip cheers.
You hear a voice come over the "
PRINTD SONARPHONE
PRINTI ": "
?PRG3: PRINTI """"
CALL PRINT-NAME,FIRST-NAME
PRINTI ", this is Sharon! Do you read me?"""
CALL YES?
ZERO? STACK /?PRG3
PRINTI """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 "
PRINTD THORPE-SUB
PRINTI "'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.""
"
GETP GREENUP,P?VALUE
ZERO? STACK /?CND12
CALL TIP-SAYS
PRINTI "It's too bad we didn't find the "
PRINTD TRAITOR
PRINTI " at the "
PRINTD AQUADOME
PRINTI ".""
"
?CND12: PRINTI "
CONGRATULATIONS, "
CALL PRINT-NAME,FIRST-NAME,TRUE-VALUE
PRINTI "! YOU'VE COMPLETED YOUR MISSION!!"
CALL FINISH
RSTACK
.FUNCT MOUNT,WHICH,WEAPON,OBJ
GET ON-SUB,WHICH >OBJ
ZERO? OBJ /?CND1
MOVE OBJ,AIRLOCK
?CND1: PUT ON-SUB,WHICH,WEAPON
RTRUE
.FUNCT MOUNT-WEAPON,OBJ
EQUAL? OBJ,BAZOOKA \?ELS3
CALL SCORE-OBJ,BLY
PUTP BAZOOKA,P?LDESC,STR?59
GETP BAZOOKA,P?VALUE
ZERO? STACK /?CND4
PRINTI """Of course I'll have to get it first."""
CRLF
CALL SCORE-OBJ,BAZOOKA
?CND4: CALL MOUNT,0,BAZOOKA
JUMP ?CND1
?ELS3: EQUAL? OBJ,DART \?ELS10
PUTP DART,P?LDESC,STR?60
CALL SCORE-OBJ,HORVAK
CALL MOUNT,1,DART
JUMP ?CND1
?ELS10: GET ON-SUB,0
ZERO? STACK /?ELS12
GET ON-SUB,1
ZERO? STACK /?ELS15
PRINTI "The claws are holding all they can."
CRLF
RFALSE
?ELS15: PUT ON-SUB,1,OBJ
JUMP ?CND1
?ELS12: PUT ON-SUB,0,OBJ
?CND1: EQUAL? HERE,SUB,CRAWL-SPACE \?ELS24
MOVE OBJ,SUB
JUMP ?CND22
?ELS24: ZERO? SUB-IN-DOME /?ELS26
MOVE OBJ,AIRLOCK
JUMP ?CND22
?ELS26: MOVE OBJ,NORTH-TANK-AREA
?CND22: FSET OBJ,NDESCBIT
FCLEAR OBJ,TAKEBIT
FSET OBJ,TRYTAKEBIT
RTRUE
.FUNCT FINE-SEQUENCE
ZERO? TIP-FOLLOWS-YOU? /FALSE
CALL READY-FOR-SNARK?
ZERO? STACK \FALSE
CALL MOVE-HERE-NOT-SUB,BLY
PRINTI """Are you ready to take off now, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "?"" Zoe Bly "
IN? BLY,HERE \?ELS12
PUSH STR?61
JUMP ?CND8
?ELS12: PUSH STR?62
?CND8: PRINT STACK
PRINTI "s anxiously."
CALL YES?
ZERO? STACK /FALSE
PRINTI """Wait!"" Tip cuts in. "
SET 'WINNER,PLAYER
CALL PERFORM,V?ASK-ABOUT,TIP,FINE-GRID
RSTACK
.FUNCT BAZOOKA-F
CALL WEAPON-F,BAZOOKA
RSTACK
.FUNCT I-THORPE-APPEARS
GRTR? 17,SUB-LON /?THN6
LESS? -17,SUB-LAT /?THN6
EQUAL? SUB-DEPTH,AIRLOCK-DEPTH /?ELS5
?THN6: SUB MOVES,LEFT-DOME
LESS? 40,STACK \FALSE
SET 'LEFT-DOME,MOVES
PRINTI "Suddenly "
CALL TIP-SAYS
CALL PRINT-NAME,FIRST-NAME
EQUAL? SUB-DEPTH,AIRLOCK-DEPTH \?ELS21
PRINTI ", what "
PRINTD INTDIR
PRINTI " do you think the "
PRINTD SNARK
PRINTR " went, anyway?"""
?ELS21: PRINTR ", I wonder if we're at the right depth?"""
?ELS5: CALL QUEUE,I-SNARK-ATTACKS,0
CALL QUEUE,I-THORPE-APPEARS,0
CALL QUEUE,I-THORPE-AWAKES,9
PUT STACK,0,1
FSET SEARCH-BEAM,ONBIT
PRINTI """Holy halibut!"" cries Tip. ""There's a big cloud of silt ahead in the "
PRINTD SEARCH-BEAM
PRINTI ". It's out of sonar range. This could be the "
PRINTD SNARK
PRINTI "! Want to hold course till we find out?"""
CALL YES?
PRINTI "However you steer, the cloud holds steady. You may be on a collision course with the behemoth that almost wrecked the "
PRINTD AQUADOME
PRINTI "!
"
PRINTI "Your "
PRINTD SEARCH-BEAM
PRINTI " reveals TWO objects dead ahead!
One is the "
PRINTD SNARK
PRINTI ". To the left of the tentacled creature -- YOUR left -- you can make out a vehicle crawling along the ocean floor.
"
CALL TIP-SAYS
PRINTI "That's one of your Sea Cats!""
A voice crackles over the "
PRINTD SONARPHONE
PRINTI ": ""This is "
PRINTD GLOBAL-THORPE
PRINTI ", "
CALL PRINT-NAME,FIRST-NAME
PRINTI "! Do you read me?"""
CALL YES?
PRINTI "Your answer brings a rasping laugh. ""Of course you read me, or you wouldn't be answering! Your "
PRINTD LAB-ASSISTANT
PRINTI ", "
PRINTD SHARON
PRINTI ", 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?"""
CALL YES?
ZERO? STACK \?ELS42
PRINTI """You'll soon find out -- like it or not! "
JUMP ?CND40
?ELS42: PRINTI """"
?CND40: PRINTI "I'll blast your sub with a rocket! Then I'll guide my synthetic monster to the "
PRINTD AQUADOME
PRINTI " to destroy it! Can you guess what sealed your doom, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "?"""
CALL YES?
ZERO? STACK \?ELS53
PRINTI """"
JUMP ?CND51
?ELS53: PRINTI """I'll tell you anyhow. "
?CND51: PRINTI "I want to own the "
PRINTD ORE-NODULES
PRINTI " near the "
PRINTD AQUADOME
PRINTI "! 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:
"
?PRG62: PRINTI """This is "
PRINTD SHARON
PRINTI ", "
CALL PRINT-NAME,FIRST-NAME
PRINTI "! Do you read me?"""
CALL YES?
ZERO? STACK /?PRG62
CALL PHONE-ON,GLOBAL-SHARON,THORPE-SUB,SONARPHONE
CALL QUEUE,I-UPDATE-THORPE,-1
PUT STACK,0,1
FCLEAR SNARK,INVISIBLE
FCLEAR THORPE-SUB,INVISIBLE
ADD SUB-LON,SONAR-RANGE
ADD 2,STACK >THORPE-LON
SUB SUB-LAT,SONAR-RANGE >THORPE-LAT
ADD THORPE-LON,THORPE-HLON >SNARK-LON
SET 'SNARK-LAT,THORPE-LAT
FSET THORPE,MUNGBIT
PRINTI """Thank goodness! I conked Thorpe with a wrench! He fell onto the microphone, and he's too heavy for me to move!"""
CRLF
CALL SCORE-OBJ,SNARK
RETURN 2
.FUNCT SHARON-EXPLAINS
EQUAL? PRSA,V?SAY /?CND1
PRINTI """Wait a second, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ", till I catch my breath!"" Sharon cuts in. "
?CND1: CALL SHARON-ABOUT-THORPE
PRINTI """Can I interrupt, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "?"" asks Tip."
CALL YES?
ZERO? STACK \?CND8
CALL TIP-SAYS
PRINTI "Sorry, but I have to. This is important.""
"
?CND8: PRINTI """Sharon, how does Thorpe control the monster?""
""By sonar pulse signals,"" she replies. "
CALL SHARON-ABOUT-MONSTER
PRINTI """Is the transducer sending out signals now?"" Tip asks her.
""Yes, it operates all the time. Can you make out our position on your "
PRINTD SONARSCOPE
PRINTI "?""
""Thanks to the "
PRINTD FINE-GRID
PRINTI "!"" says Tip."
ZERO? THROTTLE-SETTING /?CND17
SET 'THROTTLE-SETTING,0
PRINTI " ""Maybe we'd better stop the "
PRINTD SUB
PRINTI " before we collide with you!""
Tip uses his dual-control throttle to stop your sub. Then he adds apologetically: ""This isn't mutiny, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "! I just figured we should stop now."""
?CND17: CRLF
CALL SHARON-ABOUT-CAT
PRINTI """Was it out of control when it attacked the "
PRINTD AQUADOME
PRINTI "?"" asks Tip.
""Oh no!"" Sharon replies. "
?PRG24: PRINTI """Thorpe has a helper at the "
PRINTD AQUADOME
PRINTI " who put a "
PRINTD BLACK-BOX
PRINTI " on the "
PRINTD SONAR-EQUIPMENT
PRINTI ", which made it emit signals to ATTRACT the monster and make it attack. Do you follow me so far, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "?"""
CALL YES?
ZERO? STACK /?PRG24
PRINTI """Good. Before that first attack, Thorpe got the monster close enough for the "
PRINTD BLACK-BOX
PRINTI " to take over. Then he surfaced near "
PRINTD BAY
PRINTI " to get me. By the time we went back to the ocean floor, something had gone wrong: the "
PRINTD AQUADOME
PRINTI " was okay, and the monster had wandered off to its cavern. That reminds me, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ". "
?PRG33: PRINTI "Do you want to take the monster to its cavern peacefully? (With no more sonar pulse input, it'll stay there until you're ready to study it scientifically.)"""
CALL YES?
ZERO? STACK /?CND37
JUMP ?REP34
?CND37: PRINTI "(Better listen, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ". Sharon's trying to show you how to deal with this threat to the "
PRINTD AQUADOME
PRINTI ".)
"""
JUMP ?PRG33
?REP34: PRINTI """First tell me, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ": do you have any tranquilizer or weapon to use against it?"""
CALL YES?
ZERO? STACK /TRUE
PRINTI """Do you want to capture it for scientific study?"""
CALL YES?
ZERO? STACK /?ELS51
PRINTR """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."""
?ELS51: PRINTI """That's odd! I thought you would."""
CRLF
RTRUE
.FUNCT SHARON-ABOUT-THORPE
PRINTI """I'm not in on Thorpe's plot, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ". I'm playing along, trying to wreck his plans. I know it was risky for me to leave that "
PRINTD CATALYST-CAPSULE
PRINTI " out of the "
PRINTD SUB
ZERO? SHARON-BROKE-CIRCUIT /?CND3
PRINTI ", and to open that "
PRINTD CIRCUIT-BREAKER
?CND3: PRINTI ", but it was part of my plan, and you got to the "
PRINTD AQUADOME
PRINTR " anyway."""
.FUNCT SHARON-ABOUT-MONSTER
PRINTI """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."""
RTRUE
.FUNCT SHARON-ABOUT-CAT
PRINTI "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."""
RTRUE
.FUNCT I-THORPE-AWAKES
FCLEAR THORPE,MUNGBIT
SET 'SUB-IN-BATTLE,TRUE-VALUE
CALL PHONE-OFF
CALL PHONE-ON,GLOBAL-THORPE,THORPE-SUB,SONARPHONE
PRINTI "
Suddenly the sonarphone gets louder.
"
CALL TIP-SAYS
PRINTI "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, "
CALL PRINT-NAME,FIRST-NAME
PRINTI " "
CALL PRINT-NAME,LAST-NAME
PRINTI ", I'm stopping my "
PRINTD THORPE-SUB
PRINTI " so I can blow you into Kingdom Come as soon as you're in my sights!""
"
CALL STARBOARD-OF-THORPE?,SUB-LON,SUB-LAT
ZERO? STACK \?CND5
CALL TIP-SAYS
PRINTI "He'll have to go around the "
PRINTD SNARK
PRINTI " to fire at us, "
CALL PRINT-NAME,FIRST-NAME
PRINTI "! And we'll have to go around its tail to shoot at HIM!""
"
?CND5: CALL TELL-HINT,42,THORPE-SUB,FALSE-VALUE
RETURN 2
.ENDI

View File

@@ -97,7 +97,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<COND (<VERB? FIND> <TELL "It's not far away!" CR>)
(<VERB? MOVE PUSH> <TELL "It's too big!" CR>)
(<VERB? SHOOT KILL ATTACK>
%<XTELL
<TELL
"You have to shoot" THE-PRSO " with a weapon." CR>)
(<VERB? WALK-TO> <TELL "You're the pilot!" CR>)>>
@@ -131,7 +131,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<TELL "[T-HLon=" N ,THORPE-HLON
", T-HLat=" N ,THORPE-HLAT "]" CR>)>)
(T
%<XTELL
<TELL
"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!">
@@ -179,6 +179,9 @@ metal, trapping you and Tip forever in Davy Jones's locker!">
<COND (<NOT ,SUB-IN-DOME> <RFALSE>)
(<AND <EQUAL? ,PRSO .OBJ>
<OR <VERB? USE>
<AND <VERB? SHOW>
<DOBJ? BLY>
<IOBJ? BAZOOKA>>
<AND <VERB? PUT-UNDER>
<DOBJ? ESCAPE-POD-UNIT>
<IOBJ? CHAIR PILOT-SEAT>>
@@ -191,8 +194,7 @@ metal, trapping you and Tip forever in Davy Jones's locker!">
<RTRUE>)>>
<ROUTINE NO-GOOD-MUNGED ()
%<XTELL
"Doc Horvak has to fix it first." CR>>
<TELL D ,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>
@@ -205,7 +207,7 @@ metal, trapping you and Tip forever in Davy Jones's locker!">
<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>
<TELL "You can't use" THE .OBJ " now!" CR>
<RTRUE>)>
<COND (.NOT-ON-SUB
<COND (<VERB? FIND SEARCH-FOR>
@@ -231,7 +233,7 @@ metal, trapping you and Tip forever in Davy Jones's locker!">
<RTRUE>)>)>
<COND (<0? .WHICH>
<COND (<AND .SOMEONE <NOT <==? ,HERE ,AIRLOCK>>>
%<XTELL
<TELL
"\"Good idea! That should stop the " D ,SNARK "! It could disable an
enemy sub, too! Shall I ">
<COND (<VERB? PUT> <TELL "do it">)
@@ -255,7 +257,7 @@ enemy sub, too! Shall I ">
(T
<MOUNT-WEAPON ,DART>
<COND (<AND .SOMEONE <NOT <==? ,HERE ,AIRLOCK>>>
%<XTELL
<TELL
D .SOMEONE " promptly mounts the " D ,DART " on an " D ,CLAW "." CR>)
(T
<OKAY ,DART "mounted">)>
@@ -264,16 +266,16 @@ D .SOMEONE " promptly mounts the " D ,DART " on an " D ,CLAW "." CR>)
<RTRUE>)>)>)
(T
<COND (<VERB? FIND EXAMINE>
%<XTELL
<TELL
"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>)
<TELL "You'd better leave it mounted on the " D ,CLAW "."CR>)
(<REMOTE-VERB?> <RFALSE>)
;(,SUB-IN-DOME ;<NOT <EQUAL? ,HERE ,SUB>>
%<XTELL
<TELL
"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>)
<TELL "You should type where you want to aim it." CR>)
(<VERB? AIM>
<COND (<FSET? ,CLAW ,MUNGBIT>
<TELL
@@ -296,21 +298,21 @@ when you rammed the " D ,SNARK "!" CR>
(T <RFALSE>)>
;<COND (<AND ,DEBUG <GET ,OBJ-AIMED-AT .WHICH>>
<TELL "[at: " D <GET ,OBJ-AIMED-AT .WHICH> "] ">)>
%<XTELL "Aimed." CR>)
<TELL "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>
<TELL "You already shot" THE-PRSI "!" CR>
<RTRUE>)
(<NOT .O>
%<XTELL "You have to aim it first!" CR>
<TELL "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>
<TELL "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>
@@ -318,9 +320,9 @@ when you rammed the " D ,SNARK "!" CR>
<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>)>)
<TELL
"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>)>)
@@ -332,7 +334,7 @@ be put to sleep! Tough luck, "FN"." CR>)>)
<SETG SNARK-HLON ,THORPE-HLON>
<SETG SNARK-HLAT ,THORPE-HLAT>
<COND (<0? .WHICH>
%<XTELL
<TELL
"KA-VOOOM! The " D ,SNARK " shudders and stops moving! You scored a
clean hit with your " D ,BAZOOKA "!|
">
@@ -342,7 +344,7 @@ clean hit with your " D ,BAZOOKA "!|
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
(T <TELL
"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
@@ -356,7 +358,7 @@ CR>)>)
<ROUTINE MUNG-TARGET ()
<SCORE-UPD 5>
<FSET ,PRSO ,MUNGBIT>
%<XTELL
<TELL
"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.|
@@ -364,7 +366,7 @@ You hear a voice come over the " D ,SONARPHONE ": ">
<REPEAT ()
<TELL "\"" FN ", this is Sharon! Do you read me?\"">
<COND (<YES?> <RETURN>)>>
%<XTELL
<TELL
"\"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.|
@@ -380,7 +382,7 @@ you like, I'll guide the monster to its cavern.\"|
<TELL "|
CONGRATULATIONS, ">
<PRINT-NAME ,FIRST-NAME T>
%<XTELL
<TELL
"! YOU'VE COMPLETED YOUR MISSION!!">
<FINISH>>
@@ -421,11 +423,11 @@ CONGRATULATIONS, ">
(<READY-FOR-SNARK?>
<RFALSE>)>
<MOVE-HERE-NOT-SUB ,BLY>
%<XTELL "\"Are you ready to take off now, "FN"?\" Zoe Bly "
<TELL "\"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. ">
<TELL "\"Wait!\" Tip cuts in. ">
<SETG WINNER ,PLAYER>
<PERFORM ,V?ASK-ABOUT ,TIP ,FINE-GRID>>
@@ -448,27 +450,30 @@ CONGRATULATIONS, ">
<NOT <==? ,SUB-DEPTH ,AIRLOCK-DEPTH>>>
<COND (<L? 40 <- ,MOVES ,LEFT-DOME>>
<SETG LEFT-DOME ,MOVES>
%<XTELL "Suddenly ">
<TELL "Suddenly ">
<TIP-SAYS>
<TELL
;"Say, " FN ", what " D ,INTDIR " do you think the " D
,SNARK " went, anyway?\"" CR>)>)
<TELL FN>
<COND (<==? ,SUB-DEPTH ,AIRLOCK-DEPTH>
<TELL
", what " D ,INTDIR " do you think the " D ,SNARK " went, anyway?\"" CR>)
(T <TELL
", I wonder if we're at the right depth?\"" CR>)>)>)
(T
<QUEUE I-SNARK-ATTACKS 0>
<QUEUE I-THORPE-APPEARS 0>
<ENABLE <QUEUE I-THORPE-AWAKES 9 ;-1>>
<FSET ,SEARCH-BEAM ,ONBIT>
%<XTELL
<TELL
"\"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
<TELL
"However you steer, the cloud holds steady.
You may be on a collision course with the behemoth
that almost wrecked the " D ,AQUADOME "!|
">
%<XTELL
<TELL
"Your " D ,SEARCH-BEAM " reveals TWO
objects dead ahead!|
One is the " D ,SNARK ". To the left of the tentacled
@@ -481,7 +486,7 @@ crawling along the ocean floor.|
A voice crackles over the " D ,SONARPHONE ": \"This is " D ,GLOBAL-THORPE
", " FN "! Do you read me?\"">
<YES?>
%<XTELL
<TELL
"Your answer brings a rasping laugh. \"Of course
you read me, or you wouldn't be answering!
Your " D ,LAB-ASSISTANT
@@ -491,14 +496,13 @@ 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
<TELL
"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"
<TELL
"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
@@ -517,7 +521,7 @@ then a soft female voice:|
<SETG SNARK-LON <+ ,THORPE-LON ,THORPE-HLON>>
<SETG SNARK-LAT ,THORPE-LAT>
<FSET ,THORPE ,MUNGBIT>
%<XTELL
<TELL
"\"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>
@@ -531,13 +535,15 @@ microphone, and he's too heavy for me to move!\"" CR>
<TELL "\"Can I interrupt, "FN"?\" asks Tip.">
<COND (<NOT <YES?>>
<TIP-SAYS>
%<XTELL
<TELL
"Sorry, but I have to. This is important.\"|
">)>
%<XTELL
<TELL
"\"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.|
\"By sonar pulse signals,\" she replies. ">
<SHARON-ABOUT-MONSTER>
<TELL
"\"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.">
@@ -549,16 +555,17 @@ 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.|
<SHARON-ABOUT-CAT>
<TELL
"\"Was it out of control when it attacked the " D ,AQUADOME "?\" asks Tip.|
\"Oh no!\" Sharon replies. ">
<REPEAT ()
%<XTELL
<TELL
"\"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
<TELL
"\"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.
@@ -566,22 +573,22 @@ 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
<TELL
"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
more sonar pulse input, it'll stay there until you're ready to study it
scientifically.)\"">
<COND (<YES?> <RETURN>)>
%<XTELL
<TELL
"(Better listen, "FN". Sharon's trying to show you how to deal with
this threat to the " D ,AQUADOME ".)|
\"">>
%<XTELL
<TELL
"\"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?\"">
<TELL "\"Do you want to capture it for scientific study?\"">
<COND (<YES?>
%<XTELL
<TELL
"\"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
@@ -590,7 +597,7 @@ of control, you can tranquilize it immediately.\"" CR>)
<RTRUE>>
<ROUTINE SHARON-ABOUT-THORPE ()
%<XTELL
<TELL
"\"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>
@@ -600,25 +607,27 @@ his plans. I know it was risky for me to leave that " D
", but it was part of my plan, and you got to the " D ,AQUADOME " anyway.\""
CR>>
<GLOBAL SHARON-ABOUT-MONSTER
<ROUTINE SHARON-ABOUT-MONSTER ()
<TELL
"\"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.\"">
the monster all the time.\"">>
<GLOBAL SHARON-ABOUT-CAT
<ROUTINE SHARON-ABOUT-CAT ()
<TELL
"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.\"">
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.|
<TELL "|
Suddenly the sonarphone gets louder.|
">
<TIP-SAYS>
<TELL
@@ -631,7 +640,7 @@ Kingdom Come as soon as you're in my sights!\"|
">
<COND (<NOT <STARBOARD-OF-THORPE? ,SUB-LON ,SUB-LAT>>
<TIP-SAYS>
%<XTELL
<TELL
"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!\"|
">)>

53
bay.rno Normal file
View File

@@ -0,0 +1,53 @@
.lm 0
.rm 80
.c
MAP OF FROBTON BAY
.s 5
.lit
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 6 6 6 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 0 0 6 6 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 4 4 0 0 6 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 2 2 3 4 4 4 0 6 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 3 3 3 4 4 4 5 6 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 3 3 3 4 4 4 4 4 5 5 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 3 3 3 3 4 4 4 4 4 4 5 5 5 5 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 1 1 2 2 2 2 2 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6 6
0 0 0 0 0 0 0 1 1 2 2 2 3 3 3 3 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 6 6 6 6 6 6
0 0 0 0 0 0 1 1 2 2 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 0 0 6 6 6
0 0 0 0 0 1 1 2 2 3 3 3 4 4 4 4 4 1 1 4 4 4 4 5 5 5 5 5 5 5 5 5 5 4 4 0 0 6 6
0 0 0 0 1 1 2 2 3 3 3 4 4 4 4 1 1 1 4 4 4 4 5 5 5 5 5 5 5 5 5 5 4 4 4 4 0 0 6
0 0 0 0 1 2 2 3 3 3 4 4 4 4 1 1 1 4 4 4 4 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 0 0
0 0 0 1 1 2 3 3 3 4 4 4 4 1 1 1 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 3 3 0
0 0 0 1 2 2 3 3 4 4 4 4 4 1 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 3 2 1 0
0 0 1 1 2 3 3 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 3 2 2 1 0
0 0 1 2 2 3 3 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 3 2 1 1 0
0 0 2 2 3 3 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 3 2 1 1 0
0 0 3 3 3 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 0 4 4 4 4 3 3 2 1 1 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 3 2 2 1 1 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 3 3 2 2 1 1 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 3 3 3 2 2 1 1 1 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 3 3 3 2 2 2 1 1 1 1 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 3 3 2 2 2 1 1 1 1 1 1 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 0
0 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 0 0
0 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 2 2 1 1 1 1 1 1 1 1 1 0 0
0 2 2 3 3 4 4 4 4 4 4 4 4 4 4 4 1 1 4 4 4 4 3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0
0 1 2 2 3 4 4 4 4 4 4 4 4 4 1 1 1 4 4 4 4 4 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 0 0
0 1 2 2 3 3 4 4 4 4 4 4 1 1 1 1 1 4 4 4 4 3 3 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
0 1 1 2 2 3 4 4 4 4 4 1 1 1 1 4 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 2 2 3 1 1 1 1 1 1 1 1 1 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 2 2 1 1 1 1 1 1 1 1 1 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
0 1 1 2 2 3 1 1 1 1 1 4 4 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
0 1 1 2 2 3 3 4 4 4 4 4 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
0 1 2 2 2 2 3 4 4 4 4 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
0 2 2 2 2 2 3 3 4 4 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
0 0 1 1 1 2 2 3 3 4 4 4 4 4 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
0 0 0 1 1 1 2 2 3 3 3 4 3 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 2 2 2 3 3 3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
.eli

53
bay.runoff Normal file
View File

@@ -0,0 +1,53 @@
.lm 0
.rm 80
.c
MAP OF FROBTON BAY
.s 5
.lit
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 6 6 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 6 6 6 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 2 3 0 0 6 6 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 2 2 3 4 4 0 0 6 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 2 3 3 4 4 4 0 5 6 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 4 5 5 5 6 6 6 6 6 6 6 6
0 0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 5 6 6 6 6 6 6 6
0 0 0 0 0 0 0 1 1 1 2 2 2 2 3 3 3 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 6 6 6 6 6 6
0 0 0 0 0 0 1 1 2 2 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 6 6 6 6 6
0 0 0 0 0 1 1 2 2 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 0 6 6 6 6
0 0 0 0 1 1 2 2 3 3 3 4 4 4 4 1 1 1 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 4 0 0 6 6 6
0 0 0 0 1 2 2 3 3 3 4 4 4 4 1 1 1 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 4 4 4 0 0 6 6
0 0 0 1 1 2 2 3 3 4 4 4 4 1 1 1 1 4 4 4 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 0 0 6
0 0 0 1 2 2 3 3 4 4 4 4 4 1 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 3 0 0
0 0 0 1 2 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 3 2 2 1 0
0 0 1 2 2 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 3 2 1 0 0
0 0 2 2 3 3 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 3 2 2 1 0 0
0 0 3 3 3 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 3 2 2 1 1 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 0 4 4 4 4 3 2 1 1 1 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 3 3 2 1 1 1 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 3 3 2 2 1 1 0 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 3 3 3 3 2 2 1 1 1 0 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 3 3 3 2 2 2 1 1 1 1 0 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 3 3 2 2 2 1 1 1 1 1 1 0 0
0 5 5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 0 0
0 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 2 2 1 1 1 1 1 1 1 1 1 0 0
0 2 2 3 4 4 4 4 4 4 4 4 4 4 4 1 1 1 4 4 4 4 3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 0 0
0 2 2 2 3 4 4 4 4 4 4 4 4 4 1 1 1 4 4 4 4 4 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 0 0
0 1 2 2 3 4 4 4 4 4 4 1 1 1 1 1 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 2 2 2 3 4 4 4 4 1 1 1 1 1 4 4 4 4 3 3 3 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 2 2 3 1 1 1 1 1 1 1 1 4 4 4 4 3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 1 1 2 2 1 1 1 1 1 1 1 1 4 4 4 4 3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
0 1 1 2 2 3 1 1 1 1 4 4 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
0 1 2 2 2 3 3 4 4 4 4 4 4 4 4 3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
0 1 2 2 2 2 3 4 4 4 4 4 4 4 3 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
0 2 2 2 2 2 3 3 4 4 4 4 4 3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
0 0 1 1 1 2 2 3 3 4 4 4 4 3 3 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 1 1 1 2 2 3 3 3 4 3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 2 2 2 3 3 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 2 2 2 2 2 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 1 1 1 2 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
.eli

View File

@@ -6,14 +6,12 @@
RETURN CINT
.FUNCT INT,RTN,DEMON=0,E,C,INT
.FUNCT INT,RTN,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
ADD C-TABLE,C-INTS >INT
PUT INT,C-RTN,RTN
RETURN INT
?ELS5: GET C,C-RTN
@@ -25,33 +23,33 @@
.FUNCT CLOCKER,C,E,TICK,FLG=0,VAL
ZERO? CLOCK-WAIT /?CND1
SET 'CLOCK-WAIT,0
SET 'CLOCK-WAIT,FALSE-VALUE
RFALSE
?CND1: ZERO? P-WON /?ELS9
?CND1: ZERO? P-WON /?PRD7
PUSH C-INTS
JUMP ?CND5
?ELS9: PUSH C-DEMONS
?PRD7: PUSH 0
?CND5: ADD C-TABLE,STACK >C
ADD C-TABLE,C-TABLELEN >E
?PRG13: EQUAL? C,E \?ELS17
?PRG11: EQUAL? C,E \?ELS15
INC 'MOVES
RETURN FLG
?ELS17: GET C,C-ENABLED?
ZERO? STACK /?CND15
?ELS15: GET C,C-ENABLED?
ZERO? STACK /?CND13
GET C,C-TICK >TICK
ZERO? TICK \?ELS22
JUMP ?CND15
?ELS22: SUB TICK,1
ZERO? TICK \?ELS20
JUMP ?CND13
?ELS20: SUB TICK,1
PUT C,C-TICK,STACK
GRTR? TICK,1 /?CND20
GRTR? TICK,1 /?CND18
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
ZERO? VAL /?CND18
ZERO? FLG /?THN31
EQUAL? VAL,M-FATAL \?CND13
?THN31: SET 'FLG,VAL
?CND18:
?CND13: ADD C,C-INTLEN >C
JUMP ?PRG11
.ENDI

View File

@@ -36,13 +36,14 @@ I-UPDATE-FREIGHTER
I-UPDATE-SUB-POSITION
I-UPDATE-THORPE"
<CONSTANT C-TABLELEN 111>
<CONSTANT C-TABLELEN 222>
<GLOBAL C-TABLE <ITABLE NONE 111>>
<GLOBAL C-TABLE %<COND (<GASSIGNED? PREDGEN> '<ITABLE NONE 111>)
(T '<ITABLE NONE 222>)>>
<GLOBAL C-DEMONS 111>
;<GLOBAL C-DEMONS 111>
<GLOBAL C-INTS 111>
<GLOBAL C-INTS 222>
<CONSTANT C-INTLEN 6>
@@ -62,15 +63,13 @@ I-UPDATE-THORPE"
<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>)
<ROUTINE INT (RTN "OPTIONAL" ;(DEMON <>) E C INT)
<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>>>
;<AND .DEMON <SETG C-DEMONS <- ,C-DEMONS ,C-INTLEN>>>
<SET INT <REST ,C-TABLE ,C-INTS>>
<PUT .INT ,C-RTN .RTN>
<RETURN .INT>)
@@ -79,10 +78,11 @@ I-UPDATE-THORPE"
<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 C <REST ,C-TABLE <COND (,P-WON ,C-INTS) ;(T ,C-DEMONS)>>>
<SET E <REST ,C-TABLE ,C-TABLELEN>>
<REPEAT ()
<COND (<==? .C .E>

208
dome.zap
View File

@@ -27,7 +27,7 @@
PRINTR "."""
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS29
LESS? DISTANCE-FROM-BAY,AQUADOME-VISIBLE /?ELS29
SET 'P-WON,0
SET 'P-WON,FALSE-VALUE
GETP LOCAL-SUB,P?TEXT
PRINT STACK
CRLF
@@ -55,11 +55,11 @@
.FUNCT IN-DOME?,RM
ZERO? SUB-IN-DOME /?ELS5
EQUAL? RM,SUB,CRAWL-SPACE /?THN1
EQUAL? RM,SUB,CRAWL-SPACE \?ELS5
RETURN SUB-IN-DOME
?ELS5: CALL ZMEMQ,RM,IN-DOME-AROUND
RSTACK
?THN1: RSTACK
ZERO? STACK /FALSE
RTRUE
.FUNCT AIR-ROOM?,RM
@@ -125,64 +125,67 @@
PRINTD AIRLOCK
PRINTR ", at the foot of the ramp."
?ELS16: ZERO? RARG \FALSE
ZERO? SUB-IN-DOME \?ELS23
CALL REMOTE-VERB?
ZERO? STACK /?ELS23
EQUAL? PRSA,V?WALK-TO,V?THROUGH \FALSE
?ELS23: ZERO? SUB-IN-DOME \?ELS27
CALL SUB-OUTSIDE-AIRLOCK?
ZERO? STACK \?ELS23
ZERO? STACK \?ELS27
CALL NOT-HERE,AIRLOCK
RSTACK
?ELS23: EQUAL? PRSA,V?EMPTY \?ELS27
ZERO? AIRLOCK-FULL \?ELS32
CALL ALREADY,AIRLOCK,STR?70
?ELS27: EQUAL? PRSA,V?EMPTY \?ELS31
ZERO? AIRLOCK-FULL \?ELS36
CALL ALREADY,AIRLOCK,STR?65
RSTACK
?ELS32: FSET? AIRLOCK-HATCH,OPENBIT \?ELS34
CALL YOU-CANT,0,AIRLOCK-HATCH,STR?23
?ELS36: FSET? AIRLOCK-HATCH,OPENBIT \?ELS38
CALL YOU-CANT,FALSE-VALUE,AIRLOCK-HATCH,STR?21
RSTACK
?ELS34: EQUAL? HERE,SUB,CRAWL-SPACE /?THN37
?ELS38: EQUAL? HERE,SUB,CRAWL-SPACE /?THN41
EQUAL? HERE,BLY-OFFICE,FOOT-OF-RAMP \FALSE
?THN37: CALL QUEUE,I-AIRLOCK-EMPTY,2
?THN41: CALL QUEUE,I-AIRLOCK-EMPTY,2
PUT STACK,0,1
PRINTR "This will take 1 turn."
?ELS27: EQUAL? PRSA,V?FILL \?ELS42
ZERO? AIRLOCK-FULL /?ELS45
CALL ALREADY,AIRLOCK,STR?71
?ELS31: EQUAL? PRSA,V?FILL \?ELS46
ZERO? AIRLOCK-FULL /?ELS49
CALL ALREADY,AIRLOCK,STR?66
RTRUE
?ELS45: FSET? AIRLOCK-ELECTRICITY,ONBIT /?ELS48
CALL YOU-CANT,0,AIRLOCK-ELECTRICITY,STR?44
?ELS49: FSET? AIRLOCK-ELECTRICITY,ONBIT /?ELS52
CALL YOU-CANT,FALSE-VALUE,AIRLOCK-ELECTRICITY,STR?39
RTRUE
?ELS48: CALL AIRLOCK-POP?
ZERO? STACK /?CND43
CALL YOU-CANT,0,AIRLOCK,STR?72
?ELS52: CALL AIRLOCK-POP?
ZERO? STACK /?CND47
CALL YOU-CANT,FALSE-VALUE,AIRLOCK,STR?67
RTRUE
?CND43: ZERO? GREENUP-ESCAPE \?CND51
FSET? SUB-DOOR,OPENBIT \?CND54
CALL YOU-CANT,0,SUB-DOOR,STR?23
?CND47: ZERO? GREENUP-ESCAPE \?CND55
FSET? SUB-DOOR,OPENBIT \?CND58
CALL YOU-CANT,FALSE-VALUE,SUB-DOOR,STR?21
RTRUE
?CND54: FSET? AIRLOCK-ROOF,OPENBIT \?CND51
?CND58: FSET? AIRLOCK-ROOF,OPENBIT \?CND55
CALL THIS-IS-IT,AIRLOCK-ROOF
PRINTI "A safety mechanism prevents it. The "
PRINTD AIRLOCK-ROOF
PRINTR " is open!"
?CND51: ZERO? GREENUP-ESCAPE /?ELS66
GRTR? 4,GREENUP-ESCAPE \?ELS66
?CND55: ZERO? GREENUP-ESCAPE /?ELS70
GRTR? 4,GREENUP-ESCAPE \?ELS70
PRINTI "Greenup is frantically scrambling back up the ladder to avoid being swept off and drowned! "
CALL GREENUP-CUFF
PRINTI "Tip immediately empties the "
PRINTD AIRLOCK
PRINTR " again."
?ELS66: EQUAL? HERE,SUB,CRAWL-SPACE /?THN75
?ELS70: EQUAL? HERE,SUB,CRAWL-SPACE /?THN79
EQUAL? HERE,BLY-OFFICE,FOOT-OF-RAMP \FALSE
?THN75: CALL QUEUE,I-AIRLOCK-EMPTY,2
?THN79: CALL QUEUE,I-AIRLOCK-EMPTY,2
PUT STACK,0,1
PRINTR "This will take 1 turn."
?ELS42: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS80
?ELS46: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS84
CALL PERFORM,PRSA,AIRLOCK-HATCH
RTRUE
?ELS80: EQUAL? PRSA,V?WALK-TO,V?THROUGH \FALSE
ZERO? SUB-IN-DOME \?CND83
EQUAL? HERE,SUB,CRAWL-SPACE \?CND83
?ELS84: EQUAL? PRSA,V?WALK-TO,V?THROUGH \FALSE
ZERO? SUB-IN-DOME \?CND87
EQUAL? HERE,SUB,CRAWL-SPACE \?CND87
CALL TOO-BAD-BUT,PRSO,STR?16
RTRUE
?CND83: SET 'PRSO,AIRLOCK
?CND87: SET 'PRSO,AIRLOCK
CALL CHEERS?
RFALSE
@@ -202,7 +205,7 @@
.FUNCT I-AIRLOCK-EMPTY
ZERO? AIRLOCK-FULL /?ELS5
FSET? AIRLOCK-HATCH,OPENBIT /FALSE
SET 'AIRLOCK-FULL,0
SET 'AIRLOCK-FULL,FALSE-VALUE
CRLF
PRINTI "The "
PRINTD AIRLOCK
@@ -227,7 +230,7 @@ A ramp swings down from the top of the "
PRINTI "."
CRLF
RETURN 2
?ELS5: SET 'AIRLOCK-FULL,1
?ELS5: SET 'AIRLOCK-FULL,TRUE-VALUE
CRLF
PRINTI "The "
PRINTD AIRLOCK
@@ -362,7 +365,7 @@ Doctor Walt Horvak, marine biologist and first-aid medic;
PRINTI "The "
PRINTD CREW-GLOBAL
CALL NOT-HERE-PERSON,CREW
SET 'P-CONT,0
SET 'P-CONT,FALSE-VALUE
RTRUE
?ELS5: EQUAL? PRSA,V?WALK-TO \?ELS11
CALL PERFORM,PRSA,CREW
@@ -412,10 +415,10 @@ Doctor Walt Horvak, marine biologist and first-aid medic;
EQUAL? PRSA,V?WAIT-UNTIL,V?WAIT-FOR /FALSE
IN? OXYGEN-GEAR,PLAYER \?THN8
FSET? OXYGEN-GEAR,ONBIT /FALSE
?THN8: PRINTI "You are having"
?THN8: PRINTI "You are having "
GRTR? 13,DOME-AIR-BAD? /?CND12
PRINTI " real"
?CND12: PRINTR " trouble breathing."
PRINTI "real "
?CND12: PRINTR "trouble breathing."
.FUNCT TIP-REPORTS?
@@ -432,7 +435,7 @@ Doctor Walt Horvak, marine biologist and first-aid medic;
FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS5
ZERO? DOME-AIR-BAD? \?CND6
SET 'DOME-AIR-BAD?,INITIAL-DOME-AIR-BAD
SET 'DOME-AIR-CRIME,1
SET 'DOME-AIR-CRIME,TRUE-VALUE
CALL QUEUE,I-DOME-AIR,-1
PUT STACK,0,1
CALL VISIBLE?,BLY >X
@@ -516,7 +519,7 @@ At this desperate moment, "
FSET SPECIAL-TOOL,TOUCHBIT
REMOVE SPECIAL-TOOL-GLOBAL
CALL FIX-AIR-SUPPLY
SET 'HORVAK-FIXED-AIR,1
SET 'HORVAK-FIXED-AIR,TRUE-VALUE
PRINTI ". He's clutching an oddly-shaped gadget.
"
CALL TIP-SAYS
@@ -545,9 +548,9 @@ At this desperate moment, "
?ELS89: PRINTI ". He "
LOC HORVAK
EQUAL? HERE,STACK \?ELS118
PUSH STR?74
PUSH STR?69
JUMP ?CND114
?ELS118: PUSH STR?65
?ELS118: PUSH STR?62
?CND114: PRINT STACK
PRINTI "s, ""I never wanted it to go this far! I sabotaged the "
PRINTD AIR-SUPPLY-SYSTEM
@@ -568,7 +571,7 @@ As Doc breaks down in tears and Bly suffocates, you realize there's no point in
PUT STACK,0,0
CALL QUEUE,I-ANTRIM-TO-SUB,10
PUT STACK,0,1
SET 'DOME-AIR-BAD?,0
SET 'DOME-AIR-BAD?,FALSE-VALUE
FSET? BLY,MUNGBIT \FALSE
FCLEAR BLY,MUNGBIT
FCLEAR GREENUP,MUNGBIT
@@ -620,7 +623,7 @@ As Doc breaks down in tears and Bly suffocates, you realize there's no point in
?ELS29: PRINTD BLY
PRINTR " and the others gather to shake your hand and wish you luck on your perilous mission."
?ELS22: ZERO? BLY-WELCOMED \FALSE
SET 'BLY-WELCOMED,1
SET 'BLY-WELCOMED,TRUE-VALUE
PRINTD BLY
PRINTI " says, """
CALL BLY-WELCOME
@@ -652,13 +655,13 @@ As Doc breaks down in tears and Bly suffocates, you realize there's no point in
EQUAL? EXCLAM-DOME-AIR-BAD,DOME-AIR-BAD? \FALSE
FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \FALSE
CRLF
CALL BADGES-RED,1
CALL BADGES-RED,TRUE-VALUE
RTRUE
.FUNCT BADGES-RED,SHOUT?=0
ZERO? BADGES-RED-SAID? \FALSE
SET 'BADGES-RED-SAID?,1
SET 'BADGES-RED-SAID?,TRUE-VALUE
ZERO? SHOUT? /?CND6
PRINTI "Someone shouts, "
?CND6: PRINTI """Our badges are turning red! The air's bad! Everyone use your "
@@ -674,15 +677,15 @@ As Doc breaks down in tears and Bly suffocates, you realize there's no point in
.FUNCT FROM-HERE,DIR1,DIR2
PRINTI "From here, you can go "
CALL DIR-PRINT,DIR1,0
CALL DIR-PRINT,DIR1,FALSE-VALUE
PRINTI " or "
CALL DIR-PRINT,DIR2,0
CALL DIR-PRINT,DIR2,FALSE-VALUE
PRINTR " into the building."
.FUNCT WOMENS-QUARTERS-F,RARG=0
EQUAL? RARG,M-LOOK \FALSE
CALL QUARTERS-F,WOMENS-QUARTERS,STR?75
CALL QUARTERS-F,WOMENS-QUARTERS,STR?70
RSTACK
@@ -694,7 +697,7 @@ As Doc breaks down in tears and Bly suffocates, you realize there's no point in
.FUNCT MENS-QUARTERS-F,RARG=0
EQUAL? RARG,M-LOOK \FALSE
CALL QUARTERS-F,MENS-QUARTERS,STR?76
CALL QUARTERS-F,MENS-QUARTERS,STR?71
RSTACK
@@ -744,7 +747,7 @@ As Doc breaks down in tears and Bly suffocates, you realize there's no point in
PRINTI ", that he will never willingly surrender it. You have no right to demand it without a search warrant. The "
PRINTD AQUADOME
PRINTR " is neither a military establishment nor a ship at sea, so you could get in legal trouble."
?ELS16: CALL HE-SHE-IT,WINNER,1,STR?77
?ELS16: CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?72
PRINTI ", "
CALL PRINT-NAME,FIRST-NAME
PRINTI ". Do not pursue this any further, or you will lose the respect and cooperation of the "
@@ -771,7 +774,7 @@ There must be some way! She doesn't do everything by the rule book. She even bre
"
FSET? SPECIAL-TOOL,TOUCHBIT \TRUE
PRINTI "
Well! Sounds as if "
Well! It sounds as if "
PRINTD HORVAK
PRINTI " found the answer to his problem by sabotaging the "
PRINTD AIR-SUPPLY-SYSTEM
@@ -832,13 +835,13 @@ Well! Sounds as if "
?CND17: ZERO? HORVAK-TOLD-AH \TRUE
FSET? DART,MUNGBIT \TRUE
FSET? HORVAK,BUSYBIT /TRUE
SET 'HORVAK-TOLD-AH,1
SET 'HORVAK-TOLD-AH,TRUE-VALUE
CRLF
PRINTD HORVAK
PRINTI " says:
"""
CALL PRINT-NAME,FIRST-NAME
PRINTI ", right after the Snark ceased its attack, I detected a high concentration of AH molecules in the "
PRINTI ", right after the Snark ceased its attack, I detected a high concentration of A.H. molecules in the "
PRINTD GLOBAL-WATER
PRINTI " around the "
PRINTD AQUADOME
@@ -855,12 +858,12 @@ Well! Sounds as if "
PRINTD CLAW
PRINTI "s.
But without knowing the creature's biochemistry, there's no guarantee the 'trank' will work. Shall I go ahead and make some up, anyhow?"""
CALL YES?
CALL YES? >MAGLOC
?CND31: CALL META-LOC,MAGAZINE >MAGLOC
CALL IN-DOME?,MAGLOC
ZERO? STACK /TRUE
CALL TIP-SAYS
PRINTI "Wait a minute! Wasn't there something about AH molecules in that "
PRINTI "Wait a minute! Wasn't there something about A.H. molecules in that "
PRINTD MAGAZINE
PRINTI "? Shall "
EQUAL? MAGLOC,HERE \?ELS43
@@ -876,7 +879,9 @@ But without knowing the creature's biochemistry, there's no guarantee the 'trank
PRINTI "Tip "
EQUAL? MAGLOC,HERE /?CND60
PRINTI "returns quickly and "
?CND60: PRINTI "hands you the magazine. "
?CND60: PRINTI "hands you the "
PRINTD MAGAZINE
PRINTI ". "
?CND55: CALL THIS-IS-IT,HORVAK
PRINTD HORVAK
PRINTR " looks interested. ""I'd like to see that."""
@@ -920,7 +925,7 @@ But without knowing the creature's biochemistry, there's no guarantee the 'trank
.FUNCT MICROPHONE-DOME-F
CALL MICROPHONE-F,1
CALL MICROPHONE-F,TRUE-VALUE
RSTACK
@@ -961,16 +966,16 @@ But without knowing the creature's biochemistry, there's no guarantee the 'trank
CALL EXIT-VERB?
ZERO? STACK /?ELS28
ZERO? GREENUP-ESCAPE /?ELS35
CALL HE-SHE-IT,WINNER,1
CALL HE-SHE-IT,WINNER,TRUE-VALUE
PRINTR "'d better stay here and trap Greenup."
?ELS35: FSET? SPECIAL-TOOL,INVISIBLE \FALSE
EQUAL? WINNER,PLAYER \FALSE
PRINTI "As you start to leave, you notice"
PRINTI "As you start to leave, you notice "
CALL SPECIAL-TOOL-VISIBLE
RSTACK
?ELS28: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \FALSE
FSET? SPECIAL-TOOL,INVISIBLE \FALSE
PRINTI "You find"
PRINTI "You find "
CALL SPECIAL-TOOL-VISIBLE
RSTACK
@@ -980,13 +985,13 @@ But without knowing the creature's biochemistry, there's no guarantee the 'trank
FSET SPECIAL-TOOL,TOUCHBIT
REMOVE SPECIAL-TOOL-GLOBAL
CALL THIS-IS-IT,SPECIAL-TOOL
PRINTI " an oddly shaped metallic object lying under Zoe's desk. It must be the "
PRINTI "an oddly shaped metallic object lying under Zoe's desk. It must be the "
PRINTD SPECIAL-TOOL
PRINTR "!"
.FUNCT ZOE-MENTIONS-EVIDENCE
SET 'ZOE-MENTIONED-EVIDENCE,1
SET 'ZOE-MENTIONED-EVIDENCE,TRUE-VALUE
MOVE TRAITOR,GLOBAL-OBJECTS
CALL THIS-IS-IT,EVIDENCE
CALL QUEUE,I-BLY-SAYS,6
@@ -1003,16 +1008,16 @@ But without knowing the creature's biochemistry, there's no guarantee the 'trank
PRINTD AQUADOME
PRINTI ", "
CALL PRINT-NAME,FIRST-NAME
PRINTI "!"
PRINTI "! "
ZERO? DOME-AIR-CRIME /?CND10
PRINTI " I'm not saying that just because the "
PRINTI "I'm not saying that just because the "
PRINTD AIR-SUPPLY-SYSTEM
PRINTI " had been sabotaged."
?CND10: PRINTI " I discovered "
PRINTI " was sabotaged. "
?CND10: PRINTI "I discovered "
ZERO? DOME-AIR-CRIME /?ELS22
PUSH STR?78
PUSH STR?73
JUMP ?CND18
?ELS22: PUSH STR?79
?ELS22: PUSH STR?74
?CND18: PRINT STACK
PRINTD EVIDENCE
PRINTI " after we talked on the "
@@ -1023,7 +1028,7 @@ But without knowing the creature's biochemistry, there's no guarantee the 'trank
.FUNCT BLY-DESK-F
EQUAL? PRSA,V?LOOK-UNDER \FALSE
FSET? SPECIAL-TOOL,TOUCHBIT /FALSE
PRINTI "There's"
PRINTI "There's "
CALL SPECIAL-TOOL-VISIBLE
RSTACK
@@ -1031,17 +1036,17 @@ But without knowing the creature's biochemistry, there's no guarantee the 'trank
.FUNCT BLACK-BOX-F
EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS5
FSET? BLACK-BOX,OPENBIT \?ELS10
SET 'BLACK-BOX-EXAMINED,1
SET 'BLACK-BOX-EXAMINED,TRUE-VALUE
PRINTI "After a brief study of the "
PRINTD BLACK-CIRCUITRY
PRINTR ", you deduce its purpose: it was designed to change the sonar output so the ultrasonic pulses make a more complex pattern (for example BURPETY-BURP-B'DURP) instead of just a simple, clear-cut BURP. This would also make fuzzier blips."
PRINTR ", you deduce its purpose: it was designed to change the sonar output so the ultrasonic pulses make a more complex pattern (for example BURPETY BURP B'DURP) instead of just a simple, clear-cut BURP. This would also make fuzzier blips."
?ELS10: PRINTR "You'll need a suitable tool to open its cover."
?ELS5: EQUAL? PRSA,V?OPEN-WITH,V?OPEN \FALSE
FSET? BLACK-BOX,OPENBIT \?ELS23
CALL ALREADY,BLACK-BOX,STR?23
CALL ALREADY,BLACK-BOX,STR?21
RSTACK
?ELS23: EQUAL? PRSI,UNIVERSAL-TOOL \?ELS25
CALL OKAY,BLACK-BOX,STR?23
CALL OKAY,BLACK-BOX,STR?21
RSTACK
?ELS25: PRINTI "You can't open it with"
ZERO? PRSI /?ELS32
@@ -1117,7 +1122,7 @@ But without knowing the creature's biochemistry, there's no guarantee the 'trank
PRINTD AIRLOCK-ROOF
PRINTI ": "
FSET? AIRLOCK-ROOF,OPENBIT \?ELS16
PUSH STR?23
PUSH STR?21
JUMP ?CND12
?ELS16: PUSH STR?17
?CND12: PRINT STACK
@@ -1237,13 +1242,9 @@ Tip reports that the part under his seat appears to be okay."
CALL THIS-IS-IT,ELECTROLYTE-RELAY
PRINTR "Something is lying at the base of the cylinder, just inside the housing."
?ELS24: PRINTR "There's a lot of complicated machinery inside."
?ELS19: PRINTI "The first thing you notice is a stenciled sign saying: ""To repair "
PRINTD AIR-SUPPLY-SYSTEM
PRINTI ", first open "
PRINTD ACCESS-PLATE
PRINTI " with "
PRINTD SPECIAL-TOOL
PRINTR " hanging on hook at right."" An arrow points to this hook."
?ELS19: PRINTI "The first thing you notice is a stenciled sign saying: "
CALL READ-AIR-SUPPLY
RSTACK
?ELS14: CALL TOO-FAR-AWAY,AIR-SUPPLY-SYSTEM
RSTACK
?ELS9: EQUAL? PRSA,V?WALK-TO,V?FIND \?ELS45
@@ -1257,6 +1258,16 @@ Tip reports that the part under his seat appears to be okay."
RTRUE
.FUNCT READ-AIR-SUPPLY
PRINTI """To repair "
PRINTD AIR-SUPPLY-SYSTEM
PRINTI ", first open "
PRINTD ACCESS-PLATE
PRINTI " with "
PRINTD SPECIAL-TOOL
PRINTR " hanging on hook at right."" An arrow points to this hook."
.FUNCT AIR-SUPPLY-VERB?
EQUAL? PRSA,V?YELL-FOR /?THN6
EQUAL? PRSA,V?TAKE,V?FIND,V?GIVE \?ELS5
@@ -1270,30 +1281,33 @@ Tip reports that the part under his seat appears to be okay."
.FUNCT ACCESS-PLATE-F
EQUAL? PRSA,V?EXAMINE \?ELS5
FSET? ACCESS-PLATE,OPENBIT \?ELS10
EQUAL? PRSA,V?READ \?ELS5
CALL READ-AIR-SUPPLY
RSTACK
?ELS5: EQUAL? PRSA,V?ANALYZE,V?EXAMINE \?ELS7
FSET? ACCESS-PLATE,OPENBIT \?ELS12
PRINTR "It's open."
?ELS10: PRINTI "It's held in place on the cylinder by curiously-shaped fram bolts, which no ordinary wrench will fit."
FSET AIR-SUPPLY-SYSTEM,TOUCHBIT
?ELS12: PRINTI "It's held in place on the cylinder by curiously-shaped fram bolts, which no ordinary wrench will fit."
FSET? AIR-SUPPLY-SYSTEM,TOUCHBIT /TRUE
PRINTI " To open it, you need a "
PRINTD SPECIAL-TOOL
PRINTR ", or something like it."
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS23
?ELS7: EQUAL? PRSA,V?LOOK-INSIDE \?ELS25
CALL PERFORM,PRSA,AIR-SUPPLY-SYSTEM,PRSI
RTRUE
?ELS23: EQUAL? PRSA,V?CLOSE \?ELS25
?ELS25: EQUAL? PRSA,V?CLOSE \?ELS27
FSET? ACCESS-PLATE,OPENBIT \?ELS32
FCLEAR ACCESS-PLATE,OPENBIT
CALL OKAY,AIR-SUPPLY-SYSTEM,STR?17
RSTACK
?ELS32: CALL ALREADY,AIR-SUPPLY-SYSTEM,STR?17
RSTACK
?ELS25: EQUAL? PRSA,V?TAKE-WITH,V?OPEN-WITH,V?OPEN \?ELS36
?ELS27: EQUAL? PRSA,V?TAKE-WITH,V?OPEN-WITH,V?OPEN \?ELS36
EQUAL? PRSI,SPECIAL-TOOL,UNIVERSAL-TOOL \?ELS36
FSET? ACCESS-PLATE,OPENBIT \?ELS43
CALL ALREADY,ACCESS-PLATE,STR?23
CALL ALREADY,ACCESS-PLATE,STR?21
RSTACK
?ELS43: CALL OKAY,ACCESS-PLATE,STR?23
?ELS43: CALL OKAY,ACCESS-PLATE,STR?21
FSET AIR-SUPPLY-SYSTEM,OPENBIT
FSET AIR-SUPPLY-SYSTEM,TOUCHBIT
CALL PERFORM,V?LOOK-INSIDE,AIR-SUPPLY-SYSTEM
@@ -1301,7 +1315,7 @@ Tip reports that the part under his seat appears to be okay."
RTRUE
?ELS36: EQUAL? PRSA,V?TAKE-WITH,V?TAKE,V?OPEN \FALSE
FSET? ACCESS-PLATE,OPENBIT \?ELS52
CALL ALREADY,ACCESS-PLATE,STR?23
CALL ALREADY,ACCESS-PLATE,STR?21
RSTACK
?ELS52: EQUAL? PRSI,SPECIAL-TOOL-GLOBAL \?ELS54
CALL NOT-HERE,PRSI
@@ -1333,7 +1347,7 @@ Tip reports that the part under his seat appears to be okay."
.FUNCT ARROW-F
EQUAL? PRSA,V?FOLLOW \FALSE
EQUAL? PRSA,V?ANALYZE,V?EXAMINE,V?FOLLOW \FALSE
PRINTR "It points to the hook."
@@ -1384,7 +1398,7 @@ Tip reports that the part under his seat appears to be okay."
FCLEAR ELECTROLYTE-RELAY,TAKEBIT
FSET ELECTROLYTE-RELAY,NDESCBIT
FCLEAR ELECTROLYTE-RELAY,MUNGBIT
PUTP ELECTROLYTE-RELAY,P?TEXT,STR?82
PUTP ELECTROLYTE-RELAY,P?TEXT,STR?77
RTRUE

235
dome.zil
View File

@@ -19,17 +19,17 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<PERFORM ,V?FIND ,PLAYER>
<RTRUE>)
(,SUB-IN-OPEN-SEA
%<XTELL
<TELL
"Its location is stored in the " D ,AUTO-PILOT "'s computer memory." CR>)
(<AND <NOT ,SUB-IN-DOME>
<NOT <==? ,NOW-TERRAIN ,SEA-TERRAIN>>>
%<XTELL
<TELL
"\"The " D ,AQUADOME " encloses the " ,URS " of " D
,IU-GLOBAL ", on the ocean floor off the Atlantic coast. Most " LN "
subs can reach it by " D ,AUTO-PILOT ".\"" CR>)>)
(<AND <VERB? EXAMINE> <NOT <L? ,DISTANCE-FROM-BAY ,AQUADOME-VISIBLE>>>
<SETG P-WON <>>
%<XTELL <GETP ,LOCAL-SUB ,P?TEXT> CR>)
<TELL <GETP ,LOCAL-SUB ,P?TEXT> CR>)
(<VERB? LOOK-INSIDE LOOK-OUTSIDE>
<PERFORM ,PRSA ,WINDOW>
<RTRUE>)
@@ -46,14 +46,14 @@ subs can reach it by " D ,AUTO-PILOT ".\"" CR>)>)
<PERFORM ,V?FIND ,PLAYER>
<RTRUE>)
(,SUB-IN-DOME
%<XTELL "You're in it!" CR>)
<TELL "You're in it!" CR>)
(,SUB-IN-OPEN-SEA ;<FSET? ,AUTO-PILOT ,ONBIT>
%<XTELL "Let the " D ,AUTO-PILOT " handle that." CR>)
(T %<XTELL "First you must reach the open sea." CR>)>)>>
<TELL "Let the " D ,AUTO-PILOT " handle that." CR>)
(T <TELL "First you must reach the open sea." CR>)>)>>
<ROUTINE IN-DOME? (RM)
<OR <AND ,SUB-IN-DOME <EQUAL? .RM ,SUB ,CRAWL-SPACE>>
<ZMEMQ .RM ,IN-DOME-AROUND>>>
<COND (<EQUAL? .RM ,SUB ,CRAWL-SPACE> ,SUB-IN-DOME)
(<ZMEMQ .RM ,IN-DOME-AROUND> T)>>
<ROUTINE AIR-ROOM? (RM)
<OR <EQUAL? .RM ,FOOT-OF-RAMP ,AIRLOCK ,AIRLOCK-WALL>
@@ -75,29 +75,29 @@ subs can reach it by " D ,AUTO-PILOT ".\"" CR>)>)
<ROUTINE WINDOW-F ("AUX" ;(RM <WINDOW-ROOM ,HERE ,PRSO>) POP)
<COND (<VERB? BRUSH>
%<XTELL
<TELL
"The window is clean enough without your interference." CR>)
(<VERB? EXAMINE>
%<XTELL
<TELL
"The window is a simple plastic sheet, giving a view of the dome outside."
CR>)
(<VERB? LOOK-INSIDE LOOK-OUTSIDE>
<COND (<0? ,SNARK-ATTACK-COUNT>
%<XTELL "You can see the dome outside." CR>)
<TELL "You can see the dome outside." CR>)
(T
;<MOVE-HERE-NOT-SUB ,BLY>
<MOVE ,BLY ,HERE>
%<XTELL ;" to the southeast"
<TELL ;" to the southeast"
"The " D ,AQUADOME "'s search lights probe the ocean, but
the " D ,GLOBAL-WATER " is too murky for the beams to penetrate.|
\"Tip's right!\" " D ,BLY " says. \"That must be the " D ,SNARK " out there.
Its tentacles churned up silt from the seabed that way during its first
attack, "FN"!\"" CR>)>)
(<VERB? MUNG>
%<XTELL
<TELL
"Vandalism is for vandals, not famous inventors!" CR>)
(<VERB? OPEN CLOSE LOCK UNLOCK>
%<XTELL "The window can't be opened." CR>)>>
<TELL "The window can't be opened." CR>)>>
<OBJECT EXERCISE-TRACK
(IN GLOBAL-OBJECTS)
@@ -134,10 +134,12 @@ attack, "FN"!\"" CR>)>)
<COND (<OR ,GREENUP-ESCAPE ,GREENUP-TRAPPED>
<MOVE ,LOWELL ,HERE>
<MOVE ,ANTRIM ,HERE>
%<XTELL "Two of the crew are with you." CR>)>)
<TELL "Two of the crew are with you." CR>)>)
(<==? .RARG ,M-LOOK>
<TELL "You're now in the " D ,AIRLOCK", at the foot of the ramp." CR>)
(.RARG <RFALSE>)
(<AND <REMOTE-VERB?> <NOT <VERB? THROUGH WALK-TO>>>
<RFALSE>)
(<AND <NOT ,SUB-IN-DOME> <NOT <SUB-OUTSIDE-AIRLOCK?>>>
<NOT-HERE ,AIRLOCK>)
(<VERB? EMPTY>
@@ -148,7 +150,7 @@ attack, "FN"!\"" CR>)>)
(<OR <EQUAL? ,HERE ,SUB ,CRAWL-SPACE>
<EQUAL? ,HERE ,BLY-OFFICE ,FOOT-OF-RAMP>>
<ENABLE <QUEUE I-AIRLOCK-EMPTY 2>>
%<XTELL "This will take 1 turn." CR>
<TELL "This will take 1 turn." CR>
;<COND (,GREENUP-ESCAPE
<COND (<G? 4 ,GREENUP-ESCAPE>
<TELL
@@ -193,11 +195,11 @@ CR>
<COND (<FSET? ,AIRLOCK-ROOF ,OPENBIT>
;<ENABLE <QUEUE I-DOME-FLOODED 2>>
<THIS-IS-IT ,AIRLOCK-ROOF>
%<XTELL
<TELL
"A safety mechanism prevents it. The " D ,AIRLOCK-ROOF " is open!" CR>
<RTRUE>)>)>
<COND (<AND ,GREENUP-ESCAPE <G? 4 ,GREENUP-ESCAPE>>
%<XTELL
<TELL
"Greenup is frantically scrambling back up the ladder to avoid being
swept off and drowned! ">
<GREENUP-CUFF>
@@ -206,7 +208,7 @@ swept off and drowned! ">
(<OR <EQUAL? ,HERE ,SUB ,CRAWL-SPACE>
<EQUAL? ,HERE ,BLY-OFFICE ,FOOT-OF-RAMP>>
<ENABLE <QUEUE I-AIRLOCK-EMPTY 2>>
%<XTELL "This will take 1 turn." CR>
<TELL "This will take 1 turn." CR>
<RTRUE>)>)
(<VERB? OPEN CLOSE>
;<COND (<VERB? FILL>
@@ -228,14 +230,14 @@ swept off and drowned! ">
<ZMEMQ ,HERE ,IN-DOME-AROUND>
<NOT <EQUAL? ,HERE ,AIRLOCK ,AIRLOCK-WALL>>>
<COND (<READY-FOR-SNARK?>
%<XTELL
<TELL
"Cheers follow as you start up the ladder into the " D ,AIRLOCK "." CR>)>)>>
<ROUTINE I-AIRLOCK-EMPTY ()
<COND (,AIRLOCK-FULL
<COND (<FSET? ,AIRLOCK-HATCH ,OPENBIT> <RFALSE>)>
<SETG AIRLOCK-FULL <>>
%<XTELL CR
<TELL CR
"The " D ,AIRLOCK " is now clear of " D ,GLOBAL-WATER " and filled with
air at sea-level pressure.">
<COND (<FSET? ,ENGINE ,ONBIT>
@@ -244,7 +246,7 @@ air at sea-level pressure.">
<COND (T ;<EQUAL? ,HERE ,SUB>
<FSET ,AIRLOCK-ROOF ,OPENBIT>
<THIS-IS-IT ,SUB-DOOR>
%<XTELL CR
<TELL CR
"The roof of the " D ,AIRLOCK " is sliding open, and the " D ,SUB
" is in dry dock.|
A ramp swings down from the top of the " D ,AIRLOCK "'s north wall to your "
@@ -252,7 +254,7 @@ D ,SUB-DOOR "." CR>
<RFATAL>)>)
(T
<SETG AIRLOCK-FULL T>
%<XTELL CR
<TELL CR
"The " D ,AIRLOCK " is now filled with " D ,GLOBAL-WATER "." CR>
<COND (,SUB-IN-DOME
<TELL
@@ -269,7 +271,7 @@ grip." CR>)>)>>
<ROUTINE GREENUP-LADDER-F ()
<COND (<VERB? BOARD ;ENTER CLIMB-DOWN CLIMB-ON CLIMB-UP THROUGH>
%<XTELL "The " D ,GREENUP-LADDER " is only for emergencies." CR>)>>
<TELL "The " D ,GREENUP-LADDER " is only for emergencies." CR>)>>
]
<OBJECT AIRLOCK-RAMP
(IN LOCAL-GLOBALS)
@@ -306,10 +308,10 @@ grip." CR>)>)>>
<ROUTINE AIRLOCK-WALL-F ("OPTIONAL" (ARG <>))
<COND (<==? .ARG ,M-LOOK>
%<XTELL
<TELL
"You're now atop the north wall of the " D ,AQUADOME "'s " D ,AIRLOCK "."
CR>
%<XTELL
<TELL
"This gives you a bird's-eye view of the whole " ,URS " of "
D ,IU-GLOBAL ".|
|
@@ -334,10 +336,10 @@ outside the " D ,AIRLOCK "'s north wall.|
<COND (<AND <CREW-5-TOGETHER?>
<IN? ,CREW ,FOOT-OF-RAMP>
<NOT <FSET? ,BLY ,MUNGBIT>>>
%<XTELL D ,BLY " and her five " D ,CREW " are">
<TELL D ,BLY " and her five " D ,CREW " are">
<COND (<NOT <FSET? ,FOOT-OF-RAMP ,TOUCHBIT>>
<TELL " waiting to greet you">)>
%<XTELL " at the foot of this ladder." CR>)>)>>
<TELL " at the foot of this ladder." CR>)>)>>
<OBJECT AIRLOCK-LADDER
(IN LOCAL-GLOBALS)
@@ -371,7 +373,7 @@ outside the " D ,AIRLOCK "'s north wall.|
<IOBJ? CREW CREW-GLOBAL>>
<AND <VERB? WHAT> <DOBJ? CREW CREW-GLOBAL>>
<AND <VERB? TELL-ABOUT> <DOBJ? PLAYER>>>>
%<XTELL
<TELL
"\"The crew consists of:|
Doctor Walt Horvak, marine biologist and first-aid medic;|
" D ,ANTRIM ", laser expert and frogman;|
@@ -386,10 +388,10 @@ Doctor Walt Horvak, marine biologist and first-aid medic;|
<TELL D ,PRSO " nods at you." CR>)
(<VERB? DIAGNOSE EXAMINE>
<COND (,DOME-AIR-BAD?
%<XTELL
<TELL
D ,BLY " and the two divers, Greenup and Lowell, are without
oxygen." CR>)
(T %<XTELL "All the crew members are okay now." CR>)>)>>
(T <TELL "All the crew members are okay now." CR>)>)>>
<OBJECT CREW-GLOBAL
(IN GLOBAL-OBJECTS)
@@ -448,11 +450,11 @@ oxygen." CR>)
<ROUTINE EXAMINE-BADGE ()
<COND (,DOME-AIR-BAD?
<COND (<FSET? ,AIR-SUPPLY-SYSTEM ,MUNGBIT>
%<XTELL
<TELL
"The badge is turning red! The air is becoming unbreathable!">)
(T %<XTELL
(T <TELL
"The badge is less red now. The air is improving.">)>)
(T %<XTELL
(T <TELL
"When a badge turns red, the air is no longer breathable.
It's not red now.">)>>
@@ -470,17 +472,17 @@ It's not red now.">)>>
(<NOT <FSET? ,AIR-SUPPLY-SYSTEM ,MUNGBIT>> <RFALSE>)
(<AIR-SUPPLY-VERB?> <RFALSE>)
(T
%<XTELL "Shouldn't you fix the " D ,AIR-SUPPLY-SYSTEM " first?" CR>)>>
<TELL "Shouldn't you fix the " D ,AIR-SUPPLY-SYSTEM " first?" CR>)>>
<ROUTINE TROUBLE-BREATHING? ()
<COND (<VERB? WAIT-FOR WAIT-UNTIL>
<RFALSE>)
(<OR <NOT <IN? ,OXYGEN-GEAR ,PLAYER>>
<NOT <FSET? ,OXYGEN-GEAR ,ONBIT>>>
<TELL "You are having">
<TELL "You are having ">
<COND (<NOT <G? 13 ,DOME-AIR-BAD?>>
<TELL " real">)>
<TELL " trouble breathing." CR>)>>
<TELL "real ">)>
<TELL "trouble breathing." CR>)>>
<ROUTINE TIP-REPORTS? ()
<COND (<AND <NOT <==? ,HERE ,CENTER-OF-DOME>>
@@ -517,17 +519,17 @@ Everyone">
<SETG DOME-AIR-BAD? <+ 1 ,DOME-AIR-BAD?>>
;<COND (,DEBUG <TELL "[Air=" N ,DOME-AIR-BAD? "]" CR>)>
<COND (<==? 7 ,DOME-AIR-BAD?>
%<XTELL CR
<TELL CR
"In 10 turns Bly, Greenup and Lowell, who were not carrying "
D ,OXYGEN-GEAR ", will suffocate from
lack of oxygen. In 20 turns, ">
<COND (<IN? ,OXYGEN-GEAR ,PLAYER> <TELL "you and the others">)
(T <TELL "those">)>
%<XTELL
<TELL
" who do have " D ,OXYGEN-GEAR " will have exhausted their supply of
oxygen. Need we say more?" CR>)
(<==? 13 ,DOME-AIR-BAD?>
%<XTELL CR
<TELL CR
"Zoe Bly and the two crew members without " D ,OXYGEN-GEAR " now
have only 4 TURNS left to live! Their lives depend on you, " FN "!" CR>
<COND (<AND <NOT <FSET? ,ACCESS-PLATE ,OPENBIT>>
@@ -539,12 +541,12 @@ have only 4 TURNS left to live! Their lives depend on you, " FN "!" CR>
<COND (<NOT <IN? ,TIP ,HERE>>
<MOVE ,TIP ,HERE>
<TELL " runs up and">)>
%<XTELL
<TELL
" gives you a " D ,UNIVERSAL-TOOL " and says, \"Here, " FN>
<COND (<FSET? ,CENTER-OF-DOME ,TOUCHBIT>
%<XTELL
<TELL
", open the cylinder with this! It'll fit anything!\"" CR>)
(T %<XTELL
(T <TELL
", maybe you can use this somehow.\"" CR>)>)>
<RTRUE>)
(<==? 17 ,DOME-AIR-BAD?>
@@ -564,7 +566,7 @@ At this desperate moment, ">
<REMOVE ,SPECIAL-TOOL-GLOBAL>
<FIX-AIR-SUPPLY>
<SETG HORVAK-FIXED-AIR T>
%<XTELL
<TELL
". He's clutching an oddly-shaped gadget.|
">
<TIP-SAYS>
@@ -582,7 +584,7 @@ D ,ACCESS-PLATE ". ">)>
fallen out of its socket. Horvak">
<COND (<NOT <IN? ,ELECTROLYTE-RELAY ,HORVAK>>
<TELL " takes it and">)>
%<XTELL
<TELL
" screws it back in place; and within seconds, a fresh supply of oxygen
is flowing out into the " D ,AQUADOME "." CR>)
(T
@@ -617,7 +619,7 @@ point in continuing your mission.">
<TELL CR
D ,HORVAK " has just returned from the " D ,BLY-OFFICE ", where he went
to get Bly's " D ,OXYGEN-GEAR ", but it's no longer needed." CR>)>
%<XTELL CR
<TELL CR
D ,BLY " is sitting up and her normal color has returned. Ditto
for Greenup and Lowell, who collapsed. All are recovering from their
temporary lack of air." CR>
@@ -657,9 +659,9 @@ temporary lack of air." CR>
<MOVE ,SIEGEL ,HERE>
<MOVE ,LOWELL ,HERE>
<COND (<OR ,GREENUP-ESCAPE ,GREENUP-TRAPPED>
%<XTELL
<TELL
"The rest of the " D ,CREW " are with you." CR>)
(T %<XTELL
(T <TELL
D ,BLY " and the others gather to shake your hand and wish you
luck on your perilous mission." CR>)>)
(<NOT ,BLY-WELCOMED>
@@ -674,16 +676,16 @@ luck on your perilous mission." CR>)>)
<COND (<NOT <FSET? ,CREW ,TOUCHBIT>>
<FSET ,CREW ,TOUCHBIT>
<ENABLE <QUEUE I-BLY-PRIVATELY 15>>
%<XTELL
<TELL
"You're now face-to-face with Zoe Bly and the " D ,CREW ". They are wearing
badges which show the air quality in the " D ,AQUADOME "." CR>)
(T
%<XTELL "You're at the foot of the ladder. ">
<TELL "You're at the foot of the ladder. ">
<COND (<IN? ,BLY ,FOOT-OF-RAMP>
<TELL "Zoe Bly and t">)
(T <TELL "T">)>
%<XTELL "he " D ,CREW " are still here." CR>)>)
(T %<XTELL
<TELL "he " D ,CREW " are still here." CR>)>)
(T <TELL
"You're now at the foot of the ladder." CR>)>)
(<AND <==? .ARG ,M-END>
<==? ,EXCLAM-DOME-AIR-BAD ,DOME-AIR-BAD?>
@@ -697,7 +699,7 @@ badges which show the air quality in the " D ,AQUADOME "." CR>)
<COND (<NOT ,BADGES-RED-SAID?>
<SETG BADGES-RED-SAID? T>
<COND (.SHOUT? <TELL "Someone shouts, ">)>
%<XTELL
<TELL
"\"Our badges are turning red! The air's bad! Everyone use your "
D ,OXYGEN-GEAR "!\"" CR>)>>
@@ -829,7 +831,7 @@ bunk and locker. In the center of the room are a table and chairs." CR>>
<ROUTINE HORVAK-LOCKER-F ()
<COND (<AND <VERB? LOOK-INSIDE> <FSET? ,HORVAK-LOCKER ,OPENBIT>>
%<XTELL
<TELL
"The locker contains mostly clothing, toilet articles and books.">
<COND (<IN? ,DIARY ,HORVAK-LOCKER>
<TELL " One of the books is labeled DIARY.">
@@ -843,7 +845,7 @@ bunk and locker. In the center of the room are a table and chairs." CR>>
(<AND <FSET? ,HORVAK-LOCKER ,LOCKED>
<NOT <IOBJ? UNIVERSAL-TOOL>>>
<THIS-IS-IT ,HORVAK-KEY>
%<XTELL
<TELL
"It's locked. The normal way to open its lock (which you yourself designed, " FN ") is with a key." CR>
<RTRUE>)>
<FCLEAR ,HORVAK-LOCKER ,LOCKED>
@@ -864,14 +866,14 @@ bunk and locker. In the center of the room are a table and chairs." CR>>
<COND (<OR <AND <IOBJ? HORVAK> <VERB? TAKE>>
<AND <DOBJ? HORVAK> <VERB? ASK-FOR SEARCH-FOR>>>
<COND (<==? ,WINNER ,PLAYER>
%<XTELL
<TELL
"Be warned, " FN ", that he will never willingly surrender it.
You have no right to demand it without a search warrant.
The " D ,AQUADOME " is neither a military establishment
nor a ship at sea, so you could get in legal trouble." CR>)
(T
<HE-SHE-IT ,WINNER T "refuse">
%<XTELL
<TELL
", " FN ". Do not pursue this any further, or you will lose the
respect and cooperation of the " D ,CREW ", and thereby abort your rescue
mission. If you attempt to use force, they may even mutiny and place you
@@ -891,12 +893,12 @@ under arrest." CR>)>)>>
;<ENABLE <QUEUE I-TIP-SONAR-PLAN -1>>
<FSET ,DIARY ,OPENBIT>
<MOVE ,PHOTO ,HERE>
%<XTELL
<TELL
"As you do so, a picture falls out. Oh, oh! It's a snapshot of Zoe Bly!" CR>)
(<VERB? READ LOOK-INSIDE>
<COND (<NOT <FSET? ,DIARY ,OPENBIT>>
%<XTELL "You must open it first." CR>)
(T %<XTELL
<TELL "You must open it first." CR>)
(T <TELL
"You quickly discover references to Zoe Bly. It seems clear that "
D ,HORVAK " has fallen for Zoe. But her unsentimental manner is a
large obstacle.|
@@ -911,7 +913,7 @@ only a human being, but a warm, desirable woman...!\"|
">
<COND (<FSET? ,SPECIAL-TOOL ,TOUCHBIT> ;,DOME-AIR-CRIME
<TELL "|
Well! Sounds as if " D ,HORVAK " found the answer to his problem
Well! It sounds as if " D ,HORVAK " found the answer to his problem
by sabotaging the " D ,AIR-SUPPLY-SYSTEM " -- at a time when " D ,BLY
" was breaking regulations by not wearing her " D ,OXYGEN-GEAR
"!" CR>)>
@@ -988,7 +990,7 @@ It contains assorted hand tools, machine tools, and spare parts." CR>)>>
<ROUTINE WORKSHOP-STUFF-F ()
<COND (<VERB? MAKE>
%<XTELL
<TELL
"That's too difficult, even for a famous young inventor." CR>)>>
<OBJECT DOME-LAB-DOOR
@@ -1034,26 +1036,26 @@ research. ">
<FSET? ,HORVAK ,BUSYBIT>>
<RTRUE>)>
<SETG HORVAK-TOLD-AH T>
%<XTELL CR
<TELL CR
D ,HORVAK " says:|
\"" FN ", right after the Snark ceased
its attack, I detected a high concentration of AH molecules in the
its attack, I detected a high concentration of A.H. molecules in the
" D ,GLOBAL-WATER " around the " D ,AQUADOME ". Have you ever heard of such a
phenomenon before?\"">
<COND (<NOT <YES?>>
%<XTELL
<TELL
"\"I can make up an intense tranquilizer to subdue the " D ,SNARK ",\" "
D ,HORVAK " continues. \"You could use one of our aquatic dart
guns to inject it into the creature. You could mount the gun
on one of the " D ,SUB "'s " D ,CLAW "s.|
But without knowing the creature's biochemistry, there's no guarantee the
'trank' will work. Shall I go ahead and make some up, anyhow?\"">
<YES?>)>
<SET MAGLOC <YES?>>)>
<SET MAGLOC <META-LOC ,MAGAZINE>>
<COND (<NOT <IN-DOME? .MAGLOC>> <RTRUE>)>
<TIP-SAYS>
%<XTELL
"Wait a minute! Wasn't there something about AH
<TELL
"Wait a minute! Wasn't there something about A.H.
molecules in that " D ,MAGAZINE "? Shall ">
<COND (<EQUAL? .MAGLOC ,HERE>
<TELL "we">)
@@ -1066,8 +1068,8 @@ molecules in that " D ,MAGAZINE "? Shall ">
<MOVE ,MAGAZINE ,PLAYER>
<TELL "Tip ">
<COND (<NOT <EQUAL? .MAGLOC ,HERE>>
%<XTELL "returns quickly and ">)>
<TELL "hands you the magazine. ">)>
<TELL "returns quickly and ">)>
<TELL "hands you the " D ,MAGAZINE ". ">)>
<THIS-IS-IT ,HORVAK>
<TELL
D ,HORVAK " looks interested. \"I'd like to see that.\"" CR>)>
@@ -1128,7 +1130,7 @@ detecting objects in the " D ,GLOBAL-WATER " around the dome." CR>)>>
(DESC "Aquadome sonar equipment")
(ADJECTIVE AQUADOME SONAR)
(SYNONYM SONAR SYSTEM EQUIPM SCREEN ;TRANSDUCER)
(FLAGS SURFACEBIT ;CONTBIT OPENBIT ONBIT ;ON?BIT VOWELBIT NDESCBIT NARTICLEBIT)
(FLAGS SURFACEBIT OPENBIT ONBIT ;ON?BIT VOWELBIT NDESCBIT NARTICLEBIT)
(CAPACITY 19)
(ACTION SONAR-EQUIPMENT-F)>
@@ -1236,20 +1238,20 @@ and a good view of the ocean through the " D ,WINDOW "." CR>)
<NOT ,GREENUP-CUFFED>
<NOT ,ZOE-MENTIONED-EVIDENCE>>
<FCLEAR ,BLY ,NDESCBIT>
%<XTELL "As you enter the office, ">
<TELL "As you enter the office, ">
<ZOE-MENTIONS-EVIDENCE>)
(<AND ,GREENUP-ESCAPE <NOT <IN? ,BLY ,BLY-OFFICE>>>
<MOVE ,BLY ,BLY-OFFICE>
%<XTELL "Zoe comes with you." CR>)>)
<TELL "Zoe comes with you." CR>)>)
(<AND <==? .ARG ,M-BEG> <EXIT-VERB?>>
<COND (,GREENUP-ESCAPE
<HE-SHE-IT ,WINNER T>
%<XTELL "'d better stay here and trap Greenup." CR>)
<TELL "'d better stay here and trap Greenup." CR>)
(<AND <FSET? ,SPECIAL-TOOL ,INVISIBLE> <==? ,WINNER ,PLAYER>>
<TELL "As you start to leave, you notice">
<TELL "As you start to leave, you notice ">
<SPECIAL-TOOL-VISIBLE>)>)
(<AND <VERB? SEARCH SEARCH-FOR> <FSET? ,SPECIAL-TOOL ,INVISIBLE>>
<TELL "You find">
<TELL "You find ">
<SPECIAL-TOOL-VISIBLE>)>>
<ROUTINE SPECIAL-TOOL-VISIBLE ()
@@ -1257,8 +1259,8 @@ and a good view of the ocean through the " D ,WINDOW "." CR>)
<FSET ,SPECIAL-TOOL ,TOUCHBIT>
<REMOVE ,SPECIAL-TOOL-GLOBAL>
<THIS-IS-IT ,SPECIAL-TOOL>
%<XTELL
" an oddly shaped metallic object lying under Zoe's desk. It must
<TELL
"an oddly shaped metallic object lying under Zoe's desk. It must
be the " D ,SPECIAL-TOOL "!" CR>>
<ROUTINE ZOE-MENTIONS-EVIDENCE ()
@@ -1272,13 +1274,13 @@ be the " D ,SPECIAL-TOOL "!" CR>>
<COND (<FSET? ,BLY-DOOR ,OPENBIT>
<FCLEAR ,BLY-DOOR ,OPENBIT>
<TELL " closes the door and">)>
%<XTELL " says:|
\"There's a " D ,TRAITOR " here at the " D ,AQUADOME ", " FN "!">
<TELL " says:|
\"There's a " D ,TRAITOR " here at the " D ,AQUADOME ", " FN "! ">
<COND (,DOME-AIR-CRIME
%<XTELL
" I'm not saying that just because the " D ,AIR-SUPPLY-SYSTEM
" had been sabotaged.">)>
<TELL " I discovered "
<TELL
"I'm not saying that just because the " D ,AIR-SUPPLY-SYSTEM
" was sabotaged. ">)>
<TELL "I discovered "
<COND (,DOME-AIR-CRIME "other ") (T "the ")>
D ,EVIDENCE " after we talked on the " D ,VIDEOPHONE
"!\"" CR>>
@@ -1296,7 +1298,7 @@ be the " D ,SPECIAL-TOOL "!" CR>>
<ROUTINE BLY-DESK-F ()
<COND (<VERB? LOOK-UNDER>
<COND (<NOT <FSET? ,SPECIAL-TOOL ,TOUCHBIT>>
<TELL "There's">
<TELL "There's ">
<SPECIAL-TOOL-VISIBLE>
;<RFALSE>)>)>>
@@ -1315,13 +1317,13 @@ be the " D ,SPECIAL-TOOL "!" CR>>
<COND (<VERB? EXAMINE LOOK-INSIDE>
<COND (<FSET? ,BLACK-BOX ,OPENBIT>
<SETG BLACK-BOX-EXAMINED T>
%<XTELL
<TELL
"After a brief study of the " D ,BLACK-CIRCUITRY
", you deduce its purpose: it was
designed to change the sonar output so the ultrasonic pulses make a more
complex pattern (for example BURPETY-BURP-B'DURP) instead of just a simple,
complex pattern (for example BURPETY BURP B'DURP) instead of just a simple,
clear-cut BURP. This would also make fuzzier blips." CR>)
(T %<XTELL
(T <TELL
"You'll need a suitable tool to open its cover." CR>)>)
(<VERB? OPEN OPEN-WITH>
<COND (<FSET? ,BLACK-BOX ,OPENBIT>
@@ -1357,13 +1359,13 @@ clear-cut BURP. This would also make fuzzier blips." CR>)
<COND (,GREENUP-ESCAPE
<ENABLE <QUEUE I-GREENUP-ESCAPE -1>>
<COND (<EQUAL? ,GREENUP-ESCAPE 1>
%<XTELL
<TELL
"The monitor screen shows Greenup's head just coming into view
above the top of the " D ,AIRLOCK
"'s west wall, as he climbs the outside ladder.|
">
<COND (<NOT <FSET? ,AIRLOCK-ROOF ,OPENBIT>>
%<XTELL
<TELL
"But since the " D ,AIRLOCK-ROOF " is closed,
Greenup can't get into the " D ,SUB " to escape. ">
<GREENUP-CUFF>
@@ -1372,7 +1374,7 @@ Greenup can't get into the " D ,SUB " to escape. ">
"Once he reaches the top of this wall, he will come down the inside
ladder to the " D ,SUB "." CR>)>)
(T <RTRUE> ;"output from I-GREENUP-ESCAPE")>)
(T %<XTELL
(T <TELL
D ,BLY " uses this monitor to check on activities in the " D ,AQUADOME "."
CR>)>)>>
@@ -1391,7 +1393,7 @@ CR>)>)>>
(<VERB? LAMP-OFF>
<COND (<AND ,GREENUP-ESCAPE ;<G? 5 ,GREENUP-ESCAPE>>
<FCLEAR ,AIRLOCK-ELECTRICITY ,ONBIT>
%<XTELL
<TELL
"Very good, " FN "! With the " D ,AIRLOCK-ELECTRICITY " off, the " D
,AIRLOCK-HATCH " won't respond to command signals from the " D ,SUB "
and will remain closed.|
@@ -1412,7 +1414,7 @@ and will remain closed.|
<PERFORM ,V?LAMP-OFF ,AIRLOCK-ELECTRICITY>
<RTRUE>)
(<VERB? ANALYZE EXAMINE READ>
%<XTELL
<TELL
"MAIN OPERATING CONTROLS:|
">
<FIXED-FONT-ON>
@@ -1480,7 +1482,7 @@ want to find something, you'll have to search for it." CR>>
<NOT-HERE ,ESCAPE-POD-UNIT>)
(<IN? ,ESCAPE-POD-UNIT ,SUB>
<COND (<VERB? ANALYZE EXAMINE>
%<XTELL
<TELL
"A brief inspection under your seat leads to a horrifying discovery! A
body-heat sensor was substituted for the electronic monitor, and a wire
leads from the sensor to ">
@@ -1571,7 +1573,7 @@ But is this output good, breathable oxygen?" CR>)>)>>
<OBJECT AIR-SUPPLY-SYSTEM-GLOBAL
(IN LOCAL-GLOBALS)
(DESC "Air Supply System")
(ADJECTIVE AIR OXYGEN SUPPLY)
(ADJECTIVE AIR OXYGEN SUPPLY AQUADOME DOME STATION)
(SYNONYM SUPPLY SYSTEM CYLINDER HOUSING)
(FLAGS VOWELBIT)
(ACTION AIR-SUPPLY-SYSTEM-F)>
@@ -1579,7 +1581,7 @@ But is this output good, breathable oxygen?" CR>)>)>>
<OBJECT AIR-SUPPLY-SYSTEM
(IN CENTER-OF-DOME)
(DESC "Air Supply System")
(ADJECTIVE AIR OXYGEN SUPPLY)
(ADJECTIVE AIR OXYGEN SUPPLY AQUADOME DOME STATION)
(SYNONYM SUPPLY SYSTEM CYLINDER SIGN ;HOUSING)
(FLAGS NDESCBIT VOWELBIT CONTBIT ;SEARCHBIT MUNGBIT READBIT)
(CAPACITY 9)
@@ -1598,16 +1600,14 @@ But is this output good, breathable oxygen?" CR>)>)>>
Something has been unscrewed from this space!" CR>
<COND(<IN? ,ELECTROLYTE-RELAY ,AIR-SUPPLY-SYSTEM>
<THIS-IS-IT ,ELECTROLYTE-RELAY>
%<XTELL
<TELL
"Something is lying at the base of the cylinder, just inside the
housing." CR>)>)
(T <TELL
"There's a lot of complicated machinery inside." CR>)>)
(T <TELL
"The first thing you notice is a stenciled sign saying: \"To repair "
D ,AIR-SUPPLY-SYSTEM ", first open " D ,ACCESS-PLATE " with "
D ,SPECIAL-TOOL " hanging on hook at right.\" An arrow points to this
hook." CR>)>)
"The first thing you notice is a stenciled sign saying: ">
<READ-AIR-SUPPLY>)>)
(T <TOO-FAR-AWAY ,AIR-SUPPLY-SYSTEM>)>)
(<VERB? FIND WALK-TO>
<COND (<DOBJ? AIR-SUPPLY-SYSTEM-GLOBAL>
@@ -1625,6 +1625,12 @@ CR>)
"May we suggest that the best way to find out about the system is to
examine it." CR>)>>
<ROUTINE READ-AIR-SUPPLY ()
<TELL
"\"To repair " D ,AIR-SUPPLY-SYSTEM ", first open " D ,ACCESS-PLATE "
with " D ,SPECIAL-TOOL " hanging on hook at right.\" An arrow points to
this hook." CR>>
<ROUTINE AIR-SUPPLY-VERB? ()
<COND (<VERB? GIVE FIND TAKE YELL-FOR>
<COND (<DOBJ? UNIVERSAL-TOOL SPECIAL-TOOL SPECIAL-TOOL-GLOBAL
@@ -1645,20 +1651,22 @@ examine it." CR>)>>
(ACTION ACCESS-PLATE-F)>
<ROUTINE ACCESS-PLATE-F ()
<COND (<VERB? EXAMINE>
<COND (<VERB? READ>
<READ-AIR-SUPPLY>)
(<VERB? EXAMINE ANALYZE>
<COND (<FSET? ,ACCESS-PLATE ,OPENBIT> <TELL "It's open." CR>)
(T
<TELL
"It's held in place on the cylinder by curiously-shaped fram bolts, which
no ordinary wrench will fit.">
<COND (<NOT <FSET ,AIR-SUPPLY-SYSTEM ,TOUCHBIT>>
<COND (<NOT <FSET? ,AIR-SUPPLY-SYSTEM ,TOUCHBIT>>
<TELL
" To open it, you need a " D ,SPECIAL-TOOL ", or something like it." CR>)>
<RTRUE>)>)
(<VERB? LOOK-INSIDE>
<PERFORM ,PRSA ,AIR-SUPPLY-SYSTEM ,PRSI>
<RTRUE>)
(<AND <VERB? CLOSE>>
(<VERB? CLOSE>
<COND (<FSET? ,ACCESS-PLATE ,OPENBIT>
<FCLEAR ,ACCESS-PLATE ,OPENBIT>
<OKAY ,AIR-SUPPLY-SYSTEM "closed">)
@@ -1678,7 +1686,7 @@ no ordinary wrench will fit.">
<COND (<FSET? ,ACCESS-PLATE ,OPENBIT>
<ALREADY ,ACCESS-PLATE "open">)
(<IOBJ? SPECIAL-TOOL-GLOBAL> <NOT-HERE ,PRSI> <RTRUE>)
(T %<XTELL
(T <TELL
"You can't remove" THE-PRSO " with your bare hands!" CR>)>)>>
<OBJECT HOOK
@@ -1692,14 +1700,14 @@ no ordinary wrench will fit.">
<ROUTINE HOOK-F ()
<COND (<NOT <FIRST? ,HOOK>>
<COND (<VERB? EXAMINE LOOK-ON>
%<XTELL "There's nothing hanging on the " D ,HOOK "." CR>)
<TELL "There's nothing hanging on the " D ,HOOK "." CR>)
(<VERB? PUT>
<COND (<DOBJ? SPECIAL-TOOL ;UNIVERSAL-TOOL>
<MOVE ,PRSO ,HOOK>
<TELL "Okay." CR>)
(T <TELL "It won't fit on the " D ,HOOK "." CR>)>)>)
(<VERB? EXAMINE LOOK-ON>
%<XTELL "There's " A ,SPECIAL-TOOL " hanging on the " D ,HOOK"."CR>)>>
<TELL "There's " A ,SPECIAL-TOOL " hanging on the " D ,HOOK"."CR>)>>
<OBJECT ARROW
(IN CENTER-OF-DOME)
@@ -1709,7 +1717,7 @@ no ordinary wrench will fit.">
(ACTION ARROW-F)>
<ROUTINE ARROW-F ()
<COND (<VERB? FOLLOW> <TELL "It points to the hook." CR>)>>
<COND (<VERB? FOLLOW EXAMINE ANALYZE> <TELL "It points to the hook." CR>)>>
<OBJECT SPECIAL-TOOL-GLOBAL
(DESC "special Fram Bolt Wrench")
@@ -1737,7 +1745,7 @@ no ordinary wrench will fit.">
<ROUTINE ELECTROLYTE-RELAY-F ()
<COND (<VERB? TAKE>
<COND (<NOT <FSET? ,PRSO ,TAKEBIT>>
%<XTELL
<TELL
"What!? You don't want to spoil the " D ,AIR-SUPPLY-SYSTEM " again!" CR>)>)
(<REMOTE-VERB?> <RFALSE>)
(<NOT-HOLDING? ,ELECTROLYTE-RELAY>
@@ -1749,7 +1757,7 @@ no ordinary wrench will fit.">
"It looks as if the " D ,ELECTROLYTE-RELAY " fits perfectly into the "
D ,EMPTY-SPACE "." CR>)
(<VERB? EXAMINE>
%<XTELL
<TELL
"It has screw threads and, judging by its size and shape, it should
screw very neatly into that " D ,EMPTY-SPACE " in the "
D ,AIR-SUPPLY-SYSTEM " assembly." CR>)
@@ -1759,8 +1767,7 @@ D ,AIR-SUPPLY-SYSTEM " assembly." CR>)
<TOO-BAD-BUT ,ACCESS-PLATE "closed">
<RTRUE>)>
<FIX-AIR-SUPPLY>
%<XTELL
"It fits!" ;" (And, by the way, congratulations, ' FN '!)" CR>
<TELL "It fits!" CR>
<SCORE-OBJ ,ACCESS-PLATE>
<RTRUE>)>>
@@ -1788,7 +1795,7 @@ D ,AIR-SUPPLY-SYSTEM " assembly." CR>)
"Sorry, but" THE-PRSO " won't stay unless you screw it in." CR>)>>
<GLOBAL IN-DOME-AROUND
<LTABLE FOOT-OF-RAMP OUTSIDE-ADMIN-BLDG OUTSIDE-COMM-BLDG OUTSIDE-WORKSHOP
<PLTABLE FOOT-OF-RAMP OUTSIDE-ADMIN-BLDG OUTSIDE-COMM-BLDG OUTSIDE-WORKSHOP
OUTSIDE-DORM FOOT-OF-RAMP ;"preceding for WALK AROUND DOME"
AIRLOCK AIRLOCK-WALL CENTER-OF-DOME BLY-OFFICE DOME-STORAGE
COMM-BLDG GALLEY WORKSHOP DOME-LAB WOMENS-QUARTERS MENS-QUARTERS>>

97
events.mss Normal file
View File

@@ -0,0 +1,97 @@
@style (spacing 1)
@title (Events in the Aquadome)
@pageheading(DRAFT)
@majorheading (EVENTS IN THE AQUADOME)
Events in the Aquadome fall into several sequences.
The program can step through several sequences concurrently.
For convenience, let's call
them by letters, and let's call the beginning of each sequence "turn zero."
Note: "he" never refers to Player, since Player's gender is unpredictable.
@heading (A. The air supply)
This sequence stops if and when Player fixes the air supply.
@begin (itemize)
0. Player debarks from the @I(Scimitar).
11. Player realizes that Zoe (or Tip, if Zoe is not visible) is having trouble
breathing.
(If Player asks Bly about the "private matter" before this turn,
then Antrim explodes angrily, and this sequence begins at this turn.)
17. First reminder appears on screen, giving 10-turn deadline.
23. Second reminder appears, giving 4-turn deadline, and Tip offers Player
Universal Tool if he hasn't before now.
27. At the last moment, Doc Horvak runs up and saves the day.
30. Zoe Bly asks Player for a private talk, and then again every 3 turns
until Player agrees.
@end (itemize)
@heading (P. Bly's private matter)
Zoe has perhaps already mentioned a "private matter" over the
sonarphone while Player was in the @I(Scimitar).
@begin (itemize)
0. Player enters Reception Area for first time.
15. If Player hasn't asked her about the private matter, she asks Player
directly, both now and every 3 turns after this. If Player assents or
asks her about it directly: if the air supply hasn't been fixed, then
Antrim explodes angrily, and sequence "A" begins at turn 11.
X. (The timing is unpredictable.)
Player enters Bly's office for the private discussion. She shows Player
the "black box" (see sequence "S").
X+6. Bly reminds Player that the Snark may return and asks if she may ask
Player some questions. If Player assents, she asks about
the @I(Scimitar) and lists Player's options for weapons; if not, this
"event" repeats after 3 turns.
@end (itemize)
@heading (S. Siegel's work on sonar)
This sequence begins when Bly shows Player the "black box." The next time
Player and Tip are alone, he says he has an idea for testing Marv.
(He also reminds Player, if necessary, to look in the black box.)
@begin (itemize)
0. Player asks Siegel directly to check the sonar.
Or Player asks Bly to give Siegel a job, and Player assents
to a job in the communications bldg.
4. Siegel reports back to Player about black box.
5. Tip asks to speak to Player privately: if Player refuses, Tip asks
again every 3 turns; if Player assents, Tip suggests testing Antrim
(see sequence "O").
@end (itemize)
@heading (O. Mick Antrim's work on overheating in sub)
@begin (itemize)
0. Player asks Antrim to check sub.
Even if Player doesn't ask him, Antrim goes off to
check it, 10 turns after the air supply is fixed
(sequence "A").
9. Antrim reports back to Player if the voltage regulator is still broken.
19. Antrim reports back to Player if Player already fixed the problem.
At end of Antrim's report, he suggests installing Emergency Survival Units.
If Player agrees, Greenup & Lowell report back 12 turns later.
@end (itemize)
@heading (G. Greenup's attempted escape)
Greenup starts to escape when Player tries to arrest him.
However, the timing doesn't begin until:
@begin (itemize)
0. Player looks at the video monitor in Bly's office.
Greenup's head is just coming into view.
If Player closes the airlock roof, the escape is foiled.
1. Greenup is climbing into the airlock.
If Player opens the airlock hatch, the escape is foiled.
2. Greenup is scrambling aboard the sub.
If Player cuts electricity, the escape is foiled.
3. If Player opened the airlock hatch and didn't close it, then
the Aquadome itself is flooded and the game's over.
@end (itemize)

View File

@@ -12,7 +12,7 @@
CALL BAD-AIR?
ZERO? STACK \FALSE
FSET? X,BUSYBIT \?ELS7
CALL TOO-BAD-BUT,X,STR?203
CALL TOO-BAD-BUT,X,STR?195
RFALSE
?ELS7: ZERO? SNARK-ATTACK-COUNT /TRUE
CALL DONT-KNOW,X,OBJ
@@ -82,20 +82,6 @@
RTRUE
.FUNCT DIR-FROM,HERE,THERE,P=0,L,T,O
?PRG1: NEXTP HERE,P >P
ZERO? P /FALSE
EQUAL? P,P?IN,P?OUT \?ELS7
JUMP ?PRG1
?ELS7: LESS? P,LOW-DIRECTION /?PRG1
GETPT HERE,P >T
PTSIZE T >L
EQUAL? L,DEXIT,UEXIT,CEXIT \?PRG1
GETB T,REXIT
EQUAL? STACK,THERE \?PRG1
RETURN P
.FUNCT I-SHARON-GONE,L
ZERO? MONSTER-GONE \?CND1
CALL QUEUE,I-SHARON-GONE,4
@@ -167,10 +153,10 @@ Suddenly Sharon "
FCLEAR VIDEOPHONE,ONBIT
FSET VIDEOPHONE,MUNGBIT
CALL PHONE-OFF
SET 'SHARON-BROKE-CIRCUIT,1
SET 'SHARON-BROKE-CIRCUIT,TRUE-VALUE
FSET CIRCUIT-BREAKER,MUNGBIT
FSET CIRCUIT-BREAKER,OPENBIT
SET 'MONSTER-GONE,1
SET 'MONSTER-GONE,TRUE-VALUE
CALL IN-LAB?,HERE
ZERO? STACK /?CND16
CRLF
@@ -209,39 +195,40 @@ Suddenly Sharon "
.FUNCT I-BLY-PRIVATELY
ZERO? SNARK-ATTACK-COUNT \FALSE
CALL READY-FOR-SNARK?
ZERO? STACK \FALSE
ZERO? ZOE-MENTIONED-EVIDENCE \FALSE
CALL NOT-NOW?
ZERO? STACK /?CND8
SET 'BLY-PRIVATELY-DELAY,0
ZERO? STACK /?CND11
SET 'BLY-PRIVATELY-DELAY,FALSE-VALUE
CALL QUEUE,I-BLY-PRIVATELY,7
RFALSE
?CND8: SET 'BLY-PRIVATELY-DELAY,1
?CND11: SET 'BLY-PRIVATELY-DELAY,TRUE-VALUE
MOVE PRIVATE-MATTER,GLOBAL-OBJECTS
CRLF
PRINTI "Suddenly "
PRINTD BLY
PRINTI " "
CALL META-LOC,BLY
EQUAL? STACK,HERE /?CND13
EQUAL? STACK,HERE /?CND16
MOVE BLY,HERE
PRINTI "comes over and "
?CND13: ZERO? BLY-PRIVATELY-COUNT \?ELS20
?CND16: ZERO? BLY-PRIVATELY-COUNT \?ELS23
PRINTI "say"
JUMP ?CND18
?ELS20: PRINTI "repeat"
?CND18: PRINTI "s, """
JUMP ?CND21
?ELS23: PRINTI "repeat"
?CND21: PRINTI "s, """
CALL PRINT-NAME,FIRST-NAME
PRINTI ", can we discuss a "
PRINTD PRIVATE-MATTER
PRINTI " now?"""
INC 'BLY-PRIVATELY-COUNT
CALL YES?
ZERO? STACK \?CND29
ZERO? STACK \?CND32
CALL QUEUE,I-BLY-PRIVATELY,7
RFALSE
?CND29: CALL ASK-BLY-ABOUT-PRIVATE-MATTER
?CND32: CALL ASK-BLY-ABOUT-PRIVATE-MATTER
RTRUE
@@ -253,10 +240,10 @@ Suddenly Sharon "
ZERO? STACK \FALSE
CALL NOT-NOW?
ZERO? STACK /?CND1
SET 'BLY-PRIVATELY-DELAY,0
SET 'BLY-PRIVATELY-DELAY,FALSE-VALUE
CALL QUEUE,I-BLY-SAYS,7
RFALSE
?CND1: SET 'BLY-PRIVATELY-DELAY,1
?CND1: SET 'BLY-PRIVATELY-DELAY,TRUE-VALUE
CALL META-LOC,BLY >L
ZERO? ASKED? \?THN14
EQUAL? L,BLY-OFFICE \?ELS13
@@ -284,7 +271,7 @@ Suddenly Sharon "
PRINTI " for attacking?"""
CALL YES?
ZERO? STACK /?CND34
CALL TELL-HINT,73,CLAW,0
CALL TELL-HINT,73,CLAW,FALSE-VALUE
CALL TELL-HINT,72,DART
EQUAL? HERE,DOME-LAB /?CND39
PRINTI "
@@ -323,21 +310,22 @@ Suddenly Sharon "
FSET? TIP,BUSYBIT \?ELS3
CALL QUEUE,I-TIP-SONAR-PLAN,3
RFALSE
?ELS3: CALL READY-FOR-SNARK?
?ELS3: ZERO? SNARK-ATTACK-COUNT \?THN6
CALL READY-FOR-SNARK?
ZERO? STACK /?CND1
CALL QUEUE,I-TIP-SONAR-PLAN,0
?THN6: CALL QUEUE,I-TIP-SONAR-PLAN,0
RFALSE
?CND1: CALL FIND-FLAG,HERE,PERSON,PLAYER >P
ZERO? P \?ELS10
ZERO? P \?ELS12
CALL TIP-COMES
RSTACK
?ELS10: EQUAL? P,TIP \?ELS12
?ELS12: EQUAL? P,TIP \?ELS14
REMOVE PLAYER
CALL FIND-FLAG,HERE,PERSON,TIP >P
MOVE PLAYER,HERE
CALL TIP-COMES,P
RSTACK
?ELS12: CALL TIP-COMES,1
?ELS14: CALL TIP-COMES,TRUE-VALUE
RSTACK
@@ -373,7 +361,7 @@ Suddenly Sharon "
SUB 0,ALMOST
MOD STACK,7
EQUAL? STACK,2 \FALSE
?THN20: CALL TIP-SAYS,1
?THN20: CALL TIP-SAYS,TRUE-VALUE
CALL PRINT-NAME,FIRST-NAME
PRINTI ", I'd like to talk with you alone."""
CRLF
@@ -385,7 +373,7 @@ Suddenly Sharon "
ZERO? BLACK-BOX-EXAMINED \?CND29
CALL TELL-HINT,11,BLACK-BOX
?CND29: MOVE TIP,HERE
CALL TIP-SAYS,1
CALL TIP-SAYS,TRUE-VALUE
CALL PRINT-NAME,FIRST-NAME
PRINTI ", did "
PRINTD BLY
@@ -476,7 +464,7 @@ Suddenly Sharon "
PRINTI " on the "
PRINTD SONAR-EQUIPMENT
PRINTR " again!"""
?ELS31: SET 'SIEGEL-TESTED,1
?ELS31: SET 'SIEGEL-TESTED,TRUE-VALUE
PRINTI " what I found attached to the "
PRINTD SONAR-EQUIPMENT
PRINTI ", "
@@ -526,7 +514,9 @@ Tip snaps his fingers and says: """
RFALSE
?CND10: PRINTI """The Snark could be a synthetic monster created by "
PRINTD THORPE
PRINTI "!"" he says when you're alone. ""I read about them in that magazine. If I'm right, whoever attached the "
PRINTI "!"" he says when you're alone. ""I read about them in that "
PRINTD MAGAZINE
PRINTI ". If I'm right, whoever attached the "
PRINTD BLACK-BOX
PRINTI " to the "
PRINTD SONAR-EQUIPMENT
@@ -542,7 +532,7 @@ Tip snaps his fingers and says: """
PRINT RECONSIDER?
PRINTI """"
CRLF
?CND15: CALL MIKE-1-F,ANTRIM,1
?CND15: CALL MIKE-1-F,ANTRIM,TRUE-VALUE
CALL YES?
ZERO? STACK \?ELS22
PRINT RECONSIDER?
@@ -558,10 +548,10 @@ Tip snaps his fingers and says: """
PRINTI "."""
CRLF
IN? PRIVATE-MATTER,GLOBAL-OBJECTS \?CND39
CALL TELL-HINT,12,OVERHEATING,0
CALL TELL-HINT,12,OVERHEATING,FALSE-VALUE
ZERO? REGULATOR-MSG-SEEN /?CND39
CALL TELL-HINT,43,ANTRIM,0
?CND39: CALL TELL-HINT,22,ANTRIM,0
CALL TELL-HINT,43,ANTRIM,FALSE-VALUE
?CND39: CALL TELL-HINT,22,ANTRIM,FALSE-VALUE
RSTACK
@@ -571,7 +561,7 @@ Tip snaps his fingers and says: """
ZERO? ANTRIM-CHECKED-SUB \FALSE
ZERO? STR /?ELS8
JUMP ?CND1
?ELS8: CALL NOT-NOW?,0
?ELS8: CALL NOT-NOW?,FALSE-VALUE
ZERO? STACK /?CND1
CALL QUEUE,I-ANTRIM-TO-SUB,3
RFALSE
@@ -581,9 +571,9 @@ Tip snaps his fingers and says: """
JUMP ?CND12
?ELS14: CALL QUEUE,I-ANTRIM-REPORTS,19
PUT STACK,0,1
?CND12: SET 'ANTRIM-CHECKED-SUB,1
?CND12: SET 'ANTRIM-CHECKED-SUB,TRUE-VALUE
IN? BLY,HERE \?CND17
SET 'BLY-HEARD-ANTRIM,1
SET 'BLY-HEARD-ANTRIM,TRUE-VALUE
?CND17: FSET ANTRIM,BUSYBIT
ZERO? STR /?ELS22
PRINT STR
@@ -612,9 +602,10 @@ Suddenly "
.FUNCT TIP-FLASHES
ZERO? TIP-FLASHED /?CND1
IN? TIP,HERE \FALSE
ZERO? TIP-FLASHED /?CND4
PRINTI "Once again "
?CND1: SET 'TIP-FLASHED,1
?CND4: SET 'TIP-FLASHED,TRUE-VALUE
PRINTI "Tip flashes you a meaningful glance. "
RTRUE
@@ -745,10 +736,11 @@ Would you like one installed, just in case? "
?CND3: PRINTI "."""
CRLF
LOC SYRINGE
EQUAL? STACK,LOWELL,GREENUP,ESCAPE-POD-UNIT \?ELS14
SET 'X,1
EQUAL? STACK,LOWELL,GREENUP,ESCAPE-POD-UNIT \?CND10
SET 'X,TRUE-VALUE
?CND10: ZERO? X /?ELS17
LOC ESCAPE-POD-UNIT
EQUAL? STACK,LOWELL,GREENUP,DOME-STORAGE \?ELS14
EQUAL? STACK,LOWELL,GREENUP,DOME-STORAGE \?ELS17
CALL SCORE-OBJ,ESCAPE-POD-UNIT
MOVE GREENUP,SUB
MOVE LOWELL,SUB
@@ -760,19 +752,19 @@ Would you like one installed, just in case? "
CALL QUEUE,I-LOWELL-REPORTS,12
PUT STACK,0,1
RTRUE
?ELS14: PRINTI "But "
?ELS17: PRINTI "But "
CALL HE-SHE-IT,PER
MOVE PER,HERE
PRINTI " returns a moment later and says, ""We can't find the "
ZERO? X /?ELS25
ZERO? X /?ELS28
PRINTD ESCAPE-POD-UNIT
JUMP ?CND23
?ELS25: PRINTD SYRINGE
?CND23: PRINTR "."""
JUMP ?CND26
?ELS28: PRINTD SYRINGE
?CND26: PRINTR "."""
.FUNCT I-LOWELL-REPORTS
CALL NOT-NOW?,0
CALL NOT-NOW?,FALSE-VALUE
ZERO? STACK /?CND1
CALL QUEUE,I-LOWELL-REPORTS,3
RFALSE
@@ -795,7 +787,8 @@ Suddenly "
PRINTD SUB
JUMP ?CND6
?ELS8: PRINTD AIRLOCK
?CND6: PRINTI ".
?CND6: CALL SAID-TO,LOWELL
PRINTI ".
""That "
PRINTD ESCAPE-POD-UNIT
PRINTI " is in place, "
@@ -815,7 +808,7 @@ Suddenly "
PRINTI " appears. ""I couldn't find anything unusual about the "
PRINTD SYRINGE
PRINTR "."""
?ELS10: SET 'GREENUP-GUILT,1
?ELS10: SET 'GREENUP-GUILT,TRUE-VALUE
PRINTD HORVAK
PRINTI "'s face is grim and pale as he reports the result of his analysis.
"
@@ -839,13 +832,13 @@ Tip turns to you with a gasp. ""Holy smoke, "
CALL THIS-IS-IT,DART
CALL SAID-TO,HORVAK
PRINTI "Doc Horvak "
CALL MOVE-HERE-NOT-SUB,HORVAK,STR?205,STR?206
CALL MOVE-HERE-NOT-SUB,HORVAK,STR?197,STR?198
PRINTI " holding an aquatic dart gun. "
IN? HORVAK,HERE /?CND5
PRINTI "He shouts from outside, "
?CND5: PRINTI """Okay, "
CALL PRINT-NAME,FIRST-NAME
PRINTI ", 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?"""
PRINTI ", I've made a special 'trank' to use against an A.H.-type organism! It's loaded in the dart gun. What shall I do with it?"""
CRLF
CALL SCORE-OBJ,DART
RTRUE
@@ -900,12 +893,12 @@ Tip turns to you with a gasp. ""Holy smoke, "
PRINTD AIRLOCK-HATCH
PRINTI " and shove off!"""
CRLF
CALL TELL-HINT,52,AIRLOCK-ELECTRICITY,0
CALL TELL-HINT,52,AIRLOCK-ELECTRICITY,FALSE-VALUE
RTRUE
?ELS7: EQUAL? 9,GREENUP-ESCAPE \FALSE
FCLEAR AIRLOCK-ROOF,OPENBIT
FSET AIRLOCK-HATCH,OPENBIT
SET 'AIRLOCK-FULL,1
SET 'AIRLOCK-FULL,TRUE-VALUE
CALL QUEUE,I-SNARK-ATTACKS,1
PRINTI "
Better not raise any false hopes. As the "
@@ -926,11 +919,11 @@ A "
.FUNCT GREENUP-CUFF
SET 'GREENUP-ESCAPE,0
SET 'GREENUP-TRAPPED,0
SET 'GREENUP-TRAPPED,FALSE-VALUE
CALL QUEUE,I-GREENUP-ESCAPE,0
MOVE GREENUP,GALLEY
FSET GREENUP,MUNGBIT
SET 'GREENUP-CUFFED,1
SET 'GREENUP-CUFFED,TRUE-VALUE
PRINTI "Knowing he's trapped, "
PRINTD GREENUP
PRINTI " gives up without a fight. "
@@ -987,8 +980,8 @@ Most regrettable!"
JUMP ?CND6
?ELS8: MOVE TIP,HERE
?CND6: FCLEAR TIP,BUSYBIT
SET 'TIP-FOLLOWS-YOU?,1
SET 'FINE-SONAR,1
SET 'TIP-FOLLOWS-YOU?,TRUE-VALUE
SET 'FINE-SONAR,TRUE-VALUE
MOVE FINE-GRID,SUB
FCLEAR FINE-GRID,TAKEBIT
CALL TIP-SAYS
@@ -1034,6 +1027,13 @@ Most regrettable!"
PRINTR "!"""
.FUNCT USE-FEWER-TURNS
PRINTI "
(You'll probably do better if you restart and use fewer turns next time.)"
RTRUE
.FUNCT I-SNARK-ATTACKS
ZERO? SNARK-ATTACK-COUNT \?CND1
ZERO? SUB-IN-DOME \?ELS6
@@ -1059,9 +1059,8 @@ Most regrettable!"
PRINTD AQUADOME
PRINTI ": the "
PRINTD GLOBAL-SNARK
PRINTI " is attacking and destroying it! You're too late!
You'll probably do better if you restart and use fewer turns next time."
PRINTI " is attacking and destroying it! You're too late!"
CALL USE-FEWER-TURNS
CALL FINISH
JUMP ?CND1
?ELS6: CALL QUEUE,I-SNARK-ATTACKS,-1
@@ -1128,6 +1127,7 @@ The Atlantic Ocean is pouring into the "
PRINTI "! And your last thought, before a zillion tons of "
PRINTD GLOBAL-WATER
PRINTI " crushes you to jelly, is ""Oh gosh! I wonder if I shut off the Bunsen burner in the lab?"""
CALL USE-FEWER-TURNS
CALL FINISH
RSTACK

View File

@@ -18,7 +18,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<ROUTINE TELL-HINT (CARDNUM OBJ "OPTIONAL" (CR? T))
<COND (.CR? <CRLF>)>
%<XTELL
<TELL
"(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>>
@@ -61,17 +61,17 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<FCLEAR ,TIP ,TOUCHBIT>)>
<MOVE ,TIP .RM>)>>
<ROUTINE DIR-FROM (HERE THERE "AUX" (P 0) L T O)
;<ROUTINE DIR-FROM (HERE THERE "AUX" (P 0) L TBL 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>>
<SET TBL <GETPT .HERE .P>>
<SET L <PTSIZE .TBL>>
<COND (<AND <EQUAL? .L ,DEXIT ,UEXIT ,CEXIT>
<==? <GETB .T ,REXIT> .THERE>>
<==? <GETB .TBL ,REXIT> .THERE>>
<RETURN .P>)>)>>>
<ROUTINE I-SHARON-GONE ("AUX" L)
@@ -87,7 +87,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<SUDDENLY-SHARON .L>
<TELL "really must go now, "FN". I'll see you later.\"" CR>
<COND (<EQUAL? ,HERE ,OFFICE>
%<XTELL
<TELL
"She leaves through the " D ,OFFICE-DOOR "." CR>)>
<RTRUE>)>>
@@ -137,7 +137,7 @@ Suddenly Sharon ">
;<COND (,DEBUG<TELL"[circuit breaker just opened]" CR>)>
<SETG MONSTER-GONE T>
<COND (<IN-LAB? ,HERE>
%<XTELL CR
<TELL CR
"Something's wrong! The picture vanished from your
" D ,VIDEOPHONE " screen, and the sound conked out!|
">
@@ -166,6 +166,8 @@ Suddenly Sharon ">
<RTRUE>)>>
<ROUTINE I-BLY-PRIVATELY ()
<COND (<NOT <0? ,SNARK-ATTACK-COUNT>>
<RFALSE>)>
<COND (<READY-FOR-SNARK?>
<RFALSE>)>
<COND (,ZOE-MENTIONED-EVIDENCE
@@ -182,7 +184,7 @@ Suddenly Sharon ">
<TELL "comes over and ">)>
<COND (<0? ,BLY-PRIVATELY-COUNT> <TELL "say">)
(T <TELL "repeat">)>
%<XTELL
<TELL
"s, \"" FN ", can we discuss a " D ,PRIVATE-MATTER " now?\"">
<INC BLY-PRIVATELY-COUNT>
<COND (<NOT <YES?>> <QUEUE I-BLY-PRIVATELY 7 ;3> <RFALSE>)>
@@ -204,23 +206,23 @@ Suddenly Sharon ">
<AND <EQUAL? .L ,BLY-OFFICE>
<EQUAL? .L ,HERE>>>
<COND (<NOT .ASKED?> <CRLF>)>
%<XTELL
<TELL
"\"" 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
<TELL
"\"Can you use the " D ,SUB " to hunt the " D ,GLOBAL-SNARK
", instead of waiting for it to attack?\"">
<COND (<YES?>
%<XTELL
<TELL
"\"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
<TELL
"|
\"If you want to think it over, we should go to the " D ,DOME-LAB ". Shall we
go now?\"">
@@ -251,7 +253,8 @@ go now?\"">
<COND (<FSET? ,TIP ,BUSYBIT>
<QUEUE I-TIP-SONAR-PLAN 3>
<RFALSE>)
(<READY-FOR-SNARK?>
(<OR <NOT <0? ,SNARK-ATTACK-COUNT>>
<READY-FOR-SNARK?>>
<QUEUE I-TIP-SONAR-PLAN 0>
<RFALSE>)>
<SET P <FIND-FLAG ,HERE ,PERSON ,PLAYER>>
@@ -295,27 +298,27 @@ go now?\"">
<COND (<NOT ,BLACK-BOX-EXAMINED> <TELL-HINT 11 ;13 ,BLACK-BOX>)>
<MOVE ,TIP ,HERE>
<TIP-SAYS T>
%<XTELL
<TELL
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",\" ">
<TELL "\"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
<TELL
"\"" FN ", do you think someone tampered with it?\"">
<COND (<YES?>
%<XTELL
<TELL
"\"Does Marv suspect you've discovered signs of tampering?\"">
<COND (<NOT <YES?>>
<THIS-IS-IT ,TIP-IDEA>
%<XTELL
<TELL
"\"Then I have an idea how to trap Marv and find out if he's the " D ,TRAITOR
"!\"" CR>)>)>)>)>)>
<RTRUE>>
@@ -338,7 +341,7 @@ But you'll have to decide for yourself." CR>>
<COND (<NOT <IN? ,SIEGEL ,COMM-BLDG>> <RFALSE>)>
<MOVE-HERE-NOT-SUB ,SIEGEL>
<COND (<NOT <IN? ,BLACK-BOX ,SONAR-EQUIPMENT>>
%<XTELL
<TELL
"Suddenly " D ,SIEGEL " reports: \"The " D ,SONAR-EQUIPMENT " looks okay
to me, "FN".\"" CR>
<RTRUE>)>
@@ -347,10 +350,10 @@ to me, "FN".\"" CR>
(T
<COND (<IN? ,TIP ,HERE>
<TIP-SAYS>
%<XTELL FN ", here comes Marv, and he looks excited!\"|
<TELL FN ", here comes Marv, and he looks excited!\"|
">)>
<TELL "Marv comes running up to you">)>
%<XTELL " with the " D ,BLACK-BOX " and says: \"Look">
<TELL " with the " D ,BLACK-BOX " and says: \"Look">
<MOVE ,BLACK-BOX ,SIEGEL>
<COND (,SIEGEL-TESTED
<TELL
@@ -358,13 +361,13 @@ to me, "FN".\"" CR>
CR>)
(T
<SETG SIEGEL-TESTED T>
%<XTELL
<TELL
" what I found attached to the " D ,SONAR-EQUIPMENT ", " FN "! ">
<SIEGEL-BOX>
<COND (<IN? ,TIP ,HERE>
<TIP-FLASHES>
<REACTION-MAY-BE ,SIEGEL>
%<XTELL
<TELL
"|
Tip snaps his fingers and says: \"" FN "! Didn't that article in the "
D ,MAGAZINE "
@@ -387,12 +390,12 @@ a special way?\"">
<ENABLE <QUEUE I-TIP-PRIVATELY 3>>
<RFALSE>)>
<MOVE ,TIP ,HERE>
%<XTELL
<TELL
CR "Tip draws you aside. \"Could I speak to you privately, " FN "?\"">
<COND (<NOT <YES?>> <ENABLE <QUEUE I-TIP-PRIVATELY 3>> <RFALSE>)>
%<XTELL
<TELL
"\"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
says when you're alone. \"I read about them in that " D ,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
@@ -401,12 +404,12 @@ right, whoever attached the " D ,BLACK-BOX " to the " D ,SONAR-EQUIPMENT
<TELL ,RECONSIDER? "\"" CR>)>
<MIKE-1-F ,ANTRIM T>
<COND (<NOT <YES?>>
%<XTELL ,RECONSIDER? " In fact ">)
<TELL ,RECONSIDER? " In fact ">)
(T <TELL "\"Then ">)>
<TELL "why not test him">
<COND (,SIEGEL-TESTED
<TELL ", since you tested " D ,SIEGEL>)>
%<XTELL
<TELL
"?\" Tip
asks. \"Mick is a laser expert in charge of maintenance on subs at the " D
,AQUADOME ".\"" CR>
@@ -439,7 +442,7 @@ 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 ">
<TELL FN "!\" Mick turns and ">
<MOVE ,ANTRIM ,CRAWL-SPACE>
<FSET ,ENGINE-ACCESS-HATCH ,OPENBIT>
<COND (<EQUAL? ,HERE ,SUB ,CRAWL-SPACE>
@@ -452,9 +455,10 @@ Suddenly " D ,ANTRIM>
<GLOBAL TIP-FLASHED <>>
<ROUTINE TIP-FLASHES ()
<COND (<NOT <IN? ,TIP ,HERE>> <RFALSE>)>
<COND (,TIP-FLASHED <TELL "Once again ">)>
<SETG TIP-FLASHED T>
%<XTELL "Tip flashes you a meaningful glance. ">>
<TELL "Tip flashes you a meaningful glance. ">>
<ROUTINE I-ANTRIM-REPORTS ()
;<COND (,DEBUG <TELL "[time for Mick to report?]" CR>)>
@@ -466,16 +470,16 @@ Suddenly " D ,ANTRIM>
<MOVE-HERE-NOT-SUB ,ANTRIM>
<CRLF>
<COND (,ASKED-ANTRIM
%<XTELL D ,ANTRIM " reports back ">
<TELL D ,ANTRIM " reports back ">
<COND (<EQUAL? ,HERE ,SUB ,AIRLOCK> <TELL "to you">)
(T <TELL "from the " D ,AIRLOCK>)>
<COND (<FSET? ,VOLTAGE-REGULATOR ,MUNGBIT>
%<XTELL ".|
<TELL ".|
\"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.|
(T <TELL ", 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
@@ -487,13 +491,13 @@ installed a new " D ,VOLTAGE-REGULATOR ".|
<TELL "Suddenly ">)
(T
<MOVE-HERE-NOT-SUB ,BLY>
%<XTELL
<TELL
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
<TELL
"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 ",
@@ -507,7 +511,7 @@ now.\"" CR>)>
<TIP-FLASHES>
<COND (<FSET? ,VOLTAGE-REGULATOR ,MUNGBIT>
<SETG TEST-BUTTON-READOUT ,TEST-BUTTON-NORMAL>
%<XTELL
<TELL
"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 ".|
@@ -517,7 +521,7 @@ but you'll want to confirm this by pushing the " D ,TEST-BUTTON
<COND (<READY-FOR-SNARK?>
<RTRUE>)>
<COND (<IN? ,ESCAPE-POD-UNIT ,SUB> <RTRUE>)>
%<XTELL CR D ,ANTRIM
<TELL 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
@@ -536,9 +540,9 @@ Would you like one installed, just in case? " D ,GREENUP " and " D ,LOWELL
<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>
<COND (<EQUAL? <LOC ,SYRINGE> ,LOWELL ,GREENUP ,ESCAPE-POD-UNIT>
<SET X T>)>
<COND (<AND .X
<EQUAL? <LOC ,ESCAPE-POD-UNIT>
,LOWELL ,GREENUP ,DOME-STORAGE>>
<SCORE-OBJ ,ESCAPE-POD-UNIT>
@@ -572,11 +576,12 @@ Would you like one installed, just in case? " D ,GREENUP " and " D ,LOWELL
<MOVE ,LOWELL ,HERE>
<FCLEAR ,GREENUP ,BUSYBIT>
<FCLEAR ,LOWELL ,BUSYBIT>
%<XTELL "|
<TELL "|
Suddenly " D ,GREENUP " and " D ,LOWELL " report back from the ">
<COND (<EQUAL? ,HERE ,AIRLOCK> <TELL D ,SUB>)
(T <TELL D ,AIRLOCK>)>
%<XTELL
<SAID-TO ,LOWELL>
<TELL
".|
\"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>>
@@ -593,13 +598,13 @@ installed the part under your pilot's seat, and I installed the rest.\"" CR>>
about the " D ,SYRINGE ".\"" CR>)
(T
<SETG GREENUP-GUILT T>
%<XTELL
<TELL
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 "|
<TELL "|
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>)>)>)
@@ -618,10 +623,10 @@ trigger the sensor relay!\"" CR>)>)>)
<SAID-TO ,HORVAK>
<TELL "Doc Horvak ">
<MOVE-HERE-NOT-SUB ,HORVAK "is now" "now comes rushing back,">
%<XTELL " holding an aquatic dart gun. ">
<TELL " 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!
<TELL "\"Okay, "
FN ", I've made a special 'trank' to use against an A.H.-type organism!
It's loaded in the dart gun. What shall I do with it?\"" CR>
<SCORE-OBJ ,DART>
<RTRUE>>
@@ -649,12 +654,12 @@ It's loaded in the dart gun. What shall I do with it?\"" CR>
<SETG GREENUP-ESCAPE <+ 1 ,GREENUP-ESCAPE>>
<COND (<EQUAL? 3 ,GREENUP-ESCAPE>
<MOVE ,GREENUP ,AIRLOCK>
%<XTELL CR
<TELL 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
<TELL 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>
@@ -665,7 +670,7 @@ open the " D ,AIRLOCK-HATCH " and shove off!\"" CR>
<FSET ,AIRLOCK-HATCH ,OPENBIT>
<SETG AIRLOCK-FULL T>
<QUEUE I-SNARK-ATTACKS 1>
%<XTELL
<TELL
"|
Better not raise any false hopes. As the " D ,SUB " glides out,
a pall of gloom settles over the " D ,AQUADOME ". All
@@ -684,7 +689,7 @@ general S.O.S. to any craft in the vicinity isn't answered.">
<MOVE ,GREENUP ,GALLEY>
<FSET ,GREENUP ,MUNGBIT>
<SETG GREENUP-CUFFED T>
%<XTELL
<TELL
"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>
@@ -695,7 +700,7 @@ general S.O.S. to any craft in the vicinity isn't answered.">
<IN? ,ESCAPE-POD-UNIT ,SUB>
<FSET? ,SYRINGE ,MUNGBIT>
<IN? ,SYRINGE ,ESCAPE-POD-UNIT>>
%<XTELL CR
<TELL 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.|
@@ -740,10 +745,15 @@ Most regrettable!">
<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>>
<TELL "! Let's shove off and find the " D ,GLOBAL-SNARK "!\"" CR>>
<GLOBAL SNARK-ATTACK-COUNT 0>
<ROUTINE USE-FEWER-TURNS ()
<TELL "|
|
(You'll probably do better if you restart and use fewer turns next time.)">>
<ROUTINE I-SNARK-ATTACKS ()
<COND (<0? ,SNARK-ATTACK-COUNT>
<COND (<NOT ,SUB-IN-DOME>
@@ -752,22 +762,21 @@ Most regrettable!">
<NOT <L? ,SONAR-RANGE <ABS ,SUB-LAT>>>>>
<QUEUE I-SNARK-ATTACKS 3>
<RFALSE>)>
%<XTELL "A call comes on the "> ;"[more?]"
<TELL "A call comes on the "> ;"[more?]"
<COND (<EQUAL? ,HERE ,SUB ,CRAWL-SPACE>
<TELL D ,SONARPHONE>)
(T <TELL D ,VIDEOPHONE>)>
%<XTELL
<TELL
" 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.">
" is attacking and destroying it! You're too late!">
<USE-FEWER-TURNS>
<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
<TELL
"|
Suddenly an alarm rings through the " D ,AQUADOME "! " D ,SIEGEL " yells
over the squawk box:|
@@ -781,7 +790,7 @@ over the squawk box:|
<COND (<EQUAL? ,HERE ,SUB ,CRAWL-SPACE ,AIRLOCK>
<COND (<FSET? ,AIRLOCK-HATCH ,OPENBIT>
<FCLEAR ,AIRLOCK-HATCH ,OPENBIT>
%<XTELL
<TELL
"The " D ,AIRLOCK-HATCH " closes in defense.">)>)
(T
<COND (<GLOBAL-IN? ,WINDOW ,HERE>
@@ -791,7 +800,7 @@ over the squawk box:|
<CRLF>
<RFATAL>)
(<==? 2 ,SNARK-ATTACK-COUNT>
%<XTELL
<TELL
"|
Even as you try this, the undersea nightmare takes shape!|
\"Holy spaghetti! LOOK at that thing!\" cries Tip.|
@@ -801,7 +810,7 @@ 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
<TELL
"|
No more time for that! The " D ,SNARK " has flopped down on the " D
,AQUADOME "!
@@ -812,4 +821,5 @@ 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?\"">
<USE-FEWER-TURNS>
<FINISH>)>>

305
game.script Normal file
View File

@@ -0,0 +1,305 @@
Here begins a transcript of interaction with
SEASTALKER: JIM LAWRENCE AND THE ULTRAMARINE BIOCEPTOR
Junior-level interactive fiction from Infocom
Copyright (c) 1984 Infocom, Inc. All rights reserved.
SEASTALKER is a trademark of Infocom, Inc.
Release number 17 / Serial number 850208
Okay, Jim, what do you want to do now?
>ANSWER THE ALARM
Why not turn on the videophone?
The alarm bell continues to ring.
What next?
>TURN ON THE VIDEOPHONE
As the alarm bell stops ringing, a picture of a woman holding a microphone
appears, and you can hear her voice from the speaker. But both sound and
picture are fuzzy.
(Your score just went up by 1 point!)
What next?
>TUNE IT
Ah, that's better! You recognize the woman as Commander Bly, who's in charge of
the Undersea Research Station of Inventions Unlimited, called the Aquadome,
just off the Atlantic coast. "Jim! Jim!" she's saying. "This is the Aquadome
calling the Lawrence Research Lab! We have an urgent problem!"
(Your score just went up by 1 point!)
What next?
>TALK TO HER
She can't hear you unless you pick up your microphone and switch it on.
What next?
>PICK UP THE MIKE AND SWITCH IT ON
(Your score just went up by 1 point!)
You are now holding the microphone.
Okay, the microphone is now on.
What next?
>TALK TO COMMANDER BLY
"Jim! Jim! Our transparent dome enclosing the Undersea Research Station is
being battered by a huge monster!"
What next?
>BLY, SHOW ME THE MONSTER
The Aquadome's camera pans, and the monster comes into view on your videophone
screen. It resembles a huge sea slug, about 5 meters tall. Its clawed tentacles
pound and scratch at the dome.
What next?
>BLY, TELL ME ABOUT THE MONSTER
"Some of our divers saw it while exploring the undersea environment. They
nicknamed it the Snark. This is the first time it has approached the Aquadome,
and it may be the last time, Jim! I'm not sure how long our plastic dome
enclosure can withstand such a battering!"
What next?
>BLY, ATTACK THE MONSTER
"Jim, this is a peaceful research facility. We have no weapons."
What next?
>BLY, LEAVE THE AQUADOME
"Our emergency escape bell would be vulnerable to a monster as big as the
Snark. Ditto for SCUBA gear, deep-sea diving suits, or jet-propelled
observation bubbles."
What next?
>BLY, WAIT THERE FOR ME
"Okay, Jim, but hurry!"
(Are you tired of seeing "What next?" Well, you won't see it any more.)
>HANG UP
"I hope to see you soon, Jim."
Something's wrong! The picture vanished from your videophone screen, and the
sound conked out!
Tip says, "That's strange! Maybe you should use the Computestor."
(Oh no! Your score just went down by 3 points!)
>GO TO THE COMPUTESTOR
You can't walk away while you are holding the microphone!
>PUT IT ON THE TABLE
Okay.
>GO TO THE COMPUTESTOR
It's in the north part.
(north part)
You're in the north part of your laboratory. A Computestor stands here to help
test your inventions.
>USE IT
The Computestor is off!
>TURN IT ON
The Computestor is ready for questions.
>ASK IT ABOUT THE VIDEOPHONE
"Symptoms: no picture, no sound.
Possible causes:
1) Failure of the transmitter at source.
2) A short in the undersea coaxial cable linking transmitter to the Lawrence
Research Lab, if signal is coming from Aquadome.
3) Sunspot interference or satellite malfunction if transmitter is at earth's
surface.
4) Failure of the video receiver.
5) Overload in the Electrical Panel (circuit breaker popped).
6) Sabotage (circuit breaker open)."
>GO TO THE CIRCUIT BREAKER
It's in the corridor.
(corridor)
You're in a corridor, with your laboratory to the west, a storage closet to the
south, and Kemp's office to the east. An Electrical Panel fills most of the
north wall.
Tip follows you into the corridor.
(If you want a clue, find Infocard #3 in your SEASTALKER package. Read hidden
clue #1 and put "Electrical Panel" in the blank space.)
>CHECK THE BREAKER
(If you want a clue, find Infocard #3 in your SEASTALKER package. Read hidden
clue #1 and put "Electrical Panel" in the blank space.)
>CLOSE IT
Okay, the circuit breaker is now closed.
(Your score just went up by 3 points!)
>GO BACK TO THE LAB
(lab center)
You're at your workbench in the center of your laboratory, a small part of the
Lawrence Research Lab in the town of Frobton. The videophone screen looms
overhead.
Tip follows you into the lab center.
Sitting on the workbench is:
a microphone
a diagram
As you re-enter the lab, Tip says, "Look, Jim! The videophone's working again!
There's a normal test pattern on the screen!"
>TIP, GO TO THE SUBMARINE
"I think you can do that better yourself."
>GO TO THE SUB
(SCIMITAR)
You're in the pilot's seat of the SCIMITAR, its operating control panel before
you.
A wraparound viewport, both fore and aft, provides a view ahead and astern. You
can also observe your surroundings with a sonarscope and a hydrophone listening
device. There's a sonarphone for communication. You'll discover other features
when you need them.
Tip is sitting behind you, reading a magazine.
The power reactor is off and open.
(Your score just went up by 1 point!)
>TURN IT ON
(If you want a clue, find Infocard #3 in your SEASTALKER package. Read hidden
clue #3 and put "catalyst capsule" in the blank space.)
>GO TO THE CAPSULE
It's in the west walkway.
(west walkway)
You're at a work counter, next to the control gear used to operate the test
tank.
The test tank (which is now empty of sea water) is located in a large work
room, just south of your laboratory, 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 underwater 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.
Tip follows you into the west walkway.
Sitting on the work counter is:
a catalyst capsule
>TAKE IT
(Your score just went up by 5 points!)
You are now holding the catalyst capsule.
>GET IN THE SUB
You have to go north to board the SCIMITAR.
>GO NORTH
(north walkway)
Tip is off to the south.
>BOARD THE SCIMITAR
(SCIMITAR)
Tip is sitting behind you, reading a magazine.
The power reactor is off and open.
>PUT THE CAPSULE IN THE REACTOR
Okay.
>CLOSE THE REACTOR THEN TURN IT ON
Okay, the reactor is now closed.
Electrical systems now activated.
(Your score just went up by 5 points!)
>READ THE INSTRUMENTS
Main instruments:
depth finder, hydrophone, sonarscope, and temperature gauge.
>LEAVE THE TANK
The tank is empty!
>FILL IT
The sea water quickly fills the tank, up to the level of the walkway.
>LEAVE IT
The gate is closed!
>OPEN IT
Opened (by remote control).
>LEAVE THE TANK
The engine is off!
>TURN IT ON
You can immediately hear the powerful thrum of the hydrojet turbine.
(Your score just went up by 5 points!)
>LEAVE THE TANK
You can do this by setting the throttle to the speed you want (slow, medium, or
fast) and by moving the joystick in the compass direction you wish to go.
>SET THE THROTTLE TO SLOW SPEED
(I found too many nouns in that sentence!)
>SET THE THROTTLE TO SLOW
You shouldn't leave the tank with the hatch open!
>CLOSE IT
Okay, the entry hatch is now closed.
>SLOW
Okay, now that the throttle is set, try pushing the joystick to the east.
>PUSH THE STICK EAST
The SCIMITAR glides smoothly out of the tank onto the surface of Frobton Bay.
You're heading east at 1 sea square per turn.
(Your score just went up by 5 points!)
(This might be a good time to use the command: SAVE.)
A speedboat came out of nowhere and almost hit you! It's dangerous on the
surface of the bay.
>Q
Your score is 24 points out of 100, in 44 turns.
This score gives you the rank of a fair adventurer.
(If you want to continue from this point at another time, you must "SAVE"
first.)
Do you want to stop playing now? >Y

56
german.rno Normal file
View File

@@ -0,0 +1,56 @@
.c;Seastalker -- a perfect adventure
.s
.p 2,0
^*Whoever believes that text adventures are boring doesn't know
"Seastalker". This deep-sea adventure for the C64, Atari, Apple II, and
IBM-PC amazes with its variety and extras, that provide for atmosphere:
from a sticker to a logbook and "Infocard-decoder".\*
.s
Many dangers lie in waiting in the unfathomable deeps of the sea. The
"Aquadome", the first underwater research station, is threatened by a
catastrophe. As the upright, young hero (no false modesty) you swing into
the submarine to help. Indeed you were ready and waiting for a wicked
sea monster.
What sounds to you like the plot of a wild action game is the fanciful
story to "Seastalker", one of the newest adventure games of an American
software house, that is famous for its cunning text-adventures, that show
themselves in two ways: First, the programs are positively uncannily
"intelligent", they understand complicated sentences and reach an almost
literary niveau. Second, one gets a great quantity of accessories for
one's money.
Also with "Seastalker" the extras aren't spared: Along with the disk and the
usual loading directions one gets a logbook, just like the original, out of
which detailed instructions are revealed, a sea chart, a sticker and a whole
pack of "Infocards" with their decoder.
On these Infocards are hidden hints, that are only able to be seen when they
are shoved through the groove in the decoder. A frustrated adventurer gets
discrete tips this way, that he could not see by "accident", only when he
really wants to. The logbook gives one a real seaman's atmosphere. Along
with a rousing letter from the president of the USA, it gives a hint of the
way to use the technical equipment and how to communicate with the program.
The adventure begins with you in the research laboratory, working
industriously away. Suddenly the alarms go off. If you are lively, you
can get radio contact with the Aquadome. A woman appears in the adventure
on a screen and implores you for help, because the underwater station is
being threatened by a horrible monster, that so far is not more closely
described. Luckily, your submarine "Scimitar" stands ready, with it you
can rush to the Aquadome to help.
.s
.c;Literary niveau
"Seastalker" is not an exaggeratedly difficult text-adventure. In the USA it is
suggested for children from nine years up. The program is in very clean
English and a knowledge of the correspondence style is given in advance,
this allows it to address in our degree of longitude a previously matured public.
This pretentious game is designed with "speech intelligence". Where other
adventures accept only "Get food", "Seastalker" swallows extensive sentences
like "Unlock the front door with key and go north". One can even talk with
other people in the adventure.
"Seastalker" is a very worthily made text-adventure for players with a progressive
knowledge of English. Although it is relatively easy, some beginners have
great trouble to succesfully complete the mission. The program comes on a
diskette and costs about 100 Marks.
.s
[caption at top] Naked text fills the screen
[caption at bottom] The inclusions to "Seastalker" are not only charming and pleasurable to the great journey in this underwater adventure
.s
.c;[translation by Linde Simpson]

View File

@@ -64,7 +64,7 @@
.FUNCT LOCAL-SUB-F
EQUAL? PRSA,V?PUT \?ELS5
EQUAL? PRSA,V?TURN,V?PUT \?ELS5
CALL MORE-SPECIFIC
RSTACK
?ELS5: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \?ELS7
@@ -108,7 +108,7 @@
RSTACK
?ELS45: EQUAL? PRSA,V?BOARD,V?THROUGH \?ELS49
EQUAL? HERE,SUB,CRAWL-SPACE \?ELS54
CALL ALREADY,WINNER,STR?123
CALL ALREADY,WINNER,STR?117
RSTACK
?ELS54: EQUAL? HERE,AIRLOCK-WALL \?ELS56
CALL GOTO,AIRLOCK
@@ -141,7 +141,7 @@
CALL PERFORM,PRSA,SUB-DOOR
RTRUE
?ELS89: EQUAL? PRSA,V?ANALYZE \?ELS93
EQUAL? PRSI,DAMAGE,GLOBAL-SABOTAGE,0 \?ELS93
EQUAL? PRSI,DAMAGE,GLOBAL-SABOTAGE,FALSE-VALUE \?ELS93
PRINTI "You can do this by pushing the "
PRINTD TEST-BUTTON
EQUAL? HERE,SUB,CRAWL-SPACE /?CND98
@@ -256,10 +256,10 @@
PRINTR " subs."
.FUNCT PHONE-ON,PERSON,PWHERE,ON
SET 'REMOTE-PERSON,PERSON
SET 'QCONTEXT,PERSON
CALL THIS-IS-IT,PERSON
.FUNCT PHONE-ON,PER,PWHERE,ON
SET 'REMOTE-PERSON,PER
SET 'QCONTEXT,PER
CALL THIS-IS-IT,PER
SET 'REMOTE-PERSON-REMLOC,PWHERE
SET 'REMOTE-PERSON-ON,ON
SET 'REMOTE-PERSON-LOC,HERE
@@ -271,10 +271,10 @@
.FUNCT PHONE-OFF
ZERO? REMOTE-PERSON /FALSE
MOVE REMOTE-PERSON,GLOBAL-OBJECTS
SET 'REMOTE-PERSON,0
SET 'REMOTE-PERSON-LOC,0
SET 'REMOTE-PERSON-ON,0
RTRUE
SET 'REMOTE-PERSON,FALSE-VALUE
SET 'REMOTE-PERSON-LOC,FALSE-VALUE
SET 'REMOTE-PERSON-ON,FALSE-VALUE
RETURN REMOTE-PERSON-ON
.FUNCT INTERCOM-F,P,L
@@ -316,7 +316,7 @@
EQUAL? PRSA,V?LAMP-OFF,V?TURN,V?PUSH \FALSE
?THN6: EQUAL? HERE,CENTER-OF-LAB \?ELS12
FSET? VIDEOPHONE,MUNGBIT \?ELS15
CALL TELL-HINT,83,POWER-SUPPLY,0
CALL TELL-HINT,83,POWER-SUPPLY,FALSE-VALUE
RTRUE
?ELS15: EQUAL? P-XADJN,W?TEST \?ELS17
CALL A-O-K
@@ -346,7 +346,7 @@
PRINTI "No damage. Hull still watertight."
JUMP ?CND41
?ELS45: EQUAL? TEST-BUTTON-READOUT,REGULATOR-MSG \?ELS49
SET 'REGULATOR-MSG-SEEN,1
SET 'REGULATOR-MSG-SEEN,TRUE-VALUE
PRINTI "Lasers in operational computers are over-charging.
To correct, adjust "
PRINTD VOLTAGE-REGULATOR
@@ -499,7 +499,7 @@ WARNING: "
RTRUE
?ELS89: ZERO? WOMAN-ON-SCREEN \?CND83
PRINTR "Nothing changes."
?CND83: SET 'WOMAN-ON-SCREEN,0
?CND83: SET 'WOMAN-ON-SCREEN,FALSE-VALUE
CALL PHONE-ON,GLOBAL-BLY,AQUADOME,VIDEOPHONE
CALL THIS-IS-IT,PROBLEM
PRINTI "Ah, that's better! You recognize the woman as "
@@ -524,7 +524,7 @@ WARNING: "
RTRUE
?ELS82: EQUAL? PRSA,V?LAMP-OFF \?ELS99
FSET? VIDEOPHONE,ONBIT \FALSE
SET 'WOMAN-ON-SCREEN,0
SET 'WOMAN-ON-SCREEN,FALSE-VALUE
FCLEAR VIDEOPHONE,ONBIT
EQUAL? REMOTE-PERSON-ON,VIDEOPHONE \?ELS107
FSET? MICROPHONE,ONBIT \?ELS107
@@ -535,8 +535,8 @@ WARNING: "
?ELS99: EQUAL? PRSA,V?REPLY,V?LAMP-ON \?ELS115
ZERO? SUB-IN-TANK /?ELS115
FSET? VIDEOPHONE,ONBIT \?ELS120
CALL ALREADY,VIDEOPHONE,STR?47
JUMP ?CND118
CALL ALREADY,VIDEOPHONE,STR?42
RTRUE
?ELS120: FSET? CIRCUIT-BREAKER,OPENBIT /?THN123
FSET? VIDEOPHONE,MUNGBIT \?CND118
?THN123: PRINTR "You can't. It's conked out."
@@ -544,9 +544,9 @@ WARNING: "
PUT STACK,0,0
FSET VIDEOPHONE,ONBIT
ZERO? ALARM-RINGING /?ELS131
SET 'ALARM-RINGING,0
SET 'ALARM-RINGING,FALSE-VALUE
CALL QUEUE,I-ALARM-RINGING,0
SET 'WOMAN-ON-SCREEN,1
SET 'WOMAN-ON-SCREEN,TRUE-VALUE
CALL THIS-IS-IT,GLOBAL-BLY
PRINTI "As the "
PRINTD ALARM
@@ -692,9 +692,9 @@ WARNING: "
ZERO? VAL /?ELS44
PRINTI "Your "
EQUAL? P-ADVERB,W?CAREFULLY \?ELS52
PUSH STR?124
PUSH STR?118
JUMP ?CND48
?ELS52: PUSH STR?125
?ELS52: PUSH STR?119
?CND48: PRINT STACK
PRINTR " search reveals nothing exciting."
?ELS44: PRINTR "You didn't finish looking over the place."
@@ -707,7 +707,7 @@ WARNING: "
?ELS69: FSET? F,CONTBIT \?ELS71
CALL INHABITED?,F
ZERO? STACK /?ELS71
SET 'FLG,1
SET 'FLG,TRUE-VALUE
SET 'HR,HERE
SET 'HERE,F
CALL GLOBAL-HERE-F
@@ -715,8 +715,8 @@ WARNING: "
JUMP ?CND67
?ELS71: FSET? F,PERSON \?CND67
EQUAL? F,PLAYER /?CND67
SET 'FLG,1
CALL DESCRIBE-OBJECT,F,1,0
SET 'FLG,TRUE-VALUE
CALL DESCRIBE-OBJECT,F,TRUE-VALUE,0
?CND67: NEXT? F >F /?KLU84
?KLU84: JUMP ?PRG65
?REP66: ZERO? FLG \TRUE
@@ -752,7 +752,7 @@ WARNING: "
EQUAL? PRSA,V?WALK-TO \?ELS5
CALL IN-TANK-AREA?,HERE
ZERO? STACK /?ELS10
CALL ALREADY,PLAYER,STR?123
CALL ALREADY,PLAYER,STR?117
RSTACK
?ELS10: ZERO? SUB-IN-TANK /FALSE
CALL PERFORM,PRSA,NORTH-TANK-AREA
@@ -785,23 +785,23 @@ WARNING: "
PRINTR "You'll have to go west to do that."
?ELS41: EQUAL? PRSA,V?EMPTY \?ELS47
FSET? TANK-GATE,OPENBIT \?ELS52
CALL YOU-CANT,STR?70,TANK-GATE,STR?23
CALL YOU-CANT,STR?65,TANK-GATE,STR?21
RSTACK
?ELS52: FSET? ENGINE,ONBIT \?ELS54
CALL YOU-CANT,STR?70,ENGINE,STR?47
CALL YOU-CANT,STR?65,ENGINE,STR?42
RSTACK
?ELS54: ZERO? TEST-TANK-FULL /?ELS56
SET 'TEST-TANK-FULL,0
SET 'TEST-TANK-FULL,FALSE-VALUE
PRINTI "The "
PRINTD GLOBAL-WATER
PRINTR " quickly drains from the tank."
?ELS56: CALL ALREADY,TEST-TANK,STR?70
?ELS56: CALL ALREADY,TEST-TANK,STR?65
RSTACK
?ELS47: EQUAL? PRSA,V?FILL \?ELS63
ZERO? TEST-TANK-FULL /?ELS68
CALL ALREADY,TEST-TANK,STR?71
CALL ALREADY,TEST-TANK,STR?66
RSTACK
?ELS68: SET 'TEST-TANK-FULL,1
?ELS68: SET 'TEST-TANK-FULL,TRUE-VALUE
PRINTI "The "
PRINTD GLOBAL-WATER
PRINTR " quickly fills the tank, up to the level of the walkway."
@@ -866,9 +866,9 @@ WARNING: "
?ELS11: EQUAL? PRSA,V?EXAMINE,V?ANALYZE \?ELS15
PRINTI "This gate "
FSET? TANK-GATE,OPENBIT \?ELS22
PUSH STR?126
PUSH STR?113
JUMP ?CND18
?ELS22: PUSH STR?127
?ELS22: PUSH STR?120
?CND18: PRINT STACK
PRINTI " raised to permit submarines to go in or out of the tank. The gate can be raised or lowered by wall controls or by remote control from all "
CALL PRINT-NAME,LAST-NAME
@@ -921,29 +921,29 @@ WARNING: "
.FUNCT GATE-STATUS
ZERO? SUB-IN-TANK /?ELS5
FSET? TANK-GATE,OPENBIT \?ELS11
RETURN STR?23
RETURN STR?21
?ELS11: RETURN STR?17
?ELS5: ZERO? SUB-IN-DOME \?THN16
CALL SUB-OUTSIDE-AIRLOCK?
ZERO? STACK /?ELS15
?THN16: FSET? AIRLOCK-HATCH,OPENBIT \?ELS22
RETURN STR?23
RETURN STR?21
?ELS22: RETURN STR?17
?ELS15: RETURN STR?128
?ELS15: RETURN STR?121
.FUNCT TANK-STATUS
ZERO? SUB-IN-TANK /?ELS5
ZERO? TEST-TANK-FULL /?ELS11
RETURN STR?71
?ELS11: RETURN STR?70
RETURN STR?66
?ELS11: RETURN STR?65
?ELS5: ZERO? SUB-IN-DOME \?THN17
CALL SUB-OUTSIDE-AIRLOCK?
ZERO? STACK /?ELS16
?THN17: ZERO? AIRLOCK-FULL /?ELS23
RETURN STR?71
?ELS23: RETURN STR?70
?ELS16: RETURN STR?128
RETURN STR?66
?ELS23: RETURN STR?65
?ELS16: RETURN STR?121
.FUNCT AIRLOCK-HATCH-F
@@ -972,7 +972,7 @@ WARNING: "
.FUNCT OPEN-CLOSE-GATE,GATE,FULL,TANK
EQUAL? PRSA,V?RAISE,V?OPEN \?ELS3
FSET? GATE,OPENBIT \?ELS6
CALL ALREADY,GATE,STR?23
CALL ALREADY,GATE,STR?21
RTRUE
?ELS6: ZERO? FULL \?ELS8
PRINTI "You'd better fill the "
@@ -980,7 +980,7 @@ WARNING: "
PRINTR " first, unless you want to go surfing!"
?ELS8: EQUAL? GATE,TANK-GATE \?CND13
EQUAL? HERE,SUB \?CND13
SET 'OPENED-GATE-FROM-SUB,1
SET 'OPENED-GATE-FROM-SUB,TRUE-VALUE
?CND13: FSET GATE,OPENBIT
JUMP ?CND1
?ELS3: FSET? GATE,OPENBIT \?ELS22
@@ -1039,7 +1039,7 @@ WARNING: "
RSTACK
?ELS11: EQUAL? PRSA,V?OPEN \?ELS17
FSET? AIRLOCK-ROOF,OPENBIT \?ELS20
CALL ALREADY,AIRLOCK-ROOF,STR?23
CALL ALREADY,AIRLOCK-ROOF,STR?21
RTRUE
?ELS20: FSET? AIRLOCK-HATCH,OPENBIT \?CND18
CALL THIS-IS-IT,AIRLOCK-HATCH
@@ -1079,28 +1079,23 @@ WARNING: "
.FUNCT LAB-ASSISTANT-F
EQUAL? PRSA,V?WALK-TO,V?FIND \FALSE
CALL DO-INSTEAD-OF,LAB-ASSISTANT,LOWELL
CALL DO-INSTEAD-OF,LOWELL,LAB-ASSISTANT
RSTACK
.FUNCT DOC-LABORATORY-F
ZERO? SUB-IN-DOME \?THN6
EQUAL? PRSA,V?FIND \?ELS5
?THN6: CALL DO-INSTEAD-OF,HERE,DOC-LABORATORY
RTRUE
?ELS5: EQUAL? PRSA,V?WALK-TO \FALSE
CALL PERFORM,PRSA,DOME-LAB
EQUAL? PRSA,V?THROUGH,V?WALK-TO \FALSE
CALL PERFORM,V?WALK-TO,DOME-LAB
RTRUE
.FUNCT YOUR-LABORATORY-F
CALL IN-LAB?,HERE
ZERO? STACK \?THN6
EQUAL? PRSA,V?FIND \?ELS5
?THN6: CALL DO-INSTEAD-OF,HERE,YOUR-LABORATORY
ZERO? STACK /?ELS5
CALL DO-INSTEAD-OF,HERE,YOUR-LABORATORY
RTRUE
?ELS5: EQUAL? PRSA,V?WALK-TO \FALSE
CALL PERFORM,PRSA,CENTER-OF-LAB
?ELS5: EQUAL? PRSA,V?THROUGH,V?WALK-TO \FALSE
CALL PERFORM,V?WALK-TO,CENTER-OF-LAB
RTRUE
@@ -1135,8 +1130,9 @@ WARNING: "
.FUNCT CHAIR-F
EQUAL? PRSA,V?LOOK-UNDER,V?SIT \FALSE
PRINTR "That's just a waste of time."
EQUAL? PRSA,V?CLIMB-DOWN /?THN6
EQUAL? PRSA,V?CLIMB-ON,V?LOOK-UNDER,V?SIT \FALSE
?THN6: PRINTR "That's just a waste of time."
.FUNCT UNDERWATER-F
@@ -1148,12 +1144,12 @@ WARNING: "
.FUNCT GAME-F
EQUAL? PRSA,V?READ,V?PLAY,V?EXAMINE \FALSE
SET 'P-WON,0
SET 'P-WON,FALSE-VALUE
PRINTR "(You're doing it!)"
.FUNCT SOMETHING-F
SET 'P-WON,0
SET 'P-WON,FALSE-VALUE
PRINTI "(Type a real word instead of "
PRINTD SOMETHING
PRINTR ".)"

View File

@@ -5,7 +5,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
(PSEUDO "NOTHIN" RANDOM-PSEUDO)
(VALUE 0)
(GENERIC NULL-F)
(FLAGS BUSYBIT CONTBIT DOORBIT ;DRINKBIT FEMALE ;FOODBIT FURNITURE
(FLAGS BUSYBIT CONTBIT DOORBIT ;DRINKBIT FEMALE ;FOODBIT ;FURNITURE
INVISIBLE LIGHTBIT LOCKED MUNGBIT
NARTICLEBIT NDESCBIT ONBIT ON?BIT OPENBIT
PERSON READBIT RLANDBIT RMUNGBIT SEARCHBIT SURFACEBIT TAKEBIT
@@ -47,7 +47,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<VERB? ASK-ABOUT ASK-FOR SEARCH-FOR TELL-ABOUT>>
<AND <DOBJ? IT>
<VERB? ASK-CONTEXT-ABOUT ASK-CONTEXT-FOR FIND WHAT>>>
%<XTELL "\"I'm not sure what you're talking about.\"" CR>)>>
<TELL "\"I'm not sure what you're talking about.\"" CR>)>>
<OBJECT FLOOR
(IN GLOBAL-OBJECTS)
@@ -65,7 +65,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<PERFORM ,PRSA ,TEST-TANK>
<RTRUE>)>)
(<VERB? EXAMINE SEARCH LOOK-ON>
%<XTELL "You don't find anything new there." CR>)>>
<TELL "You don't find anything new there." CR>)>>
<OBJECT IU-GLOBAL
(IN GLOBAL-OBJECTS)
@@ -108,7 +108,7 @@ to the family name with your own unique inventions.")>
;"I-SNARK-ATTACKS provides output."
<RTRUE>)
(<AND <VERB? FIND> <NOT ,MONSTER-GONE>>
%<XTELL "It's attacking the " D ,AQUADOME "!" CR>
<TELL "It's attacking the " D ,AQUADOME "!" CR>
<RTRUE>)>>
<OBJECT GLOBAL-WEAPON
@@ -137,16 +137,16 @@ to the family name with your own unique inventions.")>
<TELL "The " D .OBJ " is mounted on " A ,CLAW "." CR>>
<ROUTINE CANT-SEND ()
%<XTELL "You can't send it. Only you can pilot it there." CR>>
<TELL "You can't send it. Only you can pilot it there." CR>>
<ROUTINE LOCAL-SUB-F ()
<COND (<VERB? PUT> <MORE-SPECIFIC>)
<COND (<VERB? PUT TURN> <MORE-SPECIFIC>)
(<VERB? SEARCH SEARCH-FOR>
<DO-INSTEAD-OF ,SUB ,LOCAL-SUB>
<RTRUE>)
(<VERB? EXAMINE>
<COND (<AND <NOT <GET ,ON-SUB 0>> <NOT <GET ,ON-SUB 1>>>
%<XTELL <GETP ,LOCAL-SUB ,P?TEXT>
<TELL <GETP ,LOCAL-SUB ,P?TEXT>
;"(You'll find that information in your SEASTALKER package.)" CR>
<RTRUE>)>
<COND (<GET ,ON-SUB 0>
@@ -156,7 +156,7 @@ to the family name with your own unique inventions.")>
<RTRUE>)
(<VERB? FIND>
<DISABLE <INT I-SEND-SUB>>
%<XTELL "It's right here!" CR>)
<TELL "It's right here!" CR>)
(<OR <VERB? LOOK-BEHIND>
<AND <VERB? LOOK-OUTSIDE> <EQUAL? ,HERE ,SUB>>>
<PERFORM ,V?LOOK-OUTSIDE ,SUB-WINDOW>
@@ -199,14 +199,14 @@ to the family name with your own unique inventions.")>
<PERFORM ,PRSA ,SUB-DOOR>
<RTRUE>)
(<AND <VERB? ANALYZE> <EQUAL? ,PRSI ,DAMAGE ,GLOBAL-SABOTAGE <>>>
%<XTELL "You can do this by pushing the " D ,TEST-BUTTON>
<TELL "You can do this by pushing the " D ,TEST-BUTTON>
<COND (<NOT <EQUAL? ,HERE ,SUB ,CRAWL-SPACE>>
<TELL " on the " D ,CONTROLS " inside">)>
<TELL "." CR>)
(<VERB? LAMP-ON>
<COND (<NOT <EQUAL? ,HERE ,SUB ;,CRAWL-SPACE>>
<THIS-IS-IT ,SUB>
%<XTELL "You have to be in the " D ,SUB " to start it." CR>)
<TELL "You have to be in the " D ,SUB " to start it." CR>)
;(<EQUAL? ,HERE ,CRAWL-SPACE>
<THIS-IS-IT ,SUB>
<TELL "You have to be in the pilot's seat to start it." CR>)
@@ -231,7 +231,7 @@ to the family name with your own unique inventions.")>
<THIS-IS-IT ,ENGINE>
<TELL "The engine is off!" CR>)
(T
%<XTELL
<TELL
"You can do this by setting the throttle to the speed you want (slow,
medium, or fast) and by moving the " D ,JOYSTICK
" in the " D ,INTDIR " you wish to go." CR
@@ -240,11 +240,11 @@ medium, or fast) and by moving the " D ,JOYSTICK
(<VERB? STOP>
<COND (<NOT <EQUAL? ,HERE ,SUB ;,CRAWL-SPACE>>
<THIS-IS-IT ,SUB>
%<XTELL "You have to be in the " D ,SUB " to stop it." CR>)
<TELL "You have to be in the " D ,SUB " to stop it." CR>)
;(<EQUAL? ,HERE ,CRAWL-SPACE>
<TELL "You have to be in the pilot's seat to stop it." CR>)
(<NOT <FSET? ,ENGINE ,ONBIT>>
%<XTELL "The engine is off!" CR>)
<TELL "The engine is off!" CR>)
(T ;<EQUAL? ,SUB-DEPTH ,TARGET-DEPTH>
<SETG TARGET-DEPTH ,SUB-DEPTH>
<TELL ,I-ASSUME " close the " D ,THROTTLE ".)" CR>
@@ -282,7 +282,7 @@ your present depth." CR>)>)>>
<OR <VERB? FIND>
<AND <VERB? ASK-ABOUT> <FSET? ,PRSO ,PERSON>>>>
<DISABLE <INT I-SEND-SUB>>
%<XTELL "The only sub at">
<TELL "The only sub at">
<RESEARCH-LAB>
<TELL " is your new " D ,GLOBAL-SUB ".
It's located in the test tank just south of " D ,YOUR-LABORATORY "." CR>)
@@ -311,16 +311,16 @@ It's located in the test tank just south of " D ,YOUR-LABORATORY "." CR>)
<RTRUE>)
(<EQUAL? ,HERE ,WEST-TANK-AREA>
<COND (<VERB? EXAMINE>
%<XTELL
<TELL
"These are valves, gauges and control gear needed to make full use of
the tank. Two important controls are the " D ,OPEN-GATE-BUTTON " and the
" D ,FILL-TANK-BUTTON ". This gear can be operated by remote control
from all " LN " subs." CR>)>)>>
<ROUTINE PHONE-ON (PERSON PWHERE ON ;WHERE)
<SETG REMOTE-PERSON .PERSON>
<SETG QCONTEXT .PERSON>
<THIS-IS-IT .PERSON>
<ROUTINE PHONE-ON (PER PWHERE ON ;WHERE)
<SETG REMOTE-PERSON .PER>
<SETG QCONTEXT .PER>
<THIS-IS-IT .PER>
<SETG REMOTE-PERSON-REMLOC .PWHERE>
<SETG REMOTE-PERSON-ON .ON>
<SETG REMOTE-PERSON-LOC ,HERE ;.WHERE>
@@ -343,7 +343,7 @@ from all " LN " subs." CR>)>)>>
<ROUTINE INTERCOM-F ("AUX" P L)
<COND (<VERB? LAMP-ON SAY-INTO>
%<XTELL "Try the command: CALL (someone) ON THE INTERCOM." CR>)
<TELL "Try the command: CALL (someone) ON THE INTERCOM." CR>)
(<VERB? PHONE>
<COND (<FSET? ,PRSO ,PERSON>
<SET P <GET ,CHARACTER-TABLE <GETP ,PRSO ,P?CHARACTER>>>
@@ -447,11 +447,6 @@ D ,ESCAPE-POD-UNIT " is not properly connected.">)
(SYNONYM SUPPLY)
(TEXT "(You'll find that information in your SEASTALKER package.)")>
;<OBJECT LIGHTS
(IN LOCAL-GLOBALS)
(DESC "lights")
(SYNONYM LIGHT LIGHTS)>
<OBJECT DISTRESS-CALL
(IN GLOBAL-OBJECTS)
(DESC "distress call")
@@ -501,7 +496,7 @@ D ,ESCAPE-POD-UNIT " is not properly connected.">)
(T <TELL "It's not ringing!" CR>)>)>>
<ROUTINE WHY-NOT-VP ()
%<XTELL "Why not turn on the " D ,VIDEOPHONE "?" CR>>
<TELL "Why not turn on the " D ,VIDEOPHONE "?" CR>>
<OBJECT VIDEOPHONE
(IN LOCAL-GLOBALS)
@@ -552,7 +547,7 @@ turn the knob." CR>)
<TELL
"An " D ,ALARM " on the " D ,VIDEOPHONE " is ringing." CR>)>)
(<AND <VERB? ANALYZE> <IOBJ? GLOBAL-SABOTAGE> ,SUB-IN-TANK>
%<XTELL
<TELL
"If you wish
to determine at once whether any saboteur or other intruder may have
penetrated">
@@ -568,13 +563,13 @@ penetrated">
<RTRUE>)
(<REMOTE-VERB?> <RFALSE>)
(<NOT <EQUAL? ,HERE ,CENTER-OF-LAB ,COMM-BLDG>>
%<XTELL "You must be in the ">
<TELL "You must be in the ">
<COND (,SUB-IN-TANK <TELL D ,CENTER-OF-LAB>)
(T <TELL D ,COMM-BLDG>)>
<TELL " to do that." CR>)
(<VERB? ADJUST FIX TURN>
<COND (<FSET? ,VIDEOPHONE ,MUNGBIT>
%<XTELL
<TELL
"You can't fix the " D ,VIDEOPHONE " until you know what is wrong.
The simplest way to find out is to consult your "LN" " D ,COMPUTESTOR ",
which is programmed to troubleshoot many of your inventions.
@@ -591,7 +586,7 @@ D ,GLOBAL-TECHNICIAN "." CR>
<PHONE-ON ,GLOBAL-BLY ,AQUADOME ,VIDEOPHONE>
;<ENABLE <QUEUE I-SHARON-TO-HALLWAY 12>>
<THIS-IS-IT ,PROBLEM>
%<XTELL
<TELL
"Ah, that's better! You recognize the woman as " D ,BLY ", who's in
charge of the " ,URS " of " D ,IU-GLOBAL ", called
the " D ,AQUADOME ", just off the Atlantic coast. \"" FN "! " FN "!\" she's
@@ -612,10 +607,11 @@ saying. \"This is the " D ,AQUADOME " calling">
<RTRUE>)
(T
<PHONE-OFF>
%<XTELL "The screen goes dark." CR>)>)
<TELL "The screen goes dark." CR>)>)
(<AND <VERB? LAMP-ON REPLY> ,SUB-IN-TANK>
<COND (<FSET? ,VIDEOPHONE ,ONBIT>
<ALREADY ,VIDEOPHONE "on">)
<ALREADY ,VIDEOPHONE "on">
<RTRUE>)
(<OR <FSET? ,CIRCUIT-BREAKER ,OPENBIT>
<FSET? ,VIDEOPHONE ,MUNGBIT>>
<TELL "You can't. It's conked out." CR>
@@ -627,17 +623,17 @@ saying. \"This is the " D ,AQUADOME " calling">
<QUEUE I-ALARM-RINGING 0>
<SETG WOMAN-ON-SCREEN T>
<THIS-IS-IT ,GLOBAL-BLY>
%<XTELL
<TELL
"As the " D ,ALARM " stops ringing, a picture of a woman holding a " D
,MICROPHONE " appears, and you can hear her voice from the speaker. But
both sound and picture are fuzzy." CR>
<SCORE-OBJ ,VIDEOPHONE>
<RTRUE>)
(T %<XTELL "A test pattern appears." CR>)>)
(T <TELL "A test pattern appears." CR>)>)
(<VERB? PHONE>
<COND (<OR ,WOMAN-ON-SCREEN
<EQUAL? ,REMOTE-PERSON-ON ,VIDEOPHONE>>
%<XTELL "You should finish talking with ">
<TELL "You should finish talking with ">
<COND (,WOMAN-ON-SCREEN <TELL "the woman">)
(T <TELL D ,REMOTE-PERSON>)>
<TELL " first." CR>
@@ -646,7 +642,7 @@ both sound and picture are fuzzy." CR>
<TELL "There's no answer." CR>)
(<AND <DOBJ? AQUADOME GLOBAL-BLY> ,SUB-IN-TANK>
<COND (,BLY-TOLD-PROBLEM
%<XTELL
<TELL
"There's no answer. The crew must be busy with the " D ,SNARK "." CR>
<RTRUE>)
(,ALARM-RINGING
@@ -731,7 +727,7 @@ both sound and picture are fuzzy." CR>
<PERFORM ,V?LOOK-OUTSIDE ,SUB-WINDOW>
<RTRUE>)>)
(<VERB? SWIM THROUGH>
%<XTELL "This is no time for a swim, " FN "!" CR>)>>
<TELL "This is no time for a swim, " FN "!" CR>)>>
<OBJECT SEA
(IN GLOBAL-OBJECTS)
@@ -751,11 +747,11 @@ both sound and picture are fuzzy." CR>
<COND (<OR ,SUB-IN-DOME
,SUB-IN-OPEN-SEA
<==? ,NOW-TERRAIN ,SEA-TERRAIN>>
%<XTELL "You're in it!" CR>)
<TELL "You're in it!" CR>)
(<EQUAL? ,HERE ,SUB ,CRAWL-SPACE>
%<XTELL
<TELL
"The nautical chart in your SEASTALKER package should help." CR>)
(T %<XTELL "First you must get in the " D ,SUB "." CR>)>)>>
(T <TELL "First you must get in the " D ,SUB "." CR>)>)>>
<OBJECT HER
(IN GLOBAL-OBJECTS)
@@ -821,7 +817,7 @@ both sound and picture are fuzzy." CR>
<ROUTINE GLOBAL-HERE-F ("AUX" (FLG <>) F HR TIM VAL)
<COND (<VERB? KNOCK>
%<XTELL "Knocking on the walls reveals nothing unusual." CR>)
<TELL "Knocking on the walls reveals nothing unusual." CR>)
(<VERB? PUT TIE-TO>
<MORE-SPECIFIC>)
(<VERB? SEARCH EXAMINE>
@@ -831,25 +827,25 @@ both sound and picture are fuzzy." CR>
<SET TIM 3>)
(T <SET TIM <+ 2 <GETP ,HERE ,P?SIZE>>>)>
<COND (<==? ,P-ADVERB ,W?CAREFULLY> <SET TIM <* 2 .TIM>>)>
%<XTELL
<TELL
"(It's better to examine or search one thing at a time. It would take a
long time to search a whole room or area thoroughly. A ">
<COND (<==? ,P-ADVERB ,W?CAREFULLY> <TELL "careful">)
(T <TELL "brief">)>
%<XTELL " search would take
<TELL " search would take
" N .TIM " turns, and it might not reveal much. Would you like
to do it anyway?)">
<COND (<YES?>
<COND (<==? ,M-FATAL <SET VAL <INT-WAIT .TIM>>>
<RTRUE>)
(.VAL
%<XTELL "Your "
<TELL "Your "
<COND (<==? ,P-ADVERB ,W?CAREFULLY>
"careful")
(T "brief")>
" search reveals nothing exciting." CR>)
(T
%<XTELL
<TELL
"You didn't finish looking over the place." CR>)>)
(T <TELL "Okay." CR>)>)
(<VERB? WHAT ANALYZE ;ASK-ABOUT>
@@ -878,14 +874,14 @@ to do it anyway?)">
<ROUTINE AIR-F ()
<COND (<VERB? EXAMINE>
%<XTELL "You can see through the air around you." CR>)
<TELL "You can see through the air around you." CR>)
(<VERB? WALK-TO>
<TELL "It's all around you!" CR>)
(<VERB? SMELL>
<COND ;(<OUTSIDE? ,HERE>
%<XTELL "The air is clear and fresh." CR>)
<TELL "The air is clear and fresh." CR>)
(<FRESH-AIR? ,HERE> <RTRUE>)
(T %<XTELL "The air is rather musty." CR>)>)>>
(T <TELL "The air is rather musty." CR>)>)>>
<ROUTINE GENERIC-TANK-F (OBJ)
<COND ;(<VERB? LEAVE>
@@ -927,7 +923,7 @@ to do it anyway?)">
(<EQUAL? ,NOW-TERRAIN ,BAY-TERRAIN>
<TOO-FAR-AWAY ,TEST-TANK>)
(<NOT ,SUB-IN-TANK>
%<XTELL "You're nowhere near">
<TELL "You're nowhere near">
<RESEARCH-LAB>
<TELL "!" CR>)
(<AND <OR <NOT <EQUAL? ,HERE ,SUB>> <NOT ,SUB-IN-TANK>>
@@ -936,15 +932,15 @@ to do it anyway?)">
;<SETG P-WON <>>
<NOT-HERE ,TEST-TANK>)
(<VERB? BOARD>
%<XTELL "That won't do any good." CR>)
<TELL "That won't do any good." CR>)
(<VERB? ;DROP LEAVE>
%<XTELL
<TELL
"You can either walk north, or get in the " D ,SUB " and go east." CR>)
(<VERB? ANALYZE EXAMINE LOOK-INSIDE>
<FILL-TANK-BUTTON-F>)
(<AND <VERB? EMPTY FILL>
<NOT <EQUAL? ,HERE ,WEST-TANK-AREA ,SUB>>>
%<XTELL "You'll have to go west to do that." CR>
<TELL "You'll have to go west to do that." CR>
<RTRUE>)
(<VERB? EMPTY>
<COND (<FSET? ,TANK-GATE ,OPENBIT>
@@ -961,12 +957,12 @@ to do it anyway?)">
<ALREADY ,TEST-TANK "full">)
(T
<SETG TEST-TANK-FULL T>
%<XTELL
<TELL
"The " D ,GLOBAL-WATER " quickly fills the tank, up to the level of the
walkway." CR>)>)
(<VERB? OPEN CLOSE> <PERFORM ,PRSA ,TANK-GATE> <RTRUE>)
(<VERB? SWIM THROUGH>
%<XTELL "This is no time for a swim, " FN "!" CR>)>>
<TELL "This is no time for a swim, " FN "!" CR>)>>
<OBJECT FILL-TANK-BUTTON
(IN LOCAL-GLOBALS ;SUB)
@@ -1011,14 +1007,14 @@ walkway." CR>)>)
<GLOBAL OPENED-GATE-FROM-SUB <>>
<ROUTINE TANK-GATE-F ()
<COND (<VERB? FIND>
%<XTELL "It's on the east wall of the test tank." CR>)
<TELL "It's on the east wall of the test tank." CR>)
(<REMOTE-VERB?> <RFALSE>)
(<AND <NOT <EQUAL? ,HERE ,SUB>>
<NOT <IN-TANK-AREA? ,HERE>>>
;<SETG P-WON <>>
<NOT-HERE ,TANK-GATE>)
(<VERB? ANALYZE EXAMINE>
%<XTELL
<TELL
"This gate "
<COND (<FSET? ,TANK-GATE ,OPENBIT> "is") (T "can be")>
" raised to
@@ -1027,7 +1023,7 @@ be raised or lowered by wall controls or by remote control from
all " LN " subs." CR>)
(<VERB? OPEN CLOSE RAISE DROP>
<COND (<NOT <EQUAL? ,HERE ,WEST-TANK-AREA ,SUB>>
%<XTELL "You'll have to go west to do that." CR>
<TELL "You'll have to go west to do that." CR>
<RTRUE>)>
<OPEN-CLOSE-GATE ,TANK-GATE ,TEST-TANK-FULL ,TEST-TANK>)>>
@@ -1085,7 +1081,7 @@ all " LN " subs." CR>)
<ROUTINE AIRLOCK-HATCH-F ()
<COND (<VERB? FIND>
%<XTELL
<TELL
"It's on the south wall of the " D ,AQUADOME " " D ,AIRLOCK "." CR>)
(<REMOTE-VERB?> <RFALSE>)
(<AND <OR <NOT ,SUB-IN-DOME>
@@ -1093,7 +1089,7 @@ all " LN " subs." CR>)
<NOT <SUB-OUTSIDE-AIRLOCK?>>>
<TOO-FAR-AWAY ,AIRLOCK-HATCH>)
(<NOT <0? ,SNARK-ATTACK-COUNT>>
%<XTELL "It's too late now! The machinery is jammed!" CR>)
<TELL "It's too late now! The machinery is jammed!" CR>)
(<VERB? OPEN CLOSE RAISE DROP>
<OPEN-CLOSE-GATE ,AIRLOCK-HATCH ,AIRLOCK-FULL ,AIRLOCK>)>>
@@ -1103,7 +1099,7 @@ all " LN " subs." CR>)
<ALREADY .GATE "open">
<RTRUE>)
(<NOT .FULL>
%<XTELL
<TELL
"You'd better fill the " D .TANK " first, unless you want to go surfing!" CR>
<RTRUE>)
(T
@@ -1154,7 +1150,7 @@ all " LN " subs." CR>)
<ROUTINE AIRLOCK-ROOF-F ()
<COND (<VERB? FIND>
%<XTELL "It covers the " D ,AQUADOME " " D ,AIRLOCK "." CR>)
<TELL "It covers the " D ,AQUADOME " " D ,AIRLOCK "." CR>)
(<REMOTE-VERB?> <RFALSE>)
(<OR <NOT ,SUB-IN-DOME>
<AND <NOT <EQUAL? ,HERE ,SUB ,AIRLOCK ,BLY-OFFICE>>
@@ -1167,7 +1163,7 @@ all " LN " subs." CR>)
(<FSET? ,AIRLOCK-HATCH ,OPENBIT>
;<ENABLE <QUEUE I-DOME-FLOODED 2>>
<THIS-IS-IT ,AIRLOCK-HATCH>
%<XTELL
<TELL
"A safety mechanism prevents it. The " D ,AIRLOCK-HATCH " is open!" CR>
<RTRUE>)>
<FSET ,AIRLOCK-ROOF ,OPENBIT>
@@ -1186,7 +1182,7 @@ all " LN " subs." CR>)
<TELL "." CR>
;<DISABLE <INT I-DOME-FLOODED>>
<COND (<AND ,GREENUP-ESCAPE <G? 3 ,GREENUP-ESCAPE>>
%<XTELL
<TELL
"Greenup can't get into the " D ,SUB " and escape any more. ">
<GREENUP-CUFF>)>
<RTRUE>)>>
@@ -1194,7 +1190,7 @@ all " LN " subs." CR>)
<OBJECT PRIVATE-MATTER
(DESC "private matter")
;(IN GLOBAL-OBJECTS)
(ADJECTIVE PERSONNEL ;PRIVATELY)
(ADJECTIVE PERSONAL ;PRIVATELY)
(SYNONYM MATTER)>
<OBJECT EVIDENCE
@@ -1254,7 +1250,7 @@ all " LN " subs." CR>)
<ROUTINE LAB-ASSISTANT-F ()
<COND (<VERB? FIND WALK-TO>
<DO-INSTEAD-OF ,LAB-ASSISTANT ,LOWELL>)>>
<DO-INSTEAD-OF ,LOWELL ,LAB-ASSISTANT>)>>
"? Delete this object and put following in local-globals?"
<OBJECT DOC-LABORATORY
@@ -1267,11 +1263,11 @@ all " LN " subs." CR>)
(ACTION DOC-LABORATORY-F)>
<ROUTINE DOC-LABORATORY-F ()
<COND (<OR ,SUB-IN-DOME ;<IN-DOME? ,HERE> <VERB? FIND>>
<COND ;"(<OR ,SUB-IN-DOME ;<IN-DOME? ,HERE> <VERB? FIND>>
<DO-INSTEAD-OF ,HERE ,DOC-LABORATORY>
<RTRUE>)
(<VERB? WALK-TO>
<PERFORM ,PRSA ,DOME-LAB>
<RTRUE>)"
(<VERB? WALK-TO THROUGH>
<PERFORM ,V?WALK-TO ,DOME-LAB>
<RTRUE>)>>
<OBJECT YOUR-LABORATORY
@@ -1284,11 +1280,11 @@ all " LN " subs." CR>)
(ACTION YOUR-LABORATORY-F)>
<ROUTINE YOUR-LABORATORY-F ()
<COND (<OR <IN-LAB? ,HERE> ;,SUB-IN-TANK <VERB? FIND>>
<COND (<OR <IN-LAB? ,HERE> ;",SUB-IN-TANK <VERB? FIND>">
<DO-INSTEAD-OF ,HERE ,YOUR-LABORATORY>
<RTRUE>)
(<VERB? WALK-TO>
<PERFORM ,PRSA ,CENTER-OF-LAB>
(<VERB? WALK-TO THROUGH>
<PERFORM ,V?WALK-TO ,CENTER-OF-LAB>
<RTRUE>)>>
<ROUTINE GENERIC-LABORATORY-F (OBJ)
@@ -1315,7 +1311,7 @@ all " LN " subs." CR>)
<VERB? ASK-ABOUT>
;<NOT <EQUAL? ,WINNER ,PLAYER>>>>
<COND (.X <TELL "\"">)>
%<XTELL "I guess you'll have to figure that out, " FN ".">
<TELL "I guess you'll have to figure that out, " FN ".">
<COND (.X <TELL "\"">)>
<CRLF>)>>
@@ -1323,12 +1319,12 @@ all " LN " subs." CR>)
(IN LOCAL-GLOBALS)
(DESC "chair")
(SYNONYM CHAIR CHAIRS SEAT)
(FLAGS NDESCBIT FURNITURE)
(FLAGS NDESCBIT ;FURNITURE)
(ACTION CHAIR-F)>
<ROUTINE CHAIR-F ()
<COND (<VERB? SIT LOOK-UNDER>
%<XTELL "That's just a waste of time." CR>)>>
<COND (<VERB? SIT LOOK-UNDER CLIMB-ON CLIMB-DOWN>
<TELL "That's just a waste of time." CR>)>>
<OBJECT UNDERWATER
(IN GLOBAL-OBJECTS)
@@ -1339,7 +1335,7 @@ all " LN " subs." CR>)
<ROUTINE UNDERWATER-F ()
<COND (<VERB? WALK>
%<XTELL "You must be in the " D ,SUB " to do that." CR>)>>
<TELL "You must be in the " D ,SUB " to do that." CR>)>>
<OBJECT GAME
(IN GLOBAL-OBJECTS)
@@ -1351,7 +1347,7 @@ all " LN " subs." CR>)
<ROUTINE GAME-F ()
<COND (<VERB? EXAMINE PLAY READ>
<SETG P-WON <>>
%<XTELL "(You're doing it!)" CR>)>>
<TELL "(You're doing it!)" CR>)>>
<OBJECT SOMETHING
(IN GLOBAL-OBJECTS)
@@ -1361,7 +1357,7 @@ all " LN " subs." CR>)
<ROUTINE SOMETHING-F ()
<SETG P-WON <>>
%<XTELL "(Type a real word instead of " D ,SOMETHING ".)" CR>>
<TELL "(Type a real word instead of " D ,SOMETHING ".)" CR>>
"WARNING: object numbers for LEFT & RIGHT must not equal direction numbers!"

75
hintbk.mss Normal file
View File

@@ -0,0 +1,75 @@
@style (spacing 1)
@title (Seastalker: end of hint booklet)
@pageheading(DRAFT)
@majorheading (SEASTALKER: END OF HINT BOOKLET)
* Just for fun, have you:
@begin(itemize)
read the diagram on the workbench?
told Tip to leave the sub and then closed the hatch?
picked up something in an extensor claw before leaving the lab?
crashed the submarine into the Aquadome?
taken the electrolyte relay but not screwed it in?
said "Hello" to anyone on the sonarphone?
asked anyone besides Doc to fix the gash in your arm?
tried to shoot the Sea Cat with a tranquilizer dart?
tried to arrest an object instead of a person?
tried to clean or wipe anything?
tried to find someone who's in the same place as you?
tried to climb the sea wall?
tried to break down a door?
tried to enter something that you're holding?
asked anyone about yourself?
asked anyone to find you?
kicked anyone?
rubbed anyone?
tried to look inside or under anyone?
looked up?
kissed anyone or anything?
slapped anyone or anything, including yourself or a handcuffed person?
thrown something at a person and then at an object?
tried to break a window in the Aquadome?
tried to turn off a person?
tried to wake up anyone?
tried to eat a meal or take the food?
tried to shoot yourself?
followed an inanimate object?
played something?
typed HELLO SAILOR?
typed RESTART or RESTORE at the very beginning instead of your name?
cursed at the program?
@end(itemize)

673
hintbook.txt Normal file
View File

@@ -0,0 +1,673 @@
HINTBOOK FOR SEASTALKER
Table of Contents
Introduction............
The Lab.................
The Scimitar............
The Bay and Ocean.......
The Aquadome............
The Battle..............
How Points are Scored...
For Your Amusement......
The Lab
Why is the alarm bell ringing?
A. Someone is trying to contact you.
B. Someone is calling the lab on the videophone.
C. Have you tried turning off the alarm?
D. If you have, then you know you should TURN ON THE VIDEOPHONE.
The picture and sound on the videophone are fuzzy. What should I do?
A. You could try tuning the videophone.
B. Type TUNE THE VIDEOPHONE.
How can I get better reception on the videophone?
A. Call Frobton Cable Vision and have cable installed. Much better reception, plus lots of movies!
How do I finish my conversation on the videophone?
A. How do you normally finish a phone conversation?
B. Type in SAY "GOOD-BYE"
Why can't I walk away with the microphone?
A. The cord is too short.
Why did the videophone conk out?
A. Power failure?
B. Someone in the lab shut off the power...
C. ... by opening the circuit breaker. Who was it?
D. Use the microwave security scanner.
E. There are only three people in the lab ...
F. ... and you and Tip were in the same room when the videophone conked out.
G. That leaves only one person.
H. That person is Sharon.
How can I fix the videophone?
A. Is there a technician nearby?
B. If not you may have to fix it yourself.
C. Go to the computestor and ask about the videophone.
D. Go to the electrical panel and close the circuit breaker.
What is the storage closet used for?
A. Storage. But you don't have anything to store.
B. Nothing.
Why does Tip always follow me around?
A. He doesn't ALWAYS follow you around.
B. He tries to keep you in sight, except when he's working on something.
C. He's your pal, and there to help.
Why does Sharon Kemp look embarrassed?
A. There is something about her you don't know.
B. And it has nothing to do with her mother.
C. Try reading the article in Tip's magazine.
D. Sharon opened the circuit breaker, which made the Videophone conk out. Hmmm...
Is there anything I should look at in the file cabinet?
A. There seems to be nothing interesting about the papers.
B. But there are a lot of them.
C. The papers are of no help to you.
How do I get out of the lab building?
A. Have you tried all the doors in all the rooms?
B. There's a door to the parking lot, but you can't open it.
C. The only way out is by submarine.
Where is the submarine?
A. Right where you left it.
B. Did you try to FIND it.
C. The Scimitar is in the test tank.
D. Go south from the lab center, three times.
Why won't the submarine start?
A. Try asking the COMPUTESTOR.
What should I do with the catalyst capsule?
A. Don't try to swallow it.
B. The capsule powers the Scimitar's plasma-fusion reactor.
C. Take the capsule and try inserting it in the reactor.
D. PUT THE CAPSULE IN THE REACTOR THEN CLOSE THE REACTOR.
The Scimitar
How do I get the Scimitar moving?
A. Look at the control panel.
B. You'll need the catalyst capsule.
C. Put the capsule in the reactor.
D. Close the reactor.
E. Turn on the reactor.
F. Close the entry hatch.
G. Fill the test tank.
H. Open the gate.
I. Start the engine.
J. Open the throttle.
K. Go east.
Should I set my throttle to slow, medium, or fast?
A. It depends on how quickly you want to reach your destination.
B. Remember, the Aquadome is in trouble and your help is needed.
C. On the other hand, you haven't fully tested this sub yet.
D. Set it to slow the first time you play, then experiment later.
The Scimitar is overheating! What should I do?
A. If your throttle is set to slow, relax.
B. It's not?! Better do something quick!
C. Did the program prompt you to press the test button? If so, you know that you should ...
D. Adjust the voltage regulator located in the engine crawl space.
E. Be careful; it's dangerous.
How do I open the engine access panel?
A. Read the sign.
B. Ask Tip for the Universal Tool.
C. Type OPEN THE ACCESS PANEL.
How can I fix the regulator?
A. Open the engine access panel.
B. Enter the engine crawl space.
C. Type FIX THE REGULATOR.
How do I keep from disturbing the machinery in the crawl space?
A. Don't spend any more time than you need in the crawl space.
B. When you are in the crawl space, use the word "carefully" in each command. Example: FIX REGULATOR CAREFULLY.
C. Enter the crawl space, fix the regulator, then leave.
D. The more time you spend in the engine crawl space, the greater your chances of disturbing the machinery.
How do I use the sonarscope?
A. You can use it only in the bay and near the Aquadome.
B. When you look at it, you see a small area around the Scimitar.
C. The sonarscope shows obstacles at the same depth as the Scimitar.
D. To check for obstacles below you, use the Depth Finder.
How do I use the Depth Finder?
A. Type EXAMINE THE DEPTH FINDER.
B. The Depth Finder tells you how deep you are and how far below you the bottom is.
How do I use the hydrophone?
A. Type LISTEN TO HYDROPHONE.
How do I use the temperature gauge?
A. Type LOOK AT GAUGE.
The Bay and Ocean
How do I keep from getting hit by the speedboats?
A. Duck!
B. You can avoid them if you are underwater.
C. If you DIVE TO 5 METERS, you will not be hit by the speedboats.
How do I find my way through the bay?
A. Once you are in the sub and in the bay, you should look at the Sonarscope.
B. Use the Sonarscope and the map of Frobton Bay to avoid shoals and safely navigate through the bay.
C. Head for the opening in the sea wall.
Ships keep running into Tip and me. What should I do?
A. Stay out of their way.
B. Go around them.
C. You're in a submarine -- dive under them.
D. You will have to dive to at least 15 meters to avoid the ships' keels, which are 10 meters deep.
Where is the Aquadome?
A. Ask Commander Bly when you talk to her on the Videophone.
B. Ask Tip. He's a sharp guy.
C. Look at your map of Frobton Bay.
D. The Aquadome can be reached only from the open sea.
E. When you reach the open sea, turn on the Autopilot.
What is the Friendly Mermaid trying to tell me?
A. You left the gas cap off the sub.
B. She's telling you the directions to the Aquadome.
C. But it's very hard to hear her ...
D. ... because there is no Friendly Mermaid in this game. Remember, some of these questions and answers are fakes. Don't assume the absense or presents of a question means it's important. Also don't assume long answers are always associated with important questions.
E. Because that was hardly the case here!
The Aquadome
How do I enter the Aquadome?
A. When the autopilot shuts off, type DOCK.
Why is everyone having trouble breathing?
A. Did you remember to use your mouth-wash this morning?
B. There must be something wrong with the air.
C. I hope you have your emergency oxygen gear.
D. Even if you do have it, you should find out what is wrong with the air supply system.
How can I fix the air supply system?
A. First you must OPEN THE DOOR WITH THE UNIVERSAL TOOL.
B. If you don't have the Universal Tool, ask Tip for it.
C. Something inside has been unscrewed.
D. Could it be the electrolyte relay?
E. Type TAKE RELAY AND SCREW IT INTO THE EMPTY SPACE.
Where is the Fram Bolt wrench?
A. Did you read the sign?
B. It should be on the hook.
C. Someone misplaced the Fram Bolt wrench.
D. It might have been the same person who unscrewed the electrolyte relay.
Now that I am at the Aquadome, what should I do?
A. When Commander Bly asks if she can speak to you in private, you should say yes.
B. Once Commander Bly starts telling you about the problems at the Aquadome, you will have an idea what you should do.
Is the "black box" useful for anything?
A. Yes.
B. Try opening the black box.
C. Any time after Commander Bly tells you about the "black box" ask Tip about his idea.
Should I let Mick examine my sub?
A. Yes.
B. You really don't have any choice.
Why does Commander Bly want to talk to me?
A. She has something important to tell you.
B. When Commander Bly asks for a word in private, go with her.
C. When she tells you she has evidence, ASK HER ABOUT THE EVIDENCE.
D. The "black box" is her evidence.
Do I need the emergency survival unit?
A. It would come in handy if there were an emergency.
B. You also need it installed to get all the points in the game.
What is that "oddly shaped metallic object"?
A. It's the Fram Bolt wrench.
B. It's supposed to be hanging on the hook next to the air supply system.
C. In case of an emergency, you would need the Fram Bolt wrench to repair the air supply system.
D. Someone took the Fram Bolt wrench from the hook and dropped it under Commander Bly's desk.
E. It was the same person who sabotaged the air supply system by unscrewing the electrolyte relay.
What happened to the Air Supply System?
A. Someone unscrewed the Electrolyte Relay, causing the system to malfunction ...
B. ... and that someone also took the Fram Bolt Wrench so no one could repair the Air Supply System.
Is Commander Bly in love with anyone?
A. No.
B. But might someone else be in love with her?
C. Have you checked personal storage areas?
D. Including the lockers?
E. Did you read the diary?
F. Then you know Doc Horvak is in love with Commander Bly.
I found this 'mushy' diary. What should I do with it?
A. Reading a diary is an invasion of privacy.
B. But this is a life-or-death situation.
C. Under the circumstances, you should read it.
D. Doc Horvak sabotaged the air supply system because he wanted to embarrass Commander Bly.
E. Take the diary and the photo and show them to Commander Bly.
Amy Lowell asked to borrow the Scimitar. Should I let her?
A. Ask her if she has a submariner's license.
B. Tell her you promised the Scimitar to Tip for the day.
C. Amy never asks to borrow the Scimitar. You must be cheating.
D. Ask your parents to firmly punish you by ...
E. ... buying "Suspended" and making you complete the game before they will feed you again.
What do I do with the dart gun?
A. Doc Horvak can fix it.
B. Doc Horvak will prepare a special tranquilizer for the dart gun, which you can use on the Snark if you need to.
C. Show Doc Horvak the magazine that Tip brought along.
D. When Doc Horvak asks you what he should do with the dart gun, type DOC, MOUNT DART GUN ON SUB.
What about the "49er" Prospecting Bazooka?
A. A bazooka seems as if it might come in handy.
B. There are several ways to mount the bazooka on the Scimitar.
C. One way is to find the bazooka. Take it and mount it on the claw of the Scimitar yourself.
D. Or, when Commander Bly asks you if you can think of any high-power weapon, tell her about the bazooka. Get the bazooka, then tell Commander Bly to mount it on the Scimitar.
How do I know when I'm ready to leave the Aquadome?
A. Commander Bly will ask you if you are ready to take off.
What does the fine grid do?
A. The fine grid will show objects within 25 meters of the Scimitar. The regular sonar shows objects within 2,500 meters.
B. Having the fine grid installed will give you a better picture of objects very near the Scimitar, like the Snark.
C. So when Tip asks if he should install it, tell him yes.
Who put the stew in the galley?
A. Stu Galley?
B. The cook?
C. What stew? There is no stew in this game.
Is someone trying to kill me?
A. Have you been killed yet?
B. Someone replaced the stimulant in the syringe with poison.
C. Someone is trying to kill you.
D. Someone who worked on the Scimitar.
E. Someone who installed the Emergency Survival Unit.
F. Someone who installed the part under your seat.
G. Give up?
H. That someone is Bill Greenup.
What should I do with the syringe?
A. Talk to the person who installed the emergency survival unit under your seat.
B. Ask that person about the syringe.
Hey, where is Bill Greenup going and how can I stop him?
A. If you don't know why Bill is running away, don't develop any more of the answers for this question until you do.
B. Bill is running away because you know he tried to kill you.
C. One way to stop him is to close the Docking Tank roof when he first appears on the station monitor.
D. Another way is to turn off the Docking Tank electricity
. Then he won't be able to open the gate and escape in the Scimitar.
D. Another way to stop Bill is to flood the Docking Tank before he enters the Scimitar.
I'm ready to leave the Aquadome. What should I do?
A. Remember what you had to do to leave the Lab's Test Tank?
B. Flood the tank, open the gate, start the engine, open the throttle and go south.
The Battle
Where's the Snark?
A. Try asking Commander Bly.
B. Or any of the crew members.
C. Go southeast from the Aquadome.
We have spotted a cloud of silt ahead. Should we continue?
A. It might be the Snark. Are you prepared to deal with it?
B. Yes, you should continue.
C. Besides, you don't have any choice.
How did Sharon get in the Seacat?
A. Hitch-hiked?
B. Dr. Thorpe picked her up at the Research Lab.
Is Sharon a traitor?
A. She opened the circuit breaker, didn't she?
B. She left the catalyst capsule out of the Scimitar, didn't she?
C. And now she is in the Seacat with the man who is trying to kill you. What do you think?
D. Try saying something to her over the sonarphone.
E. Of course she isn't a traitor. She was just playing along with Dr. Thorpe in the hope of stopping him.
Is Tip a traitor?
A. Tip, your good-buddy, pal and friend, a traitor?
B. Tip, who has stood by you in this game while you killed both yourself and him many times, a traitor?
C. No way. You should be ashamed of yourself for even developing the answers to this question.
D. You owe Tip an apology.
Are you a traitor?
A. Why are you wasting your developing fluid on this answer.
B. Go ahead and develop, there's plenty of fluid.
C. And plenty more dumb answers.
D. See, I told you.
E. You can stop now.
F. Some people never learn!
G. Absolutely never!!!
Why can't I get around the Snark?
A. The Snark and the Seacat are moving too fast?
B. Maybe you should move faster.
C. Try setting the throttle to medium.
D. Better yet, try setting the throttle to fast.
What should I do with the dart?
A. You could tranquilize the Snark.
B. Or maybe that isn't such a good idea.
C. If you tranquilize the Snark there won't be much to stop Dr. Thorpe from blasting you with his rocket.
What should I do with the bazooka?
A. You could try shooting the Snark.
B. But the Snark has tremedous scientific value, so it would be a waste to shoot it.
C. Another good reason not to shoot the Snark with the bazooka is that then Dr. Thorpe will have a clear shot at you!
D. So why not shoot the Seacat's Power Pod and disable it?
How Points are Scored
(use as a last resort)
Points / Actions
1 Turning on the videophone.
1 Tuning the videophone.
1 Picking up the microphone.
-3 The circuit breaker is opened.
3 Closing the circuit breaker.
5 Taking the catalyst capsule.
1 Entering the Scimitar.
5 Starting the reactor.
5 Starting the engine.
5 Entering Frobton Bay.
5 Entering the ocean.
5 Turning on the autopilot.
5 Docking at the Aquadome.
5 Opening the air supply system.
5 Screwing in the electrolyte relay.
5 Having the emergency survival unit installed.
5 Arresting Bill Greenup.
5 Capturing Bill Greenup.
5 Having Doc Horvak fix the dart gun.
5 Installing the dart gun.
5 Taking the bazooka.
5 Installing the bazooka.
1 Leaving the Aquadome.
5 Finding the Snark.
5 Aiming the bazooka at the Seacat.
5 Firing the bazooka at the Seacat.
-----
100 Total
For Your Amusement
Have you...
read the diagram on the workbench?
told Tip to leave the sub and then closed the hatch?
picked up something in an extensor claw before leaving the lab?
crashed the Scimitar into the Aquadome?
taken the electrolyte relay but not screwed it in?
said "Hello" to anyone on the sonarphone?
asked anyone besides Doc Horvak to fix the gash in your arm?
tried to shoot the Seacat with a tranquilizer dart?
tried to arrest an object instead of a person?
tried to clean or wipe anything?
tried to find someone who's in the same place as you?
tried to climb the sea wall?
tried to break down a door?
tried to enter something that you're holding?
asked anyone about yourself?
asked anyone to find you?
kicked anyone?
rubbed anyone?
tried to look inside or under anyone?
looked up?
kissed anyone or anything?
slapped anyone or anything, including yourself or a handcuffed person?
thrown something at a person and then at an object?
tried to break a window in the Aquadome?
tried to turn off a person?
tried to wake up anyone?
tried to eat a meal or take the food?
tried to shoot yourself?
followed an inanimate object?
played something?
typed HELLO SAILOR?
typed RESTART or RESTORE at the very beginning instead of your name?
cursed at the program?

53
hints.mss Normal file
View File

@@ -0,0 +1,53 @@
@style (spacing 1)
@title (Infocards)
@pageheading (DRAFT)
@majorheading (INFOCARDS FOR "SEASTALKER")
Card #1, Hint #1. You'd better look inside that "[black box]".
Card #1, Hint #2. Tell him about the [overheating problem] we ran into with your new Bioceptor.
Card #1, Hint #3. "First, one of us puts this black box back on the sonar transducer. Then we'll send [Marv] to check on the sonar system -- and we'll see if he reports the black box!"
Card #2, Hint #1. Try finding [Horvak's diary]. It's in his locker in the dormitory. [never used]
Card #2, Hint #2. "Why not ask [Mick] to troubleshoot the @I(Scimitar) and see what he says?"
Card #2, Hint #3. While you're waiting, do you want to look at the [magazine] that Tip brought along?
Card #3, Hint #1. A [circuit breaker] has popped open on the Electrical Panel!
Card #3, Hint #2. The [Videoscope] has never conked out before! It @I(must) be due to sabotage!
Card #3, Hint #3. Why won't the reactor start? Is the [catalyst capsule] inserted in the reactor? Tip exclaims, "But you told Sharon to put the capsule in, so the @I(Scimitar) would be ready for another test run. I heard you tell her first thing this morning!"
Card #4, Hint #1. That [electrolyte relay] you screwed back in place is essential to the Air Supply System -- without it, the system would break down in a few minutes! That means someone must have removed it while you were docking in the airlock!
Card #4, Hint #2. If you can get behind [Thorpe's vehicle], you can shoot its controls, and then he'll be stuck!
Card #4, Hint #3. "We know what was causing it -- but [Mick] doesn't @I(know) that we know."
Card #5, Hint #1. You'd better check the [Emergency Survival Unit] under your seat.
Card #5, Hint #2. The gate isn't open yet -- and it won't respond to a remote-control signal without [electricity]!
Card #5, Hint #3. Hey! Don't forget your [Emergency Oxygen Gear]!
Card #6, Hint #1. "Don't bother going thru the sub tool kit," says [Tip]. "I've got one of your Universal Tools in my pocket. Here, use this -- it'll fit anything!"
Card #6, Hint #2. "The last time we saw the [Snark], it went off to the southeast. I suggest you look in that direction first."
Card #6, Hint #3. If you can shoot the [tranquilizer dart] at the Snark, then it would still be intact for scientific study. [never used]
Card #7, Hint #1. "What about a [49-er prospecting bazooka]? If that can drive a stake into bedrock, it can sure put a dent in that sea monster -- or maybe even in an enemy sub!"
Card #7, Hint #2. "Also, Doc Horvak @I(may) be able to concoct some sort of [tranquilizer] with which to sedate or stun the Snark -- although he fears the huge size of the creature may make this method unreliable."
Card #7, Hint #3. "We have a prospecting bazooka which could be fitted to the @I(Scimitar)'s [extensor claws]."
Card #8, Hint #1. The Aquadome needs help desperately! You must take a [submarine] there at once!
Card #8, Hint #2. Hadn't you better turn on the [Videophone] and answer that alarm call?!
Card #8, Hint #3. There's no response, because there's no [power].

4
j1.chart Normal file
View File

@@ -0,0 +1,4 @@
-date- -rel- -size- -pre- -obj- -glo- -voc-
9/19 18 117024 21505 254 229 913
9/19 18 116812 21505 254 229 913
9/19 18 116802 21505 254 229 913

271
j1.mss Normal file
View File

@@ -0,0 +1,271 @@
@style(spacing 1)
@title (TIM QUICK - SUMMARY)
@pageheading(DRAFT)
@majorheading (TIM QUICK AND HIS ULTRAMARINE BIOCEPTOR)
@center (by Jim Lawrence)
@center (June 1983)
@blankspace(5)
@heading (Opening Scene)
"Tim, snap out of it!" cries Buzz Berkeley, bursting into
the young inventor's private lab. "The red alert
signal's flashing on your videoscope!"
Reluctantly you tear your eyes away from the blueprints
and circuit diagrams spread out on your workbench. They're
the plans of your newest, top-secret invention--a deep-sea
submarine specially designed for capturing rare specimens
of marine life on the ocean floor.
As Buzz's voice shatters your spell of concentration, an
alarm bell on the videoscope also begins to ring.
Obviously someone's trying urgently to get in touch with
you over the Quick's private TV communications network!
@heading (Lab Layout)
The layout of the lab is as follows---
On the North wall of the lab, from left to right, is a
COMPUTESTOR for troubleshooting any invention, machine
or system . . . DOORWAY N (thru which Buzz entered)
leading out onto the grounds of Quick Enterprises and
the airstrip . . . and a QUICK SPECTROSCOPE for analyzing
the chemical makeup of any substance.
On the East wall of the lab is a MICROWAVE SECURITY
SCANNER for detecting the presence on the grounds of
QUICK Enterprises of any intruder not equipped with a
proper Electronic Identification Amulet . . . DOORWAY E,
leading past the Electrical Control Panel to the office
of Tim's secretary and lab aide, SHANA KEMP . . . and Tim's
DESK, bearing the telephone.
On the South Wall of the lab are the CHEMICAL SUPPLY
SHELVES . . . DOORWAY S, leading to the SUBMARINE TEST PEN,
in which Tim's revolutionary new ULTRAMARINE BIOCEPTOR is
now resting . . . and the ELECTRONIC SUPPLY SHELVES.
On the West wall of the lab are the MECHANICAL SUPPLY
SHELVES and an array of machine tools and other devices
used by Tim in constructing pilot models of his inventions.
In the center of the lab is Tim's WORKBENCH, with the
VIDEOSCOPE and its control knobs in easy reach at his left.
@heading (First Scene)
The game begins as the player responds to the red light and
alarm bell by turning on the Videoscope. The screen lights
up and we see COMMANDER BRENT inside the Quick's Undersea
City, called the AQUADOME.
Brent excitedly reports that a huge monster is attacking
the Undersea City, threatening to batter its way thru the
transparent plastic shell of the Aquadome, which encloses
the city. In fact, as the video camera pans, Tim and Buzz can
actually see the monster.
This creature--which looks like an enormous sea slug with
clawed tentacles--has been glimpsed before by Aquadome
personnel while exploring the environment outside the
Undersea City. They've nicknamed it the SNARK.
Brent barely has time to plead for immediate help before
the picture on the Videoscope collapses, and the screen
goes dark again!
Has something catastrophic happened?! Alarmed, Buzz darts
to the Computestor. It immediately pinpoints four possible
causes: (1) failure of the transmitting equipment at the
Undersea City--(2) a short in the coaxial cable linking the
Undersea City and Quick Enterprises--(3) failure of the
Video receiver--and (4) sabotage.
Since the boys can't check (1) or (2) may require
lengthy and elaborate testing--Buzz's first impulse is to
check out the possibility of sabotage. He suggests that
they either activate the Microwave Security Scanner, or
else phone SECURITY CHIEF LOU PERELLI to inquire about
any signs of a saboteur at work.
Instead, Tim may simply elect to go thru Doorway E and
look at the Electrical Control Panel. If he does so, he'll
find that the Video Network's circuit-breaker has popped.
Tim closes it, and nothing drastic happens.
With power restored, the Videoscope screen lights up again.
But the incoming signal from the Aquadome is no longer
being received. Nor can Tim get any response to repeated
calls.
Meanwhile, as Buzz points out, they still don't know why
the circuit-breaker popped. Was there a power overload,
or did someone open it to interrupt the signal?
If Tim takes time to check with Security, Lou Perelli will
inform him that they've picked up some disturbing information
about his secretary and lab aide, Shana Kemp.
It will turn out that she manually opened the circuit-breaker
to impede Tim's efforts to save the Undersea City from the
Snark. If questioned now, she may admit this--either due
to panic or belated pangs of conscience. She may also
blurt out further information which would be helpful to Tim
in later stages of the game.
However, Tim may not take time to bother with all this.
His overriding concern may be for the safety of the
Aquadome personnel--and the possible chance of capturing
the monstrous Snark, a sub-oceanic equivalent of King Kong.
His newest invention--the ULTRAMARINE BIOCEPTOR--is
obviously the only sub capable of hunting down the monster
in its native habitat on the ocean floor. In fact it's
the only craft in the Quick submarine fleet which is now
at Quick Enterprises and available for an immediate dive.
However, the UB has performed erratically during tests.
This is the problem Tim was working on when the call for
help came over the Videoscope. Since the craft is still in
the pilot-model stage and hasn't been perfected, the
Computestor has not yet been programmed to troubleshoot it
--it can only check out sub-assemblies or sub-systems of
the craft.
Tim may, therefore, decide to phone the US Navy in Washington
for help. Its nuclear subs are at least capable of diving
to the depth of the Aquadome. But none may be close enough
to dispatch on such a mission.
On the other hand, if Tim and Buzz themselves take off in the
Ultramarine Bioceptor, they run the risk of encountering
operation trouble en route.
When the boys do embark in the UB, the test pen must first
be flooded before the craft can be taken out to sea. They
then discover that its jet engines won't start.
It turns out that this is due to the fact that a CATALYST
CAPSULE was not installed in the reactor--altho Tim had
instructed Shana to do so that morning, in preparation
for a power test of the hydrojets.
If Tim cares to pursue the question of why she didn't
install it, he may have another chance of discovering that
Shana is now, in effect, an enemy agent--or at least an
enemy stooge.
@heading (Summary of Remainder)
(NOTE: I have tried to imagine the opening setting and
actions in some detail, but the remainder of the game will
just be outlined briefly.)
At Buzz's suggestion, Tim may take along (purely as a
distraction) a copy of a magazine called SCIENCE WORLD.
The idea is that this will give him something to peruse
en route, to relax his mind and ease the tension of the
situation, while the UB is operating on auto-pilot.
If Tim does take along the magazine, he may learn from its
cover story that a distinguished marine biologist, DR
JEROME THORP, has reportedly created synthetic forms of
marine life by means of genetic engineering.
Reading further, Tim may also learn (1) that Dr Thorp has
disappeared and apparently gone into hiding to duck the
publicity resulting from his sensational feat--and (2) that
before going into hiding, Thorp confided to close friends
that he would soon marry a young American woman, Shana
Kemp.
Obviously this story may have implications with regard
to the Snark's attack on the Aquadome, and the strange
behavior of Shana Kemp.
En route, the sub's control circuits show signs of
overheating. This is due to the fact that the lasers in
the operational computers are over-charging. This could
lead to a breakdown of the UB. Since the craft's external
communications system also depends on underwater laser
beams, Tim and Buzz may even lose contact with Quick
Enterprises--or with the Undersea City as they dive
toward the Aquadome.
Tim may decide to turn back to Quick Enterprises--or else
try to trace and correct the trouble en route--or simply
continue despite the overheating problem.
On reaching the Undersea City, the boys learn to their
relief that the Snark has temporarily given up its attack.
But, of course, it may return and renew its savage
assault at any time.
There are four main buildings in the Undersea City: the
ADMINISTRATION BUILDING containing an office, communications
center and storeroom . . . the DORMITORY . . . the SCIENTIFIC
LAB . . . and the POWER PLANT, containing a reactor and the
air-conditioning system, which is based on extracting oxygen
from the surrounding sea water.
It turns out that the failure of the video transmitter was
due to sabotage. Besides Commander Brent herself, who's
in charge of the Aquadome, two other persons had access
to the communications center, where the transmitting
equipment was stored: MICK CASEY, a frogman-technician who's
also a laser expert--and DR WALT NOVAK, a young marine
biochemist.
Tim learns that Casey is feuding with Commander Brent, who's
a hard-nosed, up-tight disciplinarian . . . and that Dr. Novak
frequently dated Shana Kemp before he signed on for a
six-month hitch underwater in the Aquadome.
It appears that Brent may have become somewhat paranoid due
to the strain of her undersea duties.
Tim also learns that a chemical substance called AMINO-
HYDROPHASE (or AH) has been detected in the sea water.
Apparently this stuff is secreted by the Snark. Yet it's
also a synthetic compound not known to occur elsewhere in
nature. This may help to clue Tim in to the fact that the
Snark is a man-made monster, artificially created by Dr. Thorp.
Based on certain information in the magazine article about
Thorp's experiments, Tim reasons that another chemical,
called Dormiphen, may be just the right drug to tranquilize
the creature.
At this point, Tim has the option of (1) setting out at
once in his Ultramarine Bioceptor to hunt down the Snark,
rather than wait passively for it to attack the Aquadome
again . . . or (2) take time to trap the traitor who
sabotaged the video transmitter, and who may therefore be
in league with Dr. Thorp . . . or (3) concentrate on
devising an underwater tranquilizer dart gun which can
be mounted on the UB, while Dr. Novak is synthesizing some
Dormiphen, and Mick Casey is repairing the computer lasers
which caused the UB to overheat--and meanwhile, perhaps,
let Buzz venture out either in scuba gear or deep-sea
diving armor, to scout for the Snark.
Eventually Tim and Buzz embark together in the Ultramarine
Bioceptor to hunt for the Snark.
Their hydrophones detect another sub in the vicinity. If
they try to communicate with it by sonarphone, it may or
may not respond. Conceivably it may be a Russian spy craft,
prowling around the Aquadome area--or it may be Dr. Thorp's
sub. And Tim may or may not take the time to find out its
intent.
The boys finally encounter the Snark and a ding-dong battle
ensues. Before the creature is subdued by tranquilizer,
they have to battle it with their sub's grappler arms.
Conceivably the battle may end either in victory or
disaster for Tim and Buzz.

1
j1.serial Normal file
View File

@@ -0,0 +1 @@
3

350
j1.transcript Normal file
View File

@@ -0,0 +1,350 @@
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!
Please type your first name.
> JIM
Hello Jim! Now type your last name.
> LAWRENCE
Is Jim Lawrence right? > YES
Then let the story begin!
SEASTALKER: JIM LAWRENCE AND THE ULTRAMARINE BIOCEPTOR
Junior-level interactive fiction from Infocom
Copyright (c) 1984 Infocom, Inc. All rights reserved.
SEASTALKER is a trademark of Infocom, Inc.
Revision number 8 / Serial number 840424
"Jim, snap out of it!" cries Tip Randall, bursting into your laboratory.
"The alert signal is on!"
As you look up from your top-secret plans for the SCIMITAR, a submarine
for capturing marine life on the ocean floor and still being tested,
you notice the alarm bell on the videophone ringing. Someone's trying
to reach you over the private videophone network of Inventions Unlimited!
(lab center)
You're at your workbench in the center of your laboratory, a small
part of the Lawrence Research Lab in the town of Frobton. The videophone
screen looms overhead, with its alarm bell ringing.
Tip is here.
A microphone is sitting on your workbench.
Okay, Jim, what do you want to do now?
> ANSWER THE ALARM
Why not turn on the videophone?
The alarm bell continues to ring.
What next?
> TURN ON THE VIDEOPHONE
As the alarm bell stops ringing, a picture of a woman holding a microphone
appears, and you can hear her voice from the speaker. But both sound and
picture are fuzzy.
(Your score just went up by 1 point!)
What next?
> TUNE IT
Ah, that's better! You recognize the woman as Commander Bly, who's in charge of
the Undersea Research Station of Inventions Unlimited, called the Aquadome,
just off the Atlantic coast. "Jim! Jim!" she's saying. "This is the Aquadome
calling the Lawrence Research Lab! We have an urgent problem!"
(Your score just went up by 1 point!)
What next?
> TALK TO HER
She can't hear you unless you pick up your microphone and switch it on.
What next?
> PICK UP THE MIKE AND SWITCH IT ON
(Your score just went up by 1 point!)
You are now holding the microphone.
Okay, the microphone is now on.
What next?
> TALK TO COMMANDER BLY
"Jim! Jim! Our transparent dome enclosing the Undersea Research Station is
being battered by a huge monster!"
What next?
> BLY, SHOW ME THE MONSTER
The Aquadome's camera pans, and the monster comes into view on your videophone
screen. It resembles a huge sea slug, about 5 meters tall. Its clawed tentacles
pound and scratch at the dome.
What next?
> BLY, TELL ME ABOUT THE MONSTER
"Some of our divers saw it while exploring the undersea environment. They
nicknamed it the Snark. This is the first time it has approached the Aquadome,
and it may be the last time, Jim! I'm not sure how long our plastic dome
enclosure can withstand such a battering!"
What next?
> BLY, ATTACK THE MONSTER
"Jim, this is a peaceful research facility. We have no weapons."
What next?
> BLY, LEAVE THE AQUADOME
"Our emergency escape bell would be vulnerable to a monster as big as the
Snark. Ditto for SCUBA gear, deep-sea diving suits, or jet-propelled
observation bubbles."
What next?
> BLY, WAIT THERE FOR ME
"Okay, Jim, but hurry!"
(Are you tired of seeing "What next?" Well, you won't see it any more.)
> HANG UP
"I hope to see you soon, Jim."
Something's wrong! The picture vanished from your videophone screen, and the
sound conked out!
Tip says, "That's strange! Maybe you should use the Computestor."
(Oh no! Your score just went down by 3 points!)
> GO TO THE COMPUTESTOR
You can't walk away while you are holding the microphone!
> PUT IT ON THE TABLE
Okay.
> GO TO THE COMPUTESTOR
It's in the north part.
(north part)
You're in the north part of your laboratory. A Computestor stands here to help
test your inventions.
> USE IT
The Computestor is off!
> TURN IT ON
The Computestor is ready for questions.
> ASK IT ABOUT THE VIDEOPHONE
"Symptoms: no picture, no sound.
Possible causes:
1) Failure of the transmitter at source.
2) A short in the undersea coaxial cable linking transmitter to the Lawrence
Research Lab, if signal is coming from Aquadome.
3) Sunspot interference or satellite malfunction if transmitter is at earth's
surface.
4) Failure of the video receiver.
5) Overload in the Electrical Panel (circuit breaker popped).
6) Sabotage (circuit breaker open)."
> GO TO THE CIRCUIT BREAKER
It's in the corridor.
(corridor)
You're in a corridor, with your laboratory to the west, a storage closet to the
south, and Kemp's office to the east. An Electrical Panel fills most of the
north wall.
Tip follows you into the corridor.
(If you want a clue, find Infocard #3 in your SEASTALKER package. Read hidden
clue #1 and put "Electrical Panel" in the blank space.)
> CHECK THE BREAKER
(If you want a clue, find Infocard #3 in your SEASTALKER package. Read hidden
clue #1 and put "Electrical Panel" in the blank space.)
> CLOSE IT
Okay, the circuit breaker is now closed.
(Your score just went up by 3 points!)
> GO BACK TO THE LAB
(lab center)
You're at your workbench in the center of your laboratory, a small part of the
Lawrence Research Lab in the town of Frobton. The videophone screen looms
overhead.
Tip follows you into the lab center.
Sitting on the workbench is:
a microphone
a diagram
As you re-enter the lab, Tip says, "Look, Jim! The videophone's working again!
There's a normal test pattern on the screen!"
> TIP, GO TO THE SUBMARINE
"I think you can do that better yourself."
> GO TO THE SUB
(SCIMITAR)
You're in the pilot's seat of the SCIMITAR, its operating control panel before
you.
A wraparound viewport, both fore and aft, provides a view ahead and astern. You
can also observe your surroundings with a sonarscope and a hydrophone listening
device. There's a sonarphone for communication. You'll discover other features
when you need them.
Tip is sitting behind you, reading a magazine.
The power reactor is off and open.
(Your score just went up by 1 point!)
> TURN IT ON
(If you want a clue, find Infocard #3 in your SEASTALKER package. Read hidden
clue #3 and put "catalyst capsule" in the blank space.)
> GO TO THE CAPSULE
It's in the west walkway.
(west walkway)
You're at a work counter, next to the control gear used to operate the test
tank.
The test tank (which is now empty of sea water) is located in a large work
room, just south of your laboratory, 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 underwater 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.
Tip follows you into the west walkway.
Sitting on the work counter is:
a catalyst capsule
> TAKE IT
(Your score just went up by 5 points!)
You are now holding the catalyst capsule.
> GET IN THE SUB
You have to go north to board the SCIMITAR.
> GO NORTH
(north walkway)
Tip is off to the south.
> BOARD THE SCIMITAR
(SCIMITAR)
Tip is sitting behind you, reading a magazine.
The power reactor is off and open.
> PUT THE CAPSULE IN THE REACTOR
Okay.
> CLOSE THE REACTOR THEN TURN IT ON
Okay, the reactor is now closed.
Electrical systems now activated.
(Your score just went up by 5 points!)
> READ THE INSTRUMENTS
Main instruments:
depth finder, hydrophone, sonarscope, and temperature gauge.
> LEAVE THE TANK
The tank is empty!
> FILL IT
The sea water quickly fills the tank, up to the level of the walkway.
> LEAVE IT
The gate is closed!
> OPEN IT
Opened (by remote control).
> LEAVE THE TANK
The engine is off!
> TURN IT ON
You can immediately hear the powerful thrum of the hydrojet turbine.
(Your score just went up by 5 points!)
> LEAVE THE TANK
You can do this by setting the throttle to the speed you want (slow, medium, or
fast) and by moving the joystick in the compass direction you wish to go.
> SET THE THROTTLE TO SLOW
You shouldn't leave the tank with the hatch open!
> CLOSE IT
Okay, the entry hatch is now closed.
> SLOW
Okay, now that the throttle is set, try pushing the joystick to the east.
> PUSH THE STICK EAST
The SCIMITAR glides smoothly out of the tank onto the surface of Frobton Bay.
You're heading east at 1 sea square per turn.
(Your score just went up by 5 points!)
(This might be a good time to use the command: SAVE.)
A speedboat came out of nowhere and almost hit you! It's dangerous on the
surface of the bay.
> QUIT
Your score is 24 points out of 100, in 44 turns.
This score gives you the rank of a fair adventurer.
(If you want to continue from this point at another time, you must "SAVE"
first.)
Do you want to stop playing now? > YES

914
j1.vocab Normal file
View File

@@ -0,0 +1,914 @@
#WORD *002460310346* "$ba"
#WORD *002460310406* "$ca"
#WORD *002460310563* "$fn"
#WORD *002460311063* "$ln"
#WORD *002460311552* "$ve"
#WORD *002511320274* "10-"
#WORD *002541342274* "49-"
#WORD *002541342527* "49er"
#WORD *002621312245* "."
#WORD *002631312245* ","
#WORD *002641312245* "!"
#WORD *002651312245* "?"
#WORD *002672316605* "#dbg"
#WORD *002711312245* """
#WORD *002766151112* "(some"
#WORD *003051312245* "a"
#WORD *003071546464* "abando"
#WORD *003075165445* "about"
#WORD *003102125430* "access"
#WORD *003106335546* "activa"
#WORD *003113765431* "adjust"
#WORD *003114535145* "admin"
#WORD *003114535156* "admini"
#WORD *003132735362* "affirm"
#WORD *003141535145* "again"
#WORD *003141535170* "agains"
#WORD *003164512245* "aim"
#WORD *003165712245* "air"
#WORD *003165743210* "airloc"
#WORD *003211557105* "alarm"
#WORD *003214312245* "all"
#WORD *003221312245* "am"
#WORD *003227512245* "amy"
#WORD *003227513430* "amy's"
#WORD *003231312245* "an"
#WORD *003231543730* "analys"
#WORD *003231543737* "analyz"
#WORD *003232312245* "and"
#WORD *003236170527* "answer"
#WORD *003236356722* "antrim"
#WORD *003237512245* "any"
#WORD *003255343705* "apply"
#WORD *003266514245* "aqua"
#WORD *003266514464* "aquado"
#WORD *003266515456* "aquati"
#WORD *003272512245* "are"
#WORD *003272514245* "area"
#WORD *003274512245* "arm"
#WORD *003274560245* "arms"
#WORD *003275165151* "around"
#WORD *003275725431* "arrest"
#WORD *003275751605* "arrow"
#WORD *003276334421* "articl"
#WORD *003302125151* "ascend"
#WORD *003304112245* "ask"
#WORD *003306115521* "assaul"
#WORD *003306135431* "assist"
#WORD *003306151371* "assort"
#WORD *003311312245* "at"
#WORD *003314315171* "atlant"
#WORD *003316314415* "attach"
#WORD *003316314420* "attack"
#WORD *003326350245* "auto"
#WORD *003326351106* "automa"
#WORD *003326351256* "autopi"
#WORD *003341540505* "awake"
#WORD *003341574245* "away"
#WORD *003362512245* "aye"
#WORD *003462140245* "back"
#WORD *003462330505* "badge"
#WORD *003462330530* "badges"
#WORD *003466162327* "bastar"
#WORD *003466332505* "bathe"
#WORD *003467512245* "bay"
#WORD *003467751220* "bazook"
#WORD *003521544245* "beam"
#WORD *003522312245* "bed"
#WORD *003523335151* "behind"
#WORD *003524342245* "bell"
#WORD *003524720645* "bench"
#WORD *003524724331* "beneat"
#WORD *003564342245* "bill"
#WORD *003564342270* "bill'"
#WORD *003564342724* "billio"
#WORD *003565120525* "biocep"
#WORD *003566324245* "bite"
#WORD *003611521005* "black"
#WORD *003611561445* "blast"
#WORD *003612330245* "bldg"
#WORD *003613552245* "blip"
#WORD *003615170245* "blow"
#WORD *003616524245* "blue"
#WORD *003616525267* "bluepr"
#WORD *003617512245* "bly"
#WORD *003617513430* "bly's"
#WORD *003641556445* "board"
#WORD *003641562245* "boat"
#WORD *003644362245* "bolt"
#WORD *003645140245* "book"
#WORD *003647312245* "box"
#WORD *003647512245* "boy"
#WORD *003671561405* "brass"
#WORD *003672515005* "break"
#WORD *003672515012* "breake"
#WORD *003672525752* "breeze"
#WORD *003673524545* "brief"
#WORD *003673524561* "briefl"
#WORD *003673546605* "bring"
#WORD *003676560645* "brush"
#WORD *003723542445* "build"
#WORD *003723542456* "buildi"
#WORD *003724552527* "bumper"
#WORD *003724720645* "bunch"
#WORD *003724740245* "bunk"
#WORD *003726135152* "busine"
#WORD *003726363223* "button"
#WORD *003727776527* "buzzer"
#WORD *003761312245* "by"
#WORD *003762512245* "bye"
#WORD *004061735152* "cabine"
#WORD *004061742505* "cable"
#WORD *004064342245* "call"
#WORD *004064712245* "can"
#WORD *004064735431* "canist"
#WORD *004065361521* "capsul"
#WORD *004065363527* "captur"
#WORD *004065724572* "carefu"
#WORD *004065757705* "carry"
#WORD *004066312245* "cat"
#WORD *004066315076* "cataly"
#WORD *004124762527* "center"
#WORD *004124763352* "centre"
#WORD *004151535345* "chair"
#WORD *004151535370* "chairs"
#WORD *004151556612* "charge"
#WORD *004151560505* "chase"
#WORD *004152521005* "check"
#WORD *004152544710* "chemic"
#WORD *004155156505* "chore"
#WORD *004156521005* "chuck"
#WORD *004165721516* "circui"
#WORD *004211570245* "claw"
#WORD *004211571405* "claws"
#WORD *004212515145* "clean"
#WORD *004212515345* "clear"
#WORD *004213544345* "climb"
#WORD *004215160505* "close"
#WORD *004215160521* "closel"
#WORD *004215160531* "closet"
#WORD *004216524245* "clue"
#WORD *004216561452* "cluste"
#WORD *004241572706* "coaxia"
#WORD *004244524245* "come"
#WORD *004244544245* "comm"
#WORD *004244544323* "comman"
#WORD *004244545523* "commun"
#WORD *004244552323* "compan"
#WORD *004244552327* "compar"
#WORD *004244553531* "comput"
#WORD *004244727364* "confro"
#WORD *004244761521* "consul"
#WORD *004244761522* "consum"
#WORD *004244762310* "contac"
#WORD *004244762523* "conten"
#WORD *004244763364* "contro"
#WORD *004245756711* "corrid"
#WORD *004246542445* "could"
#WORD *004246547452* "counte"
#WORD *004246725345* "cover"
#WORD *004271571045* "crawl"
#WORD *004272515472* "creatu"
#WORD *004272570245* "crew"
#WORD *004275164415* "crouch"
#WORD *004276535412* "cruise"
#WORD *004276560645* "crush"
#WORD *004325756523* "curren"
#WORD *004325760505* "curse"
#WORD *004325760530* "curses"
#WORD *004326160245* "cuss"
#WORD *004326312245* "cut"
#WORD *004364335151* "cylind"
#WORD *004451312245* "d"
#WORD *004464514612* "damage"
#WORD *004464546245* "damn"
#WORD *004464730527* "danger"
#WORD *004465762245* "dart"
#WORD *004521715360* "debark"
#WORD *004522140245* "deck"
#WORD *004522735156* "defini"
#WORD *004525351416* "deposi"
#WORD *004525362645* "depth"
#WORD *004525362653* "depthf"
#WORD *004526120523* "descen"
#WORD *004526121356* "descri"
#WORD *004526140245* "desk"
#WORD *004526163364* "destro"
#WORD *004526324431* "detect"
#WORD *004526734412* "device"
#WORD *004561531164* "diagno"
#WORD *004561531346* "diagra"
#WORD *004561557705* "diary"
#WORD *004562312245* "did"
#WORD *004563112245* "dig"
#WORD *004565724431* "direct"
#WORD *004566121530* "discus"
#WORD *004566125107* "disemb"
#WORD *004566163352* "distre"
#WORD *004566724245* "dive"
#WORD *004566725345* "diver"
#WORD *004566725370* "divers"
#WORD *004566735154* "diving"
#WORD *004641312245* "do"
#WORD *004642112245* "doc"
#WORD *004642113430* "doc's"
#WORD *004642140245* "dock"
#WORD *004642140723* "dockin"
#WORD *004642163227* "doctor"
#WORD *004644524245* "dome"
#WORD *004644715452* "donate"
#WORD *004645156245* "door"
#WORD *004645157606* "doorwa"
#WORD *004645744245* "dorm"
#WORD *004645744731* "dormit"
#WORD *004646560505* "douse"
#WORD *004647146245* "down"
#WORD *004671312245* "dr"
#WORD *004671535145* "drain"
#WORD *004671570527* "drawer"
#WORD *004673547005* "drink"
#WORD *004673566505* "drive"
#WORD *004675152245* "drop"
#WORD *005051312245* "e"
#WORD *005066162245* "east"
#WORD *005066312245* "eat"
#WORD *005113562724* "editio"
#WORD *005163133445* "eight"
#WORD *005163133452* "eighte"
#WORD *005163133476* "eighty"
#WORD *005212521467* "electr"
#WORD *005212566523* "eleven"
#WORD *005222556612* "emerge"
#WORD *005225363705* "empty"
#WORD *005233114612* "engage"
#WORD *005233135152* "engine"
#WORD *005236325345* "enter"
#WORD *005236335352* "entire"
#WORD *005236356323* "entran"
#WORD *005236357705* "entry"
#WORD *005266535262* "equipm"
#WORD *005331521506* "evacua"
#WORD *005333522523* "eviden"
#WORD *005351544723* "examin"
#WORD *005352556416* "exerci"
#WORD *005353562245* "exit"
#WORD *005355325371* "expert"
#WORD *005355342316* "explai"
#WORD *005355343227* "explor"
#WORD *005355343230* "explos"
#WORD *005356325151* "extend"
#WORD *005356325170* "extens"
#WORD *005356335154* "exting"
#WORD *005464551530* "famous"
#WORD *005466162245* "fast"
#WORD *005466162523* "fasten"
#WORD *005466162527* "faster"
#WORD *005522522245* "feed"
#WORD *005522542245* "feel"
#WORD *005524515052* "female"
#WORD *005526320645* "fetch"
#WORD *005562542445* "field"
#WORD *005562762512* "fiftee"
#WORD *005562763705* "fifty"
#WORD *005563133445* "fight"
#WORD *005564324245* "file"
#WORD *005564325405* "files"
#WORD *005564342245* "fill"
#WORD *005564722245* "find"
#WORD *005564722527* "finder"
#WORD *005564724245* "fine"
#WORD *005565724245* "fire"
#WORD *005565761445* "first"
#WORD *005566312245* "fit"
#WORD *005566724245* "five"
#WORD *005567312245* "fix"
#WORD *005613552245* "flip"
#WORD *005615150445* "flood"
#WORD *005615151345* "floor"
#WORD *005642165405* "focus"
#WORD *005644343234* "follow"
#WORD *005645712245* "for"
#WORD *005645763705* "forty"
#WORD *005646556245* "four"
#WORD *005646557452* "fourte"
#WORD *005671544245* "fram"
#WORD *005672524245* "free"
#WORD *005672534615* "freigh"
#WORD *005675117464* "frobto"
#WORD *005675144245* "from"
#WORD *005722140245* "fuck"
#WORD *005722330505* "fudge"
#WORD *005724342245* "full"
#WORD *005725746731* "furnit"
#WORD *006051312245* "g"
#WORD *006064342536* "galley"
#WORD *006064524245* "game"
#WORD *006064731261* "gangpl"
#WORD *006066132245* "gash"
#WORD *006066324245* "gate"
#WORD *006066325405* "gates"
#WORD *006066530505* "gauge"
#WORD *006066530530* "gauges"
#WORD *006067724245* "gaze"
#WORD *006121556245* "gear"
#WORD *006121557405* "gears"
#WORD *006124725346* "genera"
#WORD *006126312245* "get"
#WORD *006165742245* "girl"
#WORD *006166724245* "give"
#WORD *006241312245* "go"
#WORD *006245122274* "good-"
#WORD *006245122376* "goodby"
#WORD *006271516245* "grab"
#WORD *006272525172* "greenu"
#WORD *006272525445* "greet"
#WORD *006272525456* "greeti"
#WORD *006273522245* "grid"
#WORD *006273523405* "grids"
#WORD *006273546245* "grin"
#WORD *006275165151* "ground"
#WORD *006324712245* "gun"
#WORD *006464326245* "half"
#WORD *006464342245* "hall"
#WORD *006464343606* "hallwa"
#WORD *006464722245* "hand"
#WORD *006464723052* "handle"
#WORD *006464730245* "hang"
#WORD *006466112245* "has"
#WORD *006466320645* "hatch"
#WORD *006466724245* "have"
#WORD *006521312245* "he"
#WORD *006521361405* "he's"
#WORD *006521522245* "head"
#WORD *006524343205* "hello"
#WORD *006524352245* "help"
#WORD *006525712245* "her"
#WORD *006525724245* "here"
#WORD *006525760521* "hersel"
#WORD *006561312245* "hi"
#WORD *006562324245* "hide"
#WORD *006563132245* "high"
#WORD *006564512245* "him"
#WORD *006564560521* "himsel"
#WORD *006564762245* "hint"
#WORD *006566112245* "his"
#WORD *006566312245* "hit"
#WORD *006644324245* "hole"
#WORD *006645140245* "hook"
#WORD *006645766320* "horvak"
#WORD *006646560723* "housin"
#WORD *006647112245* "how"
#WORD *006723124245* "huge"
#WORD *006724723352* "hundre"
#WORD *006725742245* "hurl"
#WORD *006725762245* "hurt"
#WORD *006762357217* "hydroj"
#WORD *006762357225* "hydrop"
#WORD *006765350245* "hypo"
#WORD *006765350452* "hypode"
#WORD *007051312245* "i"
#WORD *007056143045* "i'll"
#WORD *007056144245* "i'm"
#WORD *007056166505* "i've"
#WORD *007112514245* "idea"
#WORD *007112547456* "identi"
#WORD *007221734352* "imbibe"
#WORD *007231312245* "in"
#WORD *007233765352* "injure"
#WORD *007235564727* "inquir"
#WORD *007236125371* "insert"
#WORD *007236134452* "inside"
#WORD *007236152510* "inspec"
#WORD *007236162321* "instal"
#WORD *007236163372* "instru"
#WORD *007236325350* "interc"
#WORD *007236325367* "interr"
#WORD *007236350245* "into"
#WORD *007236725171* "invent"
#WORD *007301312245* "is"
#WORD *007311312245* "it"
#WORD *007311361405* "it's"
#WORD *007525751112* "jerome"
#WORD *007641712245* "job"
#WORD *007643130723* "joggin"
#WORD *007647512245* "joy"
#WORD *007647561456* "joysti"
#WORD *007724740245* "junk"
#WORD *010122542245* "keel"
#WORD *010124552245* "kemp"
#WORD *010124552270* "kemp'"
#WORD *010127512245* "key"
#WORD *010162140245* "kick"
#WORD *010164342245* "kill"
#WORD *010166160245* "kiss"
#WORD *010235116245* "knob"
#WORD *010235117405* "knobs"
#WORD *010235121005* "knock"
#WORD *010451312245* "l"
#WORD *010461712245* "lab"
#WORD *010461751346* "labora"
#WORD *010462322527* "ladder"
#WORD *010466546415* "launch"
#WORD *010521522245* "lead"
#WORD *010521566505* "leave"
#WORD *010522762245* "left"
#WORD *010526313430* "let's"
#WORD *010526725045* "level"
#WORD *010526725345* "lever"
#WORD *010562762245* "lift"
#WORD *010563133445* "light"
#WORD *010563133470* "lights"
#WORD *010566162523* "listen"
#WORD *010641522245* "load"
#WORD *010642115452* "locate"
#WORD *010642140245* "lock"
#WORD *010642140527* "locker"
#WORD *010643112245* "log"
#WORD *010643117224* "logboo"
#WORD *010645140245* "look"
#WORD *010646312245* "lot"
#WORD *010647112245* "low"
#WORD *010647125061* "lowell"
#WORD *010647125345* "lower"
#WORD *011051312245* "m"
#WORD *011062132723* "machin"
#WORD *011063112245* "mag"
#WORD *011063115756* "magazi"
#WORD *011064124245* "make"
#WORD *011064324245* "male"
#WORD *011064712245* "man"
#WORD *011064764321* "manual"
#WORD *011065735152* "marine"
#WORD *011065766245* "marv"
#WORD *011065766270* "marv'"
#WORD *011066320645* "match"
#WORD *011066325356* "materi"
#WORD *011066362527* "matter"
#WORD *011067335132* "maximu"
#WORD *011067516505* "maybe"
#WORD *011121312245* "me"
#WORD *011122132323* "mechan"
#WORD *011122334405* "medic"
#WORD *011122335446* "medita"
#WORD *011122335522* "medium"
#WORD *011126160245* "mess"
#WORD *011126315061* "metall"
#WORD *011126325345* "meter"
#WORD *011126325370* "meters"
#WORD *011126356530* "metres"
#WORD *011162140245* "mick"
#WORD *011162140270* "mick'"
#WORD *011162157225* "microp"
#WORD *011162157234* "microw"
#WORD *011164124245* "mike"
#WORD *011164342724* "millio"
#WORD *011164735132* "minimu"
#WORD *011164765452* "minute"
#WORD *011166160723* "missin"
#WORD *011243561472* "moistu"
#WORD *011244325431* "molest"
#WORD *011244735464* "monito"
#WORD *011244761452* "monste"
#WORD *011245724245* "more"
#WORD *011246335552* "motive"
#WORD *011246547445* "mount"
#WORD *011246724245* "move"
#WORD *011361312245* "my"
#WORD *011366125053* "myself"
#WORD *011451312245* "n"
#WORD *011464524245* "name"
#WORD *011467512245* "nay"
#WORD *011521312245* "ne"
#WORD *011522523052* "needle"
#WORD *011523115456* "negati"
#WORD *011527112245* "new"
#WORD *011527161246* "newspa"
#WORD *011564724245* "nine"
#WORD *011564725452* "ninete"
#WORD *011564725476* "ninety"
#WORD *011641312245* "no"
#WORD *011642312245* "nod"
#WORD *011642365052* "nodule"
#WORD *011645324245* "nope"
#WORD *011645762645* "north"
#WORD *011645762652* "northe"
#WORD *011645762674* "northw"
#WORD *011646332723* "nothin"
#WORD *011647112245* "now"
#WORD *011724516527* "number"
#WORD *011741312245* "nw"
#WORD *012073724431* "object"
#WORD *012076125373* "observ"
#WORD *012102515145* "ocean"
#WORD *012112312245* "odd"
#WORD *012112343705* "oddly"
#WORD *012131312245* "of"
#WORD *012132712245* "off"
#WORD *012132725345* "offer"
#WORD *012132734412* "office"
#WORD *012201312245* "ok"
#WORD *012201574245* "okay"
#WORD *012231312245* "on"
#WORD *012232512245* "one"
#WORD *012236350245* "onto"
#WORD *012252546245* "open"
#WORD *012252556331* "operat"
#WORD *012271546612* "orange"
#WORD *012272512245* "ore"
#WORD *012313325345* "other"
#WORD *012326312245* "out"
#WORD *012332556245* "over"
#WORD *012332556652* "overhe"
#WORD *012357530523* "oxygen"
#WORD *012451312245* "p"
#WORD *012463124245* "page"
#WORD *012464725045* "panel"
#WORD *012465325345* "paper"
#WORD *012465325370* "papers"
#WORD *012465762245* "part"
#WORD *012465763405* "parts"
#WORD *012466312245* "pat"
#WORD *012466560505* "pause"
#WORD *012521542245* "peal"
#WORD *012522512245* "pee"
#WORD *012522540245* "peek"
#WORD *012525761223* "person"
#WORD *012525765412* "peruse"
#WORD *012526312245* "pet"
#WORD *012555146505* "phone"
#WORD *012555163205* "photo"
#WORD *012555163214* "photog"
#WORD *012562140245* "pick"
#WORD *012562163527* "pictur"
#WORD *012564351445* "pilot"
#WORD *012566160245* "piss"
#WORD *012611520505* "place"
#WORD *012611546245* "plan"
#WORD *012611547405* "plans"
#WORD *012611561456* "plasti"
#WORD *012611562505* "plate"
#WORD *012611574245* "play"
#WORD *012612515412* "please"
#WORD *012642312245* "pod"
#WORD *012643547445* "point"
#WORD *012645112245* "poo"
#WORD *012645720645* "porch"
#WORD *012645762245* "port"
#WORD *012647125345* "power"
#WORD *012672552327* "prepar"
#WORD *012672560523* "presen"
#WORD *012672561405* "press"
#WORD *012673566331* "privat"
#WORD *012675117052* "proble"
#WORD *012675120512* "procee"
#WORD *012675153521* "propul"
#WORD *012675161252* "prospe"
#WORD *012724342245* "pull"
#WORD *012724552245* "pump"
#WORD *012724720645* "punch"
#WORD *012725761512* "pursue"
#WORD *012726132245* "push"
#WORD *012726312245* "put"
#WORD *013051312245* "q"
#WORD *013322561456* "questi"
#WORD *013323521021* "quickl"
#WORD *013323525461* "quietl"
#WORD *013323562245* "quit"
#WORD *013463560505* "raise"
#WORD *013464552245* "ramp"
#WORD *013464722321* "randal"
#WORD *013465312245* "rap"
#WORD *013465324245* "rape"
#WORD *013521521464* "reacto"
#WORD *013521522245* "read"
#WORD *013521561223* "reason"
#WORD *013522124733* "receiv"
#WORD *013522125271* "recept"
#WORD *013522312245* "red"
#WORD *013522322730* "reddis"
#WORD *013523165046* "regula"
#WORD *013524315645* "relax"
#WORD *013524315705* "relay"
#WORD *013524324330* "releas"
#WORD *013524551452* "remote"
#WORD *013524551552* "remove"
#WORD *013525314727* "repair"
#WORD *013525325045* "repel"
#WORD *013525325046* "repela"
#WORD *013525342310* "replac"
#WORD *013525343705* "reply"
#WORD *013525351371* "report"
#WORD *013526124327* "resear"
#WORD *013526125445* "reset"
#WORD *013526153223* "respon"
#WORD *013526162245* "rest"
#WORD *013526162327* "restar"
#WORD *013526163227* "restor"
#WORD *013526165112* "resume"
#WORD *013526735416* "revisi"
#WORD *013526751072* "revolu"
#WORD *013562312245* "rid"
#WORD *013563133445* "right"
#WORD *013564730245* "ring"
#WORD *013566124245* "rise"
#WORD *013643125345* "roger"
#WORD *013645126245* "roof"
#WORD *013645144245* "room"
#WORD *013721712245* "rub"
#WORD *013721716527* "rubber"
#WORD *013724712245* "run"
#WORD *013724746723* "runnin"
#WORD *013724770336* "runway"
#WORD *014051312245* "s"
#WORD *014061751446* "sabota"
#WORD *014062725476* "safety"
#WORD *014063543227* "sailor"
#WORD *014066325061* "satell"
#WORD *014066724245* "save"
#WORD *014067512245* "say"
#WORD *014071312245* "sb"
#WORD *014101547152* "scanne"
#WORD *014103544731* "scimit"
#WORD *014105152505* "scope"
#WORD *014105156505* "score"
#WORD *014105724322* "scream"
#WORD *014105724523* "screen"
#WORD *014105725605* "screw"
#WORD *014105735271* "script"
#WORD *014105765456* "scruti"
#WORD *014121312245* "se"
#WORD *014121512245* "sea"
#WORD *014121520331* "seacat"
#WORD *014121556415* "search"
#WORD *014121561446* "seasta"
#WORD *014121562245* "seat"
#WORD *014121570331* "seawat"
#WORD *014122162724* "sectio"
#WORD *014122165352* "secure"
#WORD *014122165356* "securi"
#WORD *014122512245* "see"
#WORD *014123576505* "seize"
#WORD *014124722245* "send"
#WORD *014125735232* "seriou"
#WORD *014126312245* "set"
#WORD *014126725145* "seven"
#WORD *014126725171* "sevent"
#WORD *014151522505* "shade"
#WORD *014151543045* "shall"
#WORD *014151552511* "shaped"
#WORD *014151557223* "sharon"
#WORD *014152512245* "she"
#WORD *014152513430* "she's"
#WORD *014152542545* "shelf"
#WORD *014152543552* "shelve"
#WORD *014153552245* "ship"
#WORD *014153562245* "shit"
#WORD *014155151445* "shoot"
#WORD *014155152245* "shop"
#WORD *014155165051* "should"
#WORD *014155165445* "shout"
#WORD *014155170245* "show"
#WORD *014156562245* "shut"
#WORD *014162530521* "siegel"
#WORD *014163146245* "sign"
#WORD *014163146321* "signal"
#WORD *014166312245* "sit"
#WORD *014167312245* "six"
#WORD *014167362512* "sixtee"
#WORD *014167363705* "sixty"
#WORD *014203544245* "skim"
#WORD *014211552245* "slap"
#WORD *014213522723* "slidin"
#WORD *014215170245* "slow"
#WORD *014215170527* "slower"
#WORD *014215171076* "slowly"
#WORD *014216530245* "slug"
#WORD *014221543045* "small"
#WORD *014221560645* "smash"
#WORD *014222543045* "smell"
#WORD *014223542505* "smile"
#WORD *014225140505* "smoke"
#WORD *014231553415* "snapsh"
#WORD *014231557005* "snark"
#WORD *014233526545* "sniff"
#WORD *014235162245* "snot"
#WORD *014244524245* "some"
#WORD *014244525455* "someth"
#WORD *014244715345* "sonar"
#WORD *014244715365* "sonarp"
#WORD *014244715370* "sonars"
#WORD *014245146245* "soon"
#WORD *014246112245* "sos"
#WORD *014246546445* "sound"
#WORD *014246562645* "south"
#WORD *014246562652* "southe"
#WORD *014246562674* "southw"
#WORD *014251520505* "space"
#WORD *014251556505* "spare"
#WORD *014252515005* "speak"
#WORD *014252515012* "speake"
#WORD *014252520706* "specia"
#WORD *014252524445* "speed"
#WORD *014255724311* "spread"
#WORD *014266515352* "square"
#WORD *014311535145* "stain"
#WORD *014311546445* "stand"
#WORD *014311546456* "standi"
#WORD *014311556364* "starbo"
#WORD *014311556505* "stare"
#WORD *014311557445* "start"
#WORD *014311557452* "starte"
#WORD *014311557461* "startl"
#WORD *014311562505* "state"
#WORD *014311562724* "statio"
#WORD *014311574245* "stay"
#WORD *014312515045* "steal"
#WORD *014312525045* "steel"
#WORD *014312525345* "steer"
#WORD *014312546416* "stenci"
#WORD *014313521005* "stick"
#WORD *014313543045* "still"
#WORD *014315152245* "stop"
#WORD *014315156314* "storag"
#WORD *014315157705* "story"
#WORD *014315715154* "strang"
#WORD *014315715605* "straw"
#WORD *014315735012* "strike"
#WORD *014316523705* "study"
#WORD *014316526545* "stuff"
#WORD *014321712245* "sub"
#WORD *014321713430* "sub's"
#WORD *014321744327* "submar"
#WORD *014321744527* "submer"
#WORD *014322140245* "suck"
#WORD *014324545223* "summon"
#WORD *014325325345* "super"
#WORD *014325325347* "superb"
#WORD *014325353056* "suppli"
#WORD *014325353076* "supply"
#WORD *014325724245* "sure"
#WORD *014325726310* "surfac"
#WORD *014325753356* "surpri"
#WORD *014325766733* "surviv"
#WORD *014326152523* "suspen"
#WORD *014341312245* "sw"
#WORD *014341543064* "swallo"
#WORD *014343544245* "swim"
#WORD *014343546605* "swing"
#WORD *014343562415* "switch"
#WORD *014365735154* "syring"
#WORD *014366162522* "system"
#WORD *014461742505* "table"
#WORD *014464124245* "take"
#WORD *014464340245* "talk"
#WORD *014464740245* "tank"
#WORD *014521556245* "tear"
#WORD *014522133156* "techni"
#WORD *014524342245* "tell"
#WORD *014524552527* "temper"
#WORD *014524553227* "tempor"
#WORD *014524712245* "ten"
#WORD *014526162245* "test"
#WORD *014526162527* "tester"
#WORD *014526163227* "testor"
#WORD *014551547005* "thank"
#WORD *014551547030* "thanks"
#WORD *014551562270* "that'"
#WORD *014552512245* "the"
#WORD *014552544245* "them"
#WORD *014552546245* "then"
#WORD *014552556505* "there"
#WORD *014552560505* "these"
#WORD *014552574245* "they"
#WORD *014552574270* "they'"
#WORD *014553546605* "thing"
#WORD *014553557452* "thirte"
#WORD *014553557476* "thirty"
#WORD *014553560245* "this"
#WORD *014555157252* "thorpe"
#WORD *014555165406* "thousa"
#WORD *014555724331* "threat"
#WORD *014555724505* "three"
#WORD *014555751471* "thrott"
#WORD *014555751514* "throug"
#WORD *014555751605* "throw"
#WORD *014555764245* "thru"
#WORD *014562512245* "tie"
#WORD *014564342245* "till"
#WORD *014565312245* "tip"
#WORD *014565313430* "tip's"
#WORD *014641312245* "to"
#WORD *014645142245* "tool"
#WORD *014645312245* "top"
#WORD *014646160245* "toss"
#WORD *014646520645* "touch"
#WORD *014671520505* "trace"
#WORD *014671521005* "track"
#WORD *014671521464* "tracto"
#WORD *014671535464* "traito"
#WORD *014671547005* "trank"
#WORD *014671547332* "tranqu"
#WORD *014671547422* "transm"
#WORD *014671547425* "transp"
#WORD *014671552245* "trap"
#WORD *014675164361* "troubl"
#WORD *014723112245* "tug"
#WORD *014724724245* "tune"
#WORD *014725716723* "turbin"
#WORD *014725746245* "turn"
#WORD *014725747405* "turns"
#WORD *014742543552* "twelve"
#WORD *014742547476* "twenty"
#WORD *014745112245* "two"
#WORD *015051312245* "u"
#WORD *015216356322* "ultram"
#WORD *015231563446* "unatta"
#WORD *015232164553* "uncuff"
#WORD *015232325345* "under"
#WORD *015232325363* "undern"
#WORD *015232325370* "unders"
#WORD *015232325374* "underw"
#WORD *015232715431* "unfast"
#WORD *015233351220* "unhook"
#WORD *015233562245* "unit"
#WORD *015233566527* "univer"
#WORD *015234335116* "unlimi"
#WORD *015234350420* "unlock"
#WORD *015236121356* "unscri"
#WORD *015236334505* "untie"
#WORD *015236335045* "until"
#WORD *015251312245* "up"
#WORD *015273125171* "urgent"
#WORD *015301312245* "us"
#WORD *015302512245* "use"
#WORD *015303546605* "using"
#WORD *015464364307* "valuab"
#WORD *015464366505* "valve"
#WORD *015464366530* "valves"
#WORD *015525717230* "verbos"
#WORD *015525760724* "versio"
#WORD *015562325205* "video"
#WORD *015562325225* "videop"
#WORD *015562571264* "viewpo"
#WORD *015644362314* "voltag"
#WORD *016051312245* "w"
#WORD *016062324245* "wade"
#WORD *016063562245* "wait"
#WORD *016064124245* "wake"
#WORD *016064340245* "walk"
#WORD *016064341606* "walkwa"
#WORD *016064342245* "wall"
#WORD *016064362245* "walt"
#WORD *016064362270* "walt'"
#WORD *016065744245* "warm"
#WORD *016065746723* "warnin"
#WORD *016066112245* "was"
#WORD *016066325345* "water"
#WORD *016121312245* "we"
#WORD *016121361352* "we're"
#WORD *016121553223* "weapon"
#WORD *016124342245* "well"
#WORD *016125724245* "were"
#WORD *016126162245* "west"
#WORD *016151542505* "whale"
#WORD *016151562245* "what"
#WORD *016151562270* "what'"
#WORD *016152546245* "when"
#WORD *016152546270* "when'"
#WORD *016152556505* "where"
#WORD *016153520645* "which"
#WORD *016155112245* "who"
#WORD *016155113430* "who's"
#WORD *016157512245* "why"
#WORD *016164321205* "wilco"
#WORD *016164342245* "will"
#WORD *016164722245* "wind"
#WORD *016164723234* "window"
#WORD *016164740245* "wink"
#WORD *016165324245* "wipe"
#WORD *016166332245* "with"
#WORD *016244515145* "woman"
#WORD *016244713431* "won't"
#WORD *016245740245* "work"
#WORD *016245740352* "workbe"
#WORD *016245740424* "workco"
#WORD *016245741415* "worksh"
#WORD *016246542445* "would"
#WORD *016272546415* "wrench"
#WORD *017051312245* "y"
#WORD *017121532245* "yeah"
#WORD *017124342245* "yell"
#WORD *017124343234* "yellow"
#WORD *017126112245* "yes"
#WORD *017246512245* "you"
#WORD *017246513427* "you'r"
#WORD *017246546605* "young"
#WORD *017246557412* "yourse"
#WORD *017325312245* "yup"
#WORD *017451312245* "z"
#WORD *017525750245* "zero"
#WORD *017642512245* "zoe"
#WORD *017642513430* "zoe's"
#WORD *017777742605* "zzzlg"
#WORD *017777777054* "zzzzlg"

18
j1.xzap Normal file
View File

@@ -0,0 +1,18 @@
.INSERT "J1FREQ"
.INSERT "J1DAT"
.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

1
j1.zap
View File

@@ -1,7 +1,6 @@
.INSERT "J1DAT" ; DATA IS IN THIS FILE
.INSERT "MACROS"

52
j1.zbin Normal file
View File

@@ -0,0 +1,52 @@
"COMPILE/LOAD FILE for SEASTALKER
Copyright (C) 1984 Infocom, Inc. All rights reserved."
<COND (<GASSIGNED? PREDGEN>
<PRINC "Compiling">
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>
<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.ZEN" T>
<IFILE "SYNTAX.ZEN" T>
<IFILE "MAIN.ZEN" T>
<IFILE "SUB.ZEN" T>
<IFILE "BATTLE.ZEN" T>
<IFILE "THINGS.ZEN" T>
<IFILE "DOME.ZEN" T>
<IFILE "PEOPLE.ZEN" T>
<IFILE "PLACES.ZEN" T>
<IFILE "GLOBAL.ZEN" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<IFILE "CLOCK.ZEN" T>
<ENDLOAD>
<IFILE "PARSER.ZEN" T>
<IFILE "VERBS.ZEN" T>
<IFILE "EVENTS.ZEN" T>
<GC-MON T>
<GC 0 T 5>

15
j1.zebra Normal file
View File

@@ -0,0 +1,15 @@
.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"
.END

38
j1.zil
View File

@@ -3,16 +3,23 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<COND (<GASSIGNED? PREDGEN>
<PRINC "Compiling">
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>
<ID 0>)
(T <PRINC "Loading">)>
<PRINC " SEASTALKER: junior-level interactive fiction from Infocom!">
<BLOAT 90000 0 0 3500 0 0 0 0 0 512>
ON!-INITIAL "for DEBUGR"
OFF!-INITIAL
ENABLE!-INITIAL
DISABLE!-INITIAL
<COND (<GASSIGNED? MUDDLE>
<BLOAT 90000 0 0 3500 0 0 0 0 0 512>)>
<SET REDEFINE T>
<GLOBAL BIGFIX 10000>
"<GLOBAL BIGFIX 10000>"
<OR <GASSIGNED? ZILCH>
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
@@ -20,7 +27,6 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<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>
@@ -28,28 +34,24 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<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 "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>
<CONSTANT SERIAL 0>
<IFILE "CLOCK" T>
<ENDLOAD>
<IFILE "PARSER" T>
<IFILE "VERBS" T>
<COND (<GASSIGNED? PREDGEN> <IFILE "EVENTS" T>)>
<IFILE "EVENTS" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<GC-MON T>
<GC 0 T 5>
<COND (<NOT <GASSIGNED? PREDGEN>>
<CLOSE!- ,XTELLCHAN>)>
<COND (<GASSIGNED? MUDDLE>
<GC 0 T 5>)>

BIN
j1.zip

Binary file not shown.

14856
j1dat.zap Normal file

File diff suppressed because it is too large Load Diff

200
j1freq.xzap Normal file
View File

@@ -0,0 +1,200 @@
.FSTR FSTR?1,"the " ;1712 856
.FSTR FSTR?2,", " ;612 612
.FSTR FSTR?3,"The " ;579 193
.FSTR FSTR?4,"You " ;537 179
.FSTR FSTR?5,"you " ;530 265
.FSTR FSTR?6,"and " ;438 219
.FSTR FSTR?7,"You're " ;420 60
.FSTR FSTR?8,"to " ;408 408
.FSTR FSTR?9,"There's " ;368 46
.FSTR FSTR?10,"your " ;357 119
.FSTR FSTR?11,"It's " ;345 69
.FSTR FSTR?12,". " ;331 331
.FSTR FSTR?13,"can't " ;325 65
.FSTR FSTR?14,"that " ;288 96
.FSTR FSTR?15,"is " ;244 244
.FSTR FSTR?16,"of " ;239 239
.FSTR FSTR?17,"have " ;237 79
.FSTR FSTR?18,"with " ;219 73
.FSTR FSTR?19,"from " ;189 63
.FSTR FSTR?20,"in " ;172 172
.FSTR FSTR?21,"don't " ;170 34
.FSTR FSTR?22,"I " ;164 164
.FSTR FSTR?23,"for " ;160 80
.FSTR FSTR?24,"can " ;156 78
.FSTR FSTR?25,"you're " ;156 26
.FSTR FSTR?26,"should " ;150 30
.FSTR FSTR?27,"This " ;140 35
.FSTR FSTR?28,"! " ;133 133
.FSTR FSTR?29,"That's " ;133 19
.FSTR FSTR?30,"Suddenly " ;128 16
.FSTR FSTR?31,"about " ;124 31
.FSTR FSTR?32,"through " ;120 20
.FSTR FSTR?33,"on " ;117 117
.FSTR FSTR?34,"want " ;114 38
.FSTR FSTR?35,"not " ;110 55
.FSTR FSTR?36,"think " ;108 27
.FSTR FSTR?37,"nothing " ;108 18
.FSTR FSTR?38,"it " ;107 107
.FSTR FSTR?39,"just " ;105 35
.FSTR FSTR?40,"find " ;105 35
.FSTR FSTR?41,"out " ;104 52
.FSTR FSTR?42,"something " ;104 13
.FSTR FSTR?43,"this " ;102 34
.FSTR FSTR?44,"but " ;100 50
.FSTR FSTR?45,"will " ;96 32
.FSTR FSTR?46,"Your " ;96 24
.FSTR FSTR?47,"That " ;96 24
.FSTR FSTR?48,"has " ;94 47
.FSTR FSTR?49,"doesn't " ;91 13
.FSTR FSTR?50,"You'll " ;91 13
.FSTR FSTR?51,"Greenup " ;91 13
.FSTR FSTR?52,"here" ;88 44
.FSTR FSTR?53,"still " ;88 22
.FSTR FSTR?54,"could " ;88 22
.FSTR FSTR?55,"I'm " ;88 22
.FSTR FSTR?56,"into " ;87 29
.FSTR FSTR?57,"that" ;86 43
.FSTR FSTR?58,"around " ;85 17
.FSTR FSTR?59,"Tip " ;84 28
.FSTR FSTR?60,"control " ;84 14
.FSTR FSTR?61,"Thorpe " ;84 14
.FSTR FSTR?62,"Sharon " ;84 14
.FSTR FSTR?63,"looks " ;80 20
.FSTR FSTR?64,"Sorry" ;80 20
.FSTR FSTR?65,"won't " ;80 16
.FSTR FSTR?66,"monster " ;78 13
.FSTR FSTR?67,"anything " ;77 11
.FSTR FSTR?68,"see " ;76 38
.FSTR FSTR?69,"open " ;75 25
.FSTR FSTR?70,"must " ;75 25
.FSTR FSTR?71,"are " ;74 37
.FSTR FSTR?72,"Okay" ;72 24
.FSTR FSTR?73,"looking " ;72 12
.FSTR FSTR?74,"didn't " ;72 12
.FSTR FSTR?75,"at " ;71 71
.FSTR FSTR?76,"now " ;70 35
.FSTR FSTR?77,"It " ;70 35
.FSTR FSTR?78,"meters " ;70 14
.FSTR FSTR?79,"isn't " ;70 14
.FSTR FSTR?80,"engine " ;70 14
.FSTR FSTR?81,"would " ;68 17
.FSTR FSTR?82,"right " ;68 17
.FSTR FSTR?83,"better " ;65 13
.FSTR FSTR?84,"I'll " ;65 13
.FSTR FSTR?85,"be " ;64 64
.FSTR FSTR?86,"what " ;63 21
.FSTR FSTR?87,"do " ;61 61
.FSTR FSTR?88,"tank " ;60 20
.FSTR FSTR?89,"like " ;60 20
.FSTR FSTR?90,"under " ;60 15
.FSTR FSTR?91,"comes " ;60 15
.FSTR FSTR?92,"sitting " ;60 10
.FSTR FSTR?93,"docking " ;60 10
.FSTR FSTR?94,"already " ;60 10
.FSTR FSTR?95,"take " ;57 19
.FSTR FSTR?96,"But " ;57 19
;word frequency table of 96 most common words
WORDS:: .TABLE
FSTR?1
FSTR?2
FSTR?3
FSTR?4
FSTR?5
FSTR?6
FSTR?7
FSTR?8
FSTR?9
FSTR?10
FSTR?11
FSTR?12
FSTR?13
FSTR?14
FSTR?15
FSTR?16
FSTR?17
FSTR?18
FSTR?19
FSTR?20
FSTR?21
FSTR?22
FSTR?23
FSTR?24
FSTR?25
FSTR?26
FSTR?27
FSTR?28
FSTR?29
FSTR?30
FSTR?31
FSTR?32
FSTR?33
FSTR?34
FSTR?35
FSTR?36
FSTR?37
FSTR?38
FSTR?39
FSTR?40
FSTR?41
FSTR?42
FSTR?43
FSTR?44
FSTR?45
FSTR?46
FSTR?47
FSTR?48
FSTR?49
FSTR?50
FSTR?51
FSTR?52
FSTR?53
FSTR?54
FSTR?55
FSTR?56
FSTR?57
FSTR?58
FSTR?59
FSTR?60
FSTR?61
FSTR?62
FSTR?63
FSTR?64
FSTR?65
FSTR?66
FSTR?67
FSTR?68
FSTR?69
FSTR?70
FSTR?71
FSTR?72
FSTR?73
FSTR?74
FSTR?75
FSTR?76
FSTR?77
FSTR?78
FSTR?79
FSTR?80
FSTR?81
FSTR?82
FSTR?83
FSTR?84
FSTR?85
FSTR?86
FSTR?87
FSTR?88
FSTR?89
FSTR?90
FSTR?91
FSTR?92
FSTR?93
FSTR?94
FSTR?95
FSTR?96
.ENDT
.ENDI

369
j1str.zap
View File

@@ -22,195 +22,184 @@
.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,"
.GSTR STR?21,"open"
.GSTR STR?22,"under water"
.GSTR STR?23,"clean enough"
.GSTR STR?24,"The space is dimly illuminated by small work lights, but you can see machinery everywhere."
.GSTR STR?25,"The only way out is ""OUT""."
.GSTR STR?26,"(You'll find that information in your SEASTALKER package.)"
.GSTR STR?27,"fixed"
.GSTR STR?28,"orange"
.GSTR STR?29,"red"
.GSTR STR?30,"changes to orange"
.GSTR STR?31,"fades to dark again"
.GSTR STR?32,"turns red"
.GSTR STR?33,"continues to sound."
.GSTR STR?34,"ceases."
.GSTR STR?35,"rises to a shriller whine."
.GSTR STR?36,"looking at it"
.GSTR STR?37,"set to automatic"
.GSTR STR?38,"set to manual"
.GSTR STR?39,"off"
.GSTR STR?40,"n"
.GSTR STR?41,"ff"
.GSTR STR?42,"on"
.GSTR STR?43,"start"
.GSTR STR?44,"turned on"
.GSTR STR?45,"stop"
.GSTR STR?46,"slow"
.GSTR STR?47,"medium"
.GSTR STR?48,"fast"
.GSTR STR?49,"submerge"
.GSTR STR?50,"here"
.GSTR STR?51,"at that depth"
.GSTR STR?52,"de"
.GSTR STR?53,"a"
.GSTR STR?54,"There's a dart gun here."
.GSTR STR?55,"find"
.GSTR STR?56,"mounted"
.GSTR STR?57,"aim"
.GSTR STR?58,"in the way"
.GSTR STR?59,"The bazooka is mounted on a claw."
.GSTR STR?60,"The dart is mounted on a claw."
.GSTR STR?61,"ask"
.GSTR STR?62,"shout"
.GSTR STR?63,"There's a bazooka here."
.GSTR STR?64,"Undersea Research Station"
.GSTR STR?65,"empty"
.GSTR STR?66,"full"
.GSTR STR?67,"full of people"
.GSTR STR?68,"You can go down to the north or south."
.GSTR STR?69,"say"
.GSTR STR?70,"On each side"
.GSTR STR?71,"In each corner"
.GSTR STR?72,"refuse"
.GSTR STR?73,"other "
.GSTR STR?74,"the "
.GSTR STR?75,"It's stamped: ""AIR SUPPLY SYSTEM / Fram Bolt Wrench."""
.GSTR STR?76,"It has screw threads."
.GSTR STR?77,"It's sitting neatly in place."
.GSTR STR?78,"ea"
.GSTR STR?79,"we"
.GSTR STR?80,"nor"
.GSTR STR?81,"sou"
.GSTR STR?82,"looking out"
.GSTR STR?83,"playing with"
.GSTR STR?84,"""I can't help you there."""
.GSTR STR?85,"""That has nothing to do with me."""
.GSTR STR?86,"this "
.GSTR STR?87,"that "
.GSTR STR?88,"working on the SCIMITAR"
.GSTR STR?89,"""Wilco, "
.GSTR STR?90,"working on the sonar equipment"
.GSTR STR?91,"""If you think that will help, do it!"""
.GSTR STR?92,"""I think you can do that better yourself."""
.GSTR STR?93,"the bottom"
.GSTR STR?94,"an obstacle"
.GSTR STR?95,"looking at you anxiously"
.GSTR STR?96,"collapsing on the floor"
.GSTR STR?97,"recovering from collapse"
.GSTR STR?98,"using Oxygen Gear"
.GSTR STR?99,"north"
.GSTR STR?100,"south"
.GSTR STR?101,"east"
.GSTR STR?102,"west"
.GSTR STR?103,"northwest"
.GSTR STR?104,"northeast"
.GSTR STR?105,"southwest"
.GSTR STR?106,"southeast"
.GSTR STR?107,"downstairs"
.GSTR STR?108,"upstairs"
.GSTR STR?109,"in"
.GSTR STR?110,"out"
.GSTR STR?111,"There's so much junk in here that there's barely enough room for you."
.GSTR STR?112,"The file drawer is filled with a lot of business papers."
.GSTR STR?113,"is"
.GSTR STR?114,"A microphone is sitting on your workbench."
.GSTR STR?115,"You have to go north to board the SCIMITAR."
.GSTR STR?116,"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?117,"in it"
.GSTR STR?118,"careful"
.GSTR STR?119,"brief"
.GSTR STR?120,"can be"
.GSTR STR?121,"???"
.GSTR STR?122,"ere"
.GSTR STR?123,"at"
.GSTR STR?124,"begin"
.GSTR STR?125,"end"
.GSTR STR?126,"superbrief"
.GSTR STR?127,"verbose"
.GSTR STR?128,"(Sorry, but it didn't work. Maybe your instruction manual or Reference Card can tell you why.)"
.GSTR STR?129,"go"
.GSTR STR?130," doesn't help any."
.GSTR STR?131," is a waste of time."
.GSTR STR?132," "
.GSTR STR?133," "
.GSTR STR?134," "
.GSTR STR?135," "
.GSTR STR?136," "
.GSTR STR?137,"(I assume you mean:"
.GSTR STR?138," doesn't appear interested"
.GSTR STR?139," doesn't care"
.GSTR STR?140," lets out a loud yawn"
.GSTR STR?141," seems to be growing impatient"
.GSTR STR?142,"That's ridiculous!"
.GSTR STR?143,"That's wacky!"
.GSTR STR?144,"What a fruitcake!"
.GSTR STR?145,"What a screwball!"
.GSTR STR?146,"You're off your rocker!"
.GSTR STR?147,"You're crazy in the head!"
.GSTR STR?148,"You can't be serious!"
.GSTR STR?149,"seem"
.GSTR STR?150,"escape"
.GSTR STR?151,"attack"
.GSTR STR?152,"not wired for phoning"
.GSTR STR?153,"get in"
.GSTR STR?154,"climb onto"
.GSTR STR?155,"on the deck"
.GSTR STR?156,"on the floor"
.GSTR STR?157,"bang"
.GSTR STR?158,"Hello"
.GSTR STR?159,"Good-bye"
.GSTR STR?160,"(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 from your dealer.)"
.GSTR STR?161,"kill"
.GSTR STR?162,"kisse"
.GSTR STR?163,"standing up"
.GSTR STR?164,"look inside"
.GSTR STR?165,"look outside"
.GSTR STR?166,"locked"
.GSTR STR?167,"Pushing"
.GSTR STR?168,"pick up"
.GSTR STR?169,"Fiddling with"
.GSTR STR?170,"talk into"
.GSTR STR?171,"screw in"
.GSTR STR?172,"her"
.GSTR STR?173,"his"
.GSTR STR?174,"shoot"
.GSTR STR?175,"slap"
.GSTR STR?176,"smell"
.GSTR STR?177,"holding it"
.GSTR STR?178,"reach"
.GSTR STR?179,"talk to"
.GSTR STR?180," ducks"
.GSTR STR?181," doesn't duck"
.GSTR STR?182,"turn off"
.GSTR STR?183,"turn on"
.GSTR STR?184,"unlocked"
.GSTR STR?185,"wait until"
.GSTR STR?186,"not asleep"
.GSTR STR?187,"room."
.GSTR STR?188,"go under"
.GSTR STR?189,"beginning"
.GSTR STR?190,"fair"
.GSTR STR?191,"good"
.GSTR STR?192,"very good"
.GSTR STR?193,"master"
.GSTR STR?194,"famous"
.GSTR STR?195,"busy"
.GSTR STR?196,"""I think you should reconsider."
.GSTR STR?197,"is now"
.GSTR STR?198,"now comes rushing back,"
.ENDI

23
jdl.txt Normal file
View File

@@ -0,0 +1,23 @@
3-Sep-84 10:20:30-EDT,955;000000000001
Date: 3 Sep 1984 1020-EDT
From: Stu Galley <SWG at ZORK>
Subject: Re: JIM LAWRENCE
To: JON
cc: SWG, MD, BLANK
In-Reply-To: Your message of 28-Aug-84 1104-EDT
I think he should be included in Seastalker's About the Author.
Here's a summary of the bio he supplied to us:
Jim Lawrence has written fiction extensively for both children and
adults in a variety of media: books, magazine articles, film and radio
scripts, and comic strips, including "decision" strips. He estimates
that he has written some sixty books of fiction, many of them under pen
names for series like Tom Swift Jr and Nancy Drew. His radio credits
include weekly scripts for Sergeant Preston of the Yukon, The Green
Hornet, and Sky King. He has written for, and in some cases created and
illustrated, the comic strips Dallas, Joe Palooka, Captain Easy, Friday
Foster, and Buck Rogers. Seastalker is his first published work of
interactive fiction.
-------

View File

@@ -24,12 +24,6 @@
RTRUE
.FUNCT ZPROB,BASE
RANDOM 100
GRTR? BASE,STACK /TRUE
RFALSE
.FUNCT PICK-ONE,FROB
GET FROB,0
RANDOM STACK

Binary file not shown.

308
main.zap
View File

@@ -3,10 +3,11 @@
.FUNCT GO
START::
?FCN: SET 'LIT,1
?FCN: SET 'LIT,TRUE-VALUE
PUTB P-LEXV,0,59
PUTB YES-LEXV,0,4
SET 'SCORE,0
SET 'HERE,GAME
PUTB FIRST-NAME,0,3
PUTB FIRST-NAME,1,45
PUTB FIRST-NAME,2,45
@@ -16,25 +17,23 @@ START::
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
FSET? CENTER-OF-LAB,TOUCHBIT /?CND1
CALL INTRO
?CND1: MOVE PLAYER,HERE
ZERO? RESTORED-DURING-NAME-INPUT \?CND4
CALL V-LOOK
?CND4: CALL MAIN-LOOP
CALL QUEUE-MAIN-EVENTS
?CND1: SET 'HERE,CENTER-OF-LAB
MOVE TIP,HERE
MOVE PLAYER,HERE
CALL MAIN-LOOP
JUMP ?FCN
.FUNCT INTRO,N
PRINTI "Copyright (c) 1984 Infocom, Inc. All rights reserved.
PRINTI "Copyright (c) 1984, 1985 Infocom, Inc. All rights reserved.
Welcome to junior-level interactive fiction from Infocom!
Welcome to interactive fiction from Infocom!
In this story, you're the hero or heroine, so we'll use your name!"
CRLF
@@ -83,14 +82,14 @@ You look up from your plans for the "
.FUNCT QUEUE-MAIN-EVENTS
SET 'ALARM-RINGING,1
SET 'ALARM-RINGING,TRUE-VALUE
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
SET 'OLD-HERE,CENTER-OF-LAB
SET 'TIP-FOLLOWS-YOU?,TRUE-VALUE
RANDOM 250
ADD 250,STACK
CALL QUEUE,I-SNARK-ATTACKS,STACK
@@ -106,122 +105,127 @@ You look up from your plans for the "
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
.FUNCT MAIN-LOOP,TRASH
?PRG1: CALL MAIN-LOOP-1 >TRASH
JUMP ?PRG1
.FUNCT MAIN-LOOP-1,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,?TMP1
SET 'CNT,0
SET 'OBJ,FALSE-VALUE
SET 'PTBL,TRUE-VALUE
EQUAL? QCONTEXT-ROOM,HERE /?CND1
SET 'QCONTEXT,FALSE-VALUE
?CND1: CALL PARSER >P-WON
ZERO? P-WON /?ELS6
GET P-PRSI,P-MATCHLEN >ICNT
GET P-PRSO,P-MATCHLEN >OCNT
ZERO? OCNT \?ELS13
ZERO? OCNT \?ELS11
PUSH OCNT
JUMP ?CND9
?ELS13: GRTR? OCNT,1 \?ELS15
JUMP ?CND7
?ELS11: GRTR? OCNT,1 \?ELS13
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
ZERO? ICNT \?ELS16
SET 'OBJ,FALSE-VALUE
JUMP ?CND14
?ELS16: GET P-PRSI,1 >OBJ
?CND14: PUSH OCNT
JUMP ?CND7
?ELS13: GRTR? ICNT,1 \?ELS20
SET 'PTBL,FALSE-VALUE
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
JUMP ?CND7
?ELS20: PUSH 1
?CND7: SET 'NUM,STACK
ZERO? OBJ \?CND23
EQUAL? ICNT,1 \?CND23
GET P-PRSI,1 >OBJ
?CND25: EQUAL? PRSA,V?WALK \?ELS32
?CND23: EQUAL? PRSA,V?WALK \?ELS30
CALL PERFORM,PRSA,PRSO >V
JUMP ?CND30
?ELS32: ZERO? NUM \?ELS34
JUMP ?CND28
?ELS30: ZERO? NUM \?ELS32
GETB P-SYNTAX,P-SBITS
BAND STACK,P-SONUMS
ZERO? STACK \?ELS37
ZERO? STACK \?ELS35
CALL PERFORM,PRSA >V
SET 'PRSO,0
JUMP ?CND30
?ELS37: PRINTI "(There isn't anything to "
SET 'PRSO,FALSE-VALUE
JUMP ?CND28
?ELS35: PRINTI "(There isn't anything to "
GET P-ITBL,P-VERBN >TMP
ZERO? P-OFLAG /?ELS44
ZERO? P-OFLAG /?ELS42
GET TMP,0
PRINTB STACK
JUMP ?CND42
?ELS44: GETB TMP,2 >?TMP1
JUMP ?CND40
?ELS42: GETB TMP,2 >?TMP1
GETB TMP,3
CALL WORD-PRINT,?TMP1,STACK
?CND42: PRINTI "!)"
?CND40: PRINTI "!)"
CRLF
SET 'V,0
JUMP ?CND30
?ELS34: ZERO? PTBL /?ELS51
GRTR? NUM,1 \?ELS51
EQUAL? PRSA,V?COMPARE \?ELS51
SET 'V,FALSE-VALUE
JUMP ?CND28
?ELS32: ZERO? PTBL /?ELS49
GRTR? NUM,1 \?ELS49
EQUAL? PRSA,V?COMPARE \?ELS49
CALL PERFORM,PRSA,OBJECT-PAIR >V
JUMP ?CND30
?ELS51: SET 'TMP,0
?PRG56: IGRTR? 'CNT,NUM \?ELS60
GRTR? TMP,0 \?REP57
JUMP ?CND28
?ELS49: SET 'TMP,0
?PRG54: IGRTR? 'CNT,NUM \?ELS58
GRTR? TMP,0 \?REP55
PRINTI "The other thing"
EQUAL? TMP,1 /?CND66
EQUAL? TMP,1 /?CND64
PRINTI "s"
?CND66: PRINTI " that you mentioned "
EQUAL? TMP,1 /?ELS75
?CND64: PRINTI " that you mentioned "
EQUAL? TMP,1 /?ELS73
PRINTI "are"
JUMP ?CND73
?ELS75: PRINTI "is"
?CND73: PRINTI "n't here."
JUMP ?CND71
?ELS73: PRINTI "is"
?CND71: PRINTI "n't here."
CRLF
JUMP ?REP57
?ELS60: ZERO? PTBL /?ELS88
JUMP ?REP55
?ELS58: ZERO? PTBL /?ELS86
GET P-PRSO,CNT >OBJ1
JUMP ?CND86
?ELS88: GET P-PRSI,CNT >OBJ1
?CND86: GRTR? NUM,1 \?CND92
EQUAL? OBJ1,NOT-HERE-OBJECT \?ELS97
JUMP ?CND84
?ELS86: GET P-PRSI,CNT >OBJ1
?CND84: GRTR? NUM,1 \?CND90
EQUAL? OBJ1,NOT-HERE-OBJECT \?ELS95
INC 'TMP
JUMP ?PRG56
?ELS97: EQUAL? OBJ1,PLAYER \?ELS99
JUMP ?PRG56
?ELS99: EQUAL? OBJ1,IT \?ELS104
JUMP ?PRG54
?ELS95: EQUAL? OBJ1,PLAYER \?ELS97
JUMP ?PRG54
?ELS97: EQUAL? OBJ1,IT \?ELS102
PRINTD P-IT-OBJECT
JUMP ?CND102
?ELS104: PRINTD OBJ1
?CND102: PRINTI ": "
?CND92: ZERO? PTBL /?ELS113
JUMP ?CND100
?ELS102: PRINTD OBJ1
?CND100: PRINTI ": "
?CND90: ZERO? PTBL /?ELS111
PUSH OBJ1
JUMP ?CND109
?ELS113: PUSH OBJ
?CND109: CALL QCONTEXT-CHECK,STACK >V
ZERO? PTBL /?ELS121
JUMP ?CND107
?ELS111: PUSH OBJ
?CND107: CALL QCONTEXT-CHECK,STACK >V
ZERO? PTBL /?ELS119
PUSH OBJ1
JUMP ?CND117
?ELS121: PUSH OBJ
?CND117: SET '?TMP1,STACK
ZERO? PTBL /?ELS129
JUMP ?CND115
?ELS119: PUSH OBJ
?CND115: SET '?TMP1,STACK
ZERO? PTBL /?ELS127
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
JUMP ?CND123
?ELS127: PUSH OBJ1
?CND123: CALL PERFORM,PRSA,?TMP1,STACK >V
EQUAL? V,M-FATAL \?PRG54
JUMP ?CND28
?REP55:
?CND28: EQUAL? V,M-FATAL \?CND4
SET 'P-CONT,FALSE-VALUE
JUMP ?CND4
?ELS6: SET 'P-CONT,FALSE-VALUE
?CND4: ZERO? P-WON /FALSE
CALL GAME-VERB?
ZERO? STACK \?PRG1
ZERO? STACK \FALSE
CALL CLOCKER >V
JUMP ?PRG1
RETURN V
.FUNCT QCONTEXT-CHECK,PRSO,OTHER,WHO=0,N=0
@@ -263,7 +267,7 @@ You look up from your plans for the "
.FUNCT SAID-TO,WHO
SET 'QCONTEXT,WHO
SET 'QCONTEXT-ROOM,HERE
RTRUE
RETURN QCONTEXT-ROOM
.FUNCT OBJECT-PAIR-F,P1,P2,?TMP1
@@ -294,7 +298,7 @@ You look up from your plans for the "
.FUNCT FAKE-ORPHAN,TMP,?TMP1
CALL ORPHAN,P-SYNTAX,0
CALL ORPHAN,P-SYNTAX,FALSE-VALUE
PRINTI "(Be specific: what thing do you want to "
GET P-OTBL,P-VERBN >TMP
ZERO? TMP \?ELS5
@@ -309,8 +313,8 @@ You look up from your plans for the "
GETB TMP,3
CALL WORD-PRINT,?TMP1,STACK
PUTB P-VTBL,2,0
?CND3: SET 'P-OFLAG,1
SET 'P-WON,0
?CND3: SET 'P-OFLAG,TRUE-VALUE
SET 'P-WON,FALSE-VALUE
PRINTR "?)"
@@ -328,19 +332,18 @@ You look up from your plans for the "
.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
GETP HEM-OBJECT,P?CHARACTER >V
CALL ACCESSIBLE?,HEM-OBJECT
ZERO? STACK \?CND1
GET GLOBAL-CHARACTER-TABLE,V
RSTACK
?CND1: GETP HEM-OBJECT,P?CHARACTER
GET CHARACTER-TABLE,STACK >V
?CND1: GET CHARACTER-TABLE,V >V
LOC V
EQUAL? HERE,STACK \FALSE
RETURN V
.FUNCT PERFORM,A,O=0,I=0,V,OA,OO,OI,?TMP1
.FUNCT PERFORM,A,O=0,I=0,V,OA,OO,OI
ZERO? DEBUG /?CND1
PRINTI "[Perform: "
PRINTN A
@@ -361,8 +364,8 @@ You look up from your plans for the "
SET 'PRSA,A
EQUAL? A,V?WALK /?CND30
EQUAL? IT,I,O \?CND33
CALL NOT-ACCESSIBLE?,P-IT-OBJECT
ZERO? STACK /?CND33
CALL ACCESSIBLE?,P-IT-OBJECT
ZERO? STACK \?CND33
ZERO? I \?ELS40
CALL FAKE-ORPHAN
RETURN 2
@@ -405,72 +408,57 @@ You look up from your plans for the "
SET 'I,P-HIM-OBJECT
?CND30: SET 'PRSI,I
SET 'PRSO,O
EQUAL? A,V?WALK /?ELS87
EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?ELS87
SET 'V,FALSE-VALUE
EQUAL? A,V?WALK /?CND85
EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?CND85
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
ZERO? V /?CND85
SET 'P-WON,FALSE-VALUE
?CND85: CALL THIS-IS-IT,PRSI
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
ZERO? V \?CND94
GETP WINNER,P?ACTION
CALL DD-APPLY,STR?8,WINNER,STACK >V
ZERO? V /?ELS95
JUMP ?CND85
?ELS95: LOC WINNER
?CND94: ZERO? V \?CND97
LOC WINNER
GETP STACK,P?ACTION
CALL D-APPLY,STR?9,STACK,M-BEG >V
ZERO? V /?ELS97
JUMP ?CND85
?ELS97: GET PREACTIONS,A
?CND97: ZERO? V \?CND100
GET PREACTIONS,A
CALL D-APPLY,STR?10,STACK >V
ZERO? V /?ELS99
JUMP ?CND85
?ELS99: ZERO? I /?ELS101
SET 'NOW-PRSI,1
?CND100: SET 'NOW-PRSI,TRUE-VALUE
ZERO? V \?CND103
ZERO? I /?CND103
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
?CND103: SET 'NOW-PRSI,FALSE-VALUE
ZERO? V \?CND108
ZERO? O /?CND108
EQUAL? A,V?WALK /?CND108
LOC O
ZERO? STACK /?ELS105
ZERO? STACK /?CND108
LOC O
GETP STACK,P?CONTFCN
ZERO? STACK /?ELS105
LOC O >?TMP1
GETP STACK,P?CONTFCN >V
ZERO? V /?CND108
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
CALL DD-APPLY,STR?12,STACK,V >V
?CND108: ZERO? V \?CND117
ZERO? O /?CND117
EQUAL? A,V?WALK /?CND117
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
?CND117: ZERO? V \?CND122
GET ACTIONS,A
CALL D-APPLY,FALSE-VALUE,STACK >V
?CND122: EQUAL? V,M-FATAL /?CND125
CALL GAME-VERB?
ZERO? STACK \?CND125
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
?CND125: SET 'PRSA,OA
SET 'PRSO,OO
SET 'PRSI,OI
RETURN V

134
main.zil
View File

@@ -1,13 +1,13 @@
"MAIN for SEASTALKER
Copyright (C) 1984 Infocom, Inc. All rights reserved."
Copyright (C) 1984, 1985 Infocom, Inc. All rights reserved."
<GLOBAL P-WON <>>
<CONSTANT M-FATAL 2>
<CONSTANT M-HANDLED 1>
"<CONSTANT M-HANDLED 1>
<CONSTANT M-NOT-HANDLED <>>
<CONSTANT M-NOT-HANDLED <>>"
<CONSTANT M-BEG 1>
@@ -22,13 +22,11 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<CONSTANT M-OBJDESC 5>
<ROUTINE GO ()
%<COND (<NOT <GASSIGNED? PREDGEN>>
'(<SETG XTELLCHAN <OPEN "READB" ,XTELLFILE>>
<SETG LIT T>))
('<SETG LIT T>)>
<SETG LIT T>
<PUTB ,P-LEXV 0 59>
<PUTB ,YES-LEXV 0 4>
<SETG SCORE 0>
<SETG HERE ,GAME>
<PUTB ,FIRST-NAME 0 3>
<PUTB ,FIRST-NAME 1 %<ASCII !\->>
<PUTB ,FIRST-NAME 2 %<ASCII !\->>
@@ -48,26 +46,23 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<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>)>
<COND (<NOT <FSET? ,CENTER-OF-LAB ,TOUCHBIT>>
<INTRO>
<QUEUE-MAIN-EVENTS>)>
<SETG HERE ,CENTER-OF-LAB>
<MOVE ,TIP ,HERE>
<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.|
<TELL
"Copyright (c) 1984, 1985 Infocom, Inc. All rights reserved.|
|
Welcome to junior-level interactive fiction from Infocom!|
Welcome to interactive fiction from Infocom!|
|
In this story, you're the hero or heroine, so
we'll use your name!" CR>
@@ -75,17 +70,17 @@ we'll use your name!" CR>
<TELL CR>
<SET N <READ-NAME ,FIRST-NAME "Please type your first name.">>
<COND (<==? .N ,M-FATAL> <RFALSE>)>
%<XTELL "Hello " FN "! ">
<TELL "Hello " FN "! ">
<SET N <READ-NAME ,LAST-NAME "Now type your last name.">>
<COND (<==? .N ,M-FATAL> <RFALSE>)>
%<XTELL "Is " FN " " LN " right?">
<TELL "Is " FN " " LN " right?">
<COND (<YES?> <RETURN>)>>
%<XTELL "Then let the story begin!">
<TELL "Then let the story begin!">
<SET N 24>
<REPEAT () <COND (<DLESS? N 0> <RETURN>) (T <CRLF>)>>
<V-VERSION>
<CRLF>
%<XTELL
<TELL
"\"" 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
@@ -101,7 +96,7 @@ ringing. Someone's trying to reach you over the private " D ,VIDEOPHONE
<QUEUE I-SHOW-SONAR 0>
<QUEUE I-UPDATE-FREIGHTER 0>
<QUEUE I-UPDATE-SUB-POSITION 0>
<SETG OLD-HERE ,HERE>
<SETG OLD-HERE ,CENTER-OF-LAB>
<SETG TIP-FOLLOWS-YOU? T>
<ENABLE <QUEUE I-SNARK-ATTACKS <+ 250 <RANDOM 250>>>>
<ENABLE <QUEUE I-LAMP-ON-SCOPE 5>>
@@ -110,10 +105,13 @@ ringing. Someone's trying to reach you over the private " D ,VIDEOPHONE
<ENABLE <QUEUE I-SHARON-GONE 25>>>
<ROUTINE MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL V PTBL OBJ1 TMP)
<ROUTINE MAIN-LOOP ("AUX" TRASH)
<REPEAT ()
<SET TRASH <MAIN-LOOP-1>>>>
<ROUTINE MAIN-LOOP-1 ("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>
@@ -191,7 +189,7 @@ ringing. Someone's trying to reach you over the private " D ,VIDEOPHONE
(T
<SETG P-CONT <>>)>
<COND (,P-WON
<COND (<NOT <GAME-VERB?>> <SET V <CLOCKER>>)>)>>>
<COND (<NOT <GAME-VERB?>> <SET V <CLOCKER>>)>)>>
<ROUTINE QCONTEXT-CHECK (PRSO "AUX" OTHER (WHO <>) (N 0))
<COND (<OR <VERB? ;FIND HELP WHAT>
@@ -235,7 +233,7 @@ ringing. Someone's trying to reach you over the private " D ,VIDEOPHONE
<ROUTINE OBJECT-PAIR-F ("AUX" P1 P2)
<COND (<L? 2 <GET ,P-PRSO ,P-MATCHLEN>>
<COND (<VERB? COMPARE>
%<XTELL
<TELL
"That's too many things to compare all at once!" CR>)>
<RTRUE>)
(<VERB? COMPARE>
@@ -279,17 +277,16 @@ ringing. Someone's trying to reach you over the private " D ,VIDEOPHONE
(<IN? .OBJ ,ROOMS> <TELL "(rm)">)>>
<ROUTINE FIX-HIM-HER (HEM-OBJECT "AUX" V)
<COND (<NOT-ACCESSIBLE? .HEM-OBJECT>
<SET V <GETP .HEM-OBJECT ,P?CHARACTER>>
<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>>>
<RETURN <GET ,GLOBAL-CHARACTER-TABLE .V>>)>
<SET V <GET ,CHARACTER-TABLE .V>>
<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>)
@@ -308,7 +305,7 @@ ringing. Someone's trying to reach you over the private " D ,VIDEOPHONE
<SETG PRSA .A>
<COND (<NOT <EQUAL? .A ,V?WALK>>
<COND (<AND <EQUAL? ,IT .I .O>
<NOT-ACCESSIBLE? ,P-IT-OBJECT>>
<NOT <ACCESSIBLE? ,P-IT-OBJECT>>>
<COND (<NOT .I> <FAKE-ORPHAN>)
(T <TELL
"(Sorry, but" THE ,P-IT-OBJECT " isn't here!)" CR>)>
@@ -329,47 +326,46 @@ ringing. Someone's trying to reach you over the private " D ,VIDEOPHONE
(<==? .I ,HIM> <SET I ,P-HIM-OBJECT>)>)>
<SETG PRSI .I>
<SETG PRSO .O>
<SET V <>>
<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)"
<EQUAL? ,NOT-HERE-OBJECT ,PRSO ,PRSI>>
<SET V <D-APPLY "Not Here" ,NOT-HERE-OBJECT-F>>
<COND (.V
<SETG P-WON <>>)>)>
<THIS-IS-IT ,PRSI>
<THIS-IS-IT ,PRSO>
<SET O ,PRSO>
<SET I ,PRSI>
<COND (<ZERO? .V>
<SET V <DD-APPLY "Actor" ,WINNER <GETP ,WINNER ,P?ACTION>>>)>
<COND (<ZERO? .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 <>>>
,M-BEG>>)>
<COND (<ZERO? .V>
<SET V <D-APPLY "Preaction" <GET ,PREACTIONS .A>>>)>
<SETG NOW-PRSI T>
<COND (<AND <ZERO? .V>
.I>
<SET V <D-APPLY "PRSI" <GETP .I ,P?ACTION>>>)>
<SETG NOW-PRSI <>>
<COND (<AND <ZERO? .V>
.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)>
<LOC .O>>
<SET V <GETP <LOC .O> ,P?CONTFCN>>
<COND (.V
<SET V <DD-APPLY "Container" <LOC .O> .V>>)>)>
<COND (<AND <ZERO? .V>
.O
<NOT <==? .A ,V?WALK>>>
<SET V <D-APPLY "PRSO" <GETP .O ,P?ACTION>>>)>
<COND (<ZERO? .V>
<SET V <D-APPLY <> <GET ,ACTIONS .A>>>)>
<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>>)>
<COND (<NOT <GAME-VERB?>>
<SET V <D-APPLY "Room (M-END)"
<GETP <LOC ,WINNER> ,P?ACTION> ,M-END>>)>)>
<SETG PRSA .OA>
<SETG PRSO .OO>
<SETG PRSI .OI>

737
manual.gr Normal file
View File

@@ -0,0 +1,737 @@
@style (spacing 1)
@title [SEASTALKER(tm) MANUAL]
@center [MANUAL FOR SEASTALKER(tm)]
@center (Comments to Stu Galley)
@chapter (INTRODUCTION)
Welcome to the world of Infocom Young Adventures -- a world where:
@begin (itemize)
you become the hero or heroine in a story,
you can use your own thinking and
imagination to guide that story from start to finish,
you can meet other people, who may help you or not, and
you can go to new places, figure out mysteries and puzzles,
and fight against monsters or enemies.
@end (itemize)
In SEASTALKER, you become a young inventor working in your father's
business. Your newest invention is a small submarine that has only two seats
inside, for you and your pal Tip. The submarine can dive deeply into
the sea to capture plants and animals for you to study. But you will
have to use it to save your undersea scientific station from a sea monster
that is attacking it!
@heading (RULES AND STRATEGIES)
When you play SEASTALKER, the story goes on only from the time you hit
the RETURN (or ENTER) key until you see the prompt ">". You could
imagine a clock that ticks once for each sentence you type, and the
story continues only at each tick. Nothing happens in the story from the
time you see the prompt ">" until you hit the RETURN (or ENTER) key. You
can think and plan your moves as slowly and carefully as you want.
SEASTALKER keeps track of your score and gives you points when it
thinks you have done something "right." You can try to get a perfect
score if you want, but you should also try to guide the story to an
ending that you like and to have fun along the way.
One
way to move from place to place in the story is to type "GO TO [a place]"
-- that means to type the words "GO TO" and then the name of the place
where you want to go. You can find the names of places by looking at the
maps in your SEASTALKER package.
If you don't want to miss anything on the way to another place, you can
go toward it one place at a time, by typing the compass direction in
which you want to go each turn. The main compass directions are "NORTH",
"EAST", "SOUTH", and "WEST", and the ones in between are "NORTHEAST",
"SOUTHEAST", "SOUTHWEST", and "NORTHWEST." Most players like to type
these shorter words instead: "N", "E", "S", "W", "NE", "SE", "SW", and
"NW." Sometimes you can use "UP" or "DOWN" ("U" or "D" for short) or
"IN" or "OUT."
Whenever you go into a place, SEASTALKER tells you the name of the place.
It displays the name of the place, in parentheses, like "(lab center)".
As you explore the different places in SEASTALKER, you should read
carefully what the program displays and get to know the places you
visit. You don't need to walk around or turn around within a place;
anything you can see there is always within your reach, unless you are sitting
or lying down or hiding.
When you enter a place for the first time, SEASTALKER normally displays
the name of the place and all about what you can see there. When you
return to that place again, SEASTALKER normally displays only the name
of the place and the names of interesting things there.
If you want
SEASTALKER to display all about a place every time you go there, not
just the first time, type the command "VERBOSE" instead of a sentence.
If you want SEASTALKER to go back to normal, type the command "BRIEF"
instead of a sentence. If you want SEASTALKER to display only the name
of a place and not to tell you what's there, even the very first time
you go there, type the command "SUPERBRIEF" instead of a sentence.
SUPERBRIEF mode is really only for Young Adventurers who already know
their way around the story. (When
you are in SUPERBRIEF mode, you can still type "LOOK" or "L", and
SEASTALKER will describe the place you are in and the things there.)
@heading (CONCEPTS FOR EXPLORING)
One main idea of Young Adventure stories is to solve puzzles.
You should think of a locked door or an
unfriendly creature in the story not as an obstacle but as a
puzzle that you need to solve. Sometimes the best way to solve a puzzle is to
find something that appears in the story, take
it with you, and then use it in the right way. Here are some ways
that things in the story behave:
@U(Containers): Some things are containers that can hold other
things. You can open or close some containers, like a box. Other
containers are always open, like a bowl. Other containers are
transparent, like a glass box, and you can see inside them even when
they are closed. Other things have a surface, like a table, and you can
put things on them. All containers can hold a certain amount and no
more, like a small box. Some things are big, and some are little.
Here is an example to show how a container works:
@begin (example)
>OPEN THE TINY BOX
Opening the tiny box reveals an ID amulet.
>PUT THE DIARY IN THE TINY BOX
There's no room.
>TAKE THE AMULET
You are now holding the ID amulet.
>LOOK IN THE BOX
It's empty.
@end (example)
@U(People): You can talk to the other people in SEASTALKER. (For
details, see the section later in this manual called "Typing to
SEASTALKER.") Most other people will be glad to help you by doing what
you tell them to. Some other people may be unfriendly or too busy to
help, or they may think that you are an enemy.
Here is an example of dealing with a person:
@begin (example)
Tip is standing here, chewing his gum.
>TIP, FOLLOW ME
"I'm already following you, Sheila."
>SOUTH
(south tank area)
Tip follows you into the south tank area.
>ASK TIP ABOUT THE PROBLEM
Tip says, "I don't know anything about it, Sheila."
@end (example)
@heading (LOADING "SEASTALKER")
Now that you know something about the world of Young Adventure, it's
time to try "booting" your diskette in order to load the program. To
load SEASTALKER, follow the instructions on the Reference Card in your
SEASTALKER package.
First the program will ask you for your first and last name, so it can
use them in the story. Then it will display the title of the story,
followed by the first bit of action and a description of the
place where the story begins. Finally, the prompt ">" will appear. When
you have finished reading this manual, you will be ready to play SEASTALKER.
When you see the prompt ">", SEASTALKER is waiting for you to type in
your instructions. When you have finished that, press the RETURN (or
ENTER) key. The program will respond, and another prompt will appear.
Here is a quick exercise to help you get used to SEASTALKER. After you
read the beginning of the story, type this sentence after the prompt
">":
@begin (example)
GO EAST
@end (example)
and then press the RETURN (or ENTER) key. SEASTALKER will respond
by describing the place that you went:
@begin (example)
(east part)
You are standing in the east part of your lab. A doorway leads out
past the Electrical Power Panel via a short corridor to the office
of your lab aide. A telephone and intercom sit on your desk.
Tip is off to the west.
There's a Microwave Security Scanner here.
There's a desk here.
@end (example)
Now try typing:
@begin (example)
TURN ON THE SCANNER
@end (example)
After you press the RETURN (or ENTER) key, the program will respond:
@begin (example)
No beep occurs. Scanner displays: NO INTRUDER PRESENT ON GROUNDS.
@end (example)
You can explore the area around the lab, if you want; there's a map
in your SEASTALKER package to help you. But soon, events in the story may make
you want to get involved in it. You should read the rest of this manual first.
@heading (TYPING TO "SEASTALKER")
When you play any Young Adventure story, you type your sentences in plain
English each time you see the prompt ">". You can pretend that all your
sentences begin with "I want to...", but you should not actually type
those words. You can use words like "THE" if you want, and you can use
capital letters if you want; the program doesn't care either way.
When you have finished typing a sentence, press the RETURN (or ENTER)
key. Then the program will respond, telling you if what you want to do
is possible at this point in the story, and what happens next.
SEASTALKER looks only at the first six letters of each long word you
type, and it ignores any letters after that. So, the words "ELECTRic"
and "ELECTRonic" would look like the same word to SEASTALKER.
SEASTALKER understands many different kinds of sentences. Here are
some examples, using things or situations that may not actually occur in
the story:
@begin (example)
TAKE THE MIKE
PUT ON THE AMULET
PICK UP THE CATALYST CAPSULE
DROP IT
GO OUT
DROP THE MIKE ONTO THE WORKBENCH
WALK NORTH
WEST
SW
GET IN THE SUBMARINE
PUSH THE JOYSTICK EAST
EXAMINE THE DEPTH FINDER
SHOOT THE MONSTER WITH THE DART
LOOK AT THE SONARSCOPE
LOOK UNDER THE WORKBENCH
LOOK BEHIND THE COMPUTESTOR
AIM SEARCH BEAM TO STARBOARD
QUESTION TIP
@end (example)
You can use more than one noun for a "direct object" or
"indirect object" with some verbs, if you
separate the nouns by the word "AND" or by a comma.
For example:
@begin (example)
DROP THE MIKE AND THE NOTEBOOK
TAKE BLACK BOX, OXYGEN GEAR, AND UNIVERSAL TOOL
PUT THE DIARY AND THE PHOTO IN THE LOCKER
@end (example)
You can put more than one sentence on one input line, if you separate
them by the word "THEN" or by a period. You don't need a
period at the end of an input line. For example, you
could type all these sentences on one input line, before pressing the
RETURN (or ENTER) key:
@begin (example)
READ THE SIGN. OPEN THE HATCH. GO THROUGH IT.
@end (example)
There are @U(only three) kinds of questions that SEASTALKER understands:
"WHAT IS [something]", "WHO IS [someone]", and "WHERE IS [something]."
(You can probably guess that you don't type a question as if it started
with "I want to...") You can type a question mark at the end of a
question if you want, but the program doesn't care. For example:
@begin (example)
WHERE IS TIP?
WHO IS AMY.
WHAT IS A DEPTH FINDER
@end (example)
You will meet other people as you play
SEASTALKER. You can "talk" to these people by typing their name,
then a comma, then whatever you want to say to them. For example:
@begin (example)
MARV, WHERE IS THE SONAR EQUIPMENT
TIP, FOLLOW ME
ZOE, KILL THE MONSTER
MICK, GO TO THE AIRLOCK THEN FIX THE SUBMARINE
AMY, WAIT HERE
@end (example)
If you forget to type the person's name first, SEASTALKER will sometimes
assume that you meant to talk to the same person again, or to the only
other person in the same place with you. When it does this, it will tell
you. For example:
@begin (example)
>ASK ABOUT THE MONSTER
(said to Tip)
"You know as much about it as I do."
@end (example)
SEASTALKER tries to guess what you really mean if you don't give
enough information. For example, if you type that you want to do
something, but not what to do it with, SEASTALKER may
decide that there was only one possible thing you could have meant.
When it does this, it will tell you. For example:
@begin (example)
>UNLOCK THE DOOR
(with the key)
The door is now unlocked.
>GET OUT
(out of the Ultramarine Bioceptor)
(airlock)
@end (example)
If you try to use something that you need to be holding, but you forgot
to pick it up first, SEASTALKER will pick it up for you. For example:
@begin (example)
>LOOK
You are in the library. There is a book here.
>READ THE BOOK
(taken)
The book is far too long to read it all now.
>INVENTORY
You are carrying:
a book
@end (example)
If SEASTALKER thinks that your sentence could have more than one
meaning, it will ask what you really meant.
You can answer it by typing just the missing
information; you don't have to type the whole sentence again. For example:
@begin (example)
>PUT THE RELAY
What do you want to put the relay in?
>THE EMPTY SPACE
It fits!
>OPEN THE HATCH
Which hatch do you mean, the entry hatch or the access hatch?
>ENTRY
O.K.
@end (example)
SEASTALKER uses many words that it will not recognize in your
sentences. For example, you might see "Sunlight shimmers across the
dusty cobwebs." in the description of a place. However, if the program
doesn't recognize the words "SUNLIGHT" or "COBWEBS" in your sentence,
then you know that you don't need the sunlight and cobwebs to finish the
story; they are in the description only to make the story more
interesting. SEASTALKER recognizes nearly all the words that you are
likely to type, over 700 of them. If SEASTALKER doesn't know a word
that you want to use, or any word that means the same thing, you are almost
certainly trying the wrong way to solve a puzzle.
SEASTALKER will complain to you if you type a sentence that confuses
it completely. (The end of this manual has an explanation of these
complaints.) After it complains, SEASTALKER will ignore the rest of
your input line. SEASTALKER will also ignore the rest of the sentences
you typed on one line if something really important happens in the
story, since you may want to change your mind about what to do next.
@heading (TIPS FOR NEW PLAYERS)
Many things that you discover in the story are important, because they
give you clues about the puzzles you must solve. You should examine or
read everything that seems important to you. Even silly or dangerous
actions may give you clues; they can even be fun. Besides, you can
always start the story over again, or you can save your place first.
(There is a section later in this manual about starting over and saving
your place.) Here's a silly example:
@begin (example)
>GIVE THE MAGIC GERANIUM TO THE MONSTER
For a moment, the monster thinks about eating the geranium instead
of you. But then it decides not to, and it comes closer and closer to you.
@end (example)
Here you have learned something about what the monster does not
like to eat, and you have a clue that giving something else (maybe that
yellow "goo" you are carrying?) to it would work better.
There are many possible ways to get to the end of
SEASTALKER. Some puzzles that you find along the way may have more
than one solution, and you may not need to solve others at all. Sometimes
solving a puzzle one way will make it harder to solve another,
and sometimes it will make it easier.
Many people like
to play SEASTALKER with another person. One person may find a
puzzle hard while another may find it easy, so two or more players often
can have more fun than one player alone.
You can use the maps that came with your SEASTALKER package
to help you move from place to place.
Remember that there are eight compass directions, not counting "IN" and "OUT".
If you get stuck, you can order a booklet of hints from
Infocom by filling out and mailing in the "Bilk and Wheedle" flyer in your
SEASTALKER package.
If you read the sample transcript in the next section, you should get a
feeling for how Young Adventure stories are played.
@heading (SAMPLE STORY TRANSCRIPT)
This transcript is not from SEASTALKER, but it does show most of
the usual things that you can do while playing. It shows
several simple puzzles and their solutions, and it should give the
new player a good idea of how an interactive text adventure story works.
@begin (example)
[to be supplied]
@end (example)
@heading (SAVING, RESTORING, RESTARTING, AND QUITTING)
If you want to stop playing, and you don't care about saving your
place for another time, type the command "QUIT." Just to be sure,
SEASTALKER will ask you if you really want to leave the story, and you
should type "YES."
If you want to start over from the beginning of the story, type the
command "RESTART." Once again, SEASTALKER will ask to make sure that
this is really what you want to do.
If you want to stop playing for now, but continue from this same place
at another time, type the command "SAVE." Since it takes many hours to
finish SEASTALKER, you will probably not finish it in one sitting. By
using the "SAVE" command, you can continue playing at a later time
without having to start over from the beginning, just as you can put a
bookmark in a book you are reading. The "SAVE" command makes a
"snapshot" of your place in the story on another diskette. If you are a
cautious or careful player, you may want to save your place before you
try something dangerous or tricky. Then you can return to the same
place, even if you have gotten "killed" or lost since then.
To save your place in the story, just type "SAVE"
after the prompt ">" and then follow the instructions on your
Reference Card. Remember that most computers need a diskette for storage
that has been initialized
("formatted") before you start the story. Remember also
that you may not be able to use that diskette for anything else.
To continue playing from any place where you used the "SAVE" command,
just type "RESTORE" after the prompt ">" and follow the instructions on
your Reference Card. Then you can continue playing from the place where
you used the "SAVE" command. You can type "LOOK" to get a description of
where you are. You can use "RESTORE" on any "snapshot" you have made
whenever you want.
@heading (IMPORTANT COMMANDS)
You can type a command to SEASTALKER instead of a sentence. Some
commands give you information and others let you start or stop the
story. Some of these commands were also explained earlier in this
manual. You can use these commands again and again, as you wish. Some
commands count as a turn, and the story will go on, while others do not.
"BRIEF" commands SEASTALKER to
display all about a place or thing only the first time you see it.
This is the way it works when the story begins.
"DIAGNOSE" commands SEASTALKER to give you a brief report about your medical
condition.
"INVENTORY" or "I" commands SEASTALKER to display a list of all the
things that you are carrying or wearing.
"LOOK" or "L" commands SEASTALKER to describe the place you are in.
"QUIT" or "Q" allows you to quit playing. If you want to quit for now,
but continue from this same place at another time, use the "SAVE" command.
"RELEASE" tells you the Release number and the Serial number of
your copy of SEASTALKER.
"RESTART" stops the story and starts over from the beginning.
"RESTORE" lets you continue playing from any place where you used the
"SAVE" command.
"SAVE" lets you stop playing for now, but continue from this same place
at another time, by making a "snapshot" on your storage diskette.
"SCORE" tells your current score and a rank based on it.
"SCRIPT" commands your printer to start making a transcript of the story
as you play. Your Reference Card tells if you can use this feature.
"SUPERBRIEF" commands SEASTALKER to
display only the name of a place, even the first time you see it.
"UNSCRIPT" commands your printer to stop making a transcript.
"VERBOSE" commands SEASTALKER to
display all about a place or thing every time you see it.
"WAIT" or "Z" causes time in the story to pass. Normally, between your
input lines, nothing happens in the story. You could leave the computer,
travel around the world underwater for a year, and return to the story
to find that nothing has changed. You can use the "WAIT" command to make
time pass in the story without doing anything, if you are waiting for a
person to arrive, waiting for something to happen, and so on.
@heading (USEFUL VERBS)
Here is a list of some of the verbs that SEASTALKER
understands. Remember that you can use prepositions with these verbs;
for example, "LOOK" can become "LOOK INSIDE", "LOOK
BEHIND", "LOOK UNDER", "LOOK THROUGH", "LOOK AT", and so on.
@begin (example)
ASK ATTACK BOARD BURN
CLIMB CLOSE COUNT CROSS
CUT DESTROY DIG DISEMBARK
DRINK DROP EAT ENTER
EXAMINE EXIT EXTINGUISH FILL
FIND FLY FOLLOW GIVE
HELLO JUMP KICK KILL
KISS KNOCK LAUNCH LIE
LIGHT LISTEN LOCK LOOK
LOWER MOVE OPEN POINT
POUR PULL PUSH PUT
RAISE REACH READ SEARCH
SHAKE SHOOT SHOW SLEEP
SLIDE SMELL SPRAY STAND
SWIM TAKE TELL THROW
TIE TOUCH TURN UNLOCK
UNTIE WAKE WALK WAVE
@end (example)
@heading ("SEASTALKER" COMPLAINTS)
SEASTALKER will complain to you if you type a sentence that confuses
it completely. Here is a list of some of these complaints:
I DON'T KNOW THE WORD "[your word]".@*
The word you typed is not in the
program's list of words. Sometimes you can use another word that means
the same thing. If not, SEASTALKER probably can't understand what
you're trying to do.
YOU CAN'T USE THE WORD "[your word]" IN THAT WAY.@*
The program knows the word you
typed, but it couldn't understand the word in the way that you used it,
usually because the program knows the word as a different part of
speech. For example, if you typed "PRESS THE LOWER BUTTON", you used
"LOWER" as an adjective, but the program might recognize it only as a
verb.
I COULDN'T FIND A VERB IN THAT SENTENCE!@*
Unless you are answering a
question, each sentence must have a verb (or a command) in it somewhere.
I COULDN'T FIND ENOUGH NOUNS IN THAT SENTENCE!@*
SEASTALKER expected
a noun and couldn't find one. This usually means that your sentence was
not complete, such as "PUT THE LAMP IN THE."
I FOUND TOO MANY NOUNS IN THAT SENTENCE!@*
A valid SEASTALKER sentence
has no more than two "objects." They are called the "direct object" and
the "indirect object."
For example, there are too many objects in
"PUT THE SOUP IN THE BOWL WITH THE SPOON."
BE SPECIFIC: WHAT THING DO YOU WANT TO [your verb]?@*
You used the word "HIM" or "HER" or "IT", but SEASTALKER didn't know
what you meant. You should answer by typing the name of the person or
thing you meant.
I BEG YOUR PARDON?@*
SEASTALKER thinks that you didn't type anything
after the prompt ">" and before hitting the RETURN (or ENTER) key.
YOU CAN'T SEE ANY [thing] HERE!@*
The thing in your sentence was not
visible. It might be somewhere else, inside a container, and so on.
THE OTHER THING(S) THAT YOU MENTIONED ISN'T (AREN'T) HERE.@*
You
used two or more nouns in the same sentence, and at least one of them
wasn't visible.
YOU CAN'T GO THAT WAY.@*
There was no way to go in the direction you tried.
YOU CAN'T USE MULTIPLE (IN)DIRECT OBJECTS WITH "[your verb]".@*
You can
use more than one "object" only with certain verbs, like "TAKE", "DROP",
and "PUT". (This means nouns or noun phrases separated by the word "AND"
or a comma). You can't use more than one object with most verbs, like
"ATTACK", so you can't "ATTACK THE MONSTER AND THE ENEMY."
I ASSUME YOU MEAN THE [thing].@*
You typed a word that the program knows as an adjective, like "BLUE,"
without a noun, but it knew what you meant anyway. It's just telling you what noun it
thinks you meant.
USE FIGURES FOR NUMBERS, FOR EXAMPLE "10."@*
The program found a number word in your sentence, like "TEN," but it
understands only figures, like "10."
PLEASE USE UNITS WITH NUMBERS.@*
The program found a number in your sentence without any units to tell
what the number means. Use a word after the number like "METERS" or "TURNS".
SORRY, BUT ENGLISH IS MY SECOND LANGUAGE. PLEASE REPHRASE THAT OR TRY
SOMETHING ELSE.@*
The program thought your sentence was
nonsense, such as "GIVE HIM WITH TOOL." Or it didn't understand the
syntax of your sentence, such as "SMELL UNDER THE ROCK." Try typing the
sentence in a different way.
@heading (SENTENCE SYNTAX)
A valid SEASTALKER sentence should start with a verb or a command (such
as "SCORE").
If you use multiple nouns for one "object", you must separate them by
the word "AND" or by a comma.
If you type several sentences on one input line, you must separate them
by a period or by the word "THEN". You don't need a period at the end of
an input line.
You can ask @U(only three) kinds of questions: "WHO", "WHERE" and "WHAT".
The short way to type compass directions is "N", "E", "S", "W", "NE", "SE", "SW", and "NW."
The short way to type "UP" and "DOWN" is "U" and "D."
Other short words include "L" for "LOOK", "I" for "INVENTORY",
and "Z" for "WAIT."
@heading (COMMAND SUMMARY)
You can type these commands when the prompt ">" has appeared
on the screen. For an explanation of these commands, see the section
called "Important Commands" earlier in this manual.
@begin (example)
BRIEF
DIAGNOSE
INVENTORY (or I)
LOOK (or L)
QUIT (or Q)
RELEASE
RESTART
RESTORE
SAVE
SCORE
SCRIPT
SUPERBRIEF
UNSCRIPT
VERBOSE
WAIT
@end (example)
@heading (WE'RE NEVER SATISFIED)
Here at the Cambridge chapter of the Young Adventure Story Writers
Club, we take great pride in the quality of our work. Even after
our stories are in your hands, we still want to make them better.
Your comments are important. No matter how much testing we do, it seems that
there are "bugs" that never crawl into view until thousands of you
begin typing all those millions of sentences into the program. If you find a
"bug", or if you think the program should recognize your favorite word
or sentence, or if you found a certain puzzle too hard or too
easy, or if you'd just like to tell us what you thought of the story, then
write to us! We love an excuse to stop working and fool around for a
while, and a letter from you would be just such an excuse! Write to:
@begin (example)
Infocom, Inc.
Department J
55 Wheeler street
Cambridge, Mass. 02138
@end (example)
You can call the Infocom Technical Support Team to report "bugs" and
technical problems at (617) 576-3190. If your diskette fails within 90
days after purchase, we will replace it free of charge. Otherwise, we
will replace it for a fee of $5.00. Please mail us your registration
card if you'd like to be on our mailing list and receive our newsletter.
@heading (OPERATING CONTROLS)
If the Ultramarine Bioceptor (UB) operated like a real submarine, you
would need a long training period just to learn how to operate it before
you could enjoy playing this game!
Instead of travelling in a straight line in any direction you want, the
UB moves from square to square like a chess queen. The UB's squares are
rather large, 500 meters on a side.
And since the UB is a submarine that can go down and up under water
("DIVE" and "SURFACE"), it uses a grid of squares for each depth. To keep
it simple, the UB goes up or down only in steps of 5 meters,
and it goes only one step up or down for each square that it
moves side-to-side.
You can pilot the UB using its four controls:
@begin (itemize)
The THROTTLE controls how fast the UB travels. You can set it to one of
several different speeds, corresponding to moving a certain number of
squares per turn: (0) standing still, (1) slow, (2) cruise,
or (3) high speed.
The FORWARD/REVERSE LEVER controls whether the UB moves forward or
backward. You can switch from one to the other only when the UB is
standing still. If you enter the Aquadome going forward, you have to
back out, and vice versa.
The JOYSTICK
turns the UB to face one of the compass directions:
north, northeast, east, southeast, south, southwest, west, or northwest.
(If you have a joystick on your computer, and if it's the right kind of
computer, then you can use your joystick instead of the UB's!)
The DEPTH CONTROL directs the UB's automatic guidance system to keep
a certain depth below the surface of the water. You can set it to any
multiple of 5 meters within the sub's operating range. When you set
it to a new target depth, the UB automatically adjusts its buoyancy and
diving planes so it will approach the target depth. It will change depth
by 5 meters each time it moves one square horizontally. If the
throttle is set to "standing still," so that the UB isn't moving
horizontally, then it will go straight up or straight down, 5
meters per turn.
When it
reaches target depth, it will automatically level out and stay at that
depth, assuming that it doesn't run into anything.
The AUTO PILOT can handle all these controls automatically, except
the throttle.
@end (itemize)

720
manual.mss Normal file
View File

@@ -0,0 +1,720 @@
@style (spacing 1)
@title [SEASTALKER(tm) MANUAL]
@center [MANUAL FOR SEASTALKER(tm)]
@center (Comments to Stu Galley)
@chapter (INTRODUCTION)
Welcome to the world of Infocom interactive fiction -- a world where:
@begin (itemize)
you become the hero or heroine in a story,
you can use your own thinking and
imagination to guide that story from start to finish,
you can meet other people, who may help you or not, and
you can go to new places, figure out mysteries and puzzles,
and fight against monsters or enemies.
@end (itemize)
In SEASTALKER, you become a young inventor working in your father's
business. Your newest invention is a small submarine that has only two seats
inside, for you and your pal Tip. The submarine can dive deeply into
the sea to capture plants and animals for you to study. But you will
have to use it to save your undersea scientific station from a sea monster
that is attacking it!
@heading (RULES AND STRATEGIES)
When you play SEASTALKER, the story goes on only from the time you hit
the RETURN (or ENTER) key until you see the prompt ">". You could
imagine a clock that ticks once for each sentence you type, and the
story continues only at each tick. Nothing happens in the story from the
time you see the prompt ">" until you hit the RETURN (or ENTER) key. You
can think and plan your moves as slowly and carefully as you want.
SEASTALKER keeps track of your score and gives you points when it
thinks you have done something "right." You can try to get a perfect
score if you want, but you should also try to guide the story to an
ending that you like and to have fun along the way.
One
way to move from place to place in the story is to type "GO TO [a place]"
-- that means to type the words "GO TO" and then the name of the place
where you want to go. You can find the names of places by looking at the
maps in your SEASTALKER package.
If you don't want to miss anything on the way to another place, you can
go toward it one place at a time, by typing the compass direction in
which you want to go each turn. The main compass directions are "NORTH",
"EAST", "SOUTH", and "WEST", and the ones in between are "NORTHEAST",
"SOUTHEAST", "SOUTHWEST", and "NORTHWEST." Most players like to type
these shorter words instead: "N", "E", "S", "W", "NE", "SE", "SW", and
"NW." Sometimes you can use "UP" or "DOWN" ("U" or "D" for short) or
"IN" or "OUT."
Whenever you go into a place, SEASTALKER tells you the name of the place.
It displays the name of the place, in parentheses, like "(lab center)".
As you explore the different places in SEASTALKER, you should read
carefully what the program displays and get to know the places you
visit. You don't need to walk around or turn around within a place;
anything you can see there is always within your reach, unless you are sitting
or lying down or hiding.
When you enter a place for the first time, SEASTALKER normally displays
the name of the place and all about what you can see there. When you
return to that place again, SEASTALKER normally displays only the name
of the place and the names of interesting things there.
If you want
SEASTALKER to display all about a place every time you go there, not
just the first time, type the command "VERBOSE" instead of a sentence.
If you want SEASTALKER to go back to normal, type the command "BRIEF"
instead of a sentence. If you want SEASTALKER to display only the name
of a place and not to tell you what's there, even the very first time
you go there, type the command "SUPERBRIEF" instead of a sentence.
SUPERBRIEF mode is really only for players who already know
their way around the story. (When
you are in SUPERBRIEF mode, you can still type "LOOK" or "L", and
SEASTALKER will describe the place you are in and the things there.)
@heading (CONCEPTS FOR EXPLORING)
One main idea of interactive fiction is to solve puzzles.
You should think of a locked door or an
unfriendly creature in the story not as an obstacle but as a
puzzle that you need to solve. Sometimes the best way to solve a puzzle is to
find something that appears in the story, take
it with you, and then use it in the right way. Here are some ways
that things in the story behave:
@U(Containers): Some things are containers that can hold other
things. You can open or close some containers, like a box. Other
containers are always open, like a bowl. Other containers are
transparent, like a glass box, and you can see inside them even when
they are closed. Other things have a surface, like a table, and you can
put things on them. All containers can hold a certain amount and no
more, like a small box. Some things are big, and some are little.
Here is an example to show how a container works:
@begin (example)
>OPEN THE TINY BOX
Opening the tiny box reveals an ID amulet.
>PUT THE DIARY IN THE TINY BOX
There's no room.
>TAKE THE AMULET
You are now holding the ID amulet.
>LOOK IN THE BOX
It's empty.
@end (example)
@U(People): You can talk to the other people in SEASTALKER. (For
details, see the section later in this manual called "Typing to
SEASTALKER.") Most other people will be glad to help you by doing what
you tell them to. Some other people may be unfriendly or too busy to
help, or they may think that you are an enemy.
Here is an example of dealing with a person:
@begin (example)
Tip is standing here, chewing his gum.
>TIP, FOLLOW ME
"I'm already following you."
>SOUTH
(south tank area)
Tip follows you into the south tank area.
>ASK TIP ABOUT THE PROBLEM
Tip says, "I don't know anything about it."
@end (example)
@heading (LOADING "SEASTALKER")
Now that you know something about the world of interactive fiction, it's
time to try "booting" your diskette in order to load the program. To
load SEASTALKER, follow the instructions on the Reference Card in your
SEASTALKER package.
First the program will ask you for your first and last name, so it can
use them in the story. Then it will display the title of the story,
followed by the first bit of action and a description of the
place where the story begins. Finally, the prompt ">" will appear. When
you have finished reading this manual, you will be ready to play SEASTALKER.
When you see the prompt ">", SEASTALKER is waiting for you to type in
your instructions. When you have finished that, press the RETURN (or
ENTER) key. The program will respond, and another prompt will appear.
Here is a quick exercise to help you get used to SEASTALKER. After you
read the beginning of the story, type this sentence after the prompt
">":
@begin (example)
GO EAST
@end (example)
and then press the RETURN (or ENTER) key. SEASTALKER will respond
by describing the place that you went:
@begin (example)
(east part)
You're in the east part of your laboratory. A doorway leads out through
a corridor to the office of your lab assistant. A Microwave Security
Scanner stands against the wall. An intercom sits on the lab desk.
Tip is off to the west.
@end (example)
Now try typing:
@begin (example)
TURN ON THE SCANNER
@end (example)
After you press the RETURN (or ENTER) key, the program will respond:
@begin (example)
No beep occurs. Scanner displays: NO INTRUDER PRESENT ON GROUNDS.
@end (example)
You can explore the area around the lab, if you want; there's a map
in your SEASTALKER package to help you. But soon, events in the story may make
you want to get involved in it. You should read the rest of this manual first.
@heading (TYPING TO "SEASTALKER")
When you play interactive fiction from Infocom,
you type your sentences in plain
English each time you see the prompt ">". You can pretend that all your
sentences begin with "I want to...", but you should not actually type
those words. You can use words like "THE" if you want, and you can use
capital letters if you want; the program doesn't care either way.
When you have finished typing a sentence, press the RETURN (or ENTER)
key. Then the program will respond, telling you if what you want to do
is possible at this point in the story, and what happens next.
SEASTALKER looks only at the first six letters of each long word you
type, and it ignores any letters after that. So, the words "ELECTRic"
and "ELECTRonic" would look like the same word to SEASTALKER.
SEASTALKER understands many different kinds of sentences. Here are
some examples, using things or situations that may not actually occur in
the story:
@begin (example)
TAKE THE MIKE
PUT ON THE AMULET
PICK UP THE CATALYST CAPSULE
DROP IT
GO OUT
DROP THE MIKE ONTO THE WORKBENCH
WALK NORTH
WEST
SW
GET IN THE SUBMARINE
PUSH THE JOYSTICK EAST
EXAMINE THE DEPTH FINDER
SHOOT THE MONSTER WITH THE DART
LOOK AT THE SONARSCOPE
LOOK UNDER THE WORKBENCH
LOOK BEHIND THE COMPUTESTOR
AIM SEARCH BEAM TO STARBOARD
QUESTION TIP
@end (example)
You can use more than one noun for a "direct object" or
"indirect object" with some verbs, if you
separate the nouns by the word "AND" or by a comma.
For example:
@begin (example)
DROP THE MIKE AND THE NOTEBOOK
TAKE BLACK BOX, OXYGEN GEAR, AND UNIVERSAL TOOL
PUT THE DIARY AND THE PHOTO IN THE LOCKER
@end (example)
You can put more than one sentence on one input line, if you separate
them by the word "THEN" or by a period. You don't need a
period at the end of an input line. For example, you
could type all these sentences on one input line, before pressing the
RETURN (or ENTER) key:
@begin (example)
READ THE SIGN. OPEN THE HATCH. GO THROUGH IT.
@end (example)
You will meet other people as you play
SEASTALKER. You can "talk" to these people by typing their name,
then a comma, then whatever you want them to do. For example:
@begin (example)
TIP, FOLLOW ME
ZOE, KILL THE MONSTER
MICK, GO TO THE AIRLOCK THEN FIX THE SUBMARINE
AMY, WAIT HERE
@end (example)
If you forget to type the person's name first, SEASTALKER will sometimes
assume that you meant to talk to the same person again, or to the only
other person in the same place with you. When it does this, it will tell
you. For example:
@begin (example)
>ASK ABOUT THE MONSTER
(said to Tip)
"You know as much about it as I do."
@end (example)
SEASTALKER tries to guess what you really mean if you don't give
enough information. For example, if you type that you want to do
something, but not what to do it with, SEASTALKER may
decide that there was only one possible thing you could have meant.
When it does this, it will tell you. For example:
@begin (example)
>UNLOCK THE DOOR
(with the key)
The door is now unlocked.
>GET OUT
(out of the Ultramarine Bioceptor)
@end (example)
If you try to use something that you need to be holding, but you forgot
to pick it up first, SEASTALKER will pick it up for you. For example:
@begin (example)
>LOOK
You are in the library. There is a book here.
>READ THE BOOK
(taken)
The book is far too long to read it all now.
>INVENTORY
You are carrying:
a book
@end (example)
If SEASTALKER thinks that your sentence could have more than one
meaning, it will ask what you really meant.
You can answer it by typing just the missing
information; you don't have to type the whole sentence again. For example:
@begin (example)
>PUT THE RELAY
What do you want to put the relay in?
>THE EMPTY SPACE
It fits!
>OPEN THE HATCH
Which hatch do you mean, the entry hatch or the access hatch?
>ENTRY
O.K.
@end (example)
SEASTALKER uses many words that it will not recognize in your
sentences. For example, you might see "Sunlight shimmers across the
dusty cobwebs." in the description of a place. However, if the program
doesn't recognize the words "SUNLIGHT" or "COBWEBS" in your sentence,
then you know that you don't need the sunlight and cobwebs to finish the
story; they are in the description only to make the story more
interesting. SEASTALKER recognizes nearly all the words that you are
likely to type, over 900 of them. If SEASTALKER doesn't know a word
that you want to use, or any word that means the same thing, you are almost
certainly trying the wrong way to solve a puzzle.
SEASTALKER will complain to you if you type a sentence that confuses
it completely. (The end of this manual has an explanation of these
complaints.) After it complains, SEASTALKER will ignore the rest of
your input line. SEASTALKER will also ignore the rest of the sentences
you typed on one line if something really important happens in the
story, since you may want to change your mind about what to do next.
@heading (TIPS FOR NEW PLAYERS)
Many things that you discover in the story are important, because they
give you clues about the puzzles you must solve. You should examine or
read everything that seems important to you. Even silly or dangerous
actions may give you clues; they can even be fun. Besides, you can
always start the story over again, or you can save your place first.
(There is a section later in this manual about starting over and saving
your place.) Here's a silly example:
@begin (example)
>GIVE THE MAGIC GERANIUM TO THE MONSTER
For a moment, the monster thinks about eating the geranium instead
of you. But then it decides not to, and it comes closer and closer to you.
@end (example)
Here you have learned something about what the monster does not
like to eat, and you have a clue that giving something else (maybe that
yellow "goo" you are carrying?) to it would work better.
There are many possible ways to get to the end of
SEASTALKER. Some puzzles that you find along the way may have more
than one solution, and you may not need to solve others at all. Sometimes
solving a puzzle one way will make it harder to solve another,
and sometimes it will make it easier.
Many people like
to play SEASTALKER with another person. One person may find a
puzzle hard while another may find it easy, so two or more players often
can have more fun than one player alone.
You can use the maps that came with your SEASTALKER package
to help you move from place to place.
Remember that there are eight compass directions, not counting "IN" and "OUT".
If you get stuck, you can order a booklet of hints from
Infocom by filling out and mailing in the "Bilk and Wheedle" flyer in your
SEASTALKER package.
If you read the sample transcript in the next section, you should get a
feeling for how to play interactive fiction.
@heading (SAMPLE STORY TRANSCRIPT)
This transcript is not from SEASTALKER, but it does show most of
the usual things that you can do while playing. It shows
several simple puzzles and their solutions, and it should give the
new player a good idea of how interactive fiction works.
@begin (example)
[to be supplied]
@end (example)
@heading (SAVING, RESTORING, RESTARTING, AND QUITTING)
If you want to stop playing, and you don't care about saving your
place for another time, type the command "QUIT." Just to be sure,
SEASTALKER will ask you if you really want to leave the story, and you
should type "YES."
If you want to start over from the beginning of the story, type the
command "RESTART." Once again, SEASTALKER will ask to make sure that
this is really what you want to do.
If you want to stop playing for now, but continue from this same place
at another time, type the command "SAVE." Since it takes many hours to
finish SEASTALKER, you will probably not finish it in one sitting. By
using the "SAVE" command, you can continue playing at a later time
without having to start over from the beginning, just as you can put a
bookmark in a book you are reading. The "SAVE" command makes a
"snapshot" of your place in the story on another diskette. If you are a
cautious or careful player, you may want to save your place before you
try something dangerous or tricky. Then you can return to the same
place, even if you have gotten "killed" or lost since then.
To save your place in the story, just type "SAVE"
after the prompt ">" and then follow the instructions on your
Reference Card. Remember that most computers need a diskette for storage
that has been initialized
("formatted") before you start the story. Remember also
that you may not be able to use that diskette for anything else.
To continue playing from any place where you used the "SAVE" command,
just type "RESTORE" after the prompt ">" and follow the instructions on
your Reference Card. Then you can continue playing from the place where
you used the "SAVE" command. You can type "LOOK" to get a description of
where you are. You can use "RESTORE" on any "snapshot" you have made
whenever you want.
@heading (IMPORTANT COMMANDS)
You can type a command to SEASTALKER instead of a sentence. Some
commands give you information and others let you start or stop the
story. Some of these commands were also explained earlier in this
manual. You can use these commands again and again, as you wish. Some
commands count as a turn, and the story will go on, while others do not.
"BRIEF" commands SEASTALKER to
display all about a place or thing only the first time you see it.
This is the way it works when the story begins.
"DIAGNOSE" commands SEASTALKER to give you a brief report about your medical
condition.
"INVENTORY" or "I" commands SEASTALKER to display a list of all the
things that you are carrying.
"LOOK" or "L" commands SEASTALKER to describe the place you are in.
"QUIT" or "Q" allows you to quit playing. If you want to quit for now,
but continue from this same place at another time, use the "SAVE" command.
"RESTART" stops the story and starts over from the beginning.
"RESTORE" lets you continue playing from any place where you used the
"SAVE" command.
"REVISION" tells you the Revision number and the Serial number of
your copy of SEASTALKER.
"SAVE" lets you stop playing for now, but continue from this same place
at another time, by making a "snapshot" on your storage diskette.
"SCORE" tells your current score and a rank based on it.
"SCRIPT" commands your printer to start making a transcript of the story
as you play. Your Reference Card tells if you can use this feature.
"SUPERBRIEF" commands SEASTALKER to
display only the name of a place, even the first time you see it.
"UNSCRIPT" commands your printer to stop making a transcript.
"VERBOSE" commands SEASTALKER to
display all about a place or thing every time you see it.
"WAIT" or "Z" causes time in the story to pass. Normally, between your
input lines, nothing happens in the story. You could leave the computer,
travel around the world underwater for a year, and return to the story
to find that nothing has changed. You can use the "WAIT" command to make
time pass in the story without doing anything, if you are waiting for a
person to arrive, waiting for something to happen, and so on.
@heading (USEFUL VERBS)
Here is a list of some of the verbs that SEASTALKER
understands. Remember that you can use prepositions with these verbs;
for example, "LOOK" can become "LOOK INSIDE", "LOOK
BEHIND", "LOOK UNDER", "LOOK THROUGH", "LOOK AT", and so on.
@begin (example)
ASK ATTACK BOARD BURN
CLIMB CLOSE COUNT CROSS
CUT DESTROY DIG DISEMBARK
DRINK DROP EAT ENTER
EXAMINE EXIT EXTINGUISH FILL
FIND FLY FOLLOW GIVE
HELLO JUMP KICK KILL
KISS KNOCK LAUNCH LIE
LIGHT LISTEN LOCK LOOK
LOWER MOVE OPEN POINT
POUR PULL PUSH PUT
RAISE REACH READ SEARCH
SHAKE SHOOT SHOW SLEEP
SLIDE SMELL SPRAY STAND
SWIM TAKE TELL THROW
TIE TOUCH TURN UNLOCK
UNTIE WAKE WALK WAVE
@end (example)
@heading ("SEASTALKER" COMPLAINTS)
SEASTALKER will complain to you if you type a sentence that confuses
it completely. Here is a list of some of these complaints:
I DON'T KNOW THE WORD "[your word]".@*
The word you typed is not in the
program's list of words. Sometimes you can use another word that means
the same thing. If not, SEASTALKER probably can't understand what
you're trying to do.
YOU CAN'T USE THE WORD "[your word]" IN THAT WAY.@*
The program knows the word you
typed, but it couldn't understand the word in the way that you used it,
usually because the program knows the word as a different part of
speech. For example, if you typed "PRESS THE LOWER BUTTON", you used
"LOWER" as an adjective, but the program might recognize it only as a
verb, as in "LOWER THE BOOM."
I COULDN'T FIND A VERB IN THAT SENTENCE!@*
Unless you are answering a
question, each sentence must have a verb (or a command) in it somewhere.
I COULDN'T FIND ENOUGH NOUNS IN THAT SENTENCE!@*
SEASTALKER expected
a noun and couldn't find one. This usually means that your sentence was
not complete, such as "PUT THE LAMP IN THE."
I FOUND TOO MANY NOUNS IN THAT SENTENCE!@*
A valid SEASTALKER sentence
has no more than two "objects." They are called the "direct object" and
the "indirect object."
For example, there are too many objects in
"PUT THE SOUP IN THE BOWL WITH THE SPOON."
BE SPECIFIC: WHAT THING DO YOU WANT TO [your verb]?@*
You used the word "HIM" or "HER" or "IT", but SEASTALKER didn't know
what you meant. You should answer by typing the name of the person or
thing you meant.
I BEG YOUR PARDON?@*
SEASTALKER thinks that you didn't type anything
after the prompt ">" and before hitting the RETURN (or ENTER) key.
YOU CAN'T SEE ANY [thing] HERE!@*
The thing in your sentence was not
visible. It might be somewhere else, inside a container, and so on.
THE OTHER THING(S) THAT YOU MENTIONED ISN'T (AREN'T) HERE.@*
You
used two or more nouns in the same sentence, and at least one of them
wasn't visible.
YOU CAN'T GO THAT WAY.@*
There was no way to go in the direction you tried.
YOU CAN'T USE MULTIPLE (IN)DIRECT OBJECTS WITH "[your verb]".@*
You can
use more than one "object" only with certain verbs, like "TAKE", "DROP",
and "PUT". (This means nouns or noun phrases separated by the word "AND"
or a comma.) You can't use more than one object with most verbs, like
"ATTACK", so you can't "ATTACK THE MONSTER AND THE ENEMY."
I ASSUME YOU MEAN THE [thing].@*
You typed a word that the program knows as an adjective, like "BLUE,"
without a noun, but it knew what you meant anyway. It's just telling you what noun it
thinks you meant.
USE FIGURES FOR NUMBERS, FOR EXAMPLE "10."@*
The program found a number word in your sentence, like "TEN," but it
understands only figures, like "10."
PLEASE USE UNITS WITH NUMBERS.@*
The program found a number in your sentence without any units to tell
what the number means. Use a word after the number like "METERS" or "TURNS".
SORRY, BUT I DON'T UNDERSTAND. PLEASE REWORD THAT OR TRY
SOMETHING ELSE.@*
The program thought your sentence was
nonsense, such as "GIVE HIM WITH TOOL." Or it didn't understand the
syntax of your sentence, such as "SMELL UNDER THE ROCK." Try typing the
sentence in a different way.
@heading (SENTENCE SYNTAX)
A valid SEASTALKER sentence should start with a verb or a command (such
as "SCORE").
If you use multiple nouns for one "object", you must separate them by
the word "AND" or by a comma.
If you type several sentences on one input line, you must separate them
by a period or by the word "THEN". You don't need a period at the end of
an input line.
The short way to type compass directions is "N", "E", "S", "W", "NE", "SE", "SW", and "NW."
The short way to type "UP" and "DOWN" is "U" and "D."
Other short words include "L" for "LOOK", "I" for "INVENTORY",
and "Z" for "WAIT."
@heading (COMMAND SUMMARY)
You can type these commands when the prompt ">" has appeared
on the screen. For an explanation of these commands, see the section
called "Important Commands" earlier in this manual.
@begin (example)
BRIEF
DIAGNOSE
INVENTORY (or I)
LOOK (or L)
QUIT (or Q)
RELEASE
RESTART
RESTORE
SAVE
SCORE
SCRIPT
SUPERBRIEF
UNSCRIPT
VERBOSE
WAIT
@end (example)
@heading (WE'RE NEVER SATISFIED)
Here at the Cambridge chapter of the Young Adventure Story Writers
Club, we take great pride in the quality of our work. Even after
our stories are in your hands, we still want to make them better.
Your comments are important. No matter how much testing we do, it seems that
there are "bugs" that never crawl into view until thousands of you
begin typing all those millions of sentences into the program. If you find a
"bug", or if you think the program should recognize your favorite word
or sentence, or if you found a certain puzzle too hard or too
easy, or if you'd just like to tell us what you thought of the story, then
write to us! We love an excuse to stop working and fool around for a
while, and a letter from you would be just such an excuse! Write to:
@begin (example)
Infocom, Inc.
Department J
55 Wheeler street
Cambridge, Mass. 02138
@end (example)
You can call the Infocom Technical Support Team to report "bugs" and
technical problems at (617) 576-3190. If your diskette fails within 90
days after purchase, we will replace it free of charge. Otherwise, we
will replace it for a fee of $5.00. Please mail us your registration
card if you'd like to be on our mailing list and receive our newsletter.
@heading (OPERATING CONTROLS)
If the Ultramarine Bioceptor (UB) operated like a real submarine, you
would need a long training period just to learn how to operate it before
you could enjoy playing this story!
Instead of travelling in a straight line in any direction you want, the
UB moves from square to square like a chess queen. The UB's squares are
rather large, 500 meters on a side.
And since the UB is a submarine that can go down and up under water
("DIVE" and "SURFACE"), it uses a grid of squares for each depth. To keep
it simple, the UB goes up or down only in steps of 5 meters,
and it goes only one step up or down for each square that it
moves side-to-side.
You can pilot the UB using its four controls:
@begin (itemize)
The THROTTLE controls how fast the UB travels. You can set it to one of
several different speeds, corresponding to moving a certain number of
squares per turn: (0) standing still, (1) slow, (2) cruise,
or (3) high speed.
The FORWARD/REVERSE LEVER controls whether the UB moves forward or
backward. You can switch from one to the other only when the UB is
standing still. If you enter the Aquadome going forward, you have to
back out, and vice versa.
The JOYSTICK
turns the UB to face one of the compass directions:
north, northeast, east, southeast, south, southwest, west, or northwest.
(If you have a joystick on your computer, and if it's the right kind of
computer, then you can use your joystick instead of the UB's!)
The DEPTH CONTROL directs the UB's automatic guidance system to keep
a certain depth below the surface of the water. You can set it to any
multiple of 5 meters within the sub's operating range. When you set
it to a new target depth, the UB automatically adjusts its buoyancy and
diving planes so it will approach the target depth. It will change depth
by 5 meters each time it moves one square horizontally. If the
throttle is set to "standing still," so that the UB isn't moving
horizontally, then it will go straight up or straight down, 5
meters per turn.
When it
reaches target depth, it will automatically level out and stay at that
depth, assuming that it doesn't run into anything.
The AUTO PILOT can handle all these controls automatically, except
the throttle.
@end (itemize)

1
non-atari.serial Normal file
View File

@@ -0,0 +1 @@
2

18
non-atari.xzap Normal file
View 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

BIN
non-atari.zip Normal file

Binary file not shown.

114
outhouse.questionaire Normal file
View File

@@ -0,0 +1,114 @@
.c;Seastalker Testing Questionnaire
.s
.c;(If you need more room, use the back or another sheet.)
.s 3
.ts 40
Tester's Name Parent's Name
.s 2
Address
.s 3
.ts 50,60
Telephone number (include Area Code) Age Grade
.s
.s
What brand of computer are you using?
.ts 20
Apple II
Apple IIe
Apple IIe with Apple 80-column option
IBM-PC
Other __________________
.s
How much memory does the computer have?
32K
48K
64K
more
.s
Have you ever played an Infocom game before?
Yes
No
.s
If you have, which ones?
.s 4
Have you ever played any other "adventure" games before?
Yes
No
.s
If you have, which ones?
.s 4
Do you think the Logbook in Seastalker was helpful? YES NO
.s
Do you think the Infocards were helpful? YES NO
.s
Do you think the nautical chart was helpful? YES NO
.s
What would you change?
.s 4
Do you think the vocabulary in Seastalker is:
Too easy
Easy
Just right
Hard
Too hard
.s
What words didn't you understand?
.s 4
Do you think the descriptions in Seastalker are:
Very clear
Clear enough
A little confusing
Difficult to understand
Too difficult to understand
.s
Which descriptions are not clear?
.s
.s
.s
.s
.s
.s
After you finished the game, did you understand most of the story
or only some parts?
.s 2
Did you understand what happened at the beginning, in the lab?
What parts didn't you understand?
.s 6
Did you think operating the submarine was hard? Was it fun? What parts didn't you understand?
.s 6
Did you understand the things that happened in the Aquadome? What parts
didn't you understand?
.s 6
Did you understand the final battle? What parts didn't
you understand?
.s 6
Did the story make sense to you? If not, why didn't it make sense?
.s 6
Are there any things you would put in or take out to make the story
clearer or better or more fun? Are there things you would not take out,
no matter what?
.s 6
Overall, did you think the game was:
Excellent
Very good
Good
Fair
Bad
.s
Which of the following "thank you" games would you like? (Check two if you are
sending a transcript of your playing):
Zork 1
Zork 2
Zork 3
Enchanter
Sorcerer
Deadline
Witness
Starcross
Suspended
Planetfall
Infidel
Seastalker
.s
What brand of computer do you want these game(s) for?
(Sorry, we cannot send a TRS-80 version of Zork I)

302
package.gr Normal file
View File

@@ -0,0 +1,302 @@
@style(spacing 1)
@title (SEASTALKER - PACKAGE)
@pageheading(DRAFT)
@majorheading (SEASTALKER DATA CARDS)
@heading (PLACES)
@begin (itemize)
FROBTON BAY -
"Frobton Bay is roughly circular in shape. One arm of the bay ends at
North. The other arm of the bay ends at East. The harbor is protected by
a concrete seawall extending from one arm to the other. The opening in
this sea wall -- through which all vessels must pass in order to enter
or leave the bay -- lies NE of the test tank, about 30 grid squares away.@*
North of Inventions Unlimited, along the shore of the bay, lies the town of
Frobton, fronted by its commercial docks and fisheries -- then a
boatyard, and finally the North Point lighthouse.@*
East of Inventions Unlimited is a marina, a resort area, and the East Point
Yacht Club.@*
Frobton is a busy seaport. The waters are dotted with pleasure boats,
fishing craft and commercial shipping. Vessels are constantly moving
into and out of the harbor. Observe all Rules of the Road -- unless you
prefer to submerge."
INVENTIONS UNLIMITED -
This vast scientific enterprise was originally founded by your father,
himself a world-famous inventor. You have since added even greater luster
to the family name with your own numerous and unique inventions.@*
The purpose of Inventions Unlimited is to advance the frontiers of human
knowledge in every field of science, and to increase our awareness of and
adjustment to the physical world on land, under the sea, in the air, and
beyond Earth's own life-supporting atmosphere into the remotest reaches of
Outer Space.@*
There are five main units of Inventions Unlimited -- namely, the original
research laboratory near the town of Frobton on the east coast of the
United States; the Psycho-Biological Laboratory in Arizona; the undersea
research station known as the Aquadome; the IU spaceport on a previously
uninhabited island in the Caribbean; and the IU Satellite Network, consisting
of an inhabited orbital space station and two communication satellites.
Together, these three satellites provide the IU Videocom Network with
global television and radio communication.
@end (itemize)
@heading (THINGS)
@begin (itemize)
COMPUTESTOR -
The Computestor is for troubleshooting any invention, machine or system.
It is connected by wires to all the ones in the lab.
To consult it, you type "ASK COMPUTESTOR ABOUT (a device)."
MICROWAVE SECURITY SCANNER -
This device is located at the East Wall of your laboratory. It sweeps
the entire grounds of the research facility with harmless microwaves.
All legitimate personnel carry special identification amulets which are
automatically "read" by the microwaves. But any human configuration
not so equipped will cause the scanner to beep loudly.
POWER SUPPLY -
Inventions Unlimited generates its own electrical power by nuclear fusion.
This power is transmitted to your lab via the building's Electrical
Power Panel. This panel is located in the corridor just east of your
lab.
CIRCUIT BREAKER -
This breaker controls the power supply to the Videoscope and other
equipment related to the private Television Network.
RADIO - for communication while on the surface
SONARPHONE -
Since ordinary radio waves cannot travel very far through water, a
submerged submarine must rely on the transmission and reception of sonar
waves for most underwater communication. This is done by a sonar
transceiver, entirely separate from the sonarscope used for ranging and
searching the underwater environment.@*
The sonar transceiver has a sonarphone to speak over, plus a loudspeaker
and headset. The speaker and headset are automatically activated by
incoming signals.
HYDROPHONE -
This device picks up and amplifies all sounds in the surrounding
undersea environment -- including possibly meaningful noises emitted by
whales, dolphins, and other aquatic mammals. Inside the submarine, these
sounds can be heard over either a loudspeaker or earphones.
SUBMARINE -
This revolutionary new undersea craft has a special monocoque hull
design which can withstand tremendous pressure. If your computations are
right, it will be strong enough to explore any ocean trench
-- and its searchlight will be able to pierce the
sub-ocean darkness for 1000 meters in any direction.@*
Its extensor claws, jointed like a lazy tongs, will be able to seize and
transport not only mineral samples but also live biological specimens of
considerable strength and size. However, you purposely made the pilot
model of small, two-seater size so that Tip and you can test it thoroughly
before undertaking larger commercial versions.@*
REACTOR -
The craft is powered by a midget plasma-fusion reactor. This generates
the electricity needed to power the Bioceptor's hydrojet propulsion
system. The secret of the midget reactor is a special catalyst capsule.
This capsule must be inserted into the reactor by the push of a lever in
order to start the fusion process.
EMERGENCY OXYGEN GEAR -
This is a little canister of oxygen that you can wear slung around
your neck. When you turn the valve, you can suck air through a rubber
straw at the top.
Two canisters are in the "Scimitar", just like in all Inventions Unlimited
submarines.
SEARCH BEAM -
A yellow search light is switched on automatically by an
electronic eye in the hull, when you descend beyond the depth
to which daylight easily penetrates. You can aim it left or right
(also called port or starboard) to illuminate objects up to 1000 meters away.
DEPTH FINDER -
This device uses echo-sounding to determine the depth of the water
below the sub. It is automatically activated whenever the sub is in
motion. The depth is displayed in the form of a digital readout.@*
During a dive, an orange warning light comes on and a warning buzzer is
heard when the sub comes within 10 meters of the bottom.
The light turns red, and the buzzer becomes louder and shriller when the
sub comes within 5 meters of the bottom.
EXTENSOR CLAWS -
These are the remote-controlled manipulating devices that make your
revolutionary new submarine a true hunter and prober of the ocean depths.
The claws are mounted on arms, which are jointed like lazy tongs and
can be extended out to a maximum length of 10 meters from the hull of the
submarine. The Ultramarine Bioceptor is equipped with two such claws.
They can, of course, be swiveled and aimed in any direction.
EXTENSOR CLAW CONTROLS - (extend, retract, take, drop, aim, shoot)
REMOTE-CONTROL BUTTON - for signalling gates and airlocks to open or close
VIDEO CAMERAS -
There are four video cameras installed in the hull of the Bioceptor.
They are specially designed for underwater operation at great depths,
and they have both infra-red sensitivity and image-enhancement features
in order to obtain the best possible picture under the darkest, most adverse
conditions.@*
The cameras are so positioned on the hull as to command a full spherical
view of the undersea environment. They are also equipped for immediate
closed-circuit viewing on monitor screens inside the cabin, or for
videotaping and playback.
SONARSCOPE -
The sonarscope shows you solid objects at the same depth as the "Scimitar"
within 2500 meters in any direction.
A yellow warning light indicates that the bearing of an underwater blip
is not changing, even though your sub and/or the object causing the blip
are moving. This means you are on a collision course!
The light will turn red and a loud alarm buzzer will sound when you
and the approaching object are within one turn of a collision!
SONAR TRANSDUCER -
This is the device that converts electrical oscillations into
ultrasonic search pulses which are beamed out through the water and
reflected from surrounding objects to produce "blips" on the sonarscope.@*
A similar but separate transducer for the sonarphone system emits a
continuous ultrasonic signal which can be used as an underwater carrier wave
and modulated to transmit voice communication.
TEST BUTTON -
All of your inventions, such as the Videocoms and the Ultramarine Bioceptor,
have a built-in capability of testing themselves to discover the cause of
any possible operating trouble. This troubleshooting circuitry is activated by
pushing a test button. The results of the test are instantly displayed in
the form of an electronic readout.
ENGINE COMPARTMENT -
"It is located via an access door in the bulkhead just below and to the
right of control panel."@*
"The space is dimly illuminated by small work lights."@*
"CRAWL CAREFULLY: Too large a waist or hip circumference, or
too violent wriggling may pose SERIOUS DANGERS!"
1-- Tight space presents risk of knocking delicate bearings out of alignment.
2-- Hot, sharp or moving parts present danger of personal injury.
ESCAPE POD EJECTOR UNIT -
This unit includes three parts:@*
(1) an electronic monitor and alarm, designed to alert the user to any
deterioration in the environment - oxygen, air pressure or whatever;@*
(2) a hypodermic stimulant, designed to jab the user in the buttock
in case s/he has passed out and does not respond to the warning alarm
within two minutes; and@*
(3) a pod and ejector system, designed to enclose the user in a watertight
pod and eject him/her from the sub unless s/he manually deactivates
the escape system within two minutes after the stimulant has been
administered.@*
The pod will contain a 12-hour air supply and S.O.S@. sonar signal
transmitter. If reliably installed, these pods will offer you and Tip
a chance to survive if a battle turns out disastrously.
AQUATIC DART GUN -
The aquatic dart gun was originally designed for use as a handgun by
individual divers in order to capture or temporarily immobilize large fish
or other undersea creatures for purposes of scientific study. The dart is
projected from the gun by means of a carbon-dioxide cartridge.@*
Each dart contains a medical substance known as a "tranquilizer" which
tends to soothe and make drowsy any creature into which it is injected.@*
In this adventure, the dart gun is adapted by certain small changes so that
it can be held and fired by one of the extensor claws on your new submarine,
the Ultramarine Bioceptor.
PROSPECTING BAZOOKA OR 49-ER -
Originally invented by you for use by individual miners and prospectors
on land, you have since adapted it for purposes of prospecting for undersea
minerals. Unlike the military weapon, the prospecting bazooka has a rifled
launching tube and a screw-threaded projectile which has sufficient rocket
power to bore a dozen feet into bedrock. The projectile is hollow and yields
a core sample which can be reeled or winched up to the surface of the sea bed
by means of a slender steel and nylon cable.
The 49-er is usually fired by the diver from a shoulder-held position.
@end (itemize)
@heading (PEOPLE)
@begin (itemize)
TIP BERKELEY -
Tip is your closest pal and constant companion. A 19-year-old native
Californian, he's an expert flier and often serves as test pilot of your
futuristic aerospace craft, as well as land vehicles and undersea craft.@*
Blond-haired, muscular, compactly built and good-natured if sometimes
quick-tempered, he's more of a jock than a theoretical science buff of
your caliber. Nevertheless, his rollicking high spirits and bulldog
courage in tight spots make him an ideal sidekick and participant in all
of your thrilling adventures.
SHANA KEMP -
Shana is 21, red-haired, highly attractive and scarcely a year out of
college.@*
She acquired a degree in biochemistry at MIT, where her keen
intelligence and inquiring mind quickly gained her a working familiarity
with most other fields of science. Her late father, a professor of the
history of science, was an old friend of your father. This led to her
hiring at Inventions Unlimited, where she has since become a valued
associate of you, the famous young inventor.
LOU PERELLI -
Lou Perelli was trained as a military
intelligence officer and later, after leaving the Army, became a private
security expert before joining Inventions Unlimited. He has since undergone
further training by both the FBI and CIA, and has a first-hand expertise
in all phases of police work and counterespionage.
COMMANDER ZOE BRENT -
Small, slim, with curly dark hair and the delicate beauty of a China
doll, Zoe Brent is astonishingly strong and agile for her size and sex.
Going by looks alone, it would be easy to forget that she's been a
champion athlete since girlhood and is every bit as much physical as she
is mental in her behavior and outlook.@*
Already an Olympic-class swimmer and expert scuba diver while still in
her teens, Zoe Brent joined the Naval ROTC program at UCLA and was
commissioned Ensign USN. She then served two years on active duty and
underwent training at the Navy's Frogman School. Later she got her
doctorate in marine biology at Caltech and did research at Scripps
Institute of Oceanography before joining Inventions Unlimited.@*
Now 29, she has been in command of the Aquadome for the past three
months. Reportedly not all personnel are happy to be serving under her.
Aside from sexist prejudice, perhaps her own superb mental and physical
capabilities, combined with her eagerness to carry out important
undersea research, may tend to make her somewhat impatient and
short-tempered with more plodding subordinates.
MICK CASEY -
Mick Casey is a frogman-technician who's also a laser expert.
WALT NOVAK -
Walt Novak is a young marine biochemist.
DOCTOR JEROME THORP -
Dr@. Jerome Thorp is a distinguished marine biologist.@*
"This is a copy of a magazine called 'Science World.' It is a popular
magazine, not aimed just at scientists. It reports on interesting new
scientific developments.@*
The cover bears a picture of Dr@. Jerome Thorp, noted marine biologist,
surrounded by an artist's imaginative drawings of weird new undersea
life forms. The cover blurb says:@*
HOT FLASH FROM THE MARINE BIOLOGY FRONT!@*
... NEW SEA CREATURES SPAWNED BY TEST TUBE?@*
The cover story is about Dr@. Thorp, who has
reportedly created synthetic forms of marine life by means of genetic
engineering. Reading further, you learn (1) that Dr@. Thorp has
disappeared and apparently gone into hiding to duck the publicity
resulting from his sensational feat; and (2) that before going into hiding,
Thorp confided to close friends that he would soon marry a young
American woman, Shana Kemp."@*
"Size and appearance of synthetic creatures unknown.@*
Their movements are said to be stimulated by ultrasonic pulses. Reportedly
they can be trained to respond to such pulses.@*
Because of secrecy, many scientists are skeptical of Thorp's experiments.@*
Earlier technical papers by Thorp claimed that one-celled organisms
had evolved in his lab from a bio-chemical called AMINO-HYDROPHASE or AH.@*
If present rumors are true, these synthetic sea creatures presumably
must also be based on the AH molecule."
@end (itemize)

35
package.mss Normal file
View File

@@ -0,0 +1,35 @@
@style(spacing 1)
@title (SEASTALKER - PACKAGE)
@pageheading(DRAFT)
@majorheading (SEASTALKER INFOCARDS)
@begin (itemize)
INVENTIONS UNLIMITED -
This vast scientific enterprise was originally founded by your father,
himself a world-famous inventor. You have since added even greater luster
to the family name with your own numerous and unique inventions.@*
The purpose of Inventions Unlimited is to advance the frontiers of human
knowledge in every field of science, and to increase our awareness of and
adjustment to the physical world on land, under the sea, in the air, and
beyond Earth's own life-supporting atmosphere into the remotest reaches of
Outer Space.@*
There are five main units of Inventions Unlimited -- namely, the original
research laboratory near the town of Frobton on the east coast of the
United States; the Psycho-Biological Laboratory in Arizona; the undersea
research station known as the Aquadome; the IU spaceport on a previously
uninhabited island in the Caribbean; and the IU Satellite Network, consisting
of an inhabited orbital space station and two communication satellites.
Together, these three satellites provide the IU Videocom Network with
global television and radio communication.
VIDEOSCOPE -
All the parts of Inventions Unlimited are connected in a Videoscope
network for communicating with voice and picture. In the center of your
lab is a Videoscope unit that works somewhat like a telephone. When it
rings, you should answer by turning it on. If the person is calling
urgently, a red alert signal will flash also. After you turn on the
Videoscope, you may need to tune it by turning the tuning knob.
@end (itemize)

View File

@@ -7,7 +7,7 @@
.FUNCT I-PROMPT-2
ZERO? P-PROMPT /FALSE
SET 'P-PROMPT,0
SET 'P-PROMPT,FALSE-VALUE
CRLF
PRINTI "(Are you tired of seeing ""What next?"" Well, you won't see it any more.)"
CRLF
@@ -18,17 +18,17 @@
RFALSE
.FUNCT PARSER,PTR=P-LEXSTART,WORD,VAL=0,VERB=0,LEN,DIR=0,NW=0,LW=0,NUM,SCNT,CNT=-1
.FUNCT PARSER,PTR=P-LEXSTART,WRD,VAL=0,VERB=0,OF-FLAG=0,LEN,DIR=0,NW=0,LW=0,NUM,SCNT,CNT=-1
?PRG1: IGRTR? 'CNT,P-ITBLLEN \?ELS5
JUMP ?REP2
?ELS5: PUT P-ITBL,CNT,0
JUMP ?PRG1
?REP2: SET 'P-NUMBER,-1
SET 'P-NAM,0
SET 'P-ADJ,0
SET 'P-ADVERB,0
SET 'P-MERGED,0
SET 'P-WHAT-IGNORED,0
SET 'P-NAM,FALSE-VALUE
SET 'P-ADJ,FALSE-VALUE
SET 'P-ADVERB,FALSE-VALUE
SET 'P-MERGED,FALSE-VALUE
SET 'P-WHAT-IGNORED,FALSE-VALUE
PUT P-PRSO,P-MATCHLEN,0
PUT P-PRSI,P-MATCHLEN,0
PUT P-BUTS,P-MATCHLEN,0
@@ -40,12 +40,12 @@
LOC WINNER >HERE
?CND8: ZERO? P-CONT /?ELS18
SET 'PTR,P-CONT
SET 'P-CONT,0
SET 'P-CONT,FALSE-VALUE
EQUAL? PRSA,V?TELL /?CND16
CRLF
JUMP ?CND16
?ELS18: SET 'WINNER,PLAYER
SET 'QUOTE-FLAG,0
SET 'QUOTE-FLAG,FALSE-VALUE
LOC WINNER
FSET? STACK,VEHBIT /?CND25
LOC WINNER >HERE
@@ -85,43 +85,43 @@
CRLF
RFALSE
?CND59: SET 'LEN,P-LEN
SET 'P-DIR,0
SET 'P-DIR,FALSE-VALUE
SET 'P-NCN,0
SET 'P-GETFLAGS,0
PUT P-ITBL,P-VERBN,0
?PRG64: DLESS? 'P-LEN,0 \?ELS68
SET 'QUOTE-FLAG,0
SET 'QUOTE-FLAG,FALSE-VALUE
JUMP ?REP65
?ELS68: GET P-LEXV,PTR >WORD
CALL BUZZER-WORD?,WORD
?ELS68: GET P-LEXV,PTR >WRD
CALL BUZZER-WORD?,WRD
ZERO? STACK \FALSE
ZERO? WORD \?THN73
CALL NUMBER?,PTR >WORD
ZERO? WORD \?THN73
CALL NAME?,PTR >WORD
ZERO? WORD /?ELS72
?THN73: EQUAL? WORD,W?TO \?ELS77
ZERO? WRD \?THN73
CALL NUMBER?,PTR >WRD
ZERO? WRD \?THN73
CALL NAME?,PTR >WRD
ZERO? WRD /?ELS72
?THN73: EQUAL? WRD,W?TO \?ELS77
EQUAL? VERB,ACT?TELL,ACT?ASK \?ELS77
SET 'VERB,ACT?TELL
SET 'WORD,W?QUOTE
SET 'WRD,W?QUOTE
JUMP ?CND75
?ELS77: EQUAL? WORD,W?THEN \?CND75
?ELS77: EQUAL? WRD,W?THEN \?CND75
ZERO? VERB \?CND75
PUT P-ITBL,P-VERB,ACT?TELL
PUT P-ITBL,P-VERBN,0
SET 'WORD,W?QUOTE
?CND75: EQUAL? WORD,W?THEN,W?. /?THN87
EQUAL? WORD,W?QUOTE \?ELS86
?THN87: EQUAL? WORD,W?QUOTE \?CND89
SET 'WRD,W?QUOTE
?CND75: EQUAL? WRD,W?THEN,W?PERIOD /?THN87
EQUAL? WRD,W?QUOTE \?ELS86
?THN87: EQUAL? WRD,W?QUOTE \?CND89
ZERO? QUOTE-FLAG /?ELS94
SET 'QUOTE-FLAG,0
SET 'QUOTE-FLAG,FALSE-VALUE
JUMP ?CND89
?ELS94: SET 'QUOTE-FLAG,1
?ELS94: SET 'QUOTE-FLAG,TRUE-VALUE
?CND89: ZERO? P-LEN /?THN98
ADD PTR,P-LEXELEN >P-CONT
?THN98: PUTB P-LEXV,P-LEXWORDS,P-LEN
JUMP ?REP65
?ELS86: CALL WT?,WORD,PS?DIRECTION,P1?DIRECTION >VAL
?ELS86: CALL WT?,WRD,PS?DIRECTION,P1?DIRECTION >VAL
ZERO? VAL /?ELS101
EQUAL? LEN,1 /?THN104
EQUAL? LEN,2 \?ELS107
@@ -130,7 +130,7 @@
GET P-LEXV,STACK >NW
EQUAL? NW,W?THEN,W?QUOTE \?ELS109
GRTR? LEN,2 /?THN104
?ELS109: EQUAL? NW,W?. \?ELS111
?ELS109: EQUAL? NW,W?PERIOD \?ELS111
GRTR? LEN,1 /?THN104
?ELS111: ZERO? QUOTE-FLAG /?ELS113
EQUAL? LEN,2 \?ELS113
@@ -142,18 +142,18 @@
ADD PTR,P-LEXELEN
PUT P-LEXV,STACK,W?THEN
?CND116: GRTR? LEN,2 /?CND66
SET 'QUOTE-FLAG,0
SET 'QUOTE-FLAG,FALSE-VALUE
JUMP ?REP65
?ELS101: CALL WT?,WORD,PS?VERB,P1?VERB >VAL
?ELS101: CALL WT?,WRD,PS?VERB,P1?VERB >VAL
ZERO? VAL /?ELS123
ZERO? VERB /?THN126
EQUAL? VERB,ACT?NAME \?ELS123
?THN126: EQUAL? VERB,ACT?NAME \?CND128
SET 'P-WHAT-IGNORED,1
SET 'P-WHAT-IGNORED,TRUE-VALUE
?CND128: SET 'VERB,VAL
PUT P-ITBL,P-VERB,VAL
PUT P-ITBL,P-VERBN,P-VTBL
PUT P-VTBL,0,WORD
PUT P-VTBL,0,WRD
MUL PTR,2
ADD STACK,2 >NUM
GETB P-LEXV,NUM
@@ -162,70 +162,80 @@
GETB P-LEXV,STACK
PUTB P-VTBL,3,STACK
JUMP ?CND66
?ELS123: CALL WT?,WORD,PS?PREPOSITION,0 >VAL
?ELS123: CALL WT?,WRD,PS?PREPOSITION,0 >VAL
ZERO? VAL \?THN133
EQUAL? WORD,W?ONE,W?A /?THN137
CALL WT?,WORD,PS?ADJECTIVE
EQUAL? WRD,W?ONE,W?A /?THN137
CALL WT?,WRD,PS?ADJECTIVE
ZERO? STACK \?THN137
CALL WT?,WORD,PS?OBJECT
CALL WT?,WRD,PS?OBJECT
ZERO? STACK /?ELS132
?THN137: SET 'VAL,0
?THN133: GRTR? P-LEN,0 \?ELS141
?THN137: SET 'VAL,0 \?ELS132
?THN133: GRTR? P-LEN,1 \?ELS141
ADD PTR,P-LEXELEN
GET P-LEXV,STACK
EQUAL? STACK,W?OF \?ELS141
EQUAL? VERB,ACT?MAKE /?ELS141
ZERO? VAL \?ELS141
EQUAL? WORD,W?ONE,W?A /?ELS141
EQUAL? WRD,W?ONE,W?A /?ELS141
SET 'OF-FLAG,TRUE-VALUE
JUMP ?CND66
?ELS141: ZERO? VAL /?ELS145
ZERO? P-LEN /?THN148
ADD PTR,2
GET P-LEXV,STACK
EQUAL? STACK,W?THEN,W?. \?ELS145
EQUAL? STACK,W?THEN,W?PERIOD \?ELS145
?THN148: LESS? P-NCN,2 \?CND66
PUT P-ITBL,P-PREP1,VAL
PUT P-ITBL,P-PREP1N,WORD
PUT P-ITBL,P-PREP1N,WRD
JUMP ?CND66
?ELS145: EQUAL? P-NCN,2 \?ELS154
PRINTI "(I found too many nouns in that sentence!)"
CRLF
RFALSE
?ELS154: INC 'P-NCN
CALL CLAUSE,PTR,VAL,WORD >PTR
CALL CLAUSE,PTR,VAL,WRD >PTR
ZERO? PTR /FALSE
LESS? PTR,0 \?CND66
SET 'QUOTE-FLAG,0
SET 'QUOTE-FLAG,FALSE-VALUE
JUMP ?REP65
?ELS132: EQUAL? WORD,W?CLOSELY \?ELS165
?ELS132: EQUAL? WRD,W?CLOSELY \?ELS165
SET 'P-ADVERB,W?CAREFULLY
JUMP ?CND66
?ELS165: EQUAL? WORD,W?CAREFULLY,W?QUIETLY,W?PRIVATELY /?THN168
EQUAL? WORD,W?SLOWLY,W?QUICKLY,W?BRIEFLY \?ELS167
?THN168: SET 'P-ADVERB,WORD
?ELS165: EQUAL? WRD,W?CAREFULLY,W?QUIETLY,W?PRIVATELY /?THN168
EQUAL? WRD,W?SLOWLY,W?QUICKLY,W?BRIEFLY \?ELS167
?THN168: SET 'P-ADVERB,WRD
JUMP ?CND66
?ELS167: CALL WT?,WORD,PS?BUZZ-WORD
ZERO? STACK /?ELS171
?ELS167: EQUAL? WRD,W?OF \?ELS171
ZERO? OF-FLAG /?THN175
ADD PTR,P-LEXELEN
GET P-LEXV,STACK
EQUAL? STACK,W?PERIOD,W?THEN \?ELS174
?THN175: CALL CANT-USE,PTR
RFALSE
?ELS174: SET 'OF-FLAG,FALSE-VALUE
JUMP ?CND66
?ELS171: CALL CANT-USE,PTR
?ELS171: CALL WT?,WRD,PS?BUZZ-WORD
ZERO? STACK /?ELS180
JUMP ?CND66
?ELS180: CALL CANT-USE,PTR
RFALSE
?ELS72: CALL UNKNOWN-WORD,PTR
RFALSE
?CND66: SET 'LW,WORD
?CND66: SET 'LW,WRD
ADD PTR,P-LEXELEN >PTR
JUMP ?PRG64
?REP65: ZERO? DIR /?CND176
?REP65: ZERO? DIR /?CND185
SET 'PRSA,V?WALK
SET 'PRSO,DIR
SET 'P-WALK-DIR,DIR
RTRUE
?CND176: SET 'P-WALK-DIR,0
ZERO? P-OFLAG /?CND180
RETURN TRUE-VALUE
?CND185: SET 'P-WALK-DIR,FALSE-VALUE
ZERO? P-OFLAG /?CND189
CALL ORPHAN-MERGE
?CND180: GET P-ITBL,P-VERB
ZERO? STACK \?CND184
?CND189: GET P-ITBL,P-VERB
ZERO? STACK \?CND193
PUT P-ITBL,P-VERB,ACT?$CALL
?CND184: CALL SYNTAX-CHECK
?CND193: CALL SYNTAX-CHECK
ZERO? STACK /FALSE
CALL SNARF-OBJECTS
ZERO? STACK /FALSE
@@ -247,14 +257,14 @@
RSTACK
.FUNCT CLAUSE,PTR,VAL,WORD,OFF,NUM,ANDFLG=0,FIRST??=1,NW,LW=0,?TMP1
.FUNCT CLAUSE,PTR,VAL,WRD,OFF,NUM,ANDFLG=0,FIRST??=1,NW,LW=0,?TMP1
SUB P-NCN,1
MUL STACK,2 >OFF
ZERO? VAL /?ELS3
ADD P-PREP1,OFF >NUM
PUT P-ITBL,NUM,VAL
ADD NUM,1
PUT P-ITBL,STACK,WORD
PUT P-ITBL,STACK,WRD
ADD PTR,P-LEXELEN >PTR
JUMP ?CND1
?ELS3: INC 'P-LEN
@@ -277,34 +287,34 @@
ADD P-LEXV,STACK
PUT P-ITBL,?TMP1,STACK
RETURN -1
?CND14: GET P-LEXV,PTR >WORD
CALL BUZZER-WORD?,WORD
?CND14: GET P-LEXV,PTR >WRD
CALL BUZZER-WORD?,WRD
ZERO? STACK \FALSE
ZERO? WORD \?THN22
CALL NUMBER?,PTR >WORD
ZERO? WORD \?THN22
CALL NAME?,PTR >WORD
ZERO? WORD /?ELS21
ZERO? WRD \?THN22
CALL NUMBER?,PTR >WRD
ZERO? WRD \?THN22
CALL NAME?,PTR >WRD
ZERO? WRD /?ELS21
?THN22: ZERO? P-LEN \?ELS26
SET 'NW,0
JUMP ?CND24
?ELS26: ADD PTR,P-LEXELEN
GET P-LEXV,STACK >NW
?CND24: EQUAL? WORD,W?OF \?CND29
?CND24: EQUAL? WRD,W?OF \?CND29
GET P-ITBL,P-VERB
EQUAL? STACK,ACT?MAKE \?CND29
PUT P-LEXV,PTR,W?WITH
SET 'WORD,W?WITH
?CND29: EQUAL? WORD,W?AND,W?COMMA \?ELS36
SET 'ANDFLG,1
SET 'WRD,W?WITH
?CND29: EQUAL? WRD,W?AND,W?COMMA \?ELS36
SET 'ANDFLG,TRUE-VALUE
JUMP ?CND17
?ELS36: EQUAL? WORD,W?ONE \?ELS38
?ELS36: EQUAL? WRD,W?ONE \?ELS38
EQUAL? NW,W?OF \?CND17
DEC 'P-LEN
ADD PTR,P-LEXELEN >PTR
JUMP ?CND17
?ELS38: EQUAL? WORD,W?THEN,W?. /?THN44
CALL WT?,WORD,PS?PREPOSITION
?ELS38: EQUAL? WRD,W?THEN,W?PERIOD /?THN44
CALL WT?,WRD,PS?PREPOSITION
ZERO? STACK /?ELS43
ZERO? FIRST?? \?ELS43
?THN44: INC 'P-LEN
@@ -317,18 +327,18 @@
?ELS43: ZERO? ANDFLG /?ELS49
GET P-ITBL,P-VERBN
ZERO? STACK /?THN52
CALL WT?,WORD,PS?DIRECTION
CALL WT?,WRD,PS?DIRECTION
ZERO? STACK \?THN52
CALL WT?,WORD,PS?VERB
CALL WT?,WRD,PS?VERB
ZERO? STACK /?ELS49
?THN52: SUB PTR,4 >PTR
ADD PTR,2
PUT P-LEXV,STACK,W?THEN
ADD P-LEN,2 >P-LEN
JUMP ?CND17
?ELS49: CALL WT?,WORD,PS?OBJECT
?ELS49: CALL WT?,WRD,PS?OBJECT
ZERO? STACK /?ELS55
CALL WT?,WORD,PS?ADJECTIVE,P1?ADJECTIVE
CALL WT?,WRD,PS?ADJECTIVE,P1?ADJECTIVE
ZERO? STACK /?ELS58
ZERO? NW /?ELS58
CALL WT?,NW,PS?OBJECT
@@ -342,22 +352,22 @@
ADD P-LEXV,STACK
PUT P-ITBL,?TMP1,STACK
RETURN PTR
?ELS62: SET 'ANDFLG,0
?ELS62: SET 'ANDFLG,FALSE-VALUE
JUMP ?CND17
?ELS55: CALL WT?,WORD,PS?ADJECTIVE
?ELS55: CALL WT?,WRD,PS?ADJECTIVE
ZERO? STACK \?CND17
CALL WT?,WORD,PS?BUZZ-WORD
CALL WT?,WRD,PS?BUZZ-WORD
ZERO? STACK /?ELS68
JUMP ?CND17
?ELS68: CALL WT?,WORD,PS?PREPOSITION
?ELS68: CALL WT?,WRD,PS?PREPOSITION
ZERO? STACK /?ELS72
JUMP ?CND17
?ELS72: CALL CANT-USE,PTR
RFALSE
?ELS21: CALL UNKNOWN-WORD,PTR
RFALSE
?CND17: SET 'LW,WORD
SET 'FIRST??,0
?CND17: SET 'LW,WRD
SET 'FIRST??,FALSE-VALUE
ADD PTR,P-LEXELEN >PTR
JUMP ?PRG12
@@ -401,7 +411,7 @@
.FUNCT ORPHAN-MERGE,CNT=-1,TEMP,VERB,BEG,END,ADJ=0,WRD,?TMP1
SET 'P-OFLAG,0
SET 'P-OFLAG,FALSE-VALUE
GET P-ITBL,P-VERB >VERB
ZERO? VERB /?ELS3
GET P-OTBL,P-VERB
@@ -413,67 +423,75 @@
GET P-OTBL,P-PREP1
EQUAL? TEMP,STACK /?THN13
ZERO? TEMP \FALSE
?THN13: GET P-ITBL,P-NC1
?THN13: ZERO? ADJ /?ELS17
ADD P-LEXV,2
PUT P-OTBL,P-NC1,STACK
ADD P-LEXV,6
PUT P-OTBL,P-NC1L,STACK
JUMP ?CND1
?ELS17: GET P-ITBL,P-NC1
PUT P-OTBL,P-NC1,STACK
GET P-ITBL,P-NC1L
PUT P-OTBL,P-NC1L,STACK
JUMP ?CND1
?ELS9: GET P-OTBL,P-NC2
EQUAL? STACK,1 \?ELS18
EQUAL? STACK,1 \?ELS24
GET P-ITBL,P-PREP1 >TEMP
GET P-OTBL,P-PREP2
EQUAL? TEMP,STACK /?THN22
EQUAL? TEMP,STACK /?THN28
ZERO? TEMP \FALSE
?THN22: GET P-ITBL,P-NC1
?THN28: GET P-ITBL,P-NC1
PUT P-OTBL,P-NC2,STACK
GET P-ITBL,P-NC1L
PUT P-OTBL,P-NC2L,STACK
SET 'P-NCN,2
JUMP ?CND1
?ELS18: ZERO? P-ACLAUSE /?CND1
EQUAL? P-NCN,1 /?ELS31
SET 'P-ACLAUSE,0
?ELS24: ZERO? P-ACLAUSE /?CND1
EQUAL? P-NCN,1 /?ELS37
SET 'P-ACLAUSE,FALSE-VALUE
RFALSE
?ELS31: GET P-ITBL,P-NC1 >BEG
?ELS37: GET P-ITBL,P-NC1 >BEG
GET P-ITBL,P-NC1L >END
?PRG34: EQUAL? BEG,END \?ELS38
ZERO? ADJ /?ELS41
?PRG40: EQUAL? BEG,END \?ELS44
ZERO? ADJ /?ELS47
CALL ACLAUSE-WIN,ADJ
JUMP ?CND29
?ELS41: SET 'P-ACLAUSE,0
JUMP ?CND35
?ELS47: SET 'P-ACLAUSE,FALSE-VALUE
RFALSE
?ELS38: ZERO? ADJ \?ELS46
?ELS44: ZERO? ADJ \?ELS52
GET BEG,0 >WRD
GETB WRD,P-PSOFF
BTST STACK,PS?ADJECTIVE \?ELS46
BTST STACK,PS?ADJECTIVE \?ELS52
SET 'ADJ,WRD
JUMP ?CND36
?ELS46: GETB WRD,P-PSOFF
BTST STACK,PS?OBJECT /?THN51
EQUAL? WRD,W?ONE \?CND36
?THN51: EQUAL? WRD,P-ANAM,W?ONE \FALSE
JUMP ?CND42
?ELS52: GETB WRD,P-PSOFF
BTST STACK,PS?OBJECT /?THN57
EQUAL? WRD,W?ONE \?CND42
?THN57: EQUAL? WRD,P-ANAM,W?ONE \FALSE
CALL ACLAUSE-WIN,ADJ
JUMP ?CND29
?CND36: ADD BEG,P-WORDLEN >BEG
JUMP ?PRG34
?CND29:
JUMP ?CND35
?CND42: ADD BEG,P-WORDLEN >BEG
JUMP ?PRG40
?CND35:
?CND1:
?PRG58: IGRTR? 'CNT,P-ITBLLEN \?ELS62
SET 'P-MERGED,1
?PRG64: IGRTR? 'CNT,P-ITBLLEN \?ELS68
SET 'P-MERGED,TRUE-VALUE
RTRUE
?ELS62: GET P-OTBL,CNT
?ELS68: GET P-OTBL,CNT
PUT P-ITBL,CNT,STACK
JUMP ?PRG58
JUMP ?PRG64
.FUNCT ACLAUSE-WIN,ADJ
GET P-OTBL,P-VERB
PUT P-ITBL,P-VERB,STACK
SET 'P-CCSRC,P-OTBL
ADD P-ACLAUSE,1
CALL CLAUSE-COPY,P-ACLAUSE,STACK,ADJ
GET P-OTBL,P-NC2
ZERO? STACK /?ELS2
SET 'P-NCN,2
?ELS2: SET 'P-ACLAUSE,0
?ELS2: SET 'P-ACLAUSE,FALSE-VALUE
RTRUE
@@ -486,20 +504,16 @@
.FUNCT UNKNOWN-WORD,PTR,BUF,?TMP1
GET UNKNOWN-MSGS,0
PRINT STACK
PRINTI "(I don't know the word """
MUL PTR,2 >BUF
ADD P-LEXV,BUF
GETB STACK,2 >?TMP1
ADD P-LEXV,BUF
GETB STACK,3
CALL WORD-PRINT,?TMP1,STACK
SET 'QUOTE-FLAG,0
SET 'P-OFLAG,0
GET UNKNOWN-MSGS,1
PRINT STACK
CRLF
RTRUE
SET 'QUOTE-FLAG,FALSE-VALUE
SET 'P-OFLAG,FALSE-VALUE
PRINTR """.)"
.FUNCT CANT-USE,PTR,BUF,?TMP1
@@ -512,9 +526,9 @@
CALL WORD-PRINT,?TMP1,STACK
PRINTI """ when you use it that way.)"
CRLF
SET 'QUOTE-FLAG,0
SET 'P-OFLAG,0
RTRUE
SET 'QUOTE-FLAG,FALSE-VALUE
SET 'P-OFLAG,FALSE-VALUE
RETURN P-OFLAG
.FUNCT SYNTAX-CHECK,SYN,LEN,NUM,OBJ,DRIVE1=0,DRIVE2=0,PREP,VERB,?TMP2,?TMP1
@@ -586,18 +600,18 @@
?ELS50: EQUAL? WINNER,PLAYER \?ELS57
CALL ORPHAN,DRIVE1,DRIVE2
PRINTI "(Wh"
EQUAL? VERB,ACT?WALK,ACT?CRAWL \?ELS64
PUSH STR?131
EQUAL? VERB,ACT?WALK \?ELS64
PUSH STR?122
JUMP ?CND60
?ELS64: PUSH STR?132
?ELS64: PUSH STR?123
?CND60: PRINT STACK
PRINTI " do you want to "
JUMP ?CND55
?ELS57: PRINTI "(Your command was not complete. Next time, type wh"
EQUAL? VERB,ACT?WALK \?ELS75
PUSH STR?131
PUSH STR?122
JUMP ?CND71
?ELS75: PUSH STR?132
?ELS75: PUSH STR?123
?CND71: PRINT STACK
PRINTI " you want "
PRINTD WINNER
@@ -611,11 +625,11 @@
?ELS86: GETB DRIVE2,P-SPREP2
?CND82: CALL PREP-PRINT,STACK
EQUAL? WINNER,PLAYER \?ELS92
SET 'P-OFLAG,1
SET 'P-OFLAG,TRUE-VALUE
PRINTI "?)"
CRLF
RFALSE
?ELS92: SET 'P-OFLAG,0
?ELS92: SET 'P-OFLAG,FALSE-VALUE
PRINTI ".)"
CRLF
RFALSE
@@ -672,24 +686,24 @@
.FUNCT BUFFER-PRINT,BEG,END,CP,NOSP=0,WRD,FIRST??=1,PN=0,?TMP1
?PRG1: EQUAL? BEG,END /TRUE
ZERO? NOSP /?ELS10
SET 'NOSP,0
SET 'NOSP,FALSE-VALUE
JUMP ?CND8
?ELS10: PRINTI " "
?CND8: GET BEG,0 >WRD
EQUAL? WRD,W?. \?ELS18
SET 'NOSP,1
EQUAL? WRD,W?PERIOD \?ELS18
SET 'NOSP,TRUE-VALUE
JUMP ?CND3
?ELS18: EQUAL? WRD,W?DR \?ELS20
PRINTI "Dr."
SET 'PN,1
SET 'PN,TRUE-VALUE
JUMP ?CND3
?ELS20: EQUAL? WRD,W?HIM,W?HER,W?ME \?ELS24
SET 'PN,1
SET 'PN,TRUE-VALUE
JUMP ?CND3
?ELS24: CALL CAPITAL-NOUN?,WRD
ZERO? STACK /?ELS26
CALL CAPITALIZE,BEG
SET 'PN,1
SET 'PN,TRUE-VALUE
JUMP ?CND3
?ELS26: ZERO? FIRST?? /?CND29
ZERO? PN \?CND29
@@ -717,7 +731,7 @@
?ELS50: GETB BEG,2 >?TMP1
GETB BEG,3
CALL WORD-PRINT,?TMP1,STACK
?CND36: SET 'FIRST??,0
?CND36: SET 'FIRST??,FALSE-VALUE
?CND3: ADD BEG,P-WORDLEN >BEG
JUMP ?PRG1
@@ -818,14 +832,14 @@
?CND1: SET 'P-GWIMBIT,GBIT
SET 'P-SLOCBITS,LBIT
PUT P-MERGE,P-MATCHLEN,0
CALL GET-OBJECT,P-MERGE,0
CALL GET-OBJECT,P-MERGE,FALSE-VALUE
ZERO? STACK /?ELS8
SET 'P-GWIMBIT,0
GET P-MERGE,P-MATCHLEN
EQUAL? STACK,1 \FALSE
GET P-MERGE,1 >OBJ
PRINTI "("
CALL PREP-PRINT,PREP,0
CALL PREP-PRINT,PREP,FALSE-VALUE
ZERO? STACK /?CND16
CALL THE?,OBJ
PRINTI " "
@@ -883,13 +897,14 @@
RETURN NTBL
.FUNCT SNARFEM,PTR,EPTR,TBL,AND=0,BUT=0,LEN,WV,WORD,NW
.FUNCT SNARFEM,PTR,EPTR,TBL,BUT=0,LEN,WV,WRD,NW
SET 'P-AND,FALSE-VALUE
SET 'P-GETFLAGS,0
SET 'P-CSPTR,PTR
SET 'P-CEPTR,EPTR
PUT P-BUTS,P-MATCHLEN,0
PUT TBL,P-MATCHLEN,0
GET PTR,0 >WORD
GET PTR,0 >WRD
?PRG1: EQUAL? PTR,EPTR \?ELS5
ZERO? BUT /?ORP9
PUSH BUT
@@ -898,9 +913,9 @@
?THN6: CALL GET-OBJECT,STACK
RETURN STACK
?ELS5: GET PTR,P-LEXELEN >NW
CALL BUZZER-WORD?,WORD
CALL BUZZER-WORD?,WRD
ZERO? STACK \FALSE
EQUAL? WORD,W?A,W?ONE \?ELS16
EQUAL? WRD,W?A,W?ONE \?ELS16
ZERO? P-ADJ \?ELS19
SET 'P-GETFLAGS,P-ONE
EQUAL? NW,W?OF \?CND3
@@ -915,8 +930,9 @@
ZERO? STACK /FALSE
ZERO? NW /TRUE
JUMP ?CND3
?ELS16: EQUAL? WORD,W?AND,W?COMMA \?ELS34
?ELS16: EQUAL? WRD,W?AND,W?COMMA \?ELS34
EQUAL? NW,W?AND,W?COMMA /?ELS34
SET 'P-AND,TRUE-VALUE
ZERO? BUT /?ORP42
PUSH BUT
JUMP ?THN39
@@ -924,29 +940,29 @@
?THN39: CALL GET-OBJECT,STACK
ZERO? STACK \?CND12
RFALSE
?ELS34: CALL WT?,WORD,PS?BUZZ-WORD
?ELS34: CALL WT?,WRD,PS?BUZZ-WORD
ZERO? STACK /?ELS44
JUMP ?CND3
?ELS44: EQUAL? WORD,W?AND,W?COMMA \?ELS46
?ELS44: EQUAL? WRD,W?AND,W?COMMA \?ELS46
JUMP ?CND3
?ELS46: EQUAL? WORD,W?OF \?ELS48
?ELS46: EQUAL? WRD,W?OF \?ELS48
ZERO? P-GETFLAGS \?CND12
SET 'P-GETFLAGS,P-INHIBIT
JUMP ?CND12
?ELS48: CALL WT?,WORD,PS?ADJECTIVE,P1?ADJECTIVE >WV
?ELS48: CALL WT?,WRD,PS?ADJECTIVE,P1?ADJECTIVE >WV
ZERO? WV /?ELS53
ZERO? P-ADJ \?ELS53
SET 'P-ADJ,WV
SET 'P-ADJN,WORD
SET 'P-ADJN,WRD
JUMP ?CND3
?ELS53: CALL WT?,WORD,PS?OBJECT,P1?OBJECT
?ELS53: CALL WT?,WRD,PS?OBJECT,P1?OBJECT
ZERO? STACK /?CND3
SET 'P-NAM,WORD
SET 'P-ONEOBJ,WORD
SET 'P-NAM,WRD
SET 'P-ONEOBJ,WRD
?CND12:
?CND3: EQUAL? PTR,EPTR /?PRG1
ADD PTR,P-WORDLEN >PTR
SET 'WORD,NW
SET 'WRD,NW
JUMP ?PRG1
@@ -960,11 +976,11 @@
CALL WT?,P-ADJN,PS?OBJECT,P1?OBJECT
ZERO? STACK /?ELS11
SET 'P-NAM,P-ADJN
SET 'P-ADJ,0
SET 'P-ADJ,FALSE-VALUE
JUMP ?CND4
?ELS11: CALL WT?,P-ADJN,PS?DIRECTION,P1?DIRECTION >BTS
ZERO? BTS /?CND4
SET 'P-ADJ,0
SET 'P-ADJ,FALSE-VALUE
PUT TBL,P-MATCHLEN,1
PUT TBL,1,INTDIR
SET 'P-DIRECTION,BTS
@@ -1027,8 +1043,8 @@
EQUAL? OBJ,NOT-HERE-OBJECT /FALSE
PUT TBL,1,OBJ
PUT TBL,P-MATCHLEN,1
SET 'P-NAM,0
SET 'P-ADJ,0
SET 'P-NAM,FALSE-VALUE
SET 'P-ADJ,FALSE-VALUE
RTRUE
?ELS68: ZERO? VRB /?ELS75
ZERO? P-NAM /?ELS75
@@ -1040,33 +1056,34 @@
?CND78: SET 'P-ACLAUSE,STACK
SET 'P-AADJ,P-ADJ
SET 'P-ANAM,P-NAM
CALL ORPHAN,0,0
SET 'P-OFLAG,1
CALL ORPHAN,FALSE-VALUE,FALSE-VALUE
SET 'P-OFLAG,TRUE-VALUE
JUMP ?CND66
?ELS75: ZERO? VRB /?CND66
CALL MISSING-NOUN,ADJ
?CND66: SET 'P-NAM,0
SET 'P-ADJ,0
?CND66: SET 'P-NAM,FALSE-VALUE
SET 'P-ADJ,FALSE-VALUE
RFALSE
?ELS53: ZERO? LEN \?ELS89
ZERO? GCHECK /?ELS89
ZERO? VRB /?CND92
SET 'P-SLOCBITS,XBITS
ZERO? LIT /?ELS98
CALL OBJ-FOUND,NOT-HERE-OBJECT,TBL
SET 'P-XNAM,P-NAM
SET 'P-XADJ,P-ADJ
SET 'P-XADJN,P-ADJN
SET 'P-NAM,0
SET 'P-ADJ,0
SET 'P-ADJN,0
SET 'P-NAM,FALSE-VALUE
SET 'P-ADJ,FALSE-VALUE
SET 'P-ADJN,FALSE-VALUE
RTRUE
?ELS98: PRINTI "(It's too dark to see!)"
CRLF
?CND92: SET 'P-NAM,0
SET 'P-ADJ,0
?CND92: SET 'P-NAM,FALSE-VALUE
SET 'P-ADJ,FALSE-VALUE
RFALSE
?ELS89: ZERO? LEN \?CND40
SET 'GCHECK,1
SET 'GCHECK,TRUE-VALUE
JUMP ?PRG28
?CND40: ZERO? P-ADJ /?CND106
ZERO? P-NAM \?CND106
@@ -1077,8 +1094,8 @@
PRINTI ".)"
CRLF
?CND106: SET 'P-SLOCBITS,XBITS
SET 'P-NAM,0
SET 'P-ADJ,0
SET 'P-NAM,FALSE-VALUE
SET 'P-ADJ,FALSE-VALUE
RTRUE
@@ -1121,14 +1138,15 @@
SET 'RLEN,LEN
PRINTI "(Which"
ZERO? P-OFLAG \?THN6
ZERO? P-MERGED /?ELS5
ZERO? P-MERGED \?THN6
ZERO? P-AND /?ELS5
?THN6: PRINTI " "
PRINTB P-NAM
JUMP ?CND3
?ELS5: EQUAL? TBL,P-PRSO \?ELS11
CALL CLAUSE-PRINT,P-NC1,P-NC1L,0
CALL CLAUSE-PRINT,P-NC1,P-NC1L,FALSE-VALUE
JUMP ?CND3
?ELS11: CALL CLAUSE-PRINT,P-NC2,P-NC2L,0
?ELS11: CALL CLAUSE-PRINT,P-NC2,P-NC2L,FALSE-VALUE
?CND3: PRINTI " do you mean,"
?PRG16: INC 'TLEN
GET TBL,TLEN >OBJ
@@ -1165,6 +1183,7 @@
?PRG15: MUL CNT,2
GET RMG,STACK
EQUAL? P-NAM,STACK \?ELS19
SET 'LAST-PSEUDO-LOC,HERE
MUL CNT,2
ADD STACK,1
GET RMG,STACK
@@ -1289,13 +1308,13 @@
?CND15: IN? OBJ,WINNER /?PRG8
SET 'PRSO,OBJ
FSET? OBJ,TRYTAKEBIT \?ELS27
SET 'TAKEN,1
SET 'TAKEN,TRUE-VALUE
JUMP ?CND25
?ELS27: CALL ITAKE,0
EQUAL? STACK,1 \?ELS29
SET 'TAKEN,0
?ELS27: CALL ITAKE,FALSE-VALUE
EQUAL? STACK,TRUE-VALUE \?ELS29
SET 'TAKEN,FALSE-VALUE
JUMP ?CND25
?ELS29: SET 'TAKEN,1
?ELS29: SET 'TAKEN,TRUE-VALUE
?CND25: ZERO? TAKEN /?ELS34
BTST BITS,SHAVE \?ELS34
PRINTI "(You aren't holding"
@@ -1379,28 +1398,6 @@
RFALSE
.FUNCT LIT?,RM,OHERE,LIT=0
SET 'P-GWIMBIT,ONBIT
SET 'OHERE,HERE
SET 'HERE,RM
FSET? RM,ONBIT /?THN4
ZERO? ALWAYS-LIT /?ELS3
?THN4: SET 'LIT,1
JUMP ?CND1
?ELS3: PUT P-MERGE,P-MATCHLEN,0
SET 'P-TABLE,P-MERGE
SET 'P-SLOCBITS,-1
EQUAL? OHERE,RM \?CND8
CALL DO-SL,WINNER,1,1
?CND8: CALL DO-SL,RM,1,1
GET P-TABLE,P-MATCHLEN
GRTR? STACK,0 \?CND1
SET 'LIT,1
?CND1: SET 'HERE,OHERE
SET 'P-GWIMBIT,0
RETURN LIT
.FUNCT PRSO-PRINT,PTR
PRINTI " "
PRINTD PRSO

View File

@@ -16,9 +16,9 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<SETG SIBREAKS ".,\"!?">
<GLOBAL ALWAYS-LIT <>>
"<GLOBAL ALWAYS-LIT <>>"
<GLOBAL GWIM-DISABLE <>>
"<GLOBAL GWIM-DISABLE <>>"
<GLOBAL PRSA 0>
@@ -70,11 +70,11 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<GLOBAL P-AADJ <>>
"Parser variables and temporaries"
<CONSTANT P-PHRLEN 3>
"<CONSTANT P-PHRLEN 3>
<CONSTANT P-ORPHLEN 7>
<CONSTANT P-RTLEN 3>
<CONSTANT P-RTLEN 3>"
"Byte offset to # of entries in LEXV"
<CONSTANT P-LEXWORDS 1>
@@ -116,7 +116,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<CONSTANT P-PREP2 4>
<CONSTANT P-PREP2N 5>
"<CONSTANT P-PREP2N 5>"
<CONSTANT P-NC1 6>
@@ -144,14 +144,14 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<ROUTINE I-PROMPT-2 ()
<COND (,P-PROMPT
<SETG P-PROMPT <>>
%<XTELL CR
<TELL CR
"(Are you tired of seeing \"What next?\" Well, you won't see it
any more.)" CR>
<COND (<VERB? ;WAIT WAIT-FOR WAIT-UNTIL> <CRLF>)>
<DISABLE <INT I-PROMPT-2>>
<RFALSE>)>>
<ROUTINE PARSER ("AUX" (PTR ,P-LEXSTART) WORD (VAL 0) (VERB <>)
<ROUTINE PARSER ("AUX" (PTR ,P-LEXSTART) WRD (VAL 0) (VERB <>) (OF-FLAG <>)
LEN (DIR <>) (NW 0) (LW 0) NUM SCNT (CNT -1))
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> ,P-ITBLLEN> <RETURN>)
@@ -211,26 +211,26 @@ any more.)" CR>
<COND (<L? <SETG P-LEN <- ,P-LEN 1>> 0>
<SETG QUOTE-FLAG <>>
<RETURN>)
(<BUZZER-WORD? <SET WORD <GET ,P-LEXV .PTR>>>
(<BUZZER-WORD? <SET WRD <GET ,P-LEXV .PTR>>>
<RFALSE>)
(<OR .WORD
<SET WORD <NUMBER? .PTR>>
<SET WORD <NAME? .PTR>>>
<COND (<AND <==? .WORD ,W?TO>
(<OR .WRD
<SET WRD <NUMBER? .PTR>>
<SET WRD <NAME? .PTR>>>
<COND (<AND <==? .WRD ,W?TO>
<EQUAL? .VERB ,ACT?TELL ,ACT?ASK>>
<SET VERB ,ACT?TELL>
<SET WORD ,W?QUOTE>)
(<AND <==? .WORD ,W?THEN>
<SET WRD ,W?QUOTE>)
(<AND <==? .WRD ,W?THEN>
<NOT .VERB>>
<PUT ,P-ITBL ,P-VERB ,ACT?TELL>
<PUT ,P-ITBL ,P-VERBN 0>
<SET WORD ,W?QUOTE>)>
<COND ;(<AND <EQUAL? .WORD ,W?.>
<SET WRD ,W?QUOTE>)>
<COND ;(<AND <EQUAL? .WRD ,W?PERIOD>
<EQUAL? .LW ,W?MRS ,W?MR>>
<SET LW 0>)
(<OR <EQUAL? .WORD ,W?THEN ,W?.>
<EQUAL? .WORD ,W?QUOTE>>
<COND (<EQUAL? .WORD ,W?QUOTE>
(<OR <EQUAL? .WRD ,W?THEN ,W?PERIOD>
<EQUAL? .WRD ,W?QUOTE>>
<COND (<EQUAL? .WRD ,W?QUOTE>
<COND (,QUOTE-FLAG
<SETG QUOTE-FLAG <>>)
(T <SETG QUOTE-FLAG T>)>)>
@@ -239,7 +239,7 @@ any more.)" CR>
<PUTB ,P-LEXV ,P-LEXWORDS ,P-LEN>
<RETURN>)
(<AND <SET VAL
<WT? .WORD
<WT? .WRD
,PS?DIRECTION
,P1?DIRECTION>>
<OR <==? .LEN 1>
@@ -250,7 +250,7 @@ any more.)" CR>
,W?THEN
,W?QUOTE>
<G? .LEN 2>>
<AND <EQUAL? .NW ,W?.>
<AND <EQUAL? .NW ,W?PERIOD>
<G? .LEN 1>>
<AND ,QUOTE-FLAG
<==? .LEN 2>
@@ -265,7 +265,7 @@ any more.)" CR>
<COND (<NOT <G? .LEN 2>>
<SETG QUOTE-FLAG <>>
<RETURN>)>)
(<AND <SET VAL <WT? .WORD ,PS?VERB ,P1?VERB>>
(<AND <SET VAL <WT? .WRD ,PS?VERB ,P1?VERB>>
<OR <NOT .VERB>
<EQUAL? .VERB ,ACT?NAME>>>
<COND (<EQUAL? .VERB ,ACT?NAME>
@@ -273,58 +273,68 @@ any more.)" CR>
<SET VERB .VAL>
<PUT ,P-ITBL ,P-VERB .VAL>
<PUT ,P-ITBL ,P-VERBN ,P-VTBL>
<PUT ,P-VTBL 0 .WORD>
<PUT ,P-VTBL 0 .WRD>
<PUTB ,P-VTBL 2 <GETB ,P-LEXV
<SET NUM
<+ <* .PTR 2> 2>>>>
<PUTB ,P-VTBL 3 <GETB ,P-LEXV <+ .NUM 1>>>)
(<OR <SET VAL <WT? .WORD ,PS?PREPOSITION 0>>
<AND <OR <EQUAL? .WORD ;,W?ALL ,W?ONE ,W?A>
<WT? .WORD ,PS?ADJECTIVE>
<WT? .WORD ,PS?OBJECT>>
<SET VAL 0>>>
<COND (<AND <G? ,P-LEN 0>
(<OR <SET VAL <WT? .WRD ,PS?PREPOSITION 0>>
<AND <OR <EQUAL? .WRD ;,W?ALL ,W?ONE ,W?A>
<WT? .WRD ,PS?ADJECTIVE>
<WT? .WRD ,PS?OBJECT>>
;<SET VAL 0>>>
<COND (<AND <G? ,P-LEN 1 ;0>
<==? <GET ,P-LEXV
<+ .PTR ,P-LEXELEN>>
,W?OF>
<NOT <EQUAL? .VERB
,ACT?MAKE>>
<0? .VAL>
<NOT <EQUAL? .WORD
;,W?ALL ,W?ONE ,W?A>>>)
<NOT <EQUAL? .WRD
;,W?ALL ,W?ONE ,W?A>>>
<SET OF-FLAG T>)
(<AND <NOT <0? .VAL>>
<OR <0? ,P-LEN>
<EQUAL? <GET ,P-LEXV <+ .PTR 2>>
,W?THEN ,W?.>>>
,W?THEN ,W?PERIOD>>>
<COND (<L? ,P-NCN 2>
<PUT ,P-ITBL ,P-PREP1 .VAL>
<PUT ,P-ITBL ,P-PREP1N .WORD>)>)
<PUT ,P-ITBL ,P-PREP1N .WRD>)>)
(<==? ,P-NCN 2>
<TELL
"(I found too many nouns in that sentence!)" CR>
<RFALSE>)
(T
<SETG P-NCN <+ ,P-NCN 1>>
<OR <SET PTR <CLAUSE .PTR .VAL .WORD>>
<OR <SET PTR <CLAUSE .PTR .VAL .WRD>>
<RFALSE>>
<COND (<L? .PTR 0>
<SETG QUOTE-FLAG <>>
<RETURN>)>)>)
(<==? .WORD ,W?CLOSELY>
(<==? .WRD ,W?CLOSELY>
<SETG P-ADVERB ,W?CAREFULLY>)
(<OR <EQUAL? .WORD
(<OR <EQUAL? .WRD
,W?CAREFULLY ,W?QUIETLY ,W?PRIVATELY>
<EQUAL? .WORD
<EQUAL? .WRD
,W?SLOWLY ,W?QUICKLY ,W?BRIEFLY>>
<SETG P-ADVERB .WORD>)
(<WT? .WORD ,PS?BUZZ-WORD>)
<SETG P-ADVERB .WRD>)
(<EQUAL? .WRD ,W?OF>
<COND (<OR <NOT .OF-FLAG>
<EQUAL?
<GET ,P-LEXV <+ .PTR ,P-LEXELEN>>
,W?PERIOD ,W?THEN>>
<CANT-USE .PTR>
<RFALSE>)
(T
<SET OF-FLAG <>>)>)
(<WT? .WRD ,PS?BUZZ-WORD>)
(T
<CANT-USE .PTR>
<RFALSE>)>)
(T
<UNKNOWN-WORD .PTR>
<RFALSE>)>
<SET LW .WORD>
<SET LW .WRD>
<SET PTR <+ .PTR ,P-LEXELEN>>>
<COND (.DIR
<SETG PRSA ,V?WALK>
@@ -354,13 +364,13 @@ any more.)" CR>
<GETB .PTR .OFFSET>)>)>>
" Scan through a noun clause, leave a pointer to its starting location"
<ROUTINE CLAUSE (PTR VAL WORD "AUX" OFF NUM (ANDFLG <>) (FIRST?? T) NW (LW 0))
#DECL ((PTR VAL OFF NUM) FIX (WORD NW) <OR FALSE FIX TABLE>
<ROUTINE CLAUSE (PTR VAL WRD "AUX" OFF NUM (ANDFLG <>) (FIRST?? T) NW (LW 0))
#DECL ((PTR VAL OFF NUM) FIX (WRD NW) <OR FALSE FIX TABLE>
(ANDFLG FIRST??) <OR ATOM FALSE>)
<SET OFF <* <- ,P-NCN 1> 2>>
<COND (<NOT <==? .VAL 0>>
<PUT ,P-ITBL <SET NUM <+ ,P-PREP1 .OFF>> .VAL>
<PUT ,P-ITBL <+ .NUM 1> .WORD>
<PUT ,P-ITBL <+ .NUM 1> .WRD>
<SET PTR <+ .PTR ,P-LEXELEN>>)
(T <SETG P-LEN <+ ,P-LEN 1>>)>
<COND (<0? ,P-LEN> <SETG P-NCN <- ,P-NCN 1>> <RETURN -1>)>
@@ -371,27 +381,27 @@ any more.)" CR>
<COND (<L? <SETG P-LEN <- ,P-LEN 1>> 0>
<PUT ,P-ITBL <+ .NUM 1> <REST ,P-LEXV <* .PTR 2>>>
<RETURN -1>)>
<COND (<BUZZER-WORD? <SET WORD <GET ,P-LEXV .PTR>>>
<COND (<BUZZER-WORD? <SET WRD <GET ,P-LEXV .PTR>>>
<RFALSE>)
(<OR .WORD
<SET WORD <NUMBER? .PTR>>
<SET WORD <NAME? .PTR>>>
(<OR .WRD
<SET WRD <NUMBER? .PTR>>
<SET WRD <NAME? .PTR>>>
<COND (<0? ,P-LEN> <SET NW 0>)
(T <SET NW <GET ,P-LEXV <+ .PTR ,P-LEXELEN>>>)>
<COND (<AND <==? .WORD ,W?OF>
<COND (<AND <==? .WRD ,W?OF>
<EQUAL? <GET ,P-ITBL ,P-VERB> ,ACT?MAKE>>
<PUT ,P-LEXV .PTR ,W?WITH>
<SET WORD ,W?WITH>)>
<COND ;(<AND <EQUAL? .WORD ,W?.>
<SET WRD ,W?WITH>)>
<COND ;(<AND <EQUAL? .WRD ,W?PERIOD>
<EQUAL? .LW ,W?MRS ,W?MR>>
<SET LW 0>)
(<EQUAL? .WORD ,W?AND ,W?COMMA> <SET ANDFLG T>)
(<EQUAL? .WORD ;,W?ALL ,W?ONE>
(<EQUAL? .WRD ,W?AND ,W?COMMA> <SET ANDFLG T>)
(<EQUAL? .WRD ;,W?ALL ,W?ONE>
<COND (<==? .NW ,W?OF>
<SETG P-LEN <- ,P-LEN 1>>
<SET PTR <+ .PTR ,P-LEXELEN>>)>)
(<OR <EQUAL? .WORD ,W?THEN ,W?.>
<AND <WT? .WORD ,PS?PREPOSITION>
(<OR <EQUAL? .WRD ,W?THEN ,W?PERIOD>
<AND <WT? .WRD ,PS?PREPOSITION>
<NOT .FIRST??>>>
<SETG P-LEN <+ ,P-LEN 1>>
<PUT ,P-ITBL
@@ -402,13 +412,13 @@ any more.)" CR>
(<AND .ANDFLG
<OR ;"3/25/83: next statement added."
<EQUAL? <GET ,P-ITBL ,P-VERBN> 0>
<WT? .WORD ,PS?DIRECTION>
<WT? .WORD ,PS?VERB>>>
<WT? .WRD ,PS?DIRECTION>
<WT? .WRD ,PS?VERB>>>
<SET PTR <- .PTR 4>>
<PUT ,P-LEXV <+ .PTR 2> ,W?THEN>
<SETG P-LEN <+ ,P-LEN 2>>)
(<WT? .WORD ,PS?OBJECT>
<COND (<AND <WT? .WORD
(<WT? .WRD ,PS?OBJECT>
<COND (<AND <WT? .WRD
,PS?ADJECTIVE
,P1?ADJECTIVE>
<NOT <==? .NW 0>>
@@ -421,14 +431,14 @@ any more.)" CR>
<REST ,P-LEXV <* <+ .PTR 2> 2>>>
<RETURN .PTR>)
(T <SET ANDFLG <>>)>)
(<OR <WT? .WORD ,PS?ADJECTIVE>
<WT? .WORD ,PS?BUZZ-WORD>>)
(<WT? .WORD ,PS?PREPOSITION> T)
(<OR <WT? .WRD ,PS?ADJECTIVE>
<WT? .WRD ,PS?BUZZ-WORD>>)
(<WT? .WRD ,PS?PREPOSITION> T)
(T
<CANT-USE .PTR>
<RFALSE>)>)
(T <UNKNOWN-WORD .PTR> <RFALSE>)>
<SET LW .WORD>
<SET LW .WRD>
<SET FIRST?? <>>
<SET PTR <+ .PTR ,P-LEXELEN>>>>
@@ -477,8 +487,12 @@ any more.)" CR>
(<==? <GET ,P-OTBL ,P-NC1> 1>
<COND (<OR <==? <SET TEMP <GET ,P-ITBL ,P-PREP1>> <GET ,P-OTBL ,P-PREP1>>
<0? .TEMP>>
<PUT ,P-OTBL ,P-NC1 <GET ,P-ITBL ,P-NC1>>
<PUT ,P-OTBL ,P-NC1L <GET ,P-ITBL ,P-NC1L>>)
<COND (.ADJ
<PUT ,P-OTBL ,P-NC1 <REST ,P-LEXV 2>>
<PUT ,P-OTBL ,P-NC1L <REST ,P-LEXV 6>>)
(T
<PUT ,P-OTBL ,P-NC1 <GET ,P-ITBL ,P-NC1>>
<PUT ,P-OTBL ,P-NC1L <GET ,P-ITBL ,P-NC1L>>)>)
(T <RFALSE>)>)
(<==? <GET ,P-OTBL ,P-NC2> 1>
<COND (<OR <==? <SET TEMP <GET ,P-ITBL ,P-PREP1>> <GET ,P-OTBL ,P-PREP2>>
@@ -520,6 +534,7 @@ any more.)" CR>
T>
<ROUTINE ACLAUSE-WIN (ADJ)
<PUT ,P-ITBL ,P-VERB <GET ,P-OTBL ,P-VERB>>
<SETG P-CCSRC ,P-OTBL>
<CLAUSE-COPY ,P-ACLAUSE <+ ,P-ACLAUSE 1> .ADJ>
<AND <NOT <==? <GET ,P-OTBL ,P-NC2> 0>>
@@ -537,20 +552,18 @@ any more.)" CR>
<PRINTC <GETB ,P-INBUF .BUF>>
<SET BUF <+ .BUF 1>>)>>>
<GLOBAL UNKNOWN-MSGS <TABLE "(I don't know the word \"" "\".)">>
<ROUTINE UNKNOWN-WORD (PTR "AUX" BUF)
#DECL ((PTR BUF) FIX)
<TELL <GET ,UNKNOWN-MSGS 0>>
<TELL "(I don't know the word \"">
<WORD-PRINT <GETB <REST ,P-LEXV <SET BUF <* .PTR 2>>> 2>
<GETB <REST ,P-LEXV .BUF> 3>>
<SETG QUOTE-FLAG <>>
<SETG P-OFLAG <>>
<TELL <GET ,UNKNOWN-MSGS 1> CR>>
<TELL "\".)" CR>>
<ROUTINE CANT-USE (PTR "AUX" BUF)
#DECL ((PTR BUF) FIX)
%<XTELL "(Sorry, but I don't understand the word \"">
<TELL "(Sorry, but I don't understand the word \"">
<WORD-PRINT <GETB <REST ,P-LEXV <SET BUF <* .PTR 2>>> 2>
<GETB <REST ,P-LEXV .BUF> 3>>
<TELL "\" when you use it that way.)" CR>
@@ -635,13 +648,13 @@ CR>
<PUT ,P-PRSI 1 .OBJ>
<SYNTAX-FOUND .DRIVE2>)
(<EQUAL? .VERB ,ACT?FIND ,ACT?NAME>
%<XTELL "(Sorry, but I can't answer that question.)" CR>
<TELL "(Sorry, but I can't answer that question.)" CR>
<RFALSE>)
(T
<COND (<EQUAL? ,WINNER ,PLAYER>
<ORPHAN .DRIVE1 .DRIVE2>
<TELL "(Wh"
<COND (<EQUAL? .VERB ,ACT?WALK ,ACT?CRAWL> "ere")
<COND (<EQUAL? .VERB ,ACT?WALK> "ere")
(T "at")>
" do you want to ">)
(T
@@ -697,7 +710,8 @@ CR>
(T
<COND (.NOSP <SET NOSP <>>)
(T <TELL " ">)>
<COND (<==? <SET WRD <GET .BEG 0>> ,W?.> <SET NOSP T>)
<COND (<==? <SET WRD <GET .BEG 0>> ,W?PERIOD>
<SET NOSP T>)
(<==? .WRD ,W?DR> <TELL "Dr."> <SET PN T>)
(<EQUAL? .WRD ,W?HIM ,W?HER ,W?ME> <SET PN T>)
(<CAPITAL-NOUN? .WRD>
@@ -877,31 +891,31 @@ CR>
<GLOBAL P-CSPTR <>>
<GLOBAL P-CEPTR <>>
<GLOBAL P-AND <>>
<ROUTINE SNARFEM (PTR EPTR TBL "AUX" (AND <>) (BUT <>) LEN WV WORD NW)
#DECL ((TBL) TABLE (PTR EPTR) <PRIMTYPE VECTOR> (AND) <OR ATOM FALSE>
(BUT) <OR FALSE TABLE> (WV) <OR FALSE FIX>)
<ROUTINE SNARFEM (PTR EPTR TBL "AUX" (BUT <>) LEN WV WRD NW)
<SETG P-AND <>>
<SETG P-GETFLAGS 0>
<SETG P-CSPTR .PTR>
<SETG P-CEPTR .EPTR>
<PUT ,P-BUTS ,P-MATCHLEN 0>
<PUT .TBL ,P-MATCHLEN 0>
<SET WORD <GET .PTR 0>>
<SET WRD <GET .PTR 0>>
<REPEAT ()
<COND (<==? .PTR .EPTR> <RETURN <GET-OBJECT <OR .BUT .TBL>>>)
(T
<SET NW <GET .PTR ,P-LEXELEN>>
<COND ;(<==? .WORD ,W?ALL>
<COND ;(<==? .WRD ,W?ALL>
<SETG P-GETFLAGS ,P-ALL>
<COND (<==? .NW ,W?OF>
<SET PTR <REST .PTR ,P-WORDLEN>>)>)
;(<EQUAL? .WORD ,W?BUT ,W?EXCEPT>
;(<EQUAL? .WRD ,W?BUT ,W?EXCEPT>
<OR <GET-OBJECT <OR .BUT .TBL>> <RFALSE>>
<SET BUT ,P-BUTS>
<PUT .BUT ,P-MATCHLEN 0>)
(<BUZZER-WORD? .WORD>
(<BUZZER-WORD? .WRD>
<RFALSE>)
(<EQUAL? .WORD ,W?A ,W?ONE>
(<EQUAL? .WRD ,W?A ,W?ONE>
<COND (<NOT ,P-ADJ>
<SETG P-GETFLAGS ,P-ONE>
<COND (<==? .NW ,W?OF>
@@ -910,25 +924,26 @@ CR>
<SETG P-NAM ,P-ONEOBJ>
<OR <GET-OBJECT <OR .BUT .TBL>> <RFALSE>>
<AND <0? .NW> <RTRUE>>)>)
(<AND <EQUAL? .WORD ,W?AND ,W?COMMA>
(<AND <EQUAL? .WRD ,W?AND ,W?COMMA>
<NOT <EQUAL? .NW ,W?AND ,W?COMMA>>>
<SETG P-AND T>
<OR <GET-OBJECT <OR .BUT .TBL>> <RFALSE>>
T)
(<WT? .WORD ,PS?BUZZ-WORD>)
(<EQUAL? .WORD ,W?AND ,W?COMMA>)
(<==? .WORD ,W?OF>
(<WT? .WRD ,PS?BUZZ-WORD>)
(<EQUAL? .WRD ,W?AND ,W?COMMA>)
(<==? .WRD ,W?OF>
<COND (<0? ,P-GETFLAGS>
<SETG P-GETFLAGS ,P-INHIBIT>)>)
(<AND <SET WV <WT? .WORD ,PS?ADJECTIVE ,P1?ADJECTIVE>>
(<AND <SET WV <WT? .WRD ,PS?ADJECTIVE ,P1?ADJECTIVE>>
<NOT ,P-ADJ>>
<SETG P-ADJ .WV>
<SETG P-ADJN .WORD>)
(<WT? .WORD ,PS?OBJECT ,P1?OBJECT>
<SETG P-NAM .WORD>
<SETG P-ONEOBJ .WORD>)>)>
<SETG P-ADJN .WRD>)
(<WT? .WRD ,PS?OBJECT ,P1?OBJECT>
<SETG P-NAM .WRD>
<SETG P-ONEOBJ .WRD>)>)>
<COND (<NOT <==? .PTR .EPTR>>
<SET PTR <REST .PTR ,P-WORDLEN>>
<SET WORD .NW>)>>>
<SET WRD .NW>)>>>
<CONSTANT SH 128>
@@ -1028,6 +1043,7 @@ CR>
<RFALSE>)>)
(<AND <0? .LEN> .GCHECK>
<COND (.VRB
<SETG P-SLOCBITS .XBITS>
<COND (,LIT
;"Changed 6/10/83 - MARC"
<OBJ-FOUND ,NOT-HERE-OBJECT .TBL>
@@ -1040,7 +1056,7 @@ CR>
<SETG P-ADJ <>>
<SETG P-ADJN <>>
<RTRUE>)
(T %<XTELL "(It's too dark to see!)" CR>)>)>
(T <TELL "(It's too dark to see!)" CR>)>)>
<SETG P-NAM <>>
<SETG P-ADJ <>>
<RFALSE>)
@@ -1088,7 +1104,7 @@ CR>
<ROUTINE WHICH-PRINT (TLEN LEN TBL "AUX" OBJ RLEN)
<SET RLEN .LEN>
<TELL "(Which">
<COND (<OR ,P-OFLAG ,P-MERGED> <TELL " "> <PRINTB ,P-NAM>)
<COND (<OR ,P-OFLAG ,P-MERGED ,P-AND> <TELL " "> <PRINTB ,P-NAM>)
(<==? .TBL ,P-PRSO>
<CLAUSE-PRINT ,P-NC1 ,P-NC1L <>>)
(T <CLAUSE-PRINT ,P-NC2 ,P-NC2L <>>)>
@@ -1123,6 +1139,7 @@ CR>
;<COND (,DEBUG <TELL "[GLBCHK: (PS) RMGL=" N .RMGL "]" CR>)>
<REPEAT ()
<COND (<==? ,P-NAM <GET .RMG <* .CNT 2>>>
<SETG LAST-PSEUDO-LOC ,HERE>
<PUTP ,PSEUDO-OBJECT
,P?ACTION
<GET .RMG <+ <* .CNT 2> 1>>>
@@ -1254,9 +1271,9 @@ CR>
<NOT <BTST <GETB ,P-SYNTAX ,P-SLOC2> ,SMANY>>>
<SET LOSS 2>)>
<COND (.LOSS
%<XTELL "(You can't use more than one ">
<TELL "(You can't use more than one ">
<COND (<==? .LOSS 2> <TELL "in">)>
%<XTELL "direct object with \"">
<TELL "direct object with \"">
<SET TMP <GET ,P-ITBL ,P-VERBN>>
<COND (<0? .TMP> <TELL "tell">)
(,P-OFLAG
@@ -1287,9 +1304,9 @@ CR>
<COND (<FSET? <SET X <GETB .TBL .CNT>> .ITM> <RETURN .X>)
(<IGRTR? CNT .SIZE> <RFALSE>)>>>
<SETG ALWAYS-LIT <>>
"<SETG ALWAYS-LIT <>>"
<ROUTINE LIT? (RM "AUX" OHERE (LIT <>))
;<ROUTINE LIT? (RM "AUX" OHERE (LIT <>))
#DECL ((RM OHERE) OBJECT (LIT) <OR ATOM FALSE>)
<SETG P-GWIMBIT ,ONBIT>
<SET OHERE ,HERE>

99
party-boys.manual Normal file
View File

@@ -0,0 +1,99 @@
The Party Boys Handbook:
Seven twisted, demented tales of survival
1. Frank and Joe Pack Survival Kits
"I'm sure glad Dad's out of town this weekend," Frank said as he swerved
into the garage, and slumped over the steering column.
"So am I," Joe agreed, shaking Frank to rouse him from his intoxicated
state. "Even though we learned alot in the Boy Scouts, you can't beat the
weekend parties that we have."
"How true!" Frank stumbled into the house. "Weekends really tought me
the basic priorities of life: Tequila, peyote and columbian tapdancing
powder."
"A human being can live for three minutes without air, three days without
water and three WEEKS without food. But we can't go three seconds without a
pop or a hit. I call it the 'Rule of Three.'"
Frank winked at his younger brother teasingly. "And it never takes you
more than THREE beers to get tanked!"
Joe grinned sheepishly, then answered, "That's because I never drink beer
unless I've already done three tabs of acid. Three glasses of WATER could
get me tanked when I'm tripping."
"That's amusing." Frank belched out. "Learning how much fun it is to
provide beer mixer to counteract the LSD and keep your reaction complex as
normal as possible."
"Amusing, but exciting too," Joe answered, "to think how swiftly our
minds react when we do LSD AND beer. And to realize that then we can't make
wise decisions for ourselves, that we can become so... so FUCKED UP!"
"Right," Frank replied, "but thanks to last weekend, we now know what the
real priorities of life are and, regardles of circumstances, how to provide
for them." He hesitated. "And how important it is that we carry survival
kits so we can take care of ourselves on Sundays or if BayVille goes dry or
something."
Joe, scratching his butt, nodded in agreement.
"Let's see now -- have we got everything we need to put the survival kits
together?" He faced Frank across the kitchen table. Carefully, they
scrutinized the jumble of illegal substances spread out before them. Some of
the things were from Mom and Dad's liquor cabinet, but the boys had bought
most of the loot that afternoon, from Chet, their connection.
"It sure looks like it," Joe answered. "So let's get busy and start with
the small pocket kits."
Frank grinned at his younger brother. "Why don't you read off what's on
that list in Dr. Hunter S. Thompson's novel, Fear and Loathing in Las Vegas,
and I'll put each item aside, one for you and one for me."
"Okay," said Joe, retreiving the novel from under a floorboard. "The first
thing is a container in which to carry everything."
Frank nodded as he placed two 'Mr. T' lunchboxes at one end of the table.
"Item two, two plastic bags of fine Brazilian shake," Joe read as Frank
measured the portions from a plastic lawn bag filled with two kilos of
marijuana.
"Next, two grams of cocaine -- wait, I don't trust you with that," joe
said.
The boys cut and measured two two-gram portions of coke, which they stowed
with the other articles. Joe picked up the coke and grass and said, "It's
hard to believe that THIS can bring on an adequate high."
"Not if you stretch the word ADEQUATE," Frank responded, winking. "This is
a SURVIVAL kit we're putting together, not a week-long euphoria outfit."
"That's right," Joe laughed. "I'm too wasted to think straight... Okay,
what's next? A metal "Sneak-a-toke" pipe and a nip of Everclear."
"Got 'em," Frank said, and added, "This sneak-a-toke is a great gadget."
He held up the tiny pipe. "No smoke escapes the chambe, so you get WICKED
wasted off just one hit! But when Dr. Thompson reccomended using Everclear to
mix with the pot, he really surprised me."
"Me too," agreed Joe, "but he's right. You want something that'll set you
on fire even when you're high, and no other booze will do that. Hey, are you
sure that our brand is good enough?"
"Yes," Frank quipped, holding up the bottle. Joe read the label aloud: VERY
FINE TRIPLE-X EVERCLEAR ( 190 PROOF ). He watched as Frank uncorked one bottle
and swigged it down.
"Now what?" He asked as Joe consulted the list.
"Lighters," Joe replied.
Frank added two "Side Swipe" pipe lighters to the sneak-a-tokes. "Fun and

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -17,27 +17,16 @@
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
.FUNCT DOOR-ROOM,RM,DR,P=0,TBL
?PRG1: NEXTP RM,P >P
ZERO? P /FALSE
LESS? P,LOW-DIRECTION /FALSE
GETPT RM,P >T
PTSIZE T
GETPT RM,P >TBL
PTSIZE TBL
EQUAL? DEXIT,STACK \?PRG1
GETB T,DEXITOBJ
GETB TBL,DEXITOBJ
EQUAL? DR,STACK \?PRG1
GETB T,REXIT
GETB TBL,REXIT
RETURN STACK
@@ -123,7 +112,7 @@
.FUNCT NORTH-WALL-F,RARG=0
EQUAL? RARG,M-LOOK \FALSE
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "You're in the "
PRINTD NORTH-WALL
PRINTI " of "
@@ -131,6 +120,10 @@
PRINTI ". A "
PRINTD COMPUTESTOR
PRINTR " stands here to help test your inventions."
?ELS5: EQUAL? RARG,M-ENTER \FALSE
CALL VIDEOPHONE-WORKING
ZERO? STACK \TRUE
RFALSE
.FUNCT COMPUTESTOR-F
@@ -141,9 +134,9 @@
PRINTD COMPUTESTOR
PRINTI " is o"
FSET? COMPUTESTOR,ONBIT \?ELS16
PUSH STR?45
PUSH STR?40
JUMP ?CND12
?ELS16: PUSH STR?46
?ELS16: PUSH STR?41
?CND12: PRINT STACK
PRINTR "."
?ELS9: EQUAL? PRSA,V?LAMP-ON \?ELS20
@@ -284,9 +277,15 @@ Possible causes:
PRINTD DESK
PRINTR "."
?ELS5: EQUAL? RARG,M-ENTER \FALSE
CALL VIDEOPHONE-WORKING
ZERO? STACK \TRUE
RFALSE
.FUNCT VIDEOPHONE-WORKING
ZERO? BREAKER-JUST-FIXED /FALSE
FSET? CIRCUIT-BREAKER,OPENBIT /FALSE
SET 'BREAKER-JUST-FIXED,0
SET 'BREAKER-JUST-FIXED,FALSE-VALUE
PRINTI "As you re-enter the lab, "
CALL TIP-SAYS
PRINTI "Look, "
@@ -302,14 +301,21 @@ Possible causes:
.FUNCT DESK-F
CALL COMMON-DESK-F,DESK
RSTACK
.FUNCT COMMON-DESK-F,OBJ
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
EQUAL? PRSO,OBJ \FALSE
PRINTI "An "
PRINTD INTERCOM
PRINTI " is on the desk"
FIRST? OBJ \?CND14
PRINTI ", as well as "
CALL PRINT-CONTENTS,DESK
CALL PRINT-CONTENTS,OBJ
?CND14: PRINTR "."
@@ -338,7 +344,7 @@ Possible causes:
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
CALL TELL-HINT,31,ELECTRICAL-CONTROL-PANEL,FALSE-VALUE
RSTACK
@@ -372,15 +378,15 @@ Possible causes:
.FUNCT CIRCUIT-BREAKER-F,V
EQUAL? PRSA,V?EXAMINE,V?ANALYZE \?ELS5
FSET? PRSO,OPENBIT \?ELS5
CALL TELL-HINT,31,ELECTRICAL-CONTROL-PANEL,0
CALL TELL-HINT,31,ELECTRICAL-CONTROL-PANEL,FALSE-VALUE
RSTACK
?ELS5: EQUAL? PRSA,V?TURN,V?MOVE /?THN10
?ELS5: EQUAL? PRSA,V?LAMP-ON,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
SET 'BREAKER-JUST-FIXED,TRUE-VALUE
FCLEAR PRSO,MUNGBIT
FCLEAR VIDEOPHONE,MUNGBIT
FSET VIDEOPHONE,ONBIT
@@ -388,9 +394,9 @@ Possible causes:
RTRUE
?ELS16: CALL ALREADY,CIRCUIT-BREAKER,STR?17
RSTACK
?ELS9: EQUAL? PRSA,V?OPEN \FALSE
?ELS9: EQUAL? PRSA,V?LAMP-OFF,V?OPEN \FALSE
FSET? PRSO,OPENBIT \?ELS28
CALL ALREADY,CIRCUIT-BREAKER,STR?23
CALL ALREADY,CIRCUIT-BREAKER,STR?21
RSTACK
?ELS28: PRINTR "You shouldn't do that."
@@ -477,8 +483,13 @@ Possible causes:
?CND32: PRINTR " find nothing suspicious, so you decide to leave the papers alone."
.FUNCT KEMP-DESK-F
CALL COMMON-DESK-F,KEMP-DESK
RSTACK
.FUNCT SOUTH-WALL-F,RARG=0
EQUAL? RARG,M-LOOK \FALSE
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "You're in the "
PRINTD SOUTH-WALL
PRINTI " of "
@@ -486,6 +497,10 @@ Possible causes:
PRINTI ", next to shelves full of chemical and electronic supplies. A door leads south to the "
PRINTD TEST-TANK
PRINTR "."
?ELS5: EQUAL? RARG,M-ENTER \FALSE
CALL VIDEOPHONE-WORKING
ZERO? STACK \TRUE
RFALSE
.FUNCT CHEMICAL-SUPPLY-SHELVES-F
@@ -503,12 +518,16 @@ Possible causes:
.FUNCT WEST-WALL-F,RARG=0
EQUAL? RARG,M-LOOK \FALSE
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "You're in the "
PRINTD WEST-WALL
PRINTI " of "
PRINTD YOUR-LABORATORY
PRINTR ", next to a shelf full of mechanical supplies."
?ELS5: EQUAL? RARG,M-ENTER \FALSE
CALL VIDEOPHONE-WORKING
ZERO? STACK \TRUE
RFALSE
.FUNCT MECHANICAL-SUPPLY-SHELVES-F
@@ -532,17 +551,13 @@ Possible causes:
CALL EXIT-VERB?
ZERO? STACK /?ELS5
CALL THIS-IS-IT,MICROPHONE
CALL HE-SHE-IT,WINNER,1
CALL HE-SHE-IT,WINNER,TRUE-VALUE
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 "
CALL HE-SHE-IT,WINNER,FALSE-VALUE,STR?113
PRINTI " holding the "
PRINTD MICROPHONE
PRINTR "!"
?ELS5: EQUAL? RARG,M-LOOK \FALSE
?ELS5: EQUAL? RARG,M-LOOK \?ELS13
PRINTI "You're at your workbench in the center of "
PRINTD YOUR-LABORATORY
PRINTI ", a small part of"
@@ -550,11 +565,15 @@ Possible causes:
PRINTI " in the town of Frobton. The "
PRINTD VIDEOPHONE
PRINTI " screen looms overhead"
ZERO? ALARM-RINGING /?CND27
ZERO? ALARM-RINGING /?CND18
PRINTI ", with its "
PRINTD ALARM
PRINTI " ringing"
?CND27: PRINTR "."
?CND18: PRINTR "."
?ELS13: EQUAL? RARG,M-ENTER \FALSE
CALL VIDEOPHONE-WORKING
ZERO? STACK \TRUE
RFALSE
.FUNCT WORKBENCH-F
@@ -564,25 +583,23 @@ Possible causes:
RFALSE
.FUNCT SUB-PLANS-F,X,STR
.FUNCT SCREENPLAY
PRINTR "Screenplay by Jim Lawrence"
.FUNCT SUB-PLANS-F,X
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
RANDOM 2 >X
EQUAL? X,1 \?CND8
CALL SCREENPLAY
?CND8: PRINTI " Directed by Stu Galley
"
ZERO? X \?CND18
PRINT STR
?CND18: CRLF
EQUAL? X,1 /?CND13
CALL SCREENPLAY
?CND13: CRLF
CALL V-VERSION
RSTACK
@@ -614,7 +631,8 @@ Possible causes:
ZERO? STACK /?ELS26
?THN29: EQUAL? PRSO,MICROPHONE-DOME,MICROPHONE \?ELS26
EQUAL? VIDEOPHONE,REMOTE-PERSON-ON \?ELS26
PRINTI "You'd better say ""Good-bye"""
PRINTI "You'd better say ""Good-bye"" to "
PRINTD REMOTE-PERSON
PRINTR " first."
?ELS26: EQUAL? PRSA,V?SAY-INTO,V?REPLY \?ELS34
FSET? VIDEOPHONE,ONBIT /?ELS34
@@ -635,22 +653,29 @@ Possible causes:
FSET? MICROPHONE-DOME,ONBIT /?THN66
?ELS69: ZERO? DOME? \?CND63
FSET? MICROPHONE,ONBIT \?CND63
?THN66: CALL ALREADY,MICROPHONE,STR?47
?THN66: CALL ALREADY,MICROPHONE,STR?42
RTRUE
?CND63: ZERO? DOME? /?ELS76
CALL OKAY,MICROPHONE-DOME,STR?47
CALL OKAY,MICROPHONE-DOME,STR?42
RSTACK
?ELS76: CALL OKAY,MICROPHONE,STR?47
?ELS76: CALL OKAY,MICROPHONE,STR?42
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 "
?THN6: PRINTI "How can you do that? By telepathy or carrier pigeon? "
IN? SHARON,OFFICE \?CND10
PRINTI "Seriously, 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."
PRINTI ", "
PRINTD SHARON
PRINTI ", is in her office, which is through a doorway to the east. Or, you could summon her by the "
PRINTD INTERCOM
PRINTI " on your desk."
?CND10: CRLF
RTRUE
.FUNCT GANGPLANK-F
@@ -674,9 +699,12 @@ Possible causes:
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 "
PRINTI "You're at a temporary runway or gangplank that leads from the walkway to the "
PRINTD SUB-DOOR
PRINTI " of the "
PRINTD GLOBAL-SUB
CALL DDESC,STR?120,SUB-DOOR,STR?121
PRINTI ". "
CALL CHECK-DOOR,SUB-DOOR
JUMP ?CND6
?ELS8: EQUAL? HERE,WEST-TANK-AREA \?CND6
PRINTI "You're at a "
@@ -701,7 +729,7 @@ Possible causes:
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
.FUNCT FRESH-AIR?,RM,P,L,TBL,O
ZERO? DOME-AIR-BAD? /?CND1
ZERO? SUB-IN-DOME /?CND1
PRINTR "It's impossible to tell that way whether the air is good."
@@ -709,10 +737,10 @@ There's a walkway around the tank on three sides -- north, west and south. On th
?PRG8: NEXTP HERE,P >P
ZERO? P /FALSE
LESS? P,LOW-DIRECTION /?PRG8
GETPT HERE,P >T
PTSIZE T >L
GETPT HERE,P >TBL
PTSIZE TBL >L
EQUAL? L,DEXIT \?PRG8
GETB T,DEXITOBJ >O
GETB TBL,DEXITOBJ >O
FSET? O,OPENBIT \?PRG8
PRINTI "There's a pleasant breeze coming through the "
PRINTD O
@@ -834,51 +862,4 @@ There's a walkway around the tank on three sides -- north, west and south. On th
?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

View File

@@ -4,7 +4,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
"Directions"
<GLOBAL DIR-STRINGS
<TABLE P?NORTH "north" P?SOUTH "south"
<PTABLE P?NORTH "north" P?SOUTH "south"
P?EAST "east" P?WEST "west"
P?NW "northwest" P?NE "northeast"
P?SW "southwest" P?SE "southeast"
@@ -39,34 +39,15 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<ROUTINE NULL-F ("OPTIONAL" A1 A2)
<RFALSE>>
<ROUTINE DDESC (STR1 DOOR STR2)
#DECL ((STR1) <OR STRING ZSTRING> (DOOR) OBJECT
(STR2) <OR FALSE STRING ZSTRING>)
<TELL .STR1>
<COND (<FSET? .DOOR ,OPENBIT> <TELL "open">)
(T <TELL "closed">)>
<TELL .STR2 CR>>
<DEFINE XDDESC ("CALL" F "AUX" (L ,XTELLEN))
<COND (<NOT <GASSIGNED? PREDGEN>>
<MAPR <>
<FUNCTION (FF "AUX" (A <1 .FF>))
<COND (<AND <TYPE? .A STRING ZSTRING>
<NOT <LENGTH? .A .L>>>
<1 .FF <STRING <SUBSTRUC .A 0 <- .L 3>>
"...">>)>>
.F>)>
<1 .F DDESC>>
<ROUTINE DOOR-ROOM (RM DR "AUX" (P 0) T)
<ROUTINE DOOR-ROOM (RM DR "AUX" (P 0) TBL)
#DECL ((RM DR) OBJECT (P) FIX)
<REPEAT ()
<COND (<OR <0? <SET P <NEXTP .RM .P>>>
<L? .P ,LOW-DIRECTION>>
<RFALSE>)
(<AND <==? ,DEXIT <PTSIZE <SET T <GETPT .RM .P>>>>
<==? .DR <GETB .T ,DEXITOBJ>>>
<RETURN <GETB .T ,REXIT>>)>>>
(<AND <==? ,DEXIT <PTSIZE <SET TBL <GETPT .RM .P>>>>
<==? .DR <GETB .TBL ,DEXITOBJ>>>
<RETURN <GETB .TBL ,REXIT>>)>>>
<ROUTINE FIND-FLAG (RM FLAG "OPTIONAL" (EXCLUDED <>) "AUX" (O <FIRST? .RM>))
<REPEAT ()
@@ -148,7 +129,9 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<COND (<==? .RARG ,M-LOOK>
<TELL
"You're in the " D ,NORTH-WALL " of " D ,YOUR-LABORATORY ". A " D
,COMPUTESTOR " stands here to help test your inventions." CR>)>>
,COMPUTESTOR " stands here to help test your inventions." CR>)
(<AND <==? .RARG ,M-ENTER> <VIDEOPHONE-WORKING>>
<RTRUE>)>>
<OBJECT COMPUTESTOR
(IN NORTH-WALL)
@@ -167,13 +150,13 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
"." CR>)
;(<OR <VERB? FIND>
<AND <VERB? SHOW TELL-ABOUT> <DOBJ? PLAYER>>>
%<XTELL
<TELL
"The " D ,COMPUTESTOR " is located in the north part of " D ,YOUR-LABORATORY
". For more information, look in your Logbook." CR>)
(<VERB? LAMP-ON>
<COND (<NOT <FSET? ,COMPUTESTOR ,ONBIT>>
<FSET ,COMPUTESTOR ,ONBIT>
%<XTELL "The " D ,COMPUTESTOR " is ready for questions." CR>)>)
<TELL "The " D ,COMPUTESTOR " is ready for questions." CR>)>)
(<AND <REMOTE-VERB?>
<OR <NOT <VERB? ASK-ABOUT>>
<NOT <DOBJ? COMPUTESTOR>>>>
@@ -181,7 +164,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
(<NOT <FSET? ,COMPUTESTOR ,ONBIT>>
<TELL "The " D ,COMPUTESTOR " is off!" CR>)
;(<VERB? TELL>
%<XTELL
<TELL
"Ask the " D ,COMPUTESTOR " about something specific." CR>)
(<VERB? ASK USE>
<COND (<FSET? ,VIDEOPHONE ,MUNGBIT>
@@ -198,14 +181,14 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<SETG TIP-SAYS-1 32 ;4>
<SETG TIP-SAYS-2 ,VIDEOPHONE>
<ENABLE <QUEUE I-TIP-SAYS 3>>
%<XTELL
<TELL
"\"Symptoms: no picture, no sound.|
Possible causes:|
1) Failure of the " D ,VIDEOPHONE-TRANSMITTER " at source.|
2) A short in the " D ,VIDEOPHONE-CABLE " linking " D ,VIDEOPHONE-TRANSMITTER
" to">
<RESEARCH-LAB>
%<XTELL
<TELL
", if signal is coming from " D ,AQUADOME ".|
3) Sunspot interference or " D ,VIDEOPHONE-SATELLITE " malfunction if "
D ,VIDEOPHONE-TRANSMITTER " is at earth's surface.|
@@ -215,31 +198,31 @@ D ,VIDEOPHONE-TRANSMITTER " is at earth's surface.|
6) Sabotage (" D ,CIRCUIT-BREAKER " open).\"" CR>)
(<AND <IOBJ? VIDEOPHONE-TRANSMITTER>
<FSET? ,VIDEOPHONE ,MUNGBIT>>
%<XTELL
<TELL
"Impossible. It's located " D ,UNDERWATER " at the " D ,AQUADOME ",
beyond your control. Right now you have no communication with the " D
,AQUADOME "." CR>)
(<IOBJ? VIDEOPHONE-CABLE>
%<XTELL "This can be done only by submarine." CR>)
<TELL "This can be done only by submarine." CR>)
(<IOBJ? VIDEOPHONE-SATELLITE>
%<XTELL
<TELL
"You're goofing off, " FN ". Video signals from the " D ,AQUADOME " to">
<RESEARCH-LAB>
%<XTELL
<TELL
" are NOT relayed by a space " D ,VIDEOPHONE-SATELLITE "." CR>)
(<IOBJ? VIDEOPHONE-RECEIVER>
%<XTELL
<TELL
"You can do this by pushing the " D ,TEST-BUTTON " on the " D
,VIDEOPHONE "." CR>)
(<AND <IOBJ? GLOBAL-SUB REACTOR>
<NOT <IN? ,CATALYST-CAPSULE ,REACTOR>>>
%<XTELL
<TELL
"\"Symptom: " D ,ENGINE " won't start.|
Possible causes:|
1) The " D ,CATALYST-CAPSULE " is not inserted in the " D ,REACTOR ".|
2) The " D ,REACTOR " is not turned on.|
3) The " D ,TEST-TANK " is not filled.\"" CR>)
(T %<XTELL
(T <TELL
"\"This device is designed only to troubleshoot operating problems.\"|
(Maybe you can find information about" THE-PRSI " in your SEASTALKER
package.)" CR>)>)>>
@@ -283,13 +266,16 @@ leads out through a " D ,HALLWAY " to the office of your " D
,LAB-ASSISTANT ", " D ,GLOBAL-SHARON ". A " D
,MICROWAVE-SECURITY-SCANNER " stands against the wall. An " D ,INTERCOM " sits
on the " D ,DESK "." CR>)
(<AND <==? .RARG ,M-ENTER>
,BREAKER-JUST-FIXED
(<AND <==? .RARG ,M-ENTER> <VIDEOPHONE-WORKING>>
<RTRUE>)>>
<ROUTINE VIDEOPHONE-WORKING ()
<COND (<AND ,BREAKER-JUST-FIXED
<NOT <FSET? ,CIRCUIT-BREAKER ,OPENBIT>>>
<SETG BREAKER-JUST-FIXED <>>
<TELL "As you re-enter the lab, ">
<TIP-SAYS>
%<XTELL
<TELL
"Look, " FN "! The " D ,VIDEOPHONE
"'s working again! There's a normal test pattern on the screen!\"" CR>)>>
@@ -305,12 +291,12 @@ on the " D ,DESK "." CR>)
<ROUTINE MICROWAVE-SECURITY-SCANNER-F ()
<COND ;(<OR <VERB? FIND>
<AND <VERB? SHOW TELL-ABOUT> <DOBJ? PLAYER>>>
%<XTELL
<TELL
"The " D ,MICROWAVE-SECURITY-SCANNER " is located in the east part of "
D ,YOUR-LABORATORY ".
For more information, look in your Logbook." CR>)
(<VERB? LAMP-ON>
%<XTELL
<TELL
"No beep occurs. Scanner displays: \"NO INTRUDER PRESENT ON GROUNDS.\"" CR>)>>
<OBJECT DESK
@@ -323,13 +309,15 @@ For more information, look in your Logbook." CR>)
(GENERIC GENERIC-DESK-F)
(ACTION DESK-F)>
<ROUTINE DESK-F ()
<COND (<VERB? OPEN> %<XTELL "It has no drawers." CR>)
(<AND <VERB? EXAMINE LOOK-INSIDE LOOK-ON> <DOBJ? DESK>>
%<XTELL "An intercom is on the desk">
<COND (<FIRST? ,DESK>
%<XTELL ", as well as ">
<PRINT-CONTENTS ,DESK>)>
<ROUTINE DESK-F () <COMMON-DESK-F ,DESK>>
<ROUTINE COMMON-DESK-F (OBJ)
<COND (<VERB? OPEN> <TELL "It has no drawers." CR>)
(<AND <VERB? EXAMINE LOOK-INSIDE LOOK-ON> <EQUAL? ,PRSO .OBJ>>
<TELL "An " D ,INTERCOM " is on the desk">
<COND (<FIRST? .OBJ>
<TELL ", as well as ">
<PRINT-CONTENTS .OBJ>)>
<TELL "." CR>)>>
<ROUTINE GENERIC-DESK-F (OBJ)
@@ -381,7 +369,7 @@ D ,ELECTRICAL-CONTROL-PANEL " fills most of the north wall." CR>)
<ROUTINE ELECTRICAL-CONTROL-PANEL-F ()
<COND (<AND <VERB? ANALYZE EXAMINE> <FSET? ,CIRCUIT-BREAKER ,OPENBIT>>
<THIS-IS-IT ,CIRCUIT-BREAKER>
%<XTELL
<TELL
"A " D ,CIRCUIT-BREAKER ;" has popped open" " on the " D
,ELECTRICAL-CONTROL-PANEL " is open. This " D ,CIRCUIT-BREAKER" controls the "
D ,POWER-SUPPLY " to the " D ,VIDEOPHONE " and other equipment in the
@@ -392,17 +380,17 @@ private " D ,VIDEOPHONE " network." CR>
"How did that happen? You didn't overload the circuit.\"" CR>)>
<RTRUE>)
(<VERB? OPEN>
%<XTELL
<TELL
"You don't need to open the " D ,ELECTRICAL-CONTROL-PANEL "." CR>)>>
<GLOBAL BREAKER-JUST-FIXED <>>
<OBJECT CIRCUIT-BREAKER
(IN HALLWAY)
(ADJECTIVE THIS CIRCUIT)
(ADJECTIVE THIS CIRCUIT OPEN)
(SYNONYM BREAKER CIRCUIT SWITCH)
(DESC "circuit breaker")
(FDESC
"A circuit breaker is open on the Electrical Panel." ;" Power")
;(FDESC
"A circuit breaker is open on the Electrical Panel.")
(FLAGS CONTBIT NDESCBIT TOUCHBIT)
(CAPACITY 0)
(TEXT "(You'll find that information in your SEASTALKER package.)")
@@ -412,7 +400,7 @@ private " D ,VIDEOPHONE " network." CR>
<ROUTINE CIRCUIT-BREAKER-F ("AUX" V)
<COND (<AND <VERB? ANALYZE EXAMINE> <FSET? ,PRSO ,OPENBIT>>
<TELL-HINT 31 ,ELECTRICAL-CONTROL-PANEL <>>)
(<VERB? CLOSE PUSH FIX MOVE TURN>
(<VERB? CLOSE PUSH FIX MOVE TURN LAMP-ON>
<COND (<FSET? ,PRSO ,OPENBIT>
<FSET ,PRSO ,NDESCBIT>
<OKAY ,CIRCUIT-BREAKER "closed">
@@ -424,7 +412,7 @@ private " D ,VIDEOPHONE " network." CR>
<SCORE-OBJ ,CIRCUIT-BREAKER>)>
<RTRUE>)
(T <ALREADY ,CIRCUIT-BREAKER "closed">)>)
(<VERB? OPEN>
(<VERB? OPEN LAMP-OFF>
<COND (<FSET? ,PRSO ,OPENBIT> <ALREADY ,CIRCUIT-BREAKER "open">)
(T
<TELL "You shouldn't do that." CR>)>)>>
@@ -493,7 +481,7 @@ out to the parking lot. To the west, a " D ,HALLWAY " leads back to " D
<COND (<IN? ,SHARON ,OFFICE>
<THIS-IS-IT ,SHARON>
<THIS-IS-IT ,FILE-DRAWER>
%<XTELL
<TELL
"As you enter, Sharon is hastily going through the contents of an open
" D ,FILE-DRAWER ". She turns with a startled expression as you
appear in the doorway. Her face is flushed and her manner seems
@@ -513,7 +501,7 @@ slightly emotional." CR>)>)>>
<OBJECT FILE-DRAWER
(IN OFFICE)
(ADJECTIVE FILE PERSONNEL SHARON KEMP\'S)
(ADJECTIVE FILE SHARON KEMP\'S)
(SYNONYM DRAWER FILE FILES CABINET)
(DESC "file drawer")
(FLAGS CONTBIT SEARCHBIT OPENBIT NDESCBIT)
@@ -532,13 +520,12 @@ slightly emotional." CR>)>)>>
<ROUTINE PAPERS-F ("AUX" X)
<COND (<AND <VERB? LOOK-UP> <IOBJ? FILE-DRAWER PAPERS>>
<COND (<FSET? ,PRSO ,PERSON>
%<XTELL <GETP ,LOCAL-SUB ,P?TEXT>
;"(You'll find that information in your SEASTALKER package.)" CR>)
(T %<XTELL
<TELL <GETP ,LOCAL-SUB ,P?TEXT> CR>)
(T <TELL
"There's no information in the drawer about that.">)>
<CRLF>)
(<AND <VERB? CLOSE> <IN? ,SHARON ,OFFICE>>
%<XTELL
<TELL
"Sharon stops you from closing it. \"Hey, " FN "! I can't do my job here
if you interfere!\"" CR>)
(<VERB? ;BURN EXAMINE LOOK-INSIDE READ TAKE SEARCH SEARCH-FOR>
@@ -546,11 +533,11 @@ if you interfere!\"" CR>)
<TOO-BAD-BUT ,FILE-DRAWER "closed">
<RTRUE>)>
<FSET ,PAPERS ,TOUCHBIT>
%<XTELL "You look ">
<TELL "You look ">
<COND (<==? ,P-ADVERB ,W?CAREFULLY>
%<XTELL "more thoroughly through the drawer and still">)
(T %<XTELL "quickly through the drawer but">)>
%<XTELL
<TELL "more thoroughly through the drawer and still">)
(T <TELL "quickly through the drawer but">)>
<TELL
" find nothing suspicious, so you decide to leave the papers alone." CR>)>>
<OBJECT KEMP-DESK
@@ -561,7 +548,10 @@ if you interfere!\"" CR>)
(FLAGS CONTBIT SEARCHBIT SURFACEBIT OPENBIT NDESCBIT NARTICLEBIT)
(CAPACITY 33)
(GENERIC GENERIC-DESK-F)
(ACTION DESK-F)>
(ACTION KEMP-DESK-F)>
<ROUTINE KEMP-DESK-F () <COMMON-DESK-F ,KEMP-DESK>>
]
<ROOM LIMBO
(IN ROOMS)
@@ -593,7 +583,9 @@ if you interfere!\"" CR>)
<TELL
"You're in the " D ,SOUTH-WALL " of " D ,YOUR-LABORATORY ", next to
shelves full of chemical and electronic supplies. A door leads south to
the " D ,TEST-TANK "." CR>)>>
the " D ,TEST-TANK "." CR>)
(<AND <==? .RARG ,M-ENTER> <VIDEOPHONE-WORKING>>
<RTRUE>)>>
<OBJECT CHEMICAL-SUPPLY-SHELVES
(IN SOUTH-WALL)
@@ -656,7 +648,9 @@ the " D ,TEST-TANK "." CR>)>>
<COND (<==? .RARG ,M-LOOK>
<TELL
"You're in the " D ,WEST-WALL " of " D ,YOUR-LABORATORY ", next to a
shelf full of mechanical supplies." CR>)>>
shelf full of mechanical supplies." CR>)
(<AND <==? .RARG ,M-ENTER> <VIDEOPHONE-WORKING>>
<RTRUE>)>>
<OBJECT MECHANICAL-SUPPLY-SHELVES
(IN WEST-WALL)
@@ -678,15 +672,6 @@ shelf full of mechanical supplies." CR>)>>
(SYNONYM BUNCH MECHANICAL SUPPLY SUPPLIES)
(DESC "bunch of mechanical supplies")
(FLAGS NDESCBIT)>
"<OBJECT TOOLS
(IN WEST-WALL)
(ADJECTIVE MACHIN OTHER)
(SYNONYM TOOL TOOLS DEVICE BUNCH)
(DESC 'bunch of machine tools and other devices')
(TEXT
'The machine tools and other devices are used by you in constructing
pilot models of your inventions.')>"
][
<ROOM CENTER-OF-LAB
(IN ROOMS)
@@ -714,20 +699,20 @@ pilot models of your inventions.')>"
<EXIT-VERB?>>
<THIS-IS-IT ,MICROPHONE>
<HE-SHE-IT ,WINNER T>
%<XTELL " can't walk away while ">
<HE-SHE-IT ,WINNER>
<COND (<IN? ,MICROPHONE ,PLAYER> <TELL "'re">)
(T <TELL "'s">)>
<TELL " can't walk away while ">
<HE-SHE-IT ,WINNER <> "is">
<TELL " holding the " D ,MICROPHONE "!" CR> ;"[YOU-CANT?]")
(<==? .RARG ,M-LOOK>
%<XTELL
<TELL
"You're at your workbench in the center of " D ,YOUR-LABORATORY ",
a small part of">
<RESEARCH-LAB>
<TELL
" in the town of Frobton. The " D ,VIDEOPHONE " screen looms overhead">
<COND (,ALARM-RINGING <TELL ", with its " D ,ALARM " ringing">)>
<TELL "." CR>)>>
<TELL "." CR>)
(<AND <==? .RARG ,M-ENTER> <VIDEOPHONE-WORKING>>
<RTRUE>)>>
<OBJECT WORKBENCH
(IN CENTER-OF-LAB)
@@ -752,19 +737,19 @@ a small part of">
(FLAGS NDESCBIT)
(ACTION SUB-PLANS-F)>
<ROUTINE SUB-PLANS-F ("AUX" X STR)
<ROUTINE SCREENPLAY () <TELL "Screenplay by Jim Lawrence" CR>>
<ROUTINE SUB-PLANS-F ("AUX" X)
<COND (<VERB? ANALYZE EXAMINE READ>
<SET X <G? 50 <RANDOM 100>> ;<PROB 50>>
<SET STR "Screenplay by Jim Lawrence|
">
%<XTELL
<TELL
"Written in one corner is the legend:|
|
">
<COND (.X <TELL .STR>)>
<SET X <RANDOM 2>>
<COND (<1? .X> <SCREENPLAY>)>
<TELL " Directed by Stu Galley|
">
<COND (<NOT .X> <TELL .STR>)>
<COND (<NOT <1? .X>> <SCREENPLAY>)>
<CRLF>
<V-VERSION>)>>
@@ -785,7 +770,7 @@ a small part of">
<ROUTINE MICROPHONE-F ("OPTIONAL" (DOME? <>))
<COND (<VERB? EXAMINE>
%<XTELL
<TELL
"The " D ,MICROPHONE " is connected to the " D ,VIDEOPHONE " by a coiled
cord. At the moment, it is turned o">
<COND (<OR <AND .DOME? <FSET? ,MICROPHONE-DOME ,ONBIT>>
@@ -797,18 +782,18 @@ cord. At the moment, it is turned o">
<DIVESTMENT? ,MICROPHONE-DOME>>
<DOBJ? MICROPHONE MICROPHONE-DOME>
<EQUAL? ,VIDEOPHONE ,REMOTE-PERSON-ON>>
%<XTELL
"You'd better say \"Good-bye\"" ;" to D ,REMOTE-PERSON" " first." CR>)
<TELL
"You'd better say \"Good-bye\" to " D ,REMOTE-PERSON " first." CR>)
(<AND <VERB? REPLY SAY-INTO> <NOT <FSET? ,VIDEOPHONE ,ONBIT>>>
%<XTELL
<TELL
"That won't do any good while the " D ,VIDEOPHONE " is off." CR>)
(<VERB? SAY-INTO>
<COND (<EQUAL? ,REMOTE-PERSON-ON ,VIDEOPHONE>
%<XTELL D ,REMOTE-PERSON " nods at you." CR>)
<TELL D ,REMOTE-PERSON " nods at you." CR>)
(,WOMAN-ON-SCREEN
%<XTELL
<TELL
"That won't do any good while the sound is fuzzy." CR>)
(T %<XTELL "It's not clear whom you're talking to." CR>)>)
(T <TELL "It's not clear whom you're talking to." CR>)>)
(<AND <VERB? LAMP-ON>
<OR <IN? ,MICROPHONE ,PLAYER> <IN? ,MICROPHONE-DOME ,PLAYER>>>
<COND (<OR <AND .DOME? <FSET? ,MICROPHONE-DOME ,ONBIT>>
@@ -827,13 +812,14 @@ cord. At the moment, it is turned o">
<ROUTINE TECHNICIAN-F ()
<COND (<VERB? FIND PHONE TAKE $CALL>
%<XTELL
"How can you do that? By telepathy or carrier pigeon?
Seriously, "
;"the telephone is on your desk to the east. "
"your " D ,LAB-ASSISTANT
", 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." CR>)>>
<TELL
"How can you do that? By telepathy or carrier pigeon? ">
<COND (<IN? ,SHARON ,OFFICE>
<TELL
"Seriously, your " D ,LAB-ASSISTANT ", " D ,SHARON ", is in her office,
which is through a doorway to the east. Or, you could summon her by the
" D ,INTERCOM " on your desk.">)>
<CRLF>)>>
]
<OBJECT SOUTH-DOORWAY
(ADJECTIVE SOUTH SLIDING)
@@ -955,18 +941,18 @@ the east. Or, you could summon her by the intercom on your desk." CR>)>>
<FSET ,WEST-TANK-AREA ,TOUCHBIT>
<FSET ,SOUTH-TANK-AREA ,TOUCHBIT>
<COND (<EQUAL? ,HERE ,NORTH-TANK-AREA>
%<XTELL
<TELL
"You're at a temporary runway or gangplank that leads from the walkway
to the entry hatch of the " D ,GLOBAL-SUB>
<DDESC ". The hatch is " ,SUB-DOOR ".|">)
to the " D ,SUB-DOOR " of the " D ,GLOBAL-SUB ". ">
<CHECK-DOOR ,SUB-DOOR>)
(<EQUAL? ,HERE ,WEST-TANK-AREA>
%<XTELL
<TELL
"You're at a " D ,WORK-COUNTER ", next to the " D ,TANK-CONTROL-GEAR-1
" used to operate the " D ,TEST-TANK ".|">)>
%<XTELL "The test tank (which is now ">
<TELL "The test tank (which is now ">
<COND (,TEST-TANK-FULL <TELL "filled with ">)
(T <TELL "empty of ">)>
%<XTELL
<TELL
D ,GLOBAL-WATER ") is located in a large work room, just south of "
D ,YOUR-LABORATORY ", with
concrete-block walls on three sides and a high metal roof. Most of
@@ -979,10 +965,10 @@ a steel gate forms the wall of the room." CR>)>>
"Other stuff"
<ROUTINE FRESH-AIR? (RM "AUX" P L T O)
<ROUTINE FRESH-AIR? (RM "AUX" P L TBL O)
#DECL ((RM O) OBJECT (P L) FIX)
<COND (<AND ,DOME-AIR-BAD? ,SUB-IN-DOME ;<IN-DOME? .RM>>
%<XTELL
<TELL
"It's impossible to tell that way whether the air is good." CR>
<RTRUE>)>
<SET P 0>
@@ -990,47 +976,47 @@ a steel gate forms the wall of the room." CR>)>>
<COND (<0? <SET P <NEXTP ,HERE .P>>>
<RFALSE>)
(<NOT <L? .P ,LOW-DIRECTION>>
<SET T <GETPT ,HERE .P>>
<SET L <PTSIZE .T>>
<SET TBL <GETPT ,HERE .P>>
<SET L <PTSIZE .TBL>>
<COND (<AND <EQUAL? .L ,DEXIT> ;"Door EXIT"
<FSET? <SET O <GETB .T ,DEXITOBJ>>
<FSET? <SET O <GETB .TBL ,DEXITOBJ>>
,OPENBIT>>
%<XTELL
<TELL
"There's a pleasant breeze coming through the " D .O "." CR>
<RETURN>)>)>>>
"unused corridor: COR-40000"
[
<GLOBAL COR-20000
<TABLE P?NORTH P?SOUTH OUTSIDE-COMM-BLDG OUTSIDE-ADMIN-BLDG 0>>
<PTABLE P?NORTH P?SOUTH OUTSIDE-COMM-BLDG OUTSIDE-ADMIN-BLDG 0>>
<GLOBAL COR-10000
<TABLE P?WEST P?EAST OUTSIDE-WORKSHOP OUTSIDE-COMM-BLDG 0>>
<PTABLE P?WEST P?EAST OUTSIDE-WORKSHOP OUTSIDE-COMM-BLDG 0>>
<GLOBAL COR-4000
<TABLE P?NORTH P?SOUTH OUTSIDE-WORKSHOP OUTSIDE-DORM 0>>
<PTABLE P?NORTH P?SOUTH OUTSIDE-WORKSHOP OUTSIDE-DORM 0>>
<GLOBAL COR-2000
<TABLE P?WEST P?EAST OUTSIDE-DORM FOOT-OF-RAMP OUTSIDE-ADMIN-BLDG 0>>
<PTABLE P?WEST P?EAST OUTSIDE-DORM FOOT-OF-RAMP OUTSIDE-ADMIN-BLDG 0>>
<GLOBAL COR-1000
<TABLE P?NORTH P?SOUTH CENTER-OF-DOME FOOT-OF-RAMP AIRLOCK-WALL 0>>
<PTABLE P?NORTH P?SOUTH CENTER-OF-DOME FOOT-OF-RAMP AIRLOCK-WALL 0>>
<GLOBAL COR-400
<TABLE P?NE P?SW OUTSIDE-COMM-BLDG CENTER-OF-DOME OUTSIDE-DORM 0>>
<PTABLE P?NE P?SW OUTSIDE-COMM-BLDG CENTER-OF-DOME OUTSIDE-DORM 0>>
<GLOBAL COR-200
<TABLE P?NW P?SE
<PTABLE P?NW P?SE
OUTSIDE-WORKSHOP CENTER-OF-DOME OUTSIDE-ADMIN-BLDG 0>>
<GLOBAL COR-64
<TABLE P?NORTH P?SOUTH
<PTABLE P?NORTH P?SOUTH
NORTH-TANK-AREA WEST-TANK-AREA SOUTH-TANK-AREA 0>>
<GLOBAL COR-32
<TABLE P?NORTH P?SOUTH NORTH-WALL WEST-WALL 0>>
<PTABLE P?NORTH P?SOUTH NORTH-WALL WEST-WALL 0>>
<GLOBAL COR-16
<TABLE P?NORTH P?SOUTH WEST-WALL SOUTH-WALL 0>>
<PTABLE P?NORTH P?SOUTH WEST-WALL SOUTH-WALL 0>>
<GLOBAL COR-8
<TABLE P?WEST P?EAST WEST-WALL CENTER-OF-LAB EAST-WALL 0>>
<PTABLE P?WEST P?EAST WEST-WALL CENTER-OF-LAB EAST-WALL 0>>
<GLOBAL COR-4
<TABLE P?NORTH P?SOUTH NORTH-WALL CENTER-OF-LAB SOUTH-WALL 0>>
<PTABLE P?NORTH P?SOUTH NORTH-WALL CENTER-OF-LAB SOUTH-WALL 0>>
<GLOBAL COR-2
<TABLE P?NORTH P?SOUTH NORTH-WALL EAST-WALL 0>>
<PTABLE P?NORTH P?SOUTH NORTH-WALL EAST-WALL 0>>
<GLOBAL COR-1
<TABLE P?NORTH P?SOUTH EAST-WALL SOUTH-WALL 0>>
<PTABLE P?NORTH P?SOUTH EAST-WALL SOUTH-WALL 0>>
]
"Routines to do looking down corridors"
@@ -1096,7 +1082,7 @@ a steel gate forms the wall of the room." CR>)>>
<COND (.FOUND <RETURN .FOUND>)>)>
<SET CNT <+ .CNT 1>>>>
<ROUTINE COR-DIR (HERE THERE "AUX" COR RM (PAST 0) (CNT 2))
;<ROUTINE COR-DIR (HERE THERE "AUX" COR RM (PAST 0) (CNT 2))
<SET COR <GET-COR <BAND <GETP .THERE ,P?CORRIDOR>
<GETP .HERE ,P?CORRIDOR>>>>
<REPEAT ()
@@ -1108,7 +1094,7 @@ a steel gate forms the wall of the room." CR>)>>
<SET CNT <+ .CNT 1>>>
<GET .COR .PAST>>
<ROUTINE GET-COR (NUM)
;<ROUTINE GET-COR (NUM)
#DECL ((NUM) FIX)
<COND (<==? .NUM 1> ,COR-1)
(<==? .NUM 2> ,COR-2)

64
points.mss Normal file
View File

@@ -0,0 +1,64 @@
@style (spacing 1)
@title (Points in "Seastalker")
@pageheading (DRAFT)
@majorheading (POINTS IN "SEASTALKER")
Copyright (C) 1984 Infocom, Inc. All rights reserved.
@begin (description)
1@\TURN ON VIDEOSCOPE
1@\TUNE VIDEOSCOPE
1@\TAKE MICROPHONE
-3@\[open circuit breaker]
3@\CLOSE CIRCUIT BREAKER
5@\TAKE CATALYST CAPSULE
1@\ENTER SUBMARINE
5@\TURN ON REACTOR
5@\TURN ON ENGINE
5@\enter bay
5@\enter ocean
5@\TURN ON AUTOPILOT
5@\enter Aquadome
5@\OPEN AIR SUPPLY
5@\SCREW IN RELAY
5@\install Escape Unit
5@\ARREST GREENUP
5@\CAPTURE GREENUP
5@\FIX DART
5@\INSTALL DART
5@\TAKE BAZOOKA
5@\INSTALL BAZOOKA
1@\leave Aquadome
5@\find Snark
5@\AIM BAZOOKA AT SEACAT
5@\FIRE BAZOOKA
-----
100@\TOTAL
@end (description)

205
sample.mss Normal file
View File

@@ -0,0 +1,205 @@
@style (spacing 1)
@title [SAMPLE TRANSCRIPT]
@center (SAMPLE YOUNG-ADVENTURE TRANSCRIPT)
@center (Comments to Stu Galley)
This transcript is not from SEASTALKER, but it shows most of
the usual things that you can do while playing. It shows
several simple puzzles and their solutions, and it should give
you a good idea of how an interactive text adventure story works.
(The comments inside brackets [] are not real parts of the transcript.
They just explain what's going on.)
@begin (example)
You are lying on your bed, trying to do your homework and listen to the
radio at the same time. Suddenly your telephone rings!
>ANSWER THE PHONE
You pick up the receiver, but you can't hear who's calling because the
radio is too loud.
>TURN OFF THE RADIO
That's better! Now you can tell that it's your mother, calling
from her office.
>MOTHER, WHAT'S HAPPENING?
"Someone just asked me to go meet a visitor at the airport. Could you
please drive here to pick me up?"
>MOTHER, RIDE THE BUS
"That wouldn't get me there on time."
>BORROW A CAR
You can't see any car here.
[It can make a big difference if the program thinks you're not talking
to someone.]
>MOTHER, BORROW A CAR
"I tried that, but I just can't find one. Won't you please do this favor
for me?" (Answer yes or no:) >YES
"Thank you, dear. I'll do a favor for you, soon. Goodbye!"
>MOTHER, GOODBYE
If it isn't one thing, it's another -- as soon as you hang up the phone,
the doorbell rings!
>GO TO THE FRON
(I don't know the word "fron".)
>GO TO THE FRONT
(I assume you mean the front door.)
It's in the front hall. Now you're there too.
(front hall)
The front hall is bare, except for a coat rack and two doors. A door
into the living room is on the east side, and the front door is on the
south.
>OPEN IT
When you open the front door, your friend Pat steps in and says, "Hi!
What's up?"
>MY MOTHER NEEDS A RIDE
(I don't know the word "needs".)
[And that command doesn't begin with a verb or a question word.]
>COME WITH ME TO MY MOTHER'S OFFICE
(Sorry, but English is not my native language. Please re-word that or
try something else.)
[The command looks okay, but the program doesn't recognize that form.]
>COME WITH ME
"Okay, let's go!"
>FIND THE CAR
It's usually parked in the garage.
>GO TO THE GARAGE
Pat goes with you.
(garage)
The garage is just big enough for one car, two bikes, and a bunch of
garden tools. There is a car-sized door on the east wall and a
people-sized door on the west.
The family car, a snazzy convertible, is parked here.
>GET IN
(What do you want to get in?)
>CAR
Pat goes with you.
(car)
You are now sitting in the driver's seat of the convertible, and Pat is
sitting beside you.
>START THE CAR
"Hey," says Pat, "why won't it start? Did you put the key in?"
>FIND THE KEY
You should know where it is -- it's your house!
>PAT, WAIT HERE
"Okay." Pat settles into the seat and gets comfortable.
>GO WEST
You can't go that way while you're in the car.
>GET OUT
(out of the car)
(garage)
The family car, a snazzy convertible, is parked here.
>GO WEST
[If you're looking for something, you should probably go one room at a time.]
(kitchen)
The kitchen looks a lot like most kitchens: a stove, a sink, a fridge,
shelves, and so on. The last of this morning's coffee is in a pot on the
stove, and the faucet is dripping a little.
>DRINK THE COFFEE THEN FIX THE FAUCET
You don't have time for that.
You don't have time for that.
[Sometimes the computer will seem to act foolish or repeat things. After all,
it's only a machine!]
>LOOK AT THE SHELVES
The shelves hold cookbooks, spices, knick-knacks, a cookie jar, and so on.
>LOOK IN COOKIE JAR
It's full of cookies!
>TAKE A COOKIE AND A SPICE
cookie: Taken.
spice: Don't be silly!
>FIND THE KEY
It's right here, on the shelf.
>LOOK AT THE SHELVES
The shelves hold cookbooks, spices, knick-knacks, a cookie jar, and so on.
A car key is also visible on the shelf.
[Sometimes you have to try hard to find something in a crowded place.]
>TAKE KEY. WEST. PUT IT IN THE LOCK
Taken.
You can't go that way.
[If one of your commands doesn't work, the program ignores the rest of
your input line.]
>E
(garage)
The family car, a snazzy convertible, is parked here.
>IN
(car)
You are now sitting in the driver's seat of the convertible, and Pat is
sitting beside you.
>INVENTORY
You are holding:
a car key
a cookie
>PUT KEY IN LOCK
Done.
>GIVE THE COOKIE TO PAT
"Hey, thanks!"
>I
You are empty-handed.
[The short word for INVENTORY is I.]
>START THE CAR
Vr-r-r-roooooom!
>BACK OUT
(I don't understand the word "back" when you use it that way.)
[The program recognizes the word "back" but not as a verb.]
>GO EAST
Oops! You ran into the closed garage door. It's a good thing you
weren't driving very fast!
>GET OUT
(out of the car)
(garage)
The family car, a snazzy convertible, is parked here.
>OPEN DOOR
(Which door do you mean, the car door, the car-sized door, or the
people-sized door?)
>CAR-SI
Okay, it's now wide open.
[If you want to count letters, you can always stop at six.]
>IN
(car)
You are now sitting in the driver's seat of the convertible, and Pat is
sitting beside you.
>E
As the car backs out of the garage, we come to the end of this sample.
Have a good trip!
@end (example)

137
screens.zil Normal file
View File

@@ -0,0 +1,137 @@
"The SPLIT & SCREEN operations allow you to divide the screen into two
parts: one that behaves as usual and another that you update without
scrolling.
<SPLIT INT>
divides the screen into two windows: #1 occupies INT lines, preferably
at the top of the screen, and #0 occupies the remainder of the screen.
<SPLIT 0>
restores the normal screen format.
<SCREEN INT>
causes subsequent screen output to fall into window #INT.
If INT is 1, the output cursor is moved to the upper left-hand corner;
if INT is 0, the output cursor is restored to its previous position.
You should be careful not to let window #1 scroll; output will be
unpredictable.
Only the more popular micro-computers support these operations.
To check whether the program is running on one, use this:"
<ROUTINE SPLIT-SCREEN? () <NOT <EQUAL? 0 <BAND 32 <GETB 0 1>>>>>
"Here's a fragment from Seastalker that splits the screen:"
<COND (<AND ,AUTOMATIC-SONAR ;"Did player SET SCOPE TO AUTO ?"
<SPLIT-SCREEN?>>
<SETG SCREEN-NOW-SPLIT T>
<START-SONAR?>)>
<TELL "The submarine glides smoothly out of the tank ...">
"And here are the routines that support it:"
<ROUTINE START-SONAR? ()
<COND (,SCREEN-NOW-SPLIT
<SPLIT <+ 3 <* 2 ,SONAR-RANGE>>>
<SETG SONAR-DIR 0> ;"to ensure update"
<I-SHOW-SONAR> ;"to update immediately"
<ENABLE <QUEUE I-SHOW-SONAR -1>>)>>
<ROUTINE I-SHOW-SONAR ()
<COND (<AND <FSET? ,SNARK ,INVISIBLE>
<FSET? ,FREIGHTER ,INVISIBLE>
<==? ,SONAR-LON ,SUB-LON>
<==? ,SONAR-LAT ,SUB-LAT>
<==? ,SONAR-DEP ,SUB-DEPTH>
<==? ,SONAR-DIR ,JOYSTICK-DIR>>
<COND (,DEBUG <TELL "[no sonar update]" CR>)>
<RFALSE>)
(T
<SCREEN 1>
<SHOW-SONARSCOPE>
<SCREEN 0>
<SETG SONAR-LON ,SUB-LON>
<SETG SONAR-LAT ,SUB-LAT>
<SETG SONAR-DEP ,SUB-DEPTH>
<SETG SONAR-DIR ,JOYSTICK-DIR>
<RFALSE>)>>
"In Seastalker, nothing happens unless the player 'turns on' the scope:"
<ROUTINE SONARSCOPE-F ("AUX" DEP N)
<COND (<REMOTE-VERB?> <RFALSE>)
(<VERB? LAMP-ON>
<COND (<SPLIT-SCREEN?>
<FSET ,SONARSCOPE ,ONBIT>
<PERFORM ,V?SET ,SONARSCOPE ,AUTOMATIC>
<RTRUE>)>)
(<NOT <FSET? ,SONARSCOPE ,ONBIT>>
<THIS-IS-IT ,SONARSCOPE>
<TELL "It's not turned on!" CR>
<RTRUE>)
(<VERB? LAMP-OFF>
<COND (,AUTOMATIC-SONAR
<PERFORM ,V?SET ,SONARSCOPE ,MANUAL>
<SETG AUTOMATIC-SONAR <>>
<RTRUE>)>)
(<VERB? ANALYZE EXAMINE READ LOOK-INSIDE LOOK-ON>
<FIXED-FONT-ON>
<TELL "(+=you, .=open water, *=obstacle)" CR>
<SET N <* 2 ,SONAR-RANGE>>
<REPEAT ()
<TELL "--">
<COND (<DLESS? N 0> <CRLF> <RETURN>)>>
<COND (,SCREEN-NOW-SPLIT
<FIXED-FONT-OFF>
<ALREADY ,PLAYER "looking at it">)
(T <SHOW-SONARSCOPE>)>
<RTRUE>)
(<AND <VERB? SET PUT MOVE-DIR> <DOBJ? SONARSCOPE>>
<COND (<IOBJ? AUTOMATIC>
<COND (,AUTOMATIC-SONAR
<ALREADY ,SONARSCOPE "set to automatic">)
(<SPLIT-SCREEN?>
<SETG AUTOMATIC-SONAR T>
<SETG SCREEN-NOW-SPLIT T>
<START-SONAR?>
<OKAY ,SONARSCOPE "set to automatic">)
(T <NOT-AVAILABLE>)>)
(<IOBJ? MANUAL>
<COND (<NOT ,AUTOMATIC-SONAR>
<ALREADY ,SONARSCOPE "set to manual">)
(<SPLIT-SCREEN?>
<SETG AUTOMATIC-SONAR <>>
<SETG SCREEN-NOW-SPLIT <>>
<SPLIT 0>
<DISABLE <INT I-SHOW-SONAR>>
<OKAY ,SONARSCOPE "set to manual">)
(T <NOT-AVAILABLE>)>)>)>>
"And there are times when the scope must be 'off':"
<ROUTINE SONAR-TO-MANUAL ()
<COND (<AND ,AUTOMATIC-SONAR <SPLIT-SCREEN?>>
<SETG AUTOMATIC-SONAR <>>
<SETG SCREEN-NOW-SPLIT <>>
<SPLIT 0>
<DISABLE <INT I-SHOW-SONAR>>
<TELL "The sonarscope automatically sets itself to manual." CR>)>>
"Finally, there's a little extra work for SAVE & RESTORE:"
<ROUTINE V-SAVE ()
<COND (,SCREEN-NOW-SPLIT <SPLIT 0>)>
<COND (<SAVE>
<TELL "Okay." CR>
<V-FIRST-LOOK>)
(T
<TELL ,FAILED CR>)>
<START-SONAR?>
<RTRUE>>
<ROUTINE V-RESTORE ()
<COND (,SCREEN-NOW-SPLIT <SPLIT 0>)>
<COND (<NOT <RESTORE>>
<TELL ,FAILED CR>
<START-SONAR?>
<RFALSE>)>>

959
script.mss Normal file
View File

@@ -0,0 +1,959 @@
@style (spacing 1)
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!
Please type your first name.
> JIM@*
Hello Jim! Now type your last name.
> LAWRENCE@*
Is Jim Lawrence right? > YES@*
Then let the story begin!
SEASTALKER: JIM LAWRENCE AND THE ULTRAMARINE BIOCEPTOR@*
Junior-level interactive fiction from Infocom@*
Copyright (c) 1984 Infocom, Inc. All rights reserved.@*
SEASTALKER is a trademark of Infocom, Inc.@*
Revision number 8 / Serial number 840424@*
"Jim, snap out of it!" cries Tip Randall, bursting into your laboratory.
"The alert signal is on!"@*
As you look up from your top-secret plans for the SCIMITAR, a submarine
for capturing marine life on the ocean floor and still being tested,
you notice the alarm bell on the videophone ringing. Someone's trying
to reach you over the private videophone network of Inventions Unlimited!
(lab center)@*
You're at your workbench in the center of your laboratory, a small
part of the Lawrence Research Lab in the town of Frobton. The videophone
screen looms overhead, with its alarm bell ringing.@*
Tip is here.@*
A microphone is sitting on your workbench.
Okay, Jim, what do you want to do now?@*
> ANSWER PHONE@*
As the alarm bell stops ringing, a picture of a woman holding a microphone
appears, and you can hear her voice from the speaker. But both sound
and picture are fuzzy.@*
(Your score just went up by 1 point!)
What next?
> FIX IT@*
Ah, that's better! You recognize the woman as Commander Bly, who's
in charge of the Undersea Research Station of Inventions Unlimited,
called the Aquadome, just off the Atlantic coast. "Jim! Jim!" she's
saying. "This is the Aquadome calling the Lawrence Research Lab! We
have an urgent problem!"@*
(Your score just went up by 1 point!)
What next?
> TAKE MIKE@*
(Your score just went up by 1 point!)@*
You're now holding the microphone.
What next?
> TURN IT ON@*
Okay, the microphone is now on.
What next?
> HELLO@*
"Jim! Jim! Our transparent dome enclosing the Undersea Research Station
is being battered by a huge monster!"
What next?
> GOODBYE@*
"I hope to see you soon, Jim."
Something's wrong! The picture vanished from your videophone screen,
and the sound conked out!@*
Tip says, "That's strange! Maybe you should use the Computestor."@*
(Oh no! Your score just went down by 3 points!)
What next?
> DROP MIKE@*
Okay, the microphone is now on the floor.
What next?
> GO TO BREAKER@*
It's in the corridor.@*
(corridor)@*
You're in a corridor, with your laboratory to the west, a storage closet
to the south, and Kemp's office to the east. An Electrical Panel fills
most of the north wall.
Tip follows you into the corridor.@*
(If you want a clue, find Infocard #3 in your SEASTALKER package. Read
hidden clue #1 and put "Electrical Panel" in the blank space.)
What next?
> CLOSE IT@*
Okay, the circuit breaker is now closed.@*
(Your score just went up by 3 points!)
What next?
> GO TO CAPSULE@*
It's in the west walkway.@*
(west walkway)@*
You're at a work counter, next to the control gear used to operate
the test tank.
The test tank (which is now empty of sea water) is located in a large
work room, just south of your laboratory, 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 underwater 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.
Tip follows you into the west walkway.@*
Sitting on the work counter is:@*
a catalyst capsule
(Are you tired of seeing "What next?" Well, you won't see it any more.)
> TAKE IT@*
(Your score just went up by 5 points!)@*
You're now holding the catalyst capsule.
> GO TO REACTOR@*
It's in the SCIMITAR.@*
(SCIMITAR)@*
You're in the pilot's seat of the SCIMITAR, its operating control panel
before you.
A wraparound viewport, both fore and aft, provides a view ahead and
astern. You can also observe your surroundings with a sonarscope and
a hydrophone listening device. There's a sonarphone for communication.
You'll discover other features when you need them.@*
Tip is sitting behind you, reading a magazine.@*
The power reactor is off and open.@*
(Your score just went up by 1 point!)
(If you want a clue, find Infocard #8 in your SEASTALKER package. Read
hidden clue #1 and put "SCIMITAR" in the blank space.)
> PUT CAPSULE IN IT@*
Okay.
> CLOSE REACTOR@*
Okay, the reactor is now closed.
> TURN IT ON@*
Electrical systems now activated.@*
(Your score just went up by 5 points!)
> TAKE TOOL@*
Tip gives it to you. You're now holding the Universal Tool.
> OPEN ACCESS PANEL@*
Okay, the access panel is now open.
> IN@*
(crawl space)@*
The space is dimly illuminated by small work lights, but you can see
machinery everywhere.
> FIX REGULATOR CAREFULLY@*
Fixed.
> EXIT CAREFULLY@*
(SCIMITAR)@*
Tip is sitting behind you, reading a magazine.
> FILL TANK@*
The sea water quickly fills the tank, up to the level of the walkway.
> OPEN GATE@*
Opened (by remote control).
> START ENGINE@*
You can immediately hear the powerful thrum of the hydrojet turbine.@*
(Your score just went up by 5 points!)
> E@*
Okay, the SCIMITAR is now facing toward the east. But it won't go that
way unless you open the throttle.
> CLOSE HATCH@*
Okay, the entry hatch is now closed.
> OPEN THROTTLE@*
The SCIMITAR glides smoothly out of the tank onto the surface of Frobton
Bay. You're heading east at 1 sea square per turn.@*
(Your score just went up by 5 points!)@*
(This might be a good time to use the command: SAVE.)
> D@*
The SCIMITAR noses downward, and sea water begins to wash over your
forward viewport. You're now diving at a speed of 5 meters per sea
square.@*
The sea water darkens to a deeper green as you descend from the sunlit
surface. Engine and propeller noises come over the hydrophone loudspeaker.@*
Suddenly a loud alarm bell begins to ring! The depth finder warning
light has begun to glow red.
> WAIT@*
(I assume you mean: wait 10 turns.)@*
Time passes...@*
The SCIMITAR quickly levels out at the desired depth of 5 meters. It's
still moving toward the east at a speed of 1 sea square per turn.@*
The depth finder warning light changes to orange, and the alarm bell
continues to sound.@*
The depth finder warning light fades to dark again, and the alarm bell
ceases.@*
The sonarscope shows an obstacle ahead! Unless you change course, you
will crash the SCIMITAR!
Tip says, "Hey, Jim, maybe you should look at the sonarscope."
> NE@*
Okay, the SCIMITAR is now moving toward the northeast.@*
The sonarscope warning light goes out.
> WAIT@*
(I assume you mean: wait 10 turns.)@*
Time passes...@*
Suddenly a loud alarm bell begins to ring! The depth finder warning
light has begun to glow orange.
Do you want to keep waiting? > YES@*
The depth finder warning light fades to dark again, and the alarm bell
ceases.
> WAIT@*
(I assume you mean: wait 10 turns.)@*
Time passes...@*
The sonarscope shows an obstacle ahead! Unless you change course, you
will crash the SCIMITAR!
Tip says, "Hey, Jim, maybe you should look at the sonarscope."
Do you want to keep waiting? > NO@*
> N@*
Okay, the SCIMITAR is now moving toward the north, straight toward
the opening in the seawall.
The sonarscope warning light goes out.
> WAIT@*
(I assume you mean: wait 10 turns.)@*
Time passes...@*
The sonarscope warning light is flashing yellow! A ship is approaching!
Tip says, "Hey, Jim, maybe you should look at the sonarscope."@*
The yellow light on the sonarscope continues to glow.
Do you want to keep waiting? > NO@*
> LOOK AT SONAR@*
The yellow light on the sonarscope continues to glow.@*
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.
@begin (example)
(+=you, .=open water, *=obstacle, @@=ship)
----------------------
SONAR:YELLOW @@ = SHIP
. . . . . . . . . . .
. . . . . @@ . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . * * . . !
. . . . . + . . * * . + (hdg:N)
. . . . . . . . . * *
. . . . . . . . . . *
. . . . . . . . . . .
. . . . . . . . . . *
. . . . . . . . . . *
----------------------
@end (example)
The yellow light on the sonarscope continues to glow.
> NE@*
Okay, the SCIMITAR is now moving toward the northeast, straight toward
the opening in the seawall.@*
You have just passed through the opening in the sea wall across the
mouth of Frobton Bay, and you're now in the open ocean.@*
(Your score just went up by 5 points!)@*
(This might be a good time to use the command: SAVE.)
> TURN ON AUTOPILOT@*
Okay, your trip to the Aquadome will take 60 turns at your current
speed. But you can set the throttle to a different speed, if you want.@*
(Your score just went up by 5 points!)
> WAIT 60 TURNS@*
Time passes...
(If you want a clue, find Infocard #2 in your SEASTALKER package. Read
hidden clue #3 and put "magazine" in the blank space.)
Do you want to keep waiting? > YES@*
The ocean has been getting darker as you dive toward the Aquadome,
turning from blue-green to dark green to a dull gray-green. It's becoming
duskier and murkier with every minute.
A yellow cone of light now illumines the water ahead. The SCIMITAR's
brass search light was automatically switched on by an electronic eye,
now that you're too deep for the sun to light the water.
Colorful sea life swims through the brass search light beam: a playful
dolphin, a school of herring... Oh, oh! Here comes a hammerhead shark.
And now a huge manta ray is gracefully gliding and flapping toward
you.
A crooning noise comes over the hydrophone loudspeaker, punctuated
by sighs and moans and a few weird whistles.
"There's a blip on the sonarscope at three o'clock!" yells Tip. "Aim
the brass search light to starboard, Jim!"
Do you want to keep waiting? > YES@*
The amazing Aquadome looms ahead. Its bright lights suffuse the sea
water around it with a glowing radiance.
The sonarphone is ringing.
Do you want to keep waiting? > YES@*
The SCIMITAR slows to a gentle stop, with engine idling and the joystick
pointing north. The autopilot has brought you to the docking tank on
the south side of the Aquadome. It also turned off the depth finder
for you.
At Commander Bly's order, the docking tank gate slides open, but you
could have done it by remote control, just as you did the test tank
gate.
The docking tank is filling up with tons of sea water.@*
The docking tank lies north. You can enter it by opening the throttle.
The bottom of the docking tank has an adjustable plastic cradle, which
adjusts to the keel of any submarine.
> OPEN THROTTLE@*
You feel the seat press against you, and the hydrojet gets louder.
You're now travelling at a speed of 1 sea square per turn.
The SCIMITAR is now resting in the cradle in the rectangular docking
tank. The docking tank gate closes, and so does the throttle.
Through the viewport you can see the water level going down inside
the docking tank. The docking crew is pumping out the sea water. This
will take 1 turn.
(Your score just went up by 5 points!)
> I@*
You're holding:@*
a Universal Tool@*
a Logbook
The docking tank is now clear of sea water and filled with air at sea-level
pressure. The engine shuts off.
The roof of the docking tank is sliding open, and the SCIMITAR is in
dry dock.
A ramp swings down from the top of the docking tank's north wall to
your entry hatch.
> OPEN IT@*
Okay, the entry hatch is now open.
> GO TO BLY@*
(If you want a clue, find Infocard #5 in your SEASTALKER package. Read
hidden clue #3 and put "Emergency Oxygen Gear" in the blank space.)
She's in the reception area.@*
(reception area)@*
You're now face-to-face with Zoe Bly and the Aquadome crew. They are
wearing badges which show the air quality in the Aquadome.
Tip follows you into the reception area.
The five Aquadome crew members are here.
Commander Bly is here.@*
Commander Bly says, "Welcome to the Aquadome, Jim! You're a sight for
sore eyes! We've been anxiously awaiting your arrival!"
> N@*
(dome center)@*
You're in the very center of the Aquadome, where the Air Supply System
rises like a tower, almost to the top of the dome itself.
Tip follows you into the dome center.
> OPEN DOOR WITH TOOL@*
Okay, the access door is now open.
You notice an empty space in the complicated assembly facing you. Something
has been unscrewed from this space!
Something is lying at the base of the cylinder, just inside the housing.
(Your score just went up by 5 points!)
> TAKE IT@*
You're now holding the electrolyte relay.
> SCREW IT IN@*
It fits!
(Your score just went up by 5 points!)
> GO TO STORAGE ROOM@*
(storage room)@*
The room is crowded with supplies and equipment. If you want to find
something, you'll have to search for it.
Tip follows you into the storage room.
> TAKE BAZOOKA@*
(Your score just went up by 5 points!)@*
You're now holding the bazooka.
> GO TO LAB@*
(Aquadome laboratory)@*
The Aquadome laboratory is equipped for all sorts of marine biochemical
research. The room is crowded with supplies and equipment. If you want
to find something, you'll have to search for it.
Tip follows you into the Aquadome laboratory.
Commander Bly comes too.
Doc Horvak comes too.
Doc Horvak says:
"Jim, right after the Snark ceased its attack, I detected a high concentration
of AH molecules in the sea water around the Aquadome. Have you ever
heard of such a phenomenon before?" > YES@*
Tip says, "Wait a minute! Wasn't there something about AH molecules
in that magazine? Shall I get it and see?" > NO@*
> DOC, FIX DART@*
This will take 5 turns.
> MOUNT BAZOOKA ON SUB@*
"Good idea! That should stop the Snark! It could disable an enemy sub,
too! Shall I do it?" > YES@*
(Your score just went up by 5 points!)@*
"Are you ready to take off now, Jim?" Zoe Bly asks anxiously. > NO@*
> GO TO STORAGE ROOM@*
(storage room)@*
Tip follows you into the storage room.
> CALL BILL@*
"Right here, Jim," he replies. "What would you like me to do?"
> BILL, INSTALL UNIT IN SUB@*
"Okay, we'll install it."@*
(Your score just went up by 5 points!)@*
Doc Horvak now comes rushing back, holding an aquatic dart gun. "Okay,
Jim, 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?"
(Your score just went up by 5 points!)
> DOC, MOUNT IT ON CLAW@*
(Your score just went up by 5 points!)@*
Doc Horvak promptly mounts the dart gun on an extensor claw.@*
"Are you ready to take off now, Jim?" Zoe Bly asks anxiously. > NO@*
> GO TO TANK@*
(docking tank)@*
You're now in the docking tank, at the foot of the ramp.
Tip follows you into the docking tank.
Suddenly Commander Bly comes over and says, "Jim, can we discuss a
private matter now?" > NO@*
> WAIT FOR BILL@*
Time passes...
Suddenly Mick Antrim appears and says, "I'm going to check out your
new SCIMITAR, Jim!" Mick turns and climbs aboard the SCIMITAR.
Do you want to keep waiting? > YES@*
Suddenly Bill Greenup and Amy Lowell report back from the SCIMITAR.
"That Emergency Survival Unit is in place, Jim," says Amy. "Bill installed
the part under your pilot's seat, and I installed the rest."@*
Bill Greenup, for whom you're waiting, has arrived.
> IN@*
(SCIMITAR)@*
Tip is sitting behind you, checking the instruments.@*
The Emergency Survival Unit contains:@*
a hypodermic syringe@*
There's a magazine here.
(If you want a clue, find Infocard #5 in your SEASTALKER package. Read
hidden clue #1 and put "Emergency Survival Unit" in the blank space.)
> TAKE SYRINGE@*
You're now holding the hypodermic syringe.
> GO TO DOC@*
He's in the storage room.@*
(storage room)
Tip follows you into the storage room.
Doc Horvak is here.
> DOC, CHECK SYRINGE@*
He heads for the Aquadome laboratory. It will take Doc Horvak 4 turns
to analyze the chemical contents of the hypodermic syringe.
> GO TO OFFICE@*
(Aquadome office)@*
The Aquadome office is small but tidy, with a single door leading out
and a good view of the ocean through the window.
Tip follows you into the Aquadome office and begins playing with the
station monitor.
Suddenly Commander Bly comes over and repeats, "Jim, can we discuss
a private matter now?" > NO@*
> WAIT FOR DOC@*
Time passes...
Doc Horvak's face is grim and pale as he reports the result of his
analysis.
"Jim, the hypodermic syringe contains a lot of arsenic, and some arsenic
is missing from my chemical supply shelf! If you'd been jabbed with
that hypodermic syringe, you'd be dead!"
Tip turns to you with a gasp. "Holy smoke, Jim! That's exactly what
would have happened once you warmed up the pilot's seat enough to trigger
the sensor relay!"@*
Doc Horvak, for whom you're waiting, has arrived.
> ARREST BILL@*
Greenup turns and runs away. Then a crew member reports seeing Greenup
running behind the dormitory. "He's going to try to escape in the SCIMITAR,
Jim!"
Commander Bly adds: "We can see him on the station monitor! The docking
tank control panel is here, too!"
(Your score just went up by 5 points!)
> LOOK AT MONITOR@*
The monitor screen shows Greenup's head just coming into view above
the top of the docking tank's west wall, as he climbs the outside ladder.
Once he reaches the top of this wall, he will come down the inside
ladder to the SCIMITAR.
> CLOSE ROOF@*
Closed.@*
Greenup can't get into the SCIMITAR and escape any more. Knowing he's
trapped, Bill Greenup gives up without a fight. Commander Bly orders
him handcuffed to a pipe in the galley.
(Your score just went up by 5 points!)
> OPEN ROOF@*
Opened.
> OUT@*
As you start to leave, you notice an oddly shaped metallic object lying
under Zoe's desk. It must be the special Fram Bolt Wrench!
> GO TO STORAGE ROOM@*
(storage room)
Tip follows you into the storage room.
> TIP, PUT FINE GRID IN SUB@*
"If the Snark stays near the sea floor, Jim, it may churn up silt.
Even with our brass search light on, we might have trouble aiming a
weapon. Wouldn't it be easier if we could spot its exact position by
sonar?" > YES@*
"Jim, our sonarscope shows each sea square as 500 meters across. A
blip indicates the APPROXIMATE position of an object. That's not good
enough to hit the broad side of a barn! Let me install a fine grid
on the sonarscope that'll show a blip's position to within 5 meters,
okay?" > YES@*
"Jim, I checked and found a fine grid that'll fit our sonarscope. I
can install it quickly! I'll have someone install a fine throttle control,
too, for tight maneuvering. It has the same 3 settings, but for small
sea squares -- 0, 5, 10, or 15 meters per turn."
> GO TO TANK@*
(docking tank)@*
Amy Lowell is here.
> AMY, LEAVE@*
"Okay."
Suddenly Mick appears and says, "I thought maybe you had a problem
on the way here, Jim, so I wanted to check on it. Everything seems
to be okay now."@*
Tip flashes you a meaningful glance. Mick Antrim's reaction may be
all you need to prove he's NOT the traitor. But you'll have to decide
for yourself.
> MICK, LEAVE@*
"Okay."
> CLOSE ROOF@*
Closed.@*
Tip says, "All set, Jim! The fine grid is installed on both the sonarscope
and the throttle -- and so are the dart gun and the bazooka! Let's
shove off and find the Snark!"
> IN@*
(SCIMITAR)@*
Tip is sitting behind you, checking the instruments.@*
There's a magazine here.@*
As you and Tip take your places in your seats, and close the hatch,
the docking tank roof is also sliding shut.
> FILL TANK@*
This will take 1 turn.
> I@*
You're holding:@*
a Universal Tool@*
a Logbook
The docking tank is now filled with sea water.
The adjustable cradle then releases the SCIMITAR's keel from its grip.
> OPEN GATE@*
Opened (by remote control).
> START ENGINE@*
Your revolutionary craft thrums with power, matching your own excited
heartbeat!
> S@*
Okay, the SCIMITAR is now facing toward the south. But it won't go
that way unless you open the throttle.
> SET THROTTLE FAST@*
The SCIMITAR glides smoothly out of the tank into the ocean. You're
heading south at 3 sea squares per turn.@*
(Your score just went up by 1 point!)@*
(This might be a good time to use the command: SAVE.)
> SE@*
Okay, the SCIMITAR is now moving toward the southeast.
> WAIT@*
(I assume you mean: wait 10 turns.)@*
Time passes...@*
"Holy halibut!" cries Tip. "There's a big cloud of silt ahead in the
brass search light. It's out of sonar range. This could be the Snark!
Want to hold course till we find out?" > YES@*
However you steer, the cloud holds steady. You may be on a collision
course with the behemoth that almost wrecked the Aquadome!@*
Your brass search light reveals TWO objects dead ahead!
One is the Snark. To the left of the tentacled creature -- YOUR left
-- you can make out a vehicle crawling along the ocean floor.
Tip says, "That's one of your Sea Cats!"@*
A voice crackles over the sonarphone: "This is Doctor Jerome Thorpe,
Jim! Do you read me?" > YES@*
Your answer brings a rasping laugh. "Of course you read me, or you
wouldn't be answering! Your lab assistant, Sharon Kemp, 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?" > YES@*
"I'll blast your sub with a rocket! Then I'll guide my synthetic monster
to the Aquadome to destroy it! Can you guess what sealed your doom,
Jim?" > YES@*
"I'll tell you anyhow. I want to own the valuable ore deposit near
the 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:
"This is Sharon Kemp, Jim! Do you read me?" > YES@*
"Thank goodness! I conked Thorpe with a wrench! He fell onto the microphone,
and he's too heavy for me to move!"
(Your score just went up by 5 points!)
> E@*
Okay, the SCIMITAR is now moving toward the east.
> SET SONAR TO AUTO@*
@begin (example)
@@@@=SEA CAT, Oooo=MONSTER
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . + . . . . . +-- (hdg:E)
. . . . O @@ . . . . .
. . . . . o @@ . . . .
. . . . . . o . . . .
. . . . . . . o . . .
. . . . . . . . . . .
----------------------
@end (example)
Okay, the sonarscope is now set to automatic.
@begin (example)
@@@@=SEA CAT, Oooo=MONSTER
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
O @@ . . . + . . . . . +-- (hdg:E)
. o @@ . . . . . . . .
. . o . . . . . . . .
. . . o . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
----------------------
@end (example)
> NW@*
Okay, the SCIMITAR is now moving toward the northwest.
@begin (example)
@@@@=SEA CAT, Oooo=MONSTER
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . \
. . . . . + . . . . . + (hdg:NW)
. . . . . . . . . . .
. . O @@ . . . . . . .
. . . o @@ . . . . . .
. . . . o . . . . . .
. . . . . o . . . . .
----------------------
@end (example)
> STOP@*
(I assume you mean: close the throttle.)@*
The SCIMITAR slows to a halt.
@begin (example)
@@@@=SEA CAT, Oooo=MONSTER
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . \
. . . . . + . . . . . + (hdg:NW)
. O @@ . . . . . . . .
. . o @@ . . . . . . .
. . . o . . . . . . .
. . . . o . . . . . .
. . . . . . . . . . .
----------------------
@end (example)
> WAIT@*
(I assume you mean: wait 10 turns.)@*
Time passes...
@begin (example)
@@@@=SEA CAT, Oooo=MONSTER
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . \
O @@ . . . + . . . . . + (hdg:NW)
. o @@ . . . . . . . .
. . o . . . . . . . .
. . . o . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
----------------------
@@@@=SEA CAT, Oooo=MONSTER
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
@@ . . . . . . . . . . \
o @@ . . . + . . . . . + (hdg:NW)
. o . . . . . . . . .
. . o . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
----------------------
@@@@=SEA CAT, Oooo=MONSTER
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
@@ . . . . . . . . . . \
o . . . . + . . . . . + (hdg:NW)
. o . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
----------------------
@@@@=SEA CAT, Oooo=MONSTER
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . \
o . . . . + . . . . . + (hdg:NW)
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
----------------------
@end (example)
Suddenly the sonarphone gets louder.
Tip says, "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, Jim Lawrence, I'm stopping
my Sea Cat so I can blow you into Kingdom Come as soon as you're in
my sights!"@*
(If you want a clue, find Infocard #4 in your SEASTALKER package. Read
hidden clue #2 and put "Sea Cat" in the blank space.)
@begin (example)
@@@@=SEA CAT, Oooo=MONSTER, #=DANGER
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . \
. . . . . + . . . . . + (hdg:NW)
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
----------------------
@end (example)
> AIM BAZOOKA AT THORPE@*
(Your score just went up by 5 points!)@*
Aimed.
@begin (example)
@@@@=SEA CAT, Oooo=MONSTER, #=DANGER
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . \
. . . . . + . . . . . + (hdg:NW)
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
----------------------
@end (example)
> FIRE BAZOOKA@*
(Your score just went up by 5 points!)@*
Great! You and Tip can see the bazooka slam into the Sea Cat's power
pod!
"Hooray! That crippled the Sea Cat for keeps!" Tip cheers.@*
You hear a voice come over the sonarphone: "Jim, this is Sharon! Do
you read me?" > YES@*
"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 Sea Cat'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."
CONGRATULATIONS, JIM! YOU'VE COMPLETED YOUR MISSION!!
Your score is 100 points out of 100, in 194 turns.
This score gives you the rank of a famous adventurer.

56
seastalker Normal file
View File

@@ -0,0 +1,56 @@
.c;Seastalker -- a perfect adventure
.s
.p 2,0
^*Whoever believes that text adventures are boring doesn't know
"Seastalker". This deep-sea adventure for the C64, Atari, Apple II, and
IBM-PC amazes with its variety and extras, that provide for atmosphere:
from a sticker to a logbook and "Infocard-decoder".\*
.s
Many dangers lie in waiting in the unfathomable deeps of the sea. The
"Aquadome", the first underwater research station, is threatened by a
catastrophe. As the upright, young hero (no false modesty) you swing into
the submarine to help. Indeed you were ready and waiting for a wicked
sea monster.
What sounds to you like the plot of a wild action game is the fanciful
story to "Seastalker", one of the newest adventure games of an American
software house, that is famous for its cunning text-adventures, that show
themselves in two ways: First, the programs are positively uncannily
"intelligent", they understand complicated sentences and reach an almost
literary niveau. Second, one gets a great quantity of accessories for
one's money.
Also with "Seastalker" the extras aren't spared: Along with the disk and the
usual loading directions one gets a logbook, just like the original, out of
which detailed instructions are revealed, a sea chart, a sticker and a whole
pack of "Infocards" with their decoder.
On these Infocards are hidden hints, that are only able to be seen when they
are shoved through the groove in the decoder. A frustrated adventurer gets
discrete tips this way, that he could not see by "accident", only when he
really wants to. The logbook gives one a real seaman's atmosphere. Along
with a rousing letter from the president of the USA, it gives a hint of the
way to use the technical equipment and how to communicate with the program.
The adventure begins with you in the research laboratory, working
industriously away. Suddenly the alarms go off. If you are lively, you
can get radio contact with the Aquadome. A woman appears in the adventure
on a screen and implores you for help, because the underwater station is
being threatened by a horrible monster, that so far is not more closely
described. Luckily, your submarine "Scimitar" stands ready, with it you
can rush to the Aquadome to help.
.s
.c;Literary niveau
"Seastalker" is not an exaggeratedly difficult text-adventure. In the USA it is
suggested for children from nine years up. The program is in very clean
English and a knowledge of the correspondence style is given in advance,
this allows it to address in our degree of longitude a previously matured public.
This pretentious game is designed with "speech intelligence". Where other
adventures accept only "Get food", "Seastalker" swallows extensive sentences
like "Unlock the front door with key and go north". One can even talk with
other people in the adventure.
"Seastalker" is a very worthily made text-adventure for players with a progressive
knowledge of English. Although it is relatively easy, some beginners have
great trouble to succesfully complete the mission. The program comes on a
diskette and costs about 100 Marks.
.s
[caption at top] Naked text fills the screen
[caption at bottom] The inclusions to "Seastalker" are not only charming and pleasurable to the great journey in this underwater adventure
.s
.c;[translation by Linde Simpson]

52
seastalker.zil Normal file
View File

@@ -0,0 +1,52 @@
"COMPILE/LOAD FILE for SEASTALKER
Copyright (C) 1984 Infocom, Inc. All rights reserved."
<COND (<GASSIGNED? PREDGEN>
<PRINC "Compiling">
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>
<ID 0>)
(T <PRINC "Loading">)>
<PRINC " SEASTALKER: junior-level interactive fiction from Infocom!">
<COND (<GASSIGNED? MUDDLE>
<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 ;"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>
<IFILE "SUB" T>
<IFILE "BATTLE" T>
<IFILE "THINGS" T>
<IFILE "DOME" T>
<IFILE "PEOPLE" T>
<IFILE "PLACES" T>
<IFILE "GLOBAL" T>
<CONSTANT SERIAL 0>
<IFILE "CLOCK" T>
<ENDLOAD>
<IFILE "PARSER" T>
<IFILE "VERBS" T>
<IFILE "EVENTS" T>
<PROPDEF SIZE 5>
<PROPDEF CAPACITY 0>
<GC-MON T>
<COND (<GASSIGNED? MUDDLE>
<GC 0 T 5>)>

BIN
seastalker.zip Normal file

Binary file not shown.

2962
sub.zap Normal file

File diff suppressed because it is too large Load Diff

2845
sub.zil Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,20 @@
.FUNCT CAPITAL-NOUN?,WRD
EQUAL? WRD,W?DOC,W?TIP,W?RANDALL /TRUE
EQUAL? WRD,W?DOC'S,W?TIP'S,W?BILL'S /TRUE
EQUAL? WRD,W?KEMP'S,W?ZOE'S,W?MARV'S /TRUE
EQUAL? WRD,W?SHARON,W?KEMP,W?ZOE /TRUE
EQUAL? WRD,W?BLY'S,W?AMY'S,W?FROBTON /TRUE
EQUAL? WRD,W?BLY,W?AMY,W?LOWELL /TRUE
EQUAL? WRD,W?MICK'S,W?WALT'S /TRUE
EQUAL? WRD,W?MICK,W?ANTRIM,W?WALT /TRUE
EQUAL? WRD,W?DOCTOR,W?DR,W?MARV /TRUE
EQUAL? WRD,W?SIEGEL,W?BILL,W?GREENUP /TRUE
EQUAL? WRD,W?HORVAK,W?JEROME,W?THORPE /TRUE
RFALSE
.FUNCT BUZZER-WORD?,WORD
CALL QUESTION-WORD?,WORD
ZERO? STACK \TRUE

View File

@@ -6,17 +6,20 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<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>
ALL AGAIN G>
<ROUTINE CAPITAL-NOUN? (WRD)
<OR <EQUAL? .WRD ,W?DOC ,W?TIP ,W?RANDALL>
<EQUAL? .WRD ,W?DOC\'S ,W?TIP\'S ,W?BILL\'S>
<EQUAL? .WRD ,W?KEMP\'S ,W?ZOE\'S ,W?MARV\'S>
<EQUAL? .WRD ,W?SHARON ,W?KEMP ,W?ZOE>
<EQUAL? .WRD ,W?BLY\'S ,W?AMY\'S ,W?FROBTON>
<EQUAL? .WRD ,W?BLY ,W?AMY ,W?LOWELL>
<EQUAL? .WRD ,W?MICK\'S ,W?WALT\'S>
<EQUAL? .WRD ,W?MICK ,W?ANTRIM ,W?WALT>
<EQUAL? .WRD ,W?DOCTOR ,W?DR ,W?MARV>
<EQUAL? .WRD ,W?SIEGEL ,W?BILL ,W?GREENUP>
<EQUAL? .WRD ,W?HORVAK ,W?JEROME ,W?THORPE>>>
<ROUTINE BUZZER-WORD? (WORD)
<COND (<QUESTION-WORD? .WORD> <RTRUE>)
@@ -27,6 +30,12 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<PRINTB .WORD>
<TELL "\".)" CR>)>>
<BUZZ 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 ;WHERE\'S WHICH WHO WHO\'S WHY
WILL WON\'T WOULD YOU\'RE>
<GLOBAL QUESTION-WORD-COUNT 0>
<ROUTINE QUESTION-WORD? (WORD)
<COND (<EQUAL? .WORD ,W?WHERE ;",W?THERE ,W?SEEN">
@@ -52,7 +61,7 @@ CR>)
<INC QUESTION-WORD-COUNT>
<COND (<G? ,QUESTION-WORD-COUNT 9>
<SETG QUESTION-WORD-COUNT 0>
%<XTELL
<TELL
"! 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:|
@@ -61,9 +70,13 @@ of commands:|
SHARON, GIVE THE BOOK TO TIP|
BILL, HELP ME|
Now you can try again.)" CR>)
(T %<XTELL ", not statements or questions.)" CR>)>
(T <TELL ", not statements or questions.)" CR>)>
<RTRUE>)>>
<BUZZ ZERO TWO THREE FOUR FIVE SIX SEVEN EIGHT NINE TEN ELEVEN TWELVE THIRTE
FOURTE FIFTEE SIXTEE SEVENT EIGHTE NINETE TWENTY THIRTY FORTY ;FORTY-
FIFTY ;FIFTY- SIXTY ;SIXTY- EIGHTY NINETY HUNDRE THOUSA MILLIO BILLIO>
<ROUTINE NUMBER-WORD? (WRD)
<COND (<OR <EQUAL? .WRD ,W?ZERO>
<EQUAL? .WRD ,W?TWO ,W?THREE ,W?FOUR>
@@ -79,6 +92,8 @@ Now you can try again.)" CR>)
<TELL "(Use numerals for numbers, for example \"10.\")" CR>
<RTRUE>)>>
<BUZZ CURSE CURSES CUSS DAMN SHIT SUCK FUCK FUDGE PISS PEE POO SNOT BASTARD>
<ROUTINE NAUGHTY-WORD? (WORD)
<COND (<OR <EQUAL? .WORD ,W?CURSE ,W?CURSES ,W?CUSS>
<EQUAL? .WORD ,W?DAMN ,W?SHIT ,W?FUCK>
@@ -91,7 +106,7 @@ Now you can try again.)" CR>)
<CRLF>)>>
<GLOBAL OFFENDED
<LTABLE "You ought to be ashamed of yourself!"
<PLTABLE "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!">>
@@ -116,7 +131,7 @@ Now you can try again.)" CR>)
<SYNTAX $VERIFY = V-$VERIFY>
<SYNTAX $DBG = V-DEBUG>
<SYNTAX \#DBG = V-DEBUG>
"<SYNTAX \#CODE = V-$CODE>" "produces secret code from names"
<SYNTAX $BAY = V-$BAY> "sub in bay"
@@ -124,10 +139,11 @@ Now you can try again.)" CR>)
"<SYNTAX $DOME = V-$DOME>" "sub in dome"
"<SYNTAX $SNARK = V-$SNARK>" "sub in battle"
<SYNONYM ADJUST TUNE FOCUS>
<SYNONYM ADJUST TUNE FOCUS CLEAR>
<SYNTAX ADJUST OBJECT = V-ADJUST>
<SYNTAX ADJUST OBJECT WITH OBJECT = V-ADJUST>
<SYNTAX ADJUST IN OBJECT = V-ADJUST>
<SYNTAX ADJUST UP OBJECT = V-ADJUST>
<SYNONYM AIM POINT>
<SYNTAX AIM OBJECT AT OBJECT = V-AIM PRE-AIM>
@@ -221,8 +237,8 @@ Now you can try again.)" CR>)
WITH OBJECT
= V-CLOSE>
<SYNTAX COME OBJECT = V-COME>
<SYNTAX COME TO OBJECT = V-COME>
<SYNTAX COME OBJECT = V-WALK-TO ;V-COME>
<SYNTAX COME TO OBJECT = V-WALK-TO ;V-COME>
<SYNTAX COME WITH OBJECT = V-FOLLOW>
<SYNTAX COME WITH OBJECT TO OBJECT = V-COME-WITH PRE-COME-WITH>
@@ -510,7 +526,7 @@ Now you can try again.)" CR>)
<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>
<SYNTAX PLACE ON OBJECT (ON-GROUND IN-ROOM) = V-LAMP-ON> "PUT ON OBJ"
<SYNONYM QUIT Q>
<SYNTAX QUIT = V-QUIT>
@@ -616,9 +632,9 @@ Now you can try again.)" CR>)
<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>
<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>
@@ -681,9 +697,9 @@ Now you can try again.)" CR>)
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (IN-ROOM CARRIED MANY)
FROM OBJECT
= V-TAKE PRE-TAKE>
"<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY)
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY)
OFF OBJECT
= V-TAKE PRE-TAKE>"
= V-TAKE PRE-TAKE>
<SYNTAX TAKE OBJECT (FIND TAKEBIT) (CARRIED IN-ROOM MANY)
OUT ;OF OBJECT (FIND CONTBIT)
= V-TAKE PRE-TAKE>
@@ -726,10 +742,10 @@ Now you can try again.)" CR>)
<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)
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)
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)
@@ -808,24 +824,16 @@ Now you can try again.)" CR>)
<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>"

View File

@@ -14,7 +14,7 @@
SET 'TBL,P-PRSO
JUMP ?CND1
?ELS11: SET 'TBL,P-PRSI
SET 'PRSO?,0
SET 'PRSO?,FALSE-VALUE
?CND1: EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT \?CND14
FSET? PRSO,PERSON \?CND14
IN? PRSO,GLOBAL-OBJECTS \?CND14
@@ -93,14 +93,14 @@
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
SET 'PERSON?,FALSE-VALUE
PRINTI "The "
?CND57: PRINTD PRSO
JUMP ?CND54
?ELS56: CALL QCONTEXT-GOOD?
ZERO? STACK /?ELS65
FSET? QCONTEXT,PERSON /?CND66
SET 'PERSON?,0
SET 'PERSON?,FALSE-VALUE
PRINTI "The "
?CND66: PRINTD QCONTEXT
JUMP ?CND54
@@ -146,18 +146,14 @@
?ELS5: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS23
GET P-ITBL,P-NC1 >?TMP1
GET P-ITBL,P-NC1L
CALL BUFFER-PRINT,?TMP1,STACK,0
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
RSTACK
?ELS23: GET P-ITBL,P-NC2 >?TMP1
GET P-ITBL,P-NC2L
CALL BUFFER-PRINT,?TMP1,STACK,0
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
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
@@ -177,16 +173,14 @@
.FUNCT MAGAZINE-F
CALL REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?OPEN \?ELS7
EQUAL? PRSA,V?OPEN,V?LOOK-INSIDE \?ELS5
CALL NOT-HOLDING?,MAGAZINE
ZERO? STACK \TRUE
?ELS7: EQUAL? PRSA,V?LOOK-UP \?ELS11
EQUAL? PRSO,GLOBAL-THORPE \?ELS11
?ELS5: EQUAL? PRSA,V?LOOK-UP \?ELS12
EQUAL? PRSO,GLOBAL-THORPE \?ELS12
CALL PERFORM,V?READ,ARTICLE
RTRUE
?ELS11: EQUAL? PRSA,V?ANALYZE,V?EXAMINE,V?READ \FALSE
?ELS12: EQUAL? PRSA,V?ANALYZE,V?EXAMINE,V?READ \FALSE
CALL NOT-HOLDING?,MAGAZINE
ZERO? STACK \TRUE
PRINTI """Science World"" is a popular "
@@ -207,13 +201,15 @@ The cover shows "
RTRUE
?ELS5: EQUAL? PRSA,V?ANALYZE /?THN8
EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE,V?READ \FALSE
?THN8: PRINTI "It says that "
?THN8: CALL NOT-HOLDING?,MAGAZINE
ZERO? STACK \TRUE
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."
Some scientists are skeptical, but Thorpe has claimed that one-celled organisms had evolved in his lab from AMINO-HYDROPHASE or A.H. If rumors are true, these synthetic sea creatures should be based on the A.H. molecule."
.FUNCT CATALYST-CAPSULE-F
@@ -274,14 +270,14 @@ Some scientists are skeptical, but Thorpe has claimed that one-celled organisms
EQUAL? PRSA,V?TAKE \?ELS8
EQUAL? PRSO,OXYGEN-GEAR \?ELS8
CALL ITAKE
EQUAL? STACK,1 \TRUE
EQUAL? STACK,TRUE-VALUE \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
CALL ALREADY,OXYGEN-GEAR,STR?42
RTRUE
?ELS22: CALL NOT-HOLDING?,OXYGEN-GEAR
ZERO? STACK \TRUE
@@ -319,7 +315,9 @@ Some scientists are skeptical, but Thorpe has claimed that one-celled organisms
.FUNCT V-$BAY
SET 'HERE,SUB
ZERO? SUB-IN-TANK \?CND1
PRINTR "too late"
?CND1: SET 'HERE,SUB
MOVE PLAYER,SUB
MOVE TIP,SUB
MOVE CATALYST-CAPSULE,REACTOR
@@ -327,12 +325,12 @@ Some scientists are skeptical, but Thorpe has claimed that one-celled organisms
FSET REACTOR,ONBIT
FSET ENGINE,ONBIT
FCLEAR SUB-DOOR,OPENBIT
SET 'MONSTER-GONE,1
SET 'MONSTER-GONE,TRUE-VALUE
SET 'JOYSTICK-DIR,P?EAST
SET 'SUB-DLON,1
SET 'SUB-DLAT,0
SET 'NOW-TERRAIN,BAY-TERRAIN
SET 'SUB-IN-TANK,0
SET 'SUB-IN-TANK,FALSE-VALUE
CALL QUEUE,I-UPDATE-SUB-POSITION,-1
PUT STACK,0,1
RTRUE

View File

@@ -7,7 +7,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
(ACTION NULL-F ;"Place holder")>
<ROUTINE RANDOM-PSEUDO ()
%<XTELL "You can't do anything useful with that." CR>>
<TELL "You can't do anything useful with that." CR>>
<OBJECT NOT-HERE-OBJECT
(DESC "that thing")
@@ -117,7 +117,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
(T <TELL "Someone">)>
<COND (<NOT .PERSON? ;<FSET? ,PRSO ,PERSON>>
<TELL " isn't connected to any">)
(T %<XTELL
(T <TELL
" looks confused. \"I don't know anything about any">)>
<NOT-HERE-PRINT>
<TELL "!">
@@ -125,7 +125,7 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
<CRLF>
<RTRUE>)
(<NOT .PRSO?>
%<XTELL "You wouldn't find any">
<TELL "You wouldn't find any">
<NOT-HERE-PRINT>
<TELL " there." CR>
<RTRUE>)
@@ -140,9 +140,9 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
(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 NO-TOUCH ()
<TELL
'Only clods fool around with these things for no good reason.' CR>>"
<ROUTINE THE? (NOUN)
<COND (<OR <AND <FSET? .NOUN ,PERSON>
@@ -174,16 +174,14 @@ Copyright (C) 1984 Infocom, Inc. All rights reserved."
(ACTION MAGAZINE-F)>
<ROUTINE MAGAZINE-F ()
<COND (<REMOTE-VERB?>
<COND ;(<REMOTE-VERB?>
<RFALSE>)
(<AND <VERB? OPEN> <NOT-HOLDING? ,MAGAZINE>>
;"<VERB? OPEN> added 4/11/84 by MARC"
<RTRUE>)
(<VERB? LOOK-INSIDE OPEN>
<COND (<NOT-HOLDING? ,MAGAZINE> <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"
(<VERB? READ EXAMINE ANALYZE>
<COND (<NOT-HOLDING? ,MAGAZINE> <RTRUE>)>
<TELL
"\"Science World\" is a popular " D ,MAGAZINE " about new
@@ -209,6 +207,7 @@ forms. The cover says:|
<PERFORM ,PRSA ,MAGAZINE ,PRSI>
<RTRUE>)
(<VERB? READ LOOK-INSIDE EXAMINE ANALYZE>
<COND (<NOT-HOLDING? ,MAGAZINE> <RTRUE>)>
<TELL
"It says that " D ,GLOBAL-THORPE " may have created synthetic forms of
marine life by genetic engineering. You learn that Thorpe went into
@@ -217,22 +216,10 @@ 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
organisms had evolved in his lab from AMINO-HYDROPHASE or A.H. If rumors
are true, these synthetic sea creatures should be based on the A.H.
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")
@@ -241,7 +228,6 @@ molecule." CR>)>>
(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)>
@@ -253,14 +239,13 @@ molecule." CR>)>>
"It looks as if the " D ,CATALYST-CAPSULE " fits perfectly into the "
D ,REACTOR "." CR>)
(<AND <VERB? FIND> <NOT <FSET? ,CATALYST-CAPSULE ,TOUCHBIT>>>
%<XTELL
<TELL
"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>)>>
<TELL "You'll have to take it there yourself." CR>)
(<AND <VERB? TAKE> <FSET? ,CATALYST-CAPSULE ,TRYTAKEBIT>>
<TELL "It's too hot to pick up." CR>)>>
<OBJECT OXYGEN-GEAR-OTHER
(IN GLOBAL-OBJECTS)
@@ -321,7 +306,7 @@ tank area." CR>)
<FCLEAR ,OXYGEN-GEAR ,NDESCBIT>
<COND (<AND <VERB? TAKE> <DOBJ? OXYGEN-GEAR>>
<COND (<==? <ITAKE> T>
%<XTELL
<TELL
"You're now wearing" THE-PRSO " around your neck." CR>)>
<RTRUE>)
(<VERB? LAMP-ON TURN USE OPEN>
@@ -331,14 +316,14 @@ tank area." CR>)
(<NOT-HOLDING? ,OXYGEN-GEAR>
<RTRUE>)
(<NOT ,DOME-AIR-BAD?>
%<XTELL "You don't need it now!" CR>
<TELL "You don't need it now!" CR>
<RTRUE>)>
<FSET ,OXYGEN-GEAR ,ONBIT>
%<XTELL
<TELL
"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
<TELL CR
"But you notice Zoe Bly collapsing, and you realize she has
no " D ,OXYGEN-GEAR ;" around her neck" "!">)>
<CRLF>)
@@ -407,6 +392,7 @@ no " D ,OXYGEN-GEAR ;" around her neck" "!">)>
<PRINTC <+ *101* <MOD .CH 26>>>>>"
<ROUTINE V-$BAY ()
<COND (<NOT ,SUB-IN-TANK> <TELL "too late" CR> <RTRUE>)>
<SETG HERE ,SUB>
<MOVE ,PLAYER ,SUB>
<MOVE ,TIP ,SUB>

30
ub.gr Normal file
View File

@@ -0,0 +1,30 @@
@style (spacing 1)
@title (FEATURES OF THE "SCIMITAR")
@pageheading(DRAFT)
@majorheading (FEATURES OF THE "SCIMITAR" - FOR BACKGROUND)
Copyright (C) 1984 Infocom, Inc. All rights reserved.
@heading (CABIN)
"You are now in the pilot's seat of the sub, with its operating control
panel spread out before you. Buzz is in the copilot's seat just behind
you. A thick-paned wraparound view port, both fore and aft, provides
a wide angle of vision ahead and astern. TV
camera eyes and sonar transducers in the hull also enable you to monitor
your surroundings via video screen and sonarscope.
There is a sonarphone and a radio. There is also a hydrophone listening
device."
@heading (INSTRUMENTS)
@begin (itemize)
CONTROL CIRCUITS TEMPERATURE GAUGE -@*
"Temperature gauge needle has now entered red danger zone!
Circuit tester now activated. Push test button for readout."@*
"Readout display says:
LASERS IN OPERATIONAL COMPUTERS ARE OVER-CHARGING.
TO CORRECT, ADJUST VOLTAGE REGULATOR.@*
** WARNING **@*
VOLTAGE REGULATOR IS REACHABLE ONLY FROM ENGINE COMPARTMENT CRAWL SPACE.
THIS IS A HAZARDOUS OPERATION AT SEA! CONSULT MANUAL FOR DETAILS."
@end (itemize)

30
ub.mss Normal file
View File

@@ -0,0 +1,30 @@
@style (spacing 1)
@title (FEATURES OF THE "SCIMITAR")
@pageheading(DRAFT)
@majorheading (FEATURES OF THE "SCIMITAR" - FOR BACKGROUND)
Copyright (C) 1984 Infocom, Inc. All rights reserved.
@heading (CABIN)
"You are now in the pilot's seat of the sub, with its operating control
panel spread out before you. Buzz is in the copilot's seat just behind
you. A thick-paned wraparound view port, both fore and aft, provides
a wide angle of vision ahead and astern. TV
camera eyes and sonar transducers in the hull also enable you to monitor
your surroundings via video screen and sonarscope.
There is a sonarphone and a radio. There is also a hydrophone listening
device."
@heading (INSTRUMENTS)
@begin (itemize)
CONTROL CIRCUITS TEMPERATURE GAUGE -@*
"Temperature gauge needle has now entered red danger zone!
Circuit tester now activated. Push test button for readout."@*
"Readout display says:
LASERS IN OPERATIONAL COMPUTERS ARE OVER-CHARGING.
TO CORRECT, ADJUST VOLTAGE REGULATOR.@*
** WARNING **@*
VOLTAGE REGULATOR IS REACHABLE ONLY FROM ENGINE COMPARTMENT CRAWL SPACE.
THIS IS A HAZARDOUS OPERATION AT SEA! CONSULT MANUAL FOR DETAILS."
@end (itemize)

3772
verbs.xzap Normal file

File diff suppressed because it is too large Load Diff

3741
verbs.zap Normal file

File diff suppressed because it is too large Load Diff

2746
verbs.zil Normal file

File diff suppressed because it is too large Load Diff

45
vocab.adj Normal file
View File

@@ -0,0 +1,45 @@
49-ER 49ER ACCESS ADMIN ADMINI
AIR AIRLOC ALARM AMY AMY'S
ANTRIM AQUA AQUADO AQUATI ASSORT
ATLANT AUTO AUTOMA BILL BILL'S
BIOCEP BLACK BLDG BLUE BLY'S
BOLT BOX BRASS BUILDI BUSINE
CAPSUL CATALY CENTER CENTRE CHEMIC
CIRCUI CLOSET COAXIA COMM COMMAN
COMMUN CONTRO COVER CRAWL CURREN
DART DEFINI DEPTH DEPTHF DESK
DETECT DISTRE DIVER DIVERS DOC
DOC'S DOCKIN DOCTOR DOME DORM
DORMIT DR EAST ELECTR EMERGE
EMPTY ENGINE ENTIRE ENTRY EXERCI
EXPLOS EXTEND EXTENS FAMOUS FEMALE
FILE FINDER FINE FLOOD FRAM
FROBTO FULL GALLEY GATE GAUGE
GREENU GRID HAND HER HIS
HORVAK HUGE HYDROJ HYDROP HYPO
HYPODE IDENTI INSERT INSTRU INVENT
JEROME JOGGIN JOY KEMP'S LAB
LABORA LIGHT LISTEN LOCKER LOG
LOWELL MACHIN MAG MAGAZI MALE
MARINE MARV MARV'S MECHAN METALL
MICK MICK'S MICROW MISSIN MY
NE NEW NORTH NUMBER NW
ODD ODDLY OFFICE OPEN OPERAT
ORANGE ORE OTHER OXYGEN PERSON
PLASTI POWER PRESEN PROPUL PROSPE
RANDAL REACTO RECEPT RED REDDIS
REMOTE REPELA RESEAR REVOLU ROOM
RUBBER RUNNIN SAFETY SCIMIT SE
SEA SEARCH SECURI SERIOU SHAPED
SHARON SIEGEL SLIDIN SMALL SOME
SONAR SONARS SOS SOUTH SPARE
SPECIA SPREAD STANDI STARTE STATIO
STEEL STENCI STORAG SUB SUB'S
SUBMAR SUPPLY SURVIV SW TANK
TEMPER TEMPOR TEST THESE THIS
THORPE TIP TIP'S TRANK TRANQU
TRANSP ULTRAM UNDERS UNDERW UNIVER
URGENT VALUAB VIDEO VIDEOP VOLTAG
WALL WALT WALT'S WARM WARNIN
WEST WORK WORKSH YELLOW YOUNG
ZOE

98
vocab.mud Normal file
View File

@@ -0,0 +1,98 @@
<SETG VBUFF <IBYTES 8 <* 7 1024>>> "for vocab up to 1024 words"
<GDECL (VBUFF) <BYTES 8>>
<DEFINE VOCAB (FILE
"AUX" BYTADDR VLEN VNUM (C <OPEN "READB" .FILE>) OUTCHAN
(NDUP 0) (NORD 0) (BUF <IBYTES 16 6>))
#DECL ((BYTADDR VLEN VNUM NDUP NORD) FIX
(C) <OR CHANNEL FALSE>
(OUTCHAN) <SPECIAL <OR CHANNEL FALSE>>
(BUF) <OR <BYTES 8> <BYTES 16>>)
<COND (.C
<SET OUTCHAN <OPEN "PRINT" <7 .C> "VOCAB">>
<READB .BUF .C>
<SET BYTADDR <5 .BUF>>
<ACCESS .C </ .BYTADDR 4>>
<READB ,VBUFF .C>
<SET BUF <REST ,VBUFF <MOD .BYTADDR 4>>>
<SET VLEN <5 .BUF>>
<SET VNUM <+ <7 .BUF> <* 256 <6 .BUF>>>>
<SET BUF <REST .BUF 7>>
<REPEAT ((N .VNUM) X X1 (OX #WORD 0) (OX1 #WORD 0))
#DECL ((N) FIX (X X1 OX OX1) WORD)
<SET X
<ORB <LSH <1 .BUF> 24>
<LSH <2 .BUF> 16>
<LSH <3 .BUF> 8>
<4 .BUF>>>
<PRINT .X>
<PRINC " \"">
<ZWORD-PRINT .X>
<PRINC "\"">
<COND (<L? <CHTYPE .X FIX> <CHTYPE .OX FIX>>
<SET NORD <+ 1 .NORD>>
<PRINC " [out of order!]">)>
<SET X1 <ANDB .X #WORD *037777677777*>>
<COND (<L? <CHTYPE .X1 FIX> <CHTYPE .OX1 FIX>>
<SET NORD <+ 1 .NORD>>
<PRINC " [out of order!]">)
(<==? .X1 .OX1>
<SET NDUP <+ 1 .NDUP>>
<PRINC " [duplicate!]">)>
<SET OX .X>
<SET OX1 .X1>
<COND (<0? <SET N <- .N 1>>> <RETURN>)>
<SET BUF <REST .BUF .VLEN>>>
<CRLF>
<PRINC "Errors found: " ,OUTCHAN>
<COND (<AND <0? .NDUP> <0? .NORD>>
<PRINC "none" ,OUTCHAN>)>
<COND (<NOT <0? .NDUP>>
<PRINC .NDUP ,OUTCHAN>
<PRINC " duplications " ,OUTCHAN>)>
<COND (<NOT <0? .NORD>>
<PRINC .NORD ,OUTCHAN>
<PRINC " out of order " ,OUTCHAN>)>
<CRLF ,OUTCHAN>
<CLOSE .OUTCHAN>)>>
<SETG ZWORD-BUF <IBYTES 5 6>>
<GDECL (ZWORD-BUF) <BYTES 5>>
<DEFINE ZWORD-PRINT (X)
<1 ,ZWORD-BUF <CHTYPE <LSH .X -26> FIX>>
<2 ,ZWORD-BUF <CHTYPE <LSH .X -21> FIX>>
<3 ,ZWORD-BUF <CHTYPE <LSH .X -16> FIX>>
<4 ,ZWORD-BUF <CHTYPE <LSH .X -10> FIX>>
<5 ,ZWORD-BUF <CHTYPE <LSH .X -5> FIX>>
<6 ,ZWORD-BUF <CHTYPE .X FIX>>
<REPEAT ((N 0) CH (CASE 0) (TCASE -1))
#DECL ((N CH CASE TCASE) FIX)
<COND (<L? 6 <SET N <+ 1 .N>>> <RETURN>)>
<SET CH <NTH ,ZWORD-BUF .N>>
<COND (<0? .CH> <PRINC " "> <SET TCASE -1>)
(<G? 4 .CH>
<PRINC "F">
<PRINC <ASCII <+ 48 .CH>>>
<SET TCASE -1>)
(<AND <==? -1 .TCASE> <SET TCASE .CASE> <>>)
(<==? 4 .CH>
<COND (<0? .TCASE> <SET TCASE 1>)
(<1? .TCASE> <SET CASE 1>)
(T <SET CASE 0>)>)
(<==? 5 .CH>
<COND (<0? .TCASE> <SET TCASE 2>)
(<1? .TCASE> <SET CASE 0>)
(T <SET CASE 2>)>)
(<0? .TCASE> <PRINC <ASCII <+ 91 .CH>>> <SET TCASE -1>)
(<1? .TCASE> <PRINC <ASCII <+ 59 .CH>>> <SET TCASE -1>)
(<==? 6 .CH>
<PRINC <ASCII <+ <NTH ,ZWORD-BUF <+ 2 .N>>
<* 32 <NTH ,ZWORD-BUF <+ 1 .N>>>>>>
<SET N <+ 2 .N>>
<SET TCASE -1>)
(T<PRINC <NTH ,SPEC-CHARS <- .CH 6>>> <SET TCASE -1>)>>>
<SETG SPEC-CHARS "|0123456789.,!?_#'\"/\\-:()">
<GDECL (SPEC-CHARS) STRING>

74
vocab.noun Normal file
View File

@@ -0,0 +1,74 @@
AIR ALARM AMY ANTRIM AQUADO
AREA ARM ARMS ARROW ARTICL
ASSIST AUTO AUTOMA AUTOPI BADGE
BADGES BAY BAZOOK BEAM BED
BELL BENCH BILL BIOCEP BLIP
BLUEPR BLY BOAT BOOK BOX
BOY BREAK BREAKE BREEZE BUMPER
BUNCH BUNK BUSINE BUTTON BUZZER
CABINE CABLE CALL CANIST CAPSUL
CAT CENTER CENTRE CHAIR CHAIRS
CHARGE CHEMIC CHORE CIRCUI CLAW
CLAWS CLOSET CLUE CLUSTE COMMAN
COMPAN COMPUT CONTAC CONTEN CONTRO
CORRID COUNTE COVER CREATU CREW
CRUISE CRUSH CYLIND DAMAGE DANGER
DART DECK DEPOSI DEPTH DEPTHF
DESK DESTRO DEVICE DIAGRA DIARY
DIRECT DIVER DIVERS DIVING DOC
DOCK DOME DOOR DOORWA DORM
DORMIT DRAWER ELECTR ENGINE ENTRAN
EQUIPM EVIDEN EXPERT EXPLOS FAST
FASTER FIELD FILE FILES FINDER
FLIP FLOOR FREIGH FURNIT GALLEY
GAME GANGPL GASH GATE GATES
GAUGE GAUGES GEAR GEARS GENERA
GIRL GREENU GRID GRIDS GROUND
GUN HALF HALL HALLWA HANDLE
HATCH HE HELP HER HERE
HERSEL HIGH HIM HIMSEL HINT
HOLE HOOK HORVAK HOUSIN HYDROJ
HYDROP I IDEA INSERT INSTAL
INSTRU INTERC IT JEROME JOB
JOYSTI JUNK KEEL KEMP KEY
KNOB KNOBS LAB LABORA LADDER
LEFT LEVER LIGHT LIGHTS LOAD
LOCKER LOGBOO LOT LOW LOWELL
M MACHIN MAG MAGAZI MAN
MANUAL MARV MATERI MATTER MAXIMU
ME MECHAN MEDIC MEDIUM MESS
METER METERS METRES MICK MICROP
MIKE MINIMU MINUTE MOISTU MONITO
MONSTE MORE MOTIVE MOUNT MYSELF
NEEDLE NEWSPA NODULE NOTHIN OBJECT
OCEAN OFF OFFICE OPERAT OVERHE
OXYGEN P PAGE PANEL PAPER
PAPERS PART PARTS PHONE PHOTO
PHOTOG PICTUR PILOT PLACE PLAN
PLANS PLATE POD PORCH PORT
POWER PROBLE PUT RAMP RANDAL
REACTO REASON RECEIV REGULA RELAY
REPORT RIGHT ROOF ROOM RUNWAY
SABOTA SAILOR SATELL SB SCANNE
SCIMIT SCOPE SCREEN SEA SEACAT
SEASTA SEAT SEAWAT SECTIO SHARON
SHE SHELF SHELVE SHIP SHOP
SHUT SIEGEL SIGN SIGNAL SLOW
SLOWER SLUG SMASH SNAPSH SNARK
SOMETH SONAR SONARP SONARS SOS
SOUND SPACE SPEAKE SPEED SQUARE
STAIN STARBO STARTE STATIO STICK
STILL STOP STORY STRAW STUFF
SUB SUBMAR SUMMON SUPPLI SUPPLY
SURFAC SWING SWITCH SYRING SYSTEM
TABLE TANK TEAR TECHNI TEMPER
TESTER TESTOR THEM THEY THING
THIS THORPE THREAT THROTT TIP
TOOL TOP TRACK TRACTO TRAITO
TRANSM TRAP TURBIN TURN TURNS
UNDERW UNIT UNLIMI US VALVE
VALVES VIDEOP VIEWPO WALKWA WALL
WALT WARNIN WATER WE WEAPON
WHALE WIND WINDOW WOMAN WORK
WORKBE WORKCO WORKSH WRENCH YOU
YOURSE

5
vocab.prep Normal file
View File

@@ -0,0 +1,5 @@
ABOUT AGAINS AROUND AT AWAY
BEHIND BY DOWN FOR FROM
IN OFF ON OUT OVER
RID THROUG TILL TO UNDER
UNTIL UP WITH

23
vocab.verb Normal file
View File

@@ -0,0 +1,23 @@
ADJUST AIM ANSWER APPLY ARM
ARREST ASK ATTACK BRIEF BRING
BRUSH CALL CLIMB CLOSE COME
CONFRO CUT DAMAGE DIAGNO DISCUS
DIVE DOCK DRINK DROP EAT
EMPTY ENTER EXAMIN EXTING FILL
FIND FIRE FIT FIX FOLLOW
GOODBY HAND HANG HELLO HELP
HIDE I INVENT KILL KISS
KNOCK LAUNCH LEAVE LEVEL LISTEN
LOCK LOOK MAKE MATCH MOVE
NAME NO NOD OPEN PICK
PLACE PLAY PULL PUMP PUSH
QUIT RAISE READ RELEAS RESTAR
RESTOR RING RISE RUB SAVE
SAY SCORE SCREW SCRIPT SEARCH
SEND SET SHOW SIT SLAP
SMELL SMILE SMOKE STAND START
STOP STRIKE SUPER SURFAC SWIM
SWITCH TAKE TELL TEST THANKS
THROW TIE TURN UNLOCK UNSCRI
UNTIE USE VERBOS WAIT WAKE
WALK YELL YES

201
zork1.script Normal file
View File

@@ -0,0 +1,201 @@
ZORK I: The Great Underground Empire
Copyright (c) 1981, 1982, 1983 Infocom, Inc. All rights reserved.
ZORK is a registered trademark of Infocom, Inc.
Revision 64 / Serial number 830915
The Troll Room
This is a small room with passages to the east and south and a forbidding
hole leading west. Bloodstains and deep scratches (perhaps made by
an axe) mar the walls.
A nasty-looking troll, brandishing a bloody axe, blocks all passages
out of the room.
Your sword has begun to glow very brightly.
>TROLL, HELLO
The troll isn't much of a conversationalist.
>STAB TROLL
Clang! Crash! The troll parries.
The axe gets you right in the side. Ouch!
>ATTACK TROLL
(with the sword)
Clang! Crash! The troll parries.
The troll neatly removes your head.
It appears that that last blow was too much for you. I'm afraid you
are dead.
**** You have died ****
The Troll Room
This is a small room with passages to the east and south and a forbidding
hole leading west. Bloodstains and deep scratches (perhaps made by
an axe) mar the walls.
A nasty-looking troll, brandishing a bloody axe, blocks all passages
out of the room.
Your sword has begun to glow very brightly.
The axe crashes against the rock, throwing sparks!
>ATTACK TROLL WITH SWORD
Clang! Crash! The troll parries.
The troll swings his axe, but it misses.
>THRUST
(sword)
Whoosh!
The troll swings, you parry, but the force of his blow knocks your
sword away.
>GET SWORD
Taken.
The troll's axe barely misses your ear.
>HIT TROLL
(with the sword)
You charge, but the troll jumps nimbly aside.
The axe sweeps past as you jump aside.
>STAB IT
You charge, but the troll jumps nimbly aside.
The troll swings his axe, and it nicks your arm as you dodge.
>DIAGNOSE
You have a light wound, which will be cured after 30 moves.
You can be killed by one more light wound.
The axe crashes against the rock, throwing sparks!
>ATTACK TROLL WITH SWORD
The troll is battered into unconsciousness.
>TAKE THE AXE
Taken.
>WAKE UP TROLL
The troll is rudely awakened.
The troll stirs, quickly resuming a fighting stance.
The troll, disarmed, cowers in terror, pleading for his life in the
guttural tongue of the trolls.
>GIVE THE AXE TO THE TROLL
The troll scratches his head in confusion, then takes the axe.
The troll neatly removes your head.
It appears that that last blow was too much for you. I'm afraid you
are dead.
**** You have died ****
The Troll Room
This is a small room with passages to the east and south and a forbidding
hole leading west. Bloodstains and deep scratches (perhaps made by
an axe) mar the walls.
A nasty-looking troll, brandishing a bloody axe, blocks all passages
out of the room.
Your sword has begun to glow very brightly.
The axe gets you right in the side. Ouch!
>STAB TROLL
The troll's weapon is knocked to the floor, leaving him unarmed.
The troll, angered and humiliated, recovers his weapon. He appears
to have an axe to grind with you.
>FIGHT TROLL
(with the sword)
The fatal blow strikes the troll square in the heart: He dies.
Almost as soon as the troll breathes his last breath, a cloud of sinister
black fog envelops him, and when the fog lifts, the carcass has disappeared.
Your sword is no longer glowing.
>TAKE AXE
Taken.
The Troll Room
This is a small room with passages to the east and south and a forbidding
hole leading west. Bloodstains and deep scratches (perhaps made by
an axe) mar the walls.
A nasty-looking troll, brandishing a bloody axe, blocks all passages
out of the room.
Your sword has begun to glow very brightly.
>THROW LANTERN AT TROLL
The troll, who is remarkably coordinated, catches the brass lantern
and not having the most discriminating tastes, gleefully eats it.
You are left in the dark...
>STAB TROLL
It's too dark to see!
>FIND TROLL
It's too dark to see!
>EXAMINE SWORD
Your sword is glowing very brightly.
>ATTACK TROLL
(with the sword)
It's too dark to see!
>FIND LIGHT
It's too dark to see!
>S
Oh, no! A lurking grue slithered into the room and devoured you!
**** You have died ****
The Troll Room
This is a small room with passages to the east and south and a forbidding
hole leading west. Bloodstains and deep scratches (perhaps made by
an axe) mar the walls.
A nasty-looking troll, brandishing a bloody axe, blocks all passages
out of the room.
Your sword has begun to glow very brightly.
>KNOCK AXE
That sentence isn't one I recognize.
>THROW SWORD
(at the troll)
The troll, who is remarkably coordinated, catches the sword and, being
for the moment sated, throws it back. Fortunately, the troll has poor
control, and the sword falls to the floor. He does not look pleased.
The axe gets you right in the side. Ouch!
>TAKE SWORD
Taken.
The axe hits your sword and knocks it spinning.
>AGAIN
Taken.
The troll neatly removes your head.
It appears that that last blow was too much for you. I'm afraid you
are dead.
**** You have died ****