1671 lines
41 KiB
Plaintext
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
|