cutthroats/boat.zap

917 lines
23 KiB
Plaintext

.FUNCT FERRY-F
EQUAL? PRSA,V?CLIMB-ON,V?THROUGH,V?BOARD \?ELS5
IN? FERRY,FERRY-LANDING \?ELS10
EQUAL? HERE,FERRY-LANDING \?ELS15
CALL TELL-CANT-BOARD
RSTACK
?ELS15: CALL TELL-YOURE-NOT,STR?303
RSTACK
?ELS10: PRINTR "It's not at the landing. Be patient."
?ELS5: EQUAL? PRSA,V?WALK-TO \?ELS23
EQUAL? HERE,FERRY-LANDING /?ELS23
CALL TELL-SHD-DIR
RSTACK
?ELS23: EQUAL? PRSA,V?LISTEN \FALSE
PRINTR "You hear its engines."
.FUNCT TELL-CANT-BOARD
CALL TELL-DONT-HAVE,STR?304
RSTACK
.FUNCT GLOBAL-FERRY-F
EQUAL? PRSA,V?FIND,V?TELL,V?ASK-ABOUT /FALSE
CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-FERRY
RSTACK
.FUNCT MM-FORE-DECK-F,RARG
EQUAL? RARG,M-LOOK \FALSE
CALL TELL-FORE-END,SALVAGER
RSTACK
.FUNCT TELL-FORE-END,OBJ
PRINTI "You are at the fore end of the "
CALL DPRINT,OBJ
PRINTR ". You can see the ocean over the rail that runs around the deck. A ladder leads below deck, and the wheelhouse is aft of you. A chair is bolted to the deck."
.FUNCT DECK-CHAIR-F,RARG=0
EQUAL? RARG,M-OBJDESC \?ELS5
IN? PETE,DECK-CHAIR \TRUE
CALL TELL-IN-CHAIR,PETE
RTRUE
?ELS5: ZERO? RARG \FALSE
EQUAL? PRSA,V?EXAMINE \?ELS15
PRINTI "This weatherbeaten chair is used by a lookout while standing watch. It faces forward and is bolted to the deck. "
IN? PETE,DECK-CHAIR \?CND18
CALL TELL-IN-CHAIR,PETE
?CND18: CRLF
RTRUE
?ELS15: EQUAL? PRSA,V?ASK-ABOUT \?ELS22
PRINTR """It's the lookout's chair."""
?ELS22: EQUAL? PRSA,V?PUT-ON,V?PUT \?ELS26
EQUAL? PRSI,DECK-CHAIR \?ELS26
CALL IDROP
ZERO? STACK /TRUE
IN? PLAYER,DECK-CHAIR \?CND32
LOC DECK-CHAIR
MOVE PRSO,STACK
?CND32: PRINTR "It slides off the chair and onto the deck."
?ELS26: EQUAL? PRSA,V?BOARD \FALSE
IN? PETE,DECK-CHAIR \FALSE
CALL TELL-ALREADY,STR?305
RSTACK
.FUNCT TELL-IN-CHAIR,OCC
CALL START-SENTENCE,OCC
PRINTR " is sitting in the chair."
.FUNCT MM-PORT-DECK-F,RARG,DOCK?
EQUAL? RARG,M-ENTER \?ELS5
MOVE BUNK,MM-CREW-QTRS
MOVE UNDER-BUNK,MM-CREW-QTRS
MOVE STOVE,MM-GALLEY
MOVE DECK-CHAIR,MM-FORE-DECK
MOVE REDS-BUNK,MM-CAPT-CABIN
MOVE LOUNGE-CHAIR,MM-LOUNGE
IN? PETE,MM-GALLEY \?CND6
MOVE FOOD,STOVE
FSET FOOD,NDESCBIT
?CND6: ZERO? WATER-DELIVERED /FALSE
EQUAL? SHIP-CHOSEN,SALVAGER \FALSE
MOVE DRINKING-WATER,MM-GALLEY
FSET DRINKING-WATER,NDESCBIT
RFALSE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
CALL TELL-FOO-SIDE,SALVAGER,STR?184,STR?183
RTRUE
.FUNCT TELL-FOO-SIDE,OBJ,SIDE,HOUSE,DOCK?
PRINTI "You are on the "
PRINT SIDE
PRINTI " side of the "
CALL DPRINT,OBJ
PRINTI ", a sturdy vessel designed for "
EQUAL? OBJ,TRAWLER \?ELS5
PRINTI "trawling"
JUMP ?CND3
?ELS5: PRINTI "deep-sea salvaging"
?CND3: PRINTI ". To "
PRINT HOUSE
PRINTI " is a small wheelhouse, while "
EQUAL? OBJ,TRAWLER \?ELS16
SET 'DOCK?,TRAWLER-DOCKED
JUMP ?CND14
?ELS16: SET 'DOCK?,SALVAGER-DOCKED
?CND14: ZERO? DOCK? /?ELS23
PRINTI "to "
PRINT SIDE
PRINTR " is the gangway leading to the dock. The gentle rocking of the boat in port reminds you of time spent on the open sea."
?ELS23: PRINTI "the ocean, with its blue-green waves crashing, lies off the "
PRINT SIDE
PRINTR " rail."
.FUNCT TELL-AFT-DECK
PRINTI "The smell of diesel fuel is strong but reassuring here on the aft deck. A ladder leads below deck, while forward you can see the entrance to the command center of the boat, the wheelhouse."
RTRUE
.FUNCT MM-AFT-DECK-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
CALL TELL-AFT-DECK
PRINTR " A huge air compressor is bolted to the deck by the aft rail."
?ELS5: EQUAL? RARG,M-BEG \?ELS9
EQUAL? PRSA,V?WALK \FALSE
IN? AIR-HOSE,DEEP-SUIT \FALSE
IN? DEEP-SUIT,PLAYER \FALSE
PRINTI "You don't want to drag the "
CALL DPRINT,AIR-HOSE
PRINTR " around the boat."
?ELS9: EQUAL? RARG,M-FLASH \FALSE
IN? WEASEL,MM-AFT-DECK \FALSE
ZERO? AT-SEA /FALSE
ZERO? WEASEL-APPREHENDED \FALSE
CALL QUEUED?,I-PENDULUM
ZERO? STACK \FALSE
CALL QUEUE,I-PENDULUM,-1
PUT STACK,0,1
CALL TELL-WEASEL-TOSSES
RSTACK
.FUNCT TELL-WEASEL-TOSSES
FCLEAR LINE-HACK,INVISIBLE
LOC WEASEL
MOVE LINE-HACK,STACK
PRINTI "The Weasel tosses a line over the side and says, "
PRINT LINE-STR
CRLF
RTRUE
.FUNCT LINE-HACK-F,HOLDER=0
LOC LINE-HACK
IN? WEASEL,STACK \?ELS3
SET 'HOLDER,WEASEL
JUMP ?CND1
?ELS3: LOC LINE-HACK
IN? JOHNNY,STACK \?CND1
SET 'HOLDER,JOHNNY
?CND1: EQUAL? PRSA,V?EXAMINE \?ELS10
ZERO? HOLDER /?ELS15
CALL START-SENTENCE,HOLDER
PRINTI " is holding one end of a weighted "
CALL DPRINT,LINE-HACK
PRINTR "."
?ELS15: PRINTI "One end of "
CALL APRINT,LINE-HACK
PRINTR " is here. Leave it alone."
?ELS10: EQUAL? PRSA,V?ASK-ABOUT,V?FIND /FALSE
ZERO? HOLDER /?ELS31
CALL START-SENTENCE,HOLDER
PRINTR " pulls it away. ""Don't mess with that!"""
?ELS31: PRINTR "Leave it alone."
.FUNCT MM-COMPRESSOR-F,TICK
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5
CALL TELL-NO-NO
RSTACK
?ELS5: EQUAL? PRSA,V?PUT \?ELS7
EQUAL? PRSI,MM-COMPRESSOR \?ELS7
PRINTR "There's no place to put it."
?ELS7: EQUAL? PRSA,V?EXAMINE \?ELS13
PRINTI "The large, gasoline-powered air compressor is "
FSET? MM-COMPRESSOR,ONBIT \?ELS18
PRINTI "on"
JUMP ?CND16
?ELS18: PRINTI "off"
?CND16: PRINTI ". You can quickly see it "
CALL INT,I-MM-COMPRESSOR
GET STACK,C-TICK >TICK
ZERO? TICK \?ELS29
PRINTI "is out of fuel"
JUMP ?CND27
?ELS29: EQUAL? TICK,80 \?ELS36
PRINTI "has"
JUMP ?CND34
?ELS36: PRINTI "started with"
?CND34: PRINTI " fuel for an hour and a half's operation"
?CND27: PRINTI ". A retractable "
CALL DPRINT,AIR-HOSE
PRINTR " is built in."
?ELS13: EQUAL? PRSA,V?LAMP-ON \?ELS48
FSET? MM-COMPRESSOR,ONBIT \?ELS53
CALL TELL-ALREADY,STR?56
RSTACK
?ELS53: CALL INT,I-MM-COMPRESSOR
PUT STACK,0,1
FSET MM-COMPRESSOR,ONBIT
PRINTR "Okay. The compressor is on."
?ELS48: EQUAL? PRSA,V?LAMP-OFF \?ELS59
FSET? MM-COMPRESSOR,ONBIT \?ELS64
CALL INT,I-MM-COMPRESSOR
PUT STACK,0,0
FCLEAR MM-COMPRESSOR,ONBIT
CALL TELL-NOW,MM-COMPRESSOR,STR?264
RSTACK
?ELS64: CALL TELL-ALREADY,STR?264
RSTACK
?ELS59: EQUAL? PRSA,V?LISTEN \FALSE
FSET? MM-COMPRESSOR,ONBIT \FALSE
PRINTR "The compressor is making a steady loud noise."
.FUNCT AIR-HOSE-F
EQUAL? PRSA,V?EXAMINE \?ELS5
IN? AIR-HOSE,DEEP-SUIT \?ELS10
GETP HERE,P?LINE
EQUAL? STACK,UNDERWATER-LINE-C \?ELS15
PRINTI "This "
CALL DPRINT,AIR-HOSE
PRINTI " goes from the aft deck of the "
CALL DPRINT,SALVAGER
PRINTR " and ends at your diving suit. Without it, you would find breathing impossible."
?ELS15: PRINTI "It connects the "
CALL DPRINT,DEEP-SUIT
PRINTI " and the "
CALL DPRINT,MM-COMPRESSOR
PRINTI " "
EQUAL? HERE,MM-AFT-DECK \?ELS24
PRINTI "here"
JUMP ?CND22
?ELS24: PRINTI "on the aft deck"
?CND22: PRINTR "."
?ELS10: PRINTI "It is designed to be connected to a "
CALL DPRINT,DEEP-SUIT
PRINTR " to provide air and is about 600 feet long."
?ELS5: EQUAL? PRSA,V?TIE,V?PUT \?ELS38
EQUAL? PRSI,DEEP-SUIT /?THN41
EQUAL? PRSO,DEEP-SUIT \?ELS38
?THN41: IN? AIR-HOSE,DEEP-SUIT \?ELS47
CALL TELL-ALREADY,STR?308
RSTACK
?ELS47: MOVE AIR-HOSE,DEEP-SUIT
CALL TELL-NOW,AIR-HOSE,CONNECT-STR
RSTACK
?ELS38: EQUAL? PRSA,V?TAKE \?ELS51
IN? AIR-HOSE,DEEP-SUIT \?ELS56
CALL TELL-ALREADY,CONNECT-STR
RSTACK
?ELS56: PRINTI "Why drag it around? Just connect it to the "
CALL DPRINT,DEEP-SUIT
PRINTR "."
?ELS51: EQUAL? PRSA,V?TIE \?ELS62
CALL TELL-YOU-CANT,STR?309
RSTACK
?ELS62: EQUAL? PRSA,V?UNTIE \?ELS64
GETP HERE,P?LINE
EQUAL? STACK,UNDERWATER-LINE-C \?ELS69
CALL JIGS-UP,STR?310
RSTACK
?ELS69: MOVE AIR-HOSE,MM-COMPRESSOR
PRINTR "The hose retracts back to the compressor."
?ELS64: EQUAL? PRSA,V?MOVE \?ELS75
PRINTR "That was fun."
?ELS75: EQUAL? PRSA,V?CLIMB-FOO \FALSE
CALL TELL-YOU-CANT,STR?311
RSTACK
.FUNCT TELL-WHEELHOUSE,OBJ
PRINTI " Through the glass windows you see the "
ZERO? AT-SEA /?ELS7
PRINTR "ocean churning all around you."
?ELS7: CALL DPRINT,OBJ
PRINTR " docked at the wharf, and the island stretching aft. Forward, you see the choppy waters of the bay."
.FUNCT MM-WHEELHOUSE-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "You are in the wheelhouse with a passageway leading out onto the deck abaft. You can see the "
CALL DPRINT,MM-COMPRESSOR
PRINTI " sitting there, taking up most of the aft deck."
CALL TELL-WHEELHOUSE,TRAWLER
RTRUE
?ELS5: EQUAL? RARG,M-BEG \FALSE
EQUAL? OCEAN,PRSO,PRSI \FALSE
EQUAL? PRSA,V?EXAMINE \?ELS19
PRINTR "You see the ocean through the window."
?ELS19: EQUAL? PRSA,V?ASK-ABOUT,V?FIND /FALSE
CALL TELL-YOU-CANT,STR?313
RSTACK
.FUNCT COMPRESSOR-PSEUDO,PARG=0
EQUAL? PARG,M-NAME \?ELS5
PUTP PSEUDO-OBJECT,P?SDESC,STR?314
RTRUE
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7
CALL TELL-YOU-CANT,STR?315
RSTACK
?ELS7: CALL TELL-CANT-REACH,STR?316
RSTACK
.FUNCT MM-LOCKER-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are in a relatively empty locker."
PRINT SPARE-PARTS-STR
CRLF
RTRUE
.FUNCT METAL-DETECTOR-F,TMP
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "The "
CALL DPRINT,METAL-DETECTOR
PRINTI "'s label is well-worn. It has a "
CALL DPRINT,DETECTOR-SWITCH
PRINTI " which is currently "
ZERO? DETECTOR-ON /?ELS10
PRINTI "on"
JUMP ?CND8
?ELS10: PRINTI "off"
?CND8: PRINTI ", and a compartment on the side which is "
FSET? DETECTOR-COMPARTMENT,OPENBIT \?ELS22
PRINTI "open"
FIRST? DETECTOR-COMPARTMENT >TMP \?CND20
PRINTI " and contains "
CALL APRINT,TMP
JUMP ?CND20
?ELS22: PRINTI "closed"
?CND20: PRINTR "."
?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS37
SET 'DETECTOR-ON,TRUE-VALUE
CALL TELL-SWITCH,STR?56
RTRUE
?ELS37: EQUAL? PRSA,V?LAMP-OFF \?ELS39
SET 'DETECTOR-ON,FALSE-VALUE
CALL TELL-SWITCH,STR?264
RTRUE
?ELS39: EQUAL? PRSA,V?LISTEN \?ELS41
CALL DETECTOR-NOISE,TRUE-VALUE
RTRUE
?ELS41: EQUAL? PRSA,V?PUT \?ELS43
EQUAL? PRSI,METAL-DETECTOR \?ELS43
CALL PERFORM,V?PUT,PRSO,DETECTOR-COMPARTMENT
RTRUE
?ELS43: EQUAL? PRSA,V?EMPTY,V?CLOSE,V?OPEN \?ELS47
CALL PERFORM,PRSA,DETECTOR-COMPARTMENT
SET 'P-IT-OBJECT,METAL-DETECTOR
RTRUE
?ELS47: EQUAL? PRSA,V?LOOK-INSIDE \?ELS49
CALL PERFORM,V?EXAMINE,DETECTOR-COMPARTMENT
SET 'P-IT-OBJECT,METAL-DETECTOR
RTRUE
?ELS49: EQUAL? PRSA,V?SHAKE \FALSE
FSET? DETECTOR-COMPARTMENT,OPENBIT \?ELS54
FIRST? DETECTOR-COMPARTMENT \?ELS54
MOVE DRY-CELL,HERE
SET 'DETECTOR-POWERED,FALSE-VALUE
PRINTI "The "
CALL DPRINT,DRY-CELL
PRINTR " falls out of the machine."
?ELS54: PRINTR "Nothing happens."
.FUNCT DETECTOR-LABEL-F
EQUAL? PRSA,V?TAKE \FALSE
PRINTR "You tug at it, but it can't be pulled off."
.FUNCT DETECTOR-SWITCH-F
EQUAL? PRSA,V?EXAMINE \?ELS5
ZERO? DETECTOR-ON /?ELS8
CALL TELL-SWITCH,STR?56
RTRUE
?ELS8: CALL TELL-SWITCH,STR?264
RTRUE
?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS13
CALL PERFORM,V?LAMP-ON,METAL-DETECTOR
SET 'P-IT-OBJECT,DETECTOR-SWITCH
RTRUE
?ELS13: EQUAL? PRSA,V?LAMP-OFF \?ELS15
CALL PERFORM,V?LAMP-OFF,METAL-DETECTOR
SET 'P-IT-OBJECT,DETECTOR-SWITCH
RTRUE
?ELS15: EQUAL? PRSA,V?THROW,V?MOVE,V?TURN \FALSE
ZERO? DETECTOR-ON /?ELS20
CALL PERFORM,V?LAMP-OFF,METAL-DETECTOR
JUMP ?CND18
?ELS20: CALL PERFORM,V?LAMP-ON,METAL-DETECTOR
?CND18: SET 'P-IT-OBJECT,DETECTOR-SWITCH
RTRUE
.FUNCT DETECTOR-COMPARTMENT-F,RARG=0
EQUAL? RARG,M-CONT \?ELS5
EQUAL? PRSA,V?TAKE \FALSE
EQUAL? PRSO,DRY-CELL \FALSE
CALL ITAKE
ZERO? STACK /TRUE
PRINTI "Taken."
CRLF
ZERO? DETECTOR-POWERED /TRUE
SET 'DETECTOR-POWERED,FALSE-VALUE
RTRUE
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS23
FSET? DETECTOR-COMPARTMENT,OPENBIT \?ELS26
PRINTI "The compartment is on the side of the machine. Inside "
FIRST? DETECTOR-COMPARTMENT \?ELS31
PRINTI "is a connected"
JUMP ?CND29
?ELS31: PRINTI "are connections for a"
?CND29: PRINTI " nine-volt "
CALL DPRINT,DRY-CELL
PRINTR "."
?ELS26: CALL TELL-CLOSED,STR?319
RTRUE
?ELS23: EQUAL? PRSA,V?PUT \?ELS43
EQUAL? PRSO,DETECTOR-COMPARTMENT /FALSE
FSET? DETECTOR-COMPARTMENT,OPENBIT /?ELS50
CALL TELL-CLOSED,STR?320
RSTACK
?ELS50: EQUAL? PRSO,DRY-CELL \?ELS52
MOVE DRY-CELL,DETECTOR-COMPARTMENT
FSET? DRY-CELL,RMUNGBIT /?CND53
SET 'DETECTOR-POWERED,TRUE-VALUE
?CND53: PRINTI "The "
CALL DPRINT,DRY-CELL
PRINTR " fits snugly inside."
?ELS52: PRINTR "Unfortunately, it doesn't fit."
?ELS43: EQUAL? PRSA,V?OPEN \?ELS63
IN? DRY-CELL,DETECTOR-COMPARTMENT \?ELS63
GETP HERE,P?LINE
EQUAL? STACK,UNDERWATER-LINE-C \?ELS63
CALL AIRTIGHT-ROOM?
ZERO? STACK \?ELS63
FSET DRY-CELL,RMUNGBIT
SET 'DETECTOR-POWERED,FALSE-VALUE
RFALSE
?ELS63: EQUAL? PRSA,V?EMPTY \FALSE
FSET? DETECTOR-COMPARTMENT,OPENBIT \FALSE
SET 'DETECTOR-POWERED,FALSE-VALUE
RFALSE
.FUNCT DEEP-SUIT-F
EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5
CALL TELL-NO-NO
RSTACK
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7
PRINTI "This "
CALL DPRINT,DEEP-SUIT
PRINTR " is bulky on land, but underwater it will protect you to 500 feet. It has a hood with ""viewport"" and a connection for a compressor hose."
?ELS7: EQUAL? PRSA,V?PUT \?ELS11
EQUAL? PRSI,DEEP-SUIT \?ELS11
EQUAL? PRSO,AIR-HOSE /?ELS11
CALL TELL-NO-NO
RSTACK
?ELS11: EQUAL? PRSA,V?WEAR \?ELS15
FSET? WET-SUIT,WORNBIT \?ELS15
CALL TELL-NO-FIT,STR?321
RSTACK
?ELS15: EQUAL? PRSA,V?DISEMBARK,V?THROW,V?DROP \FALSE
GETP HERE,P?LINE
EQUAL? STACK,UNDERWATER-LINE-C \FALSE
CALL JIGS-UP,STR?322
RSTACK
.FUNCT MM-CREW-QTRS-F,RARG,W
EQUAL? RARG,M-LOOK \?ELS5
CALL TELL-CREW-QTRS
RTRUE
?ELS5: EQUAL? RARG,M-ENTER \FALSE
CALL MOVE-SHARED-OBJECTS,MM-CREW-QTRS
RFALSE
.FUNCT BUNK-F,RARG=0,F
ZERO? RARG \FALSE
EQUAL? PRSA,V?SLEEP,V?BOARD \?ELS10
FIRST? BUNK >F \?ELS16
EQUAL? F,PLAYER \?THN13
?ELS16: CALL WEARING-SOMETHING?
ZERO? STACK /?ELS10
?THN13: CALL TELL-NOT-COMFORTABLE
RSTACK
?ELS10: EQUAL? PRSA,V?HIDE-UNDER,V?PUT-UNDER \?ELS18
EQUAL? PRSO,GLOBAL-SELF,ME \?ELS23
PRINTR "You won't fit."
?ELS23: GETP PRSO,P?SIZE
LESS? STACK,5 \?ELS27
FIRST? UNDER-BUNK \?ELS32
CALL TELL-NO-FIT
RSTACK
?ELS32: MOVE PRSO,UNDER-BUNK
FSET PRSO,NDESCBIT
CALL TELL-NOW,PRSO,STR?323
RSTACK
?ELS27: CALL TELL-NO-FIT
RSTACK
?ELS18: EQUAL? PRSA,V?LOOK-UNDER \FALSE
FIRST? UNDER-BUNK >F \?ELS43
SET 'P-IT-OBJECT,F
PRINTI "There is "
CALL APRINT,F
PRINTR " under the mattress."
?ELS43: PRINTR "Nobody's hidden his life savings there."
.FUNCT WEARING-SOMETHING?,F
FIRST? PLAYER >F /?KLU12
?KLU12:
?PRG1: ZERO? F /FALSE
FSET? F,WORNBIT \?ELS7
EQUAL? F,WATCH \TRUE
?ELS7: NEXT? F >F /?KLU13
?KLU13: JUMP ?PRG1
.FUNCT UNDER-BUNK-F,RARG=0
EQUAL? RARG,M-OBJDESC /TRUE
EQUAL? RARG,M-CONT \FALSE
EQUAL? PRSA,V?TAKE \FALSE
FCLEAR PRSO,NDESCBIT
RFALSE
.FUNCT BUNKS-PSEUDO,PARG=0
EQUAL? PARG,M-NAME \?ELS5
PUTP PSEUDO-OBJECT,P?SDESC,STR?324
RTRUE
?ELS5: PRINTR "The only bunk you should worry about is your own."
.FUNCT MM-GALLEY-F,RARG
CALL GENERIC-GALLEY-F,RARG,MM-GALLEY
RSTACK
.FUNCT GENERIC-GALLEY-F,RARG,PLACE,?TMP1
EQUAL? RARG,M-ENTER \?ELS5
PUTP GLOBAL-SURFACE,P?SDESC,STR?36
CALL MOVE-SHARED-OBJECTS,PLACE
RFALSE
?ELS5: EQUAL? RARG,M-LOOK \?ELS7
PRINTI "You are in the "
EQUAL? PLACE,MM-GALLEY \?ELS12
CALL DPRINT,SALVAGER
JUMP ?CND10
?ELS12: CALL DPRINT,TRAWLER
?CND10: PRINTI "'s galley. A stove and a small table are the fixtures here."
IN? FOOD,STOVE \?CND21
CALL TELL-STEW-ON
?CND21: ZERO? WATER-DELIVERED /?CND24
GETP SHIP-CHOSEN,P?LINE >?TMP1
GETP PLACE,P?LINE
EQUAL? ?TMP1,STACK \?CND24
PRINTI " Water is available."
?CND24: PRINTR " A ladder leads up through the deck to the wheelhouse for feeding the captain in rough weather."
?ELS7: EQUAL? RARG,M-BEG \FALSE
CALL DOUBLE-DUTY-CHECK
ZERO? STACK \TRUE
RFALSE
.FUNCT DOUBLE-DUTY-CHECK
EQUAL? PRSA,V?ASK-FOR \FALSE
EQUAL? PRSO,PETE \FALSE
EQUAL? PRSI,FOOD \?ELS12
ZERO? SOUPS-ON /?ELS17
PRINTI """Take some "
CALL DPRINT,GLOBAL-SELF
PRINTR "."""
?ELS17: PRINTR """Wait 'til it's ready."""
?ELS12: EQUAL? PRSI,DRINKING-WATER \FALSE
PRINTI """Take it "
CALL DPRINT,GLOBAL-SELF
PRINTR "."""
.FUNCT TELL-STEW-ON,LEAD?=1
ZERO? LEAD? /?CND1
PRINTI " "
?CND1: PRINTI "A pot of stew is simmering on the stove."
RTRUE
.FUNCT STOVE-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTI "The small stove rests on gimbals that keep it relatively level."
IN? FOOD,STOVE \?CND8
CALL TELL-STEW-ON
?CND8: CRLF
RTRUE
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS12
IN? FOOD,STOVE \?ELS12
CALL TELL-STEW-ON,FALSE-VALUE
CRLF
RTRUE
?ELS12: EQUAL? PRSA,V?LAMP-OFF,V?LAMP-ON \FALSE
PRINTR "That's Pete's job."
.FUNCT MM-LOUNGE-F,RARG
EQUAL? RARG,M-ENTER \FALSE
PUTP GLOBAL-SURFACE,P?SDESC,STR?36
CALL MOVE-SHARED-OBJECTS,MM-LOUNGE
RFALSE
.FUNCT LOUNGE-CHAIR-F,RARG=0,F
EQUAL? PRSO,CHAIR \FALSE
EQUAL? PRSA,V?BOARD \FALSE
FIRST? CHAIR >F \FALSE
CALL TELL-NOT-COMFORTABLE
RSTACK
.FUNCT REDS-BUNK-F
EQUAL? PRSA,V?SIT,V?SLEEP,V?BOARD /?THN6
EQUAL? PRSA,V?HIDE-UNDER,V?PUT-UNDER,V?SIT-ON /?THN6
EQUAL? PRSA,V?PUT \?ELS5
EQUAL? PRSI,REDS-BUNK \?ELS5
?THN6: PRINTR "You know better than to disturb the captain's bunk!"
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \FALSE
PRINTR "It's shipshape."
.FUNCT MM-ENGINE-ROOM-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are in a tiny cabin with barely enough room to breathe. By your feet lie the huge diesel engines of the "
CALL DPRINT,SALVAGER
PRINTR "."
.FUNCT ENGINE-PSEUDO,PARG=0
EQUAL? PARG,M-NAME \?ELS5
PUTP PSEUDO-OBJECT,P?SDESC,STR?328
RTRUE
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7
PRINTR "The engines are extremely complex and delicate pieces of machinery."
?ELS7: EQUAL? PRSA,V?PLUG,V?LAMP-OFF,V?LAMP-ON \?ELS11
PRINTI "Leave the engines to "
CALL DPRINT,WEASEL
PRINTR " and he'll leave the diving to you."
?ELS11: EQUAL? PRSA,V?ASK-ABOUT \?ELS15
EQUAL? PRSO,WEASEL \?ELS15
PRINTR """These are in pretty good shape."""
?ELS15: EQUAL? PRSA,V?LISTEN \FALSE
ZERO? AT-SEA /FALSE
CALL TELL-YOU-CANT,STR?329
RSTACK
.FUNCT NW-FORE-DECK-F,RARG
EQUAL? RARG,M-LOOK \FALSE
CALL TELL-FORE-END,TRAWLER
RSTACK
.FUNCT NW-STARBOARD-DECK-F,RARG
EQUAL? RARG,M-ENTER \?ELS5
MOVE BUNK,NW-CREW-QTRS
MOVE UNDER-BUNK,NW-CREW-QTRS
MOVE STOVE,NW-GALLEY
MOVE DECK-CHAIR,NW-FORE-DECK
MOVE REDS-BUNK,NW-CAPT-CABIN
MOVE LOUNGE-CHAIR,NW-LOUNGE
IN? PETE,NW-GALLEY \?CND6
MOVE FOOD,STOVE
FSET FOOD,NDESCBIT
?CND6: ZERO? WATER-DELIVERED /FALSE
EQUAL? TRAWLER,SHIP-CHOSEN \FALSE
MOVE DRINKING-WATER,NW-GALLEY
FSET DRINKING-WATER,NDESCBIT
RFALSE
?ELS5: EQUAL? RARG,M-LOOK \FALSE
CALL TELL-FOO-SIDE,TRAWLER,STR?183,STR?184
RTRUE
.FUNCT NW-AFT-DECK-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
CALL TELL-AFT-DECK
CRLF
RTRUE
?ELS5: EQUAL? RARG,M-FLASH \FALSE
IN? WEASEL,NW-AFT-DECK \FALSE
ZERO? AT-SEA /FALSE
ZERO? WEASEL-APPREHENDED \FALSE
CALL QUEUED?,I-PENDULUM
ZERO? STACK \FALSE
CALL QUEUE,I-PENDULUM,-1
PUT STACK,0,1
CALL TELL-WEASEL-TOSSES
RSTACK
.FUNCT NW-WHEELHOUSE-F,RARG
EQUAL? RARG,M-LOOK \?ELS5
PRINTI "You are in the wheelhouse of the "
CALL DPRINT,TRAWLER
PRINTI ". The passageway leading out onto the deck lies abaft."
CALL TELL-WHEELHOUSE,SALVAGER
RTRUE
?ELS5: EQUAL? RARG,M-BEG \FALSE
EQUAL? OCEAN,PRSO,PRSI \FALSE
EQUAL? PRSA,V?EXAMINE \?ELS19
PRINTR "You see the ocean through the window."
?ELS19: CALL TELL-YOU-CANT,STR?313
RSTACK
.FUNCT NW-LOCKER-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are in a fairly empty storage locker. It must have been cleaned out after its last trawling expedition."
PRINT SPARE-PARTS-STR
CRLF
RTRUE
.FUNCT TELL-SWITCH,STR
PRINTI "The switch is now in the """
PRINT STR
PRINTR """ position."
.FUNCT DRILL-F,RARG=0
EQUAL? RARG,M-CONT \?ELS5
EQUAL? PRSA,V?TAKE \FALSE
EQUAL? PRSO,BATTERY \FALSE
CALL ITAKE
ZERO? STACK /TRUE
PRINTI "Taken."
ZERO? DRILL-POWERED /?CND18
SET 'DRILL-POWERED,FALSE-VALUE
ZERO? DRILL-ON /?CND18
CALL INT,I-DRILL
PUT STACK,0,0
PRINTI " The drill bit winds to a halt."
?CND18: CRLF
RTRUE
?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS29
EQUAL? PRSO,DRILL \?ELS29
ZERO? DRILL-ON /?ELS36
CALL TELL-ALREADY,STR?56
RSTACK
?ELS36: ZERO? DRILL-POWERED /?ELS39
SET 'DRILL-ON,TRUE-VALUE
CALL INT,I-DRILL
PUT STACK,0,1
PRINTR "The drill bit begins to spin."
?ELS39: SET 'DRILL-ON,TRUE-VALUE
CALL TELL-SWITCH,STR?56
RSTACK
?ELS29: EQUAL? PRSA,V?LAMP-OFF \?ELS46
EQUAL? PRSO,DRILL \?ELS46
ZERO? DRILL-ON \?ELS53
CALL TELL-ALREADY,STR?264
RSTACK
?ELS53: ZERO? DRILL-POWERED /?ELS55
SET 'DRILL-ON,FALSE-VALUE
CALL INT,I-DRILL
PUT STACK,0,0
PRINTR "The drill bit stops spinning."
?ELS55: SET 'DRILL-ON,FALSE-VALUE
CALL TELL-SWITCH,STR?264
RSTACK
?ELS46: EQUAL? PRSA,V?EXAMINE \?ELS62
PRINTI "This waterproof wonder features a permanent bit"
CALL QUEUED?,I-DRILL
ZERO? STACK /?CND65
PRINTI " which is turning"
?CND65: PRINTI ", a panel which is "
FSET? DRILL,OPENBIT \?ELS74
PRINTI "open"
ZERO? DRILL-POWERED /?ELS79
PRINTI " with a C battery inside"
JUMP ?CND72
?ELS79: PRINTI ", revealing space for a C battery"
JUMP ?CND72
?ELS74: PRINTI "closed"
?CND72: PRINTI ", and a switch which is in the """
ZERO? DRILL-ON /?ELS95
PRINTI "on"
JUMP ?CND93
?ELS95: PRINTI "off"
?CND93: PRINTR """ position."
?ELS62: EQUAL? PRSA,V?LOOK-INSIDE \?ELS106
CALL PERFORM,V?EXAMINE,DRILL
RTRUE
?ELS106: EQUAL? PRSA,V?OPEN \?ELS108
IN? BATTERY,DRILL \?ELS108
GETP HERE,P?LINE
EQUAL? STACK,UNDERWATER-LINE-C \?ELS108
CALL AIRTIGHT-ROOM?
ZERO? STACK \?ELS108
FSET BATTERY,RMUNGBIT
SET 'DRILL-POWERED,FALSE-VALUE
RFALSE
?ELS108: EQUAL? PRSI,DRILL \FALSE
EQUAL? PRSA,V?PUT \?ELS117
FSET? DRILL,OPENBIT /?ELS122
SET 'P-IT-OBJECT,DRILL
CALL TELL-CLOSED,STR?320
RSTACK
?ELS122: EQUAL? PRSO,BATTERY \?ELS124
MOVE BATTERY,DRILL
FSET? BATTERY,RMUNGBIT \?CND125
CALL TELL-NOW,BATTERY,STR?332
RTRUE
?CND125: SET 'DRILL-POWERED,TRUE-VALUE
ZERO? DRILL-ON /?ELS132
CALL INT,I-DRILL
PUT STACK,0,1
PRINTR "The drill bit starts spinning."
?ELS132: CALL TELL-NOW,BATTERY,STR?332
RSTACK
?ELS124: CALL TELL-NO-FIT
RSTACK
?ELS117: EQUAL? PRSA,V?TELL,V?ASK-ABOUT,V?TAKE /FALSE
EQUAL? PRSA,V?PUT-ON,V?PUT-AGAINST /FALSE
ZERO? DRILL-ON /?THN148
ZERO? DRILL-POWERED \FALSE
?THN148: EQUAL? PRSO,GLOBAL-TIME /FALSE
SET 'P-IT-OBJECT,DRILL
PRINTI "The "
CALL DPRINT,DRILL
PRINTR " isn't running!"
.FUNCT GENERIC-HOLE-F
EQUAL? PRSA,V?EXAMINE \?ELS5
PRINTR "As holes go, it's very nice."
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS9
PRINTR "You see nothing new."
?ELS9: EQUAL? PRSA,V?REACH-IN \FALSE
PRINTR "It's not that big."
.FUNCT ADD-HOLE,OBJ,I
FSET? HOLE-1,INVISIBLE \?ELS3
FCLEAR HOLE-1,INVISIBLE
MOVE HOLE-1,OBJ
JUMP ?CND1
?ELS3: FSET? HOLE-2,INVISIBLE \?ELS5
FCLEAR HOLE-2,INVISIBLE
PUTP HOLE-1,P?SDESC,STR?335
MOVE HOLE-2,OBJ
JUMP ?CND1
?ELS5: PRINTI "The drill should be dead now."
CRLF
?CND1: CALL INT,I-DRILL >I
GET I,C-TICK
SUB STACK,1
PUT I,C-TICK,STACK
GET I,C-TICK
ZERO? STACK \TRUE
CALL I-DRILL
RTRUE
.FUNCT TELL-CREW-QTRS
PRINTR "You are below deck in the crew's quarters. Narrow, uncomfortable bunks line the bulkheads, and you note the similarity between this area and a sardine can. Sleeping here is necessary but uninviting. A ladder leads up and out to the fore deck."
.FUNCT NW-CREW-QTRS-F,RARG,W
EQUAL? RARG,M-LOOK \?ELS5
CALL TELL-CREW-QTRS
RSTACK
?ELS5: EQUAL? RARG,M-ENTER \FALSE
CALL MOVE-SHARED-OBJECTS,NW-CREW-QTRS
RFALSE
.FUNCT NW-GALLEY-F,RARG
CALL GENERIC-GALLEY-F,RARG,NW-GALLEY
RSTACK
.FUNCT NW-LOUNGE-F,RARG
EQUAL? RARG,M-ENTER \FALSE
PUTP GLOBAL-SURFACE,P?SDESC,STR?36
CALL MOVE-SHARED-OBJECTS,NW-LOUNGE
RFALSE
.FUNCT NW-ENGINE-ROOM-F,RARG
EQUAL? RARG,M-LOOK \FALSE
PRINTI "You are in a tiny, smelly space where it is difficult to breathe. By your feet lie the diesel engines of the "
CALL DPRINT,TRAWLER
PRINTR "."
.ENDI