917 lines
23 KiB
Plaintext
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
|