cutthroats/island.zap

1671 lines
41 KiB
Plaintext

.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