mirror of
https://github.com/historicalsource/seastalker
synced 2024-06-29 05:05:12 +03:00
2312 lines
61 KiB
Plaintext
2312 lines
61 KiB
Plaintext
|
|
|
|
.FUNCT READ-NAME,TBL,STR,PTR,LEN,N,NUMTOKENS,TOK
|
|
?FCN: PRINT STR
|
|
CRLF
|
|
PRINTI ">"
|
|
READ P-INBUF,P-LEXV
|
|
GETB P-LEXV,P-LEXWORDS
|
|
ZERO? STACK \?CND5
|
|
PRINTI "I beg your pardon?"
|
|
CRLF
|
|
JUMP ?FCN
|
|
?CND5: GET P-LEXV,P-LEXSTART >N
|
|
ZERO? N /?CND10
|
|
CALL WT?,N,PS?VERB,P1?VERB >N
|
|
EQUAL? ACT?RESTART,N \?ELS15
|
|
RESTART
|
|
PRINT FAILED
|
|
CRLF
|
|
JUMP ?FCN
|
|
?ELS15: EQUAL? N,ACT?$VERIFY \?ELS19
|
|
CALL V-$VERIFY
|
|
JUMP ?FCN
|
|
?ELS19: EQUAL? N,ACT?RELEASE \?ELS21
|
|
CALL V-VERSION
|
|
JUMP ?FCN
|
|
?ELS21: EQUAL? N,ACT?RESTORE \?CND10
|
|
CALL V-RESTORE
|
|
ZERO? STACK /?FCN
|
|
RETURN 2
|
|
?CND10: GETB P-LEXV,1 >NUMTOKENS
|
|
SET 'TOK,NUMTOKENS
|
|
SET 'NAME-OUTLEN,1
|
|
ADD 1,P-LEXSTART
|
|
MUL 2,STACK >N
|
|
?PRG31: DLESS? 'TOK,0 \?CND33
|
|
JUMP ?REP32
|
|
?CND33: GETB P-LEXV,N >LEN
|
|
ADD 1,N
|
|
GETB P-LEXV,STACK >PTR
|
|
CALL READ-NAME-REPEAT,TBL,PTR,LEN
|
|
GRTR? NAME-OUTLEN,NAME-LENGTH \?CND36
|
|
JUMP ?REP32
|
|
?CND36: PUTB TBL,NAME-OUTLEN,32
|
|
IGRTR? 'NAME-OUTLEN,NAME-LENGTH \?CND39
|
|
JUMP ?REP32
|
|
?CND39: EQUAL? TBL,FIRST-NAME \?ELS44
|
|
ZERO? FN-SPACE \?CND42
|
|
SUB NAME-OUTLEN,1 >FN-SPACE
|
|
JUMP ?CND42
|
|
?ELS44: ZERO? LN-SPACE \?CND42
|
|
SUB NAME-OUTLEN,1 >LN-SPACE
|
|
?CND42: ADD 4,N >N
|
|
JUMP ?PRG31
|
|
?REP32: GRTR? NAME-OUTLEN,NAME-LENGTH \?ELS52
|
|
PUTB TBL,0,NAME-LENGTH
|
|
RTRUE
|
|
?ELS52: SUB NAME-OUTLEN,2
|
|
PUTB TBL,0,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT READ-NAME-REPEAT,TBL,PTR,LEN,CH
|
|
?PRG1: GETB P-INBUF,PTR >CH
|
|
DLESS? 'LEN,0 /TRUE
|
|
EQUAL? CH,45,39,38 /?CND6
|
|
MOD CH,32
|
|
ADD 96,STACK >CH
|
|
?CND6: PUTB TBL,NAME-OUTLEN,CH
|
|
IGRTR? 'NAME-OUTLEN,NAME-LENGTH /TRUE
|
|
INC 'PTR
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT PRINT-NAME,TBL,CAP=0,PTR=0,LEN,CH,SP?=1
|
|
GETB TBL,0 >LEN
|
|
?PRG1: IGRTR? 'PTR,LEN /TRUE
|
|
GETB TBL,PTR >CH
|
|
ZERO? CAP \?THN11
|
|
ZERO? SP? /?ELS8
|
|
?THN11: EQUAL? CH,32,45,39 /?ELS8
|
|
EQUAL? CH,38 /?ELS8
|
|
SUB CH,32
|
|
PRINTC STACK
|
|
JUMP ?CND6
|
|
?ELS8: PRINTC CH
|
|
?CND6: EQUAL? CH,32,45,39 \?ELS17
|
|
SET 'SP?,TRUE-VALUE
|
|
JUMP ?PRG1
|
|
?ELS17: EQUAL? CH,38 \?ELS19
|
|
SET 'SP?,TRUE-VALUE
|
|
JUMP ?PRG1
|
|
?ELS19: SET 'SP?,FALSE-VALUE
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT NAME?,PTR,?ORTMP
|
|
CALL XNAME?,PTR,FIRST-NAME,FN-SPACE
|
|
POP '?ORTMP
|
|
ZERO? ?ORTMP /?ORP4
|
|
RETURN ?ORTMP
|
|
?ORP4: CALL XNAME?,PTR,LAST-NAME,LN-SPACE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT XNAME?,PTR,TBL,MAX,CNT,BPTR,CHR,N?=1,NCNT=0
|
|
MUL PTR,2
|
|
ADD P-LEXV,STACK
|
|
GETB STACK,2 >CNT
|
|
GRTR? CNT,6 \?CND1
|
|
SET 'CNT,6
|
|
?CND1: MUL PTR,2
|
|
ADD P-LEXV,STACK
|
|
GETB STACK,3 >BPTR
|
|
ZERO? MAX \?CND4
|
|
GETB TBL,0 >MAX
|
|
?CND4: DLESS? 'MAX,7 /?CND7
|
|
SET 'MAX,6
|
|
?CND7:
|
|
?PRG10: IGRTR? 'NCNT,MAX \?ELS14
|
|
ZERO? CNT /?REP11
|
|
SET 'N?,FALSE-VALUE
|
|
JUMP ?REP11
|
|
?ELS14: DLESS? 'CNT,0 \?ELS19
|
|
SET 'N?,FALSE-VALUE
|
|
JUMP ?REP11
|
|
?ELS19: GETB P-INBUF,BPTR >CHR
|
|
EQUAL? CHR,45,38,39 /?CND22
|
|
MOD CHR,32
|
|
ADD 96,STACK >CHR
|
|
?CND22: GETB TBL,NCNT
|
|
EQUAL? CHR,STACK /?CND25
|
|
SET 'N?,FALSE-VALUE
|
|
?CND25: INC 'BPTR
|
|
JUMP ?PRG10
|
|
?REP11: ZERO? N? /FALSE
|
|
EQUAL? TBL,FIRST-NAME \?ELS38
|
|
PUT P-LEXV,PTR,W?$FN
|
|
RETURN W?$FN
|
|
?ELS38: PUT P-LEXV,PTR,W?$LN
|
|
RETURN W?$LN
|
|
|
|
|
|
.FUNCT PLAYER-NAME-F
|
|
CALL DO-INSTEAD-OF,PLAYER,PLAYER-NAME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PLAYER-F,LON,LAT
|
|
EQUAL? PRSO,PLAYER \FALSE
|
|
EQUAL? PRSA,V?GOODBYE,V?HELLO \?ELS10
|
|
CALL HAR-HAR
|
|
RSTACK
|
|
?ELS10: EQUAL? PRSA,V?EXAMINE \?ELS12
|
|
CALL PERFORM,V?INVENTORY
|
|
RTRUE
|
|
?ELS12: EQUAL? PRSA,V?FIND \?ELS14
|
|
EQUAL? NOW-TERRAIN,BAY-TERRAIN,SEA-TERRAIN \FALSE
|
|
PRINTI "The "
|
|
EQUAL? NOW-TERRAIN,BAY-TERRAIN \?ELS24
|
|
SUB SUB-LON,SEA-WALL-LON >LON
|
|
SUB SUB-LAT,SEA-WALL-LAT >LAT
|
|
PRINTD SEA-WALL
|
|
JUMP ?CND22
|
|
?ELS24: SET 'LON,SUB-LON
|
|
SET 'LAT,SUB-LAT
|
|
ZERO? FINE-SONAR /?CND29
|
|
INC 'LAT
|
|
?CND29: PRINTD AIRLOCK
|
|
?CND22: PRINTI " is "
|
|
ZERO? LON /?CND37
|
|
LESS? LON,0 \?ELS46
|
|
SUB 0,LON
|
|
JUMP ?CND42
|
|
?ELS46: PUSH LON
|
|
?CND42: MUL 5,STACK
|
|
PRINTN STACK
|
|
ZERO? FINE-SONAR \?CND49
|
|
PRINTI "00"
|
|
?CND49: PRINTI " meters "
|
|
GRTR? 0,LON \?ELS60
|
|
PUSH STR?78
|
|
JUMP ?CND56
|
|
?ELS60: PUSH STR?79
|
|
?CND56: PRINT STACK
|
|
PRINTI "st "
|
|
ZERO? LAT /?CND37
|
|
PRINTI "and "
|
|
?CND37: ZERO? LAT /?CND68
|
|
LESS? LAT,0 \?ELS77
|
|
SUB 0,LAT
|
|
JUMP ?CND73
|
|
?ELS77: PUSH LAT
|
|
?CND73: MUL 5,STACK
|
|
PRINTN STACK
|
|
ZERO? FINE-SONAR \?CND80
|
|
PRINTI "00"
|
|
?CND80: PRINTI " meters "
|
|
GRTR? 0,LAT \?ELS91
|
|
PUSH STR?80
|
|
JUMP ?CND87
|
|
?ELS91: PUSH STR?81
|
|
?CND87: PRINT STACK
|
|
PRINTI "th "
|
|
?CND68: PRINTI "of here."
|
|
CRLF
|
|
SUB AIRLOCK-DEPTH,SUB-DEPTH >LON
|
|
EQUAL? NOW-TERRAIN,SEA-TERRAIN \TRUE
|
|
ZERO? LON /TRUE
|
|
PRINTI "It's also "
|
|
MUL 5,LON
|
|
PRINTN STACK
|
|
PRINTR " meters below you."
|
|
?ELS14: EQUAL? PRSA,V?SEARCH \FALSE
|
|
CALL PERFORM,V?INVENTORY
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ARM-F
|
|
CALL DIVESTMENT?,ARM
|
|
ZERO? STACK \?THN6
|
|
CALL DIVESTMENT?,GASH
|
|
ZERO? STACK /?ELS5
|
|
?THN6: CALL HAR-HAR
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?EXAMINE,V?ANALYZE \FALSE
|
|
FSET? ARM,MUNGBIT \?ELS14
|
|
PRINTR "Your arm is seriously gashed."
|
|
?ELS14: CALL NOTHING-SPECIAL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TIP-IS-PLAYING
|
|
EQUAL? TIP-PLAYS,WINDOW \?ELS7
|
|
PUSH STR?82
|
|
JUMP ?CND3
|
|
?ELS7: PUSH STR?83
|
|
?CND3: PRINT STACK
|
|
PRINTI " the "
|
|
PRINTD TIP-PLAYS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TIP-F,ARG=0,OBJ,X,L
|
|
LOC TIP >L
|
|
EQUAL? ARG,M-OBJDESC \?ELS5
|
|
FSET? TIP,TOUCHBIT /?ELS8
|
|
FSET TIP,TOUCHBIT
|
|
CRLF
|
|
PRINTD TIP
|
|
PRINTI " follows you into"
|
|
CALL PRINTT,L
|
|
EQUAL? L,BLY-OFFICE \?CND11
|
|
CALL PICK-ONE,TIP-PICKS >TIP-PLAYS
|
|
PRINTI " and begins "
|
|
CALL TIP-IS-PLAYING
|
|
?CND11: PRINTR "."
|
|
?ELS8: EQUAL? L,SUB \?ELS19
|
|
PRINTD TIP
|
|
PRINTI " is sitting behind you, "
|
|
IN? MAGAZINE,TIP \?ELS24
|
|
PRINTI "reading a "
|
|
PRINTD MAGAZINE
|
|
PRINTR "."
|
|
?ELS24: ZERO? TIP-FOLLOWS-YOU? \?ELS28
|
|
PRINTI "installing a "
|
|
PRINTD FINE-GRID
|
|
PRINTR "."
|
|
?ELS28: PRINTR "checking the instruments."
|
|
?ELS19: EQUAL? L,BLY-OFFICE \?ELS36
|
|
PRINTD TIP
|
|
PRINTI " is "
|
|
CALL TIP-IS-PLAYING
|
|
PRINTR "."
|
|
?ELS36: CALL DESCRIBE-COLLAPSE,TIP
|
|
RTRUE
|
|
?ELS5: EQUAL? WINNER,TIP \?ELS44
|
|
CALL GRAB-ATTENTION,TIP
|
|
ZERO? STACK /TRUE
|
|
EQUAL? PRSO,FINE-GRID \?ELS59
|
|
EQUAL? PRSA,V?TAKE /?ELS59
|
|
EQUAL? PRSA,V?TIE-TO,V?PUT \?ELS59
|
|
EQUAL? PRSI,SONARSCOPE,GLOBAL-SONAR,THROTTLE /?THN52
|
|
?ELS59: CALL MOUNTING-VERB?,FINE-GRID
|
|
ZERO? STACK /?ELS51
|
|
?THN52: SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK-ABOUT,TIP,FINE-GRID
|
|
RTRUE
|
|
?ELS51: EQUAL? PRSA,V?WAIT-FOR \?ELS65
|
|
EQUAL? PRSO,HERE /?THN62
|
|
?ELS65: EQUAL? PRSA,V?FOLLOW \?ELS61
|
|
EQUAL? PRSO,PLAYER \?ELS61
|
|
?THN62: PRINTI """I won't let you out of my sight, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "!"""
|
|
?ELS61: CALL COM-CHECK,TIP >X
|
|
ZERO? X /?ELS71
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS71: CALL PICK-ONE,WHY-ME
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 2
|
|
?ELS44: CALL ASK-ABOUT?,TIP >OBJ
|
|
ZERO? OBJ /?ELS86
|
|
CALL GRAB-ATTENTION,TIP
|
|
ZERO? STACK /TRUE
|
|
CALL SAID-TO,TIP
|
|
EQUAL? OBJ,AUTO-PILOT \?ELS94
|
|
ZERO? SUB-IN-OPEN-SEA /?ELS94
|
|
FSET? AUTO-PILOT,ONBIT /?ELS94
|
|
CALL TIME-FOR-PILOT
|
|
RSTACK
|
|
?ELS94: EQUAL? OBJ,REACTOR,CATALYST-CAPSULE \?ELS98
|
|
IN? CATALYST-CAPSULE,REACTOR /FALSE
|
|
CALL TELL-HINT,33,CATALYST-CAPSULE,FALSE-VALUE
|
|
RSTACK
|
|
?ELS98: EQUAL? OBJ,SPECIAL-TOOL-GLOBAL,SPECIAL-TOOL \?ELS105
|
|
EQUAL? HERE,SUB \FALSE
|
|
CALL TELL-HINT,61,TIP,FALSE-VALUE
|
|
RSTACK
|
|
?ELS105: EQUAL? OBJ,TRAITOR,BLACK-BOX \?ELS112
|
|
CALL TIP-COMES
|
|
ZERO? STACK \TRUE
|
|
?ELS112: EQUAL? OBJ,TIP-IDEA,GLOBAL-SONAR,GLOBAL-SIEGEL \?ELS116
|
|
IN? TIP-IDEA,GLOBAL-OBJECTS \?ELS116
|
|
ZERO? SIEGEL-TESTED \?ELS116
|
|
FSET? SIEGEL,BUSYBIT /?ELS116
|
|
CALL TELL-HINT,13,SIEGEL,FALSE-VALUE
|
|
RSTACK
|
|
?ELS116: EQUAL? OBJ,STATION-MONITOR \?ELS120
|
|
PRINTR """I just like to play with it."""
|
|
?ELS120: EQUAL? OBJ,FINE-GRID \?ELS124
|
|
ZERO? FINE-SONAR \?THN128
|
|
ZERO? SUB-IN-DOME \?CND125
|
|
EQUAL? NOW-TERRAIN,SEA-TERRAIN /?CND125
|
|
?THN128: PRINTR """I think it's swell!"""
|
|
?CND125: PRINTI """If the "
|
|
PRINTD SNARK
|
|
PRINTI " stays near the sea floor, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", it may churn up silt. Even with our "
|
|
PRINTD SEARCH-BEAM
|
|
PRINTI " on, we might have trouble aiming a weapon. Wouldn't it be easier if we could spot its exact position by sonar?"""
|
|
CALL YES?
|
|
ZERO? STACK /TRUE
|
|
PRINTI """"
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", our "
|
|
PRINTD SONARSCOPE
|
|
PRINTI " shows each "
|
|
PRINTD GRID-UNIT
|
|
PRINTI " as 500 meters across. A blip indicates the APPROXIMATE position of an object. That's not good enough to hit the broad side of a barn! "
|
|
ZERO? SUB-IN-DOME \?CND141
|
|
IN? FINE-GRID,TIP /?CND141
|
|
PRINTI "When we're in the "
|
|
PRINTD AQUADOME
|
|
PRINTI ", ask me about a "
|
|
PRINTD FINE-GRID
|
|
PRINTR "."""
|
|
?CND141: PRINTI "Let me install a "
|
|
PRINTD FINE-GRID
|
|
PRINTI " on the "
|
|
PRINTD SONARSCOPE
|
|
PRINTI " that'll show a blip's position to within 5 meters, okay?"""
|
|
CALL YES?
|
|
ZERO? STACK /TRUE
|
|
CALL QUEUE,I-TIP-REPORTS,5
|
|
PUT STACK,0,1
|
|
FSET TIP,BUSYBIT
|
|
ZERO? SUB-IN-DOME /TRUE
|
|
EQUAL? HERE,SUB,AIRLOCK,AIRLOCK-WALL \?ELS159
|
|
MOVE TIP,DOME-STORAGE
|
|
JUMP ?CND157
|
|
?ELS159: MOVE TIP,SUB
|
|
?CND157: MOVE FINE-GRID,TIP
|
|
SET 'TIP-FOLLOWS-YOU?,FALSE-VALUE
|
|
PRINTI """"
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", I checked"
|
|
EQUAL? HERE,DOME-STORAGE /?CND164
|
|
PRINTI " the "
|
|
PRINTD DOME-STORAGE
|
|
?CND164: PRINTI " and found a "
|
|
PRINTD FINE-GRID
|
|
PRINTI " that'll fit our "
|
|
PRINTD SONARSCOPE
|
|
PRINTI ". I can install it quickly! I'll have someone install a fine throttle control, too, for tight maneuvering. It has the same 3 settings, but for small "
|
|
PRINTD GRID-UNIT
|
|
PRINTI "s -- 0, 5, 10, or 15 meters per turn."""
|
|
CRLF
|
|
RTRUE
|
|
?ELS124: CALL COMMON-ASK-ABOUT,TIP,OBJ >X
|
|
ZERO? X /?ELS172
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS172: PRINTI """You know as much as I do, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS86: EQUAL? PRSA,V?TELL-ABOUT \?ELS185
|
|
EQUAL? PRSO,GLOBAL-SNARK \FALSE
|
|
PRINTI """I know, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI "! We'd better go there fast in the "
|
|
PRINTD GLOBAL-SUB
|
|
PRINTR "!"""
|
|
?ELS185: CALL COMMON-OTHER,TIP
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT ASK-ABOUT?,PER
|
|
EQUAL? PRSA,V?CONFRONT,V?ASK-ABOUT \?ELS5
|
|
EQUAL? PRSO,PER \?ELS5
|
|
ZERO? PRSI /?ELS5
|
|
RETURN PRSI
|
|
?ELS5: EQUAL? PRSA,V?WHAT,V?FIND \FALSE
|
|
ZERO? PRSO /FALSE
|
|
IN? PRSO,GLOBAL-OBJECTS \FALSE
|
|
RETURN PRSO
|
|
|
|
|
|
.FUNCT GLOBAL-SHARON-F,ARG=0,OBJ,L,X
|
|
SET 'L,REMOTE-PERSON-LOC
|
|
ZERO? SHARON-EXPLAINED \?ELS5
|
|
EQUAL? REMOTE-PERSON,GLOBAL-SHARON \?ELS5
|
|
SET 'SHARON-EXPLAINED,TRUE-VALUE
|
|
CALL SHARON-EXPLAINS
|
|
RETURN 2
|
|
?ELS5: EQUAL? WINNER,GLOBAL-SHARON \?ELS11
|
|
EQUAL? PRSA,V?FIND \?ELS16
|
|
EQUAL? PRSO,GLOBAL-SHARON \?ELS16
|
|
PRINTI """I'm in the "
|
|
PRINTD THORPE-SUB
|
|
PRINTR "."""
|
|
?ELS16: EQUAL? PRSA,V?FIND \?ELS22
|
|
EQUAL? PRSO,GLOBAL-SNARK \?ELS22
|
|
PRINTR """It's right here, next to me."""
|
|
?ELS22: EQUAL? PRSA,V?SET,V?PUSH /?THN31
|
|
EQUAL? PRSA,V?MOVE-DIR,V?MOVE,V?STOP \?ELS28
|
|
?THN31: EQUAL? PRSO,THORPE-SUB,SNARK,ROOMS \?ELS28
|
|
PRINTR """I'm afraid I can't control it that well."""
|
|
?ELS28: CALL COM-CHECK,GLOBAL-SHARON >X
|
|
ZERO? X /?ELS36
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS36: PRINTI """Sorry, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", but I'm too busy driving this "
|
|
PRINTD THORPE-SUB
|
|
PRINTI "."""
|
|
CRLF
|
|
RETURN 2
|
|
?ELS11: EQUAL? REMOTE-PERSON,GLOBAL-SHARON \?ELS51
|
|
CALL ASK-ABOUT?,GLOBAL-SHARON >OBJ
|
|
ZERO? OBJ /?ELS51
|
|
CALL SAID-TO,GLOBAL-SHARON
|
|
EQUAL? OBJ,SNARK \?ELS58
|
|
CALL SHARON-ABOUT-MONSTER
|
|
RTRUE
|
|
?ELS58: EQUAL? OBJ,THORPE-SUB \?ELS60
|
|
CALL SHARON-ABOUT-CAT
|
|
RTRUE
|
|
?ELS60: EQUAL? OBJ,GLOBAL-THORPE \?ELS62
|
|
CALL SHARON-ABOUT-THORPE
|
|
RTRUE
|
|
?ELS62: CALL COMMON-ASK-ABOUT,GLOBAL-SHARON,OBJ >X
|
|
ZERO? X /?ELS64
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS64: CALL DONT-KNOW,GLOBAL-SHARON,OBJ
|
|
RSTACK
|
|
?ELS51: EQUAL? PRSO,GLOBAL-SHARON \?ELS75
|
|
EQUAL? PRSA,V?HELLO \?ELS75
|
|
EQUAL? REMOTE-PERSON-ON,SONARPHONE,INTERCOM \?ELS75
|
|
PRINTI "You hear "
|
|
PRINTD PRSO
|
|
PRINTR " nodding at you."
|
|
?ELS75: EQUAL? PRSO,GLOBAL-SHARON \?ELS81
|
|
EQUAL? PRSA,V?REPLY,V?LISTEN \?ELS81
|
|
CALL WAITING-FOR-YOU-TO-SPEAK
|
|
RTRUE
|
|
?ELS81: EQUAL? PRSO,GLOBAL-SHARON \?ELS85
|
|
EQUAL? PRSA,V?PHONE \?ELS85
|
|
EQUAL? HERE,SUB,CRAWL-SPACE /?ELS85
|
|
ZERO? SUB-IN-DOME \?ELS85
|
|
PRINTR "There's no phone line to where she is."
|
|
?ELS85: EQUAL? PRSO,GLOBAL-SHARON \?ELS91
|
|
EQUAL? PRSA,V?READ \?ELS91
|
|
CALL FIGURE-OF-SPEECH
|
|
RTRUE
|
|
?ELS91: CALL GLOBAL-PERSON
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FIGURE-OF-SPEECH
|
|
PRINTR "That's just a figure of speech! Try the command: SAY ""HELLO."""
|
|
|
|
|
|
.FUNCT DONT-KNOW-ANYTHING
|
|
PRINTR """Uh . . . I don't know anything about it."""
|
|
|
|
|
|
.FUNCT SHARON-F,ARG=0,OBJ,L,X
|
|
LOC SHARON >L
|
|
EQUAL? ARG,M-OBJDESC \?ELS5
|
|
IN? SHARON,OFFICE \?ELS10
|
|
PRINTR "Sharon is looking through the file drawer."
|
|
?ELS10: IN? SHARON,HERE \?ELS14
|
|
IN? HERE,ROOMS \?ELS14
|
|
PRINTR "Sharon is pacing back and forth."
|
|
?ELS14: PRINTI "Sharon is sitting on the "
|
|
LOC SHARON
|
|
PRINTD STACK
|
|
PRINTR "."
|
|
?ELS5: EQUAL? WINNER,SHARON \?ELS24
|
|
EQUAL? PRSA,V?FIND \?ELS29
|
|
EQUAL? PRSO,MAGAZINE \?ELS34
|
|
CALL PERFORM,V?ASK-ABOUT,SHARON,MAGAZINE
|
|
RTRUE
|
|
?ELS34: EQUAL? PRSO,GLOBAL-THORPE \FALSE
|
|
PRINTI "Sharon looks surprised. ""I don't know, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS29: EQUAL? PRSA,V?LOOK-INSIDE \?ELS40
|
|
EQUAL? PRSO,FILE-DRAWER \?ELS40
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK-ABOUT,SHARON,FILE-DRAWER
|
|
RTRUE
|
|
?ELS40: CALL COM-CHECK,SHARON >X
|
|
ZERO? X /?ELS44
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS44: PRINTR """I'm too busy right now."""
|
|
?ELS24: EQUAL? PRSA,V?ASK \?ELS57
|
|
IN? SHARON,OFFICE \?ELS57
|
|
CALL PERFORM,V?ASK-ABOUT,SHARON,FILE-DRAWER
|
|
RTRUE
|
|
?ELS57: CALL ASK-ABOUT?,SHARON >OBJ
|
|
ZERO? OBJ /?ELS61
|
|
CALL GRAB-ATTENTION,SHARON
|
|
ZERO? STACK /TRUE
|
|
CALL SAID-TO,SHARON
|
|
EQUAL? OBJ,MAGAZINE,ARTICLE \?ELS69
|
|
LOC MAGAZINE
|
|
EQUAL? STACK,SHARON,PLAYER \?ELS69
|
|
PRINTI """Uh . . . That's not the "
|
|
PRINTD MAGAZINE
|
|
PRINTR " I'm looking for."""
|
|
?ELS69: EQUAL? OBJ,CIRCUIT-BREAKER,ELECTRICAL-CONTROL-PANEL \?ELS75
|
|
ZERO? SHARON-BROKE-CIRCUIT /?ELS75
|
|
CALL DONT-KNOW-ANYTHING
|
|
RSTACK
|
|
?ELS75: EQUAL? OBJ,CATALYST-CAPSULE \?ELS79
|
|
PRINTR """Uh . . . I guess I forgot about it. Sorry."""
|
|
?ELS79: EQUAL? OBJ,GLOBAL-SHARON,SHARON \?ELS83
|
|
PRINTR """You know me well and trust me completely."""
|
|
?ELS83: EQUAL? OBJ,PROBLEM \?ELS87
|
|
PRINTI """Sorry, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", but I just got word that my mother is ill. They want me to come to the hospital at once."
|
|
PRINTR """"
|
|
?ELS87: EQUAL? OBJ,ARTICLE /?THN96
|
|
EQUAL? OBJ,FILE-DRAWER,PAPERS,MAGAZINE \?ELS95
|
|
?THN96: PRINTI """I can't find the "
|
|
PRINTD MAGAZINE
|
|
PRINTI " I bought for my mother this morning. I thought it might be in the "
|
|
PRINTD FILE-DRAWER
|
|
PRINTI ". I wanted to take it to the hospital for her to read. I really must rush off, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "!"""
|
|
?ELS95: EQUAL? OBJ,THORPE,GLOBAL-THORPE \?ELS101
|
|
CALL PERFORM,V?ASK-ABOUT,SHARON,PRIVATE-MATTER
|
|
RTRUE
|
|
?ELS101: CALL COMMON-ASK-ABOUT,SHARON,OBJ >X
|
|
ZERO? X /?ELS103
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS103: CALL PICK-ONE,SHARON-ASKED
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS61: EQUAL? PRSA,V?GOODBYE \?ELS116
|
|
PRINTI """I'm going as soon as I find that "
|
|
PRINTD MAGAZINE
|
|
PRINTR "."""
|
|
?ELS116: CALL COMMON-OTHER,SHARON
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT BLY-TELLS-PROBLEM
|
|
SET 'BLY-TOLD-PROBLEM,TRUE-VALUE
|
|
CALL QUEUE,I-SHARON-TO-HALLWAY,6
|
|
PUT STACK,0,1
|
|
CALL SAID-TO,GLOBAL-BLY
|
|
CALL THIS-IS-IT,GLOBAL-SNARK
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI "! Our transparent dome enclosing the "
|
|
PRINT URS
|
|
PRINTR " is being battered by a huge monster!"""
|
|
|
|
|
|
.FUNCT MIKE-2-F
|
|
PRINTI """The "
|
|
PRINTD SNARK
|
|
PRINTI "'s gone for now, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ". It's no longer in sight."
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GLOBAL-BLY-F,ARG=0,OBJ,L,X
|
|
SET 'L,REMOTE-PERSON-LOC
|
|
EQUAL? ARG,M-OBJDESC \?ELS5
|
|
EQUAL? L,CENTER-OF-LAB \FALSE
|
|
ZERO? WOMAN-ON-SCREEN /?ELS15
|
|
PRINTR "You can't tell who the woman is."
|
|
?ELS15: PRINTI "You can see a picture of "
|
|
PRINTD BLY
|
|
PRINTI " on the "
|
|
PRINTD REMOTE-PERSON-ON
|
|
PRINTR "."
|
|
?ELS5: EQUAL? L,CENTER-OF-LAB \?ELS24
|
|
CALL SPEAKING-VERB?
|
|
ZERO? STACK /?ELS24
|
|
EQUAL? PRSO,FALSE-VALUE,GLOBAL-BLY,PLAYER \?ELS24
|
|
IN? MICROPHONE,PLAYER \?THN27
|
|
FSET? MICROPHONE,ONBIT /?ELS24
|
|
?THN27: SET 'P-CONT,FALSE-VALUE
|
|
CALL THIS-IS-IT,MICROPHONE
|
|
PRINTI "She can't hear you unless you "
|
|
IN? MICROPHONE,PLAYER /?ELS35
|
|
PRINTI "pick up your "
|
|
PRINTD MICROPHONE
|
|
FSET? MICROPHONE,ONBIT /?CND38
|
|
PRINTI " and switch it on"
|
|
?CND38: PRINTR "."
|
|
?ELS35: PRINTI "switch on your "
|
|
PRINTD MICROPHONE
|
|
PRINTR "."
|
|
?ELS24: ZERO? BLY-TOLD-PROBLEM \?ELS50
|
|
EQUAL? PRSA,V?LISTEN,V?GOODBYE /?ELS50
|
|
ZERO? MONSTER-GONE \?ELS50
|
|
IN? MICROPHONE,PLAYER \?ELS50
|
|
EQUAL? REMOTE-PERSON,GLOBAL-BLY \?ELS50
|
|
CALL QUEUE,I-SEND-SUB,8
|
|
PUT STACK,0,1
|
|
PRINTI """"
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI "! "
|
|
CALL BLY-TELLS-PROBLEM
|
|
RETURN 2
|
|
?ELS50: EQUAL? WINNER,GLOBAL-BLY \?ELS63
|
|
EQUAL? PRSA,V?FIND \?ELS68
|
|
EQUAL? PRSO,GLOBAL-BLY \?ELS68
|
|
PRINTI """I'm at the "
|
|
PRINTD AQUADOME
|
|
PRINTR "."""
|
|
?ELS68: EQUAL? PRSO,PLAYER \?ELS74
|
|
EQUAL? P-ADVERB,W?PRIVATELY \?ELS74
|
|
EQUAL? PRSA,V?TELL /?THN77
|
|
EQUAL? PRSA,V?TELL-ABOUT \?ELS74
|
|
EQUAL? PRSI,PRIVATE-MATTER \?ELS74
|
|
?THN77: SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK-ABOUT,GLOBAL-BLY,PRIVATE-MATTER
|
|
RTRUE
|
|
?ELS74: EQUAL? PRSA,V?EXAMINE \?ELS88
|
|
EQUAL? PRSO,GLOBAL-SNARK /?THN85
|
|
?ELS88: EQUAL? PRSA,V?SHOW \?ELS84
|
|
EQUAL? PRSO,PLAYER \?ELS84
|
|
EQUAL? PRSI,GLOBAL-SNARK \?ELS84
|
|
?THN85: ZERO? MONSTER-GONE /?ELS95
|
|
CALL MIKE-2-F
|
|
PRINTR """"
|
|
?ELS95: PRINTI "The "
|
|
PRINTD AQUADOME
|
|
PRINTI "'s camera pans, and the monster comes into view on your "
|
|
PRINTD VIDEOPHONE
|
|
PRINTR " screen. It resembles a huge sea slug, about 5 meters tall. Its clawed tentacles pound and scratch at the dome."
|
|
?ELS84: EQUAL? PRSA,V?KILL \?ELS108
|
|
EQUAL? PRSO,GLOBAL-SNARK /?THN113
|
|
?ELS108: EQUAL? PRSA,V?SHOOT,V?ATTACK \?ELS110
|
|
EQUAL? PRSO,GLOBAL-SNARK \?ELS110
|
|
EQUAL? PRSI,FALSE-VALUE,GLOBAL-WEAPON,GLOBAL-EXPLOSIVE /?THN113
|
|
?ELS110: EQUAL? PRSO,GLOBAL-EXPLOSIVE,GLOBAL-WEAPON \?ELS104
|
|
EQUAL? PRSA,V?USE /?THN113
|
|
EQUAL? PRSA,V?USE-AGAINST \?ELS104
|
|
EQUAL? PRSI,GLOBAL-SNARK \?ELS104
|
|
?THN113: ZERO? MONSTER-GONE /?ELS121
|
|
CALL MIKE-2-F
|
|
PRINTR """"
|
|
?ELS121: EQUAL? PRSO,GLOBAL-EXPLOSIVE /?THN127
|
|
EQUAL? PRSI,GLOBAL-EXPLOSIVE \?ELS126
|
|
?THN127: PRINTI """Setting off explosions so close might damage the "
|
|
PRINTD AQUADOME
|
|
PRINTR " even worse than the Snark is doing."""
|
|
?ELS126: PRINTI """"
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR ", this is a peaceful research facility. We have no weapons."""
|
|
?ELS104: EQUAL? PRSA,V?SEND-OUT,V?SEND \?ELS136
|
|
EQUAL? PRSO,GLOBAL-SUB \?ELS136
|
|
PRINTI """No subs are stationed here at the "
|
|
PRINTD AQUADOME
|
|
PRINTI ", "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS136: EQUAL? PRSO,DISTRESS-CALL \?ELS142
|
|
EQUAL? PRSA,V?SEND /?THN145
|
|
EQUAL? PRSA,V?SEND-TO \?ELS142
|
|
EQUAL? PRSI,GLOBAL-SUB \?ELS142
|
|
?THN145: PRINTI """No response to our "
|
|
PRINTD SONARPHONE
|
|
PRINTI " "
|
|
PRINTD DISTRESS-CALL
|
|
PRINTR "s."""
|
|
?ELS142: EQUAL? PRSO,GLOBAL-SUB \?ELS152
|
|
EQUAL? PRSA,V?FIND /?THN155
|
|
EQUAL? PRSA,V?FIND-WITH \?ELS152
|
|
EQUAL? PRSI,GLOBAL-SONAR \?ELS152
|
|
?THN155: PRINTI """No blips appear on the "
|
|
PRINTD SONAR-EQUIPMENT
|
|
PRINTR "."""
|
|
?ELS152: EQUAL? PRSA,V?DISEMBARK,V?LEAVE /?THN163
|
|
EQUAL? PRSA,V?WALK-TO \?ELS162
|
|
EQUAL? PRSO,GLOBAL-HERE,YOUR-LABORATORY,GLOBAL-SURFACE \?ELS162
|
|
?THN163: PRINTR """Our emergency escape bell would be vulnerable to a monster as big as the Snark. Ditto for SCUBA gear, deep-sea diving suits, or jet-propelled observation bubbles."""
|
|
?ELS162: EQUAL? PRSA,V?ASK-FOR,V?ASK-ABOUT \?ELS170
|
|
CALL PICK-ONE,WHY-ME
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 2
|
|
?ELS170: EQUAL? PRSA,V?TELL,V?REPLY \?ELS176
|
|
EQUAL? PRSO,PLAYER \?ELS176
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK,GLOBAL-BLY
|
|
RTRUE
|
|
?ELS176: EQUAL? PRSA,V?WAIT-FOR /?THN181
|
|
EQUAL? PRSA,V?FIND \?ELS180
|
|
EQUAL? PRSO,PLAYER \?ELS180
|
|
?THN181: PRINTI """Okay, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR ", but hurry!"""
|
|
?ELS180: CALL COM-CHECK,GLOBAL-BLY >X
|
|
ZERO? X /?ELS190
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS190: CALL PICK-ONE,WHY-ME
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 2
|
|
?ELS63: EQUAL? REMOTE-PERSON,GLOBAL-BLY \?ELS205
|
|
CALL ASK-ABOUT?,GLOBAL-BLY >OBJ
|
|
ZERO? OBJ /?ELS205
|
|
CALL SAID-TO,GLOBAL-BLY
|
|
EQUAL? OBJ,PROBLEM \?ELS212
|
|
EQUAL? L,SUB \?ELS217
|
|
PRINTR """I'll tell you when we can talk privately."""
|
|
?ELS217: PRINTI """"
|
|
CALL BLY-TELLS-PROBLEM
|
|
RSTACK
|
|
?ELS212: EQUAL? OBJ,GLOBAL-SNARK \?ELS225
|
|
EQUAL? REMOTE-PERSON-ON,SONARPHONE \?ELS228
|
|
MOVE PRIVATE-MATTER,GLOBAL-OBJECTS
|
|
INC 'BLY-PRIVATELY-COUNT
|
|
PRINTI """There have been no new attacks, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ". But the creature may come back. And"
|
|
CALL DISCUSS-PRIVATE
|
|
RTRUE
|
|
?ELS228: PRINTI """Some of our divers saw it while exploring the undersea environment. They nicknamed it the Snark. This is the first time it has approached the "
|
|
PRINTD AQUADOME
|
|
PRINTI ", and it may be the last time, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI "! I'm not sure how long our plastic dome enclosure c"
|
|
ZERO? MONSTER-GONE /?ELS237
|
|
PRINTI "ould"
|
|
JUMP ?CND235
|
|
?ELS237: PRINTI "an"
|
|
?CND235: PRINTR " withstand such a battering!"""
|
|
?ELS225: CALL COMMON-ASK-ABOUT,GLOBAL-BLY,OBJ >X
|
|
ZERO? X /?ELS248
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS248: CALL DONT-KNOW,GLOBAL-BLY,OBJ
|
|
RSTACK
|
|
?ELS205: EQUAL? PRSA,V?$CALL,V?ASK \?ELS259
|
|
PRINTI """Ask me about something in particular, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS259: ZERO? WOMAN-ON-SCREEN /?ELS263
|
|
EQUAL? PRSA,V?EXAMINE \?ELS263
|
|
PRINTR "You can't tell who the woman is."
|
|
?ELS263: EQUAL? PRSO,GLOBAL-BLY \?ELS269
|
|
EQUAL? PRSA,V?HELLO \?ELS269
|
|
EQUAL? REMOTE-PERSON-ON,SONARPHONE,INTERCOM \?ELS269
|
|
PRINTI "You hear "
|
|
PRINTD PRSO
|
|
PRINTR " nodding at you."
|
|
?ELS269: EQUAL? PRSA,V?GOODBYE \?ELS275
|
|
PRINTI """I hope to see you soon, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI "."""
|
|
CRLF
|
|
EQUAL? REMOTE-PERSON-ON,VIDEOPHONE \?CND280
|
|
CALL I-SHARON-TO-HALLWAY
|
|
?CND280: CALL PHONE-OFF
|
|
RTRUE
|
|
?ELS275: EQUAL? PRSO,GLOBAL-BLY \?ELS284
|
|
EQUAL? PRSA,V?REPLY,V?LISTEN \?ELS284
|
|
CALL WAITING-FOR-YOU-TO-SPEAK
|
|
RTRUE
|
|
?ELS284: EQUAL? PRSO,GLOBAL-BLY \?ELS288
|
|
EQUAL? PRSA,V?PHONE \?ELS288
|
|
EQUAL? HERE,SUB,CRAWL-SPACE /?ELS288
|
|
ZERO? SUB-IN-DOME /FALSE
|
|
?ELS288: EQUAL? PRSO,GLOBAL-BLY \?ELS292
|
|
EQUAL? PRSA,V?READ \?ELS292
|
|
CALL FIGURE-OF-SPEECH
|
|
RTRUE
|
|
?ELS292: EQUAL? PRSA,V?TELL-ABOUT \?ELS296
|
|
EQUAL? PRSI,GLOBAL-SUB \FALSE
|
|
PRINTI """The only submarine capable of hunting it at such depths is your "
|
|
PRINTD GLOBAL-SUB
|
|
PRINTR ". Please send us that!"""
|
|
?ELS296: CALL COMMON-OTHER,GLOBAL-BLY
|
|
ZERO? STACK \TRUE
|
|
CALL GLOBAL-PERSON
|
|
RSTACK
|
|
|
|
|
|
.FUNCT BLY-F,ARG=0,OBJ,L,X
|
|
LOC BLY >L
|
|
EQUAL? ARG,M-OBJDESC \?ELS5
|
|
CALL DESCRIBE-COLLAPSE,BLY
|
|
RSTACK
|
|
?ELS5: ZERO? DOME-AIR-BAD? /?ELS7
|
|
FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS7
|
|
PRINTI """Never mind me, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI "!"" she cries. ""S-S-Something's wrong with the "
|
|
PRINTD AIR-SUPPLY-SYSTEM
|
|
PRINTI "! ... F-Fix it -- or we'll all s-s-soon be ..."""
|
|
CRLF
|
|
RETURN 2
|
|
?ELS7: EQUAL? WINNER,BLY \?ELS15
|
|
CALL GRAB-ATTENTION,BLY
|
|
ZERO? STACK /TRUE
|
|
EQUAL? PRSA,V?FIND \?ELS22
|
|
EQUAL? PRSO,PHOTO \?ELS22
|
|
ZERO? BLY-SAW-PHOTO \?ELS22
|
|
PRINTR """It's either on his person or in his locker, in the dormitory."""
|
|
?ELS22: EQUAL? PRSA,V?GIVE \?ELS28
|
|
EQUAL? PRSO,JOB \?ELS28
|
|
EQUAL? PRSI,GLOBAL-SIEGEL,SIEGEL \?ELS28
|
|
PRINTI """I'll have him check the "
|
|
PRINTD SONAR-EQUIPMENT
|
|
PRINTI ". Okay?"""
|
|
CALL YES?
|
|
ZERO? STACK /?CND33
|
|
CALL ZOE-SENDS-MARV,COMM-BLDG
|
|
RTRUE
|
|
?CND33: PRINTI """Should I give him some chore that's close to the "
|
|
PRINTD SONAR-EQUIPMENT
|
|
PRINTI " so he can keep an eye on it?"""
|
|
CALL YES?
|
|
ZERO? STACK /?CND38
|
|
CALL ZOE-SENDS-MARV,COMM-BLDG
|
|
RTRUE
|
|
?CND38: PRINTI """Then somewhere out of sight of the "
|
|
PRINTD COMM-BLDG
|
|
PRINTI "? That's where the "
|
|
PRINTD SONAR-EQUIPMENT
|
|
PRINTI "is."""
|
|
CALL YES?
|
|
ZERO? STACK /?ELS47
|
|
SET 'SIEGEL-OUT-OF-SIGHT,TRUE-VALUE
|
|
CALL ZOE-SENDS-MARV,AIRLOCK
|
|
RTRUE
|
|
?ELS47: PRINTI """Then, you'd better do it, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS28: EQUAL? PRSA,V?TIE-TO,V?PUT \?ELS53
|
|
EQUAL? PRSO,BLACK-BOX \?ELS53
|
|
EQUAL? PRSI,SONAR-EQUIPMENT,GLOBAL-SONAR \?ELS53
|
|
MOVE BLACK-BOX,SONAR-EQUIPMENT
|
|
PRINTI """Wilco, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR ". Consider it done."""
|
|
?ELS53: EQUAL? PRSA,V?EXAMINE,V?READ \?ELS59
|
|
EQUAL? PRSO,DIARY \?ELS59
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK-ABOUT,BLY,DIARY
|
|
RTRUE
|
|
?ELS59: EQUAL? PRSA,V?SHOW \?ELS63
|
|
EQUAL? PRSO,PLAYER \?ELS63
|
|
EQUAL? PRSI,EVIDENCE \?ELS63
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK-ABOUT,BLY,PRSI
|
|
RTRUE
|
|
?ELS63: EQUAL? PRSO,PLAYER \?ELS67
|
|
EQUAL? P-ADVERB,W?PRIVATELY \?ELS67
|
|
EQUAL? PRSA,V?TELL /?THN70
|
|
EQUAL? PRSA,V?TELL-ABOUT \?ELS67
|
|
EQUAL? PRSI,PRIVATE-MATTER \?ELS67
|
|
?THN70: SET 'WINNER,PLAYER
|
|
CALL ASK-BLY-ABOUT-PRIVATE-MATTER
|
|
RTRUE
|
|
?ELS67: EQUAL? PRSA,V?ASK \?ELS75
|
|
EQUAL? PRSO,PLAYER \?ELS75
|
|
CALL I-BLY-SAYS,TRUE-VALUE
|
|
ZERO? STACK \TRUE
|
|
?ELS75: FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS79
|
|
CALL EXIT-VERB?
|
|
ZERO? STACK /?ELS79
|
|
PRINTI """Not now, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS79: CALL COM-CHECK,BLY >X
|
|
ZERO? X /?ELS85
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS85: CALL PICK-ONE,WHY-ME
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 2
|
|
?ELS15: EQUAL? PRSA,V?ASK /?THN101
|
|
EQUAL? PRSO,BLY \?ELS100
|
|
EQUAL? PRSA,V?TELL \?ELS100
|
|
EQUAL? P-ADVERB,W?PRIVATELY \?ELS100
|
|
?THN101: CALL ASK-BLY-ABOUT-PRIVATE-MATTER
|
|
RTRUE
|
|
?ELS100: EQUAL? PRSA,V?TELL-ABOUT,V?ASK-ABOUT \?ELS106
|
|
EQUAL? PRSI,CONTROL-CIRCUITS-GAUGE,CONTROL-CIRCUITS,OVERHEATING /?THN109
|
|
EQUAL? PRSI,VOLTAGE-REGULATOR,LOCAL-SUB,GLOBAL-SUB \?ELS106
|
|
?THN109: PRINTI """You mean the problem you had on the way here? Shall I ask Mick to check on it?"""
|
|
CALL YES?
|
|
ZERO? STACK /TRUE
|
|
MOVE ANTRIM,HERE
|
|
SET 'WINNER,ANTRIM
|
|
CALL PERFORM,V?FIX,GLOBAL-SUB
|
|
RTRUE
|
|
?ELS106: CALL ASK-ABOUT?,BLY >OBJ
|
|
ZERO? OBJ /?ELS117
|
|
CALL GRAB-ATTENTION,BLY
|
|
ZERO? STACK /TRUE
|
|
CALL SAID-TO,BLY
|
|
FSET BLY,TOUCHBIT
|
|
EQUAL? OBJ,PRIVATE-MATTER \?ELS125
|
|
CALL ASK-BLY-ABOUT-PRIVATE-MATTER
|
|
RSTACK
|
|
?ELS125: EQUAL? OBJ,PROBLEM \?ELS127
|
|
ZERO? DOME-AIR-BAD? /?ELS132
|
|
FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS132
|
|
CALL BADGES-RED
|
|
RTRUE
|
|
?ELS132: ZERO? ZOE-MENTIONED-EVIDENCE \?ELS136
|
|
SET 'WINNER,PLAYER
|
|
CALL ASK-BLY-ABOUT-PRIVATE-MATTER
|
|
RTRUE
|
|
?ELS136: EQUAL? HERE,BLY-OFFICE \?ELS138
|
|
ZERO? ZOE-BLUSHING /?ELS138
|
|
CALL DOC-IN-LOVE
|
|
RSTACK
|
|
?ELS138: PRINTI """I'm worried that the "
|
|
PRINTD SNARK
|
|
PRINTI " may attack again, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS127: EQUAL? OBJ,DIARY \?ELS146
|
|
PRINTR """I think that I can guess what's in it."""
|
|
?ELS146: EQUAL? OBJ,REASON,PHOTO \?ELS150
|
|
EQUAL? OBJ,PHOTO \?CND151
|
|
SET 'BLY-SAW-PHOTO,TRUE-VALUE
|
|
?CND151: CALL DISCRETION,BLY,HORVAK
|
|
PRINTI """A friend took a picture of me just before I was assigned here. I usually keep it on my desk, but a few days after Doc came on to me, I realized it was gone."
|
|
ZERO? BLY-SAW-PHOTO \?CND156
|
|
PRINTI " It still hasn't turned up."
|
|
?CND156: PRINTR " I think Doc took it. He wanted a picture of me."""
|
|
?ELS150: EQUAL? OBJ,EVIDENCE,BLACK-BOX \?ELS164
|
|
ZERO? ZOE-MENTIONED-EVIDENCE \?CND165
|
|
CALL ASK-BLY-ABOUT-PRIVATE-MATTER
|
|
RTRUE
|
|
?CND165: PRINTI """I wanted to make sure the "
|
|
PRINTD SONAR-EQUIPMENT
|
|
PRINTI " would warn us if the "
|
|
PRINTD SNARK
|
|
PRINTI " approached again. I was worried because the blips on the scope looked fuzzy, as if the system was out of alignment. When I inspected it, I found someone had secretly attached "
|
|
IN? BLACK-BOX,BLY-DESK /?ELS172
|
|
IN? BLACK-BOX,BLY \?ELS179
|
|
PUSH STR?86
|
|
JUMP ?CND175
|
|
?ELS179: PUSH STR?87
|
|
?CND175: PRINT STACK
|
|
PRINTD BLACK-BOX
|
|
JUMP ?CND170
|
|
?ELS172: PRINTI "this device"
|
|
?CND170: PRINTI " to it!"""
|
|
CRLF
|
|
IN? BLACK-BOX,BLY-DESK \?CND188
|
|
MOVE BLACK-BOX,BLY
|
|
CALL THIS-IS-IT,BLACK-BOX
|
|
PRINTI "Zoe takes a small """
|
|
PRINTD BLACK-BOX
|
|
PRINTI """ device from her desk drawer."
|
|
CRLF
|
|
?CND188: CALL QUEUE,I-TIP-SONAR-PLAN,-1
|
|
PUT STACK,0,1
|
|
MOVE TIP-IDEA,GLOBAL-OBJECTS
|
|
RTRUE
|
|
?ELS164: EQUAL? OBJ,SIEGEL,GLOBAL-SIEGEL \?ELS194
|
|
ZERO? SIEGEL-TESTED \?THN198
|
|
FSET? SIEGEL,BUSYBIT /?THN198
|
|
IN? BLACK-BOX,BLY-DESK \?ELS197
|
|
?THN198: CALL DISCRETION,BLY,SIEGEL
|
|
PRINTI """"
|
|
JUMP ?CND195
|
|
?ELS197: CALL DISCRETION,BLY,SIEGEL,ANTRIM
|
|
PRINTI """I bet you're wondering if he could have attached that "
|
|
PRINTD BLACK-BOX
|
|
PRINTI " to the "
|
|
PRINTD SONAR-EQUIPMENT
|
|
PRINTI ".
|
|
I agree that he had the opportunity, but all I can say, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", is that he's no troublemaker like "
|
|
PRINTD ANTRIM
|
|
PRINTI "."
|
|
CRLF
|
|
?CND195: PRINTI "He's a great diver and a skilled electronics engineer.
|
|
I think he really enjoys exploring the undersea environment. He discovered that "
|
|
PRINTD ORE-NODULES
|
|
PRINTI " on the sea floor near the "
|
|
PRINTD AQUADOME
|
|
PRINTI ".
|
|
I have no reason to suspect him of trying to sabotage the "
|
|
PRINT URS
|
|
PRINTI " of "
|
|
PRINTD IU-GLOBAL
|
|
PRINTI "."
|
|
ZERO? SIEGEL-TESTED \?THN213
|
|
FSET? SIEGEL,BUSYBIT /?THN213
|
|
IN? BLACK-BOX,BLY-DESK \?ELS212
|
|
?THN213: PRINTR """"
|
|
?ELS212: PRINTI " But I do have a plan that will help us find out. Do you want to hear it, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI "?"""
|
|
MOVE BLY-PLAN,GLOBAL-OBJECTS
|
|
CALL YES?
|
|
ZERO? STACK /TRUE
|
|
CALL QUEUE,I-TIP-SONAR-PLAN,0
|
|
CALL TELL-HINT,13,SIEGEL,FALSE-VALUE
|
|
RTRUE
|
|
?ELS194: EQUAL? OBJ,BLY-PLAN \?ELS225
|
|
CALL TELL-HINT,13,SIEGEL,FALSE-VALUE
|
|
RSTACK
|
|
?ELS225: EQUAL? OBJ,ANTRIM,GLOBAL-ANTRIM \?ELS227
|
|
PRINTI "Just hearing Antrim's name makes her eyes flash fire, and she clenches her fists. You can tell she's had a hard time keeping her temper when dealing with Antrim.
|
|
"
|
|
CALL DISCRETION,BLY,ANTRIM
|
|
PRINTI """"
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", that redheaded troublemaker's been nothing but bad news since the day I arrived! He's always got a chip on his shoulder and looks for ways to embarrass me or start a fight."
|
|
ZERO? ANTRIM-EXPLODED /?CND232
|
|
PRINTI " You heard his remarks about the "
|
|
PRINTD OXYGEN-GEAR
|
|
PRINTI "."
|
|
?CND232: PRINTR " Most of the time he complains about discipline, but whenever I ease up he's always the first to accuse me of laxity!"""
|
|
?ELS227: EQUAL? OBJ,ORE-NODULES \?ELS241
|
|
PRINTI """Oops, I forgot you hadn't heard about it, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ". I was about to report it when we were attacked. "
|
|
PRINTD SIEGEL
|
|
PRINTI " discovered it by accident. The ore is mostly manganese and iron, but there's gold and platinum, and there may be traces of rare earths, too. This could be the richest payoff yet from the "
|
|
PRINTD AQUADOME
|
|
PRINTR "!"""
|
|
?ELS241: EQUAL? OBJ,SPECIAL-TOOL \?ELS245
|
|
PRINTI """That belongs on the "
|
|
PRINTD HOOK
|
|
PRINTI "!"
|
|
IN? SPECIAL-TOOL,BLY-OFFICE \?CND248
|
|
PRINTI " Why is it in my office? It hasn't been there long! When I "
|
|
EQUAL? HERE,BLY-OFFICE \?ELS255
|
|
PRINTI "came back "
|
|
JUMP ?CND253
|
|
?ELS255: PRINTI "went back t"
|
|
?CND253: PRINTI "here to put something in a drawer, I knocked a pen off my desk. I had to stoop down to find it. Had that wrench been lying under my desk, I would have seen it!"
|
|
?CND248: PRINTR """"
|
|
?ELS245: EQUAL? OBJ,GLOBAL-HORVAK,HORVAK \?ELS267
|
|
FSET? SPECIAL-TOOL,TOUCHBIT /?ELS272
|
|
CALL DOC-IN-LOVE
|
|
RSTACK
|
|
?ELS272: SET 'ZOE-BLUSHING,TRUE-VALUE
|
|
CALL DISCRETION,BLY,HORVAK
|
|
PRINTI """I wonder if he sabotaged the "
|
|
PRINTD AIR-SUPPLY-SYSTEM
|
|
ZERO? HORVAK-FIXED-AIR \?CND277
|
|
PRINTI " and then ditched the wrench there"
|
|
?CND277: PRINTI "?"
|
|
ZERO? HORVAK-FIXED-AIR \?CND284
|
|
PRINTI " He had the opportunity: he could have tossed it there when he came to get my "
|
|
PRINTD OXYGEN-GEAR
|
|
PRINTI ". But"
|
|
?CND284: PRINTR " I just can't BELIEVE Doc would cut off our air supply!""
|
|
Zoe blushes and her voice trembles with emotion as she speaks."
|
|
?ELS267: EQUAL? OBJ,LOWELL,GLOBAL-LOWELL /?THN293
|
|
EQUAL? OBJ,GREENUP,GLOBAL-GREENUP \?ELS292
|
|
ZERO? GREENUP-GUILT \?ELS292
|
|
?THN293: PRINTI """"
|
|
CALL HE-SHE-IT,OBJ,TRUE-VALUE
|
|
PRINTR "'s an excellent diver."""
|
|
?ELS292: EQUAL? OBJ,GREENUP,GLOBAL-GREENUP \?ELS302
|
|
PRINTR """I never would have suspected him!"""
|
|
?ELS302: FSET? AIR-SUPPLY-SYSTEM,MUNGBIT /?ELS306
|
|
EQUAL? OBJ,AIR-SUPPLY-SYSTEM,AIR-SUPPLY-SYSTEM-GLOBAL,GLOBAL-SABOTAGE \?ELS306
|
|
IN? CREW,HERE \?CND309
|
|
PRINTI "Zoe shoots a troubled glance at her five crew members.
|
|
"
|
|
?CND309: PRINTI """Once we saw your "
|
|
PRINTD SEARCH-BEAM
|
|
PRINTI " beam, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", we were all watching for your arrival outside the dome. Any one of us could have tampered with the "
|
|
PRINTD AIR-SUPPLY-SYSTEM
|
|
PRINTI " without being noticed.""
|
|
"
|
|
CALL TIP-SAYS
|
|
PRINTI "One thing's for sure. Whoever did it also took that "
|
|
PRINTD SPECIAL-TOOL
|
|
PRINTI "!""
|
|
"
|
|
IN? ANTRIM,HERE \TRUE
|
|
SET 'ANTRIM-EXPLODED,TRUE-VALUE
|
|
PRINTD ANTRIM
|
|
PRINTI " explodes: ""That shows you what kind of a commander Bly is! Regulations state that EVERYONE has to wear "
|
|
PRINTD OXYGEN-GEAR
|
|
PRINTR " all the time. But neither of those two divers were wearing theirs! Bly wasn't even wearing HER OWN!"""
|
|
?ELS306: CALL COMMON-ASK-ABOUT,BLY,OBJ >X
|
|
ZERO? X /?ELS324
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS324: CALL DONT-KNOW,BLY,OBJ
|
|
RSTACK
|
|
?ELS117: CALL COMMON-OTHER,BLY
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT ASK-BLY-ABOUT-PRIVATE-MATTER
|
|
CALL QUEUE,I-BLY-PRIVATELY,0
|
|
EQUAL? HERE,BLY-OFFICE \?CND1
|
|
CALL ZOE-MENTIONS-EVIDENCE
|
|
RTRUE
|
|
?CND1: PRINTI """Come to my office"
|
|
PRINTI ", "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ".""
|
|
"
|
|
ZERO? DOME-AIR-BAD? \?ELS10
|
|
FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS10
|
|
MOVE ANTRIM,HERE
|
|
PRINTI "As you turn to leave with "
|
|
PRINTD BLY
|
|
PRINTI ", "
|
|
PRINTD ANTRIM
|
|
PRINTI " explodes angrily:
|
|
""What's so private, 'Captain Bly'? If you have a complaint, why not spill it now? Or are you afraid we might complain about YOU?!""
|
|
Before you can say anything, Zoe yells:
|
|
""That's enough, Antrim! Maybe I have some complaints about the way the crew performs. When I make any about you, or hand out disciplinary action, you'll be the first to -- to --""
|
|
"
|
|
CALL I-DOME-AIR,TRUE-VALUE
|
|
RSTACK
|
|
?ELS10: MOVE BLY,BLY-OFFICE
|
|
FSET BLY,NDESCBIT
|
|
SET 'WINNER,PLAYER
|
|
CALL GOTO,BLY-OFFICE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DOC-IN-LOVE
|
|
CALL DISCRETION,BLY,HORVAK
|
|
PRINTI """This is embarrassing. Doc's in love with me, or so he says.
|
|
When he said he loved me, I didn't handle it well. I lost my poise and told him this was a scientific research station, not a singles resort, and that I was his commanding officer -- so cut the romantic stuff and go back to work.
|
|
"
|
|
FSET? SPECIAL-TOOL,TOUCHBIT \?CND3
|
|
MOVE REASON,GLOBAL-OBJECTS
|
|
PRINTI "Maybe you'll say Doc was angry over that, and hurting the "
|
|
PRINTD AIR-SUPPLY-SYSTEM
|
|
PRINTI " was his way of getting revenge. But I don't think so. I've reason to think he still loves me.
|
|
"
|
|
?CND3: PRINTI "Anyhow, if "
|
|
FSET? SPECIAL-TOOL,TOUCHBIT \?CND10
|
|
PRINTI "you still suspect him, and "
|
|
?CND10: PRINTI "you want another slant on what makes him tick, you should talk to his "
|
|
PRINTD LAB-ASSISTANT
|
|
PRINTR "."""
|
|
|
|
|
|
.FUNCT ZOE-SENDS-MARV,PLACE
|
|
PRINTI """Wilco, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI "."
|
|
ZERO? SIEGEL-OUT-OF-SIGHT \?CND3
|
|
PRINTI " I'm afraid he may have seen me going there to put the "
|
|
PRINTD BLACK-BOX
|
|
PRINTI " on the "
|
|
PRINTD SONAR-EQUIPMENT
|
|
PRINTI "."
|
|
?CND3: MOVE SIEGEL,PLACE
|
|
EQUAL? PLACE,COMM-BLDG \?CND8
|
|
IN? BLACK-BOX,SONAR-EQUIPMENT \?CND8
|
|
FSET SIEGEL,BUSYBIT
|
|
CALL QUEUE,I-SIEGEL-REPORTS,4
|
|
PUT STACK,0,1
|
|
?CND8: PRINTI """"
|
|
CRLF
|
|
PRINTI "Zoe sends "
|
|
PRINTD SIEGEL
|
|
PRINTI " into the "
|
|
PRINTD PLACE
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT IS-CREW?,PER
|
|
EQUAL? PER,LOWELL,ANTRIM,HORVAK /TRUE
|
|
EQUAL? PER,SIEGEL,GREENUP /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT CREW-5-TOGETHER?,L
|
|
LOC LOWELL >L
|
|
LOC ANTRIM
|
|
EQUAL? L,STACK \?ELS5
|
|
LOC HORVAK
|
|
EQUAL? L,STACK \?ELS5
|
|
LOC SIEGEL
|
|
EQUAL? L,STACK \?ELS5
|
|
LOC GREENUP
|
|
EQUAL? L,STACK \?ELS5
|
|
MOVE CREW,L
|
|
RTRUE
|
|
?ELS5: REMOVE CREW
|
|
RFALSE
|
|
|
|
|
|
.FUNCT ANTRIM-F,ARG=0,OBJ,X,SUB0,SUB1
|
|
EQUAL? ARG,M-OBJDESC \?ELS5
|
|
IN? ANTRIM,AIRLOCK \?ELS8
|
|
CALL DESCRIBE-PERSON,ANTRIM,STR?88
|
|
RTRUE
|
|
?ELS8: CALL DESCRIBE-COLLAPSE,ANTRIM
|
|
RTRUE
|
|
?ELS5: EQUAL? WINNER,ANTRIM \?ELS12
|
|
CALL GRAB-ATTENTION,ANTRIM
|
|
ZERO? STACK /TRUE
|
|
EQUAL? PRSA,V?FIX /?THN22
|
|
EQUAL? PRSA,V?EXAMINE,V?ANALYZE,V?ADJUST \?ELS19
|
|
?THN22: EQUAL? PRSO,CONTROL-CIRCUITS-GAUGE,CONTROL-CIRCUITS,OVERHEATING /?THN24
|
|
EQUAL? PRSO,VOLTAGE-REGULATOR,LOCAL-SUB,GLOBAL-SUB \?ELS19
|
|
?THN24: ZERO? ANTRIM-CHECKED-SUB /?CND26
|
|
PRINTR """I already did that!"""
|
|
?CND26: MOVE BLY,HERE
|
|
SET 'ASKED-ANTRIM,TRUE-VALUE
|
|
CALL I-ANTRIM-TO-SUB,STR?89
|
|
PRINTI "But "
|
|
PRINTD BLY
|
|
PRINTI " has heard your order. ""Please remember, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ","" she says, ""while Mick is working on your "
|
|
PRINTD SUB
|
|
PRINTI ", it'll be out of action. The "
|
|
PRINTD SNARK
|
|
PRINTI " may return at any time, and we'll be defenseless! Are you sure you want to repair the "
|
|
PRINTD SUB
|
|
PRINTI " now?"""
|
|
CALL YES?
|
|
ZERO? STACK /TRUE
|
|
GET ON-SUB,0 >SUB0
|
|
GET ON-SUB,1 >SUB1
|
|
EQUAL? BAZOOKA,SUB0 \?THN40
|
|
EQUAL? DART,SUB1 /TRUE
|
|
?THN40: PRINTI """Then why not use the time to arm the "
|
|
PRINTD SUB
|
|
EQUAL? BAZOOKA,SUB0 /?THN47
|
|
EQUAL? DART,SUB1 \?CND44
|
|
?THN47: PRINTI " better"
|
|
?CND44: PRINTI "?"" Zoe goes on."
|
|
CRLF
|
|
EQUAL? BAZOOKA,SUB0 /?CND53
|
|
CALL TELL-HINT,73,CLAW,FALSE-VALUE
|
|
?CND53: EQUAL? DART,SUB1 /?CND56
|
|
CALL TELL-HINT,72,DART
|
|
?CND56: SET 'BLY-PRIVATELY-DELAY,TRUE-VALUE
|
|
PRINTI "
|
|
""If you want to consider your options"
|
|
PRINTI ", let's go to"
|
|
EQUAL? DART,SUB1 /?ELS65
|
|
PRINTI " the "
|
|
PRINTD DOME-LAB
|
|
JUMP ?CND63
|
|
?ELS65: EQUAL? BAZOOKA,SUB0 /?CND63
|
|
LOC BAZOOKA
|
|
CALL PRINTT,STACK
|
|
?CND63: PRINTI "."""
|
|
CRLF
|
|
RTRUE
|
|
?ELS19: CALL COM-CHECK,ANTRIM >X
|
|
ZERO? X /?ELS75
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS75: CALL PICK-ONE,WHY-ME
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 2
|
|
?ELS12: CALL ASK-ABOUT?,ANTRIM >OBJ
|
|
ZERO? OBJ /?ELS90
|
|
CALL GRAB-ATTENTION,ANTRIM
|
|
ZERO? STACK /TRUE
|
|
CALL SAID-TO,ANTRIM
|
|
EQUAL? OBJ,GLOBAL-BLY \?ELS98
|
|
PRINTR """What a slave driver! Sometimes I call her 'Captain Bly'!"""
|
|
?ELS98: CALL COMMON-ASK-ABOUT,ANTRIM,OBJ >X
|
|
ZERO? X /?ELS102
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS102: CALL DONT-KNOW,ANTRIM,OBJ
|
|
RSTACK
|
|
?ELS90: CALL COMMON-OTHER,ANTRIM
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT HORVAK-F,ARG=0,OBJ,X,L
|
|
LOC HORVAK >L
|
|
EQUAL? ARG,M-OBJDESC \?ELS5
|
|
CALL DESCRIBE-COLLAPSE,HORVAK
|
|
RSTACK
|
|
?ELS5: EQUAL? WINNER,HORVAK \?ELS7
|
|
CALL GRAB-ATTENTION,HORVAK
|
|
ZERO? STACK /TRUE
|
|
EQUAL? PRSA,V?FIX,V?EXAMINE,V?ANALYZE \?ELS14
|
|
EQUAL? PRSO,ESCAPE-POD-UNIT,SYRINGE \?ELS14
|
|
MOVE SYRINGE,HORVAK
|
|
FCLEAR SYRINGE,TAKEBIT
|
|
FSET HORVAK,BUSYBIT
|
|
CALL QUEUE,I-ANALYSIS,4
|
|
PUT STACK,0,1
|
|
IN? HORVAK,DOME-LAB /?CND17
|
|
MOVE HORVAK,DOME-LAB
|
|
PRINTI "He heads for the "
|
|
PRINTD DOME-LAB
|
|
PRINTI ". "
|
|
?CND17: PRINTI "It will take "
|
|
PRINTD HORVAK
|
|
PRINTI " 4 turns to analyze the chemical contents of"
|
|
CALL THE-PRSO-PRINT
|
|
PRINTR "."
|
|
?ELS14: EQUAL? PRSA,V?TAKE,V?FIX \?ELS25
|
|
EQUAL? PRSO,DART \?ELS25
|
|
FCLEAR PRSO,NDESCBIT
|
|
EQUAL? PRSA,V?TAKE \?ELS32
|
|
MOVE PRSO,HORVAK
|
|
PRINTR """Okay."""
|
|
?ELS32: CALL FIX-DART
|
|
RSTACK
|
|
?ELS25: EQUAL? PRSO,HORVAK-LOCKER \?ELS42
|
|
EQUAL? PRSA,V?OPEN /?THN39
|
|
?ELS42: EQUAL? PRSO,HORVAK-KEY \?ELS44
|
|
EQUAL? PRSA,V?GIVE /?THN39
|
|
?ELS44: EQUAL? PRSI,HORVAK-KEY \?ELS38
|
|
EQUAL? PRSA,V?SGIVE \?ELS38
|
|
?THN39: SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?SEARCH,HORVAK
|
|
RTRUE
|
|
?ELS38: EQUAL? PRSA,V?READ,V?EXAMINE,V?ANALYZE \?ELS48
|
|
EQUAL? PRSO,ARTICLE,MAGAZINE \?ELS48
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK-ABOUT,HORVAK,MAGAZINE
|
|
RTRUE
|
|
?ELS48: CALL COM-CHECK,HORVAK >X
|
|
ZERO? X /?ELS52
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS52: CALL PICK-ONE,WHY-ME
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 2
|
|
?ELS7: CALL ASK-ABOUT?,HORVAK >OBJ
|
|
ZERO? OBJ /?ELS67
|
|
CALL GRAB-ATTENTION,HORVAK
|
|
ZERO? STACK /TRUE
|
|
CALL SAID-TO,HORVAK
|
|
EQUAL? OBJ,SPECIAL-TOOL,SPECIAL-TOOL-GLOBAL \?ELS75
|
|
ZERO? HORVAK-FIXED-AIR /?ELS80
|
|
PRINTI """I found it in the "
|
|
PRINTD BLY-OFFICE
|
|
PRINTI ", "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", when I ran in there to get her "
|
|
PRINTD OXYGEN-GEAR
|
|
PRINTR ". I spotted it under her desk."""
|
|
?ELS80: CALL DONT-KNOW-ANYTHING
|
|
RSTACK
|
|
?ELS75: EQUAL? OBJ,BLY,GLOBAL-BLY \?ELS87
|
|
IN? REASON,GLOBAL-OBJECTS \?ELS92
|
|
PRINTR """It's true. I can't hide my love for her any longer."""
|
|
?ELS92: PRINTR """I have no complaints."""
|
|
?ELS87: EQUAL? OBJ,HORVAK-LOCKER,HORVAK-KEY \?ELS100
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?SEARCH,HORVAK
|
|
RTRUE
|
|
?ELS100: EQUAL? OBJ,PHOTO \?ELS102
|
|
PRINTR """I took it because I wanted a picture of her."""
|
|
?ELS102: EQUAL? OBJ,SYRINGE,ESCAPE-POD-UNIT \?ELS106
|
|
ZERO? GREENUP-GUILT /?ELS111
|
|
PRINTI """"
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", the "
|
|
PRINTD SYRINGE
|
|
PRINTI " contains a lot of arsenic, and some arsenic is missing from my "
|
|
PRINTD CHEMICAL-SUPPLY-SHELVES
|
|
PRINTI "! If you'd been jabbed with that "
|
|
PRINTD SYRINGE
|
|
PRINTR ", you'd be dead!"""
|
|
?ELS111: SET 'WINNER,HORVAK
|
|
CALL PERFORM,V?ANALYZE,SYRINGE
|
|
RTRUE
|
|
?ELS106: EQUAL? OBJ,MAGAZINE,ARTICLE \?ELS118
|
|
FSET? DART,MUNGBIT \?ELS118
|
|
PRINTI "Doc quickly reads the "
|
|
PRINTD ARTICLE
|
|
PRINTI ", then flashes you an excited glance.
|
|
"""
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", Thorpe's sea creatures evolved from AMINO-HYDROPHASE. If the Snark's his creation, then I know exactly what drug will tranquilize it! Shall I make some up?"""
|
|
CALL YES?
|
|
ZERO? STACK /TRUE
|
|
CALL FIX-DART
|
|
GET ON-SUB,0
|
|
EQUAL? BAZOOKA,STACK /TRUE
|
|
CALL META-LOC,BLY
|
|
EQUAL? STACK,HERE \TRUE
|
|
PRINTD BLY
|
|
PRINTI " still looks worried. """
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", you should have a really high-powered weapon, too. You may run up against an enemy sub, if Thorpe himself is operating around here. Can you think of any device to use as a weapon of last resort?"""
|
|
CALL YES?
|
|
ZERO? STACK /?CND133
|
|
PRINTI """Show me what device you have in mind, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?CND133: FSET? AIR-SUPPLY-SYSTEM,MUNGBIT /TRUE
|
|
CALL SAID-TO,TIP
|
|
CALL THIS-IS-IT,BAZOOKA
|
|
PRINTI "Once again, Tip has an idea."
|
|
CRLF
|
|
CALL TELL-HINT,71,BAZOOKA
|
|
PRINTI """Shall I have it mounted on the other "
|
|
PRINTD CLAW
|
|
PRINTI " of the "
|
|
PRINTD SUB
|
|
PRINTI "?"""
|
|
CALL YES?
|
|
ZERO? STACK /TRUE
|
|
CALL MOUNT-WEAPON,BAZOOKA
|
|
CALL FINE-SEQUENCE
|
|
RTRUE
|
|
?ELS118: CALL COMMON-ASK-ABOUT,HORVAK,OBJ >X
|
|
ZERO? X /?ELS149
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS149: CALL DONT-KNOW,HORVAK,OBJ
|
|
RSTACK
|
|
?ELS67: EQUAL? PRSA,V?GIVE \?ELS160
|
|
IN? PRSO,PLAYER \?ELS160
|
|
EQUAL? PRSI,HORVAK \?ELS160
|
|
EQUAL? PRSO,MAGAZINE \?ELS167
|
|
MOVE PRSO,HORVAK
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK-ABOUT,HORVAK,MAGAZINE
|
|
RTRUE
|
|
?ELS167: EQUAL? PRSO,SYRINGE \FALSE
|
|
MOVE PRSO,HORVAK
|
|
PRINTI """Want me to analyze this, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI "?"""
|
|
CALL YES?
|
|
ZERO? STACK /FALSE
|
|
SET 'WINNER,HORVAK
|
|
CALL PERFORM,V?ANALYZE,SYRINGE
|
|
RTRUE
|
|
?ELS160: EQUAL? PRSA,V?SEARCH \?ELS178
|
|
PRINTR """Certainly not! The contents of my locker are my private property!"""
|
|
?ELS178: CALL COMMON-OTHER,HORVAK
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT FIX-DART
|
|
FSET? DART,MUNGBIT /?ELS5
|
|
PRINTR """Hey, I already did that!"""
|
|
?ELS5: MOVE HORVAK,DOME-LAB
|
|
MOVE DART,HORVAK
|
|
CALL QUEUE,I-SYNTHESIS,5
|
|
PUT STACK,0,1
|
|
FSET HORVAK,BUSYBIT
|
|
PRINTR "This will take 5 turns."
|
|
|
|
|
|
.FUNCT SIEGEL-F,ARG=0,OBJ,X,L
|
|
LOC SIEGEL >L
|
|
EQUAL? ARG,M-OBJDESC \?ELS5
|
|
FSET? SIEGEL,BUSYBIT \?ELS10
|
|
CALL DESCRIBE-PERSON,SIEGEL,STR?90
|
|
RSTACK
|
|
?ELS10: CALL DESCRIBE-COLLAPSE,SIEGEL
|
|
RSTACK
|
|
?ELS5: EQUAL? WINNER,SIEGEL \?ELS14
|
|
CALL GRAB-ATTENTION,SIEGEL
|
|
ZERO? STACK /TRUE
|
|
EQUAL? PRSA,V?FIX /?THN24
|
|
EQUAL? PRSA,V?EXAMINE,V?ANALYZE,V?ADJUST \?ELS21
|
|
?THN24: EQUAL? PRSO,SONAR-EQUIPMENT,GLOBAL-SONAR \?ELS21
|
|
PRINTI """Right, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ". No doubt you're testing all systems. I'll "
|
|
EQUAL? HERE,COMM-BLDG /?CND31
|
|
PRINTI "report back and "
|
|
?CND31: PRINTI "let you know if the sonar's working okay."""
|
|
CRLF
|
|
MOVE SIEGEL,COMM-BLDG
|
|
FSET SIEGEL,BUSYBIT
|
|
CALL QUEUE,I-SIEGEL-REPORTS,4
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
?ELS21: CALL COM-CHECK,SIEGEL >X
|
|
ZERO? X /?ELS39
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS39: CALL PICK-ONE,WHY-ME
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 2
|
|
?ELS14: CALL ASK-ABOUT?,SIEGEL >OBJ
|
|
ZERO? OBJ /?ELS54
|
|
CALL GRAB-ATTENTION,SIEGEL
|
|
ZERO? STACK /TRUE
|
|
CALL SAID-TO,SIEGEL
|
|
EQUAL? OBJ,GLOBAL-SONAR,SONAR-EQUIPMENT,SONAR-MAN \?ELS62
|
|
PRINTI """I operate the "
|
|
PRINTD SONAR-EQUIPMENT
|
|
PRINTR "."""
|
|
?ELS62: EQUAL? OBJ,BLACK-BOX \?ELS66
|
|
FSET? SIEGEL,BUSYBIT \?ELS71
|
|
CALL I-SIEGEL-REPORTS
|
|
ZERO? STACK \TRUE
|
|
?ELS71: PRINTI """"
|
|
CALL SIEGEL-BOX
|
|
RTRUE
|
|
?ELS66: CALL COMMON-ASK-ABOUT,SIEGEL,OBJ >X
|
|
ZERO? X /?ELS79
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS79: CALL DONT-KNOW,SIEGEL,OBJ
|
|
RSTACK
|
|
?ELS54: CALL COMMON-OTHER,SIEGEL
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT GREENUP-F,ARG=0,OBJ,X,L
|
|
LOC GREENUP >L
|
|
EQUAL? ARG,M-OBJDESC \?ELS5
|
|
ZERO? GREENUP-CUFFED /?ELS10
|
|
PRINTR "Greenup is handcuffed to a pipe."
|
|
?ELS10: CALL DESCRIBE-COLLAPSE,GREENUP
|
|
RSTACK
|
|
?ELS5: EQUAL? WINNER,GREENUP \?ELS17
|
|
CALL GRAB-ATTENTION,GREENUP
|
|
ZERO? STACK /TRUE
|
|
CALL MOUNTING-VERB?,ESCAPE-POD-UNIT
|
|
ZERO? STACK /?ELS24
|
|
FSET? ESCAPE-POD-UNIT,TAKEBIT \?ELS24
|
|
CALL INSTALL-ESCAPE-POD-UNIT,GREENUP
|
|
RSTACK
|
|
?ELS24: CALL COM-CHECK,GREENUP >X
|
|
ZERO? X /?ELS28
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS28: CALL PICK-ONE,WHY-ME
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 2
|
|
?ELS17: CALL ASK-ABOUT?,GREENUP >OBJ
|
|
ZERO? OBJ /?ELS43
|
|
CALL GRAB-ATTENTION,GREENUP
|
|
ZERO? STACK /TRUE
|
|
CALL SAID-TO,GREENUP
|
|
EQUAL? OBJ,SYRINGE,ESCAPE-POD-UNIT \?ELS51
|
|
IN? ESCAPE-POD-UNIT,SUB \?ELS51
|
|
ZERO? GREENUP-GUILT /?ELS58
|
|
FSET? GREENUP,MUNGBIT /?ELS58
|
|
CALL PERFORM,V?ARREST,GREENUP
|
|
RTRUE
|
|
?ELS58: CALL DONT-KNOW-ANYTHING
|
|
RTRUE
|
|
?ELS51: ZERO? GREENUP-TRAPPED \?THN67
|
|
ZERO? GREENUP-CUFFED /?ELS64
|
|
?THN67: PRINTR "His only response is a sneer and silence."
|
|
?ELS64: CALL COMMON-ASK-ABOUT,GREENUP,OBJ >X
|
|
ZERO? X /?ELS72
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS72: CALL DONT-KNOW,GREENUP,OBJ
|
|
RSTACK
|
|
?ELS43: EQUAL? PRSA,V?ASK \?ELS83
|
|
ZERO? GREENUP-TRAPPED /FALSE
|
|
CALL PERFORM,V?ASK-ABOUT,GREENUP,MOTIVE
|
|
RTRUE
|
|
?ELS83: CALL COMMON-OTHER,GREENUP
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT LOWELL-F,ARG=0,OBJ,X,L
|
|
LOC LOWELL >L
|
|
EQUAL? ARG,M-OBJDESC \?ELS5
|
|
CALL DESCRIBE-COLLAPSE,LOWELL
|
|
RSTACK
|
|
?ELS5: EQUAL? WINNER,LOWELL \?ELS7
|
|
CALL GRAB-ATTENTION,LOWELL
|
|
ZERO? STACK /TRUE
|
|
EQUAL? PRSA,V?FIND \?ELS14
|
|
EQUAL? PRSO,DIARY \FALSE
|
|
CALL PERFORM,V?ASK-ABOUT,LOWELL,DIARY
|
|
RTRUE
|
|
?ELS14: CALL MOUNTING-VERB?,ESCAPE-POD-UNIT
|
|
ZERO? STACK /?ELS21
|
|
FSET? ESCAPE-POD-UNIT,TAKEBIT \?ELS21
|
|
CALL INSTALL-ESCAPE-POD-UNIT,LOWELL
|
|
RSTACK
|
|
?ELS21: CALL COM-CHECK,LOWELL >X
|
|
ZERO? X /?ELS25
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS25: CALL PICK-ONE,WHY-ME
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 2
|
|
?ELS7: CALL ASK-ABOUT?,LOWELL >OBJ
|
|
ZERO? OBJ /?ELS40
|
|
CALL GRAB-ATTENTION,LOWELL
|
|
ZERO? STACK /TRUE
|
|
CALL SAID-TO,LOWELL
|
|
EQUAL? OBJ,HORVAK,GLOBAL-HORVAK \?ELS48
|
|
CALL DISCRETION,LOWELL,HORVAK
|
|
PRINTI """He's dedicated to scientific research. He's a great marine biologist and enjoys his work here at the "
|
|
PRINTD AQUADOME
|
|
PRINTI ", or he HAS enjoyed it until recently.
|
|
I don't know why, but "
|
|
PRINTD HORVAK
|
|
PRINTR " has become moody and introverted. I've seen him writing in a private diary."""
|
|
?ELS48: EQUAL? OBJ,DIARY \?ELS52
|
|
FSET? DIARY,TOUCHBIT /?ELS52
|
|
CALL DISCRETION,LOWELL,HORVAK
|
|
PRINTI """It's not in the lab. "
|
|
PRINTD HORVAK
|
|
PRINTR "'s always secretive about his diary. He would never leave it around where anyone might find it. It's probably in his locker, in the crew's dormitory."""
|
|
?ELS52: EQUAL? OBJ,LAB-ASSISTANT \?ELS58
|
|
PRINTI """I'm "
|
|
PRINTD HORVAK
|
|
PRINTI "'s "
|
|
PRINTD LAB-ASSISTANT
|
|
PRINTR "."""
|
|
?ELS58: CALL COMMON-ASK-ABOUT,LOWELL,OBJ >X
|
|
ZERO? X /?ELS62
|
|
EQUAL? X,M-FATAL \TRUE
|
|
RFALSE
|
|
?ELS62: CALL DONT-KNOW,LOWELL,OBJ
|
|
RSTACK
|
|
?ELS40: CALL COMMON-OTHER,LOWELL
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT GLOBAL-THORPE-F
|
|
EQUAL? PRSA,V?AIM \?ELS9
|
|
EQUAL? PRSO,BAZOOKA,DART /FALSE
|
|
?ELS9: EQUAL? PRSA,V?ATTACK,V?KILL,V?SHOOT \?ELS5
|
|
EQUAL? PRSI,BAZOOKA,DART /FALSE
|
|
?ELS5: EQUAL? PRSA,V?TELL-ABOUT \?ELS13
|
|
EQUAL? PRSO,PLAYER \?ELS13
|
|
IN? MAGAZINE,PLAYER \?ELS20
|
|
PRINTI "He is a noted marine biologist.
|
|
The "
|
|
PRINTD ARTICLE
|
|
PRINTI " mentions that he may have created synthetic forms of sea life by genetic engineering.
|
|
He can't be located to discuss this. He apparently has gone into hiding to evade the resulting publicity.
|
|
He has told close friends he will soon marry an American woman named "
|
|
PRINTD SHARON
|
|
PRINTR "."
|
|
?ELS20: FSET? MAGAZINE,TOUCHBIT \FALSE
|
|
PRINTI "Try looking in the "
|
|
PRINTD MAGAZINE
|
|
PRINTR "."
|
|
?ELS13: CALL GLOBAL-PERSON
|
|
RSTACK
|
|
|
|
|
|
.FUNCT BRING-ME,WHAT,WHO,L
|
|
IN? WHAT,GLOBAL-OBJECTS \?CND1
|
|
FSET? WHAT,PERSON \?CND1
|
|
GETP WHAT,P?CHARACTER
|
|
GET CHARACTER-TABLE,STACK >WHAT
|
|
?CND1: CALL META-LOC,WHAT >L
|
|
IN? L,ROOMS \?ELS10
|
|
CALL FAR-AWAY?,L
|
|
ZERO? STACK \?ELS10
|
|
FSET? WHAT,PERSON \?ELS16
|
|
FSET? WHAT,MUNGBIT /?ELS16
|
|
FSET? WHAT,BUSYBIT \?THN13
|
|
?ELS16: FSET? WHAT,TAKEBIT \?ELS10
|
|
EQUAL? HERE,CRAWL-SPACE,SUB /?ELS10
|
|
?THN13: EQUAL? L,HERE \?CND19
|
|
FSET? WHAT,PERSON \?CND19
|
|
CALL ALREADY,WHAT,STR?50
|
|
RTRUE
|
|
?CND19: MOVE WHO,HERE
|
|
MOVE WHAT,WHO
|
|
FCLEAR WHAT,NDESCBIT
|
|
FCLEAR WHAT,INVISIBLE
|
|
FSET WHAT,TOUCHBIT
|
|
EQUAL? L,HERE \?ELS26
|
|
PRINTI """Okay."""
|
|
JUMP ?CND24
|
|
?ELS26: PRINTI """Here is"
|
|
CALL PRINTT,WHAT
|
|
PRINTI ", "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI "."" "
|
|
?CND24: FSET? WHAT,PERSON \?CND33
|
|
MOVE WHAT,HERE
|
|
CALL HE-SHE-IT,WHAT,TRUE-VALUE
|
|
PRINTI "'s wondering why you want to see "
|
|
CALL HIM-HER-IT,WHAT
|
|
PRINTI "."
|
|
?CND33: CRLF
|
|
RTRUE
|
|
?ELS10: ZERO? ZOE-MENTIONED-EVIDENCE /?ELS41
|
|
EQUAL? WHAT,EVIDENCE /FALSE
|
|
?ELS41: PRINTI """Sorry, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR ", but I don't think I can."""
|
|
|
|
|
|
.FUNCT CARRY-CHECK,PER
|
|
CALL PRINT-CONT,PER,TRUE-VALUE,0
|
|
RSTACK
|
|
|
|
|
|
.FUNCT COM-CHECK,PER
|
|
CALL GRAB-ATTENTION,PER
|
|
ZERO? STACK /TRUE
|
|
EQUAL? PRSA,V?ARM \?ELS7
|
|
EQUAL? PRSO,GLOBAL-SUB,LOCAL-SUB \FALSE
|
|
PRINTI """Good idea, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "! How do you want to do that?"""
|
|
?ELS7: EQUAL? PRSA,V?WALK-TO \?ELS16
|
|
EQUAL? PRSO,GLOBAL-HERE \FALSE
|
|
PRINTI """I am here, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "!"""
|
|
?ELS16: EQUAL? PRSO,BAZOOKA,DART \?ELS25
|
|
CALL MOUNTING-VERB?,PRSO
|
|
ZERO? STACK /?ELS25
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,PRSA,PRSO,PRSI
|
|
RTRUE
|
|
?ELS25: EQUAL? PRSA,V?FIND \?ELS29
|
|
EQUAL? PRSO,GLOBAL-SNARK \?ELS34
|
|
ZERO? MONSTER-GONE /?ELS34
|
|
CALL IS-CREW?,PER
|
|
ZERO? STACK \?THN37
|
|
EQUAL? PER,BLY,GLOBAL-BLY \?ELS34
|
|
?THN37: SET 'TOLD-SNARK-WENT,TRUE-VALUE
|
|
CALL TELL-HINT,62,SNARK,FALSE-VALUE
|
|
RSTACK
|
|
?ELS34: RETURN 2
|
|
?ELS29: EQUAL? PRSA,V?FIX \?ELS44
|
|
EQUAL? PRSO,ARM,GASH \FALSE
|
|
FSET? ARM,MUNGBIT \FALSE
|
|
EQUAL? WINNER,HORVAK \?ELS56
|
|
FCLEAR ARM,MUNGBIT
|
|
FSET GASH,INVISIBLE
|
|
PRINTD HORVAK
|
|
PRINTR " quickly bandages your gash. Your arm is as good as new."
|
|
?ELS56: PRINTR """I think Doc can do that better himself."""
|
|
?ELS44: EQUAL? PRSA,V?THANKS \?ELS64
|
|
RETURN 2
|
|
?ELS64: EQUAL? PRSA,V?TAKE /?THN69
|
|
EQUAL? PRSA,V?SEND-TO,V?SEND,V?BRING \?ELS68
|
|
?THN69: IN? PRSO,PLAYER \?ELS75
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?GIVE,PRSO,PER
|
|
RTRUE
|
|
?ELS75: FSET? PRSO,TRYTAKEBIT /FALSE
|
|
CALL BRING-ME,PRSO,PER
|
|
RSTACK
|
|
?ELS68: EQUAL? PRSA,V?EXAMINE \?ELS83
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?SHOW,PER,PRSO
|
|
RTRUE
|
|
?ELS83: EQUAL? PRSA,V?FOLLOW \?ELS85
|
|
EQUAL? PRSO,PLAYER \FALSE
|
|
PRINTR """If you want me to go somewhere, just say so."""
|
|
?ELS85: EQUAL? PRSA,V?GIVE \?ELS94
|
|
EQUAL? PRSI,PLAYER \?ELS94
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?TAKE,PRSO,PER
|
|
RTRUE
|
|
?ELS94: EQUAL? PRSA,V?SGIVE \?ELS98
|
|
EQUAL? PRSO,PLAYER \?ELS98
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?TAKE,PRSI,PER
|
|
RTRUE
|
|
?ELS98: EQUAL? PRSA,V?THROUGH /?THN103
|
|
EQUAL? PRSA,V?LEAVE,V?WALK-TO,V?WALK /?THN103
|
|
EQUAL? PRSA,V?SGIVE,V?GIVE,V?DROP \?ELS102
|
|
?THN103: EQUAL? PER,REMOTE-PERSON /FALSE
|
|
RETURN 2
|
|
?ELS102: EQUAL? PRSA,V?GOODBYE,V?HELLO \?ELS113
|
|
ZERO? PRSO /?THN119
|
|
EQUAL? PRSO,PER \FALSE
|
|
?THN119: SET 'WINNER,PLAYER
|
|
CALL PERFORM,PRSA,PER
|
|
RTRUE
|
|
?ELS113: EQUAL? PRSA,V?HELP \?ELS122
|
|
EQUAL? PRSO,FALSE-VALUE,PLAYER \?ELS127
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK,PER
|
|
RTRUE
|
|
?ELS127: RETURN 2
|
|
?ELS122: EQUAL? PRSA,V?INVENTORY \?ELS133
|
|
CALL CARRY-CHECK,PER
|
|
ZERO? STACK \TRUE
|
|
PRINTD PER
|
|
PRINTR " isn't holding anything."
|
|
?ELS133: EQUAL? PRSA,V?LISTEN \?ELS140
|
|
EQUAL? PRSO,PLAYER-NAME /?THN146
|
|
IN? PRSO,GLOBAL-OBJECTS /FALSE
|
|
?THN146: PRINTI """I'm trying to, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "!"""
|
|
?ELS140: EQUAL? PRSA,V?SHOW \?ELS151
|
|
EQUAL? PRSO,PLAYER \FALSE
|
|
IN? PRSI,PER \?ELS161
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?TAKE,PRSI,PER
|
|
RTRUE
|
|
?ELS161: PRINTI """I'm sure you can find "
|
|
CALL HIM-HER-IT,PRSI
|
|
PRINTI ", "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS151: EQUAL? PRSA,V?TELL \?ELS169
|
|
EQUAL? PRSO,PLAYER \FALSE
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK,PER
|
|
RTRUE
|
|
?ELS169: EQUAL? PRSA,V?TELL-ABOUT \?ELS176
|
|
EQUAL? PRSO,PLAYER \FALSE
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK-ABOUT,PER,PRSI
|
|
RTRUE
|
|
?ELS176: EQUAL? PRSA,V?WAIT-FOR \?ELS183
|
|
EQUAL? PRSO,PLAYER \?ELS183
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?$CALL,PER
|
|
RTRUE
|
|
?ELS183: EQUAL? PRSA,V?TALK-ABOUT,V?WHAT \?ELS189
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK-ABOUT,PER,PRSO
|
|
RTRUE
|
|
?ELS189: EQUAL? PRSA,V?NO,V?YES \FALSE
|
|
PRINTC 34
|
|
EQUAL? PRSA,V?YES \?ELS194
|
|
PRINTI "Glad"
|
|
JUMP ?CND192
|
|
?ELS194: PRINTI "Sorry"
|
|
?CND192: PRINTI " to hear it, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
|
|
|
|
.FUNCT COMMON-ASK-ABOUT,PER,OBJ
|
|
EQUAL? OBJ,DEPTH,CREW,CREW-GLOBAL \?ELS5
|
|
RETURN 2
|
|
?ELS5: EQUAL? OBJ,DEPTHFINDER \?ELS9
|
|
RETURN 2
|
|
?ELS9: EQUAL? OBJ,GLOBAL-WEAPON,MORE \?ELS13
|
|
PRINTI """Ask me about something specific, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS13: EQUAL? OBJ,BAY,GLOBAL-SONAR,SONAR-EQUIPMENT /?THN18
|
|
EQUAL? OBJ,GLOBAL-SUB,LOCAL-SUB,CLAW \?ELS17
|
|
?THN18: PRINTI """You know more about it than I do, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS17: EQUAL? OBJ,PER \?ELS23
|
|
PRINTR """I have no secrets. Anyone can see what I am."""
|
|
?ELS23: EQUAL? OBJ,PLAYER \?ELS27
|
|
PRINTI """You're "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI " "
|
|
CALL PRINT-NAME,LAST-NAME
|
|
PRINTR ", the famous young inventor."""
|
|
?ELS27: EQUAL? OBJ,AIRLOCK-ELECTRICITY \?ELS31
|
|
PRINTI """It powers the "
|
|
PRINTD AIRLOCK-HATCH
|
|
PRINTR "."""
|
|
?ELS31: EQUAL? OBJ,VIDEOPHONE \?ELS35
|
|
CALL GLOBAL-IN?,VIDEOPHONE,HERE
|
|
ZERO? STACK /FALSE
|
|
SET 'P-WON,FALSE-VALUE
|
|
GETP OBJ,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS35: FSET? OBJ,PERSON /FALSE
|
|
GETP OBJ,P?TEXT
|
|
EQUAL? STACK,STR?26 \?ELS46
|
|
SET 'P-WON,FALSE-VALUE
|
|
GETP OBJ,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS46: EQUAL? OBJ,DIARY \?ELS50
|
|
FSET? DIARY,TOUCHBIT \FALSE
|
|
PRINTR """I think that it's pretty obvious."""
|
|
?ELS50: EQUAL? OBJ,EVIDENCE,BLACK-BOX \?ELS59
|
|
CALL SHOULD-ASK,BLY,PER
|
|
RSTACK
|
|
?ELS59: EQUAL? OBJ,FINE-GRID \?ELS61
|
|
CALL SHOULD-ASK,TIP,PER
|
|
RSTACK
|
|
?ELS61: EQUAL? OBJ,MAGAZINE,ARTICLE \?ELS63
|
|
PRINTI """It's a "
|
|
PRINTD MAGAZINE
|
|
PRINTR " called 'SCIENCE WORLD.'"""
|
|
?ELS63: EQUAL? OBJ,CONTROL-CIRCUITS-GAUGE \?ELS67
|
|
PRINTI "The "
|
|
PRINTD CONTROL-CIRCUITS-GAUGE
|
|
PRINTR " is a thermometer for an important part of the engine."
|
|
?ELS67: EQUAL? OBJ,OXYGEN-GEAR \?ELS71
|
|
PRINTI """Your Dad made the rule about it, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ". Everyone in the "
|
|
PRINTD AQUADOME
|
|
PRINTI " should carry one at all times, remember?
|
|
They're little canisters of oxygen that you can wear around your neck. When you turn the valve, you can suck air through the rubber straw at the top."
|
|
IN? OXYGEN-GEAR,SUB \?CND74
|
|
PRINTI "
|
|
The canister is in the "
|
|
PRINTD SUB
|
|
PRINTI ", just like in all "
|
|
CALL PRINT-NAME,LAST-NAME
|
|
PRINTI " submarines."
|
|
?CND74: PRINTR """"
|
|
?ELS71: IN? OBJ,PER \?ELS82
|
|
PRINTI """I have it right here, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS82: EQUAL? OBJ,BLACK-CIRCUITRY,GLOBAL-SABOTAGE /?THN87
|
|
EQUAL? OBJ,AIR-SUPPLY-SYSTEM,AIR-SUPPLY-SYSTEM-GLOBAL \?ELS86
|
|
?THN87: PRINTR """You know as much as I do."""
|
|
?ELS86: EQUAL? OBJ,PRIVATE-MATTER \?ELS92
|
|
EQUAL? PER,REMOTE-PERSON \?ELS97
|
|
PRINTI """Wait until you see me, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS97: MOVE PRIVATE-MATTER,GLOBAL-OBJECTS
|
|
PRINTD PER
|
|
PRINTI " says, ""I'm sorry, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTI ", but that's a "
|
|
PRINTD PRIVATE-MATTER
|
|
PRINTR "."""
|
|
?ELS92: EQUAL? OBJ,PROBLEM /?THN106
|
|
ZERO? DEPTH-WARNING /?ELS109
|
|
EQUAL? OBJ,DEPTHFINDER-LIGHT,ALARM-SUB /?THN106
|
|
?ELS109: ZERO? SONAR-WARNING \?THN112
|
|
ZERO? SHIP-WARNING /?ELS105
|
|
?THN112: EQUAL? OBJ,SONARSCOPE-LIGHT,ALARM-SUB \?ELS105
|
|
?THN106: ZERO? DEPTH-WARNING \?THN119
|
|
ZERO? SONAR-WARNING \?THN119
|
|
ZERO? SHIP-WARNING /?ELS118
|
|
?THN119: PRINTI """I think you're going too close to "
|
|
ZERO? DEPTH-WARNING /?ELS127
|
|
PUSH STR?93
|
|
JUMP ?CND123
|
|
?ELS127: PUSH STR?94
|
|
?CND123: PRINT STACK
|
|
PRINTI ", "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS118: ZERO? DOME-AIR-BAD? /?ELS132
|
|
FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS132
|
|
CALL BADGES-RED
|
|
RTRUE
|
|
?ELS132: PRINTD PER
|
|
PRINTI " says, ""I don't know, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS105: EQUAL? OBJ,BADGE-GLOBAL,BADGE-GLOBAL-2,BADGE-GLOBAL-3 \?ELS140
|
|
PRINTC 34
|
|
CALL EXAMINE-BADGE
|
|
PRINTR """"
|
|
?ELS140: EQUAL? OBJ,GLOBAL-SONAR,SONAR-MAN \?ELS144
|
|
PRINTI """"
|
|
PRINTD SIEGEL
|
|
PRINTI " operates the "
|
|
PRINTD SONAR-EQUIPMENT
|
|
PRINTR "."""
|
|
?ELS144: EQUAL? OBJ,LAB-ASSISTANT \?ELS148
|
|
PRINTI """"
|
|
PRINTD LOWELL
|
|
PRINTI " is "
|
|
PRINTD HORVAK
|
|
PRINTI "'s "
|
|
PRINTD LAB-ASSISTANT
|
|
PRINTR "."""
|
|
?ELS148: EQUAL? OBJ,ALARM \?ELS152
|
|
ZERO? ALARM-RINGING /FALSE
|
|
CALL WHY-NOT-VP
|
|
RSTACK
|
|
?ELS152: EQUAL? OBJ,SYRINGE,ESCAPE-POD-UNIT,GLOBAL-GREENUP \?ELS160
|
|
ZERO? GREENUP-GUILT /?ELS165
|
|
PRINTI """I never suspected "
|
|
PRINTD GREENUP
|
|
PRINTI " of being a "
|
|
PRINTD TRAITOR
|
|
PRINTI "."""
|
|
CRLF
|
|
IN? GREENUP,HERE \TRUE
|
|
FSET? GREENUP,MUNGBIT /TRUE
|
|
CALL PERFORM,V?ARREST,GREENUP
|
|
RTRUE
|
|
?ELS165: EQUAL? OBJ,SYRINGE,ESCAPE-POD-UNIT \FALSE
|
|
PRINTI """Maybe "
|
|
PRINTD HORVAK
|
|
PRINTR " can analyze it."""
|
|
?ELS160: FSET? ARM,MUNGBIT \?ELS179
|
|
EQUAL? OBJ,ARM,GASH \?ELS179
|
|
PRINTI """That looks pretty serious, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
?ELS179: CALL IS-CREW?,PER
|
|
ZERO? STACK \?THN186
|
|
EQUAL? PER,BLY \FALSE
|
|
?THN186: EQUAL? OBJ,ELECTROLYTE-RELAY \?ELS192
|
|
ZERO? SUB-IN-DOME /?ELS192
|
|
PRINTI """It belongs in the "
|
|
PRINTD EMPTY-SPACE
|
|
PRINTR "."""
|
|
?ELS192: EQUAL? OBJ,SPECIAL-TOOL-GLOBAL,SPECIAL-TOOL \?ELS198
|
|
ZERO? SUB-IN-DOME /?ELS198
|
|
FSET? SPECIAL-TOOL,INVISIBLE /?THN204
|
|
FSET? ELECTROLYTE-RELAY,MUNGBIT \?CND201
|
|
?THN204: PRINTI """The "
|
|
PRINTD SPECIAL-TOOL
|
|
PRINTR " should be on that hook."""
|
|
?CND201: PRINTI """I'm sure glad "
|
|
ZERO? HORVAK-FIXED-AIR /?ELS212
|
|
EQUAL? PRSO,HORVAK \?ELS216
|
|
PRINTI "I"
|
|
JUMP ?CND210
|
|
?ELS216: PRINTI "Doc"
|
|
JUMP ?CND210
|
|
?ELS212: PRINTI "you"
|
|
?CND210: PRINTI " fixed the "
|
|
PRINTD AIR-SUPPLY-SYSTEM
|
|
PRINTI ", "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "!"""
|
|
?ELS198: EQUAL? OBJ,GLOBAL-SNARK \FALSE
|
|
ZERO? MONSTER-GONE /FALSE
|
|
SET 'TOLD-SNARK-WENT,TRUE-VALUE
|
|
CALL TELL-HINT,62,SNARK,FALSE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SHOULD-ASK,WHO,PER=0
|
|
ZERO? PER /?CND1
|
|
PRINTD PER
|
|
PRINTI " says, "
|
|
?CND1: PRINTI """I think you should ask "
|
|
PRINTD WHO
|
|
PRINTR " about that."""
|
|
|
|
|
|
.FUNCT COMMON-OTHER,PER,LPER=0
|
|
IN? PER,GLOBAL-OBJECTS \?ELS3
|
|
GETP PER,P?CHARACTER
|
|
GET CHARACTER-TABLE,STACK >LPER
|
|
JUMP ?CND1
|
|
?ELS3: SET 'LPER,PER
|
|
?CND1: EQUAL? PRSA,V?ASK /FALSE
|
|
EQUAL? PRSA,V?EXAMINE \?ELS12
|
|
CALL CARRY-CHECK,LPER
|
|
ZERO? STACK \TRUE
|
|
GETP LOCAL-SUB,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS12: EQUAL? PRSI,LPER \?ELS19
|
|
IN? PRSO,PLAYER \?ELS19
|
|
EQUAL? PRSO,BADGE-PLAYER /?ELS19
|
|
EQUAL? PRSA,V?GIVE \?ELS19
|
|
MOVE PRSO,LPER
|
|
PRINTI """Hey, thanks, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "!"""
|
|
?ELS19: EQUAL? PRSO,PER \?ELS25
|
|
EQUAL? PRSA,V?HELP \?ELS25
|
|
ZERO? DOME-AIR-BAD? /?ELS32
|
|
FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS32
|
|
PRINTI "It would help more to fix the "
|
|
PRINTD AIR-SUPPLY-SYSTEM
|
|
PRINTR "."
|
|
?ELS32: IN? PER,GLOBAL-OBJECTS /FALSE
|
|
PRINTD PER
|
|
PRINTR " looks offended. ""I'm quite capable by myself, you know."""
|
|
?ELS25: EQUAL? PRSO,PER \?ELS42
|
|
EQUAL? PRSA,V?RUB \?ELS42
|
|
PRINTD PER
|
|
PRINTR " looks bewildered. ""What are you trying to do?"""
|
|
?ELS42: EQUAL? PRSO,PER \FALSE
|
|
EQUAL? PRSA,V?SHOW \FALSE
|
|
CALL PERFORM,V?ASK-ABOUT,PRSO,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DESCRIBE-COLLAPSE,PER
|
|
FSET? BLY,MUNGBIT \?ELS5
|
|
EQUAL? PER,TIP \?ELS10
|
|
FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS15
|
|
CALL DESCRIBE-PERSON,PER,STR?95
|
|
RSTACK
|
|
?ELS15: CALL DESCRIBE-PERSON,PER
|
|
RSTACK
|
|
?ELS10: EQUAL? PER,BLY,LOWELL,GREENUP \?ELS19
|
|
FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS24
|
|
CALL DESCRIBE-PERSON,PER,STR?96
|
|
RSTACK
|
|
?ELS24: CALL DESCRIBE-PERSON,PER,STR?97
|
|
RSTACK
|
|
?ELS19: FSET? AIR-SUPPLY-SYSTEM,MUNGBIT \?ELS33
|
|
ZERO? BADGES-RED-SAID? /?ELS38
|
|
CALL DESCRIBE-PERSON,PER,STR?98
|
|
RSTACK
|
|
?ELS38: CALL DESCRIBE-PERSON,PER,STR?95
|
|
RSTACK
|
|
?ELS33: CALL DESCRIBE-PERSON,PER
|
|
RSTACK
|
|
?ELS5: CALL DESCRIBE-PERSON,PER
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DESCRIBE-PERSON,PER,STR=0
|
|
CALL IS-CREW?,PER
|
|
ZERO? STACK /?ELS5
|
|
CALL CREW-5-TOGETHER?
|
|
ZERO? STACK /?ELS5
|
|
FSET? BLY,MUNGBIT /?ELS5
|
|
EQUAL? PER,LOWELL \FALSE
|
|
PRINTI "The five "
|
|
PRINTD CREW
|
|
PRINTR " members are here."
|
|
?ELS5: PRINTD PER
|
|
PRINTI " is "
|
|
ZERO? STR \?ELS23
|
|
PUSH STR?50
|
|
JUMP ?CND19
|
|
?ELS23: PUSH STR
|
|
?CND19: PRINT STACK
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT DISCRETION,P1,P2,P3=0
|
|
CALL META-LOC,P2
|
|
EQUAL? HERE,STACK \?ELS5
|
|
ZERO? P3 /?ELS5
|
|
CALL META-LOC,P3
|
|
EQUAL? HERE,STACK \?ELS5
|
|
PRINTD P1
|
|
PRINTI " looks briefly toward "
|
|
PRINTD P2
|
|
PRINTI " and "
|
|
PRINTD P3
|
|
PRINTR " and then speaks in a whisper."
|
|
?ELS5: CALL META-LOC,P2
|
|
EQUAL? HERE,STACK \?ELS11
|
|
PRINTD P1
|
|
PRINTI " looks briefly toward "
|
|
PRINTD P2
|
|
PRINTR " and then speaks in a whisper."
|
|
?ELS11: ZERO? P3 /FALSE
|
|
CALL META-LOC,P3
|
|
EQUAL? HERE,STACK \FALSE
|
|
PRINTD P1
|
|
PRINTI " looks briefly toward "
|
|
PRINTD P3
|
|
PRINTR " and then speaks in a whisper."
|
|
|
|
|
|
.FUNCT DONT-KNOW,CHAR,OBJ
|
|
PRINTD CHAR
|
|
PRINTI " says, ""I don't think that's important right now, "
|
|
CALL PRINT-NAME,FIRST-NAME
|
|
PRINTR "."""
|
|
|
|
|
|
.FUNCT GLOBAL-PERSON,L
|
|
EQUAL? PRSA,V?WHAT,V?WALK-TO /FALSE
|
|
EQUAL? PRSA,V?WAIT-FOR,V?PHONE,V?LOOK-UP /FALSE
|
|
EQUAL? PRSA,V?FOLLOW,V?FIND,V?ARREST /FALSE
|
|
EQUAL? PRSA,V?EXAMINE \?ELS9
|
|
FSET? PRSO,PERSON \?ELS9
|
|
GETP PRSO,P?CHARACTER
|
|
GET CHARACTER-TABLE,STACK >L
|
|
ZERO? L /?ELS9
|
|
CALL CORRIDOR-LOOK,L
|
|
ZERO? STACK \FALSE
|
|
CALL NOT-HERE,PRSO
|
|
RSTACK
|
|
?ELS9: EQUAL? PRSA,V?TELL-ABOUT,V?TELL,V?REPLY /?THN21
|
|
EQUAL? PRSA,V?HELLO,V?ASK-FOR,V?ASK-ABOUT \?ELS18
|
|
?THN21: ZERO? PRSO /?ELS18
|
|
FSET? PRSO,PERSON \?ELS18
|
|
IN? PRSO,GLOBAL-OBJECTS /?ELS18
|
|
EQUAL? PRSA,V?REPLY \FALSE
|
|
SET 'PRSA,V?TELL
|
|
RFALSE
|
|
?ELS18: EQUAL? PRSA,V?TELL-ABOUT,V?ASK-ABOUT \?ELS27
|
|
ZERO? PRSI /?ELS27
|
|
FSET? PRSI,PERSON \?ELS27
|
|
IN? PRSI,GLOBAL-OBJECTS \?ELS27
|
|
GETP PRSI,P?CHARACTER
|
|
GET CHARACTER-TABLE,STACK
|
|
CALL PERFORM,PRSA,PRSO,STACK
|
|
RTRUE
|
|
?ELS27: SET 'P-CONT,FALSE-VALUE
|
|
EQUAL? PRSA,V?TELL-ABOUT,V?ASK-ABOUT /?THN35
|
|
ZERO? NOW-PRSI \?ELS34
|
|
?THN35: PRINTD PRSO
|
|
JUMP ?CND32
|
|
?ELS34: ZERO? PRSI /?ELS40
|
|
PRINTD PRSI
|
|
JUMP ?CND32
|
|
?ELS40: PRINTD WINNER
|
|
?CND32: CALL NOT-HERE-PERSON,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NOT-HERE-PERSON,PER,L,?TMP1
|
|
FSET? PER,PERSON \?ELS3
|
|
GETP PER,P?CHARACTER
|
|
GET CHARACTER-TABLE,STACK
|
|
LOC STACK >L
|
|
JUMP ?CND1
|
|
?ELS3: LOC PER >L
|
|
?CND1: ZERO? L /?ELS10
|
|
GETP HERE,P?CORRIDOR >?TMP1
|
|
GETP L,P?CORRIDOR
|
|
BAND ?TMP1,STACK
|
|
EQUAL? 0,STACK /?ELS10
|
|
PRINTI " isn't close enough"
|
|
CALL SPEAKING-VERB?
|
|
ZERO? STACK /?CND15
|
|
PRINTI " to hear you"
|
|
?CND15: PRINTR "."
|
|
?ELS10: PRINTR " isn't here!"
|
|
|
|
|
|
.FUNCT INHABITED?,RM
|
|
CALL POPULATION,RM
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT POPULATION,RM,NOT1=0,NOT2=0,CNT=0,OBJ
|
|
FIRST? RM >OBJ /?CND1
|
|
RETURN CNT
|
|
?CND1:
|
|
?PRG4: FSET? OBJ,PERSON \?ELS8
|
|
FSET? OBJ,INVISIBLE /?ELS8
|
|
ZERO? NOT1 /?THN11
|
|
EQUAL? OBJ,NOT1 /?ELS8
|
|
?THN11: ZERO? NOT2 /?THN13
|
|
EQUAL? OBJ,NOT2 /?ELS8
|
|
?THN13: INC 'CNT
|
|
JUMP ?CND6
|
|
?ELS8: FSET? OBJ,CONTBIT \?CND6
|
|
CALL POPULATION,OBJ,NOT1,NOT2
|
|
ADD CNT,STACK >CNT
|
|
?CND6: NEXT? OBJ >OBJ /?KLU20
|
|
?KLU20: ZERO? OBJ \?PRG4
|
|
RETURN CNT
|
|
|
|
.ENDI
|