1314 lines
31 KiB
Plaintext
1314 lines
31 KiB
Plaintext
|
|
|
|
.FUNCT RED-HERRING-F
|
|
EQUAL? PRSA,V?ASK-ABOUT /FALSE
|
|
CALL GLOBAL-NOT-HERE-PRINT,RED-HERRING
|
|
RSTACK
|
|
|
|
|
|
.FUNCT INTNUM-F
|
|
EQUAL? PRSA,V?WITHDRAW,V?GIVE \?ELS5
|
|
ZERO? P-DOLLAR-FLAG \?ELS5
|
|
PRINTI "Next time, tell me what there's "
|
|
PRINTN P-NUMBER
|
|
PRINTI " of."
|
|
CRLF
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
RETURN 2
|
|
?ELS5: ZERO? P-DOLLAR-FLAG /FALSE
|
|
EQUAL? PRSA,V?ASK-FOR,V?TAKE,V?WITHDRAW /FALSE
|
|
EQUAL? WINNER,PLAYER \FALSE
|
|
GRTR? P-AMOUNT,POCKET-CHANGE \FALSE
|
|
CALL TELL-DONT-HAVE,STR?2
|
|
RSTACK
|
|
|
|
|
|
.FUNCT AIR-F
|
|
EQUAL? PRSA,V?TASTE,V?SMELL \?ELS5
|
|
CALL AIRTIGHT-ROOM?
|
|
ZERO? STACK /?ELS10
|
|
FSET? MASK,WORNBIT /?ELS10
|
|
PRINTR "The air is musty but breathable."
|
|
?ELS10: EQUAL? HERE,MM-ENGINE-ROOM,NW-ENGINE-ROOM \?ELS16
|
|
PRINTR "The air is heavy with diesel fumes."
|
|
?ELS16: GETP HERE,P?LINE
|
|
EQUAL? STACK,UNDERWATER-LINE-C \?ELS20
|
|
PRINTR "It feels a whole lot better than the water you could be breathing."
|
|
?ELS20: PRINTR "You find nothing special about the air."
|
|
?ELS5: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS28
|
|
PRINTR "I think you're an air head."
|
|
?ELS28: EQUAL? PRSA,V?LOOK-INSIDE \?ELS32
|
|
CALL PERFORM,V?LOOK
|
|
RTRUE
|
|
?ELS32: EQUAL? PRSI,AIR \FALSE
|
|
EQUAL? PRSA,V?DROP,V?THROW \FALSE
|
|
CALL PERFORM,PRSA,PRSO,GROUND
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FLOOR-F
|
|
EQUAL? PRSA,V?PUT,V?PUT-ON \FALSE
|
|
EQUAL? PRSI,GROUND \FALSE
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DECK-F
|
|
EQUAL? PRSA,V?WALK-TO \?ELS5
|
|
CALL TELL-SHD-DIR
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?PUT,V?PUT-ON \FALSE
|
|
EQUAL? PRSI,DECK \FALSE
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FLOOR-HOLE-F
|
|
EQUAL? PRSA,V?THROUGH \?ELS5
|
|
CALL DO-WALK,P?DOWN
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS7
|
|
CALL TELL-YOU-CANT,STR?6
|
|
RSTACK
|
|
?ELS7: EQUAL? PRSA,V?EXAMINE \FALSE
|
|
EQUAL? HERE,WRECK-5 \?ELS14
|
|
ZERO? WRECK-5-FLOODED \?ELS14
|
|
PRINTR "There's water on the other side."
|
|
?ELS14: CALL TELL-LOOKS-HOLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-LOOKS-HOLE
|
|
PRINTR "It looks a lot like a hole."
|
|
|
|
|
|
.FUNCT CEILING-HOLE-F
|
|
EQUAL? PRSA,V?THROUGH \?ELS5
|
|
CALL DO-WALK,P?UP
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS7
|
|
CALL TELL-YOU-CANT,STR?6
|
|
RSTACK
|
|
?ELS7: EQUAL? PRSA,V?EXAMINE \FALSE
|
|
CALL TELL-LOOKS-HOLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT HOLE-F
|
|
EQUAL? PRSA,V?DRILL /FALSE
|
|
CALL GLOBAL-NOT-HERE-PRINT,HOLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT MAST-F
|
|
EQUAL? PRSA,V?EXAMINE \?ELS5
|
|
PRINTI "There are several rotting masts here."
|
|
EQUAL? HERE,WRECK-1 \?CND8
|
|
PRINTI " The top of one has fallen into a hole at your feet."
|
|
?CND8: CRLF
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?CLIMB-FOO \FALSE
|
|
PRINTR "None of the masts looks sturdy enough."
|
|
|
|
|
|
.FUNCT LIGHTHOUSE-F
|
|
EQUAL? HERE,WINDING-ROAD-1 \?ELS5
|
|
EQUAL? PRSA,V?OPEN,V?THROUGH \?ELS10
|
|
PRINTR "The door is locked."
|
|
?ELS10: EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTI "You can see the base of a "
|
|
CALL DPRINT,LIGHTHOUSE
|
|
PRINTI ". "
|
|
CALL TELL-CLOSED,STR?7
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS23
|
|
PRINTI "The "
|
|
CALL DPRINT,LIGHTHOUSE
|
|
PRINTI " towers over Hardscrabble Island from the island's northwest corner."
|
|
GRTR? PRESENT-TIME,1200 /?THN29
|
|
LESS? PRESENT-TIME,480 \?CND26
|
|
?THN29: PRINTI " Its light provides a beacon for ships."
|
|
?CND26: CRLF
|
|
RTRUE
|
|
?ELS23: EQUAL? PRSA,V?WALK-TO \?ELS34
|
|
CALL TELL-SHD-DIR
|
|
RSTACK
|
|
?ELS34: EQUAL? PRSA,V?FIND /FALSE
|
|
EQUAL? PRSA,V?ASK-ABOUT \?ELS38
|
|
FSET? PRSO,VICBIT \FALSE
|
|
PRINTR """It's been there forever."""
|
|
?ELS38: PRINTR "That would be difficult from this distance."
|
|
|
|
|
|
.FUNCT GLOBAL-TREASURE-F
|
|
EQUAL? PRSA,V?TELL,V?ASK-CONTEXT-ABOUT,V?ASK-ABOUT /FALSE
|
|
EQUAL? PRSA,V?FIND \?ELS7
|
|
EQUAL? WINNER,PLAYER \?ELS12
|
|
CALL TELL-NOT-EASY
|
|
RSTACK
|
|
?ELS12: PRINTR """I'd like to know where some is."""
|
|
?ELS7: CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-TREASURE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TRAWLER-F
|
|
EQUAL? PRSA,V?EXAMINE \?ELS5
|
|
GETP HERE,P?LINE
|
|
EQUAL? STACK,TRAWLER-LINE-C \?ELS10
|
|
PRINTI "The "
|
|
CALL DPRINT,TRAWLER
|
|
PRINTR " is in decent shape."
|
|
?ELS10: EQUAL? HERE,MM-WHEELHOUSE \?ELS14
|
|
ZERO? AT-SEA /?ELS14
|
|
CALL GLOBAL-NOT-HERE-PRINT,TRAWLER
|
|
RSTACK
|
|
?ELS14: PRINTI "The "
|
|
CALL DPRINT,TRAWLER
|
|
CALL TELL-BOAT-DESC
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?THROUGH,V?BOARD \?ELS22
|
|
EQUAL? HERE,WHARF \?ELS25
|
|
CALL DO-WALK,P?WEST
|
|
RTRUE
|
|
?ELS25: EQUAL? HERE,UNDERWATER \?ELS27
|
|
EQUAL? DEPTH,50 \?ELS27
|
|
CALL DO-WALK,P?UP
|
|
RTRUE
|
|
?ELS27: CALL TELL-YOU-CANT,STR?8
|
|
RTRUE
|
|
?ELS22: EQUAL? PRSA,V?DISEMBARK \?ELS33
|
|
ZERO? AT-SEA /?ELS38
|
|
CALL GLOBAL-IN?,RAILING,HERE
|
|
ZERO? STACK /?ELS44
|
|
CALL PERFORM,V?DIVE
|
|
RTRUE
|
|
?ELS44: CALL TELL-NO-EXIT
|
|
RSTACK
|
|
?ELS38: EQUAL? HERE,NW-STARBOARD-DECK \?ELS48
|
|
CALL DO-WALK,P?EAST
|
|
RSTACK
|
|
?ELS48: CALL TELL-NO-EXIT
|
|
RSTACK
|
|
?ELS33: EQUAL? PRSA,V?LISTEN \?ELS52
|
|
ZERO? AT-SEA /?ELS52
|
|
CALL TELL-THRUM
|
|
RSTACK
|
|
?ELS52: EQUAL? PRSA,V?LAUNCH \FALSE
|
|
CALL TELL-YOU-CANT,STR?9
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-NO-EXIT
|
|
CALL TELL-HOW-THAT,STR?10,STR?11
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-HOW-THAT,STR,LAST=0
|
|
PRINTI "How can you "
|
|
PRINT STR
|
|
PRINTI " that"
|
|
ZERO? LAST /?CND3
|
|
PRINTI " "
|
|
PRINT LAST
|
|
?CND3: PRINTR "?"
|
|
|
|
|
|
.FUNCT TELL-BOAT-DESC
|
|
PRINTR " looks weathered but not aged."
|
|
|
|
|
|
.FUNCT TELL-THRUM
|
|
PRINTR "You hear the powerful thrum of diesel engines."
|
|
|
|
|
|
.FUNCT SALVAGER-F
|
|
EQUAL? PRSA,V?EXAMINE \?ELS5
|
|
GETP HERE,P?LINE
|
|
EQUAL? STACK,SALVAGER-LINE-C \?ELS10
|
|
PRINTI "The "
|
|
CALL DPRINT,SALVAGER
|
|
PRINTR " is shipshape."
|
|
?ELS10: EQUAL? HERE,NW-WHEELHOUSE \?ELS14
|
|
ZERO? AT-SEA /?ELS14
|
|
CALL GLOBAL-NOT-HERE-PRINT,SALVAGER
|
|
RSTACK
|
|
?ELS14: PRINTI "The "
|
|
CALL DPRINT,SALVAGER
|
|
PRINTI " is a medium-size boat that"
|
|
CALL TELL-BOAT-DESC
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?THROUGH,V?BOARD \?ELS22
|
|
EQUAL? HERE,WHARF \?ELS25
|
|
CALL DO-WALK,P?EAST
|
|
RTRUE
|
|
?ELS25: EQUAL? HERE,UNDERWATER \?ELS27
|
|
EQUAL? DEPTH,50 \?ELS27
|
|
CALL DO-WALK,P?UP
|
|
RTRUE
|
|
?ELS27: CALL TELL-YOU-CANT,STR?8
|
|
RTRUE
|
|
?ELS22: EQUAL? PRSA,V?DISEMBARK \?ELS33
|
|
ZERO? AT-SEA /?ELS38
|
|
CALL GLOBAL-IN?,RAILING,HERE
|
|
ZERO? STACK /?ELS44
|
|
CALL PERFORM,V?DIVE
|
|
RTRUE
|
|
?ELS44: CALL TELL-NO-EXIT
|
|
RSTACK
|
|
?ELS38: EQUAL? HERE,MM-PORT-DECK \?ELS48
|
|
CALL DO-WALK,P?WEST
|
|
RSTACK
|
|
?ELS48: CALL TELL-NO-EXIT
|
|
RSTACK
|
|
?ELS33: EQUAL? PRSA,V?LISTEN \?ELS52
|
|
ZERO? AT-SEA /?ELS52
|
|
CALL TELL-THRUM
|
|
RSTACK
|
|
?ELS52: EQUAL? PRSA,V?LAUNCH \FALSE
|
|
CALL TELL-YOU-CANT,STR?9
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SHIPWRECK-F
|
|
EQUAL? PRSA,V?DISEMBARK \?ELS5
|
|
CALL TELL-NOT-EASY
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTI "It is what's left of a "
|
|
EQUAL? WRECK-CHOSEN,1,3 \?ELS12
|
|
PRINTI "wooden"
|
|
JUMP ?CND10
|
|
?ELS12: PRINTI "steel"
|
|
?CND10: PRINTR " ship."
|
|
|
|
|
|
.FUNCT GLOBAL-SLEEP-F
|
|
EQUAL? PRSA,V?WALK-TO \?ELS5
|
|
CALL PERFORM,V?SLEEP
|
|
RTRUE
|
|
?ELS5: PRINTR "Huh? Wake up!"
|
|
|
|
|
|
.FUNCT FIELD-F
|
|
EQUAL? PRSA,V?THROUGH,V?BOARD \?ELS5
|
|
CALL TELL-YOU-CANT,STR?12
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?LOOK-BEHIND \?ELS7
|
|
CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS7: EQUAL? PRSA,V?CUT \?ELS11
|
|
CALL TELL-DONT-HAVE,STR?13
|
|
RSTACK
|
|
?ELS11: EQUAL? PRSA,V?PLAY \?ELS13
|
|
PRINTR "Sounds exciting."
|
|
?ELS13: EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTR "This field was once productive farmland but hasn't been tended for many years."
|
|
|
|
|
|
.FUNCT ROCKS-F
|
|
EQUAL? PRSA,V?EXAMINE \?ELS5
|
|
PRINTR "The rocks here are large, pointy, and impossible to get through."
|
|
?ELS5: EQUAL? PRSA,V?THROUGH,V?BOARD \FALSE
|
|
CALL TELL-YOU-CANT,STR?14
|
|
RSTACK
|
|
|
|
|
|
.FUNCT POCKET-F
|
|
FSET? WET-SUIT,WORNBIT /?THN6
|
|
FSET? DEEP-SUIT,WORNBIT \?ELS5
|
|
?THN6: PRINTR "Your diving gear is over the pocket."
|
|
?ELS5: EQUAL? PRSA,V?TAKE \?ELS11
|
|
EQUAL? PRSO,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY \?ELS11
|
|
CALL TELL-FLASHING-CASH
|
|
RSTACK
|
|
?ELS11: EQUAL? PRSA,V?LOOK-INSIDE \?ELS15
|
|
PRINTI "There is $"
|
|
PRINTN POCKET-CHANGE
|
|
PRINTR " in it."
|
|
?ELS15: EQUAL? PRSA,V?EMPTY \?ELS19
|
|
PRINTR "You think better of the idea."
|
|
?ELS19: EQUAL? PRSA,V?OPEN \?ELS23
|
|
PRINTR "It's open enough."
|
|
?ELS23: EQUAL? PRSA,V?PUT \FALSE
|
|
EQUAL? PRSI,POCKET \FALSE
|
|
ZERO? P-DOLLAR-FLAG /?ELS34
|
|
EQUAL? PRSO,INTNUM \?ELS34
|
|
GRTR? P-AMOUNT,POCKET-CHANGE \?ELS34
|
|
CALL TELL-DONT-HAVE,STR?2
|
|
RSTACK
|
|
?ELS34: EQUAL? PRSO,RIDICULOUS-MONEY-KLUDGE,GLOBAL-MONEY /?THN39
|
|
EQUAL? PRSO,INTNUM \?ELS38
|
|
ZERO? P-DOLLAR-FLAG /?ELS38
|
|
?THN39: CALL TELL-ALREADY,STR?16
|
|
RSTACK
|
|
?ELS38: CALL TELL-NO-FIT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-NO-FIT,STR=0
|
|
PRINTI "It won't fit"
|
|
ZERO? STR /?CND3
|
|
PRINTI " "
|
|
PRINT STR
|
|
?CND3: PRINTR "."
|
|
|
|
|
|
.FUNCT PEOPLE-F
|
|
EQUAL? HERE,SHANTY,FERRY-LANDING \?ELS5
|
|
PRINTR "Leave them alone. They're not bothering you."
|
|
?ELS5: IN? HERE,WEASEL /?THN10
|
|
IN? HERE,JOHNNY /?THN10
|
|
IN? HERE,PETE /?THN10
|
|
IN? HERE,SPEAR-CARRIER /?THN10
|
|
IN? HERE,DELIVERY-BOY \?ELS9
|
|
?THN10: CALL TELL-REFER-INDIVIDUAL,STR?17
|
|
RSTACK
|
|
?ELS9: CALL GLOBAL-NOT-HERE-PRINT,PEOPLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-REFER-INDIVIDUAL,STR
|
|
PRINTI "Refer to individual"
|
|
PRINT STR
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT GLOBAL-SURFACE-F
|
|
EQUAL? PRSA,V?OPEN \FALSE
|
|
CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT MOVE-SHARED-OBJECTS,PLACE,CTR=0,SURFACE?=1,?TMP1
|
|
EQUAL? PLACE,LAST-S-O-T-PLACE /FALSE
|
|
EQUAL? LAST-S-O-T-PLACE,MM-CREW-QTRS,NW-CREW-QTRS \?ELS5
|
|
SET 'SURFACE?,FALSE-VALUE
|
|
CALL UNLOAD,UNDER-BUNK
|
|
CALL UNLOAD,BUNK
|
|
JUMP ?CND1
|
|
?ELS5: EQUAL? LAST-S-O-T-PLACE,MM-GALLEY,NW-GALLEY \?ELS7
|
|
CALL UNLOAD,STOVE
|
|
JUMP ?CND1
|
|
?ELS7: EQUAL? LAST-S-O-T-PLACE,MM-LOUNGE,NW-LOUNGE \?CND1
|
|
CALL UNLOAD,LOUNGE-CHAIR
|
|
?CND1: ZERO? SURFACE? /?CND10
|
|
CALL UNLOAD,GLOBAL-SURFACE
|
|
?CND10: EQUAL? PLACE,MM-CREW-QTRS,NW-CREW-QTRS /?CND14
|
|
MOVE GLOBAL-SURFACE,PLACE
|
|
?CND14: SET 'LAST-S-O-T-PLACE,PLACE
|
|
?PRG17: GRTR? CTR,44 /TRUE
|
|
ADD CTR,1
|
|
GET SHARED-OBJECT-TABLE,STACK
|
|
EQUAL? STACK,PLACE \?CND19
|
|
GET SHARED-OBJECT-TABLE,CTR >?TMP1
|
|
ADD CTR,2
|
|
GET SHARED-OBJECT-TABLE,STACK
|
|
MOVE ?TMP1,STACK
|
|
PUT SHARED-OBJECT-TABLE,CTR,0
|
|
ADD CTR,1
|
|
PUT SHARED-OBJECT-TABLE,STACK,0
|
|
ADD CTR,2
|
|
PUT SHARED-OBJECT-TABLE,STACK,0
|
|
?CND19: ADD CTR,3 >CTR
|
|
JUMP ?PRG17
|
|
|
|
|
|
.FUNCT UNLOAD,OBJ,F,N
|
|
FIRST? OBJ >F \FALSE
|
|
NEXT? F >N /?KLU11
|
|
?KLU11: CALL PUT-IN-TABLE,F,LAST-S-O-T-PLACE,OBJ
|
|
?PRG6: ZERO? N /TRUE
|
|
SET 'F,N
|
|
NEXT? F >N /?KLU12
|
|
?KLU12: CALL PUT-IN-TABLE,F,LAST-S-O-T-PLACE,OBJ
|
|
JUMP ?PRG6
|
|
|
|
|
|
.FUNCT PUT-IN-TABLE,OBJ,RM,SURF,CTR=0
|
|
EQUAL? OBJ,PLAYER /FALSE
|
|
?PRG4: GRTR? CTR,44 \?ELS8
|
|
JUMP ?REP5
|
|
?ELS8: GET SHARED-OBJECT-TABLE,CTR
|
|
ZERO? STACK \?ELS10
|
|
PUT SHARED-OBJECT-TABLE,CTR,OBJ
|
|
ADD CTR,1
|
|
PUT SHARED-OBJECT-TABLE,STACK,RM
|
|
ADD CTR,2
|
|
PUT SHARED-OBJECT-TABLE,STACK,SURF
|
|
MOVE OBJ,LOCAL-GLOBALS
|
|
RFALSE
|
|
?ELS10: ADD CTR,3 >CTR
|
|
JUMP ?PRG4
|
|
?REP5: PRINTR "[BUG: Too much on surfaces.]"
|
|
|
|
|
|
.FUNCT GLOBAL-BANK-F
|
|
EQUAL? HERE,BANK \?ELS5
|
|
EQUAL? PRSA,V?EXAMINE \?ELS10
|
|
CALL PERFORM,V?LOOK
|
|
SET 'P-IT-OBJECT,GLOBAL-BANK
|
|
RTRUE
|
|
?ELS10: EQUAL? PRSA,V?ROB \?ELS12
|
|
CALL ROBBERY-ENDING
|
|
RSTACK
|
|
?ELS12: EQUAL? PRSA,V?EXIT,V?DROP \?ELS14
|
|
CALL DO-WALK,P?OUT
|
|
RTRUE
|
|
?ELS14: EQUAL? PRSA,V?MUNG \FALSE
|
|
PRINTR "This isn't Monte Carlo."
|
|
?ELS5: EQUAL? HERE,SHORE-ROAD-2 \?ELS20
|
|
EQUAL? PRSA,V?THROUGH \?ELS25
|
|
CALL DO-WALK,P?IN
|
|
RTRUE
|
|
?ELS25: EQUAL? PRSA,V?EXAMINE \?ELS27
|
|
PRINTI "The "
|
|
CALL DPRINT,BANK
|
|
PRINTR " is an imposing granite building."
|
|
?ELS27: EQUAL? PRSA,V?ROB \FALSE
|
|
ZERO? BUSINESS-HOURS? /?ELS36
|
|
CALL ROBBERY-ENDING
|
|
RSTACK
|
|
?ELS36: CALL ROBBERY-ENDING,FALSE-VALUE
|
|
RSTACK
|
|
?ELS20: EQUAL? PRSA,V?ASK-ABOUT \?ELS45
|
|
EQUAL? PRSI,GLOBAL-BANK /FALSE
|
|
?ELS45: EQUAL? PRSA,V?WALK-TO,V?FIND \?ELS41
|
|
EQUAL? PRSO,GLOBAL-BANK /FALSE
|
|
?ELS41: CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-BANK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ROBBERY-ENDING,INSIDE?=1
|
|
ZERO? INSIDE? /?ELS3
|
|
PRINTI "The teller trips the alarm, and policemen come and drag you away. As you contemplate a stretch in prison, you consider that crime might not pay."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS3: PRINTI "You don't realize your attempts have set off a silent alarm until the police arrive. At that point, you can only wonder if attempted robbery wasn't such a bright idea."
|
|
CRLF
|
|
?CND1: CRLF
|
|
CALL FINISH
|
|
RSTACK
|
|
|
|
|
|
.FUNCT GLOBAL-MONEY-F
|
|
EQUAL? PRSA,V?STEP,V?ASK-ABOUT,V?ASK-FOR /FALSE
|
|
EQUAL? PRSA,V?FOLLOW,V?WHAT /FALSE
|
|
EQUAL? PRSA,V?FIND \?ELS9
|
|
CALL TELL-NOT-EASY
|
|
RTRUE
|
|
?ELS9: GRTR? POCKET-CHANGE,0 \?ELS11
|
|
FSET? WET-SUIT,WORNBIT /?THN17
|
|
FSET? DEEP-SUIT,WORNBIT \?ELS16
|
|
?THN17: CALL TELL-CANT-REACH,STR?21
|
|
RSTACK
|
|
?ELS16: EQUAL? PRSA,V?COUNT \?ELS20
|
|
PRINTI "You are carrying $"
|
|
PRINTN POCKET-CHANGE
|
|
PRINTR "."
|
|
?ELS20: EQUAL? PRSA,V?EXAMINE \?ELS24
|
|
PRINTI "It looks a lot like $"
|
|
PRINTN POCKET-CHANGE
|
|
PRINTR "."
|
|
?ELS24: EQUAL? PRSA,V?TAKE /FALSE
|
|
CALL TELL-FLASHING-CASH
|
|
RSTACK
|
|
?ELS11: EQUAL? HERE,BANK \?ELS30
|
|
PRINTR "Not surprisingly, the money here is not easily accessible."
|
|
?ELS30: CALL GLOBAL-NOT-HERE-PRINT,GLOBAL-MONEY
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-FLASHING-CASH
|
|
PRINTR "Flashing your bankroll is not a good idea."
|
|
|
|
|
|
.FUNCT FERRY-TOKEN-F
|
|
IN? SPEAR-CARRIER,HERE \?ELS5
|
|
EQUAL? PRSA,V?ASK-FOR,V?ASK-ABOUT \?ELS11
|
|
EQUAL? PRSO,SPEAR-CARRIER /?THN8
|
|
?ELS11: EQUAL? PRSA,V?BUY \?ELS5
|
|
?THN8: CALL NO-TOKENS,HERE
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?ASK-ABOUT \?ELS13
|
|
FSET? PRSO,PERSON \?ELS13
|
|
PRINTR """You need them for the ferry."""
|
|
?ELS13: EQUAL? PRSA,V?ASK-FOR,V?FIND /FALSE
|
|
CALL GLOBAL-NOT-HERE-PRINT,FERRY-TOKEN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT NO-TOKENS,PLACE
|
|
EQUAL? PLACE,BANK \?ELS3
|
|
PRINTI "The teller says, ""We're out. Try Outfitters."""
|
|
JUMP ?CND1
|
|
?ELS3: PRINTI "The "
|
|
CALL DPRINT,SPEAR-CARRIER
|
|
PRINTI " checks and then says, ""I'm afraid we're out of tokens. Try "
|
|
CALL DPRINT,BANK
|
|
PRINTI "."""
|
|
?CND1: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GLOBAL-TIME-F
|
|
EQUAL? PRSA,V?ASK-ABOUT,V?ASK-FOR \?ELS5
|
|
EQUAL? PRSO,SPEAR-CARRIER \?ELS10
|
|
PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
PRINTI " checks and tells you it's "
|
|
CALL TIME-PRINT,PRESENT-TIME
|
|
CRLF
|
|
RTRUE
|
|
?ELS10: FSET? PRSO,PERSON \FALSE
|
|
PRINTR """I'm not sure."""
|
|
?ELS5: EQUAL? PRSA,V?TELL \?ELS18
|
|
EQUAL? PRSO,GLOBAL-TIME \?ELS18
|
|
ZERO? PRSI \?ELS18
|
|
PRINTR "Didn't you learn that the little hand points to the hour and the big hand points to the minute?"
|
|
?ELS18: EQUAL? PRSA,V?EXAMINE \?ELS24
|
|
CALL PERFORM,V?TIME
|
|
SET 'P-IT-OBJECT,GLOBAL-TIME
|
|
RTRUE
|
|
?ELS24: EQUAL? PRSA,V?TELL \?ELS26
|
|
FSET? PRSO,VICBIT \?ELS26
|
|
EQUAL? PRSO,ME \FALSE
|
|
?ELS26: PRINTR "If you want to know the time, check your watch."
|
|
|
|
|
|
.FUNCT GLOBAL-DAY-F
|
|
EQUAL? PRSA,V?ASK-ABOUT,V?ASK-FOR \?ELS9
|
|
FSET? PRSO,VICBIT /?THN6
|
|
?ELS9: EQUAL? PRSA,V?WHAT \?ELS5
|
|
EQUAL? WINNER,PLAYER /?ELS5
|
|
?THN6: PRINTR """Wednesday."""
|
|
?ELS5: EQUAL? PRSA,V?WHAT \?ELS15
|
|
PRINTR "Ask somebody."
|
|
?ELS15: CALL TELL-SERIOUS
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-SERIOUS
|
|
PRINTR "Be serious."
|
|
|
|
|
|
.FUNCT ADVENTURER-F
|
|
GRTR? BLOOD-ALCOHOL,25 \?ELS5
|
|
CALL JIGS-UP,STR?22
|
|
RSTACK
|
|
?ELS5: GRTR? HOW-THIRSTY,3 /?THN8
|
|
GRTR? BLOOD-ALCOHOL,15 /?THN8
|
|
GRTR? HOW-HUNGRY,3 /?THN8
|
|
EQUAL? HOW-TIRED,6 /?THN8
|
|
EQUAL? P-ADVERB,W?SLOWLY \?ELS7
|
|
?THN8: EQUAL? PRSA,V?WAIT,V?SLEEP /?THN15
|
|
EQUAL? PRSA,V?TELL \?ELS18
|
|
ZERO? PRSI /?THN15
|
|
?ELS18: CALL GAME-COMMAND?
|
|
ZERO? STACK \?THN15
|
|
ZERO? WAITED? /?ELS14
|
|
?THN15: SET 'WAITED?,2
|
|
EQUAL? PRSA,V?WALK \?ELS21
|
|
JUMP ?CND19
|
|
?ELS21: ZERO? PRSO /?ELS23
|
|
CALL META-LOC,PRSO
|
|
EQUAL? STACK,HERE /?ELS23
|
|
IN? PRSO,GLOBAL-OBJECTS /?ELS23
|
|
SET 'PRSO,NOT-HERE-OBJECT
|
|
JUMP ?CND19
|
|
?ELS23: ZERO? PRSI /?CND19
|
|
CALL META-LOC,PRSI
|
|
EQUAL? STACK,HERE /?CND19
|
|
IN? PRSI,GLOBAL-OBJECTS /?CND19
|
|
SET 'PRSI,NOT-HERE-OBJECT
|
|
?CND19: EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \FALSE
|
|
CALL NOT-HERE-OBJECT-F
|
|
RSTACK
|
|
?ELS14: SET 'WAITED?,1
|
|
CALL CLOCKER
|
|
EQUAL? STACK,M-FATAL \?ELS43
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTI "This interrupts what you're trying to do."
|
|
CRLF
|
|
RETURN 2
|
|
?ELS43: EQUAL? PRSA,V?WALK \FALSE
|
|
IN? PLAYER,UNDERWATER /FALSE
|
|
IN? PLAYER,HERE \FALSE
|
|
GRTR? BLOOD-ALCOHOL,15 \?ELS61
|
|
CALL TELL-YOURE-NOT,STR?23
|
|
CRLF
|
|
CALL RANDOM-WALK
|
|
RSTACK
|
|
?ELS61: RANDOM 100
|
|
GRTR? 40,STACK \FALSE
|
|
PRINTI "You stop to sit down for a bit and then struggle back to your feet."
|
|
CRLF
|
|
RETURN 2
|
|
?ELS7: FSET? FLIPPERS,WORNBIT \FALSE
|
|
EQUAL? PRSA,V?WALK \FALSE
|
|
ZERO? AT-SEA \FALSE
|
|
GETP HERE,P?LINE
|
|
LESS? STACK,TRAWLER-LINE-C /?THN72
|
|
EQUAL? HERE,MM-PORT-DECK \?ELS75
|
|
EQUAL? P-WALK-DIR,P?WEST /?THN72
|
|
?ELS75: EQUAL? HERE,NW-STARBOARD-DECK \FALSE
|
|
EQUAL? P-WALK-DIR,P?EAST \FALSE
|
|
?THN72: PRINTR "You'd look silly walking around in flippers."
|
|
|
|
|
|
.FUNCT RANDOM-WALK,P,Z,L,S,D=0
|
|
SET 'P,0
|
|
?PRG1: NEXTP HERE,P >P
|
|
LESS? P,LOW-DIRECTION \?ELS5
|
|
ZERO? D /TRUE
|
|
CALL DO-WALK,D
|
|
RTRUE
|
|
?ELS5: GETPT HERE,P >Z
|
|
PTSIZE Z >L
|
|
EQUAL? L,UEXIT /?THN15
|
|
EQUAL? L,CEXIT \?ELS18
|
|
GETB Z,CEXITFLAG
|
|
VALUE STACK
|
|
ZERO? STACK \?THN15
|
|
?ELS18: EQUAL? L,DEXIT \?PRG1
|
|
GETB Z,DEXITOBJ
|
|
FSET? STACK,OPENBIT \?PRG1
|
|
?THN15: ZERO? D \?ELS23
|
|
SET 'D,P
|
|
JUMP ?PRG1
|
|
?ELS23: RANDOM 100
|
|
GRTR? 50,STACK \?PRG1
|
|
SET 'D,P
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT DETECTOR-NOISE,LISTENING?=0,C,H,P,Z,L,R,LAST-R=0,?TMP1
|
|
CALL META-LOC,PLAYER >H
|
|
ZERO? LISTENING? \?ELS5
|
|
EQUAL? PRSA,V?LISTEN \?ELS5
|
|
EQUAL? PRSO,METAL-DETECTOR /FALSE
|
|
?ELS5: CALL META-LOC,METAL-DETECTOR
|
|
EQUAL? STACK,H \?ELS9
|
|
ZERO? DETECTOR-ON /?ELS9
|
|
ZERO? DETECTOR-POWERED /?ELS9
|
|
CALL COUNT-METAL,H >?TMP1
|
|
GETP H,P?DESCFCN
|
|
ADD ?TMP1,STACK >C
|
|
SET 'P,0
|
|
?PRG12: NEXTP H,P >P
|
|
ZERO? P \?ELS16
|
|
JUMP ?REP13
|
|
?ELS16: LESS? P,LOW-DIRECTION /?PRG12
|
|
GETPT H,P >Z
|
|
PTSIZE Z >L
|
|
EQUAL? L,UEXIT,CEXIT,DEXIT \?ELS21
|
|
GETB Z,0 >R
|
|
EQUAL? R,LAST-R /?PRG12
|
|
CALL COUNT-METAL,R
|
|
DIV STACK,2
|
|
ADD C,STACK
|
|
GETP R,P?DESCFCN
|
|
DIV STACK,2
|
|
ADD STACK,STACK >C >C
|
|
SET 'LAST-R,R
|
|
JUMP ?PRG12
|
|
?ELS21: EQUAL? L,FEXIT \?PRG12
|
|
GET Z,0
|
|
CALL STACK,FALSE-VALUE >R
|
|
ZERO? R /?PRG12
|
|
EQUAL? R,LAST-R /?PRG12
|
|
CALL COUNT-METAL,R
|
|
DIV STACK,2
|
|
ADD C,STACK
|
|
GETP R,P?DESCFCN
|
|
DIV STACK,2
|
|
ADD STACK,STACK >C >C
|
|
SET 'LAST-R,R
|
|
JUMP ?PRG12
|
|
?REP13: ZERO? C \?CND36
|
|
ZERO? LISTENING? /FALSE
|
|
PRINTI "The "
|
|
CALL DPRINT,METAL-DETECTOR
|
|
PRINTR " makes no noise."
|
|
?CND36: PRINTI "The "
|
|
CALL DPRINT,METAL-DETECTOR
|
|
PRINTI " is clicking "
|
|
GRTR? C,100 \?ELS51
|
|
PRINTI "extremely fast"
|
|
JUMP ?CND49
|
|
?ELS51: GRTR? C,75 \?ELS55
|
|
PRINTI "quickly"
|
|
JUMP ?CND49
|
|
?ELS55: GRTR? C,50 \?ELS59
|
|
PRINTI "moderately"
|
|
JUMP ?CND49
|
|
?ELS59: GRTR? C,25 \?ELS63
|
|
PRINTI "slowly"
|
|
JUMP ?CND49
|
|
?ELS63: PRINTI "occasionally"
|
|
?CND49: PRINTR "."
|
|
?ELS9: ZERO? LISTENING? /FALSE
|
|
PRINTI "The "
|
|
CALL DPRINT,METAL-DETECTOR
|
|
PRINTR " makes no noise."
|
|
|
|
|
|
.FUNCT COUNT-METAL,R,F,V=0
|
|
FIRST? R >F /?KLU13
|
|
?KLU13:
|
|
?PRG1: ZERO? F \?ELS5
|
|
RETURN V
|
|
?ELS5: FSET? F,INVISIBLE \?THN8
|
|
EQUAL? F,PLAYER \?CND3
|
|
?THN8: GETP F,P?STATION
|
|
ADD V,STACK >V
|
|
FIRST? F \?CND3
|
|
CALL COUNT-METAL,F
|
|
ADD V,STACK >V
|
|
?CND3: NEXT? F >F /?KLU14
|
|
?KLU14: JUMP ?PRG1
|
|
|
|
|
|
.FUNCT CRETIN-F
|
|
EQUAL? PRSO,WINNER,ME \FALSE
|
|
EQUAL? PRSA,V?EAT \?ELS6
|
|
PRINTR "Stick to stew."
|
|
?ELS6: EQUAL? PRSA,V?DRINK \?ELS10
|
|
PRINTR "Stick to grog."
|
|
?ELS10: EQUAL? PRSA,V?ALARM \?ELS14
|
|
PRINTR "Good morning!"
|
|
?ELS14: EQUAL? PRSA,V?KILL,V?ATTACK,V?MUNG \?ELS18
|
|
PRINTR "Although it's not hard, I can't make it that simple."
|
|
?ELS18: EQUAL? PRSA,V?FIND \?ELS22
|
|
PRINTR "Have you tried asking the parrot?"
|
|
?ELS22: EQUAL? PRSA,V?LAMP-ON,V?TAKE /?THN27
|
|
EQUAL? PRSA,V?GIVE \?ELS26
|
|
EQUAL? PRSO,ME \?ELS26
|
|
?THN27: PRINTR "You romantic fool!"
|
|
?ELS26: EQUAL? PRSA,V?EXAMINE \?ELS34
|
|
PRINTR "You look like a diver."
|
|
?ELS34: EQUAL? PRSA,V?LOOK-UNDER \?ELS38
|
|
PRINTR "I think the center of the earth is down there somewhere."
|
|
?ELS38: EQUAL? PRSA,V?RUB \?ELS42
|
|
PRINTR "You're starting to rub me the wrong way."
|
|
?ELS42: EQUAL? PRSA,V?PLAY \?ELS46
|
|
PRINTR "Don't expect an Oscar."
|
|
?ELS46: EQUAL? PRSA,V?THROUGH,V?BOARD,V?CLIMB-ON \?ELS50
|
|
PRINTR "I'm not impressed."
|
|
?ELS50: EQUAL? PRSA,V?SHAKE,V?CROSS \?ELS54
|
|
PRINTR "I'm much too kind."
|
|
?ELS54: EQUAL? PRSA,V?DROP \?ELS58
|
|
PRINTR "Like a hot potato."
|
|
?ELS58: EQUAL? PRSA,V?FOLLOW \?ELS62
|
|
PRINTR "What makes you think you know where you're going?"
|
|
?ELS62: EQUAL? PRSA,V?SEARCH \?ELS66
|
|
PRINTR "Okay. I found one empty head but a strong heart."
|
|
?ELS66: EQUAL? PRSA,V?PUSH,V?SMELL \?ELS70
|
|
PRINTR "I'd rather not."
|
|
?ELS70: EQUAL? PRSA,V?THROW \?ELS74
|
|
PRINTR "For a loop?"
|
|
?ELS74: EQUAL? PRSA,V?ROB \FALSE
|
|
PRINTR "You wouldn't get much from anyone that stupid."
|
|
|
|
|
|
.FUNCT GLOBAL-SELF-F
|
|
EQUAL? WINNER,PLAYER \?CND1
|
|
EQUAL? PRSI,GLOBAL-SELF \?CND4
|
|
SET 'PRSI,ME
|
|
?CND4: EQUAL? PRSO,GLOBAL-SELF \?CND1
|
|
SET 'PRSO,ME
|
|
?CND1: CALL PERFORM,PRSA,PRSO,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GLOBAL-ROOM-F,PARG=0
|
|
EQUAL? PARG,M-NAME \?ELS5
|
|
PUTP PSEUDO-OBJECT,P?SDESC,STR?24
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7
|
|
CALL PERFORM,V?LOOK
|
|
SET 'P-IT-OBJECT,GLOBAL-ROOM
|
|
RTRUE
|
|
?ELS7: EQUAL? PRSA,V?DISEMBARK,V?EXIT,V?DROP \?ELS9
|
|
CALL DO-WALK,P?OUT
|
|
RTRUE
|
|
?ELS9: EQUAL? PRSA,V?THROUGH,V?ENTER \?ELS11
|
|
CALL DO-WALK,P?IN
|
|
RTRUE
|
|
?ELS11: EQUAL? PRSA,V?ATTACK,V?MUNG \?ELS13
|
|
PRINTR "It's sturdier than you give it credit for."
|
|
?ELS13: EQUAL? PRSA,V?UNLOCK \?ELS17
|
|
PRINTR "Please be more specific about what you want to unlock."
|
|
?ELS17: EQUAL? PRSA,V?PUT \FALSE
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WINDOW-F
|
|
EQUAL? HERE,BEDROOM \?ELS5
|
|
EQUAL? PRSA,V?LOOK-INSIDE \?ELS10
|
|
PRINTI "You see an "
|
|
CALL DPRINT,FIELD
|
|
PRINTR " beyond the alley where the terrible events of last night transpired."
|
|
?ELS10: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
|
|
PRINTR "It's stuck shut."
|
|
?ELS5: EQUAL? HERE,BANK \?ELS18
|
|
EQUAL? PRSA,V?EXAMINE \?ELS23
|
|
PRINTR "It is a barred window about chest-high behind which the teller transacts his business."
|
|
?ELS23: EQUAL? PRSA,V?LOOK-BEHIND,V?LOOK-INSIDE \FALSE
|
|
PRINTR "There is a teller there."
|
|
?ELS18: EQUAL? HERE,MM-WHEELHOUSE,NW-WHEELHOUSE \FALSE
|
|
EQUAL? PRSA,V?LOOK-INSIDE \FALSE
|
|
PRINTR "You can see the ocean beyond the deck."
|
|
|
|
|
|
.FUNCT IN-WINDOW-F,L,?TMP1
|
|
EQUAL? PRSA,V?LOOK-INSIDE \FALSE
|
|
PRINTI "You see "
|
|
LOC JOHNNY >L
|
|
EQUAL? L,MM-WHEELHOUSE,NW-WHEELHOUSE \?CND8
|
|
GETP HERE,P?LINE >?TMP1
|
|
GETP L,P?LINE
|
|
EQUAL? ?TMP1,STACK \?CND8
|
|
PRINTI "Johnny in "
|
|
?CND8: PRINTR "the wheelhouse."
|
|
|
|
|
|
.FUNCT BEDROOM-DOOR-F
|
|
EQUAL? PRSA,V?OPEN \?ELS5
|
|
FSET? BEDROOM-DOOR,OPENBIT \?ELS10
|
|
CALL TELL-ALREADY,STR?25
|
|
RTRUE
|
|
?ELS10: EQUAL? HERE,UPSTAIRS-HALLWAY \?ELS12
|
|
ZERO? BEDROOM-DOOR-LOCKED /?ELS12
|
|
PRINTR "It's locked."
|
|
?ELS12: FSET BEDROOM-DOOR,OPENBIT
|
|
SET 'BEDROOM-DOOR-LOCKED,FALSE-VALUE
|
|
IN? WEASEL,UPSTAIRS-HALLWAY \?ELS21
|
|
PRINTI "You open the door and see "
|
|
CALL DPRINT,WEASEL
|
|
PRINTI ". He says, ""Oh. Hi. I was just wonderin' if you were gonna be at the meetin' at "
|
|
CALL DPRINT,SHANTY
|
|
PRINTI "."" He turns and heads down the steps."
|
|
CRLF
|
|
CALL ESTABLISH-GOAL,WEASEL,SHANTY
|
|
CALL INT,I-WEASEL-TO-BEDROOM
|
|
PUT STACK,0,0
|
|
RTRUE
|
|
?ELS21: CALL TELL-NOW,BEDROOM-DOOR,STR?25
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?CLOSE \?ELS27
|
|
FSET? BEDROOM-DOOR,OPENBIT /?ELS32
|
|
CALL TELL-ALREADY,STR?26
|
|
RTRUE
|
|
?ELS32: FCLEAR BEDROOM-DOOR,OPENBIT
|
|
CALL TELL-NOW,BEDROOM-DOOR,STR?26
|
|
RTRUE
|
|
?ELS27: EQUAL? PRSA,V?UNLOCK \FALSE
|
|
ZERO? BEDROOM-DOOR-LOCKED /?ELS41
|
|
IN? PLAYER,BEDROOM /?THN48
|
|
EQUAL? PRSI,KEY \?ELS47
|
|
?THN48: SET 'BEDROOM-DOOR-LOCKED,FALSE-VALUE
|
|
CALL TELL-NOW,BEDROOM-DOOR,STR?27
|
|
RSTACK
|
|
?ELS47: ZERO? PRSI /?ELS51
|
|
CALL TELL-YOU-CANT,STR?28
|
|
RSTACK
|
|
?ELS51: PRINTR "Not without the key."
|
|
?ELS41: CALL TELL-ALREADY,STR?27
|
|
RSTACK
|
|
|
|
|
|
.FUNCT OCEAN-F,L
|
|
CALL AIRTIGHT-ROOM?
|
|
ZERO? STACK /?ELS5
|
|
PRINTR "There's no water in here."
|
|
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS9
|
|
GETP HERE,P?LINE
|
|
EQUAL? STACK,UNDERWATER-LINE-C \?ELS14
|
|
PRINTR "There is water all around you."
|
|
?ELS14: PRINTI "The ocean looks choppy"
|
|
ZERO? AT-SEA /?ELS23
|
|
PRINTI ". Whitecaps rise and fall around the boat."
|
|
JUMP ?CND21
|
|
?ELS23: PRINTI ", and you know about the dangerous currents here."
|
|
?CND21: CRLF
|
|
RTRUE
|
|
?ELS9: EQUAL? PRSA,V?LISTEN \?ELS32
|
|
PRINTR "You hear the crashing of the waves."
|
|
?ELS32: EQUAL? PRSA,V?SWIM,V?THROUGH,V?BOARD \?ELS36
|
|
GETP HERE,P?LINE >L
|
|
EQUAL? L,UNDERWATER-LINE-C \?ELS41
|
|
PRINTR "You're already in it!"
|
|
?ELS41: EQUAL? L,TRAWLER-LINE-C,SALVAGER-LINE-C /?THN46
|
|
EQUAL? HERE,WHARF,FERRY-LANDING \?ELS45
|
|
?THN46: ZERO? AT-SEA /?ELS52
|
|
CALL PERFORM,V?DIVE
|
|
RTRUE
|
|
?ELS52: CALL JIGS-UP,STR?29
|
|
RSTACK
|
|
?ELS45: CALL TELL-NO-SHORELINE
|
|
RSTACK
|
|
?ELS36: EQUAL? PRSA,V?THROW,V?DROP \?ELS59
|
|
EQUAL? PRSI,OCEAN \?ELS59
|
|
GETP HERE,P?LINE
|
|
EQUAL? STACK,UNDERWATER-LINE-C \?ELS66
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?ELS66: CALL TELL-NO-LITTER
|
|
RSTACK
|
|
?ELS59: EQUAL? PRSA,V?SMELL \?ELS70
|
|
PRINTR "It smells very salty, which is what you might expect from the sea."
|
|
?ELS70: EQUAL? PRSA,V?TASTE,V?DRINK \?ELS74
|
|
GETP HERE,P?LINE
|
|
GRTR? STACK,BACK-ALLEY-LINE-C /?THN80
|
|
EQUAL? HERE,FERRY-LANDING,WHARF \?ELS79
|
|
?THN80: PRINTR "Bleahhhh! You spit it out immediately!"
|
|
?ELS79: CALL TELL-NO-SHORELINE
|
|
RSTACK
|
|
?ELS74: EQUAL? PRSA,V?RUB \FALSE
|
|
GETP HERE,P?LINE
|
|
GRTR? STACK,BACK-ALLEY-LINE-C /?THN93
|
|
EQUAL? HERE,FERRY-LANDING,WHARF \?ELS92
|
|
?THN93: PRINTR "It's wet."
|
|
?ELS92: CALL TELL-NO-SHORELINE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-NO-SHORELINE
|
|
CALL TELL-YOU-CANT,STR?30
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-NO-LITTER
|
|
PRINTR "It would spoil the beauty of the sea."
|
|
|
|
|
|
.FUNCT STAIRS-F
|
|
EQUAL? PRSA,V?EXAMINE \?ELS5
|
|
PRINTI "The carpeted stairway leads "
|
|
EQUAL? HERE,UPSTAIRS-HALLWAY \?ELS10
|
|
PRINTI "down"
|
|
JUMP ?CND8
|
|
?ELS10: EQUAL? HERE,RED-BOAR-INN \?CND8
|
|
PRINTI "up"
|
|
?CND8: PRINTR "."
|
|
?ELS5: EQUAL? PRSA,V?CLIMB-FOO \FALSE
|
|
EQUAL? HERE,UPSTAIRS-HALLWAY \?ELS23
|
|
CALL V-CLIMB-UP,P?DOWN
|
|
RTRUE
|
|
?ELS23: CALL V-CLIMB-UP
|
|
RTRUE
|
|
|
|
|
|
.FUNCT LADDER-TOP-F
|
|
EQUAL? PRSA,V?CLIMB-FOO \FALSE
|
|
CALL DO-WALK,P?DOWN
|
|
RTRUE
|
|
|
|
|
|
.FUNCT LADDER-BOTTOM-F
|
|
EQUAL? PRSA,V?CLIMB-FOO \FALSE
|
|
CALL DO-WALK,P?UP
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RAILING-F
|
|
EQUAL? PRSA,V?CLIMB-FOO \?ELS5
|
|
PRINTR "You immediately climb back down."
|
|
?ELS5: EQUAL? PRSA,V?LEAP,V?DISEMBARK \FALSE
|
|
CALL PERFORM,V?DIVE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BUNKS-F
|
|
EQUAL? PRSA,V?SLEEP,V?BOARD \?ELS5
|
|
CALL TELL-BAD-SHAPE
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7
|
|
PRINTR "These stacks of bunks look as though they were never comfortable. The work of time and the sea have made them fairly decrepit, incapable of supporting much weight."
|
|
?ELS7: EQUAL? PRSA,V?MUNG \FALSE
|
|
PRINTR "Some pieces fall away, but the structure holds together."
|
|
|
|
|
|
.FUNCT TELL-BAD-SHAPE
|
|
PRINTR "They don't look as if they could support your weight."
|
|
|
|
|
|
.FUNCT TIME-PRINT,NUM,HR,PM=0
|
|
DIV NUM,60 >HR
|
|
GRTR? HR,12 \?ELS3
|
|
SUB HR,12 >HR
|
|
SET 'PM,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?ELS3: EQUAL? HR,12 \?ELS5
|
|
SET 'PM,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?ELS5: ZERO? HR \?CND1
|
|
SET 'HR,12
|
|
?CND1: PRINTN HR
|
|
PRINTI ":"
|
|
MOD NUM,60 >HR
|
|
LESS? HR,10 \?CND10
|
|
PRINTI "0"
|
|
?CND10: PRINTN HR
|
|
PRINTI " "
|
|
ZERO? PM /?ELS23
|
|
PUSH STR?34
|
|
JUMP ?CND19
|
|
?ELS23: PUSH STR?35
|
|
?CND19: PRINT STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TABLE-PSEUDO,PARG=0
|
|
EQUAL? PARG,M-NAME \?ELS5
|
|
PUTP PSEUDO-OBJECT,P?SDESC,STR?36
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7
|
|
PRINTR "The table has a variety of forms and brochures you find boring."
|
|
?ELS7: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
|
|
EQUAL? PRSI,PSEUDO-OBJECT \FALSE
|
|
PRINTI "A bank official scurries out, picks up the "
|
|
CALL DPRINT,PRSO
|
|
PRINTR ", and hands it to you, pointing out that the table is for bank business only."
|
|
|
|
|
|
.FUNCT LIGHTHOUSE-LOCK-PSEUDO,PARG=0
|
|
EQUAL? PARG,M-NAME \?ELS5
|
|
PUTP PSEUDO-OBJECT,P?SDESC,STR?37
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?PICK \?ELS7
|
|
PRINTR "You try for a while, but the lock won't give."
|
|
?ELS7: EQUAL? PRSA,V?UNLOCK \?ELS11
|
|
CALL TELL-NO-KEY
|
|
RTRUE
|
|
?ELS11: EQUAL? PRSA,V?MUNG \?ELS13
|
|
PRINTR "You find that the door and lock withstand your attempts."
|
|
?ELS13: EQUAL? PRSA,V?LOCK \FALSE
|
|
CALL TELL-ALREADY,STR?38
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WHEEL-PSEUDO,PARG=0
|
|
EQUAL? PARG,M-NAME \?ELS5
|
|
PUTP PSEUDO-OBJECT,P?SDESC,STR?39
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?SPIN,V?TURN \FALSE
|
|
IN? JOHNNY,HERE \?ELS12
|
|
CALL DPRINT,JOHNNY
|
|
PRINTR " glares at you. You decide to leave the piloting to the captain."
|
|
?ELS12: PRINTR "The wheel spins."
|
|
|
|
|
|
.FUNCT BOLT-PSEUDO,PARG=0
|
|
EQUAL? PARG,M-NAME \?ELS5
|
|
PUTP PSEUDO-OBJECT,P?SDESC,STR?40
|
|
RTRUE
|
|
?ELS5: PRINTR "The bolts are rusted firmly into place."
|
|
|
|
|
|
.FUNCT NOT-HERE-OBJECT-F,TBL,PRSO?=1,OBJ
|
|
EQUAL? PRSO,NOT-HERE-OBJECT \?ELS3
|
|
EQUAL? PRSI,NOT-HERE-OBJECT \?ELS3
|
|
PRINTR "Those things aren't here."
|
|
?ELS3: EQUAL? PRSO,NOT-HERE-OBJECT \?ELS9
|
|
SET 'TBL,P-PRSO
|
|
JUMP ?CND1
|
|
?ELS9: SET 'TBL,P-PRSI
|
|
SET 'PRSO?,FALSE-VALUE
|
|
?CND1: ZERO? PRSO? /?ELS14
|
|
EQUAL? PRSA,V?CLIMB-UP,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT /?THN19
|
|
EQUAL? PRSA,V?FOLLOW,V?FIND,V?EXAMINE /?THN19
|
|
EQUAL? PRSA,V?$CALL,V?WHAT,V?WAIT-FOR /?THN19
|
|
EQUAL? PRSA,V?THROUGH,V?MAKE,V?GIVE /?THN19
|
|
EQUAL? PRSA,V?WALK-TO \?CND12
|
|
?THN19: CALL FIND-NOT-HERE,TBL,PRSO? >OBJ
|
|
ZERO? OBJ /FALSE
|
|
EQUAL? OBJ,NOT-HERE-OBJECT \TRUE
|
|
JUMP ?CND12
|
|
?ELS14: EQUAL? PRSA,V?SGIVE,V?ASK-FOR,V?ASK-ABOUT /?THN34
|
|
EQUAL? PRSA,V?TELL \?CND12
|
|
?THN34: CALL FIND-NOT-HERE,TBL,PRSO? >OBJ
|
|
ZERO? OBJ /FALSE
|
|
EQUAL? OBJ,NOT-HERE-OBJECT \TRUE
|
|
?CND12: EQUAL? PRSA,V?$CALL \?ELS46
|
|
CALL V-CALL-LOSE
|
|
SET 'CLOCK-WAIT,FALSE-VALUE
|
|
JUMP ?CND44
|
|
?ELS46: EQUAL? WINNER,ADVENTURER \?ELS48
|
|
CALL TELL-YOU-CANT,STR?41,FALSE-VALUE
|
|
CALL NOT-HERE-PRINT,PRSO?
|
|
PRINTI " here."
|
|
CRLF
|
|
JUMP ?CND44
|
|
?ELS48: CALL START-SENTENCE,WINNER
|
|
PRINTI " seems confused. ""I don't see any"
|
|
CALL NOT-HERE-PRINT,PRSO?
|
|
PRINTI " here!"""
|
|
CRLF
|
|
?CND44: SET 'P-MOBY-FOUND,FALSE-VALUE
|
|
SET 'PRSA,FALSE-VALUE
|
|
SET 'PRSO,FALSE-VALUE
|
|
SET 'PRSI,FALSE-VALUE
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT FIND-NOT-HERE,TBL,PRSO?,M-F,OBJ,CTR,PER,?TMP1
|
|
CALL MOBY-FIND,TBL >M-F
|
|
GRTR? M-F,1 \?CND1
|
|
GET TBL,1
|
|
GETP STACK,P?GLOBAL >OBJ
|
|
ZERO? OBJ /?CND1
|
|
SET 'M-F,1
|
|
SET 'P-MOBY-FOUND,OBJ
|
|
?CND1: EQUAL? 1,M-F \?ELS10
|
|
ZERO? PRSO? /?ELS13
|
|
EQUAL? PRSA,V?TELL \?ELS17
|
|
EQUAL? WINNER,PLAYER \?ELS17
|
|
FSET? P-MOBY-FOUND,VICBIT \?ELS17
|
|
SET 'P-CONT,FALSE-VALUE
|
|
CALL TELL-NOT-HERE-TALK
|
|
RTRUE
|
|
?ELS17: EQUAL? PRSA,V?EXAMINE \?ELS21
|
|
FSET? P-MOBY-FOUND,PERSON \?ELS24
|
|
CALL META-LOC,PLAYER
|
|
GETP STACK,P?CORRIDOR >?TMP1
|
|
LOC P-MOBY-FOUND
|
|
GETP STACK,P?CORRIDOR
|
|
BAND ?TMP1,STACK
|
|
ZERO? STACK /?ELS24
|
|
PRINTI "You can see "
|
|
CALL DPRINT,P-MOBY-FOUND
|
|
PRINTR " in the distance."
|
|
?ELS24: EQUAL? PRSO,MCGINTY \?ELS30
|
|
IN? PLAYER,BACK-ALLEY-2 \?ELS30
|
|
IN? MCGINTY,MCGINTY-HQ \?ELS30
|
|
PRINTI "Looking through the window, you see "
|
|
CALL DPRINT,MCGINTY
|
|
PRINTR " in his office."
|
|
?ELS30: CALL GLOBAL-NOT-HERE-PRINT,PRSO
|
|
RTRUE
|
|
?ELS21: SET 'PRSO,P-MOBY-FOUND
|
|
JUMP ?CND11
|
|
?ELS13: SET 'PRSI,P-MOBY-FOUND
|
|
?CND11: ZERO? P-XADJ /?ELS43
|
|
ZERO? P-XNAM \?ELS43
|
|
SET 'P-NONOUN,TRUE-VALUE
|
|
RFALSE
|
|
?ELS43: SET 'P-NONOUN,FALSE-VALUE
|
|
RFALSE
|
|
?ELS10: ZERO? PRSO? \?ELS49
|
|
EQUAL? PRSA,V?ASK-ABOUT /?THN55
|
|
EQUAL? PRSA,V?TELL \?ELS54
|
|
EQUAL? PRSO,ME \?ELS54
|
|
?THN55: EQUAL? PRSO,ME \?ELS61
|
|
EQUAL? WINNER,PLAYER \?ELS64
|
|
ZERO? QCONTEXT /?ELS64
|
|
EQUAL? HERE,QCONTEXT-ROOM \?ELS64
|
|
SET 'PER,QCONTEXT
|
|
JUMP ?CND59
|
|
?ELS64: SET 'PER,WINNER
|
|
JUMP ?CND59
|
|
?ELS61: SET 'PER,PRSO
|
|
?CND59: FSET? PER,VICBIT \?ELS73
|
|
CALL SAY-CONFUSED,PER,PRSO?
|
|
RTRUE
|
|
?ELS73: CALL SUDDENLY-REALIZE-TALKING,PER
|
|
RTRUE
|
|
?ELS54: FSET? PRSO,VICBIT \?ELS77
|
|
CALL SAY-CONFUSED,PRSO,PRSO?
|
|
RSTACK
|
|
?ELS77: PRINTI "You wouldn't find any"
|
|
CALL NOT-HERE-PRINT,PRSO?
|
|
PRINTR " there."
|
|
?ELS49: RETURN NOT-HERE-OBJECT
|
|
|
|
|
|
.FUNCT GLOBAL-NOT-HERE-PRINT,OBJ
|
|
ZERO? P-MULT /?ELS3
|
|
INC 'P-NOT-HERE
|
|
JUMP ?CND1
|
|
?ELS3: CALL TELL-YOU-CANT,STR?41,FALSE-VALUE
|
|
EQUAL? OBJ,PRSO \?ELS9
|
|
CALL PRSO-PRINT
|
|
JUMP ?CND7
|
|
?ELS9: CALL PRSI-PRINT
|
|
?CND7: PRINTI " here."
|
|
CRLF
|
|
?CND1: SET 'P-WON,FALSE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SAY-CONFUSED,PER,PRSO?
|
|
CALL START-SENTENCE,PER
|
|
PRINTI " looks confused. ""I have no idea what"
|
|
CALL NOT-HERE-PRINT,PRSO?
|
|
PRINTR " you're talking about!"""
|
|
|
|
|
|
.FUNCT NOT-HERE-PRINT,PRSO?,?TMP1
|
|
ZERO? P-OFLAG /?ELS3
|
|
ZERO? P-XADJ /?CND5
|
|
PRINTI " "
|
|
PRINTB P-XADJN
|
|
?CND5: ZERO? P-XNAM /?CND1
|
|
PRINTI " "
|
|
PRINTB P-XNAM
|
|
JUMP ?CND1
|
|
?ELS3: ZERO? PRSO? /?ELS18
|
|
GET P-ITBL,P-NC1 >?TMP1
|
|
GET P-ITBL,P-NC1L
|
|
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
|
|
JUMP ?CND1
|
|
?ELS18: GET P-ITBL,P-NC2 >?TMP1
|
|
GET P-ITBL,P-NC2L
|
|
CALL BUFFER-PRINT,?TMP1,STACK,FALSE-VALUE
|
|
?CND1: SET 'P-WON,FALSE-VALUE
|
|
RETURN P-WON
|
|
|
|
|
|
.FUNCT TELL-YOU-CANT,STR,FINISH=1
|
|
PRINTI "You can't "
|
|
PRINT STR
|
|
ZERO? FINISH /FALSE
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TELL-ROPE-HIGH
|
|
CALL TELL-CANT-REACH,STR?42
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-CANT-REACH,STR
|
|
CALL TELL-YOU-CANT,STR?43,FALSE-VALUE
|
|
PRINT STR
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT TELL-NO-GO,PRINT?
|
|
ZERO? PRINT? /FALSE
|
|
CALL TELL-YOU-CANT,STR?44
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-NO-NO
|
|
CALL TELL-YOU-CANT,STR?45
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-NO-AFFORD
|
|
CALL TELL-YOU-CANT,STR?46
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-TOO-BIG
|
|
CALL TELL-YOU-CANT,STR?47
|
|
RSTACK
|
|
|
|
.ENDI
|