commit 47fbe00ae6b65b82283e9712feed8b5e8e5f5f87 Author: historicalsource Date: Sat Apr 13 20:20:29 2019 -0400 Revision 23 (Original Source) diff --git a/README.md b/README.md new file mode 100644 index 0000000..7154115 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# cutthroats diff --git a/boat.zap b/boat.zap new file mode 100644 index 0000000..e39d9d8 --- /dev/null +++ b/boat.zap @@ -0,0 +1,916 @@ + + + .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 diff --git a/boat.zil b/boat.zil new file mode 100644 index 0000000..25bdbdb --- /dev/null +++ b/boat.zil @@ -0,0 +1,1422 @@ +"BOAT ROOMS for TOA #2 + Copyright (C) 1984 Infocom, Inc." + + + + + + + ) + (T )>) + (T )>) + ( >> + ) + ( + )>> + +> + + + +> + )>> + + + + + )>> + +> + + + +)) + + + ) + ;( + )> + ) + ( + + + + ) + ( + + ;)> + ) + ( + ) + ( + > + + + >)> + )> + ) + ( + > + )>)>> + + + > + +; + +; + +; + >> + + + + ) + (T )> + + ) + ( + ) + (T )> + + >>>)> + )>> + +; + +; + ) + ( + ) + ( + )>> + + + + + + + + + + ; + + ; + + ; + + + + )> + > + + )> + ) + ( + + )>> + + + ) + (T )> + + ) + (T )> + ) + (T )>> + + + +> + + + + ) + (<==? .RARG ,M-BEG> + + + > + )>) + (<==? .RARG ,M-FLASH> + + ,AT-SEA + + >> + > + )>)>> + + + > + > + + + +)) + > + ) + (> + )> + + + ) + (T )>) + ( + ) + (T + + ) + (T )>)>> + + + + + ) + ( + > + ) + ( + + + ) + (T )> + + ,C-TICK>>> + ) + (T + + ) + (T )> + )> + ) + ( + + ) + (T + > + + )>) + ( + + > + + ) + (T )>) + ( + > + )>> + + + + + + + ,UNDERWATER-LINE-C> + ) + (T + + ) + (T )> + )>) + (T )>) + ( + + >> + + ) + (T + + )>) + ( + + ) + (T )>) + ( + ) + ( + + ,UNDERWATER-LINE-C> + ) + (T + + )>) + ( + ) + ( + )>> + + + + + + + ) + (T )>> + +; + + + + + ) + (<==? .RARG ,M-BEG> + + + ) + ( + ) + (T )>)>)>> + +)) + + ) + ( + ) + (T )>> + +; + + + + + )>> + + + + + + + + ) + (T )> + + + + > + )>) + (T )> + + ) + ( + + + ) + ( + > + + ) + ( + + ) + ( + > + + ) + ( + + + ) + ( + + + ) + ( + + > + + > + ) + (T )> + )>> + + + + + + )>> + + + + + ) + (T )> + ) + ( + + + ) + ( + + + ) + ( + ) + (T )> + + )>> + + + +)) + + + > + + + >)>)> + )>) + ( + + + + ) + (T )> + ) + (T + )> + ) + ( + + ) + (> + ) + ( + + > + )> + + ) + (T )>) + ( + + <==? ,UNDERWATER-LINE-C> + >> + + > + ) + ( + > + > + )>> + + + + + ) + ( + ) + ( + + >> + ) + ( + > + ) + ( + <==? ,UNDERWATER-LINE-C>> + )>> + + + + + + ) + (<==? .RARG ,M-ENTER> + + ) + ;(<==? .RARG ,M-BEG> + + ,AT-SEA + >> + + + + )>)>> + +;> + +; + ) + ( + ) + (T )>> + + + +) "AUX" F) + + + > + >> + >> + ) + ( + + ) + ( 5> + + ) + (T + + + )>) + (T )>) + ( + > + + ) + (T