cutthroats/globals.zap

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