seastalker/battle.zap
historicalsource 7ef7f3e553 Final Revision
2019-04-13 22:35:09 -04:00

748 lines
20 KiB
Plaintext

.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