sherlock/verbs.zap

4453 lines
93 KiB
Plaintext

.FUNCT SOUNDS,N,OP,VOL,NUM,RTN
ASSIGNED? 'OP /?CND1
SET 'OP,S-START
?CND1: ASSIGNED? 'VOL /?CND3
SET 'VOL,8
?CND3: ASSIGNED? 'NUM /?CND5
SET 'NUM,1
?CND5: LESS? LOOPING?,0 \?CND7
EQUAL? OP,S-START \?CND7
SET 'LOOPING?,0
CRLF
PRINTI "[Use $SOUND to toggle sound usage on and off.]"
CRLF
?CND7: EQUAL? OP,S-INIT \?CND11
ZERO? SOUND-QUEUED? \TRUE
ZERO? LOOPING? \TRUE
?CND11: EQUAL? N,S-CROWD \?CCL19
SET 'VOL,6
JUMP ?CND17
?CCL19: EQUAL? N,S-BADVIOL \?CND17
SET 'VOL,6
?CND17: EQUAL? N,S-CROWD,S-BOATING,S-SNORE \?CCL23
EQUAL? OP,S-START \?CCL26
SET 'LOOPING?,N
SET 'LOOP-VOL,VOL
SET 'NUM,-1
JUMP ?CND24
?CCL26: EQUAL? OP,S-STOP \?CND24
SET 'LOOPING?,0
?CND24: ZERO? SOUND-QUEUED? /?CND21
RTRUE
?CCL23: ZERO? RTN \?CND21
SET 'RTN,CHECK-LOOPING
?CND21: ZERO? SOUND-ON? /TRUE
EQUAL? OP,S-START \?CCL36
EQUAL? N,S-CROWD,S-BOATING,S-SNORE /?CND37
SET 'SOUND-QUEUED?,N
?CND37: SHIFT NUM,8
BOR STACK,VOL
SOUND N,OP,STACK,RTN
RTRUE
?CCL36: SOUND N,OP
RTRUE
.FUNCT CHECK-LOOPING
SET 'SOUND-QUEUED?,FALSE-VALUE
GRTR? LOOPING?,0 \TRUE
ICALL SOUNDS,LOOPING?,S-START,LOOP-VOL
RTRUE
.FUNCT RT-S-CAB-ARRIVES
ZERO? CAB-RAMP \?CCL3
CALL SOUNDS,S-HORSE,S-START,4
RSTACK
?CCL3: DEC 'CAB-RAMP
SUB 2,CAB-RAMP
CALL SOUNDS,S-HORSE,S-START,STACK,1,RT-S-CAB-ARRIVES
RSTACK
.FUNCT RT-S-CAB-LEAVES
ZERO? SOUND-QUEUED? /?CCL3
EQUAL? SOUND-QUEUED?,S-HORSE \FALSE
?CCL3: SET 'CAB-RAMP,2
CALL1 RT-S-CAB-GOES
RSTACK
.FUNCT RT-S-CAB-GOES
ZERO? CAB-RAMP \?CCL3
CALL SOUNDS,S-HORSE,S-START,1
RSTACK
?CCL3: DEC 'CAB-RAMP
ADD CAB-RAMP,1
MUL STACK,2
CALL SOUNDS,S-HORSE,S-START,STACK,1,RT-S-CAB-GOES
RSTACK
.FUNCT END-FANFARE
SET 'SOUND-QUEUED?,FALSE-VALUE
CALL1 KILL-SOUNDS
RSTACK
.FUNCT KILL-SOUNDS
EQUAL? SOUND-QUEUED?,S-FANFARE /TRUE
SET 'SOUND-QUEUED?,FALSE-VALUE
ICALL SOUNDS,0,S-STOP
RTRUE
.FUNCT V-$SOUND
LESS? LOOPING?,0 \?CND1
SET 'LOOPING?,0
?CND1: PRINTI "Sound "
ZERO? SOUND-ON? /?CCL5
SET 'SOUND-QUEUED?,FALSE-VALUE
ICALL1 KILL-SOUNDS
SET 'SOUND-ON?,FALSE-VALUE
PRINTR "off."
?CCL5: PRINTI "on."
CRLF
SET 'SOUND-ON?,TRUE-VALUE
CALL1 CHECK-LOOPING
RSTACK
.FUNCT PRE-CALL,?TMP1
EQUAL? GL-PRSI,TH-CAB-WHISTLE /FALSE
EQUAL? GL-PRSO,ROOMS \?CCL5
EQUAL? GL-P-PRSA-WORD,W?HAIL \?CCL8
PRINTR "Greetings, O strange one."
?CCL8: PRINTR "Helllloooooooo."
?CCL5: GET GL-P-ADJW,0
EQUAL? STACK,W?MARY \?CCL10
EQUAL? GL-P-PRSA-WORD,W?HAIL \?CCL10
PRINTR "Praying isn't a bad idea. But if you really need help, simply type HINT."
?CCL10: GET GL-P-NAMW,0
EQUAL? STACK,W?CAB \?CCL14
FSET? GL-PLACE-CUR,FL-INDOORS \?CCL17
ICALL1 RT-CYOU-MSG
PRINTI "can't "
PRINTB GL-P-PRSA-WORD
PRINTR " a cab while indoors."
?CCL17: LOC TH-GROWLER-CAB >?TMP1
LOC TH-HANSOM-CAB
EQUAL? GL-PLACE-CUR,?TMP1,STACK \?CCL19
PRINT K-CAB-HERE-MSG
CRLF
RTRUE
?CCL19: EQUAL? GL-P-PRSA-WORD,W?HAIL \?CCL22
ICALL RT-CYOU-MSG,STR?648,STR?649
PRINTI "a hand in the air"
JUMP ?CND20
?CCL22: ICALL RT-CYOU-MSG,STR?650,STR?651
PRINTI "for a few moments"
?CND20: PRINTI ", but nothing happens. Apparently that isn't how Victorians "
PRINTB GL-P-PRSA-WORD
PRINTR " cabs."
?CCL14: FSET? GL-PRSO,FL-ALIVE \?CCL24
CALL2 RT-VISIBLE?,GL-PRSO
ZERO? STACK \FALSE
?CCL24: PRINTR "Nothing happens."
.FUNCT PRE-DROP
EQUAL? GL-PRSO,TH-ANCHOR /FALSE
IN? GL-PRSO,GL-WINNER /FALSE
IN? GL-PRSO,GLOBAL-OBJECTS \?CCL7
CALL1 RT-IMPOSSIBLE-MSG
RSTACK
?CCL7: FSET? GL-PRSO,FL-BODYPART \?CCL9
CALL1 RT-IMPOSSIBLE-MSG
RSTACK
?CCL9: ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTI "not holding "
ICALL1 RT-THEO-PRINT
PRINTC 46
CRLF
RETURN 2
.FUNCT PRE-DUMB-EXAMINE
CALL1 PRE-EXAMINE
ZERO? STACK /FALSE
RTRUE
.FUNCT PRE-EXAMINE
ZERO? GL-NOW-LIT? \?CCL3
PRINT K-TOO-DARK-MSG
CRLF
RETURN 2
?CCL3: EQUAL? GL-PRSO,TH-INTDIR \FALSE
EQUAL? GL-P-DIRECTION,P?UP \?CCL8
ICALL RT-PERFORM,V?LOOK-UP,ROOMS
RTRUE
?CCL8: EQUAL? GL-P-DIRECTION,P?DOWN \?CND6
ICALL RT-PERFORM,V?LOOK-DOWN,ROOMS
RTRUE
?CND6: PRINTR "You peer off into the middle distance, but then return your attention to the matters at hand."
.FUNCT PRE-FEED
CALL2 PRE-GIVE,TRUE-VALUE
ZERO? STACK /FALSE
RTRUE
.FUNCT PRE-GIVE,FEED?
ZERO? GL-PRSO /?CTR2
ZERO? GL-PRSI \?CCL3
?CTR2: PRINT K-REFERRING-MSG
CRLF
RTRUE
?CCL3: EQUAL? GL-PRSO,GL-PRSI /?CTR6
IN? GL-PRSI,GLOBAL-OBJECTS \?CCL7
?CTR6: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL7: FSET? GL-PRSI,FL-ALIVE /?CCL11
ICALL1 RT-CYOU-MSG
PRINTI "cannot "
ZERO? FEED? /?CCL14
PRINTI "feed "
JUMP ?CND12
?CCL14: PRINTI "give "
?CND12: PRINTI "anything to "
ICALL2 RT-A-PRINT,GL-PRSI
PRINTR "."
?CCL11: EQUAL? GL-PRSI,CH-ME,CH-PLAYER \?CCL16
IN? GL-PRSO,CH-PLAYER \?CCL16
ICALL1 RT-ALREADY-HAVE-PRSO-MSG
RTRUE
?CCL16: EQUAL? GL-PRSI,CH-ME,CH-PLAYER /?CCL20
CALL2 RT-DONT-HAVE-MSG,GL-PRSO
ZERO? STACK \TRUE
?CCL20: FSET? GL-PRSO,FL-WORN \FALSE
IN? GL-PRSO,CH-PLAYER \FALSE
ICALL1 RT-TAKE-OFF-PRSO-FIRST-MSG
RFALSE
.FUNCT PRE-LISTEN
FSET? TH-COTTON-BALLS,FL-WORN \FALSE
ICALL1 RT-CYOU-MSG
PRINTR "can't hear anything very clearly, but then what did you expect with those huge wads of cotton plugging up your ears?"
.FUNCT PRE-POCKET
EQUAL? GL-WINNER,CH-PLAYER /?CCL3
PRINTR "[You cannot tell characters to do that.]"
?CCL3: IN? GL-PRSO,GLOBAL-OBJECTS \?CCL5
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL5: IN? GL-PRSO,TH-POCKET \FALSE
ICALL1 RT-CTHEO-PRINT
ICALL1 RT-IS-ARE-MSG
PRINTI "already in "
ICALL2 DPRINT,TH-POCKET
PRINTR "."
.FUNCT PRE-PUT,PTR,OLOC,CNT
IN? GL-PRSO,GLOBAL-OBJECTS /FALSE
EQUAL? GL-PRSO,TH-ANCHOR /?CCL5
IN? GL-PRSO,GL-WINNER /?CCL5
ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTI "not holding "
ICALL1 RT-THEO-PRINT
PRINTC 46
CRLF
RETURN 2
?CCL5: EQUAL? GL-PRSO,TH-CLOTHES \?CCL9
PRINT K-INAPPROPRIATE-MSG
CRLF
RTRUE
?CCL9: EQUAL? GL-PRSO,GL-PRSI \?CCL11
PRINT K-HOW-TO-MSG
CRLF
RTRUE
?CCL11: EQUAL? GL-PRSI,TH-INTDIR,TH-RIGHT,TH-LEFT \?CCL13
PRINTR "[You must specify an object.]"
?CCL13: EQUAL? GL-PRSI,TH-HANDS \?CCL15
ICALL RT-NOT-LIKELY-MSG,GL-PRSO,STR?652
RTRUE
?CCL15: EQUAL? TH-FEET,GL-PRSO,GL-PRSI \?CCL17
PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
?CCL17: EQUAL? TH-EARS,GL-PRSO,GL-PRSI /FALSE
EQUAL? GL-PRSO,TH-HANDS \?CCL21
ICALL RT-PERFORM,V?REACH-IN,GL-PRSI
RTRUE
?CCL21: IN? GL-PRSI,GLOBAL-OBJECTS /FALSE
EQUAL? GL-PRSO,TH-PIPE \?CCL25
EQUAL? GL-PRSI,W?MOUTH,W?LIPS \?CCL25
CALL RT-PERFORM,V?SMOKE,TH-PIPE
RSTACK
?CCL25: FSET? GL-PRSO,FL-BODYPART \?CCL29
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL29: IN? GL-PRSO,GL-PRSI \?CCL31
ICALL1 RT-CTHEO-PRINT
ICALL1 RT-IS-ARE-MSG
PRINTI "already"
ICALL2 RT-IN-ON-MSG,GL-PRSI
ICALL1 RT-THEI-PRINT
PRINTR "."
?CCL31: EQUAL? GL-PRSO,GL-PRSI /?CTR32
IN? GL-PRSO,GLOBAL-OBJECTS /?CTR32
FSET? GL-PRSO,FL-TAKEABLE /?CCL33
?CTR32: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL33: CALL2 RT-ACCESSIBLE?,GL-PRSI
ZERO? STACK \?CCL38
ICALL2 RT-CANT-SEE-ANY-MSG,GL-PRSI
RTRUE
?CCL38: EQUAL? GL-PRSO,TH-STETHOSCOPE \?CCL40
FSET? GL-PRSI,FL-PERSON /FALSE
?CCL40: CALL RT-CHECK-MOVE-MSG?,GL-PRSO,GL-PRSI
ZERO? STACK \TRUE
FSET? GL-PRSO,FL-WORN \FALSE
IN? GL-PRSO,CH-PLAYER \FALSE
EQUAL? GL-PRSI,CH-ME,CH-PLAYER /FALSE
ICALL1 RT-TAKE-OFF-PRSO-FIRST-MSG
RFALSE
.FUNCT PRE-PUT-ON
CALL1 PRE-PUT
ZERO? STACK \TRUE
FSET? GL-PRSI,FL-ALIVE /FALSE
FSET? GL-PRSI,FL-SURFACE /FALSE
ICALL1 RT-NO-GOOD-SURFACE-MSG
RTRUE
.FUNCT PRE-SHOW
EQUAL? FALSE-VALUE,GL-PRSO,GL-PRSI \?CCL3
PRINT K-REFERRING-MSG
CRLF
RTRUE
?CCL3: EQUAL? GL-PRSI,CH-ME,CH-PLAYER \?CCL5
CALL RT-META-IN?,GL-PRSO,CH-PLAYER
ZERO? STACK /FALSE
CALL RT-PERFORM,V?EXAMINE,GL-PRSO
RSTACK
?CCL5: EQUAL? GL-PRSO,GL-PRSI /?CTR9
IN? GL-PRSI,GLOBAL-OBJECTS \?CCL10
?CTR9: CALL1 RT-IMPOSSIBLE-MSG
RSTACK
?CCL10: FSET? GL-PRSI,FL-ALIVE /FALSE
ICALL1 RT-CYOU-MSG
PRINTI "cannot show things to "
ICALL2 RT-A-PRINT,GL-PRSI
PRINTR "."
.FUNCT PRE-SHOOT
EQUAL? GL-PRSI,FALSE-VALUE,TH-GUN /?CCL3
ICALL1 RT-CYOU-MSG
PRINTI "cannot shoot anything with "
ICALL1 RT-THEI-PRINT
PRINTR "."
?CCL3: EQUAL? GL-PRSI,GL-PRSO \?CCL5
PRINT K-HOW-TO-MSG
CRLF
RTRUE
?CCL5: IN? TH-GUN,CH-PLAYER /?CCL7
PRINTR "Clever thinking. If only you had something to shoot with!"
?CCL7: EQUAL? GL-PRSO,CH-ME,TH-EARS,CH-PLAYER /?CTR8
EQUAL? GL-PRSO,TH-HEAD,TH-WATSONS-HEART \?CCL9
?CTR8: PRINT K-SUICIDE-MSG
CRLF
RTRUE
?CCL9: EQUAL? GL-PRSO,TH-BREATH /FALSE
FSET? GL-PRSO,FL-BODYPART \?CCL15
PRINTR "Is this how you got sent home from the Afghan Campaign?"
?CCL15: EQUAL? GL-PRSO,TH-GUN /?CCL17
CALL RT-META-IN?,GL-PRSO,CH-PLAYER
ZERO? STACK /?CCL17
PRINT K-DROP-IT-FIRST-MSG
CRLF
RTRUE
?CCL17: ZERO? TH-GUN-AUX1 \?CCL21
PRINTR "Click!"
?CCL21: DEC 'TH-GUN-AUX1
RFALSE
.FUNCT PRE-TAKE,L,?TMP1
EQUAL? GL-PRSO,TH-BREATH \?CND1
EQUAL? GL-WINNER,CH-PLAYER \?CND1
ICALL1 V-INHALE
RTRUE
?CND1: IN? GL-PRSO,GLOBAL-OBJECTS /FALSE
LOC GL-WINNER
EQUAL? GL-PRSO,STACK \?CND7
ICALL1 RT-CYOU-MSG
PRINTI "are already inside "
ICALL1 RT-THEO-PRINT
PRINTR "."
?CND7: LOC GL-PRSO >L
FSET? GL-PRSO,FL-BODYPART \?CCL11
CALL1 RT-IMPOSSIBLE-MSG
RSTACK
?CCL11: EQUAL? GL-PRSO,TH-STETHOSCOPE,TH-WATSONS-HAT,TH-COTTON-BALLS \?CCL13
FSET? GL-PRSO,FL-WORN /FALSE
?CCL13: EQUAL? L,GL-WINNER \?CCL17
ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTI "already "
FSET? GL-PRSO,FL-WORN \?CCL20
PRINTI "wearing "
JUMP ?CND18
?CCL20: PRINTI "holding "
?CND18: ICALL1 RT-THEO-PRINT
PRINTR "."
?CCL17: ZERO? L /?CCL22
FSET? L,FL-CONTAINER \?CCL22
FSET? L,FL-OPENABLE \?CCL22
FSET? L,FL-OPENED /?CCL22
ICALL1 RT-CYOU-MSG
PRINTI "can't reach into "
ICALL2 RT-THEO-PRINT,L
PRINTR ". It is closed."
?CCL22: ZERO? GL-PRSI /FALSE
EQUAL? GL-PRSO,GL-PRSI \?CCL31
GET GL-P-NAMW,0 >?TMP1
GET GL-P-NAMW,1
EQUAL? ?TMP1,STACK /?CCL34
GET GL-P-ADJW,0 >?TMP1
GET GL-P-ADJW,1
EQUAL? ?TMP1,STACK \FALSE
?CCL34: CALL1 RT-IMPOSSIBLE-MSG
RSTACK
?CCL31: EQUAL? GL-PRSI,CH-ME,CH-PLAYER \?CCL38
EQUAL? GL-WINNER,CH-PLAYER \?CCL41
ICALL1 RT-NOBODY-TO-ASK-MSG
RTRUE
?CCL41: EQUAL? L,CH-PLAYER /FALSE
ICALL RT-CYOU-MSG,STR?653,STR?654
PRINTI "have "
ICALL1 RT-THEO-PRINT
PRINTR "."
?CCL38: EQUAL? GL-PRSI,CH-BANK-GUARD \?CCL45
EQUAL? L,TH-GUARDS-POCKET \?CCL45
CALL RT-PERFORM,V?TAKE,GL-PRSO,TH-GUARDS-POCKET
RSTACK
?CCL45: EQUAL? L,GL-PRSI /FALSE
ICALL1 RT-CTHEO-PRINT
ICALL1 RT-ISNT-ARENT-MSG
ICALL RT-IN-ON-MSG,GL-PRSI,FALSE-VALUE
ICALL1 RT-THEI-PRINT
PRINTR "."
.FUNCT PRE-THROW
CALL1 PRE-PUT
ZERO? STACK /FALSE
RTRUE
.FUNCT PRE-THROW-OVER
CALL1 PRE-THROW
ZERO? STACK /FALSE
RTRUE
.FUNCT PRE-WATCH
CALL1 PRE-EXAMINE
ZERO? STACK /FALSE
RTRUE
.FUNCT V-ADJUST
EQUAL? GL-P-PRSA-WORD,W?ADJUST \?CCL3
ICALL1 RT-CTHEO-PRINT
ICALL2 RT-DONT-DOESNT-MSG,GL-PRSO
PRINTR "need adjustment."
?CCL3: ICALL1 RT-CYOU-MSG
PRINTI "cannot focus "
ICALL2 RT-A-PRINT,GL-PRSO
PRINTR "."
.FUNCT V-ALARM
CALL1 RT-FOOLISH-TO-TALK-MSG
ZERO? STACK /?CCL3
RETURN 2
?CCL3: EQUAL? GL-PRSO,ROOMS \?CCL5
ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTR "already wide awake."
?CCL5: FSET? GL-PRSO,FL-ALIVE \?CCL7
ICALL1 RT-CTHEO-PRINT
ICALL2 RT-IS-ARE-MSG,GL-PRSO
FSET? GL-PRSO,FL-ASLEEP \?CCL10
PRINTR "unconscious, not asleep."
?CCL10: PRINTR "already wide awake."
?CCL7: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-ARREST
PRINTI "Unfortunately,"
ICALL RT-YOU-MSG,STR?655,STR?656
PRINTI "not have the authority to arrest any"
FSET? GL-PRSO,FL-PERSON \?CCL3
PRINTI "one"
JUMP ?CND1
?CCL3: PRINTI "thing"
?CND1: PRINTR "."
.FUNCT V-ASK-ABOUT-1
RTRUE
.FUNCT V-ASK-ABOUT
CALL1 RT-FOOLISH-TO-TALK-MSG
ZERO? STACK /?CCL3
RETURN 2
?CCL3: EQUAL? GL-WINNER,GL-PRSI \?CCL5
PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RETURN 2
?CCL5: EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL7
ICALL1 RT-TALK-TO-SELF-MSG
RTRUE
?CCL7: ICALL1 RT-NO-RESPONSE-MSG
RTRUE
.FUNCT V-ASK-FOR-1
RTRUE
.FUNCT V-ASK-FOR,WHO
CALL1 RT-FOOLISH-TO-TALK-MSG
ZERO? STACK /?CCL3
RETURN 2
?CCL3: EQUAL? GL-WINNER,GL-PRSI \?CCL5
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL5: FSET? GL-PRSI,FL-TAKEABLE /?CCL7
ICALL2 RT-CTHEO-PRINT,GL-PRSO
PRINTI " say"
ICALL2 RT-S-NOS-MSG,GL-PRSO
PRINTI ", ""Unfortunately, "
FSET? GL-PRSO,FL-PLURAL /?CCL10
PRINTC 73
JUMP ?CND8
?CCL10: PRINTI "we"
?CND8: PRINTR " can't help you with that."""
?CCL7: ICALL1 RT-NO-RESPONSE-MSG
RTRUE
.FUNCT V-BLOW-INTO
FSET? GL-PRSO,FL-PERSON \?CCL3
ICALL RT-PERFORM,V?USE,GL-PRSO
RTRUE
?CCL3: ICALL2 RT-NO-POINT-MSG,STR?657
RTRUE
.FUNCT V-BOW
ICALL2 RT-NO-POINT-MSG,STR?658
RTRUE
.FUNCT V-BURN,OBJ,FIX-LAMP?
CALL RT-META-IN?,TH-LAMP,GL-WINNER
ZERO? STACK /?CND1
FSET? TH-LAMP,FL-LIGHTED \?CND1
SET 'FIX-LAMP?,TRUE-VALUE
FCLEAR TH-LAMP,FL-LIGHTED
?CND1: CALL RT-GET-WHAT-I-MEAN,FL-LIGHTED,194,PR?WITH,TRUE-VALUE,TRUE-VALUE >OBJ
ZERO? OBJ /?CCL7
EQUAL? OBJ,TH-LAMP /?CCL7
ZERO? FIX-LAMP? /?CND10
FSET TH-LAMP,FL-LIGHTED
?CND10: PRINTI "[with "
ICALL2 RT-THEO-PRINT,OBJ
PRINTC 93
CRLF
ICALL RT-PERFORM,V?BURN-WITH,GL-PRSO,OBJ
RTRUE
?CCL7: ZERO? FIX-LAMP? /?CND12
FSET TH-LAMP,FL-LIGHTED
?CND12: PUT GL-P-ITBL,K-P-PREP2,PR?WITH
ICALL1 RT-SYNTAX-CHECK
SET 'GL-P-GOOD,FALSE-VALUE
RETURN 2
.FUNCT V-BURN-WITH
FSET? GL-PRSO,FL-BURNABLE \?CCL3
FSET? GL-PRSI,FL-BURNABLE \?CCL6
FSET? GL-PRSI,FL-LIGHTED \?CCL6
CALL RT-META-IN?,TH-ETHERIUM-AMPOULE,GL-PRSO
ZERO? STACK /?CND9
FSET? TH-ETHERIUM-AMPOULE,FL-BROKEN /?CND9
ICALL1 RT-CTHEO-PRINT
PRINTI " catches fire, and quickly generates enough heat to affect the etherium you left inside it."
ICALL RT-PERFORM,V?BURN-WITH,TH-ETHERIUM-AMPOULE,GL-PRSI
RTRUE
?CND9: REMOVE GL-PRSO
FCLEAR GL-PRSO,FL-WORN
ICALL1 RT-CTHEO-PRINT
PRINTR " catches fire and is quickly consumed."
?CCL6: ICALL1 RT-CTHEI-PRINT
ICALL2 RT-ISNT-ARENT-MSG,GL-PRSI
PRINTR "burning."
?CCL3: ICALL1 RT-CYOU-MSG
PRINTI "can't "
PRINTB GL-P-PRSA-WORD
PRINTC 32
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT V-BUY
CALL2 RT-VISIBLE?,GL-PRSO
ZERO? STACK \?CCL3
ICALL2 RT-CANT-SEE-ANY-MSG,GL-PRSO
RETURN 2
?CCL3: CALL2 RT-HELD?,GL-PRSO
ZERO? STACK /?CCL5
ICALL1 RT-ALREADY-HAVE-PRSO-MSG
RTRUE
?CCL5: FSET? GL-PRSO,FL-BUYABLE /?CCL7
ICALL1 RT-CTHEO-PRINT
ICALL1 RT-ISNT-ARENT-MSG
PRINTR "for sale."
?CCL7: EQUAL? GL-WINNER,CH-PLAYER \?CCL9
IN? GL-PRSO,TH-POCKET \?CCL9
ICALL1 RT-SAY-ITS-MSG
PRINTI "in "
ICALL2 RT-THEO-PRINT,TH-POCKET
PRINTR "."
?CCL9: ZERO? GL-PRSI /?CCL13
ICALL RT-CYOU-MSG,STR?659,STR?660
PRINTI "buy "
ICALL1 RT-THEO-PRINT
PRINTI " with "
ICALL2 RT-A-PRINT,GL-PRSI
PRINTR "."
?CCL13: ICALL1 RT-NO-MONEY-MSG
RTRUE
.FUNCT V-BUY-FROM
PRINTI "It's not for sale."
CRLF
RETURN 2
.FUNCT V-CALL
LOC GL-PRSO
EQUAL? STACK,GL-PLACE-CUR \?CCL3
ICALL1 RT-CTHEO-PRINT
ICALL2 RT-IS-ARE-MSG,GL-PRSO
PRINTR "right in front of you."
?CCL3: PRINTR "Nothing happens."
.FUNCT V-CAST-OFF,?TMP1
EQUAL? GL-PRSO,ROOMS,TH-BOAT /?CCL3
ICALL1 V-DROP
RTRUE
?CCL3: IN? CH-PLAYER,TH-BOAT /?CTR4
LOC CH-PLAYER >?TMP1
LOC TH-BOAT
EQUAL? ?TMP1,STACK \?CCL5
?CTR4: ICALL1 RT-LAUNCH-BOAT
RTRUE
?CCL5: PRINTR "Clever idea. Now, if only you were in a boat...."
.FUNCT V-CLEAN
PRINTI "Sorry. You get no points for neatness."
CRLF
RETURN 2
.FUNCT V-CLEAN-OFF
EQUAL? GL-PRSO,GL-PRSI \?CCL3
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL3: ICALL1 RT-CYOU-MSG
PRINTI "cannot "
PRINTB GL-P-PRSA-WORD
PRINTC 32
ICALL1 RT-THEO-PRINT
PRINTI " on "
ICALL1 RT-THEI-PRINT
PRINTR "."
.FUNCT V-CLIMB-DOWN
EQUAL? GL-P-PRSA-WORD,W?JUMP,W?LEAP \?CCL3
ICALL RT-PERFORM,V?DIVE,GL-PRSO
RTRUE
?CCL3: EQUAL? GL-PRSO,ROOMS \?CCL5
ICALL2 RT-DO-WALK,P?DOWN
RTRUE
?CCL5: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-CLIMB-ON
EQUAL? GL-P-PRSA-WORD,W?TAKE \?CCL3
ICALL RT-NOT-LIKELY-MSG,GL-PRSO,STR?661
RTRUE
?CCL3: ICALL1 RT-CYOU-MSG
PRINTI "cannot "
PRINTB GL-P-PRSA-WORD
PRINTI " onto "
ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG
PRINTR "."
.FUNCT V-CLIMB-OVER
EQUAL? GL-PRSO,ROOMS \?CCL3
ICALL1 V-WALK-AROUND
RTRUE
?CCL3: ICALL1 RT-CYOU-MSG
PRINTI "cannot climb over "
ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG
PRINTR "."
.FUNCT V-CLIMB-UP
EQUAL? GL-PRSO,ROOMS \?CCL3
ICALL2 RT-DO-WALK,P?UP
RTRUE
?CCL3: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-CLOSE
FSET? GL-PRSO,FL-OPENABLE \?CCL3
FSET? GL-PRSO,FL-OPENED /?CCL6
ICALL2 RT-ITS-ALREADY-MSG,STR?662
RTRUE
?CCL6: FSET? GL-PRSO,FL-LOCKED \?CCL8
PRINTR "The door is fixed in the open position. It cannot be closed."
?CCL8: ICALL1 RT-YOU-CLOSE-MSG
RTRUE
?CCL3: ICALL1 RT-CANT-CLOSE-THAT-MSG
RTRUE
.FUNCT V-COUNT
GET GL-P-NAMW,0
EQUAL? STACK,W?ARMS,W?EARS,W?EYES /?CTR2
GET GL-P-NAMW,0
EQUAL? STACK,W?FEET,W?HANDS,W?LEGS /?CTR2
GET GL-P-NAMW,0
EQUAL? STACK,W?LIPS \?CCL3
?CTR2: PRINTR "Two."
?CCL3: FSET? GL-PRSO,FL-PLURAL /?CTR7
EQUAL? GL-PRSO,TH-BANK-OF-CANDLES \?CCL8
?CTR7: ICALL RT-CYOU-MSG,STR?663,STR?664
PRINTI "distracted and lose"
EQUAL? GL-WINNER,CH-PLAYER /?CND11
PRINTC 115
?CND11: PRINTR " count."
?CCL8: ICALL RT-CYOU-MSG,STR?665,STR?666
PRINTR "only one."
.FUNCT V-COVER
ICALL RT-PERFORM,V?PUT-ON,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-CROSS
ICALL1 RT-CYOU-MSG
PRINTI "cannot cross "
ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG
PRINTR "."
.FUNCT V-CUT
PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
.FUNCT V-DETONATE
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-DIAGNOSE
FSET? GL-PRSO,FL-ALIVE /?CCL3
PRINTR "Don't be ridiculous."
?CCL3: FSET? GL-PRSO,FL-ASLEEP \?CCL5
ICALL1 RT-CTHEO-PRINT
ICALL2 RT-IS-ARE-MSG,GL-PRSO
PRINTR "asleep."
?CCL5: EQUAL? GL-PRSO,CH-PLAYER,CH-ME \?CCL7
PRINTR "You're doing fine. Now quit fooling around and get back to solving the game."
?CCL7: ICALL1 RT-CTHEO-PRINT
PRINTI " appear"
ICALL2 RT-S-NOS-MSG,GL-PRSO
PRINTR " to be in good health."
.FUNCT V-DIVE
EQUAL? GL-PRSO,ROOMS \?CCL3
EQUAL? GL-PLACE-CUR,RM-THE-EMBANKMENT,RM-SWAN-LANE,RM-LONDON-BRIDGE \?CCL3
PRINTI "Yuck! Have you looked at that water?"
CRLF
RETURN 2
?CCL3: PRINTI "That would be a foolish thing to do."
CRLF
RETURN 2
.FUNCT V-DRESS
EQUAL? GL-PRSO,ROOMS \?CCL3
PRINTR "You are already dressed."
?CCL3: FSET? GL-PRSO,FL-PERSON \?CCL5
ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTR "already dressed."
?CCL5: ICALL1 RT-CYOU-MSG
PRINTI "cannot dress "
ICALL2 RT-A-PRINT,GL-PRSO
PRINTR "."
.FUNCT V-DRINK,FROM?
ICALL1 RT-CYOU-MSG
PRINTI "cannot drink "
ZERO? FROM? /?CND1
PRINTI "from "
?CND1: ICALL2 DPRINT,TH-NOT-HERE-OBJECT
PRINTR "."
.FUNCT V-DRINK-FROM
ICALL2 V-DRINK,TRUE-VALUE
RTRUE
.FUNCT V-DRIVE
LOC GL-WINNER
EQUAL? STACK,TH-HANSOM-CAB,TH-GROWLER-CAB \?CCL3
EQUAL? GL-PRSO,ROOMS /TRUE
SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE
PRINTR """Sorry, guv. Could you be a little more specific?"""
?CCL3: ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTR "not in a cab."
.FUNCT V-DROP
CALL1 RT-IDROP-MSG
ZERO? STACK /TRUE
ICALL1 RT-SAY-DROPPED-MSG
RTRUE
.FUNCT V-DUMB-EXAMINE
CALL1 V-EXAMINE
ZERO? STACK /FALSE
RTRUE
.FUNCT V-EAT
EQUAL? GL-WINNER,CH-PLAYER \?CCL3
ICALL RT-NOT-LIKELY-MSG,GL-PRSO,STR?667
RTRUE
?CCL3: PRINTI """It"
CALL2 RT-PICK-NEXT,GL-NOT-LIKELY-TXT
PRINT STACK
PRINTI " that "
ICALL1 RT-THEO-PRINT
PRINTR " would agree with me."""
.FUNCT V-EMPTY,DEST
ZERO? DEST \?CND1
SET 'DEST,CH-PLAYER
?CND1: FSET? GL-PRSO,FL-SURFACE \?CCL5
ICALL2 RT-EMPTY-PRSO-MSG,DEST
RTRUE
?CCL5: FSET? GL-PRSO,FL-CONTAINER \?CCL7
FSET? GL-PRSO,FL-OPENED \?CCL10
ICALL2 RT-EMPTY-PRSO-MSG,DEST
RTRUE
?CCL10: ICALL2 RT-ITS-CLOSED-MSG,GL-PRSO
RTRUE
?CCL7: ICALL1 RT-CYOU-MSG
PRINTI "cannot possibly empty "
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT V-EMPTY-INTO
EQUAL? GL-PRSI,TH-HANDS,CH-ME,CH-PLAYER \?CCL3
CALL2 V-EMPTY,CH-PLAYER
RSTACK
?CCL3: CALL RT-IDENTIFY-FLOOR?,W?GROUND,GL-PRSI
ZERO? STACK \?CTR4
CALL RT-IDENTIFY-FLOOR?,W?FLOOR,GL-PRSI
ZERO? STACK /?CCL5
?CTR4: CALL2 V-EMPTY,GL-PRSI
RSTACK
?CCL5: FSET? GL-PRSI,FL-SURFACE \?CCL9
CALL2 V-EMPTY,GL-PRSI
RSTACK
?CCL9: FSET? GL-PRSI,FL-CONTAINER \?CCL11
FSET? GL-PRSI,FL-OPENED \?CCL14
FSET? GL-PRSI,TH-WATSONS-COAT \?CCL17
CALL2 V-EMPTY,TH-POCKET
RSTACK
?CCL17: CALL2 V-EMPTY,GL-PRSI
RSTACK
?CCL14: CALL2 RT-ITS-CLOSED-MSG,GL-PRSI
RSTACK
?CCL11: ICALL1 RT-CYOU-MSG
PRINTI "cannot empty "
ICALL1 RT-THEO-PRINT
PRINTI " into "
ICALL1 RT-THEI-PRINT
PRINTR "."
.FUNCT V-ENTER,VEH
EQUAL? GL-PRSO,GL-PLACE-CUR \?CCL3
ICALL1 RT-ALREADY-IN-ROOM-MSG
RTRUE
?CCL3: CALL RT-FIND-IN?,GL-PLACE-CUR,FL-VEHICLE >VEH
ZERO? VEH /?CND1
EQUAL? GL-PRSO,ROOMS,VEH \?CND1
IN? GL-WINNER,VEH \?CCL9
ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTI "already in "
ICALL2 RT-THEO-PRINT,VEH
PRINTR "."
?CCL9: ICALL RT-PERFORM,V?ENTER,VEH
RTRUE
?CND1: EQUAL? GL-PRSO,ROOMS \?CCL12
ICALL2 RT-DO-WALK,P?IN
RTRUE
?CCL12: FSET? GL-PRSO,FL-CLOTHING \?CCL14
PRINTI "[Presumably, you mean WEAR "
ICALL1 RT-THEO-PRINT
PRINTI ".]"
CRLF
ICALL RT-PERFORM,V?WEAR,GL-PRSO
RTRUE
?CCL14: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-ESCAPE
ICALL1 V-WALK-AROUND
RTRUE
.FUNCT V-EXAMINE,ODF,NUM,DRES
FSET? GL-PRSO,FL-HAS-DESCFCN \?CND1
GETP GL-PRSO,P?ACTION >ODF
?CND1: CALL2 RT-HOLE?,GL-PRSO >NUM
ZERO? NUM /?CND3
PRINTI "There "
EQUAL? NUM,1 \?CCL7
PRINTI "is one"
JUMP ?CND5
?CCL7: PRINTI "are "
EQUAL? NUM,2 \?CCL10
PRINTI "two"
JUMP ?CND5
?CCL10: EQUAL? NUM,3 \?CCL12
PRINTI "three"
JUMP ?CND5
?CCL12: EQUAL? NUM,4 \?CCL14
PRINTI "four"
JUMP ?CND5
?CCL14: EQUAL? NUM,5 \?CCL16
PRINTI "five"
JUMP ?CND5
?CCL16: PRINTI "six"
?CND5: PRINTI " bullet hole"
GRTR? NUM,1 \?CND17
PRINTC 115
?CND17: PRINTI " in "
ICALL1 RT-THEO-PRINT
PRINTC 46
CRLF
?CND3: ZERO? ODF /?CCL21
CALL ODF,K-M-DESCFCN >DRES
EQUAL? DRES,1 \?CCL21
FSET GL-PRSO,FL-SEEN
RTRUE
?CCL21: FSET? GL-PRSO,FL-OPENABLE \?CCL25
ICALL1 RT-OPEN-CLOSED-MSG
CRLF
FSET GL-PRSO,FL-SEEN
RTRUE
?CCL25: FSET? GL-PRSO,FL-SURFACE \?CCL27
PRINTI "On "
ICALL1 RT-THEO-PRINT
PRINTI " can be seen "
ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO
PRINTC 46
CRLF
FSET GL-PRSO,FL-SEEN
RTRUE
?CCL27: FSET? GL-PRSO,FL-CONTAINER \?CCL29
FSET? GL-PRSO,FL-OPENED /?CTR31
FSET? GL-PRSO,FL-TRANSPARENT \?CCL32
?CTR31: ICALL1 V-LOOK-INSIDE
FSET GL-PRSO,FL-SEEN
RTRUE
?CCL32: ICALL2 RT-ITS-CLOSED-MSG,GL-PRSO
CRLF
FSET GL-PRSO,FL-SEEN
RTRUE
?CCL29: FSET? GL-PRSO,FL-PERSON \?CCL36
CALL2 RT-SEE-ANYTHING-IN?,GL-PRSO
ZERO? STACK /?CCL36
ICALL1 RT-CTHEO-PRINT
ICALL2 RT-IS-ARE-MSG,GL-PRSO
PRINTI "holding "
ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO
PRINTC 46
CRLF
FSET GL-PRSO,FL-SEEN
RTRUE
?CCL36: ZERO? NUM \TRUE
ZERO? DRES \TRUE
ICALL1 RT-NOTHING-INTERESTING-MSG
PRINTI " about "
ICALL1 RT-THEO-PRINT
PRINTC 46
CRLF
FSET GL-PRSO,FL-SEEN
RTRUE
.FUNCT V-EXHALE
EQUAL? GL-PRSO,TH-BREATH,ROOMS /?CCL3
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL3: FSET? TH-BREATH,FL-LOCKED /?CCL5
ICALL1 RT-CYOU-MSG
ICALL2 RT-WOULD-HAVE-TO-MSG,STR?668
RTRUE
?CCL5: FCLEAR TH-BREATH,FL-LOCKED
PRINTI "You begin to breathe normally."
CRLF
ICALL2 RT-ALARM-CLR,RT-I-EXHALE
ICALL2 RT-ALARM-CLR,RT-I-INHALE
ICALL1 RT-SMELL-ETHERIUM?
RTRUE
.FUNCT V-EXIT,VEH,L
CALL RT-FIND-IN?,GL-PLACE-CUR,FL-VEHICLE >VEH
ZERO? VEH /?CND1
EQUAL? GL-PRSO,ROOMS,VEH \?CND1
EQUAL? GL-PRSO,ROOMS \?CCL7
LOC GL-WINNER
FSET? STACK,FL-VEHICLE \?CCL7
LOC GL-WINNER
ICALL RT-PERFORM,V?EXIT,STACK
RTRUE
?CCL7: IN? GL-WINNER,VEH /?CCL11
ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTI "not in "
ICALL2 RT-THEO-PRINT,VEH
PRINTR "."
?CCL11: ICALL RT-PERFORM,V?EXIT,VEH
RTRUE
?CND1: LOC GL-PRSO >L
EQUAL? GL-PRSO,ROOMS \?CCL14
ICALL2 RT-DO-WALK,P?OUT
RTRUE
?CCL14: EQUAL? GL-PRSO,GL-PLACE-CUR \?CCL16
PRINT K-SPECIFY-DIR-MSG
CRLF
RTRUE
?CCL16: EQUAL? L,ROOMS \?CCL18
ICALL1 RT-NOT-IN-ROOM-MSG
RTRUE
?CCL18: FSET? L,FL-CONTAINER \?CCL20
CALL2 RT-VISIBLE?,GL-PRSO
ZERO? STACK /?CCL20
PRINTI "[from "
ICALL2 DPRINT,L
PRINTC 93
CRLF
ICALL RT-PERFORM,V?TAKE,GL-PRSO
RTRUE
?CCL20: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-FEED
EQUAL? GL-PRSI,GL-WINNER \?CCL3
ICALL1 RT-CYOU-MSG
JUMP ?CND1
?CCL3: ICALL2 RT-CTHEO-PRINT,GL-PRSI
PRINTC 32
?CND1: PRINTI "cannot eat "
ICALL2 RT-THEO-PRINT,GL-PRSO
PRINTR "."
.FUNCT V-FEED-SWP
ICALL RT-PERFORM,V?FEED,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-FILL
ICALL RT-PERFORM,V?PUT,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-FIND,L
LOC GL-PRSO >L
ZERO? L \?CCL3
PRINT K-DO-IT-YOURSELF-MSG
CRLF
RTRUE
?CCL3: EQUAL? GL-PRSO,CH-ME,CH-PLAYER,TH-HANDS /?CTR4
EQUAL? GL-PRSO,TH-WATSONS-HEART,TH-FEET,TH-EARS /?CTR4
EQUAL? GL-PRSO,TH-HEAD,TH-PLAYER-BODY,TH-BREATH /?CTR4
EQUAL? GL-PRSO,TH-CLOTHES \?CCL5
?CTR4: PRINTR "You're right here."
?CCL5: IN? GL-PRSO,CH-PLAYER \?CCL11
PRINTI "You're "
FSET? GL-PRSO,FL-WORN \?CCL14
PRINTI "wearing"
JUMP ?CND12
?CCL14: PRINTI "holding"
?CND12: PRINTC 32
ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG
PRINTR "."
?CCL11: IN? GL-PRSO,GL-PLACE-CUR /?CTR15
EQUAL? GL-PRSO,GL-PLACE-CUR /?CTR15
IN? GL-PRSO,LOCAL-GLOBALS /?PRD21
IN? GL-PRSO,ROOMS \?CCL16
?PRD21: CALL RT-GLOBAL-IN?,GL-PRSO,GL-PLACE-CUR
ZERO? STACK /?CCL16
?CTR15: ICALL1 RT-ITS-RIGHT-HERE-MSG
RTRUE
?CCL16: FSET? L,FL-PERSON /?PRD27
FSET? L,FL-ALIVE \?CCL25
?PRD27: CALL2 RT-VISIBLE?,L
ZERO? STACK /?CCL25
ICALL2 RT-CTHEO-PRINT,L
PRINTI " ha"
FSET? L,FL-PLURAL /?CCL32
PRINTC 115
JUMP ?CND30
?CCL32: PRINTI "ve"
?CND30: PRINTR " it."
?CCL25: CALL2 RT-SEE-INSIDE?,L
ZERO? STACK /?CCL34
CALL2 RT-VISIBLE?,L
ZERO? STACK /?CCL34
ICALL1 RT-SAY-ITS-MSG
ICALL RT-IN-ON-MSG,L,FALSE-VALUE
ICALL2 RT-THEO-PRINT,L
PRINTR "."
?CCL34: PRINT K-DO-IT-YOURSELF-MSG
CRLF
RTRUE
.FUNCT V-FLIP
FSET? GL-PRSO,FL-TAKEABLE /?CCL3
FSET? GL-PRSO,FL-TRYTAKE /?CCL3
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL3: ICALL2 RT-NO-POINT-MSG,STR?669
RTRUE
.FUNCT V-FLY
ICALL1 RT-CYOU-MSG
PRINTR "cannot possibly do that."
.FUNCT V-FOCUS-ON
ZERO? GL-PRSI \?CCL3
EQUAL? GL-PRSO,TH-TELESCOPE \?CCL6
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL6: IN? TH-TELESCOPE,CH-PLAYER \?CCL8
ICALL RT-PERFORM,V?LOOK-THRU,GL-PRSO,TH-TELESCOPE
RTRUE
?CCL8: PRINT K-HOW-TO-MSG
CRLF
RTRUE
?CCL3: EQUAL? GL-PRSO,TH-TELESCOPE \?CCL11
ICALL RT-PERFORM,V?LOOK-THRU,GL-PRSI,GL-PRSO
RTRUE
?CCL11: ICALL1 RT-CYOU-MSG
PRINTI "cannot focus "
ICALL1 RT-THEO-PRINT
PRINTI " on "
ICALL1 RT-THEI-PRINT
PRINTR "."
.FUNCT V-FOLD
ICALL2 RT-NO-POINT-MSG,STR?670
RTRUE
.FUNCT V-FOLLOW
ZERO? GL-PRSO \?CCL3
ICALL1 RT-CANT-SEE-ANY-MSG
RETURN 2
?CCL3: CALL RT-META-IN?,GL-PRSO,GL-PLACE-CUR
ZERO? STACK \?CND1
LOC GL-PRSO
EQUAL? STACK,LOCAL-GLOBALS,GLOBAL-OBJECTS /?CND1
ICALL2 RT-CANT-SEE-ANY-MSG,GL-PRSO
RETURN 2
?CND1: PRINTI "But "
EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL9
PRINTR "you're right here."
?CCL9: ICALL1 RT-THEO-PRINT
ICALL2 RT-IS-ARE-MSG,GL-PRSO
CALL2 RT-VISIBLE?,GL-PRSO
ZERO? STACK \?CTR11
IN? GL-PRSO,GLOBAL-OBJECTS \?CCL12
?CTR11: PRINTI "right here"
JUMP ?CND7
?CCL12: PRINTI "not visible at the moment"
?CND7: PRINTR "."
.FUNCT V-FOO
EQUAL? GL-P-PRSA-WORD,W?RENT \?CCL3
ICALL1 RT-CTHEO-PRINT
ICALL1 RT-ISNT-ARENT-MSG
PRINTR "for rent."
?CCL3: EQUAL? GL-PRSO,ROOMS \FALSE
PRINTR "Same to you, fella."
.FUNCT V-GET-FOR
ICALL RT-PERFORM,V?TAKE,GL-PRSO
RTRUE
.FUNCT V-GET-FOR-SWP
ICALL RT-PERFORM,V?TAKE,GL-PRSI
RTRUE
.FUNCT V-GIN,WHO
EQUAL? GL-PLACE-CUR,RM-BYWARD-TOWER \?CCL3
ICALL2 RT-CTHEO-PRINT,CH-TOWER-GUARD
PRINTR " takes a quick look around and says, ""Thanks. Don't mind if I do,"" whereupon he whips out a hip flask and takes a quick slug. Just as quickly, he tucks it away and resumes staring at you."
?CCL3: CALL1 RT-WHO-SAYS? >WHO
EQUAL? WHO,CH-HOLMES \?CCL6
PRINTR "Holmes shakes his head and says, ""No drinks for you until we recover the Crown Jewels."""
?CCL6: EQUAL? WHO,CH-WIGGINS \?CCL8
PRINTR "Wiggins says, ""Good idea. I could use a belt."""
?CCL8: PRINTR "Wrong game, dummy."
.FUNCT V-GIVE
EQUAL? GL-PRSI,CH-ME,CH-PLAYER \?CCL3
ICALL1 RT-NOBODY-TO-ASK-MSG
RTRUE
?CCL3: EQUAL? GL-PRSI,CH-TOWER-GUARD,CH-PALACE-GUARD,CH-TUSSAUDS-GUARD \?CCL5
FSET? GL-PRSO,FL-MONEY \?CCL5
ICALL1 RT-CTHEI-PRINT
PRINTI " doesn't even glance at "
ICALL1 RT-THEO-PRINT
PRINTR ". Clearly he cannot be bribed."
?CCL5: FSET? GL-PRSI,FL-PERSON \?CCL9
ICALL1 RT-CTHEI-PRINT
PRINTI " show"
ICALL2 RT-S-NOS-MSG,GL-PRSI
PRINTR " little interest in your offer."
?CCL9: ICALL RT-NOT-LIKELY-MSG,GL-PRSI,STR?671
RTRUE
.FUNCT V-GIVE-SWP
ICALL RT-PERFORM,V?GIVE,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-GOODBYE
CALL1 RT-HI-BYE-MSG
RSTACK
.FUNCT V-GUESS,WHO
CALL1 RT-WHO-SAYS? >WHO
EQUAL? WHO,CH-WIGGINS \?CND1
PRINTR "Wiggins says, ""Mr 'Olmes doesn't like people guessing about things."""
?CND1: EQUAL? GL-WINNER,CH-HOLMES \?CCL5
PRINTI "Holmes looks at you in shock and says, ""I never"
JUMP ?CND3
?CCL5: EQUAL? WHO,CH-HOLMES \?CCL7
PRINTI "Holmes shakes his head and says, ""Never"
JUMP ?CND3
?CCL7: PRINTI "Holmes's words come back to you, ""Never"
?CND3: PRINTR " guess, Watson. It is a shocking habit - destructive to the logical faculty."""
.FUNCT V-HAGGLE
FSET? GL-PRSO,FL-PERSON /?CCL3
ICALL1 RT-CYOU-MSG
PRINTI "cannot "
PRINTB GL-P-PRSA-WORD
PRINTI " with "
ICALL1 RT-A-PRINT
PRINTR "."
?CCL3: EQUAL? GL-PRSO,CH-HOLMES \?CCL5
PRINTI "There is nothing to negotiate with "
ICALL2 RT-THEO-PRINT,CH-HOLMES
PRINTR " about."
?CCL5: EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL7
PRINTR "You have nothing to negotiate."
?CCL7: ICALL1 RT-CTHEO-PRINT
PRINTI " refuse"
ICALL2 RT-S-NOS-MSG,GL-PRSO
PRINTR " to negotiate."
.FUNCT V-HAUL
PRINTR "You're a doctor, not a sailor."
.FUNCT V-HEAT
CALL2 RT-NO-POINT-MSG,STR?672
RSTACK
.FUNCT V-HELLO
CALL1 RT-HI-BYE-MSG
RSTACK
.FUNCT V-HIDE
PRINTR "You can run, but you cannot hide."
.FUNCT V-HIT
PRINTI "Attacking "
ICALL1 RT-THEO-PRINT
ZERO? GL-PRSI /?CND1
EQUAL? GL-PRSI,TH-HANDS /?CND1
PRINTI " with "
ICALL2 RT-A-PRINT,GL-PRSI
?CND1: PRINT K-WONT-HELP-MSG
CRLF
RTRUE
.FUNCT V-HOLD-OVER
PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
.FUNCT V-HUSH
PRINTR "Silence is golden."
.FUNCT V-INHALE
EQUAL? GL-PRSO,TH-BREATH,ROOMS /?CCL3
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL3: FSET? TH-BREATH,FL-LOCKED \?CCL5
EQUAL? GL-P-PRSA-WORD,W?BREATHE \?CCL8
ICALL1 V-EXHALE
RTRUE
?CCL8: PRINTI "You are already holding "
ICALL2 RT-THEO-PRINT,TH-BREATH
PRINTR "."
?CCL5: PRINTI "You take a deep breath."
EQUAL? GL-PUPPY,CH-HOLMES \?CND9
PRINTC 32
ICALL2 RT-CTHEO-PRINT,CH-HOLMES
PRINTI " notices your action and surreptitiously does likewise."
?CND9: CRLF
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,2,0
ICALL RT-ALARM-SET-REL,RT-I-EXHALE,STACK
FSET TH-BREATH,FL-LOCKED
SET 'GL-CLOCK-WAIT,TRUE-VALUE
RTRUE
.FUNCT V-KICK
ICALL2 RT-NO-POINT-MSG,STR?673
RTRUE
.FUNCT V-KILL
PRINTR "Calm down."
.FUNCT V-KISS
PRINTR "You really can't wait for the Victorian Era to end, can you?"
.FUNCT V-KNOCK
FSET? GL-PRSO,FL-DOOR \?CCL3
FSET? GL-PRSO,FL-OPENED \?CND4
ICALL2 RT-ITS-ALREADY-MSG,STR?227
RTRUE
?CND4: PRINTR "There's no answer."
?CCL3: FSET? GL-PRSO,FL-PERSON \?CND1
ICALL RT-PERFORM,V?USE,GL-PRSO
RTRUE
?CND1: PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
.FUNCT V-LEAP
EQUAL? GL-PRSO,ROOMS /?CCL3
PRINTR "No."
?CCL3: PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
.FUNCT V-LIE-DOWN
PRINTR "With so much at stake, resting is out of the question."
.FUNCT V-LIGHT,OBJ,FIX-LAMP?
CALL RT-META-IN?,TH-LAMP,GL-WINNER
ZERO? STACK /?CND1
FSET? TH-LAMP,FL-LIGHTED \?CND1
SET 'FIX-LAMP?,TRUE-VALUE
FCLEAR TH-LAMP,FL-LIGHTED
?CND1: CALL RT-GET-WHAT-I-MEAN,FL-LIGHTED,194,PR?WITH,TRUE-VALUE,TRUE-VALUE >OBJ
ZERO? OBJ /?CCL7
EQUAL? OBJ,TH-LAMP /?CCL7
ZERO? FIX-LAMP? /?CND10
FSET TH-LAMP,FL-LIGHTED
?CND10: PRINTI "[with "
ICALL2 RT-THEO-PRINT,OBJ
PRINTC 93
CRLF
ICALL RT-PERFORM,V?LIGHT-WITH,GL-PRSO,OBJ
RTRUE
?CCL7: ZERO? FIX-LAMP? /?CND12
FSET TH-LAMP,FL-LIGHTED
?CND12: PUT GL-P-ITBL,K-P-PREP2,PR?WITH
ICALL1 RT-SYNTAX-CHECK
SET 'GL-P-GOOD,FALSE-VALUE
RETURN 2
.FUNCT V-LIGHT-WITH,OBJ
EQUAL? GL-PRSI,TH-LAMP \?CND1
EQUAL? GL-PRSI,GL-PRSO \?CND3
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CND3: ICALL RT-PERFORM,V?SHINE-AT,GL-PRSI,GL-PRSO
RTRUE
?CND1: ICALL1 V-BURN-WITH
RTRUE
.FUNCT V-LISTEN,OBJ
EQUAL? GL-PRSO,ROOMS \?CCL3
FSET? GL-PLACE-CUR,RM-DIOGENES-CLUB \?CCL6
ICALL2 RT-CTHEO-PRINT,CH-MEMBERS
PRINTI " are all asleep."
CRLF
JUMP ?CND4
?CCL6: FSET? GL-PLACE-CUR,FL-INDOORS \?CCL8
PRINTI "From afar you"
JUMP ?CND4
?CCL8: PRINTI "You"
?CND4: PRINTI " hear the sounds of the "
IN? CH-PLAYER,TH-BOAT \?CCL11
PRINTI "river "
JUMP ?CND9
?CCL11: PRINTI "city "
?CND9: CALL1 RT-TIME-OF-DAY
ZERO? STACK \?CCL14
PRINTI "at night"
JUMP ?CND12
?CCL14: CALL1 RT-TIME-OF-DAY
EQUAL? STACK,1 \?CCL16
PRINTI "waking up"
JUMP ?CND12
?CCL16: CALL1 RT-TIME-OF-DAY
EQUAL? STACK,2 \?CCL18
PRINTI "going about its business"
JUMP ?CND12
?CCL18: CALL1 RT-TIME-OF-DAY
EQUAL? STACK,3 \?CND12
PRINTI "going to sleep"
?CND12: PRINTR "."
?CCL3: EQUAL? GL-PRSI,FALSE-VALUE,TH-STETHOSCOPE,TH-EARS /?CCL21
ICALL1 RT-CYOU-MSG
PRINTI "cannot listen to anything with "
ICALL1 RT-THEI-PRINT
PRINTR "."
?CCL21: EQUAL? GL-PRSI,TH-STETHOSCOPE \?CCL23
FSET? TH-STETHOSCOPE,FL-WORN /?CCL23
ICALL1 RT-CTHEI-PRINT
PRINTI " is not in "
ICALL2 RT-THEO-PRINT,TH-EARS
PRINTR "."
?CCL23: FSET? GL-PRSO,FL-ALIVE \?CCL27
EQUAL? GL-PRSI,TH-STETHOSCOPE \?CCL27
EQUAL? GL-PRSO,CH-HOLMES \?CCL32
FSET? CH-HOLMES,FL-ASLEEP \?CCL32
ICALL1 RT-THEO-PRINT
PRINTR " is suffering from a mental, not physical, malaise."
?CCL32: PRINTI "You don't need to. Your experienced eye tells you there is nothing wrong with "
ICALL1 RT-THEO-PRINT
PRINTR "."
?CCL27: PRINTI "At the moment, "
EQUAL? GL-PRSO,CH-PLAYER,CH-ME \?CCL37
PRINTI "you"
JUMP ?CND35
?CCL37: ICALL1 RT-THEO-PRINT
?CND35: ICALL1 RT-IS-ARE-MSG
PRINTI "silent."
CRLF
SET 'GL-LISTEN-OBJ,GL-PRSO
RTRUE
.FUNCT V-LOCK
FSET? GL-PRSO,FL-OPENABLE /?CTR2
FSET? GL-PRSO,FL-CONTAINER \?CCL3
?CTR2: FSET? GL-PRSO,FL-OPENED \?CCL8
ICALL RT-YOUD-HAVE-TO-MSG,STR?674,GL-PRSO
RTRUE
?CCL8: FSET? GL-PRSO,FL-LOCKED \?CCL10
ICALL1 RT-CTHEO-PRINT
ICALL1 RT-IS-ARE-MSG
PRINTR "already locked."
?CCL10: ICALL RT-THING-WONT-LOCK-MSG,GL-PRSI,GL-PRSO
RTRUE
?CCL3: ICALL1 RT-CANT-LOCK-MSG
RTRUE
.FUNCT V-LOOK
ICALL RT-DESC-ALL,FALSE-VALUE,TRUE-VALUE
RTRUE
.FUNCT V-LOOK-BEHIND
ZERO? GL-NOW-LIT? \?CCL3
PRINT K-TOO-DARK-MSG
CRLF
RETURN 2
?CCL3: FSET? GL-PRSO,FL-DOOR \?CCL5
FSET? GL-PRSO,FL-OPENED \?CCL8
ICALL1 RT-CANT-SEE-MUCH-MSG
RTRUE
?CCL8: ICALL2 RT-ITS-CLOSED-MSG,GL-PRSO
RTRUE
?CCL5: PRINTI "There's nothing behind "
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT V-LOOK-DOWN,X
ZERO? GL-NOW-LIT? \?CCL3
PRINT K-TOO-DARK-MSG
CRLF
RETURN 2
?CCL3: EQUAL? GL-PRSO,ROOMS \?CCL5
EQUAL? GL-PLACE-CUR,RM-CLOCK-TOWER \?CCL8
ICALL RT-PERFORM,V?EXAMINE,TH-SHAFT
RTRUE
?CCL8: ICALL1 RT-NOTHING-INTERESTING-MSG
PRINTR " down there."
?CCL5: PRINTI "You cannot look down "
ICALL1 RT-A-PRINT
PRINTR "."
.FUNCT V-LOOK-INSIDE,ODF
ZERO? ODF /?CND1
CALL ODF
ZERO? STACK \TRUE
?CND1: ZERO? GL-NOW-LIT? \?CCL7
PRINT K-TOO-DARK-MSG
CRLF
RETURN 2
?CCL7: FSET? GL-PRSO,FL-PERSON \?CCL9
ICALL2 RT-YOURE-NOT-A-MSG,STR?675
RTRUE
?CCL9: FSET? GL-PRSO,FL-ALIVE \?CCL11
ICALL2 RT-YOURE-NOT-A-MSG,STR?676
RTRUE
?CCL11: FSET? GL-PRSO,FL-CONTAINER \?CCL13
FSET? GL-PRSO,FL-OPENED /?CCL16
FSET? GL-PRSO,FL-TRANSPARENT /?CCL16
ICALL RT-YOUD-HAVE-TO-MSG,STR?227,GL-PRSO
RTRUE
?CCL16: PRINTI "In "
ICALL1 RT-THEO-PRINT
PRINTI " you see "
ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO
PRINTR "."
?CCL13: FSET? GL-PRSO,FL-DOOR \?CCL20
FSET? GL-PRSO,FL-OPENED \?CCL23
ICALL1 RT-CANT-SEE-MUCH-MSG
RTRUE
?CCL23: ICALL2 RT-ITS-CLOSED-MSG,GL-PRSO
RTRUE
?CCL20: PRINTI "You cannot look inside "
ICALL1 RT-A-PRINT
PRINTR "."
.FUNCT V-LOOK-ON
ZERO? GL-NOW-LIT? \?CCL3
PRINT K-TOO-DARK-MSG
CRLF
RETURN 2
?CCL3: FSET? GL-PRSO,FL-SURFACE \?CCL5
PRINTI "On "
ICALL1 RT-THEO-PRINT
PRINTI " you see "
ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO
PRINTR "."
?CCL5: FSET? GL-PRSO,FL-READABLE \?CCL7
ICALL1 RT-CTHEO-PRINT
PRINTR " has something written on it."
?CCL7: ICALL1 RT-NOTHING-INTERESTING-MSG
PRINTI " on "
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT V-LOOK-OUTSIDE
ZERO? GL-NOW-LIT? \?CCL3
PRINT K-TOO-DARK-MSG
CRLF
RETURN 2
?CCL3: EQUAL? GL-PRSO,ROOMS \?CCL5
FSET? GL-PLACE-CUR,FL-INDOORS \?CCL8
ICALL1 RT-NOTHING-INTERESTING-MSG
PRINTR " outside."
?CCL8: PRINTR "You are outside."
?CCL5: FSET? GL-PRSO,FL-DOOR \?CCL10
FSET? GL-PRSO,FL-OPENED \?CCL13
ICALL1 RT-CANT-SEE-MUCH-MSG
RTRUE
?CCL13: ICALL2 RT-ITS-CLOSED-MSG,GL-PRSO
RTRUE
?CCL10: PRINTI "You cannot look out of "
ICALL1 RT-A-PRINT
PRINTR "."
.FUNCT V-LOOK-THRU
ZERO? GL-NOW-LIT? \?CCL3
PRINT K-TOO-DARK-MSG
CRLF
RETURN 2
?CCL3: EQUAL? GL-P-PRSA-WORD,W?EXAMINE,W?X \?CCL5
EQUAL? GL-PRSI,TH-STETHOSCOPE \?CCL5
FSET? GL-PRSO,FL-PERSON \?CCL5
CALL RT-PERFORM,V?LISTEN,GL-PRSO,GL-PRSI
RSTACK
?CCL5: ZERO? GL-PRSI /?CCL10
FSET? GL-PRSI,FL-TRANSPARENT /?CCL10
PRINTI "You can't look through "
ICALL1 RT-THEI-PRINT
PRINTR "."
?CCL10: ZERO? GL-PRSI /?CCL14
FSET? GL-PRSI,FL-TRANSPARENT \?CCL14
ICALL1 RT-NOTHING-INTERESTING-MSG
PRINTI " through "
ICALL1 RT-THEI-PRINT
PRINTR "."
?CCL14: ICALL1 RT-NOTHING-INTERESTING-MSG
PRINTR "at all."
.FUNCT V-LOOK-THRU-SWP
CALL RT-PERFORM,V?LOOK-THRU,GL-PRSI,GL-PRSO
RSTACK
.FUNCT V-LOOK-UNDER
ZERO? GL-NOW-LIT? \?CCL3
PRINT K-TOO-DARK-MSG
CRLF
RETURN 2
?CCL3: IN? GL-PRSO,CH-PLAYER \?CCL5
PRINTI "You are already "
FSET? GL-PRSO,FL-WORN \?CCL8
PRINTI "wearing"
JUMP ?CND6
?CCL8: PRINTI "holding"
?CND6: PRINTR " that."
?CCL5: ICALL1 RT-NOTHING-INTERESTING-MSG
PRINTI " under "
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT V-LOOK-UP,X
ZERO? GL-NOW-LIT? \?CCL3
PRINT K-TOO-DARK-MSG
CRLF
RETURN 2
?CCL3: EQUAL? GL-PRSO,ROOMS \?CCL5
FSET? GL-PLACE-CUR,FL-INDOORS \?CND6
PUTP TH-FLOOR-ETC,P?OBJ-NOUN,W?CEILING
ICALL RT-PERFORM,V?EXAMINE,TH-FLOOR-ETC
RTRUE
?CND6: ICALL1 RT-NOTHING-INTERESTING-MSG
PRINTR " up there."
?CCL5: PRINTI "You cannot look up "
ICALL1 RT-A-PRINT
PRINTR "."
.FUNCT V-LOOSEN
PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
.FUNCT V-LOWER
EQUAL? GL-PRSO,ROOMS \?CCL3
ICALL2 RT-DO-WALK,P?DOWN
RTRUE
?CCL3: ICALL1 V-RAISE
RTRUE
.FUNCT V-LAND
EQUAL? GL-PRSO,ROOMS \?CCL3
IN? CH-PLAYER,TH-BOAT \?CCL6
ICALL1 RT-LAND-BOAT
RTRUE
?CCL6: PRINTR "Very good. Next week, we'll learn the word for water."
?CCL3: EQUAL? GL-PRSO,TH-BOAT \?CCL8
IN? CH-PLAYER,TH-BOAT \?CCL11
ICALL1 RT-LAND-BOAT
RTRUE
?CCL11: PRINT K-MUST-BE-IN-BOAT-MSG
PRINTR "land it."
?CCL8: PRINTI "You can't land "
ICALL1 RT-THEO-PRINT
PRINTR "!"
.FUNCT RT-LAND-BOAT
IN? TH-BOAT,RM-THE-EMBANKMENT \?CCL3
PRINTR "The boat is already on the Embankment."
?CCL3: IN? TH-BOAT,RM-OUTSIDE-TRAITORS-GATE \?CCL5
PRINTR "The boat is already at Traitors Gate."
?CCL5: IN? TH-ANCHOR,TH-BOAT /?CCL7
PRINTR "You can't land the boat. The anchor seems to be doing its job."
?CCL7: IN? TH-BOAT,RM-THAMES-ONE \?CCL9
ICALL SOUNDS,S-BOATING,S-STOP
PRINTI "You land the boat on the Embankment."
CRLF
MOVE TH-BOAT,RM-THE-EMBANKMENT
ICALL2 RT-ALARM-CLR,RT-I-MOVE-DOWNSTREAM
RTRUE
?CCL9: IN? TH-BOAT,RM-THAMES-FOUR \?CCL11
ICALL SOUNDS,S-BOATING,S-STOP
PRINTI "You land the boat outside Traitors Gate."
CRLF
MOVE TH-BOAT,RM-OUTSIDE-TRAITORS-GATE
ICALL2 RT-ALARM-CLR,RT-I-MOVE-DOWNSTREAM
RTRUE
?CCL11: PRINTI "There doesn't seem to be any place to land the boat."
CRLF
ICALL2 RT-ALARM-CLR,RT-I-MOVE-DOWNSTREAM
RTRUE
.FUNCT V-LAMP-OFF
ICALL2 V-LAMP-ON,TRUE-VALUE
RTRUE
.FUNCT V-LAMP-ON,OFF?
ICALL1 RT-CYOU-MSG
PRINTI "couldn't "
EQUAL? GL-P-PRSA-WORD,W?EXTINGUISH \?CCL3
PRINTI "extinguish"
JUMP ?CND1
?CCL3: PRINTB GL-P-PRSA-WORD
?CND1: PRINTI " that"
ZERO? OFF? /?CCL6
EQUAL? GL-P-PRSA-WORD,W?CLOSE,W?SHUT,W?TURN \?CCL6
PRINTI " off"
JUMP ?CND4
?CCL6: ZERO? OFF? /?CCL10
EQUAL? GL-P-PRSA-WORD,W?BLOW,W?PUT \?CCL10
PRINTI " out"
JUMP ?CND4
?CCL10: ZERO? OFF? \?CND4
EQUAL? GL-P-PRSA-WORD,W?TURN \?CND4
PRINTI " on"
?CND4: EQUAL? GL-PRSI,FALSE-VALUE,TH-HANDS /?CND16
PRINTI ", "
ICALL2 DPRINT,GL-PRSI
PRINTI " or no "
ICALL2 DPRINT,GL-PRSI
?CND16: PRINTR "."
.FUNCT V-LAUNCH,?TMP1
EQUAL? GL-PRSO,ROOMS \?CCL3
IN? CH-PLAYER,TH-BOAT /?CTR5
LOC CH-PLAYER >?TMP1
LOC TH-BOAT
EQUAL? ?TMP1,STACK \?CCL6
?CTR5: ICALL1 RT-LAUNCH-BOAT
RTRUE
?CCL6: PRINTR "That usually works better when one is in a boat."
?CCL3: EQUAL? GL-PRSO,TH-BOAT \?CCL10
ICALL1 RT-LAUNCH-BOAT
RTRUE
?CCL10: PRINTI "You can't launch "
ICALL1 RT-THEO-PRINT
PRINTR ". Perhaps you meant to throw it?"
.FUNCT RT-LAUNCH-BOAT
IN? TH-ANCHOR,TH-BOAT /?CCL3
ICALL2 RT-THIS-IS-IT,TH-ANCHOR
PRINTR "The anchor is restraining the boat."
?CCL3: IN? CH-PLAYER,TH-BOAT /?CCL5
PRINTI "You push the boat into the Thames, and then watch as it slowly floats away. Too bad you weren't in it."
CRLF
REMOVE TH-BOAT
RTRUE
?CCL5: IN? TH-BOAT,RM-THE-EMBANKMENT \?CCL7
PRINTI "The boat slips away from the Embankment. You are now in the middle of the Thames."
CRLF
ICALL SOUNDS,S-BOATING,S-START
MOVE TH-BOAT,RM-THAMES-ONE
RTRUE
?CCL7: IN? TH-BOAT,RM-OUTSIDE-TRAITORS-GATE \?CCL9
PRINTI "The boat slips out into the river."
CRLF
ICALL SOUNDS,S-BOATING,S-START
MOVE TH-BOAT,RM-THAMES-FOUR
RTRUE
?CCL9: PRINTR "You are already on the Thames. You don't need to launch the boat again."
.FUNCT V-MAKE
EQUAL? GL-PRSO,TH-RUBBINGS \?CCL3
PRINTI "[To make a rubbing, put a blank piece of paper on a tomb, and then rub the paper with the crayon.]"
CRLF
RETURN 2
?CCL3: PRINT K-HOW-TO-MSG
CRLF
RTRUE
.FUNCT V-ECHO
EQUAL? GL-P-PRSA-WORD,W?MARX \?CCL3
PRINTR "Cocoanuts."
?CCL3: EQUAL? GL-P-PRSA-WORD,W?CHICO \?CCL5
PRINTR """Wattsa matta you? You needa de password? I sell it you."""
?CCL5: EQUAL? GL-P-PRSA-WORD,W?GROUCHO \?CCL7
PRINTR """Say the secret woid, and the guy will let you in."""
?CCL7: EQUAL? GL-P-PRSA-WORD,W?GUMMO \?CCL9
PRINTR "This isn't a trivia game. Get back to work."
?CCL9: EQUAL? GL-P-PRSA-WORD,W?HARPO \?CCL11
CRLF
RTRUE
?CCL11: EQUAL? GL-P-PRSA-WORD,W?ZEPPO \?CCL13
PRINTR "Did you really think saying ""Zeppo"" was going to get you anywhere?"
?CCL13: EQUAL? GL-P-PRSA-WORD,W?PUNT \?CCL15
PRINTR "But it's not even fourth down!"
?CCL15: EQUAL? GL-P-PRSA-WORD,W?HUM,W?WHISTLE,W?SING \?CCL17
PRINTI "You "
PRINTB GL-P-PRSA-WORD
PRINTR " tunelessly for a few moments until you remember that you're tone deaf and know next to nothing about music."
?CCL17: EQUAL? GL-P-PRSA-WORD,W?ECHO \FALSE
PRINTR "ECHO...Echo...echo...."
.FUNCT V-MELT
PRINT K-HOW-TO-MSG
CRLF
RTRUE
.FUNCT V-MOVE
EQUAL? GL-PRSO,ROOMS \?CCL3
ICALL1 V-WALK-AROUND
RTRUE
?CCL3: FSET? GL-PRSO,FL-TAKEABLE \?CCL5
PRINTI "Moving "
ICALL1 RT-THEO-PRINT
PRINTI " would"
CALL2 RT-PICK-NEXT,GL-NO-POINT-TXT
PRINT STACK
PRINTR "."
?CCL5: PRINTI "You cannot possibly move "
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT V-MUNG
ICALL2 RT-NO-POINT-MSG,STR?677
RTRUE
.FUNCT V-OPEN
FSET? GL-PRSO,FL-OPENABLE /?CCL3
ICALL1 RT-CANT-OPEN-PRSO-MSG
RTRUE
?CCL3: FSET? GL-PRSO,FL-OPENED \?CCL5
ICALL2 RT-ITS-ALREADY-MSG,STR?227
RTRUE
?CCL5: FSET? GL-PRSO,FL-LOCKED \?CCL7
ICALL1 RT-OBJECT-IS-LOCKED-MSG
RTRUE
?CCL7: ICALL1 RT-YOU-OPEN-MSG
FSET? GL-PRSO,FL-CONTAINER \TRUE
ZERO? GL-NOW-LIT? \?CCL12
PRINTR "It is too dark to see inside."
?CCL12: PRINTI "Inside you see "
ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO
PRINTR "."
.FUNCT V-OPEN-WITH
FSET? GL-PRSO,FL-OPENABLE /?CCL3
ICALL1 RT-CANT-OPEN-PRSO-MSG
RTRUE
?CCL3: FSET? GL-PRSO,FL-OPENED \?CND1
ICALL2 RT-ITS-ALREADY-MSG,STR?227
RTRUE
?CND1: ICALL1 RT-CYOU-MSG
PRINTI "cannot "
PRINTB GL-P-PRSA-WORD
PRINTC 32
ICALL1 RT-THEO-PRINT
PRINTI " with "
ICALL1 RT-THEI-PRINT
PRINTR "."
.FUNCT V-PADDLE
IN? GL-WINNER,TH-BOAT \?CCL3
EQUAL? GL-PRSO,TH-BOAT,TH-INTDIR \?CCL6
PRINT K-BETTER-SUCCESS-MSG
CRLF
RTRUE
?CCL6: CALL1 V-HIT
RSTACK
?CCL3: EQUAL? GL-PRSO,TH-INTDIR \?CCL8
ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTR "not in a boat."
?CCL8: CALL1 V-HIT
RSTACK
.FUNCT V-PADDLE-WITH
EQUAL? GL-PRSI,TH-VIOLIN \?CCL3
PRINTR "How could you even THINK of using such a beautiful instrument in such a manner?"
?CCL3: IN? GL-WINNER,TH-BOAT \?CCL5
EQUAL? GL-PRSO,TH-INTDIR \?CCL8
ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTR "not in a boat."
?CCL8: PRINT K-BETTER-SUCCESS-MSG
CRLF
RTRUE
?CCL5: EQUAL? GL-PRSO,TH-INTDIR \?CCL10
ICALL1 RT-CYOU-MSG
PRINTI "can't paddle anywhere with "
ICALL1 RT-THEI-PRINT
PRINTR "."
?CCL10: CALL1 V-HIT
RSTACK
.FUNCT V-PASSWORD,WRD
GET GL-P-NAMW,0 >WRD
EQUAL? WRD,W?SWORDFISH \?CCL3
CALL2 RT-PERFORM,V?SWORDFISH
RSTACK
?CCL3: EQUAL? WRD,W?PARR \?CCL5
CALL2 RT-PERFORM,V?PARR
RSTACK
?CCL5: EQUAL? WRD,W?CLEVES \?CCL7
CALL2 RT-PERFORM,V?CLEVES
RSTACK
?CCL7: EQUAL? WRD,W?ARAGON \?CCL9
CALL2 RT-PERFORM,V?ARAGON
RSTACK
?CCL9: EQUAL? WRD,W?HOWARD \?CCL11
CALL2 RT-PERFORM,V?HOWARD
RSTACK
?CCL11: EQUAL? WRD,W?SEYMOUR \?CCL13
CALL2 RT-PERFORM,V?SEYMOUR
RSTACK
?CCL13: EQUAL? WRD,W?BOLEYN \?CCL15
CALL2 RT-PERFORM,V?BOLEYN
RSTACK
?CCL15: EQUAL? WRD,W?GIN \?CCL17
CALL2 RT-PERFORM,V?GIN
RSTACK
?CCL17: PRINTR """No, it isn't."""
.FUNCT V-PAY
ICALL RT-PERFORM,V?GIVE,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-PICK
FSET? GL-PRSO,FL-OPENABLE \?CCL3
ICALL2 RT-YOURE-NOT-A-MSG,STR?678
RTRUE
?CCL3: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-PLAY
EQUAL? GL-PRSO,ROOMS \?CCL3
PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
?CCL3: ICALL2 RT-NO-POINT-MSG,STR?679
RTRUE
.FUNCT V-PLUG
ICALL1 RT-CYOU-MSG
PRINTI "cannot "
PRINTB GL-P-PRSA-WORD
PRINTC 32
ICALL1 RT-THEO-PRINT
PRINTI " into "
ZERO? GL-PRSI /?CCL3
ICALL1 RT-THEI-PRINT
JUMP ?CND1
?CCL3: PRINTI "anything"
?CND1: PRINTR "."
.FUNCT V-POCKET
ICALL RT-PERFORM,V?PUT,GL-PRSO,TH-POCKET
RTRUE
.FUNCT V-POINT
ICALL2 RT-NO-POINT-MSG,STR?680
RTRUE
.FUNCT V-POINT-AT
ICALL2 RT-NO-POINT-MSG,STR?681
RTRUE
.FUNCT V-POINT-AT-SWP
ICALL2 RT-NO-POINT-MSG,STR?681
RETURN 2
.FUNCT V-POUR
EQUAL? GL-PRSO,TH-HANDS \?CCL3
PRINTI "[To do that, just DROP EVERYTHING.]"
CRLF
RETURN 2
?CCL3: EQUAL? GL-PRSO,TH-POCKET \?CCL5
ICALL RT-YOUD-HAVE-TO-MSG,STR?682,TH-CLOTHES
RTRUE
?CCL5: FSET? GL-PRSO,FL-SURFACE \?CCL7
ICALL2 RT-EMPTY-PRSO-MSG,FALSE-VALUE
RTRUE
?CCL7: FSET? GL-PRSO,FL-CONTAINER \?CCL9
FSET? GL-PRSO,FL-OPENED \?CND10
ICALL2 RT-EMPTY-PRSO-MSG,FALSE-VALUE
RTRUE
?CND10: ICALL1 RT-ITS-CLOSED-MSG
RTRUE
?CCL9: ICALL1 RT-CYOU-MSG
PRINTI "cannot empty "
ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG
PRINTR "."
.FUNCT V-POUR-FROM
EQUAL? GL-PRSI,TH-HANDS \?CCL3
ICALL RT-PERFORM,V?DROP,GL-PRSO
RTRUE
?CCL3: EQUAL? GL-PRSI,TH-POCKET \?CCL5
ICALL RT-YOUD-HAVE-TO-MSG,STR?682,TH-CLOTHES
RTRUE
?CCL5: FSET? GL-PRSI,FL-CONTAINER /?CCL7
FSET? GL-PRSI,FL-SURFACE /?CCL7
PRINTI "You cannot"
PRINTB GL-P-PRSA-WORD
PRINTI " things from "
ICALL2 RT-A-PRINT,GL-PRSI
PRINTR "."
?CCL7: FSET? GL-PRSI,FL-CONTAINER \?CCL11
FSET? GL-PRSI,FL-OPENED /?CCL11
ICALL2 RT-ITS-CLOSED-MSG,GL-PRSI
RTRUE
?CCL11: IN? GL-PRSO,GL-PRSI \?CCL15
FSET? GL-PRSO,FL-TAKEABLE \?CND16
ICALL1 RT-CTHEO-PRINT
PRINTC 32
ICALL1 RT-LANDS-AT-YOUR-FEET-MSG
RTRUE
?CND16: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL15: ICALL1 RT-CTHEO-PRINT
ICALL2 RT-ISNT-ARENT-MSG,GL-PRSO
PRINTI "in "
ICALL1 RT-THEI-PRINT
PRINTR "."
.FUNCT V-PRAY
PRINTR "Good idea. You could use the help."
.FUNCT V-PULL
ICALL2 RT-NO-POINT-MSG,STR?683
RTRUE
.FUNCT V-PUSH
ICALL2 RT-NO-POINT-MSG,STR?684
RTRUE
.FUNCT V-PUSH-TO
EQUAL? GL-PRSO,TH-HANDS \?CND1
ZERO? GL-PRSI /?CND1
ICALL RT-PERFORM,V?REACH-IN,GL-PRSI
RTRUE
?CND1: ICALL1 RT-CYOU-MSG
PRINTI "cannot push "
ICALL1 RT-THEO-PRINT
PRINTR " around like that."
.FUNCT V-PUT,L,WRD
LOC GL-PRSO >L
EQUAL? L,GLOBAL-OBJECTS \?CCL3
PRINTI "That would"
CALL1 RT-WASTE-OF-TIME-MSG
RSTACK
?CCL3: FSET? GL-PRSO,FL-BODYPART \?CCL5
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL5: CALL RT-IDENTIFY-FLOOR?,W?FLOOR,GL-PRSI
ZERO? STACK \?CTR6
CALL RT-IDENTIFY-FLOOR?,W?GROUND,GL-PRSI
ZERO? STACK /?CCL7
?CTR6: MOVE GL-PRSO,GL-PLACE-CUR
ZERO? GL-P-MULT? /?CCL13
PRINTR "Done."
?CCL13: ICALL RT-CYOU-MSG,STR?685,STR?686
ICALL1 RT-THEO-PRINT
ICALL2 RT-IN-ON-MSG,GL-PRSI
ICALL1 RT-THEI-PRINT
PRINTR "."
?CCL7: ZERO? L /?CTR14
ZERO? GL-PRSI /?CCL15
FSET? GL-PRSI,FL-SURFACE /?CCL15
FSET? GL-PRSI,FL-CONTAINER /?CCL15
FSET? GL-PRSI,FL-OPENED /?CCL15
FSET? GL-PRSI,FL-OPENABLE /?CCL15
?CTR14: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL15: FSET? GL-PRSI,FL-OPENED /?CCL24
FSET? GL-PRSI,FL-SURFACE /?CCL24
ICALL1 RT-CTHEI-PRINT
ICALL2 RT-ISNT-ARENT-MSG,GL-PRSI
PRINTR "open."
?CCL24: CALL RT-ROOM-IN-ON-MSG?,GL-PRSO,GL-PRSI
ZERO? STACK \TRUE
EQUAL? L,GL-WINNER /?CCL30
PRINTI "Maybe"
ICALL1 RT-YOU-MSG
PRINTI "should take "
ICALL1 RT-THEO-PRINT
ICALL2 RT-OUT-OFF-MSG,L
ICALL2 RT-THEO-PRINT,L
PRINTR " first."
?CCL30: MOVE GL-PRSO,GL-PRSI
FSET GL-PRSO,FL-TOUCHED
FSET? GL-PRSI,FL-CONTAINER \?CCL33
CALL2 RT-PUT-OUT,GL-PRSO
ZERO? STACK \TRUE
?CCL33: ZERO? GL-P-MULT? /?CCL37
PRINTR "Done."
?CCL37: ICALL RT-CYOU-MSG,STR?685,STR?686
ICALL1 RT-THEO-PRINT
ICALL2 RT-IN-ON-MSG,GL-PRSI
ICALL1 RT-THEI-PRINT
PRINTR "."
.FUNCT V-PUT-BEHIND
PRINTR "That hiding place is too obvious."
.FUNCT V-PUT-ON
EQUAL? GL-PRSI,CH-ME,CH-PLAYER \?CND1
ICALL RT-PERFORM,V?WEAR,GL-PRSO
RTRUE
?CND1: ICALL1 V-PUT
RTRUE
.FUNCT V-PUT-UNDER
ICALL1 RT-CYOU-MSG
PRINTI "cannot put anything under "
ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG
PRINTR "."
.FUNCT V-QUESTION
EQUAL? GL-WINNER,CH-PLAYER \?CND1
ICALL RT-TO-DO-THING-USE-MSG,STR?687,STR?688
RETURN 2
?CND1: ICALL1 RT-NO-RESPONSE-MSG
RTRUE
.FUNCT V-RAISE
EQUAL? GL-PRSO,ROOMS \?CCL3
ICALL1 V-STAND
RTRUE
?CCL3: ICALL2 RT-NO-POINT-MSG,STR?689
RTRUE
.FUNCT V-REACH-IN,OBJ
FIRST? GL-PRSO >OBJ /?BOGUS1
?BOGUS1: FSET? GL-PRSO,FL-PERSON /?CTR3
FSET? GL-PRSO,FL-ALIVE \?CCL4
?CTR3: ICALL2 RT-YOURE-NOT-A-MSG,STR?675
RTRUE
?CCL4: FSET? GL-PRSO,FL-DOOR \?CCL8
FSET? GL-PRSO,FL-OPENED \?CND9
PRINTI "You reach into "
ICALL1 RT-THEO-PRINT
PRINTI ", but experience nothing "
CALL2 RT-PICK-NEXT,GL-BORING-TXT
PRINT STACK
PRINTR "."
?CND9: ICALL1 RT-ITS-CLOSED-MSG
RTRUE
?CCL8: FSET? GL-PRSO,FL-CONTAINER /?CCL12
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL12: FSET? GL-PRSO,FL-OPENED /?CCL14
PRINTR "It's not open."
?CCL14: ZERO? OBJ /?CTR15
FSET? OBJ,FL-TAKEABLE /?CCL16
?CTR15: FSET? GL-PRSO,FL-PLURAL \?CCL21
FSET? GL-PRSO,FL-COLLECTIVE /?CCL21
PRINTI "They're"
JUMP ?CND19
?CCL21: PRINTI "It's"
?CND19: PRINTR " empty."
?CCL16: SET 'GL-P-IT-OBJECT,OBJ
PRINTI "You "
EQUAL? GL-PRSO,TH-EARS \?CCL26
PRINTI "put your hands to "
JUMP ?CND24
?CCL26: PRINTI "reach into "
?CND24: ICALL1 RT-THEO-PRINT
PRINTR ". There's something in there."
.FUNCT V-READ
ZERO? GL-NOW-LIT? \?CCL3
PRINT K-TOO-DARK-MSG
CRLF
RETURN 2
?CCL3: FSET? GL-PRSO,FL-READABLE /?CCL5
ICALL1 RT-HOW-READ-MSG
PRINTR "?"
?CCL5: PRINTR "There's nothing written on it."
.FUNCT V-READ-TO
ZERO? GL-NOW-LIT? \?CCL3
PRINT K-TOO-DARK-MSG
CRLF
RETURN 2
?CCL3: FSET? GL-PRSO,FL-READABLE /?CCL5
ICALL1 RT-HOW-READ-MSG
PRINTI " to "
ICALL2 RT-A-PRINT,GL-PRSI
PRINTR "?"
?CCL5: EQUAL? GL-WINNER,CH-PLAYER \?CCL7
ICALL RT-NOT-LIKELY-MSG,GL-PRSI,STR?690
RTRUE
?CCL7: PRINTR "Maybe you ought to do it."
.FUNCT V-READ-TO-SWP
ICALL RT-PERFORM,V?READ-TO,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-REFUSE
FSET? GL-PRSO,FL-TAKEABLE /?CND1
PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
?CND1: PRINTI "How could you turn down such a tempting "
ICALL2 DPRINT,GL-PRSO
PRINTR "?"
.FUNCT V-RELEASE
IN? GL-PRSO,GL-WINNER \?CCL3
ICALL RT-PERFORM,V?DROP,GL-PRSO
RTRUE
?CCL3: EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL6
PRINTI "You aren't "
JUMP ?CND4
?CCL6: ICALL1 RT-CTHEO-PRINT
ICALL1 RT-ISNT-ARENT-MSG
?CND4: PRINTR "confined by anything."
.FUNCT V-REPAIR
EQUAL? GL-PRSO,TH-LAMP,TH-ETHERIUM-AMPOULE \?CCL3
FSET? GL-PRSO,FL-BROKEN \?CCL3
ICALL1 RT-CTHEO-PRINT
PRINTR " is hopelessly beyond repair."
?CCL3: EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL7
PRINTI "You aren't "
JUMP ?CND1
?CCL7: ICALL1 RT-CTHEO-PRINT
ICALL1 RT-ISNT-ARENT-MSG
?CND1: PRINTR "in need of repair."
.FUNCT V-REPLACE
EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL3
PRINTR "Easily done."
?CCL3: ICALL1 RT-CTHEO-PRINT
ICALL2 RT-DONT-DOESNT-MSG,GL-PRSO
PRINTR "need replacement."
.FUNCT V-REPLY,WHO
CALL1 RT-FOOLISH-TO-TALK-MSG
ZERO? STACK /?CND1
RETURN 2
?CND1: ICALL1 RT-NO-RESPONSE-MSG
RTRUE
.FUNCT V-RESCUE
EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CND1
EQUAL? GL-WINNER,CH-PLAYER \?CND3
ICALL1 V-HINT
RTRUE
?CND3: PRINT K-HOW-TO-MSG
CRLF
RTRUE
?CND1: ICALL1 RT-CTHEO-PRINT
ICALL2 RT-DONT-DOESNT-MSG,GL-PRSO
PRINTR "need any help."
.FUNCT V-RIDE
FSET? GL-PRSO,FL-ALIVE \?CCL3
ICALL RT-NOT-LIKELY-MSG,GL-PRSO,STR?691
RTRUE
?CCL3: PRINTR "You cannot ride that."
.FUNCT V-RING
EQUAL? GL-PRSO,TH-BELL \?CCL3
CALL2 RT-ALARM-SET?,RT-I-SWING-BELL
ZERO? STACK /?CCL6
PRINTR "The bell is already ringing."
?CCL6: PRINTR "The bell is too heavy for you to move, but your effort makes it vibrate softly."
?CCL3: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-RIP
PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
.FUNCT V-ROB
ICALL RT-PERFORM,V?STEAL,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-ROW
IN? CH-PLAYER,TH-BOAT \?CCL3
PRINTR "You'd have better success if you launched the boat first."
?CCL3: EQUAL? GL-PRSO,TH-INTDIR \?CCL5
ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTR "not in a boat."
?CCL5: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-RUB-WITH
ICALL2 RT-NO-POINT-MSG,STR?692
RTRUE
.FUNCT V-SAY,WRD
EQUAL? GL-WINNER,CH-PLAYER \?CND1
CALL1 RT-ANYONE-HERE?
ZERO? STACK /?CND3
GET GL-P-NAMW,0 >WRD
EQUAL? WRD,W?SWORDFISH \?CCL7
ICALL2 RT-PERFORM,V?SWORDFISH
RTRUE
?CCL7: EQUAL? WRD,W?PARR \?CCL9
ICALL2 RT-PERFORM,V?PARR
RTRUE
?CCL9: EQUAL? WRD,W?CLEVES \?CCL11
ICALL2 RT-PERFORM,V?CLEVES
RTRUE
?CCL11: EQUAL? WRD,W?ARAGON \?CCL13
ICALL2 RT-PERFORM,V?ARAGON
RTRUE
?CCL13: EQUAL? WRD,W?HOWARD \?CCL15
ICALL2 RT-PERFORM,V?HOWARD
RTRUE
?CCL15: EQUAL? WRD,W?SEYMOUR \?CCL17
ICALL2 RT-PERFORM,V?SEYMOUR
RTRUE
?CCL17: EQUAL? WRD,W?BOLEYN \?CCL19
ICALL2 RT-PERFORM,V?BOLEYN
RTRUE
?CCL19: EQUAL? WRD,W?GIN \?CCL21
ICALL2 RT-PERFORM,V?GIN
RTRUE
?CCL21: ICALL1 RT-WAY-TO-TALK-MSG
RTRUE
?CND3: ICALL1 RT-TALK-TO-SELF-MSG
RTRUE
?CND1: ICALL1 RT-NO-RESPONSE-MSG
RTRUE
.FUNCT V-SEARCH
FSET? GL-PRSO,FL-CONTAINER \?CCL3
FSET? GL-PRSO,FL-OPENED /?CCL6
FSET? GL-PRSO,FL-TRANSPARENT /?CCL6
ICALL RT-YOUD-HAVE-TO-MSG,STR?227,GL-PRSO
RTRUE
?CCL6: PRINTI "You see "
ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO
PRINTI " inside "
ICALL1 RT-THEO-PRINT
PRINTR "."
?CCL3: FSET? GL-PRSO,FL-SURFACE \?CCL10
PRINTI "You see "
ICALL2 RT-PRINT-CONTENTS-2,GL-PRSO
PRINTI " on "
ICALL1 RT-THEO-PRINT
PRINTR "."
?CCL10: FSET? GL-PRSO,FL-PERSON \?CCL12
ICALL RT-PERFORM,V?USE,GL-PRSO
RTRUE
?CCL12: ICALL1 RT-NOTHING-INTERESTING-MSG
PRINTR "."
.FUNCT V-SELL
EQUAL? GL-WINNER,CH-PLAYER /?CCL3
ICALL RT-NOT-LIKELY-MSG,GL-WINNER,STR?693
RTRUE
?CCL3: EQUAL? GL-PRSI,GL-PRSO,CH-ME,CH-PLAYER /?CTR4
EQUAL? GL-PRSI,GL-WINNER \?CCL5
?CTR4: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL5: FSET? GL-PRSI,FL-PERSON /?CND1
ICALL RT-NOT-LIKELY-MSG,GL-PRSI,STR?694
RTRUE
?CND1: ICALL2 RT-YOURE-NOT-A-MSG,STR?695
RTRUE
.FUNCT V-SELL-SWP
ICALL RT-PERFORM,V?SELL,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-SHAKE,X
FSET? GL-PRSO,FL-PERSON \?CCL3
ICALL RT-PERFORM,V?ALARM,GL-PRSO
RTRUE
?CCL3: FSET? GL-PRSO,FL-TAKEABLE /?CCL5
FSET? GL-PRSO,FL-TRYTAKE /?CCL5
ICALL2 RT-NO-POINT-MSG,STR?696
RTRUE
?CCL5: PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
.FUNCT V-SHINE-AT
PRINTI "You cannot illuminate anything with "
ICALL2 RT-A-PRINT,GL-PRSO
PRINTR "."
.FUNCT V-SHINE-AT-SWP
ICALL RT-PERFORM,V?SHINE-AT,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-SHOOT,NUM
EQUAL? GL-PRSO,TH-GUN \?CCL3
PRINTR "BANG!! The bullet barely misses your foot."
?CCL3: FSET? GL-PRSO,FL-PERSON /?CTR4
EQUAL? GL-PRSO,TH-GENERIC-BODY \?CCL5
?CTR4: FSET? GL-PRSO,FL-NEEDS-IDENTITY \?CND8
PUTP GL-PRSO,P?OBJ-NOUN,0
PUTP GL-PRSO,P?OBJ-ADJ,0
?CND8: PRINTI "You shoot "
EQUAL? GL-PRSO,TH-GENERIC-BODY /?CND10
PRINTI "and kill "
?CND10: ICALL2 RT-THEO-PRINT,GL-PRSO
PRINTI ". Inspector Lestrade "
IN? CH-PLAYER,TH-BOAT \?CCL14
PRINTI "pulls up alongside you in a Scotland Yard launch"
JUMP ?CND12
?CCL14: PRINTI "appears out of nowhere"
?CND12: PRINTI " and says,"
EQUAL? GL-PRSO,CH-HOLMES \?CCL17
PRINT K-PLUG-HIM-MYSELF-MSG
JUMP ?CND15
?CCL17: PRINTI " ""You may be on our side, doctor, but killing people is still against the law. I'm afraid I'm going to have to arrest you."""
?CND15: CRLF
CRLF
PRINT K-LESTRADE-ARRESTS-MSG
CRLF
CRLF
CALL1 RT-QSR
RSTACK
?CCL5: EQUAL? GL-PRSO,TH-SAPPHIRE,TH-EMERALD,TH-OPAL /?CTR18
EQUAL? GL-PRSO,TH-RUBY,TH-TOPAZ,TH-GARNET \?CCL19
?CTR18: REMOVE GL-PRSO
PRINTI "You shoot "
ICALL1 RT-THEO-PRINT
PRINTR ", which shatters and disappears."
?CCL19: EQUAL? GL-PRSO,TH-CROWN-JEWELS \?CCL23
PRINTI "The jewels shatter and Holmes throws up his arms in exasperation. ""That's it, Watson. You have pushed me to the limit."" He leaps for your throat, and the ensuing struggle attracts the attention of the local constabulary, with what should by now be predictable results."
CRLF
CRLF
CALL1 RT-QSR
RSTACK
?CCL23: EQUAL? GL-PRSO,TH-SHAFT /?CTR24
EQUAL? GL-PRSO,PSEUDO-OBJECT \?CCL25
GETP PSEUDO-OBJECT,P?ACTION
EQUAL? STACK,RT-AC-TH-FIREPLACE \?CCL25
?CTR24: PRINTI "The bullet disappears into "
ICALL1 RT-THEO-PRINT
PRINTR "."
?CCL25: EQUAL? GL-PRSO,TH-INTNUM,TH-INTDIR /?CTR30
IN? GL-PRSO,ROOMS \?CCL31
?CTR30: CALL1 RT-IMPOSSIBLE-MSG
RSTACK
?CCL31: FSET? GL-PRSO,FL-PLURAL \?CCL35
PRINTR "There are so many of them, you don't know where to begin."
?CCL35: FSET? GL-PRSO,FL-MONEY \?CCL37
PRINTI "You take aim at "
ICALL1 RT-THEO-PRINT
PRINTR ", but your frugal nature prevents you from going through with it."
?CCL37: GET GL-HOLES,0 >NUM
MUL NUM,2
ADD STACK,1
PUT GL-HOLES,STACK,GL-PRSO
LOC GL-PRSO
EQUAL? STACK,LOCAL-GLOBALS,ROOMS,GLOBAL-OBJECTS \?CND38
MUL NUM,2
ADD STACK,2
PUT GL-HOLES,STACK,GL-PLACE-CUR
?CND38: ADD NUM,1
PUT GL-HOLES,0,STACK
PRINTI "The bullet puts a neat hole in "
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT V-SHOOT-SWP
ICALL RT-PERFORM,V?SHOOT,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-SHOW
FSET? GL-PRSI,FL-ASLEEP \?CCL3
ICALL1 RT-CTHEI-PRINT
ICALL2 RT-IS-ARE-MSG,GL-PRSI
PRINTI "in no condition to appreciate "
ICALL1 RT-THEO-PRINT
PRINTR "."
?CCL3: EQUAL? GL-PRSI,CH-ME,CH-PLAYER \?CCL5
ICALL RT-PERFORM,V?EXAMINE,GL-PRSO
RTRUE
?CCL5: ICALL1 RT-CTHEI-PRINT
PRINTI " glance"
ICALL2 RT-S-NOS-MSG,GL-PRSI
PRINTI " at "
ICALL1 RT-THEO-PRINT
PRINTR ", but makes no comment."
.FUNCT V-SHOW-SWP
ICALL RT-PERFORM,V?SHOW,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-SIT
CALL RT-IDENTIFY-FLOOR?,W?GROUND,GL-PRSO
ZERO? STACK \?CTR2
CALL RT-IDENTIFY-FLOOR?,W?FLOOR,GL-PRSO
ZERO? STACK \?CTR2
EQUAL? GL-PRSO,ROOMS /?CTR2
FSET? GL-PRSO,FL-SURFACE \?CCL3
?CTR2: PRINT K-NO-RESTING-MSG
CRLF
RTRUE
?CCL3: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-SMELL,OBJ
CALL RT-IDENTIFY-FLOOR?,W?SKY,GL-PRSO
ZERO? STACK \?CTR2
EQUAL? GL-PRSO,ROOMS \?CCL3
?CTR2: PRINTI "You do not smell anything "
CALL2 RT-PICK-NEXT,GL-BORING-TXT
PRINT STACK
PRINTR "."
?CCL3: EQUAL? GL-PRSO,TH-BUNG,TH-MALMSEY,TH-MALMSEY-POOL /?CTR6
EQUAL? GL-PRSO,TH-BUTT-OF-MALMSEY,TH-GARNET \?CCL7
?CTR6: PRINT K-EAU-DE-MSG
CRLF
RTRUE
?CCL7: PRINTI "It smells just like "
ICALL2 RT-A-PRINT,GL-PRSO
PRINTR "."
.FUNCT V-SMOKE
ICALL1 RT-CYOU-MSG
PRINTI "cannot smoke "
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT V-SPIN
EQUAL? GL-PRSO,ROOMS \?CCL3
PRINT K-DIZZY-MSG
CRLF
RTRUE
?CCL3: PRINTI "You cannot spin "
ICALL1 RT-SAY-HIM-HER-THEM-IT-MSG
PRINTR "."
.FUNCT V-STAND
PRINTR "You are already standing."
.FUNCT V-STAND-ON
PRINTI "Standing on "
ICALL1 RT-THEO-PRINT
PRINTI " would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
.FUNCT V-STAND-UNDER
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-STEAL
PRINT K-THEFT-MSG
CRLF
RTRUE
.FUNCT V-STRIKE
ICALL1 V-HIT
RTRUE
.FUNCT V-SWIM
EQUAL? GL-PRSO,ROOMS \?CCL3
EQUAL? GL-PLACE-CUR,RM-THE-EMBANKMENT,RM-SWAN-LANE,RM-LONDON-BRIDGE \?CCL6
PRINTR "Yuck! Have you looked at that water?"
?CCL6: PRINT K-NO-SWIM-MSG
CRLF
RTRUE
?CCL3: EQUAL? GL-PRSO,TH-INTDIR \?CCL8
ZERO? GL-P-DIRECTION /?CCL8
EQUAL? GL-WINNER,CH-PLAYER \?CCL8
PRINTI "You cannot "
PRINTB GL-P-PRSA-WORD
PRINTR " that way from here."
?CCL8: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-SWING
ZERO? GL-PRSI \?CCL3
PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
?CCL3: ICALL RT-PERFORM,V?KILL,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-TAKE,L
LOC GL-PRSO
EQUAL? GLOBAL-OBJECTS,STACK \?CCL3
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL3: ZERO? GL-PRSI /?CCL5
LOC GL-PRSI
EQUAL? GLOBAL-OBJECTS,STACK \?CND1
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL5: FSET? GL-PRSO,FL-WORN \?CND1
ICALL RT-PERFORM,V?TAKE-OFF,GL-PRSO
RTRUE
?CND1: CALL1 RT-ITAKE >L
ZERO? L /TRUE
ZERO? GL-P-MULT? /?CCL13
PRINTI "Taken."
CRLF
JUMP ?CND11
?CCL13: FSET? L,FL-CONTAINER /?CTR14
FSET? L,FL-SURFACE /?CTR14
FSET? L,FL-PERSON /?CTR14
FSET? L,FL-ALIVE \?CCL15
?CTR14: ICALL RT-CYOU-MSG,STR?697,STR?698
ICALL1 RT-THEO-PRINT
ICALL2 RT-OUT-OFF-MSG,L
ICALL2 RT-THEO-PRINT,L
PRINTC 46
CRLF
JUMP ?CND11
?CCL15: ICALL RT-CYOU-MSG,STR?697,STR?698
ICALL1 RT-THEO-PRINT
PRINTC 46
CRLF
?CND11: GETP GL-PRSO,P?VALUE >L
ZERO? L /TRUE
PUTP GL-PRSO,P?VALUE,0
ICALL1 RT-TOPAZ-MSG
ICALL2 RT-UPDATE-SCORE,L
ICALL1 RT-UPDATE-STATUS-LINE
RTRUE
.FUNCT V-TAKE-OFF
EQUAL? GL-PRSO,TH-CLOTHES,TH-FEET \?CCL3
PRINT K-INAPPROPRIATE-MSG
CRLF
RTRUE
?CCL3: FSET? GL-PRSO,FL-TAKEABLE \?CCL5
IN? GL-PRSO,GL-WINNER \?CCL8
FSET? GL-PRSO,FL-WORN \?CCL8
FCLEAR GL-PRSO,FL-WORN
PRINTI "You take off "
ICALL1 RT-THEO-PRINT
PRINTR "."
?CCL8: ICALL RT-PERFORM,V?TAKE,GL-PRSO
RTRUE
?CCL5: FSET? GL-PRSO,FL-VEHICLE \?CCL12
ICALL RT-PERFORM,V?EXIT,GL-PRSO
RTRUE
?CCL12: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-TAKE-WITH
PRINT K-HOW-TO-MSG
CRLF
RTRUE
.FUNCT V-TASTE
ICALL RT-PERFORM,V?EAT,GL-PRSO
RTRUE
.FUNCT V-TELL,N,M,WRD
CALL1 RT-FOOLISH-TO-TALK-MSG
ZERO? STACK /?CCL3
RETURN 2
?CCL3: EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL5
EQUAL? GL-WINNER,CH-PLAYER \?CCL8
ICALL1 RT-TALK-TO-SELF-MSG
RTRUE
?CCL8: ICALL1 RT-NO-RESPONSE-MSG
RTRUE
?CCL5: SET 'GL-P-QCONTEXT-TH,GL-PRSO
LOC GL-PRSO >GL-P-QCONTEXT-RM
ZERO? GL-P-CONT /?CCL11
SET 'GL-WINNER,GL-PRSO
ICALL2 RT-THIS-IS-IT,GL-PRSO
SET 'GL-CLOCK-WAIT,TRUE-VALUE
SET 'N,GL-P-CONT
SET 'M,GL-P-LEN
?PRG12: GET GL-P-P-LEX,N >WRD
EQUAL? WRD,W?QUOTE \?CCL16
PUT GL-P-P-LEX,N,W?THE
JUMP ?CND14
?CCL16: EQUAL? WRD,W?THEN,W?PERIOD /TRUE
?CND14: ADD N,K-P-LEXELEN >N
DLESS? 'M,1 \?PRG12
RTRUE
?CCL11: ICALL1 RT-NO-RESPONSE-MSG
RTRUE
.FUNCT V-TELL-ABOUT
CALL1 RT-WHO-WHAT-WHERE-MSG
ZERO? STACK /TRUE
RETURN 2
.FUNCT V-TELL-WHO
PRINTR "You must use TELL ME ABOUT SOMETHING or TELL CHARACTER ABOUT SOMETHING."
.FUNCT V-THANK
CALL1 RT-ANYONE-HERE?
ZERO? STACK \?CCL3
PRINTR "[There's nobody here to thank.]"
?CCL3: EQUAL? GL-WINNER,CH-PLAYER \?CCL5
EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL8
PRINTI "Patting yourself on the back"
PRINT K-WONT-HELP-MSG
CRLF
RTRUE
?CCL8: FSET? GL-PRSO,FL-ASLEEP \?CCL10
ICALL1 RT-CTHEO-PRINT
ICALL2 RT-ISNT-ARENT-MSG,GL-PRSO
PRINTR "in any condition to accept your thanks."
?CCL10: PRINTR """You're welcome."""
?CCL5: ICALL1 RT-FOOLISH-TO-TALK-MSG
RTRUE
.FUNCT V-THROUGH
EQUAL? GL-PRSO,ROOMS \?CCL3
ICALL2 RT-DO-WALK,P?IN
RTRUE
?CCL3: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-THROW
EQUAL? GL-P-PRSA-WORD,W?PUT \?CCL3
EQUAL? GL-PRSO,TH-HANDS,TH-FEET \?CCL3
FSET? GL-PRSI,FL-DOOR \?CCL8
FSET? GL-PRSI,FL-OPENED \?CCL11
ICALL RT-CYOU-MSG,STR?685,STR?686
ICALL1 RT-THEO-PRINT
PRINTI " through "
ICALL1 RT-THEI-PRINT
PRINTR ", but can't reach anything on the other side."
?CCL11: ICALL1 RT-CTHEI-PRINT
ICALL2 RT-IS-ARE-MSG,GL-PRSI
PRINTR "closed."
?CCL8: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL3: IN? GL-PRSO,GLOBAL-OBJECTS \?CCL13
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL13: CALL1 RT-IDROP-MSG
ZERO? STACK /TRUE
FSET? CH-HOLMES,FL-ASLEEP \?CND15
EQUAL? GL-PRSI,CH-HOLMES,TH-PHIAL,TH-SYRINGE /?CCL16
EQUAL? GL-PRSI,TH-MOROCCO-CASE \?CND15
?CCL16: EQUAL? GL-PRSO,TH-KNIFE \?CCL23
EQUAL? GL-PRSI,CH-HOLMES \?CCL26
PRINTI "Holmes absentmindedly dodges the knife"
JUMP ?CND24
?CCL26: EQUAL? GL-PRSI,TH-PHIAL,TH-SYRINGE,TH-MOROCCO-CASE \?CND24
PRINTI "Holmes casually moves "
ICALL1 RT-THEI-PRINT
PRINTI " out of harm's way"
?CND24: PRINTR " and continues staring at the phial."
?CCL23: PRINTI "Holmes absentmindedly catches "
ICALL1 RT-THEO-PRINT
PRINTR " with his free hand and bops you over the head with it before letting it fall to the ground. He then continues staring at the phial."
?CND15: ICALL1 RT-CTHEO-PRINT
PRINTI " miss"
ICALL2 RT-ES-NOES-MSG,GL-PRSO
PRINTC 32
ICALL1 RT-THEI-PRINT
PRINTI " by a mile and land"
ICALL2 RT-S-NOS-MSG,GL-PRSI
EQUAL? GL-PLACE-CUR,RM-THAMES-ONE,RM-THAMES-TWO,RM-THAMES-THREE /?CTR29
EQUAL? GL-PLACE-CUR,RM-THAMES-FOUR,RM-THAMES-FIVE \?CCL30
?CTR29: PRINTI " in the water."
MOVE GL-PRSO,LG-WATER
EQUAL? GL-PRSO,CH-TRAINED-PIGEON \?CND33
ICALL1 RT-KILL-PIGEON
?CND33: PRINTR " Plop."
?CCL30: PRINTI " on the "
FSET? GL-PLACE-CUR,FL-INDOORS \?CCL37
PRINTI "floor"
JUMP ?CND35
?CCL37: PRINTI "ground"
?CND35: PRINTR " nearby."
.FUNCT V-THROW-SWP
ICALL RT-PERFORM,V?THROW,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-THROW-OVER
PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
.FUNCT V-TIE
ICALL1 RT-CYOU-MSG
PRINTI "cannot possibly tie "
ICALL1 RT-THEO-PRINT
ZERO? GL-PRSI /?CND1
PRINTI " to "
ICALL1 RT-THEI-PRINT
?CND1: PRINTR "."
.FUNCT V-TIE-UP
ICALL1 RT-CYOU-MSG
PRINTI "cannot tie up "
EQUAL? GL-PRSI,FALSE-VALUE,ROOMS \?CCL3
PRINTI "that"
JUMP ?CND1
?CCL3: PRINTI "anything with "
ICALL1 RT-THEI-PRINT
?CND1: PRINTR "."
.FUNCT V-TIP
FSET? GL-PRSO,FL-PERSON \?CCL3
ICALL RT-CYOU-MSG,STR?699,STR?700
PRINTI "confidentially, ""Buy low, sell high."""
CRLF
CRLF
ICALL1 RT-CTHEO-PRINT
ICALL2 RT-DONT-DOESNT-MSG,GL-PRSO
PRINTR "look impressed."
?CCL3: ICALL1 RT-CYOU-MSG
PRINTR "can't do that."
.FUNCT V-TOUCH
ICALL2 RT-NO-POINT-MSG,STR?701
RTRUE
.FUNCT V-TOUCH-TO
EQUAL? GL-PRSO,TH-HANDS \?CND1
ICALL RT-PERFORM,V?TOUCH,GL-PRSI
RTRUE
?CND1: ICALL RT-CYOU-MSG,STR?685,STR?686
ICALL1 RT-THEO-PRINT
PRINTI " next to "
ICALL1 RT-THEI-PRINT
PRINTI ", but nothing "
CALL2 RT-PICK-NEXT,GL-BORING-TXT
PRINT STACK
PRINTR " happens."
.FUNCT V-TOUCH-TO-SWP
ICALL RT-PERFORM,V?TOUCH-TO,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-TRANSLATE
PRINT K-HOW-TO-MSG
CRLF
RTRUE
.FUNCT V-TUNE-TO
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-TURN
FSET? GL-PRSO,FL-TAKEABLE /?CCL3
FSET? GL-PRSO,FL-TRYTAKE /?CCL3
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL3: ICALL2 RT-NO-POINT-MSG,STR?702
RTRUE
.FUNCT V-TURN-DOWN
ICALL1 V-REFUSE
RTRUE
.FUNCT V-TURN-TO
CALL2 RT-VISIBLE?,GL-PRSO
ZERO? STACK /?CCL3
ICALL RT-PERFORM,V?WATCH,GL-PRSO
RTRUE
?CCL3: ICALL RT-CYOU-MSG,STR?653,STR?654
PRINTI "see "
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT V-TURN-UP
ICALL1 V-LOOK-UNDER
RTRUE
.FUNCT V-UNDRESS
EQUAL? GL-PRSO,ROOMS /?CTR2
FSET? GL-PRSO,FL-PERSON \?CCL3
?CTR2: PRINT K-INAPPROPRIATE-MSG
CRLF
RTRUE
?CCL3: ICALL1 RT-CYOU-MSG
PRINTI "cannot undress "
ICALL2 RT-A-PRINT,GL-PRSO
PRINTR "."
.FUNCT V-UNFOLD
ICALL1 RT-CTHEO-PRINT
ICALL1 RT-ISNT-ARENT-MSG
PRINTR "folded up."
.FUNCT V-UNLOCK
FSET? GL-PRSO,FL-OPENABLE /?CTR2
FSET? GL-PRSO,FL-CONTAINER \?CCL3
?CTR2: FSET? GL-PRSO,FL-OPENED /?CTR7
FSET? GL-PRSO,FL-LOCKED /?CCL8
?CTR7: ICALL1 RT-CTHEO-PRINT
ICALL1 RT-ISNT-ARENT-MSG
PRINTR "locked."
?CCL8: ICALL RT-THING-WONT-LOCK-MSG,GL-PRSI,GL-PRSO,TRUE-VALUE
RTRUE
?CCL3: ICALL2 RT-CANT-LOCK-MSG,TRUE-VALUE
RTRUE
.FUNCT V-UNPLUG
ICALL1 RT-CTHEO-PRINT
ICALL1 RT-ISNT-ARENT-MSG
PRINTI "connected to "
ZERO? GL-PRSI /?CCL3
ICALL1 RT-THEI-PRINT
JUMP ?CND1
?CCL3: PRINTI "anything"
?CND1: PRINTR "."
.FUNCT V-UNSCREW-FROM
EQUAL? GL-PRSO,GL-PRSI \?CCL3
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
?CCL3: IN? GL-PRSO,GL-PRSI /?CCL5
FSET? GL-PRSI,FL-ALIVE \?CND6
ICALL1 RT-CTHEI-PRINT
ICALL2 RT-DONT-DOESNT-MSG,GL-PRSI
PRINTI "have "
ICALL1 RT-THEO-PRINT
PRINTR "."
?CND6: ICALL1 RT-CTHEO-PRINT
ICALL1 RT-ISNT-ARENT-MSG
ICALL RT-IN-ON-MSG,GL-PRSI,FALSE-VALUE
ICALL1 RT-THEI-PRINT
PRINTR "."
?CCL5: ICALL1 RT-CYOU-MSG
PRINTI "cannot unscrew "
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT V-UNTIE
ICALL1 RT-CYOU-MSG
PRINTI "cannot untie "
ICALL2 RT-A-PRINT,GL-PRSO
PRINTR "."
.FUNCT V-USE
FSET? GL-PRSO,FL-PERSON \?CCL3
ICALL1 RT-CTHEO-PRINT
PRINTR " might resent that."
?CCL3: PRINTI "[You must specify what you want to do with "
ICALL1 RT-THEO-PRINT
PRINTR ".]"
.FUNCT V-USE-ON
PRINTI "Using "
ICALL1 RT-THEO-PRINT
PRINTI " on "
ICALL1 RT-THEI-PRINT
PRINTI " would"
ICALL1 RT-WASTE-OF-TIME-MSG
RTRUE
.FUNCT V-WAIT,H,M,S,N
EQUAL? GL-P-NUMBER,-1 \?CCL3
SET 'N,1
JUMP ?CND1
?CCL3: SET 'N,GL-P-NUMBER
?CND1: EQUAL? GL-PRSO,TH-TIME \?CCL6
GETP GL-PRSO,P?OBJ-NOUN
EQUAL? STACK,W?MINUTE,W?MINUTES \?CCL9
SET 'H,0
SET 'M,N
JUMP ?CND4
?CCL9: SET 'H,N
SET 'M,0
JUMP ?CND4
?CCL6: EQUAL? GL-PRSO,TH-INTNUM \?CCL11
SET 'H,0
SET 'M,N
PRINTC 91
PRINTN M
PRINTI " minute"
EQUAL? M,1 /?CND12
PRINTC 115
?CND12: PRINTC 93
CRLF
CRLF
JUMP ?CND4
?CCL11: EQUAL? GL-PRSO,ROOMS /?CCL15
ICALL1 RT-CYOU-MSG
PRINTR "can't wait for that."
?CCL15: SET 'H,0
SET 'M,10
?CND4: SET 'S,0
PRINTI "Time passes..."
CRLF
ICALL RT-CLOCK-JMP,H,M,S
ICALL2 RT-TIME-OF-DAY-MSG,TRUE-VALUE
RTRUE
.FUNCT V-WALK,PT,PTS,STR,OBJ,RM
GETPT GL-PLACE-CUR,GL-PRSO >PT
ZERO? GL-P-WALK-DIR \?CCL3
PRINTR "[You must specify a direction.]"
?CCL3: ZERO? PT /?CCL5
PTSIZE PT >PTS
EQUAL? PTS,K-UEXIT \?CCL8
LOC GL-WINNER
FSET? STACK,FL-VEHICLE \?CND9
LOC GL-WINNER
ICALL RT-PERFORM,V?EXIT,STACK
LOC GL-WINNER
FSET? STACK,FL-VEHICLE \?CND9
RETURN 2
?CND9: GETB PT,K-REXIT >RM
ICALL2 RT-GOTO,RM
RTRUE
?CCL8: EQUAL? PTS,K-NEXIT \?CCL14
GET PT,K-NEXITSTR >STR
PRINT STR
CRLF
RETURN 2
?CCL14: EQUAL? PTS,K-PEXIT \?CCL16
GET PT,K-PEXITRTN
CALL STACK >RM
ZERO? RM /?CCL19
ICALL2 RT-GOTO,RM
RTRUE
?CCL19: RETURN 2
?CCL16: EQUAL? PTS,K-CEXIT \?CCL21
GETB PT,K-CEXITFLG
VALUE STACK
ZERO? STACK /?CND22
GETB PT,K-REXIT >RM
ICALL2 RT-GOTO,RM
RTRUE
?CND22: ICALL1 RT-CYOU-MSG
PRINTI "cannot go that way."
CRLF
RETURN 2
?CCL21: EQUAL? PTS,K-DEXIT \FALSE
LOC GL-WINNER
FSET? STACK,FL-VEHICLE \?CND26
LOC GL-WINNER
ICALL RT-PERFORM,V?EXIT,STACK
LOC GL-WINNER
FSET? STACK,FL-VEHICLE \?CND26
RETURN 2
?CND26: ADD 1,PT
GET STACK,0 >OBJ
FSET? OBJ,FL-OPENED \?CCL32
GETB PT,K-REXIT >RM
ICALL2 RT-GOTO,RM
RTRUE
?CCL32: PRINTI "The door is not open."
CRLF
RETURN 2
?CCL5: EQUAL? GL-P-WALK-DIR,P?OUT \?CCL34
FSET? GL-PLACE-CUR,FL-INDOORS /?CCL34
ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTI "already outside."
CRLF
RETURN 2
?CCL34: EQUAL? GL-P-WALK-DIR,P?IN \?CCL38
FSET? GL-PLACE-CUR,FL-INDOORS \?CCL38
ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTI "already inside."
CRLF
RETURN 2
?CCL38: PRINTI "You cannot go that way."
CRLF
RETURN 2
.FUNCT V-WALK-AROUND
PRINTI "[Which way do you want to go?]"
CRLF
RETURN 2
.FUNCT V-WALK-TO
EQUAL? GL-PRSO,TH-INTDIR \?CCL3
ICALL2 RT-DO-WALK,GL-P-DIRECTION
RTRUE
?CCL3: EQUAL? GL-PRSO,TH-RIGHT,TH-LEFT /?CTR4
IN? GL-PRSO,ROOMS \?CCL5
?CTR4: PRINT K-BE-MORE-SPECIFIC-MSG
CRLF
RTRUE
?CCL5: ICALL1 V-FOLLOW
RTRUE
.FUNCT V-WATCH
FSET? GL-PRSO,FL-PERSON \?CCL3
ICALL1 RT-CTHEO-PRINT
ICALL1 RT-ISNT-ARENT-MSG
PRINTI "doing anything "
CALL2 RT-PICK-NEXT,GL-BORING-TXT
PRINT STACK
JUMP ?CND1
?CCL3: PRINTI "Nothing "
CALL2 RT-PICK-NEXT,GL-BORING-TXT
PRINT STACK
PRINTI " is happening"
?CND1: PRINTR "."
.FUNCT V-WAVE-AT
CALL1 RT-WHO-WHAT-WHERE-MSG
ZERO? STACK /TRUE
RETURN 2
.FUNCT V-WEAR
IN? GL-PRSO,GL-WINNER \?PRD5
FSET? GL-PRSO,FL-WORN /?CTR2
?PRD5: EQUAL? GL-PRSO,TH-CLOTHES \?CCL3
?CTR2: ICALL RT-CYOU-MSG,STR?228,STR?229
PRINTI "already wearing "
ICALL1 RT-THEO-PRINT
PRINTR "."
?CCL3: FSET? GL-PRSO,FL-CLOTHING /?CCL9
ICALL1 RT-CYOU-MSG
PRINTI "cannot wear "
ICALL1 RT-THEO-PRINT
PRINTR "."
?CCL9: CALL2 RT-DONT-HAVE-MSG,GL-PRSO
ZERO? STACK \TRUE
FSET GL-PRSO,FL-WORN
ICALL RT-CYOU-MSG,STR?685,STR?686
PRINTI "on "
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT V-WEDGE
ICALL RT-PERFORM,V?LOOSEN,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-WEIGH
PRINTR "You haven't got any scales to weigh things with."
.FUNCT V-WHAT
CALL1 RT-WHO-WHAT-WHERE-MSG
ZERO? STACK /TRUE
RETURN 2
.FUNCT V-WHERE
CALL1 RT-WHO-WHAT-WHERE-MSG
ZERO? STACK /TRUE
RETURN 2
.FUNCT V-WHO
CALL1 RT-WHO-WHAT-WHERE-MSG
ZERO? STACK /TRUE
RETURN 2
.FUNCT V-WIND
ICALL1 RT-CYOU-MSG
PRINTI "cannot wind "
ICALL2 RT-A-PRINT,GL-PRSO
PRINTR "."
.FUNCT V-WRAP-AROUND
ICALL1 RT-CYOU-MSG
PRINTI "could not possibly "
PRINTB GL-P-PRSA-WORD
PRINTC 32
ICALL1 RT-THEO-PRINT
PRINTI " around "
ICALL1 RT-THEI-PRINT
PRINTR "."
.FUNCT V-WRAP-AROUND-SWP
ICALL RT-PERFORM,V?WRAP-AROUND,GL-PRSI,GL-PRSO
RTRUE
.FUNCT V-YELL
EQUAL? GL-PRSO,ROOMS \?CCL3
EQUAL? GL-P-PRSA-WORD,W?CRY \?CCL6
PRINTR "Awww. Don't cry. You'll figure it out eventually."
?CCL6: PRINTR "The idea of the primal scream as a technique to relieve anxiety will not be discovered for eighty years. But if it makes you feel better, go right ahead."
?CCL3: ICALL RT-NOT-LIKELY-MSG,GL-PRSO,STR?230
RTRUE
.FUNCT RT-CANT-SEE-MUCH-MSG
ICALL1 RT-CYOU-MSG
PRINTR "cannot see much from here."
.FUNCT RT-NO-MONEY-MSG
ICALL RT-CYOU-MSG,STR?653,STR?654
PRINTR "have any money."
.FUNCT RT-IN-VEHICLE-MSG
IN? CH-PLAYER,TH-HANSOM-CAB /?CTR2
IN? CH-PLAYER,TH-GROWLER-CAB \?CCL3
?CTR2: PRINTI " in a cab "
RTRUE
?CCL3: IN? CH-PLAYER,TH-BOAT \?CCL7
PRINTI " in a boat "
RTRUE
?CCL7: PRINTI " standing "
RTRUE
.FUNCT RT-DRIVE-WALK-MSG?
IN? CH-PLAYER,TH-HANSOM-CAB /?CTR2
IN? CH-PLAYER,TH-GROWLER-CAB \?CCL3
?CTR2: PRINTI " drive "
RTRUE
?CCL3: PRINTI " walk "
RTRUE
.FUNCT RT-ALREADY-IN-ROOM-MSG
PRINTI "You are already in "
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT RT-NOT-IN-ROOM-MSG
PRINTI "You are not in "
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT RT-OBJECT-IS-LOCKED-MSG
ICALL1 RT-CYOU-MSG
PRINTR "cannot do that. It is locked."
.FUNCT RT-NOTHING-INTERESTING-MSG
ICALL RT-CYOU-MSG,STR?655,STR?656
PRINTI "not see anything "
CALL2 RT-PICK-NEXT,GL-BORING-TXT
PRINT STACK
RTRUE
.FUNCT RT-WASTE-OF-TIME-MSG
CALL2 RT-PICK-NEXT,GL-NO-POINT-TXT
PRINT STACK
PRINTR "."
.FUNCT RT-FOG-MSG
CALL2 RT-PICK-NEXT,GL-FOG-TXT
PRINT STACK
PRINTR "."
.FUNCT RT-ITS-RIGHT-HERE-MSG
ICALL1 RT-SAY-ITS-MSG
PRINTR "right here in front of you."
.FUNCT RT-WHO-WHAT-WHERE-MSG
CALL1 RT-FOOLISH-TO-TALK-MSG
ZERO? STACK \TRUE
EQUAL? GL-PRSA,V?WHO,V?WHAT,V?WHERE /?CCL6
PUSH 0
JUMP ?CND4
?CCL6: PUSH GL-WINNER
?CND4: ICALL2 RT-NO-RESPONSE-MSG,STACK
RFALSE
.FUNCT RT-HI-BYE-MSG
CALL1 RT-FOOLISH-TO-TALK-MSG
ZERO? STACK /?CCL3
RETURN 2
?CCL3: EQUAL? GL-PRSO,ROOMS \?CCL5
ICALL1 RT-TALK-TO-SELF-MSG
RTRUE
?CCL5: ICALL1 RT-NO-RESPONSE-MSG
RTRUE
.FUNCT RT-NO-RESPONSE-MSG,WHO
ZERO? WHO \?CND1
SET 'WHO,GL-PRSO
?CND1: ICALL2 RT-CTHEO-PRINT,WHO
ICALL2 RT-DONT-DOESNT-MSG,WHO
PRINTR "respond."
.FUNCT RT-TAKE-OFF-PRSO-FIRST-MSG
PRINTI "[taking off "
ICALL1 RT-THEO-PRINT
PRINTI " first]"
CRLF
FCLEAR GL-PRSO,FL-WORN
EQUAL? GL-PRSO,TH-WATSONS-HAT \?CCL3
FSET TH-WATSONS-HAT,FL-OPENED
RTRUE
?CCL3: EQUAL? GL-PRSO,TH-SUIT-OF-ARMOUR \TRUE
MOVE TH-SUIT-OF-ARMOUR,GL-PLACE-CUR
RTRUE
.FUNCT RT-SAY-DROPPED-MSG
ZERO? GL-P-MULT? /?CCL3
PRINTR "Dropped."
?CCL3: ICALL RT-CYOU-MSG,STR?703,STR?704
ICALL1 RT-THEO-PRINT
PRINTR "."
.FUNCT RT-FOOLISH-TO-TALK-MSG
EQUAL? GL-WINNER,CH-ME,CH-PLAYER /?CCL3
ICALL2 RT-CTHEO-PRINT,GL-WINNER
ICALL2 RT-DONT-DOESNT-MSG,GL-WINNER
PRINTR "respond."
?CCL3: EQUAL? GL-PRSO,FALSE-VALUE,ROOMS /FALSE
FSET? GL-PRSO,FL-ALIVE /?CCL7
ICALL RT-NOT-LIKELY-MSG,GL-PRSO,STR?230
ICALL1 RT-P-CLEAR
RTRUE
?CCL7: EQUAL? GL-PRSO,CH-ME,CH-PLAYER,GL-PRSI /?CTR8
EQUAL? GL-PRSO,GL-WINNER \?CCL9
?CTR8: PRINTI "That would"
ICALL1 RT-WASTE-OF-TIME-MSG
ICALL1 RT-P-CLEAR
RTRUE
?CCL9: ICALL2 RT-THIS-IS-IT,GL-PRSO
RFALSE
.FUNCT RT-YOU-MSG,WRD1,WRD2,PRONOUN?
EQUAL? GL-WINNER,CH-PLAYER \?CCL3
PRINTI " you "
ZERO? WRD1 /FALSE
PRINT WRD1
PRINTC 32
RTRUE
?CCL3: PRINTC 32
ZERO? PRONOUN? /?CCL9
FSET? GL-WINNER,FL-PLURAL \?CCL12
FSET? GL-WINNER,FL-COLLECTIVE /?CCL12
PRINTI "they"
JUMP ?CND7
?CCL12: FSET? GL-WINNER,FL-PERSON \?CCL16
FSET? GL-WINNER,FL-FEMALE \?CCL19
PRINTI "she"
JUMP ?CND7
?CCL19: PRINTI "he"
JUMP ?CND7
?CCL16: PRINTI "it"
JUMP ?CND7
?CCL9: ICALL2 RT-THEO-PRINT,GL-WINNER
?CND7: PRINTC 32
ZERO? WRD2 /FALSE
PRINT WRD2
PRINTC 32
RTRUE
.FUNCT RT-CYOU-MSG,WRD1,WRD2,PRONOUN?
EQUAL? GL-WINNER,CH-PLAYER \?CCL3
PRINTI "You "
ZERO? WRD1 /FALSE
PRINT WRD1
PRINTC 32
RTRUE
?CCL3: ZERO? PRONOUN? /?CCL9
FSET? GL-WINNER,FL-PLURAL \?CCL12
FSET? GL-WINNER,FL-COLLECTIVE /?CCL12
PRINTI "They"
JUMP ?CND7
?CCL12: FSET? GL-WINNER,FL-PERSON \?CCL16
FSET? GL-WINNER,FL-FEMALE \?CCL19
PRINTI "She"
JUMP ?CND7
?CCL19: PRINTI "He"
JUMP ?CND7
?CCL16: PRINTI "It"
JUMP ?CND7
?CCL9: ICALL2 RT-CTHEO-PRINT,GL-WINNER
?CND7: PRINTC 32
ZERO? WRD2 /FALSE
PRINT WRD2
PRINTC 32
RTRUE
.FUNCT RT-ITS-ALREADY-MSG,STR
PRINTI "It is already "
PRINT STR
PRINTR "."
.FUNCT RT-YOURE-NOT-A-MSG,STR
PRINTI "You're a general practitioner, not a "
PRINT STR
PRINTR "."
.FUNCT RT-NO-POINT-MSG,STR
PRINT STR
PRINTC 32
ICALL1 RT-THEO-PRINT
PRINTI " would"
CALL2 RT-PICK-NEXT,GL-NO-POINT-TXT
PRINT STACK
PRINTR "."
.FUNCT RT-IS-ARE-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: EQUAL? THING,CH-ME,CH-PLAYER /?CTR4
FSET? THING,FL-PLURAL \?CCL5
FSET? THING,FL-COLLECTIVE /?CCL5
?CTR4: PRINTI " are "
RTRUE
?CCL5: PRINTI " is "
RTRUE
.FUNCT RT-ISNT-ARENT-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: EQUAL? THING,CH-ME,CH-PLAYER /?CTR4
FSET? THING,FL-PLURAL \?CCL5
FSET? THING,FL-COLLECTIVE /?CCL5
?CTR4: PRINTI " are not "
RTRUE
?CCL5: PRINTI " is not "
RTRUE
.FUNCT RT-S-NOS-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: EQUAL? THING,CH-ME,CH-PLAYER /TRUE
FSET? THING,FL-PLURAL \?CCL4
FSET? THING,FL-COLLECTIVE \TRUE
?CCL4: PRINTC 115
RTRUE
.FUNCT RT-ES-NOES-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: EQUAL? THING,CH-ME,CH-PLAYER /TRUE
FSET? THING,FL-PLURAL \?CCL4
FSET? THING,FL-COLLECTIVE \TRUE
?CCL4: PRINTI "es"
RTRUE
.FUNCT RT-DONT-DOESNT-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: EQUAL? THING,CH-ME,CH-PLAYER /?CTR4
FSET? THING,FL-PLURAL \?CCL5
FSET? THING,FL-COLLECTIVE /?CCL5
?CTR4: PRINTI " do not "
RTRUE
?CCL5: PRINTI " does not "
RTRUE
.FUNCT RT-SAY-ITS-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: FSET? THING,FL-PLURAL \?CCL5
FSET? THING,FL-COLLECTIVE /?CCL5
PRINTI "They are "
RTRUE
?CCL5: FSET? THING,FL-PERSON \?CCL9
FSET? THING,FL-FEMALE \?CCL9
PRINTI "She is "
RTRUE
?CCL9: FSET? THING,FL-PERSON \?CCL13
FSET? THING,FL-FEMALE /?CCL13
PRINTI "He is "
RTRUE
?CCL13: PRINTI "It is "
RTRUE
.FUNCT RT-SAY-HIM-HER-THEM-IT-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: EQUAL? THING,CH-PLAYER,CH-ME \?CCL5
EQUAL? GL-WINNER,CH-PLAYER,CH-ME \?CCL8
PRINTI "yourself"
RTRUE
?CCL8: PRINTI "you"
RTRUE
?CCL5: FSET? THING,FL-PLURAL \?CCL10
FSET? THING,FL-COLLECTIVE /?CCL10
PRINTI "them"
RTRUE
?CCL10: FSET? THING,FL-PERSON \?CCL14
FSET? THING,FL-FEMALE \?CCL17
PRINTI "her"
RTRUE
?CCL17: PRINTI "him"
RTRUE
?CCL14: PRINTI "it"
RTRUE
.FUNCT RT-YOUR-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-WINNER
?CND1: EQUAL? THING,CH-PLAYER,CH-ME \?CCL5
PRINTI "your "
RTRUE
?CCL5: FSET? THING,FL-PLURAL \?CCL7
FSET? THING,FL-COLLECTIVE /?CCL7
PRINTI "their "
RTRUE
?CCL7: FSET? THING,FL-PERSON \?CCL11
FSET? THING,FL-FEMALE \?CCL14
PRINTI "her "
RTRUE
?CCL14: PRINTI "his "
RTRUE
?CCL11: PRINTI "its "
RTRUE
.FUNCT RT-ITS-CLOSED-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: ICALL2 RT-CTHEO-PRINT,THING
ICALL2 RT-IS-ARE-MSG,THING
PRINTR "closed."
.FUNCT RT-WHY-SHOOT-MSG,OBJ
ZERO? OBJ \?CND1
SET 'OBJ,GL-PRSO
?CND1: PRINTI "Why would"
ICALL1 RT-YOU-MSG
PRINTI "want to shoot the poor, little, innocent "
ICALL2 DPRINT,OBJ
PRINTR "?"
.FUNCT RT-HOW-READ-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: PRINTI "How can"
ICALL1 RT-YOU-MSG
PRINTI "read "
ICALL2 RT-A-PRINT,THING
RTRUE
.FUNCT RT-ALREADY-HAVE-PRSO-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: ICALL RT-CYOU-MSG,STR?705,STR?706
ICALL2 RT-A-PRINT,THING
PRINTR "."
.FUNCT RT-CANT-OPEN-PRSO-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: ICALL1 RT-CYOU-MSG
PRINTI "could not possibly open "
ICALL2 RT-THEO-PRINT,THING
PRINTR "."
.FUNCT RT-CANT-CLOSE-THAT-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: ICALL1 RT-CYOU-MSG
PRINTI "cannot close "
ZERO? THING /?CCL5
ICALL2 RT-THEO-PRINT,THING
JUMP ?CND3
?CCL5: ICALL2 DPRINT,TH-NOT-HERE-OBJECT
?CND3: PRINTR "."
.FUNCT RT-NO-GOOD-SURFACE-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSI
?CND1: PRINTI "There is no good surface on "
ICALL2 RT-THEO-PRINT,THING
PRINTR "."
.FUNCT RT-LANDS-AT-YOUR-FEET-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: PRINTI "land"
ICALL2 RT-S-NOS-MSG,THING
PRINTI " at your feet."
CRLF
MOVE THING,GL-PLACE-CUR
RTRUE
.FUNCT RT-OPEN-CLOSED-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: ICALL2 RT-CTHEO-PRINT,THING
ICALL2 RT-IS-ARE-MSG,THING
FSET? THING,FL-OPENED \?CCL5
PRINTI "open"
JUMP ?CND3
?CCL5: PRINTI "closed"
?CND3: PRINTC 46
RTRUE
.FUNCT RT-YOU-OPEN-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: FSET THING,FL-OPENED
ICALL RT-CYOU-MSG,STR?227,STR?707
ICALL2 RT-THEO-PRINT,THING
PRINTR "."
.FUNCT RT-YOU-CLOSE-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: FCLEAR THING,FL-OPENED
ICALL RT-CYOU-MSG,STR?674,STR?708
ICALL2 RT-THEO-PRINT,THING
PRINTR "."
.FUNCT RT-IN-ON-MSG,THING,SPACE?
ASSIGNED? 'SPACE? /?CND1
SET 'SPACE?,TRUE-VALUE
?CND1: ZERO? THING \?CND3
SET 'THING,GL-PRSO
?CND3: ZERO? SPACE? /?CND5
PRINTC 32
?CND5: FSET? THING,FL-CONTAINER \?CCL9
PRINTI "in"
JUMP ?CND7
?CCL9: FSET? THING,FL-SURFACE \?CCL11
PRINTI "on"
JUMP ?CND7
?CCL11: PRINTI "held by"
?CND7: PRINTC 32
RTRUE
.FUNCT RT-CIN-CON-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: FSET? THING,FL-SURFACE \?CCL5
PRINTI "On "
RTRUE
?CCL5: FSET? THING,FL-CONTAINER \?CCL7
PRINTI "In "
RTRUE
?CCL7: PRINTI "Held by "
RTRUE
.FUNCT RT-OUT-OFF-MSG,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: FSET? THING,FL-SURFACE \?CCL5
PRINTI " off of "
RTRUE
?CCL5: FSET? THING,FL-CONTAINER \?CCL7
PRINTI " out of "
RTRUE
?CCL7: PRINTI " from "
RTRUE
.FUNCT RT-CANT-LOCK-MSG,UN?,THING
ZERO? THING \?CND1
SET 'THING,GL-PRSO
?CND1: ICALL1 RT-CYOU-MSG
PRINTI "cannot "
ZERO? UN? /?CND3
PRINTI "un"
?CND3: PRINTI "lock "
ICALL2 RT-A-PRINT,THING
PRINTR "."
.FUNCT RT-THING-WONT-LOCK-MSG,THING,CLOSED-THING,UN?
ICALL1 RT-CYOU-MSG
PRINTI "cannot "
ZERO? UN? /?CND1
PRINTI "un"
?CND1: PRINTI "lock "
ICALL2 RT-THEO-PRINT,CLOSED-THING
PRINTI " with "
ICALL2 RT-THEO-PRINT,THING
PRINTR "."
.FUNCT RT-DONT-HAVE-MSG,OBJ,L,O
LOC OBJ >L
ZERO? L /?CND1
EQUAL? L,GL-WINNER /FALSE
IN? L,CH-PLAYER \?CND1
EQUAL? GL-WINNER,CH-PLAYER \?CND1
SET 'O,GL-PRSO
SET 'GL-PRSO,OBJ
CALL2 RT-ITAKE,FALSE-VALUE
ZERO? STACK /?CCL11
PRINTI "[taking "
ICALL1 RT-THEO-PRINT
ICALL2 RT-OUT-OFF-MSG,L
ICALL2 RT-THEO-PRINT,L
PRINTI " first]"
CRLF
SET 'GL-PRSO,O
ICALL2 RT-THIS-IS-IT,GL-PRSO
RFALSE
?CCL11: SET 'GL-PRSO,O
ICALL1 RT-CYOU-MSG
ICALL RT-WOULD-HAVE-TO-MSG,STR?697,OBJ
ICALL2 RT-OUT-OFF-MSG,L
ICALL2 RT-THEO-PRINT,L
PRINTR " first."
?CND1: ICALL1 RT-WINNER-NOT-HOLDING-MSG
ZERO? OBJ /?CCL14
ICALL2 RT-THEO-PRINT,OBJ
JUMP ?CND12
?CCL14: ICALL2 RT-THEO-PRINT,TH-NOT-HERE-OBJECT
?CND12: PRINTR "."
.FUNCT RT-ROOM-IN-ON-MSG?,OBJ1,OBJ2
CALL RT-OBJ-TOO-LARGE?,OBJ1,OBJ2
ZERO? STACK /FALSE
PRINTI "There is not enough room"
ICALL2 RT-IN-ON-MSG,OBJ2
ICALL2 RT-THEO-PRINT,OBJ2
PRINTR "."
.FUNCT RT-IMPOSSIBLE-PUT-IN-ON-MSG,OBJ
ZERO? OBJ \?CND1
SET 'OBJ,GL-PRSI
?CND1: EQUAL? GL-PRSA,V?PUT,V?PUT-ON \FALSE
EQUAL? GL-PRSI,OBJ \FALSE
ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT RT-CANT-PUT-IN-ON-MSG,OBJ
ZERO? OBJ \?CND1
SET 'OBJ,GL-PRSI
?CND1: EQUAL? GL-PRSA,V?PUT,V?PUT-ON \FALSE
EQUAL? GL-PRSI,OBJ \FALSE
ICALL1 RT-CYOU-MSG
PRINTI "cannot put "
ICALL1 RT-THEO-PRINT
PRINTC 32
FSET? GL-PRSO,FL-CONTAINER \?CCL10
PRINTI "in"
JUMP ?CND8
?CCL10: FSET? GL-PRSO,FL-SURFACE \?CCL12
PRINTI "on"
JUMP ?CND8
?CCL12: EQUAL? GL-PRSA,V?PUT \?CCL14
PRINTI "in"
JUMP ?CND8
?CCL14: PRINTI "on"
?CND8: PRINTC 32
ICALL1 RT-THEI-PRINT
PRINTR "."
.FUNCT RT-CHECK-MOVE-MSG?,SRC,DEST,PTR,OLOC,CNT
ZERO? DEST /FALSE
SET 'PTR,GL-LOC-TRAIL
SET 'OLOC,DEST
?PRG4: PUT PTR,0,OLOC
INC 'CNT
ZERO? OLOC /?REP5
IN? OLOC,ROOMS /?REP5
IN? OLOC,LOCAL-GLOBALS /?REP5
IN? OLOC,GLOBAL-OBJECTS /?REP5
LOC OLOC >OLOC
ADD PTR,2 >PTR
EQUAL? OLOC,DEST \?PRG4
?REP5: INTBL? SRC,GL-LOC-TRAIL,CNT \FALSE
ICALL1 RT-CYOU-MSG
PRINTI "cannot put "
ICALL2 RT-THEO-PRINT,SRC
ICALL2 RT-IN-ON-MSG,SRC
PRINTI "itself, or"
ICALL2 RT-IN-ON-MSG,SRC
PRINTI "something that is already"
ICALL2 RT-IN-ON-MSG,SRC
PRINTR "it."
.FUNCT RT-EMPTY-PRSO-MSG,DEST,OBJ,NXT,X
FIRST? GL-PRSO >OBJ /?BOGUS1
?BOGUS1: ZERO? OBJ \?CND2
PRINTI "There is nothing"
ICALL2 RT-IN-ON-MSG,GL-PRSO
ICALL1 RT-THEO-PRINT
PRINTR "."
?CND2: SET 'GL-P-MULT?,TRUE-VALUE
?PRG4: ZERO? OBJ /?REP5
ICALL2 RT-CTHEO-PRINT,OBJ
PRINTI ": "
NEXT? OBJ >NXT /?BOGUS8
?BOGUS8: EQUAL? DEST,CH-PLAYER \?CCL11
CALL RT-PERFORM,V?TAKE,OBJ,GL-PRSO >X
EQUAL? X,FATAL-VALUE /?REP5
JUMP ?CND9
?CCL11: ZERO? DEST \?CCL15
FSET? GL-PRSO,FL-PLURAL \?CCL18
FSET? GL-PRSO,FL-COLLECTIVE /?CCL18
PRINTI "They "
JUMP ?CND16
?CCL18: PRINTI "It "
?CND16: ICALL1 RT-LANDS-AT-YOUR-FEET-MSG
JUMP ?CND9
?CCL15: CALL RT-ROOM-IN-ON-MSG?,OBJ,DEST
ZERO? STACK \?CND9
CALL RT-CHECK-MOVE-MSG?,OBJ,DEST
ZERO? STACK \?REP5
MOVE OBJ,DEST
PRINTI "Done."
CRLF
?CND9: SET 'OBJ,NXT
JUMP ?PRG4
?REP5: SET 'GL-P-MULT?,FALSE-VALUE
RTRUE
.FUNCT RT-IDROP-MSG,L
LOC GL-PRSO >L
ZERO? L /?CTR2
EQUAL? GL-PRSO,GL-WINNER,CH-ME,CH-PLAYER \?CCL3
?CTR2: ICALL1 RT-IMPOSSIBLE-MSG
RFALSE
?CCL3: EQUAL? L,GL-WINNER /?CCL7
ICALL1 RT-CYOU-MSG
ICALL RT-WOULD-HAVE-TO-MSG,STR?697,GL-PRSO
ICALL2 RT-OUT-OFF-MSG,L
ICALL2 RT-THEO-PRINT,L
PRINTI " first."
CRLF
RFALSE
?CCL7: FSET? GL-PRSO,FL-WORN \?CND1
IN? GL-PRSO,GL-WINNER \?CND1
ICALL1 RT-TAKE-OFF-PRSO-FIRST-MSG
?CND1: EQUAL? GL-PRSA,V?THROW \?CCL13
CALL2 RT-META-LOC,GL-WINNER
MOVE GL-PRSO,STACK
RTRUE
?CCL13: LOC GL-WINNER
MOVE GL-PRSO,STACK
RTRUE
.FUNCT RT-PRINT-CONTENTS-1,THING,OBJ,CNT,TMP
ICALL RT-MOVE-NODESC-OBJS,THING,TH-Y-OBJECT
FIRST? THING >OBJ /?PRG2
?PRG2: ZERO? OBJ /?REP3
FSET OBJ,FL-SEEN
PRINTI " "
ICALL2 RT-A-PRINT,OBJ
FSET? OBJ,FL-LIGHTED \?CND6
PRINTI " (providing light)"
?CND6: PRINTC 46
CRLF
INC 'CNT
NEXT? OBJ >OBJ /?PRG2
JUMP ?PRG2
?REP3: ZERO? CNT \?CND9
PRINTI " nothing."
CRLF
?CND9: ICALL RT-MOVE-ALL,TH-Y-OBJECT,THING
FIRST? THING >OBJ /?PRG12
?PRG12: ZERO? OBJ /TRUE
CALL2 RT-SEE-INSIDE?,OBJ
ZERO? STACK /?CND17
ICALL2 RT-PRINT-CONTENTS-3,OBJ
?CND17: NEXT? OBJ >OBJ /?PRG12
JUMP ?PRG12
.FUNCT RT-PRINT-CONTENTS-2,THING,OBJ,CNT
ICALL RT-MOVE-NODESC-OBJS,THING,TH-Y-OBJECT
FIRST? THING >OBJ /?PRG2
?PRG2: ZERO? OBJ /?REP3
FSET OBJ,FL-SEEN
ICALL2 RT-A-PRINT,OBJ
FSET? OBJ,FL-LIGHTED \?CND6
PRINTI " (providing light)"
?CND6: INC 'CNT
NEXT? OBJ >OBJ /?BOGUS8
?BOGUS8: ZERO? OBJ /?PRG2
NEXT? OBJ /?CCL13
PRINTI " and "
JUMP ?PRG2
?CCL13: PRINTI ", "
JUMP ?PRG2
?REP3: ZERO? CNT \?CND14
PRINTI "nothing"
?CND14: ICALL RT-MOVE-ALL,TH-Y-OBJECT,THING
RTRUE
.FUNCT RT-PRINT-CONTENTS-3,THING,OBJ,FIRST,CNT
SET 'FIRST,TRUE-VALUE
FIRST? THING >OBJ /?PRG2
?PRG2: ZERO? OBJ /?REP3
FSET? OBJ,FL-NODESC /?CND4
ZERO? FIRST /?CND8
SET 'FIRST,FALSE-VALUE
LOC OBJ
ICALL2 RT-CIN-CON-MSG,STACK
LOC OBJ
ICALL2 RT-THEO-PRINT,STACK
PRINTI " you see:"
CRLF
?CND8: PRINTI " "
ICALL2 RT-A-PRINT,OBJ
CRLF
?CND4: NEXT? OBJ >OBJ /?PRG2
JUMP ?PRG2
?REP3: FIRST? THING >OBJ /?PRG12
?PRG12: ZERO? OBJ /TRUE
CALL2 RT-SEE-INSIDE?,OBJ
ZERO? STACK /?CND17
ICALL2 RT-PRINT-CONTENTS-3,OBJ
?CND17: NEXT? OBJ >OBJ /?PRG12
JUMP ?PRG12
.FUNCT RT-DO-WALK,DIR1,DIR2,DIR3,X
SET 'GL-P-WALK-DIR,DIR1
CALL RT-PERFORM,V?WALK,DIR1 >X
ZERO? DIR2 /?CND1
EQUAL? X,FALSE-VALUE,FATAL-VALUE /?CND1
SET 'GL-P-WALK-DIR,DIR2
CALL RT-PERFORM,V?WALK,DIR2 >X
ZERO? DIR3 /?CND1
EQUAL? X,FALSE-VALUE,FATAL-VALUE /?CND1
SET 'GL-P-WALK-DIR,DIR3
CALL RT-PERFORM,V?WALK,DIR3 >X
?CND1: RETURN X
.FUNCT RT-WHO-SAYS?
CALL2 RT-META-LOC,CH-HOLMES
EQUAL? GL-PLACE-CUR,STACK \?CCL3
FSET? CH-HOLMES,FL-ASLEEP /?CCL3
FSET? CH-HOLMES,FL-LOCKED /?CCL3
RETURN CH-HOLMES
?CCL3: CALL2 RT-META-LOC,CH-WIGGINS
EQUAL? GL-PLACE-CUR,STACK \FALSE
FSET? CH-WIGGINS,FL-ASLEEP /FALSE
FSET? CH-WIGGINS,FL-LOCKED /FALSE
RETURN CH-WIGGINS
.FUNCT RT-TRANSCRIPT,STR
DIROUT K-D-SCR-OFF
CRLF
PRINTI "Transcript: "
PRINT STR
CRLF
ICALL1 RT-VERSION-MSG
DIROUT K-D-SCR-ON
RTRUE
.FUNCT RT-QSR,KEY
ICALL1 KILL-SOUNDS
PRINTI "The game is no longer afoot."
CRLF
CRLF
?PRG1: PRINTI "Do you wish to: (1) Quit, (2) Restart, (3) Restore, (4) Hints"
ZERO? GL-CAN-UNDO /?CND3
PRINTI ", (5) Undo"
?CND3: PRINTI " ?"
CRLF
INPUT 1 >KEY
EQUAL? KEY,49 \?CCL7
QUIT
PRINTI "Quit failed."
CRLF
JUMP ?PRG1
?CCL7: EQUAL? KEY,50 \?CCL9
RESTART
PRINTI "Restart failed."
CRLF
JUMP ?PRG1
?CCL9: EQUAL? KEY,51 \?CCL11
ZERO? GL-DEBUG-FLAG /?CND12
ICALL1 V-REFRESH
?CND12: ICALL1 RT-P-CLEAR
PUTB GL-OOPS-INBUF,1,0
RESTORE
PRINTI "Restore failed."
CRLF
JUMP ?PRG1
?CCL11: EQUAL? KEY,52 \?CCL15
ICALL1 V-HINT
ICALL1 V-REFRESH
JUMP ?PRG1
?CCL15: EQUAL? KEY,53 \?PRG1
ZERO? GL-CAN-UNDO /?PRG1
ICALL1 V-UNDO
JUMP ?PRG1
.FUNCT V-YES
PRINT K-GOOD-SHOW-MSG
CRLF
RETURN 2
.FUNCT V-NO
PRINT K-PITY-MSG
CRLF
RETURN 2
.FUNCT V-MAYBE
PRINT K-MAYBE-MSG
CRLF
RETURN 2
.FUNCT V-DESC-LEVEL
PRINTC 91
EQUAL? GL-P-PRSA-WORD,W?VERBOSE \?CCL3
SET 'GL-DESC-LEVEL,2
PRINTI "Verbose"
JUMP ?CND1
?CCL3: EQUAL? GL-P-PRSA-WORD,W?BRIEF \?CCL5
SET 'GL-DESC-LEVEL,1
PRINTI "Brief"
JUMP ?CND1
?CCL5: EQUAL? GL-P-PRSA-WORD,W?SUPER,W?SUPERBRIEF \?CND1
SET 'GL-DESC-LEVEL,0
PRINTI "Superbrief"
?CND1: PRINTI " descriptions]"
CRLF
RETURN 2
.FUNCT V-QUIT
PRINTI "[Your score is "
PRINTN GL-SCORE-CUR
PRINTI " out of "
PRINTN GL-SCORE-MAX
PRINTI ", which earns you a ranking of "
CALL2 RT-RANK-STR,GL-SCORE-CUR
PRINT STACK
PRINTI ".]"
CRLF
CRLF
PRINTI "Are you sure you want to quit?"
CALL1 RT-GET-YES-NO?
ZERO? STACK /?CCL3
QUIT
RTRUE
?CCL3: CRLF
PRINTI "Continuing."
CRLF
RETURN 2
.FUNCT V-RESTART
PRINTI "Are you sure you want to restart?"
CALL1 RT-GET-YES-NO?
ZERO? STACK /?CCL3
ICALL1 KILL-SOUNDS
RESTART
RTRUE
?CCL3: CRLF
PRINTI "Continuing."
CRLF
RETURN 2
.FUNCT V-SAVE,X,WHO
CALL1 RT-WHO-SAYS? >WHO
EQUAL? WHO,CH-HOLMES \?CCL3
ICALL2 RT-CTHEO-PRINT,CH-HOLMES
PRINTI " nods in approval and says, ""A wise move, Watson. These are dangerous times."""
CRLF
CRLF
JUMP ?CND1
?CCL3: EQUAL? WHO,CH-WIGGINS \?CND1
ICALL2 RT-CTHEO-PRINT,CH-WIGGINS
PRINTI " glances around in alarm and says, ""Do you know somefing I don't know?"""
CRLF
CRLF
?CND1: ZERO? GL-DEBUG-FLAG /?CND5
ICALL1 V-REFRESH
?CND5: SET 'GL-SCORE-STS,-1
SET 'GL-MOVES-STS,-1
SET 'GL-PLACE-STS,-1
ICALL1 RT-P-CLEAR
PUTB GL-OOPS-INBUF,1,0
SET 'SOUND-QUEUED?,FALSE-VALUE
ICALL1 KILL-SOUNDS
SAVE >X
ZERO? SOUND-ON? /?CND7
ICALL1 CHECK-LOOPING
?CND7: ICALL1 RT-UPDATE-STATUS-LINE
ZERO? X \?CCL11
PRINTI "Save failed."
CRLF
RETURN 2
?CCL11: EQUAL? X,1 \?CCL13
PRINTI "Save completed."
CRLF
RETURN 2
?CCL13: PRINTI "Restore completed."
CRLF
CRLF
CALL1 RT-WHO-SAYS? >WHO
EQUAL? WHO,CH-HOLMES \?CCL16
ICALL2 RT-CTHEO-PRINT,CH-HOLMES
PRINTI " looks up and says impatiently, ""Where have you been, Watson? We have work to do."""
CRLF
CRLF
JUMP ?CND14
?CCL16: EQUAL? WHO,CH-WIGGINS \?CND14
ICALL2 RT-CTHEO-PRINT,CH-WIGGINS
PRINTI " jumps nervously and then says, ""Crikey! You scared me. Don't sneak up on people that way."""
CRLF
CRLF
?CND14: ICALL RT-DESC-ALL,FALSE-VALUE,TRUE-VALUE
RETURN 2
.FUNCT V-RESTORE
SET 'SOUND-QUEUED?,FALSE-VALUE
ICALL1 KILL-SOUNDS
ZERO? GL-DEBUG-FLAG /?CND1
ICALL1 V-REFRESH
?CND1: ICALL1 RT-P-CLEAR
PUTB GL-OOPS-INBUF,1,0
RESTORE
GET 0,8
BTST STACK,4 \?CND3
ICALL2 RT-INIT-SCREEN,TRUE-VALUE
ICALL1 RT-UPDATE-STATUS-LINE
GET 0,8
BAND STACK,-5
PUT 0,8,STACK
?CND3: PRINTI "Restore failed."
CRLF
ZERO? SOUND-ON? \?CCL6
RETURN 2
?CCL6: ICALL1 CHECK-LOOPING
RETURN 2
.FUNCT V-SCRIPT
PRINTI "[Scripting "
EQUAL? GL-P-PRSA-WORD,W?SCRIPT \?CCL3
PRINTI "on"
JUMP ?CND1
?CCL3: PRINTI "off"
?CND1: PRINTC 93
CRLF
EQUAL? GL-P-PRSA-WORD,W?SCRIPT \?CCL6
DIROUT K-D-PRN-ON
ICALL2 RT-TRANSCRIPT,STR?709
RETURN 2
?CCL6: ICALL2 RT-TRANSCRIPT,STR?710
DIROUT K-D-PRN-OFF
RETURN 2
.FUNCT V-VERSION
ICALL1 RT-VERSION-MSG
RETURN 2
.FUNCT V-INVENTORY,POCKET,PLOC,OBJ,NXT,OLDIT
SET 'OLDIT,GL-P-IT-OBJECT
LOC TH-POCKET >PLOC
FIRST? TH-POCKET >POCKET /?BOGUS1
?BOGUS1: REMOVE TH-POCKET
FIRST? CH-PLAYER >OBJ /?PRG3
?PRG3: ZERO? OBJ /?REP4
NEXT? OBJ >NXT /?BOGUS8
?BOGUS8: FSET? OBJ,FL-WORN \?CND9
EQUAL? OBJ,TH-COTTON-BALLS,TH-STETHOSCOPE /?CND9
MOVE OBJ,TH-X-OBJECT
?CND9: SET 'OBJ,NXT
JUMP ?PRG3
?REP4: FIRST? TH-X-OBJECT \?CND13
PRINTI "You are wearing:"
CRLF
ICALL2 RT-PRINT-CONTENTS-1,TH-X-OBJECT
?CND13: FSET? TH-COTTON-BALLS,FL-WORN /?CCL16
FSET? TH-STETHOSCOPE,FL-WORN \?CND15
?CCL16: PRINTI "You have in your ears:"
CRLF
PRINTI " "
FSET? TH-COTTON-BALLS,FL-WORN \?CCL21
MOVE TH-COTTON-BALLS,TH-X-OBJECT
ICALL2 RT-A-PRINT,TH-COTTON-BALLS
PRINTC 46
CRLF
JUMP ?CND15
?CCL21: MOVE TH-STETHOSCOPE,TH-X-OBJECT
ICALL2 RT-A-PRINT,TH-STETHOSCOPE
PRINTC 46
CRLF
?CND15: FSET? TH-WATSONS-COAT,FL-WORN \?CND22
FIRST? TH-POCKET \?CND22
PRINTI "Your pocket contains:"
CRLF
ICALL2 RT-PRINT-CONTENTS-1,TH-POCKET
?CND22: PRINTI "You are holding:"
CRLF
ICALL2 RT-PRINT-CONTENTS-1,CH-PLAYER
ICALL RT-MOVE-ALL,TH-X-OBJECT,CH-PLAYER
MOVE TH-POCKET,PLOC
SET 'GL-P-IT-OBJECT,OLDIT
RETURN 2
.FUNCT V-NOTIFY
ZERO? GL-SCORE-MSG /?PRT1
SET 'GL-SCORE-MSG,0
JUMP ?PRE3
?PRT1: SET 'GL-SCORE-MSG,1
?PRE3: PRINTI "[Score Notification "
ZERO? GL-SCORE-MSG /?CCL6
PRINTI "Enabled"
JUMP ?CND4
?CCL6: PRINTI "Disabled"
?CND4: PRINTC 93
CRLF
RETURN 2
.FUNCT V-SCORE
PRINTI "[You have "
PRINTN GL-SCORE-CUR
PRINTI " out of "
PRINTN GL-SCORE-MAX
PRINTI " points, which earns you a ranking of "
CALL2 RT-RANK-STR,GL-SCORE-CUR
PRINT STACK
PRINTI ".]"
CRLF
RETURN 2
.FUNCT V-UNDO
SET 'SOUND-QUEUED?,FALSE-VALUE
ICALL1 KILL-SOUNDS
SET 'GL-PLACE-STS,0
IRESTORE
ZERO? STACK \?CCL3
PRINTI "[UNDO failed.]"
CRLF
JUMP ?CND1
?CCL3: PRINTI "[UNDO is not available.]"
CRLF
?CND1: ZERO? SOUND-ON? /FALSE
CALL1 CHECK-LOOPING
RSTACK
.ENDI