mirror of
https://github.com/historicalsource/sherlock
synced 2024-07-01 06:05:19 +03:00
4453 lines
93 KiB
Plaintext
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
|