.FUNCT WINDING-ROAD-1-F,RARG EQUAL? RARG,M-ENTER \?ELS5 PUTP LOCKED-DOOR,P?SDESC,STR?190 EQUAL? MEETINGS-COMPLETED,1 \FALSE GRTR? PRESENT-TIME,585 \?ELS15 CALL ALL-GO-HOME CALL I-PLOT-NEVER-STARTS SET 'SM-CTR,4 RETURN SM-CTR ?ELS15: CALL QUEUE,I-SECOND-MEETING,-1 PUT STACK,0,1 RTRUE ?ELS5: EQUAL? RARG,M-BEG \FALSE EQUAL? PRSA,V?WALK \FALSE GRTR? SM-CTR,0 \FALSE LESS? SM-CTR,4 \FALSE GRTR? HOW-HUNGRY,3 \?ELS36 PRINTI "Johnny looks at you. ""If you can't keep in shape, we don't want you. One word to anyone and you're a goner."" He then lets you pass..." CRLF CRLF SET 'SM-CTR,4 RFALSE ?ELS36: PRINTR "Johnny blocks you. ""What's the hurry, matey?""" .FUNCT WINDING-ROAD-2-F,RARG EQUAL? RARG,M-BEG \FALSE EQUAL? PRSA,V?THROUGH,V?BOARD \FALSE EQUAL? PRSO,PSEUDO-OBJECT \FALSE PRINTR "After trying to get a foothold, you give up." .FUNCT SWAMP-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?193 RTRUE ?ELS5: EQUAL? PRSA,V?SMELL \FALSE PRINTR "It smells awful." .FUNCT WHARF-ROAD-2-S,PRINT?=1 ZERO? PRINT? /FALSE ZERO? BUSINESS-HOURS? /?ELS7 IN? MCGINTY,MCGINTY-HQ \?ELS7 RETURN MCGINTY-HQ ?ELS7: CALL DPRINT,MCGINTY PRINTI "'s is closed." CRLF RFALSE .FUNCT FRONT-DOOR-F,OPEN?=0 EQUAL? HERE,RED-BOAR-INN,WHARF-ROAD-1,WHARF-ROAD-5 /?THN4 EQUAL? HERE,SHANTY \?ELS3 ?THN4: SET 'OPEN?,TRUE-VALUE JUMP ?CND1 ?ELS3: ZERO? BUSINESS-HOURS? /?CND1 EQUAL? HERE,WHARF-ROAD-4,OUTFITTERS-HQ,BANK /?THN12 EQUAL? HERE,SHORE-ROAD-2 \?ELS11 ?THN12: SET 'OPEN?,TRUE-VALUE JUMP ?CND1 ?ELS11: IN? MCGINTY,MCGINTY-HQ \?CND1 SET 'OPEN?,TRUE-VALUE ?CND1: EQUAL? PRSA,V?EXAMINE \?ELS20 PRINTI "The door is " ZERO? OPEN? /?ELS25 PRINTI "open" JUMP ?CND23 ?ELS25: PRINTI "closed" ?CND23: PRINTR "." ?ELS20: EQUAL? PRSA,V?OPEN \?ELS36 ZERO? OPEN? /?ELS41 CALL TELL-ALREADY,STR?25 RSTACK ?ELS41: EQUAL? HERE,MCGINTY-HQ \?ELS44 CALL TELL-BLOWS,STR?26 RSTACK ?ELS44: PRINTR "It's locked." ?ELS36: EQUAL? PRSA,V?UNLOCK \?ELS50 EQUAL? HERE,MCGINTY-HQ,OUTFITTERS-HQ,SHANTY /?THN56 EQUAL? HERE,BANK,RED-BOAR-INN \?ELS55 ?THN56: CALL TELL-DONT-HAVE,STR?197 RSTACK ?ELS55: CALL TELL-NO-KEY RSTACK ?ELS50: EQUAL? PRSA,V?CLOSE \FALSE ZERO? OPEN? /?ELS66 CALL TELL-BLOWS,STR?25 RSTACK ?ELS66: CALL TELL-ALREADY,STR?26 RSTACK .FUNCT TELL-BLOWS,STR PRINTI "It blows back " PRINT STR PRINTR "." .FUNCT SHORE-ROAD-2-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "This is the east end of the " CALL DPRINT,SHORE-ROAD-1 PRINTI ", an east/west road with a ferry landing at its west end. The " CALL DPRINT,BANK PRINTI ", the island's only bank, is off to the north. The " CALL DPRINT,OCEAN-ROAD-1 PRINTR " starts up to the northeast." .FUNCT BACK-ALLEY-1-F,RARG EQUAL? RARG,M-ENTER \FALSE PUTP LOCKED-DOOR,P?SDESC,STR?211 RTRUE .FUNCT BACK-ALLEY-2-F,RARG EQUAL? RARG,M-ENTER \FALSE PUTP LOCKED-DOOR,P?SDESC,STR?211 RTRUE .FUNCT BACK-ALLEY-2-N,PRINT?=1 ZERO? PRINT? /FALSE FSET? BACK-WINDOW,OPENBIT \?ELS7 IN? MCGINTY,BACK-ALLEY-1 /?THN13 IN? MCGINTY,BACK-ALLEY-2 /?THN13 IN? MCGINTY,BACK-ALLEY-3 \?ELS12 ?THN13: CALL JIGS-UP,STR?213 RSTACK ?ELS12: CALL TELL-THRU-WINDOW IN? MCGINTY,MCGINTY-HQ \?CND17 SET 'MCGINTY-HQ-OCCUPIED,TRUE-VALUE RETURN MCGINTY-HQ ?CND17: RETURN MCGINTY-HQ ?ELS7: PRINTI "The door is locked." CRLF RFALSE .FUNCT BACK-WINDOW-F EQUAL? PRSA,V?OPEN \?ELS5 IN? PLAYER,MCGINTY-HQ \?ELS10 CALL TELL-YOU-CANT,STR?214 RSTACK ?ELS10: FSET? BACK-WINDOW,OPENBIT \?ELS12 CALL TELL-ALREADY,STR?25 RSTACK ?ELS12: FSET BACK-WINDOW,OPENBIT PRINTR "You open it enough to fit through it." ?ELS5: EQUAL? PRSA,V?CLOSE \?ELS18 FSET? BACK-WINDOW,OPENBIT \?ELS23 FCLEAR BACK-WINDOW,OPENBIT PRINTR "You close the window." ?ELS23: CALL TELL-ALREADY,STR?26 RSTACK ?ELS18: EQUAL? PRSA,V?BOARD,V?THROUGH \?ELS29 FSET? BACK-WINDOW,OPENBIT \?ELS32 IN? PLAYER,MCGINTY-HQ \?ELS35 CALL DO-WALK,P?SOUTH RTRUE ?ELS35: CALL DO-WALK,P?NORTH RTRUE ?ELS32: CALL TELL-CLOSED,STR?215 RTRUE ?ELS29: EQUAL? PRSA,V?LOOK-INSIDE \?ELS41 PRINTI "You see " IN? PLAYER,MCGINTY-HQ \?ELS46 PRINTI "the back alley" JUMP ?CND44 ?ELS46: IN? MCGINTY,MCGINTY-HQ \?ELS50 CALL DPRINT,MCGINTY PRINTI " sitting at his desk" JUMP ?CND44 ?ELS50: CALL DPRINT,MCGINTY PRINTI "'s office" ?CND44: PRINTR "." ?ELS41: EQUAL? PRSA,V?UNLOCK \FALSE PRINTR "It doesn't seem to be locked." .FUNCT LOCKED-DOOR-F,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?190 RTRUE ?ELS5: EQUAL? PRSA,V?OPEN \?ELS7 PRINTR "It's locked." ?ELS7: EQUAL? PRSA,V?UNLOCK \?ELS11 CALL TELL-NO-KEY RSTACK ?ELS11: EQUAL? PRSA,V?EXAMINE,V?READ \?ELS13 EQUAL? HERE,WINDING-ROAD-1 \?ELS18 PRINTI "The lettering on the door reads: " CALL FIXED-FONT-ON PRINTI " ""This " CALL DPRINT,LIGHTHOUSE PRINTI " is part of CUTTHROATS an Infocom Tale of Adventure by Michael Berlyn and Jerry Wolper (c)1984 Infocom, Inc.""" CRLF CALL FIXED-FONT-OFF RTRUE ?ELS18: EQUAL? PRSA,V?READ \?ELS24 CALL V-READ RSTACK ?ELS24: CALL TELL-CLOSED,STR?216 RSTACK ?ELS13: EQUAL? PRSA,V?MUNG \?ELS28 PRINTR "The door and lock withstand your attempts." ?ELS28: EQUAL? PRSA,V?KNOCK \?ELS32 CALL TELL-NO-ANSWER RSTACK ?ELS32: EQUAL? PRSA,V?CLOSE \?ELS34 CALL TELL-ALREADY,STR?26 RSTACK ?ELS34: EQUAL? PRSA,V?LOCK \FALSE CALL TELL-ALREADY,STR?38 RSTACK .FUNCT TELL-NO-ANSWER PRINTR "You wait a minute, but there's no answer." .FUNCT BACK-ALLEY-4-F,RARG EQUAL? RARG,M-ENTER \FALSE PUTP LOCKED-DOOR,P?SDESC,STR?211 RTRUE .FUNCT BACK-ALLEY-5-F,RARG EQUAL? RARG,M-ENTER \FALSE PUTP LOCKED-DOOR,P?SDESC,STR?211 RTRUE .FUNCT RED-BOAR-INN-F,RARG EQUAL? RARG,M-ENTER \FALSE MOVE SPEAR-CARRIER,RED-BOAR-INN PUTP SPEAR-CARRIER,P?SDESC,STR?221 PUTP SPEAR-CARRIER,P?LDESC,STR?222 PUTP GLOBAL-SURFACE,P?SDESC,STR?20 CALL MOVE-SHARED-OBJECTS,RED-BOAR-INN RFALSE .FUNCT MAIL-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?223 RTRUE ?ELS5: EQUAL? PRSA,V?ASK-CONTEXT-FOR,V?ASK-FOR /FALSE CALL GLOBAL-NOT-HERE-PRINT,PSEUDO-OBJECT RETURN 2 .FUNCT MESSAGE-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?224 RTRUE ?ELS5: CALL MAIL-PSEUDO RSTACK .FUNCT BEDROOM-F,RARG EQUAL? RARG,M-FLASH \?ELS5 IN? WEASEL,BEDROOM \?ELS10 EQUAL? PRSA,V?LOOK /?ELS10 CALL JIGS-UP,STR?228 RSTACK ?ELS10: ZERO? BEDROOM-MESSAGE /FALSE PRINT BEDROOM-MESSAGE CRLF SET 'BEDROOM-MESSAGE,FALSE-VALUE RETURN BEDROOM-MESSAGE ?ELS5: EQUAL? RARG,M-BEG \FALSE EQUAL? PRSA,V?TAKE \FALSE EQUAL? PRSO,PSEUDO-OBJECT \FALSE CALL TELL-CLOTHES RSTACK .FUNCT BEDROOM-W,PRINT?=1 ZERO? PRINT? /FALSE PRINTI "It's not a walk-in closet." CRLF RFALSE .FUNCT BED-F,RARG=0 EQUAL? RARG,M-BEG \?ELS5 ZERO? PRSO /?ELS10 IN? PRSO,PLAYER /FALSE IN? PRSO,BED /FALSE EQUAL? PRSO,GLOBAL-ROOM /FALSE EQUAL? PRSA,V?DROP \?ELS10 EQUAL? PRSO,BED /FALSE ?ELS10: EQUAL? PRSA,V?EXAMINE \?ELS18 EQUAL? PRSO,CLOSET,BUREAU /FALSE ?ELS18: CALL BED-VERB? ZERO? STACK \FALSE PRINTI "You should get out of bed first." CRLF RETURN 2 ?ELS5: ZERO? RARG \FALSE EQUAL? PRSA,V?BOARD \FALSE FIRST? BED /?THN36 CALL WEARING-SOMETHING? ZERO? STACK /FALSE ?THN36: CALL TELL-NOT-COMFORTABLE RSTACK .FUNCT BED-VERB? EQUAL? PRSA,V?DIAGNOSE,V?SUPER-BRIEF,V?BRIEF /TRUE EQUAL? PRSA,V?QUIT,V?INVENTORY,V?VERBOSE /TRUE EQUAL? PRSA,V?SAVE,V?RESTORE,V?RESTART /TRUE EQUAL? PRSA,V?VERSION,V?$VERIFY,V?SCORE /TRUE EQUAL? PRSA,V?ASK-CONTEXT-ABOUT,V?ASK-ABOUT,V?AGAIN /TRUE EQUAL? PRSA,V?BREATHE,V?ASK-CONTEXT-FOR,V?ASK-FOR /TRUE EQUAL? PRSA,V?FIND,V?CALL,V?$CALL /TRUE EQUAL? PRSA,V?CURSES,V?COUNT,V?CHOMP /TRUE EQUAL? PRSA,V?HELLO,V?GOODBYE,V?DISEMBARK /TRUE EQUAL? PRSA,V?LATITUDE,V?ALARM,V?HELP /TRUE EQUAL? PRSA,V?LOOK,V?LISTEN,V?LONGITUDE /TRUE EQUAL? PRSA,V?MAYBE,V?CHASTISE,V?LOOK-INSIDE /TRUE EQUAL? PRSA,V?MUMBLE,V?NO,V?YES /TRUE EQUAL? PRSA,V?SIT,V?SCRIPT,V?PRAY /TRUE EQUAL? PRSA,V?SMELL,V?UNSCRIPT,V?SIT-ON /TRUE EQUAL? PRSA,V?TELL,V?STAY,V?STAND /TRUE EQUAL? PRSA,V?TIME,V?SLEEP,V?SAY /TRUE EQUAL? PRSA,V?WAVE-AT,V?WAIT-FOR,V?WAIT /TRUE EQUAL? PRSA,V?WHAT,V?YELL,V?WIN \FALSE RTRUE .FUNCT BUREAU-F EQUAL? PRSA,V?OPEN \?ELS5 FSET? BUREAU,OPENBIT \?ELS10 CALL TELL-ALREADY,STR?25 RSTACK ?ELS10: FSET BUREAU,OPENBIT PRINTI "Opening the " CALL DPRINT,BUREAU PRINTI " reveals " CALL TELL-BUREAU-CONTENTS RSTACK ?ELS5: EQUAL? PRSA,V?CLOSE \?ELS16 FSET? BUREAU,OPENBIT \?ELS21 FCLEAR BUREAU,OPENBIT PRINTR "Closed." ?ELS21: CALL TELL-ALREADY,STR?26 RSTACK ?ELS16: EQUAL? PRSA,V?PUT-ON \?ELS27 EQUAL? PRSI,BUREAU \?ELS27 CALL IDROP ZERO? STACK /TRUE PRINTR "It slides off onto the floor." ?ELS27: EQUAL? PRSA,V?EXAMINE \?ELS36 PRINTI "It's a tilted old wooden " CALL DPRINT,BUREAU FSET? BUREAU,OPENBIT \?ELS43 FIRST? BUREAU \?ELS48 PRINTI ". In addition to your clothes, you find " CALL PRINT-CONTENTS,BUREAU PRINTR " inside." ?ELS48: PRINTR ". Your clothes are in it." ?ELS43: PRINTR ", which is closed." ?ELS36: EQUAL? PRSA,V?LOOK-INSIDE \FALSE FSET? BUREAU,OPENBIT \FALSE PRINTI "The " CALL DPRINT,BUREAU PRINTI " contains " CALL TELL-BUREAU-CONTENTS RSTACK .FUNCT TELL-BUREAU-CONTENTS FIRST? BUREAU \?ELS3 CALL PRINT-CONTENTS,BUREAU PRINTI ", as well as" JUMP ?CND1 ?ELS3: PRINTI "nothing but" ?CND1: PRINTR " your clothes." .FUNCT PASSBOOK-F EQUAL? PRSA,V?EXAMINE \?ELS5 FSET? PASSBOOK,RMUNGBIT \?ELS10 CALL TELL-SOGGY RSTACK ?ELS10: PRINTI "This is a distinctive " CALL DPRINT,BANK PRINTI " passbook" IN? PASSBOOK,MCGINTY /?CND15 IN? PASSBOOK,WEASEL /?CND15 PRINTI " which shows a balance of $" PRINTN PASSBOOK-BALANCE PRINTI ". The last date stamped in it is " PRINT STUPID-PROBLEM-STRING ?CND15: PRINTR "." ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE,V?OPEN,V?READ \?ELS25 IN? PASSBOOK,WEASEL /?THN31 IN? PASSBOOK,MCGINTY \?ELS30 ?THN31: LOC PASSBOOK CALL START-SENTENCE,STACK PRINTR " has it." ?ELS30: CALL PERFORM,V?EXAMINE,PASSBOOK RTRUE ?ELS25: EQUAL? PRSA,V?CLOSE \FALSE PRINTR "It's closed." .FUNCT KEY-F EQUAL? PRSA,V?LOCK \?ELS5 EQUAL? PRSO,BEDROOM-DOOR \?ELS5 ZERO? BEDROOM-DOOR-LOCKED /?ELS12 CALL TELL-ALREADY,STR?38 RTRUE ?ELS12: FSET? BEDROOM-DOOR,OPENBIT \?ELS15 PRINTR "You should close it first." ?ELS15: SET 'BEDROOM-DOOR-LOCKED,TRUE-VALUE CALL TELL-NOW,BEDROOM-DOOR,STR?38 RTRUE ?ELS5: EQUAL? PRSA,V?UNLOCK \?ELS21 EQUAL? PRSO,BEDROOM-DOOR \?ELS21 ZERO? BEDROOM-DOOR-LOCKED \?ELS28 CALL TELL-ALREADY,STR?27 RTRUE ?ELS28: SET 'BEDROOM-DOOR-LOCKED,FALSE-VALUE CALL TELL-NOW,BEDROOM-DOOR,STR?27 RTRUE ?ELS21: EQUAL? PRSA,V?OPEN \FALSE EQUAL? PRSO,BEDROOM-DOOR \FALSE CALL PERFORM,V?UNLOCK,BEDROOM-DOOR,KEY CALL PERFORM,V?OPEN,BEDROOM-DOOR RTRUE .FUNCT NOTE-F EQUAL? PRSA,V?READ,V?EXAMINE \FALSE FSET? NOTE,RMUNGBIT \FALSE CALL TELL-SOGGY RSTACK .FUNCT BOOK-F FSET? BOOK,RMUNGBIT \?ELS5 EQUAL? PRSA,V?EXAMINE,V?READ,V?OPEN \?ELS5 CALL TELL-SOGGY RSTACK ?ELS5: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE CALL PERFORM,V?READ,BOOK RTRUE .FUNCT CLOTHES-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?3 RTRUE ?ELS5: EQUAL? PRSA,V?DISEMBARK,V?WEAR \FALSE CALL TELL-CLOTHES RSTACK .FUNCT TELL-CLOTHES PRINTR "What you have on now is fine." .FUNCT CLOSET-F,RARG=0 EQUAL? RARG,M-OBJDESC /TRUE EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS7 PRINTR "The closet has no door." ?ELS7: EQUAL? PRSA,V?EXAMINE \?ELS11 PRINTI "It looks as if the door was torn off its hinges a long time ago. " RFALSE ?ELS11: EQUAL? PRSA,V?BOARD,V?THROUGH \FALSE CALL BEDROOM-W RTRUE .FUNCT WET-SUIT-F EQUAL? PRSA,V?DISEMBARK,V?THROW,V?DROP \?ELS5 FSET? AIR-TANK,WORNBIT /?THN8 FSET? FLIPPERS,WORNBIT /?THN8 FSET? MASK,WORNBIT \?ELS5 ?THN8: CALL TELL-YOU-CANT,STR?236 RSTACK ?ELS5: EQUAL? PRSA,V?WEAR \FALSE FSET? DEEP-SUIT,WORNBIT \FALSE CALL TELL-YOU-CANT,STR?237,FALSE-VALUE CALL DPRINT,DEEP-SUIT PRINTR "." .FUNCT FLIPPERS-F EQUAL? PRSA,V?WEAR \FALSE FSET? WET-SUIT,WORNBIT /FALSE FSET? DEEP-SUIT,WORNBIT \?ELS12 PRINTI "They don't fit with the " CALL DPRINT,DEEP-SUIT PRINTR "." ?ELS12: PRINTI "The " CALL DPRINT,WET-SUIT PRINTR " won't fit over them." .FUNCT MASK-F EQUAL? PRSA,V?WEAR \?ELS5 FSET? WET-SUIT,WORNBIT /FALSE FSET? DEEP-SUIT,WORNBIT \?ELS12 PRINTI "It won't fit over the " CALL DPRINT,DEEP-SUIT PRINTR "'s hood." ?ELS12: PRINTI "You couldn't fit the " CALL DPRINT,WET-SUIT PRINTR " over it." ?ELS5: GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \FALSE FSET? MASK,WORNBIT \FALSE EQUAL? PRSA,V?DISEMBARK,V?THROW,V?DROP \FALSE CALL AIRTIGHT-ROOM? ZERO? STACK \FALSE CALL JIGS-UP,STR?238 RSTACK .FUNCT AIR-TANK-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTI "This double tank made of aluminum is designed to fit over a " CALL DPRINT,WET-SUIT PRINTI ". Its gauge is currently at " GRTR? AIR-LEFT,150 \?ELS10 PRINTI "full" JUMP ?CND8 ?ELS10: GRTR? AIR-LEFT,100 \?ELS14 PRINTI "fairly full" JUMP ?CND8 ?ELS14: GRTR? AIR-LEFT,50 \?ELS18 PRINTI "medium" JUMP ?CND8 ?ELS18: GRTR? AIR-LEFT,15 \?ELS22 PRINTI "almost empty" JUMP ?CND8 ?ELS22: PRINTI "empty" ?CND8: PRINTR "." ?ELS5: EQUAL? PRSA,V?FILL \?ELS32 EQUAL? PRSI,COMPRESSOR /?THN38 EQUAL? PRSI,AIR \?ELS37 IN? COMPRESSOR,HERE \?ELS37 ?THN38: GETP COMPRESSOR,P?NORTH GRTR? STACK,0 \?ELS46 PRINTR "The salesman tells you to rent the compressor first." ?ELS46: FSET? AIR-TANK,WORNBIT \?ELS50 CALL TELL-CONTORT RSTACK ?ELS50: SET 'AIR-LEFT,160 CALL TELL-NOW,AIR-TANK,STR?239 RSTACK ?ELS37: EQUAL? PRSI,MM-COMPRESSOR \?ELS54 PRINTR "There's no way to get air from this compressor to the tank." ?ELS54: EQUAL? PRSI,AIR \FALSE PRINTR "The right compressor would probably help." ?ELS32: EQUAL? PRSA,V?EMPTY \?ELS62 GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \?ELS67 CALL JIGS-UP,STR?240 RSTACK ?ELS67: ZERO? AIR-LEFT \?ELS69 CALL TELL-ALREADY,STR?131 RSTACK ?ELS69: SET 'AIR-LEFT,0 CALL TELL-NOW,AIR-TANK,STR?131 RSTACK ?ELS62: EQUAL? PRSA,V?WEAR \?ELS73 FSET? WET-SUIT,WORNBIT /FALSE FSET? DEEP-SUIT,WORNBIT \?ELS80 PRINTI "This tank can't be worn with a " CALL DPRINT,DEEP-SUIT PRINTR "." ?ELS80: PRINTI "This tank should be worn outside a " CALL DPRINT,WET-SUIT PRINTR "." ?ELS73: GETP HERE,P?LINE EQUAL? STACK,UNDERWATER-LINE-C \FALSE EQUAL? PRSA,V?THROW,V?DROP \FALSE FSET? DEEP-SUIT,WORNBIT /FALSE CALL AIRTIGHT-ROOM? ZERO? STACK \FALSE CALL JIGS-UP,STR?241 RSTACK .FUNCT MCGINTY-HQ-F,RARG,DEST EQUAL? RARG,M-ENTER \?ELS5 PUTP LOCKED-DOOR,P?SDESC,STR?211 PUTP GLOBAL-SURFACE,P?SDESC,STR?243 CALL MOVE-SHARED-OBJECTS,MCGINTY-HQ RFALSE ?ELS5: EQUAL? RARG,M-FLASH \?ELS7 ZERO? MCGINTY-HQ-OCCUPIED /?ELS12 IN? PASSBOOK,PLAYER /?CND14 CALL MCGINTY-F,M-OBJDESC CRLF ?CND14: CALL JIGS-UP,STR?244 RSTACK ?ELS12: IN? MCGINTY,MCGINTY-HQ \FALSE GET GOAL-TABLES,MCGINTY-C GET STACK,GOAL-S >DEST ZERO? DEST /FALSE EQUAL? DEST,WHARF-ROAD-2 /FALSE CALL MCGINTY-ERRAND RSTACK ?ELS7: EQUAL? RARG,M-BEG \FALSE EQUAL? PRSO,GLOBAL-SURFACE \FALSE EQUAL? PRSA,V?OPEN \?ELS32 PRINTR "It's locked." ?ELS32: EQUAL? PRSA,V?UNLOCK \?ELS36 CALL TELL-NO-KEY RSTACK ?ELS36: EQUAL? PRSA,V?CLOSE \FALSE CALL TELL-ALREADY,STR?26 RSTACK .FUNCT MCGINTY-HQ-S,PRINT?=1 FSET? BACK-WINDOW,OPENBIT \?ELS5 CALL TELL-THRU-WINDOW RETURN BACK-ALLEY-2 ?ELS5: EQUAL? PRSO,WINDOW \?ELS7 ZERO? PRINT? /FALSE CALL TELL-CLOSED,STR?215 RFALSE ?ELS7: ZERO? PRINT? /FALSE PRINTI "The door is locked." CRLF RFALSE .FUNCT TELL-THRU-WINDOW PRINTI "You climb through the open window..." CRLF CRLF RTRUE .FUNCT MCGINTY-CHAIR-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?245 RTRUE ?ELS5: EQUAL? PRSA,V?PUT-ON \?ELS7 PRINTR "It's too lopsided." ?ELS7: EQUAL? PRSA,V?SIT-ON,V?CLIMB-ON \?ELS11 CALL TELL-WHY-BOTHER RSTACK ?ELS11: EQUAL? PRSA,V?EXAMINE \FALSE PRINTR "It's an impressively beat-up chair." .FUNCT STUBS-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTR "The floor is littered with stubs from cheap cigars." ?ELS5: EQUAL? PRSA,V?SMELL \?ELS9 PRINTR "The aroma is reminiscent of burning tires." ?ELS9: EQUAL? PRSA,V?TAKE \FALSE PRINTR "You think twice and realize you don't want to carry a used cigar." .FUNCT ENVELOPE-F,L EQUAL? PRSA,V?LOOK-UNDER,V?TAKE,V?OPEN \?ELS5 EQUAL? HERE,MCGINTY-HQ \?ELS5 IN? MCGINTY,MCGINTY-HQ \?ELS5 IN? ENVELOPE,PLAYER /?ELS5 CALL DPRINT,MCGINTY PRINTR " squeals angrily. ""Keep your hands off of my private papers!""" ?ELS5: EQUAL? PRSA,V?TAKE \?ELS11 IN? WEASEL,HERE \?ELS11 CALL WEASEL-BEATS-YOU RSTACK ?ELS11: IN? ENVELOPE,UNDER-BUNK \?ELS15 EQUAL? PRSA,V?ASK-ABOUT,V?TELL,V?TAKE /?ELS15 PRINTR "It's hidden under the mattress." ?ELS15: IN? ENVELOPE,PLAYER /?ELS21 LOC ENVELOPE >L FSET? L,PERSON \?ELS21 EQUAL? PRSA,V?OPEN \?ELS21 CALL START-SENTENCE,L PRINTR " tells you to keep your hands off it." ?ELS21: FSET? ENVELOPE,RMUNGBIT \FALSE EQUAL? PRSA,V?EXAMINE \?ELS32 PRINTI "It's a soggy " CALL DPRINT,ENVELOPE PRINTR "." ?ELS32: EQUAL? PRSA,V?READ \FALSE CALL TELL-SOGGY RSTACK .FUNCT OUTFITTERS-HQ-F,RARG EQUAL? RARG,M-ENTER \?ELS5 MOVE SPEAR-CARRIER,OUTFITTERS-HQ PUTP SPEAR-CARRIER,P?SDESC,STR?251 PUTP SPEAR-CARRIER,P?LDESC,STR?252 PUTP GLOBAL-SURFACE,P?SDESC,STR?20 CALL MOVE-SHARED-OBJECTS,OUTFITTERS-HQ CALL QUEUED?,I-EQUIP ZERO? STACK /FALSE IN? MCGINTY,OUTFITTERS-HQ /FALSE SET 'I-WAIT-DURATION,9 SET 'I-WAIT-RTN,I-EQUIP RFALSE ?ELS5: EQUAL? RARG,M-BEG \FALSE EQUAL? PSEUDO-OBJECT,PRSO,PRSI \?ELS17 CALL MERCHANDISE-PSEUDO RSTACK ?ELS17: EQUAL? PRSO,SALVAGER,TRAWLER \?ELS19 EQUAL? PRSA,V?RENT \?ELS24 ZERO? JOHNNY-MADE-DEAL /?ELS29 EQUAL? SHIP-CHOSEN,PRSO \?ELS29 PRINTR """Johnny already took care of that.""" ?ELS29: CALL TELL-YOU-CANT,STR?253 RSTACK ?ELS24: EQUAL? PRSA,V?ASK-ABOUT,V?FIND,V?BUY /FALSE EQUAL? PRSA,V?ASK-CONTEXT-ABOUT /FALSE CALL GLOBAL-NOT-HERE-PRINT,PRSO RSTACK ?ELS19: EQUAL? PRSI,SALVAGER,TRAWLER \?ELS43 EQUAL? PRSA,V?TELL,V?ASK-ABOUT /FALSE CALL GLOBAL-NOT-HERE-PRINT,PRSI RSTACK ?ELS43: EQUAL? PRSA,V?RENT,V?BUY \?ELS52 ZERO? AMT-OWED /?ELS52 PRINTI "The salesman looks sorry. ""I can't sell you anything until you pay the $" PRINTN AMT-OWED PRINTI " of " CALL DPRINT,JOHNNY PRINTR "'s.""" ?ELS52: EQUAL? PRSA,V?TAKE \?ELS58 GETP PRSO,P?NORTH EQUAL? STACK,-1 \?ELS58 ZERO? JOHNNY-MADE-DEAL /?ELS58 ZERO? DELIVERY-MADE \?ELS58 IN? PRSO,PLAYER /?ELS58 PRINTR "The salesman says, ""Don't bother. It'll be delivered to the ship.""" ?ELS58: EQUAL? PRSA,V?LAMP-ON,V?OPEN \FALSE GETP PRSO,P?NORTH GRTR? STACK,0 \FALSE PRINTR "The salesman stops you. ""You want to play with it, you buy it.""" .FUNCT MERCHANDISE-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?254 RTRUE ?ELS5: CALL TELL-REFER-INDIVIDUAL,STR?255 RETURN 2 .FUNCT OUT-OF-STOCK-F EQUAL? PRSA,V?BUY \?ELS5 PRINTI "The salesman checks and says, " CALL TELL-WERE-OUT RSTACK ?ELS5: EQUAL? PRSA,V?ASK-ABOUT \?ELS9 EQUAL? HERE,OUTFITTERS-HQ \FALSE CALL TELL-WERE-OUT RSTACK ?ELS9: EQUAL? PRSO,SPEAR-GUN /?THN17 EQUAL? PRSI,SPEAR-GUN \?ELS16 ?THN17: CALL GLOBAL-NOT-HERE-PRINT,SPEAR-GUN RSTACK ?ELS16: EQUAL? PRSO,COMPASS /?THN21 EQUAL? PRSI,COMPASS \?ELS20 ?THN21: CALL GLOBAL-NOT-HERE-PRINT,COMPASS RSTACK ?ELS20: CALL GLOBAL-NOT-HERE-PRINT,WINCH RSTACK .FUNCT TELL-WERE-OUT PRINTR """We're out of those. Try next week.""" .FUNCT DRY-CELL-F EQUAL? PRSA,V?EXAMINE \FALSE PRINTI "The " FSET? DRY-CELL,RMUNGBIT \?CND8 PRINTI "corroded " ?CND8: CALL DPRINT,DRY-CELL PRINTI " reads " RFALSE .FUNCT NET-F EQUAL? PRSA,V?THROW-OFF,V?PUT-ON \FALSE EQUAL? PRSO,NET \FALSE MOVE NET,HERE PRINTR "It slides off." .FUNCT BATTERY-F EQUAL? PRSA,V?EXAMINE \FALSE PRINTI "The " FSET? BATTERY,RMUNGBIT \?ELS10 PRINTI "corroded" JUMP ?CND8 ?ELS10: PRINTI "standard" ?CND8: PRINTI " battery reads " RFALSE .FUNCT TUBE-F EQUAL? PRSA,V?PUT \?ELS5 EQUAL? PRSI,TUBE \?ELS5 PRINTR "The tube refuses to accept anything." ?ELS5: EQUAL? PRSA,V?PUT-ON,V?PUT \?ELS11 EQUAL? PRSI,GLASS-CASE \?ELS11 FSET? TUBE,OPENBIT \?ELS11 IN? PUTTY,TUBE \?ELS11 CALL PERFORM,V?PUT-ON,PUTTY,GLASS-CASE RTRUE ?ELS11: EQUAL? PRSA,V?SQUEEZE \FALSE FSET? PRSO,OPENBIT \?ELS20 IN? PUTTY,PRSO \?ELS20 MOVE PUTTY,WINNER PRINTR "You are now holding some putty." ?ELS20: FSET? PRSO,OPENBIT \?ELS26 PRINTR "The tube is apparently empty." ?ELS26: CALL TELL-CLOSED,STR?260 RSTACK .FUNCT PUTTY-F CALL COMPILER-SUCKS-EXP ZERO? STACK /?ELS5 IN? PUTTY,GLASS-CASE \?ELS10 CALL TELL-IN-CRACK RSTACK ?ELS10: MOVE PUTTY,GLASS-CASE CALL INT,I-CASE-LEAK PUT STACK,0,0 PRINTI "The putty seals the crack" IN? HOLE-1,GLASS-CASE /?THN18 IN? HOLE-2,GLASS-CASE \?ELS17 ?THN18: PRINTI " and hole" JUMP ?CND15 ?ELS17: SET 'NO-HOLE-PLUGGED,TRUE-VALUE ?CND15: PRINTI " in the " CALL DPRINT,GLASS-CASE PRINTR "." ?ELS5: IN? PUTTY,GLASS-CASE \?ELS27 EQUAL? PRSA,V?FIND,V?EXAMINE /?ELS27 CALL TELL-IN-CRACK RSTACK ?ELS27: EQUAL? PRSA,V?OIL \?ELS35 EQUAL? PRSI,PUTTY /?THN32 ?ELS35: EQUAL? PRSA,V?PUT \FALSE EQUAL? PRSO,PUTTY \FALSE ?THN32: EQUAL? PRSI,TUBE \?ELS42 CALL TELL-YOU-CANT,STR?261 RSTACK ?ELS42: PRINTR "It isn't a lubricant." .FUNCT COMPILER-SUCKS-EXP EQUAL? PRSA,V?PUT-ON,V?PUT \?ELS5 EQUAL? PRSI,GLASS-CASE /TRUE EQUAL? PRSI,HOLE-1 \?ELS11 IN? HOLE-1,GLASS-CASE /TRUE ?ELS11: EQUAL? PRSI,HOLE-2 \?ELS5 IN? HOLE-2,GLASS-CASE /TRUE ?ELS5: EQUAL? PRSA,V?PLUG,V?FILL \FALSE EQUAL? PRSO,GLASS-CASE /TRUE EQUAL? PRSO,HOLE-1 \?ELS21 IN? HOLE-1,GLASS-CASE /TRUE ?ELS21: EQUAL? PRSO,HOLE-2 \FALSE IN? HOLE-2,GLASS-CASE \FALSE RTRUE .FUNCT TELL-IN-CRACK PRINTR "The putty is already set in the crack." .FUNCT INFIDEL-BOX-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTR "This is state-of-the-art electronic equipment that automatically determines longitude and latitude when its button is pressed." ?ELS5: EQUAL? PRSA,V?PUSH \FALSE PRINTR "Nothing happens, probably because you're indoors." .FUNCT DIVING-BOOK-F EQUAL? PRSA,V?EXAMINE \?ELS5 FSET? DIVING-BOOK,RMUNGBIT \?ELS10 CALL TELL-SOGGY RSTACK ?ELS10: PRINTR "This book is ""Everything About Diving"" by Fritz Zamboni." ?ELS5: EQUAL? PRSA,V?OPEN,V?READ \FALSE FSET? DIVING-BOOK,RMUNGBIT \?ELS21 CALL TELL-SOGGY RSTACK ?ELS21: PRINTR "It says nothing you don't already know." .FUNCT TELL-SOGGY PRINTR "It's too soggy." .FUNCT MAGNET-F,RARG=0,F,N,OBJ EQUAL? RARG,M-CONT \?ELS5 EQUAL? PRSA,V?WEAR,V?TAKE \?ELS10 EQUAL? PRSO,MINE /?ELS10 ZERO? MAGNET-ON /?ELS10 PRINTR "The magnet's stronger than you are." ?ELS10: EQUAL? PRSA,V?THROW,V?DROP \FALSE PRINTR "It's stuck to the magnet." ?ELS5: EQUAL? RARG,M-OBJDESC \?ELS20 PRINTI "There is a " CALL DPRINT,MAGNET PRINTI " here." CRLF FIRST? MAGNET >F \TRUE EQUAL? F,MINE /TRUE /?ELS30 PRINTI "Attached to the magnet " NEXT? F \?ELS36 PRINTI "are" JUMP ?CND34 ?ELS36: PRINTI "is" ?CND34: PRINTI " " CALL PRINT-CONTENTS,MAGNET PRINTR "." ?ELS30: CALL DESCRIBE-OBJECT,F,TRUE-VALUE,0 RTRUE ?ELS20: EQUAL? PRSA,V?EXAMINE \?ELS50 ZERO? MAGNET-ON /?ELS55 FIRST? MAGNET \?ELS55 PRINTI "The " CALL DPRINT,MAGNET PRINTI " is on and has " CALL PRINT-CONTENTS,MAGNET PRINTI " attached to it." CRLF SET 'P-IT-OBJECT,MAGNET RETURN P-IT-OBJECT ?ELS55: PRINTI "The " CALL DPRINT,MAGNET PRINTI " has a switch which is currently " ZERO? MAGNET-ON /?ELS68 PRINTI "on" JUMP ?CND66 ?ELS68: PRINTI "off" ?CND66: PRINTR "." ?ELS50: EQUAL? PRSA,V?LAMP-ON \?ELS79 ZERO? MAGNET-ON /?ELS84 CALL TELL-ALREADY,STR?56 RSTACK ?ELS84: SET 'MAGNET-ON,TRUE-VALUE CALL TELL-NOW,MAGNET,STR?56 CALL ATTRACTION RSTACK ?ELS79: EQUAL? PRSA,V?LAMP-OFF \?ELS89 ZERO? MAGNET-ON /?ELS94 SET 'MAGNET-ON,FALSE-VALUE CALL TELL-NOW,MAGNET,STR?263,FALSE-VALUE FIRST? MAGNET >F \?CND96 CALL TELL-ALL-FALL ?PRG99: ZERO? F \?CND101 JUMP ?CND96 ?CND101: NEXT? F >N /?KLU170 ?KLU170: MOVE F,HERE EQUAL? F,MINE \?CND104 FSET MINE,RMUNGBIT CRLF PRINTI "The mine drifts harmlessly into a corner." ?CND104: SET 'F,N JUMP ?PRG99 ?CND96: CRLF RTRUE ?ELS94: CALL TELL-ALREADY,STR?264 RSTACK ?ELS89: EQUAL? PRSA,V?THROW,V?DROP \?ELS112 IN? MINE,MAGNET \?ELS117 ZERO? MAGNET-ON /?ELS120 FSET MINE,RMUNGBIT RFALSE ?ELS120: MOVE MINE,HERE RFALSE ?ELS117: ZERO? MAGNET-ON \FALSE CALL CLEAR-MAGNET RFALSE ?ELS112: EQUAL? PRSA,V?TAKE \?ELS127 EQUAL? PRSO,MAGNET \?ELS127 IN? MINE,MAGNET \FALSE CALL BOOM RSTACK ?ELS127: EQUAL? PRSA,V?PUT-AGAINST,V?PUT-ON \?ELS140 EQUAL? PRSO,MAGNET \?ELS140 SET 'OBJ,PRSI ZERO? OBJ \?THN137 ?ELS140: EQUAL? PRSA,V?RUB \FALSE EQUAL? PRSI,MAGNET \FALSE SET 'OBJ,PRSO ZERO? OBJ /FALSE ?THN137: FSET? OBJ,SURFACEBIT \?ELS147 CALL CLEAR-MAGNET RFALSE ?ELS147: ZERO? MAGNET-ON \?THN150 EQUAL? OBJ,ME /?THN150 GETP OBJ,P?CHARACTER ZERO? STACK /?ELS149 ?THN150: CALL TELL-WHY-BOTHER RSTACK ?ELS149: IN? OBJ,PLAYER \?ELS153 PRINTI "The magnet is touching " CALL THE?,PRSI CALL DPRINT,PRSI PRINTR "." ?ELS153: FIRST? MAGNET >F \?CND160 MOVE F,HERE ?CND160: LOC OBJ >N ZERO? N /?CND163 EQUAL? N,GLOBAL-OBJECTS,LOCAL-GLOBALS /?CND163 MOVE OBJ,MAGNET ?CND163: CALL TELL-NOW,MAGNET,STR?265,FALSE-VALUE CALL THE?,OBJ CALL DPRINT,OBJ PRINTR "." .FUNCT TELL-NOW,OBJ,STR,FINISH?=1 PRINTI "The " CALL DPRINT,OBJ PRINTI " is now " PRINT STR ZERO? FINISH? /FALSE PRINTR "." .FUNCT ATTRACTION,F,N FIRST? HERE >F /?KLU30 ?KLU30: FIRST? MAGNET >N \?CND1 GETP N,P?STATION ZERO? STACK /?THN6 FSET? N,TAKEBIT /?CND1 ?THN6: MOVE N,HERE ?CND1: ?PRG8: ZERO? F /TRUE NEXT? F >N /?KLU31 ?KLU31: FSET? F,INVISIBLE /?CND13 GETP F,P?STATION ZERO? STACK /?CND13 FSET? F,TAKEBIT \?CND13 EQUAL? F,MAGNET /?CND13 MOVE F,MAGNET EQUAL? F,IRON-BAR \?CND18 EQUAL? HERE,WRECK-5 \?CND18 CALL JIGS-UP,STR?266 ?CND18: PRINTI "The " CALL DPRINT,F PRINTI " jumps to the magnet." EQUAL? F,MINE \?CND25 PRINTI " Unfortunately, even though the spikes are spaced widely apart, one gets pushed..." CRLF CRLF CALL BOOM ?CND25: CRLF ?CND13: SET 'F,N JUMP ?PRG8 .FUNCT CLEAR-MAGNET,F,N FIRST? MAGNET >F /?KLU6 ?KLU6: ?PRG1: ZERO? F /TRUE NEXT? F >N /?KLU7 ?KLU7: MOVE F,HERE SET 'F,N JUMP ?PRG1 .FUNCT FLASHLIGHT-F EQUAL? PRSA,V?LAMP-ON \?ELS5 FSET? FLASHLIGHT,ONBIT \?ELS10 CALL TELL-ALREADY,STR?56 RSTACK ?ELS10: FSET FLASHLIGHT,ONBIT CALL TELL-NOW,FLASHLIGHT,STR?56 ZERO? LIT \TRUE CALL LIT?,HERE >LIT CRLF CALL V-LOOK RTRUE ?ELS5: EQUAL? PRSA,V?LAMP-OFF \?ELS17 FSET? FLASHLIGHT,ONBIT \?ELS22 FCLEAR FLASHLIGHT,ONBIT CALL LIT?,HERE >LIT CALL TELL-NOW,FLASHLIGHT,STR?264 RSTACK ?ELS22: CALL TELL-ALREADY,STR?264 RSTACK ?ELS17: EQUAL? PRSA,V?EXAMINE \?ELS26 PRINTI "The sealed, waterproof " CALL DPRINT,FLASHLIGHT PRINTI " is " FSET? FLASHLIGHT,ONBIT \?ELS31 PRINTI "on" JUMP ?CND29 ?ELS31: PRINTI "off" ?CND29: PRINTR "." ?ELS26: EQUAL? PRSA,V?AIM \FALSE EQUAL? PRSO,FLASHLIGHT \FALSE FSET? FLASHLIGHT,ONBIT \FALSE PRINTI "The " CALL DPRINT,FLASHLIGHT PRINTI " is shining on " CALL THE?,PRSI CALL DPRINT,PRSI PRINTR "." .FUNCT SHARK-REPELLENT-F EQUAL? PRSA,V?OPEN \?ELS5 FSET? SHARK-REPELLENT,OPENBIT \?ELS10 CALL TELL-ALREADY,STR?25 RSTACK ?ELS10: FSET SHARK-REPELLENT,OPENBIT PRINTI "Opened." GETP HERE,P?LINE LESS? STACK,UNDERWATER-LINE-C /?THN18 CALL AIRTIGHT-ROOM? ZERO? STACK /?CND15 ?THN18: CALL JIGS-UP,STR?267 ?CND15: CRLF RTRUE ?ELS5: EQUAL? PRSA,V?CLOSE \?ELS21 FSET? SHARK-REPELLENT,OPENBIT \?ELS26 PRINTR "It can't be closed." ?ELS26: CALL TELL-ALREADY,STR?26 RSTACK ?ELS21: EQUAL? PRSA,V?EXAMINE \?ELS32 PRINTI "The canister, which is " FSET? SHARK-REPELLENT,OPENBIT \?ELS37 PRINTI "open" JUMP ?CND35 ?ELS37: PRINTI "closed" ?CND35: PRINTR ", has a label which says, ""IMPORTANT: read this label!""" ?ELS32: EQUAL? PRSA,V?READ \FALSE PRINTR "The label says: ""IMPORTANT: read this label! SWANZO BRAND SHARK REPELLENT This product will repel sharks, or your money back! Simply open the canister UNDERWATER. Works for 5 hours. WARNING: Fumes released in air may be hazardous to humans.""" .FUNCT SHANTY-F,RARG EQUAL? RARG,M-ENTER \?ELS5 MOVE FOOD,SHANTY FSET FOOD,NDESCBIT SET 'SOUPS-ON,FALSE-VALUE MOVE DRINKING-WATER,SHANTY FSET DRINKING-WATER,NDESCBIT MOVE DRINK-OBJECT,SHANTY FSET DRINK-OBJECT,NDESCBIT PUTP DRINKING-WATER,P?SDESC,STR?271 MOVE SPEAR-CARRIER,SHANTY PUTP SPEAR-CARRIER,P?SDESC,STR?272 PUTP SPEAR-CARRIER,P?LDESC,STR?273 LESS? PRESENT-TIME,541 \?ELS10 CALL QUEUE,I-FIRST-MEETING,-1 PUT STACK,0,1 RTRUE ?ELS10: SET 'FM-CTR,5 RETURN FM-CTR ?ELS5: EQUAL? RARG,M-BEG \FALSE EQUAL? PRSA,V?YES \?ELS19 EQUAL? FM-CTR,4 \?ELS19 PRINT WARNING-STR CRLF SET 'FM-CTR,5 CALL RATING-UPD,20 CALL INT,I-FIRST-MEETING PUT STACK,0,0 SET 'MEETINGS-COMPLETED,1 RETURN MEETINGS-COMPLETED ?ELS19: EQUAL? PRSA,V?NO \FALSE EQUAL? FM-CTR,4 \FALSE CALL TELL-NO-CONTINUE CALL I-PLOT-NEVER-STARTS SET 'JOHNNY-SILENT,TRUE-VALUE CALL INT,I-FIRST-MEETING PUT STACK,0,0 RTRUE .FUNCT TELL-NO-CONTINUE PRINTI "The three men look at each other in disbelief. ""If you wanna ignore the chance of a lifetime, you're nuts,"" " CALL DPRINT,WEASEL PRINTR " states. Johnny says, ""We'll find someone else."" They then ignore you." .FUNCT PARROT-F EQUAL? WINNER,PARROT \?ELS5 SET 'P-CONT,FALSE-VALUE SET 'QUOTE-FLAG,FALSE-VALUE EQUAL? PRSA,V?HELLO \?ELS8 CALL PICK-ONE,PARROTISMS PRINT STACK CRLF RTRUE ?ELS8: EQUAL? PRSA,V?FIND \?ELS12 EQUAL? PRSO,ME \?ELS12 PRINTR """You're right here.""" ?ELS12: PRINTR """An interesting concept, but I am incapable.""" ?ELS5: EQUAL? PRSA,V?TELL \?ELS22 ZERO? P-CONT \FALSE ?ELS22: EQUAL? PRSA,V?FIND,V?EXAMINE /FALSE EQUAL? HERE,SHANTY \FALSE EQUAL? PRSA,V?LOOK-UNDER \?ELS30 CALL TELL-NOTHING,STR?276,TRUE-VALUE RSTACK ?ELS30: EQUAL? PRSA,V?ASK-ABOUT \?ELS32 EQUAL? PRSI,PARROT /FALSE ?ELS32: CALL PICK-ONE,PARROTISMS PRINT STACK CRLF RTRUE .FUNCT PARROTS-PATCH-F EQUAL? PRSA,V?DISEMBARK,V?ASK-FOR,V?LOOK-UNDER /?THN10 EQUAL? PRSA,V?MOVE /?THN10 EQUAL? PRSA,V?TAKE \?ELS5 ZERO? PRSI /?THN10 EQUAL? PRSI,PARROT \?ELS5 ?THN10: PRINTR "Mind your manners." ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE PRINTR "It's a small black eyepatch." .FUNCT CHAIR-F,RARG=0,F EQUAL? RARG,M-BEG \?ELS5 EQUAL? PRSA,V?DISEMBARK \?ELS10 EQUAL? PRSO,CHAIR \?ELS10 LESS? FM-CTR,5 \?ELS10 PRINTR "Johnny pushes you back. ""Can't you wait a few minutes?""" ?ELS10: EQUAL? PRSA,V?YES \?ELS16 EQUAL? FM-CTR,4 \?ELS16 PRINT WARNING-STR CRLF SET 'FM-CTR,5 CALL RATING-UPD,20 CALL INT,I-FIRST-MEETING PUT STACK,0,0 SET 'MEETINGS-COMPLETED,1 RETURN MEETINGS-COMPLETED ?ELS16: EQUAL? PRSA,V?NO \FALSE EQUAL? FM-CTR,4 \FALSE CALL TELL-NO-CONTINUE CALL I-PLOT-NEVER-STARTS CALL INT,I-FIRST-MEETING PUT STACK,0,0 RTRUE ?ELS5: EQUAL? PRSO,CHAIR \FALSE EQUAL? PRSA,V?BOARD \FALSE FIRST? CHAIR >F \?ELS36 CALL TELL-NOT-COMFORTABLE RSTACK ?ELS36: ZERO? FM-CTR \FALSE SET 'FM-CTR,1 CALL INT,I-PLOT-NEVER-STARTS PUT STACK,0,0 RFALSE .FUNCT FURNITURE-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?283 RTRUE ?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE PRINTR "There are a number of tables and chairs here." .FUNCT BAR-F,F EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5 PRINTR "Leave that to the management." ?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9 PRINTI "It is a worn wooden bar that has had more than its share of drinks on it. The parrot doesn't do it much good, either" FIRST? BAR >F \?CND12 PRINTI ". Sitting on the bar " NEXT? F \?ELS19 PRINTI "are " JUMP ?CND17 ?ELS19: PRINTI "is " ?CND17: CALL PRINT-CONTENTS,BAR ?CND12: PRINTR "." ?ELS9: EQUAL? PRSA,V?LOOK-BEHIND \FALSE PRINTR "The bartender is there." .FUNCT MIRROR-F EQUAL? PRSA,V?EXAMINE,V?LOOK-INSIDE \?ELS5 PRINTR "You see grime rather than a reflection." ?ELS5: EQUAL? PRSA,V?CLEAN \?ELS9 CALL TELL-CANT-REACH,STR?284 RSTACK ?ELS9: EQUAL? PRSA,V?MUNG \FALSE PRINTR "That would be unlucky." .FUNCT FOOD-F EQUAL? PRSA,V?FIND \?ELS5 ZERO? P-NONOUN /?ELS5 EQUAL? P-XADJN,W?BEEF \?ELS5 PRINTR "Gimme a break!" ?ELS5: EQUAL? PRSA,V?BUY \?ELS11 GETP HERE,P?LINE GRTR? STACK,BACK-ALLEY-LINE-C \?ELS16 PRINTR "Free food is a benefit of this job." ?ELS16: ZERO? HOW-HUNGRY \?ELS20 CALL TELL-WAIT-HUNGRY RSTACK ?ELS20: ZERO? SOUPS-ON /?ELS22 PRINTR "You only need one meal at a time." ?ELS22: LESS? POCKET-CHANGE,5 \?ELS27 CALL TELL-NO-AFFORD RSTACK ?ELS27: SUB POCKET-CHANGE,5 >POCKET-CHANGE SET 'SOUPS-ON,TRUE-VALUE MOVE FOOD,TABLE-OBJECT FCLEAR FOOD,NDESCBIT PRINTR "You have bought a meal for $5." ?ELS11: EQUAL? PRSA,V?EAT \?ELS33 ZERO? SOUPS-ON /?ELS38 ZERO? HOW-HUNGRY \?CND40 CALL TELL-WAIT-HUNGRY RTRUE ?CND40: CALL QUEUE,I-HUNGER,150 PUT STACK,0,1 SET 'HOW-HUNGRY,0 EQUAL? HERE,SHANTY \?CND43 SET 'SOUPS-ON,FALSE-VALUE FSET FOOD,NDESCBIT MOVE FOOD,SHANTY ?CND43: PRINTR "Not bad! It really hit the spot." ?ELS38: EQUAL? HERE,SHANTY \?ELS49 PRINTR "You'll have to buy it before you can eat it." ?ELS49: PRINTR "You'll have to wait for Pete to finish fixing it." ?ELS33: EQUAL? PRSA,V?SMELL \?ELS57 PRINTR "It smells fairly tasty." ?ELS57: EQUAL? PRSA,V?EXAMINE \?ELS61 GETP HERE,P?LINE GRTR? STACK,BACK-ALLEY-LINE-C \?ELS66 PRINTR "It looks like a pretty standard stew." ?ELS66: ZERO? SOUPS-ON /?ELS70 PRINTI "This stew is a staple of " CALL DPRINT,SHANTY PRINTR " and is edible." ?ELS70: CALL GLOBAL-NOT-HERE-PRINT,PRSO RSTACK ?ELS61: EQUAL? PRSA,V?FIND \FALSE IN? FOOD,TABLE-OBJECT \?ELS82 PRINTR "It's on the table." ?ELS82: CALL META-LOC,PLAYER EQUAL? STACK,SHANTY \FALSE PRINTR "You can order food here." .FUNCT TELL-WAIT-HUNGRY PRINTR "Wait until you're a little hungrier." .FUNCT DRINKING-WATER-F EQUAL? PRSA,V?EXAMINE \?ELS5 IN? DRINKING-WATER,TABLE-OBJECT \?ELS10 PRINTR "It's a glass of water, what else?" ?ELS10: EQUAL? HERE,MM-GALLEY,NW-GALLEY \?ELS14 PRINTR "There's a tap in the sink which dispenses bottled water." ?ELS14: PRINTR "You can ask the bartender for a glass." ?ELS5: EQUAL? PRSA,V?DRINK \?ELS22 IN? DRINKING-WATER,TABLE-OBJECT /?THN28 EQUAL? HERE,MM-GALLEY,NW-GALLEY \?ELS27 ?THN28: GRTR? SLOSH-CTR,4 \?ELS34 PRINTR "Are you trying to do an ocean imitation?" ?ELS34: SET 'HOW-THIRSTY,0 INC 'SLOSH-CTR CALL QUEUE,I-THIRST,180 PUT STACK,0,1 MOVE DRINKING-WATER,HERE FSET DRINKING-WATER,NDESCBIT PUTP DRINKING-WATER,P?SDESC,STR?271 PRINTR "You feel much refreshed." ?ELS27: CALL META-LOC,PLAYER EQUAL? STACK,SHANTY \FALSE CALL TELL-ASK-FIRST RSTACK ?ELS22: EQUAL? PRSA,V?BUY \?ELS44 EQUAL? HERE,MM-GALLEY,NW-GALLEY \?ELS44 CALL TELL-JUST RSTACK ?ELS44: EQUAL? PRSA,V?TAKE \?ELS48 IN? DRINKING-WATER,SHANTY \?ELS53 CALL TELL-ASK-FIRST RSTACK ?ELS53: CALL TELL-JUST RSTACK ?ELS48: EQUAL? PRSA,V?FIND \FALSE IN? DRINKING-WATER,TABLE-OBJECT \?ELS62 PRINTR "It's on the table." ?ELS62: CALL META-LOC,PLAYER EQUAL? STACK,SHANTY \FALSE PRINTR "You can order water here." .FUNCT TELL-ASK-FIRST PRINTR "Ask the bartender for some water first." .FUNCT TELL-JUST PRINTR "Just drink it." .FUNCT DRINK-OBJECT-F EQUAL? PRSA,V?EXAMINE \?ELS5 IN? DRINK-OBJECT,TABLE-OBJECT \?ELS10 PRINTR "It's grog which has left many staggering." ?ELS10: CALL TELL-BUY-FIRST RSTACK ?ELS5: EQUAL? PRSA,V?BUY \?ELS16 IN? DRINK-OBJECT,TABLE-OBJECT \?ELS21 CALL TELL-YOU-ALREADY,STR?285 RSTACK ?ELS21: LESS? POCKET-CHANGE,2 \?ELS23 CALL TELL-NO-AFFORD RSTACK ?ELS23: MOVE DRINK-OBJECT,TABLE-OBJECT FCLEAR DRINK-OBJECT,NDESCBIT SUB POCKET-CHANGE,2 >POCKET-CHANGE PRINTR "You have bought a drink for $2." ?ELS16: EQUAL? PRSA,V?DRINK \?ELS29 IN? DRINK-OBJECT,TABLE-OBJECT \?ELS34 MOVE DRINK-OBJECT,SHANTY CALL QUEUE,I-THIRST,90 PUT STACK,0,1 SET 'HOW-THIRSTY,0 FSET DRINK-OBJECT,NDESCBIT ADD BLOOD-ALCOHOL,6 >BLOOD-ALCOHOL PRINTR "It burns your throat on the way down." ?ELS34: CALL TELL-BUY-FIRST RSTACK ?ELS29: EQUAL? PRSA,V?TASTE \?ELS40 IN? DRINK-OBJECT,TABLE-OBJECT /FALSE CALL TELL-BUY-FIRST RSTACK ?ELS40: EQUAL? PRSA,V?FIND \FALSE IN? DRINK-OBJECT,TABLE-OBJECT \?ELS52 PRINTR "It's on the table." ?ELS52: CALL META-LOC,PLAYER EQUAL? STACK,SHANTY \FALSE PRINTR "You can order grog here." .FUNCT TELL-BUY-FIRST PRINTR "You'll have to order one first." .FUNCT NON-DRINK-F CALL TELL-YOUD-BETTER,STR?286 RSTACK .FUNCT BANK-F,RARG EQUAL? RARG,M-ENTER \?ELS5 MOVE SPEAR-CARRIER,BANK PUTP SPEAR-CARRIER,P?SDESC,STR?288 PUTP SPEAR-CARRIER,P?LDESC,STR?289 RTRUE ?ELS5: EQUAL? RARG,M-BEG \FALSE EQUAL? PRSA,V?WITHDRAW \?ELS12 EQUAL? PRSO,INTNUM \FALSE ZERO? P-DOLLAR-FLAG \?ELS19 CALL TELL-YOU-CANT,STR?290 RSTACK ?ELS19: LESS? P-AMOUNT,1 \?ELS21 CALL TELL-SERIOUS RSTACK ?ELS21: IN? PASSBOOK,PLAYER /?ELS23 PRINTR "The teller points out that you don't have your passbook." ?ELS23: GRTR? P-AMOUNT,PASSBOOK-BALANCE \?ELS27 PRINTR "The teller takes your passbook, checks the balance, tells you that there's not enough to cover your planned withdrawal, and returns it." ?ELS27: SUB PASSBOOK-BALANCE,P-AMOUNT >PASSBOOK-BALANCE ADD POCKET-CHANGE,P-AMOUNT >POCKET-CHANGE SET 'STUPID-PROBLEM-STRING,STR?291 PRINTR "The teller takes your passbook, enters the withdrawal, hands you the money and your passbook, and says ""Have a good day.""" ?ELS12: EQUAL? PRSA,V?DEPOSIT \FALSE ZERO? PRSI /?ELS40 EQUAL? PRSI,GLOBAL-BANK /?ELS40 CALL PERFORM,V?PUT,PRSO,PRSI RTRUE ?ELS40: ZERO? P-DOLLAR-FLAG /?THN45 EQUAL? PRSO,INTNUM /?ELS44 ?THN45: CALL HELD?,PRSO ZERO? STACK \?ELS51 CALL TELL-DONT-HAVE,FALSE-VALUE CALL THE?,PRSO CALL DPRINT,PRSO PRINTR "." ?ELS51: PRINTI "The teller looks at the " CALL DPRINT,PRSO PRINTR " and returns it, pointing out that you don't have a safe deposit box." ?ELS44: GRTR? P-AMOUNT,POCKET-CHANGE \?ELS59 CALL TELL-YOU-CANT,STR?292 RSTACK ?ELS59: LESS? P-AMOUNT,1 \?ELS61 CALL TELL-SERIOUS RSTACK ?ELS61: IN? PASSBOOK,PLAYER /?ELS63 PRINTR "The teller points out that you need to have your passbook." ?ELS63: ADD PASSBOOK-BALANCE,P-AMOUNT >PASSBOOK-BALANCE SUB POCKET-CHANGE,P-AMOUNT >POCKET-CHANGE SET 'STUPID-PROBLEM-STRING,STR?291 PRINTI "The teller takes your money and passbook, records the deposit, returns the passbook, and says ""Thank you for banking at " CALL DPRINT,BANK PRINTR ".""" .FUNCT RIDICULOUS-MONEY-KLUDGE-F EQUAL? PRSA,V?ASK-ABOUT /FALSE EQUAL? PRSA,V?COUNT,V?FIND \?ELS7 CALL PERFORM,PRSA,GLOBAL-MONEY RTRUE ?ELS7: PRINTR "You should specify an amount." .FUNCT VAULT-F EQUAL? PRSA,V?THROUGH \?ELS5 EQUAL? HERE,BANK /?ELS5 CALL GLOBAL-NOT-HERE-PRINT,SAFE RSTACK ?ELS5: EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS9 PRINTR "The safe is behind the teller's window and is mostly empty." ?ELS9: EQUAL? PRSA,V?FIND,V?ASK-ABOUT /FALSE PRINTR "There's no way you can get at the safe." .FUNCT POINT-LOOKOUT-F,RARG EQUAL? RARG,M-ENTER \?ELS5 EQUAL? MEETINGS-COMPLETED,2 \FALSE LESS? PRESENT-TIME,660 \FALSE CALL QUEUE,I-THIRD-MEETING,-1 PUT STACK,0,1 RTRUE ?ELS5: EQUAL? RARG,M-BEG \FALSE EQUAL? PRSA,V?LEAP \?ELS19 CALL JIGS-UP,STR?295 RSTACK ?ELS19: GRTR? TM-CTR,0 \?ELS21 LESS? TM-CTR,6 \?ELS21 EQUAL? PRSA,V?YES \?ELS28 PRINTR """That's nice, but I'd like to see it.""" ?ELS28: EQUAL? PRSA,V?NO \?ELS32 SET 'TM-CTR,4 CALL I-THIRD-MEETING RSTACK ?ELS32: EQUAL? PRSA,V?WALK \?ELS34 PRINTR "Johnny puts a hand on your shoulder. ""Not so fast, matey.""" ?ELS34: EQUAL? PRSA,V?SHOW \?ELS38 EQUAL? PRSI,JOHNNY \?ELS38 EQUAL? PRSO,GLOBAL-MONEY /?ELS49 EQUAL? PRSO,INTNUM \?ELS49 ZERO? P-DOLLAR-FLAG /?CND41 ?ELS49: FSET? WET-SUIT,WORNBIT /?THN50 FSET? DEEP-SUIT,WORNBIT \?CND41 ?THN50: CALL TELL-CANT-REACH,STR?296 RTRUE ?CND41: EQUAL? PRSO,GLOBAL-MONEY \?CND52 SET 'P-AMOUNT,0 ?CND52: EQUAL? PRSO,GLOBAL-MONEY \?ELS63 GRTR? POCKET-CHANGE,499 /?THN60 ?ELS63: EQUAL? PRSO,INTNUM \?ELS59 ZERO? P-DOLLAR-FLAG /?ELS59 GRTR? P-AMOUNT,499 \?ELS59 GRTR? P-AMOUNT,POCKET-CHANGE /?ELS59 ?THN60: SET 'TM-CTR,5 PRINTR "He smiles and flashes a wad that represents the contributions of your three partners." ?ELS59: EQUAL? PRSO,GLOBAL-MONEY /?THN70 EQUAL? PRSO,INTNUM \FALSE ZERO? P-DOLLAR-FLAG /FALSE ?THN70: GRTR? P-AMOUNT,POCKET-CHANGE \?ELS78 PRINTR "You haven't got that much to show him." ?ELS78: CALL JIGS-UP,STR?297 RSTACK ?ELS38: EQUAL? PRSA,V?GIVE \FALSE EQUAL? PRSI,JOHNNY \FALSE EQUAL? PRSO,GLOBAL-MONEY \?CND87 SET 'P-AMOUNT,0 ?CND87: EQUAL? PRSO,GLOBAL-MONEY \?ELS96 GRTR? POCKET-CHANGE,499 /?THN93 ?ELS96: EQUAL? PRSO,INTNUM \?CND90 ZERO? P-DOLLAR-FLAG /?CND90 GRTR? P-AMOUNT,499 \?CND90 GRTR? P-AMOUNT,POCKET-CHANGE /?CND90 ?THN93: FSET? DEEP-SUIT,WORNBIT /?CND90 FSET? WET-SUIT,WORNBIT /?CND90 PRINTI "Johnny examines your money and returns it. ""You hold it. I needed to make sure you had it."" " ?CND90: EQUAL? PRSO,GLOBAL-MONEY /?THN111 EQUAL? PRSO,INTNUM \FALSE ZERO? P-DOLLAR-FLAG /FALSE ?THN111: GRTR? P-AMOUNT,POCKET-CHANGE \?ELS119 CALL TELL-YOU-CANT,STR?298 RSTACK ?ELS119: CALL PERFORM,V?SHOW,PRSO,JOHNNY RTRUE ?ELS21: EQUAL? TM-CTR,7 \FALSE EQUAL? PRSA,V?YES \?ELS128 SET 'SHIP-CHOSEN,SALVAGER SET 'TM-CTR,8 RTRUE ?ELS128: EQUAL? PRSA,V?NO \?ELS130 SET 'SHIP-CHOSEN,TRAWLER SET 'TM-CTR,8 RTRUE ?ELS130: EQUAL? PRSA,V?MAYBE \?ELS132 PRINTI """A wise guy, huh?"" " RTRUE ?ELS132: EQUAL? PRSA,V?WALK \FALSE PRINTI """Let's finish here first, huh?"" " RTRUE .FUNCT CLIFF-PSEUDO,PARG=0 EQUAL? PARG,M-NAME \?ELS5 PUTP PSEUDO-OBJECT,P?SDESC,STR?299 RTRUE ?ELS5: EQUAL? PRSA,V?THROW-OFF \?ELS7 CALL PERFORM,V?THROW,PRSO,OCEAN RTRUE ?ELS7: EQUAL? PRSA,V?DISEMBARK \FALSE CALL PERFORM,V?LEAP RSTACK .FUNCT WHARF-F,RARG EQUAL? RARG,M-LOOK \?ELS5 PRINTI "You're on Hardscrabble Island's weatherbeaten wharf, north of the " CALL DPRINT,WHARF-ROAD-1 PRINTI "." ZERO? TRAWLER-DOCKED /?CND8 PRINTI " A trawler called the " CALL DPRINT,TRAWLER PRINTI " is berthed here to the west." ?CND8: ZERO? SALVAGER-DOCKED /?CND14 PRINTI " The " CALL DPRINT,SALVAGER PRINTI " is moored to the east." ?CND14: CRLF RTRUE ?ELS5: EQUAL? RARG,M-BEG \FALSE EQUAL? PRSA,V?THROUGH,V?BOARD \FALSE EQUAL? PRSO,TRAWLER \?ELS31 CALL DO-WALK,P?WEST RTRUE ?ELS31: EQUAL? PRSO,SALVAGER \FALSE CALL DO-WALK,P?EAST RTRUE .ENDI