mirror of
https://github.com/historicalsource/sherlock
synced 2024-07-01 06:05:19 +03:00
Release Version
This commit is contained in:
commit
d327e7626d
BIN
badv.was-mid
Normal file
BIN
badv.was-mid
Normal file
Binary file not shown.
43
bank.zabstr
Normal file
43
bank.zabstr
Normal file
|
@ -0,0 +1,43 @@
|
|||
|
||||
<CONSTANT K-GEM-BOX-NUM 600>
|
||||
<DEFINE-ROUTINE RT-KIDNAP>
|
||||
<DEFINE-ROUTINE RT-WIGGINS-HELP-MSG>
|
||||
<GLOBAL BOX-KEY-COLD? <> %<> WORD>
|
||||
<DEFINE-ROUTINE RT-STEAL-KEY>
|
||||
<OBJECT TH-INTNUM (LOC GLOBAL-OBJECTS) (DESC "number") (FLAGS FL-NODESC FL-SEEN
|
||||
) (SYNONYM INTNUM NUMBER) (GENERIC RT-GN-INTNUM) (ACTION RT-AC-TH-INTNUM)>
|
||||
<OBJECT TH-SAFETY-DEPOSIT-BOX (LOC RM-BANK-VAULT) (DESC "safety deposit box") (
|
||||
FLAGS FL-NODESC FL-CONTAINER FL-OPENABLE FL-LOCKED FL-HAS-DESCFCN) (SYNONYM
|
||||
INTNUM BOX) (ADJECTIVE SAFETY DEPOSIT BOX NUMBER) (SIZE 0 CAPACITY 10) (GENERIC
|
||||
RT-GN-INTNUM) (ACTION RT-AC-TH-SAFETY-DEPOSIT-BOX)>
|
||||
<OBJECT TH-RING (LOC LOCAL-GLOBALS) (DESC "ring") (FLAGS FL-TAKEABLE FL-NOALL
|
||||
FL-CLOTHING) (SYNONYM RING) (ADJECTIVE SIGNET) (VALUE 1) (SIZE 1 MASS 1) (
|
||||
ACTION RT-AC-TH-RING)>
|
||||
<OBJECT TH-SHILLING (DESC "shilling") (FLAGS FL-TAKEABLE FL-MONEY) (SYNONYM
|
||||
SHILLING COIN) (VALUE 0) (SIZE 1 MASS 1)>
|
||||
<OBJECT TH-BOX-KEY (LOC TH-GUARDS-POCKET) (DESC "key") (FLAGS FL-TAKEABLE
|
||||
FL-HAS-DESCFCN) (SYNONYM KEY) (ADJECTIVE MASTER) (SIZE 1) (VALUE 1) (ACTION
|
||||
RT-AC-TH-BOX-KEY)>
|
||||
<OBJECT TH-BOX-LOCK (LOC RM-BANK-VAULT) (DESC "lock") (FLAGS FL-NODESC
|
||||
FL-CONTAINER FL-OPENED) (SYNONYM INTNUM) (ADJECTIVE LOCK NUMBER) (GENERIC
|
||||
RT-GN-INTNUM) (ACTION RT-AC-TH-BOX-LOCK)>
|
||||
<OBJECT TH-BOXES (LOC RM-BANK-VAULT) (DESC "safety deposit boxes") (FLAGS
|
||||
FL-NODESC FL-PLURAL FL-OPENABLE FL-CONTAINER FL-HAS-DESCFCN) (SYNONYM BOXES) (
|
||||
ADJECTIVE SAFETY DEPOSIT) (ACTION RT-AC-TH-BOXES)>
|
||||
<OBJECT TH-GUARDS-POCKET (LOC CH-BANK-GUARD) (DESC "guard's pocket") (FLAGS
|
||||
FL-NODESC FL-CONTAINER FL-OPENED FL-TRYTAKE) (SYNONYM POCKET) (ADJECTIVE HIS
|
||||
GUARD\'S) (SIZE 0 CAPACITY 10) (ACTION RT-AC-TH-GUARDS-POCKET)>
|
||||
<DEFINE-ROUTINE RT-AC-TH-INTNUM>
|
||||
<DEFINE-ROUTINE RT-AC-TH-RING>
|
||||
<DEFINE-ROUTINE RT-AC-TH-BOX-KEY>
|
||||
<DEFINE-ROUTINE RT-AC-TH-BOX-LOCK>
|
||||
<DEFINE-ROUTINE RT-AC-TH-SAFETY-DEPOSIT-BOX>
|
||||
<DEFINE-ROUTINE RT-AC-TH-DIAL>
|
||||
<DEFINE-ROUTINE RT-AC-TH-BOXES>
|
||||
<DEFINE-ROUTINE RT-AC-TH-GUARDS-POCKET>
|
||||
<DEFINE-ROUTINE RT-AC-CH-BANK-GUARD>
|
||||
<GLOBAL WIGGINS-COLD? <> %<> WORD>
|
||||
<DEFINE-ROUTINE RT-AC-CH-WIGGINS>
|
||||
<DEFINE-ROUTINE RT-AC-CH-BUTLER>
|
||||
<DEFINE-ROUTINE RT-AC-LG-BANK-VAULT-DOOR>
|
||||
<DEFINE-ROUTINE RT-TOPAZ-MSG>
|
887
bank.zap
Normal file
887
bank.zap
Normal file
|
@ -0,0 +1,887 @@
|
|||
|
||||
|
||||
.FUNCT RT-KIDNAP
|
||||
MOVE CH-HOLMES,RM-LAIR
|
||||
MOVE TH-ROPE,CH-HOLMES
|
||||
FSET CH-HOLMES,FL-LOCKED
|
||||
SET 'TH-ROPE-AUX1,CH-HOLMES
|
||||
BAND MYCROFT-STATE,-2 >MYCROFT-STATE
|
||||
SET 'GL-PUPPY,FALSE-VALUE
|
||||
CRLF
|
||||
PRINTI "Suddenly, someone grabs you from behind, pins your arms to your sides, and covers up your head. You struggle fiercely to get loose, but to no avail. Then you hear a voice shout, ""Let him go, we've got the other one."""
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "The person holding you knocks you on the head and flings you to the ground. You lose consciousness for a few moments, and when you awake, you are alone."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTR "Sherlock Holmes has been kidnapped."
|
||||
|
||||
|
||||
.FUNCT RT-WIGGINS-HELP-MSG
|
||||
ICALL2 RT-CTHEO-PRINT,CH-WIGGINS
|
||||
PRINTI " says, ""I saw it all, guv'nor. But it was over before I could lift a finger. Mr 'Olmes was a friend to me, 'e was. And I'd do anyfing to 'elp you get 'im back."""
|
||||
CRLF
|
||||
SET 'GL-PUPPY,CH-WIGGINS
|
||||
FCLEAR CH-WIGGINS,FL-NODESC
|
||||
FCLEAR CH-WIGGINS,FL-BROKEN
|
||||
SET 'GL-PUPPY-MSG?,FALSE-VALUE
|
||||
RETURN GL-PUPPY-MSG?
|
||||
|
||||
|
||||
.FUNCT RT-STEAL-KEY
|
||||
ZERO? BOX-KEY-COLD? \?CCL3
|
||||
SET 'BOX-KEY-COLD?,TRUE-VALUE
|
||||
MOVE TH-BOX-KEY,CH-PLAYER
|
||||
ICALL2 RT-CTHEO-PRINT,CH-WIGGINS
|
||||
PRINTI " casually strolls past the guard and says, ""Cor blimey. That bird isn't 'alf built, is she?"" While the guard's attention is diverted, Wiggins's hand flashes in and out of his pocket. Then just as casually as before, he strolls back to you, slips something into your hand, and whispers, ""Sorry I couldn't get everything, guv. I 'ope this is enough."""
|
||||
CRLF
|
||||
GETP TH-BOX-KEY,P?VALUE
|
||||
ICALL2 RT-UPDATE-SCORE,STACK
|
||||
PUTP TH-BOX-KEY,P?VALUE,0
|
||||
RTRUE
|
||||
?CCL3: PRINTR """Sorry, guv. 'E'll never go for it twice."""
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-INTNUM,CONTEXT
|
||||
EQUAL? GL-PRSA,V?WAIT-FOR,V?WAIT,V?VERIFY /FALSE
|
||||
EQUAL? GL-PRSA,V?SHOOT \?CCL5
|
||||
ICALL1 RT-IMPOSSIBLE-MSG
|
||||
RTRUE
|
||||
?CCL5: EQUAL? GL-PLACE-CUR,RM-BANK-VAULT /FALSE
|
||||
EQUAL? GL-P-NUMBER,-1 \?CCL10
|
||||
ICALL RT-CYOU-MSG,STR?655,STR?656
|
||||
PRINTR "not see that here."
|
||||
?CCL10: ICALL RT-CYOU-MSG,STR?655,STR?656
|
||||
PRINTR "not need to use a number here."
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-RING,CONTEXT
|
||||
ZERO? GL-NOW-PRSI? \FALSE
|
||||
ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?WEAR \FALSE
|
||||
PRINTR "It's the wrong size."
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-BOX-KEY,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
IN? TH-BOX-KEY,TH-GUARDS-POCKET /?CTR5
|
||||
IN? TH-BOX-KEY,CH-BANK-GUARD \?CCL6
|
||||
?CTR5: ICALL1 RT-CYOU-MSG
|
||||
PRINTR "can't see it. The guard has it."
|
||||
?CCL6: ICALL2 RT-CTHEO-PRINT,TH-BOX-KEY
|
||||
PRINTR " has the word ""Master"" written on it."
|
||||
?CCL3: ZERO? GL-NOW-PRSI? \FALSE
|
||||
ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?TURN \?CCL15
|
||||
IN? TH-BOX-KEY,TH-BOX-LOCK \FALSE
|
||||
EQUAL? TH-BOX-KEY-AUX1,K-GEM-BOX-NUM \?CCL21
|
||||
FSET? TH-SAFETY-DEPOSIT-BOX,FL-OPENED \?CCL24
|
||||
PRINTR "The box is already open."
|
||||
?CCL24: SET 'TH-SAFETY-DEPOSIT-BOX-AUX1,TH-BOX-KEY-AUX1
|
||||
ICALL RT-CYOU-MSG,STR?227,STR?707
|
||||
PRINTI "the box with the key."
|
||||
FIRST? TH-SAFETY-DEPOSIT-BOX \?CND25
|
||||
PRINTI " Inside you see "
|
||||
ICALL2 RT-PRINT-CONTENTS-2,TH-SAFETY-DEPOSIT-BOX
|
||||
PRINTC 46
|
||||
?CND25: FSET TH-SAFETY-DEPOSIT-BOX,FL-OPENED
|
||||
FCLEAR TH-SAFETY-DEPOSIT-BOX,FL-LOCKED
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL21: ICALL RT-CYOU-MSG,STR?227,STR?707
|
||||
PRINT K-NOTHING-INSIDE-MSG
|
||||
ICALL RT-YOU-MSG,STR?808,STR?809
|
||||
PRINTR "it back up again."
|
||||
?CCL15: EQUAL? GL-PRSA,V?READ \FALSE
|
||||
IN? TH-BOX-KEY,TH-GUARDS-POCKET /?CTR30
|
||||
IN? TH-BOX-KEY,CH-BANK-GUARD \?CCL31
|
||||
?CTR30: ICALL1 RT-CYOU-MSG
|
||||
PRINTR "can't see it. The guard has it."
|
||||
?CCL31: PRINTR "It says, Master."""
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-BOX-LOCK,CONTEXT,NUM
|
||||
EQUAL? GL-P-NUMBER,-1 \?CCL3
|
||||
ZERO? TH-BOX-LOCK-AUX1 \?CND1
|
||||
PRINT K-SPECIFY-MSG
|
||||
PRINTR "lock by number."
|
||||
?CCL3: LESS? GL-P-NUMBER,1 /?CTR6
|
||||
GRTR? GL-P-NUMBER,999 \?CCL7
|
||||
?CTR6: PRINTI "There is no lock number "
|
||||
PRINTN GL-P-NUMBER
|
||||
PRINTR "."
|
||||
?CCL7: SET 'TH-BOX-LOCK-AUX1,GL-P-NUMBER
|
||||
?CND1: SET 'NUM,TH-BOX-LOCK-AUX1
|
||||
ZERO? GL-NOW-PRSI? /?CCL12
|
||||
EQUAL? GL-PRSA,V?PUT \?CCL15
|
||||
EQUAL? GL-PRSO,TH-BOX-KEY \?CCL18
|
||||
MOVE TH-BOX-KEY,TH-BOX-LOCK
|
||||
SET 'TH-BOX-KEY-AUX1,TH-BOX-LOCK-AUX1
|
||||
PRINTR "The key fits nicely."
|
||||
?CCL18: CALL1 RT-CANT-PUT-IN-ON-MSG
|
||||
RSTACK
|
||||
?CCL15: EQUAL? GL-PRSA,V?TAKE \FALSE
|
||||
EQUAL? GL-PRSO,TH-BOX-KEY \FALSE
|
||||
IN? TH-BOX-KEY,TH-BOX-LOCK \FALSE
|
||||
MOVE TH-BOX-KEY,GL-WINNER
|
||||
SET 'TH-BOX-KEY-AUX1,0
|
||||
PRINTR "The key comes out smoothly."
|
||||
?CCL12: ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
PRINT K-RICOCHET-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-SAFETY-DEPOSIT-BOX,CONTEXT,NUM
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
SET 'NUM,TH-SAFETY-DEPOSIT-BOX-AUX1
|
||||
PRINTR "It looks the same as all the other boxes."
|
||||
?CCL3: EQUAL? GL-P-NUMBER,-1 \?CCL5
|
||||
ZERO? TH-SAFETY-DEPOSIT-BOX-AUX1 \?CCL8
|
||||
PRINT K-SPECIFY-MSG
|
||||
PRINTR "box by number."
|
||||
?CCL8: FSET? TH-SAFETY-DEPOSIT-BOX,FL-OPENED \?CND1
|
||||
SET 'TH-SAFETY-DEPOSIT-BOX-AUX1,600
|
||||
JUMP ?CND1
|
||||
?CCL5: LESS? GL-P-NUMBER,1 /?CTR10
|
||||
GRTR? GL-P-NUMBER,999 \?CCL11
|
||||
?CTR10: PRINTI "There is no box number "
|
||||
PRINTN GL-P-NUMBER
|
||||
PRINTR "."
|
||||
?CCL11: SET 'TH-SAFETY-DEPOSIT-BOX-AUX1,GL-P-NUMBER
|
||||
?CND1: SET 'NUM,TH-SAFETY-DEPOSIT-BOX-AUX1
|
||||
ZERO? GL-NOW-PRSI? /?CCL16
|
||||
EQUAL? GL-PRSA,V?TAKE,V?PUT,V?FILL /?CCL19
|
||||
EQUAL? GL-PRSA,V?EMPTY-INTO,V?POUR-FROM \FALSE
|
||||
?CCL19: EQUAL? NUM,K-GEM-BOX-NUM \?CCL24
|
||||
FSET? TH-SAFETY-DEPOSIT-BOX,FL-OPENED /FALSE
|
||||
?CCL24: ICALL1 RT-CTHEI-PRINT
|
||||
PRINTR " is closed."
|
||||
?CCL16: ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?UNLOCK,V?OPEN,V?OPEN-WITH \?CCL31
|
||||
EQUAL? GL-PRSI,FALSE-VALUE,TH-BOX-KEY /?CCL34
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTI "can't "
|
||||
PRINTB GL-P-PRSA-WORD
|
||||
PRINTC 32
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTI " with "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTR "."
|
||||
?CCL34: IN? TH-BOX-KEY,GL-WINNER /?CCL36
|
||||
EQUAL? NUM,TH-BOX-KEY-AUX1 /?CCL36
|
||||
ICALL RT-CYOU-MSG,STR?655,STR?656
|
||||
PRINTR "not have the key."
|
||||
?CCL36: EQUAL? NUM,K-GEM-BOX-NUM \?CCL40
|
||||
FSET? TH-SAFETY-DEPOSIT-BOX,FL-OPENED \?CCL43
|
||||
PRINTR "It is already open."
|
||||
?CCL43: ICALL RT-CYOU-MSG,STR?227,STR?707
|
||||
PRINTI "the box with the key."
|
||||
FIRST? TH-SAFETY-DEPOSIT-BOX \?CND44
|
||||
PRINTI " Inside you see "
|
||||
ICALL2 RT-PRINT-CONTENTS-2,TH-SAFETY-DEPOSIT-BOX
|
||||
PRINTC 46
|
||||
?CND44: FSET TH-SAFETY-DEPOSIT-BOX,FL-OPENED
|
||||
FCLEAR TH-SAFETY-DEPOSIT-BOX,FL-LOCKED
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL40: ICALL RT-CYOU-MSG,STR?227,STR?707
|
||||
PRINT K-NOTHING-INSIDE-MSG
|
||||
ICALL RT-YOU-MSG,STR?808,STR?809
|
||||
PRINTR "it back up again."
|
||||
?CCL31: EQUAL? GL-PRSA,V?LOCK,V?CLOSE \?CCL47
|
||||
EQUAL? NUM,K-GEM-BOX-NUM \?CCL50
|
||||
IN? TH-BOX-KEY,GL-WINNER /?CCL53
|
||||
EQUAL? NUM,TH-BOX-KEY-AUX1 /?CCL53
|
||||
ICALL RT-CYOU-MSG,STR?655,STR?656
|
||||
PRINTR "not have the key."
|
||||
?CCL53: FSET? TH-SAFETY-DEPOSIT-BOX,FL-OPENED /?CCL57
|
||||
PRINT K-CLOSED-AND-LOCKED-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL57: ICALL RT-CYOU-MSG,STR?810,STR?811
|
||||
PRINTI "the box with the key."
|
||||
FCLEAR TH-SAFETY-DEPOSIT-BOX,FL-OPENED
|
||||
FSET TH-SAFETY-DEPOSIT-BOX,FL-LOCKED
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL50: PRINT K-CLOSED-AND-LOCKED-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL47: EQUAL? GL-PRSA,V?READ \?CCL59
|
||||
PRINTN TH-SAFETY-DEPOSIT-BOX-AUX1
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL59: EQUAL? GL-PRSA,V?LOOK-INSIDE,V?SEARCH \?CCL61
|
||||
EQUAL? NUM,K-GEM-BOX-NUM \?CTR63
|
||||
FSET? TH-SAFETY-DEPOSIT-BOX,FL-OPENED /?CCL64
|
||||
?CTR63: ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is closed."
|
||||
?CCL64: PRINTI "Inside "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
ICALL RT-YOU-MSG,STR?665,STR?666
|
||||
ICALL2 RT-PRINT-CONTENTS-2,TH-SAFETY-DEPOSIT-BOX
|
||||
PRINTR "."
|
||||
?CCL61: EQUAL? GL-PRSA,V?EMPTY,V?REACH-IN \?CCL68
|
||||
EQUAL? NUM,K-GEM-BOX-NUM \?CCL71
|
||||
FSET? TH-SAFETY-DEPOSIT-BOX,FL-OPENED /FALSE
|
||||
?CCL71: ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is closed."
|
||||
?CCL68: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
PRINT K-RICOCHET-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-DIAL,CONTEXT,LOCK?,WHO,PTS
|
||||
ZERO? CONTEXT \FALSE
|
||||
ZERO? TH-DIAL-AUX1 \?CND1
|
||||
SET 'TH-DIAL-AUX1,TH-RIGHT
|
||||
?CND1: ZERO? GL-NOW-PRSI? \FALSE
|
||||
ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?TUNE-TO \?CCL12
|
||||
EQUAL? GL-PRSI,FALSE-VALUE,TH-LEFT,TH-RIGHT /?CCL12
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTI "can't "
|
||||
PRINTB GL-P-PRSA-WORD
|
||||
PRINTC 32
|
||||
ICALL2 RT-THEO-PRINT,TH-DIAL
|
||||
PRINTI " to "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTR "."
|
||||
?CCL12: EQUAL? GL-PRSA,V?TUNE-TO,V?SPIN,V?TURN \?CCL16
|
||||
EQUAL? GL-PRSI,FALSE-VALUE,TH-LEFT,TH-RIGHT /?CTR18
|
||||
EQUAL? GL-PRSI,TH-HANDS \?CCL19
|
||||
?CTR18: FSET? TH-STETHOSCOPE,FL-WORN /?CCL24
|
||||
SET 'LOCK?,1
|
||||
PRINTI "The dial turns smoothly."
|
||||
CRLF
|
||||
JUMP ?CND22
|
||||
?CCL24: EQUAL? GL-LISTEN-OBJ,TH-DIAL,LG-BANK-VAULT-DOOR,RM-BANK-VAULT /?CCL26
|
||||
SET 'LOCK?,1
|
||||
PRINTI "The dial turns quietly."
|
||||
CRLF
|
||||
JUMP ?CND22
|
||||
?CCL26: FSET? TH-COTTON-BALLS,FL-WORN \?CCL28
|
||||
SET 'LOCK?,1
|
||||
PRINTI "The dial turns with a series of muffled clicks."
|
||||
CRLF
|
||||
JUMP ?CND22
|
||||
?CCL28: FSET? LG-BANK-VAULT-DOOR,FL-OPENED \?CCL30
|
||||
SET 'LOCK?,2
|
||||
PRINTI "Clunk."
|
||||
CRLF
|
||||
JUMP ?CND22
|
||||
?CCL30: EQUAL? TH-DIAL-AUX1,GL-PRSI /?CCL32
|
||||
SET 'LOCK?,1
|
||||
PRINTI "Clunk."
|
||||
CRLF
|
||||
JUMP ?CND22
|
||||
?CCL32: INC 'TH-DIAL-AUX2
|
||||
?CND22: EQUAL? LOCK?,1 /?CND17
|
||||
EQUAL? TH-DIAL-AUX2,1 \?CCL37
|
||||
SET 'TH-DIAL-AUX1,TH-RIGHT
|
||||
PRINTI "Whirr."
|
||||
CRLF
|
||||
JUMP ?CND17
|
||||
?CCL37: EQUAL? TH-DIAL-AUX2,2 \?CCL39
|
||||
SET 'TH-DIAL-AUX1,TH-LEFT
|
||||
PRINTI "Click."
|
||||
CRLF
|
||||
JUMP ?CND17
|
||||
?CCL39: EQUAL? TH-DIAL-AUX2,3 \?CCL41
|
||||
SET 'TH-DIAL-AUX1,TH-RIGHT
|
||||
PRINTI "Click."
|
||||
CRLF
|
||||
JUMP ?CND17
|
||||
?CCL41: EQUAL? TH-DIAL-AUX2,4 \?CCL43
|
||||
SET 'TH-DIAL-AUX1,TH-RIGHT
|
||||
PRINTI "Whirr."
|
||||
CRLF
|
||||
JUMP ?CND17
|
||||
?CCL43: EQUAL? TH-DIAL-AUX2,5 \?CND17
|
||||
SET 'LOCK?,2
|
||||
PRINTI "Click. Kerchunk. The vault door swings open."
|
||||
CRLF
|
||||
CALL1 RT-WHO-SAYS? >WHO
|
||||
EQUAL? WHO,CH-HOLMES \?CND45
|
||||
CRLF
|
||||
PRINTI "Holmes says, ""Splendid, Watson. The net is drawing ever tighter around our quarry."""
|
||||
CRLF
|
||||
?CND45: GETP LG-BANK-VAULT-DOOR,P?VALUE >PTS
|
||||
ZERO? PTS /?CND17
|
||||
ICALL2 RT-UPDATE-SCORE,PTS
|
||||
PUTP LG-BANK-VAULT-DOOR,P?VALUE,0
|
||||
JUMP ?CND17
|
||||
?CCL19: ICALL1 RT-IMPOSSIBLE-MSG
|
||||
?CND17: EQUAL? LOCK?,1 \?CCL51
|
||||
SET 'TH-DIAL-AUX1,0
|
||||
SET 'TH-DIAL-AUX2,0
|
||||
RTRUE
|
||||
?CCL51: EQUAL? LOCK?,2 \TRUE
|
||||
SET 'TH-DIAL-AUX1,-1
|
||||
SET 'TH-DIAL-AUX2,-1
|
||||
FCLEAR LG-BANK-VAULT-DOOR,FL-LOCKED
|
||||
FSET LG-BANK-VAULT-DOOR,FL-OPENED
|
||||
RTRUE
|
||||
?CCL16: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
PRINT K-RICOCHET-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-BOXES,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
PRINTR "There are rows and rows of safety deposit boxes, all alike, numbered from 1 to 999."
|
||||
?CCL3: EQUAL? GL-PRSA,V?UNLOCK,V?LOCK,V?OPEN /?CTR4
|
||||
EQUAL? GL-PRSA,V?CLOSE,V?READ \?CCL5
|
||||
?CTR4: PRINT K-SPECIFY-MSG
|
||||
PRINTI "box by number."
|
||||
CRLF
|
||||
RETURN 2
|
||||
?CCL5: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
PRINT K-RICOCHET-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-GUARDS-POCKET
|
||||
EQUAL? GL-PRSA,V?LOOK-INSIDE,V?EXAMINE,V?SEARCH \?CCL3
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTR "can't see inside the guard's pocket."
|
||||
?CCL3: EQUAL? GL-PRSA,V?PUT \?CCL5
|
||||
ICALL1 RT-IMPOSSIBLE-MSG
|
||||
RTRUE
|
||||
?CCL5: EQUAL? GL-PRSA,V?TAKE,V?EMPTY,V?REACH-IN /?CCL7
|
||||
EQUAL? GL-PRSA,V?STEAL \FALSE
|
||||
?CCL7: ICALL2 RT-CTHEO-PRINT,CH-BANK-GUARD
|
||||
PRINTR " slaps the offending hand away and says, ""Keep your hands to yourself, mate."""
|
||||
|
||||
|
||||
.FUNCT RT-AC-CH-BANK-GUARD,CONTEXT,GEMCNT,OBJ
|
||||
ICALL2 RT-THIS-IS-IT,CH-BANK-GUARD
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
ICALL2 RT-CTHEO-PRINT,CH-BANK-GUARD
|
||||
PRINTR " is lounging against the wall, idly jangling some keys in his pocket and waiting for girls to walk by."
|
||||
?CCL3: CALL2 RT-TELL-ABOUT?,CH-BANK-GUARD
|
||||
ZERO? STACK /?CCL5
|
||||
EQUAL? GL-PRSA,V?WHO,V?WHAT \?CCL8
|
||||
SET 'OBJ,GL-PRSO
|
||||
JUMP ?CND6
|
||||
?CCL8: SET 'OBJ,GL-PRSI
|
||||
?CND6: PRINT K-GUARD-IGNORES-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL5: CALL1 RT-WHO-WHAT-FAIL?
|
||||
ZERO? STACK /?CCL10
|
||||
RETURN 2
|
||||
?CCL10: EQUAL? CONTEXT,K-M-WINNER \?CCL12
|
||||
EQUAL? GL-PRSA,V?GIVE \?CCL15
|
||||
EQUAL? GL-PRSO,TH-BOX-KEY,TH-GUARDS-KEYS \?CCL18
|
||||
PRINT K-SORRY-MATE-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL18: EQUAL? GL-PRSO,TH-OPAL,TH-RUBY,TH-SAPPHIRE /?CCL20
|
||||
EQUAL? GL-PRSO,TH-EMERALD \FALSE
|
||||
?CCL20: PRINT K-ILL-HOLD-IT-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL15: PRINT K-GUARD-IGNORES-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL12: ZERO? GL-NOW-PRSI? /?CCL24
|
||||
EQUAL? GL-PRSA,V?GIVE \?CCL27
|
||||
EQUAL? GL-PRSO,TH-OPAL,TH-RUBY,TH-SAPPHIRE /?CTR29
|
||||
EQUAL? GL-PRSO,TH-EMERALD \?CCL30
|
||||
?CTR29: MOVE GL-PRSO,CH-BANK-GUARD
|
||||
FSET GL-PRSO,FL-NOALL
|
||||
INC 'CH-BANK-GUARD-AUX1
|
||||
SET 'GEMCNT,CH-BANK-GUARD-AUX1
|
||||
EQUAL? GEMCNT,1 \?CCL35
|
||||
PRINTR """Now this is very nice. But I think I would need more than just one to make letting you in worth my while. I'll hold this for you until you come back."""
|
||||
?CCL35: EQUAL? GEMCNT,2 \?CCL37
|
||||
PRINTR """This is even more beautiful than the other one. But it isn't worth taking the risk for only two of them."""
|
||||
?CCL37: EQUAL? GEMCNT,3 \?CCL39
|
||||
PRINTR """One more and you're in."""
|
||||
?CCL39: EQUAL? GEMCNT,4 \TRUE
|
||||
ICALL2 RT-CTHEO-PRINT,CH-BANK-GUARD
|
||||
PRINTI " looks furtively up and down the street. Then he whispers to you out of the side of his mouth, ""Good enough. Go on in."""
|
||||
CRLF
|
||||
ICALL2 RT-UPDATE-SCORE,3
|
||||
RTRUE
|
||||
?CCL30: EQUAL? GL-PRSO,TH-BOX-KEY \?CCL42
|
||||
MOVE TH-BOX-KEY,TH-GUARDS-POCKET
|
||||
ICALL2 RT-CTHEO-PRINT,CH-BANK-GUARD
|
||||
PRINTR " looks surprised and says, ""Ta, mate. I didn't know I dropped it. I'll have to keep it in a safer place."" He puts the key into one of his inside pockets."
|
||||
?CCL42: EQUAL? GL-PRSO,TH-RED-GLASS \?CCL44
|
||||
ICALL2 RT-CTHEO-PRINT,CH-BANK-GUARD
|
||||
PRINTI " looks at it carefully and then hands it back to you, saying, ""For a moment there, I thought this was a ruby. But it's only a piece of glass."""
|
||||
CRLF
|
||||
CRLF
|
||||
PRINT K-MORE-VALUABLE-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL44: ICALL2 RT-CTHEO-PRINT,CH-BANK-GUARD
|
||||
PRINTI " examines what you are offering and then declines your bribe."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINT K-MORE-VALUABLE-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL27: EQUAL? GL-PRSA,V?TAKE \?CCL46
|
||||
EQUAL? GL-PRSO,TH-OPAL,TH-RUBY,TH-SAPPHIRE /?CTR48
|
||||
EQUAL? GL-PRSO,TH-EMERALD \?CCL49
|
||||
?CTR48: PRINT K-ILL-HOLD-IT-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL49: EQUAL? GL-PRSO,TH-BOX-KEY,TH-GUARDS-KEYS \?CCL53
|
||||
PRINT K-SORRY-MATE-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL53: EQUAL? GL-PRSO,CH-BANK-GUARD \FALSE
|
||||
ICALL2 RT-CTHEO-PRINT,CH-BANK-GUARD
|
||||
PRINT K-MUST-WEIGH-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL46: EQUAL? GL-PRSA,V?SHOW \FALSE
|
||||
EQUAL? GL-PRSO,TH-OPAL,TH-RUBY,TH-SAPPHIRE /?CTR59
|
||||
EQUAL? GL-PRSO,TH-EMERALD,TH-RED-GLASS \?CCL60
|
||||
?CTR59: PRINTR """My, what a loverly gem!"""
|
||||
?CCL60: EQUAL? GL-PRSO,TH-BOX-KEY \FALSE
|
||||
MOVE TH-BOX-KEY,TH-GUARDS-POCKET
|
||||
ICALL2 RT-CTHEO-PRINT,CH-BANK-GUARD
|
||||
PRINTR " looks surprised and says, ""Oh! Thank you. I must have dropped it. I'll be sure to keep it in a safer place."" He takes the key and puts it in one of his inside pockets."
|
||||
?CCL24: ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?TAKE \?CCL69
|
||||
EQUAL? GL-PRSI,FALSE-VALUE \FALSE
|
||||
ICALL2 RT-CTHEO-PRINT,CH-BANK-GUARD
|
||||
PRINT K-MUST-WEIGH-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL69: EQUAL? GL-PRSA,V?ASK-FOR \FALSE
|
||||
EQUAL? GL-PRSI,TH-BOX-KEY,TH-GUARDS-KEYS \?CCL77
|
||||
PRINT K-SORRY-MATE-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL77: EQUAL? GL-PRSI,TH-OPAL,TH-RUBY,TH-SAPPHIRE /?CCL79
|
||||
EQUAL? GL-PRSI,TH-EMERALD \FALSE
|
||||
?CCL79: PRINT K-ILL-HOLD-IT-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-CH-WIGGINS,CONTEXT,OBJ
|
||||
ICALL2 RT-THIS-IS-IT,CH-WIGGINS
|
||||
EQUAL? CONTEXT,K-M-WINNER \?CCL3
|
||||
FSET? GL-WINNER,FL-ASLEEP \?CCL3
|
||||
ICALL2 RT-NO-CONDITION-MSG,GL-WINNER
|
||||
RTRUE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-CONT \?CCL7
|
||||
FSET? CH-WIGGINS,FL-ASLEEP \?CCL7
|
||||
PRINTI "It's bad enough that you wasted the etherium; using it to steal from your friends is quite unsporting. "
|
||||
RTRUE
|
||||
?CCL7: EQUAL? CONTEXT,K-M-DESCFCN \?CCL11
|
||||
FSET? CH-WIGGINS,FL-ASLEEP \?CCL14
|
||||
PRINTR "Wiggins is still suffering from the effects of the etherium gas."
|
||||
?CCL14: FSET? CH-WIGGINS,FL-BROKEN \?CND12
|
||||
FCLEAR CH-WIGGINS,FL-BROKEN
|
||||
FCLEAR CH-WIGGINS,FL-NODESC
|
||||
FSET CH-WIGGINS,FL-SEEN
|
||||
PRINTI "After staring at his dirty face for a few moments, you suddenly recognize the boy. He is Wiggins, the head of the Baker Street Irregulars, which is Holmes's unofficial army of street urchins who ""go everywhere and do everything."""
|
||||
CRLF
|
||||
?CND12: CALL2 RT-PICK-NEXT,GL-WIGGINS-DESC-TXT
|
||||
PRINT STACK
|
||||
IN? CH-WIGGINS,TH-BOAT \?CCL18
|
||||
PRINT K-ENJOYING-RIDE-MSG
|
||||
JUMP ?CND16
|
||||
?CCL18: IN? CH-WIGGINS,TH-HANSOM-CAB /?CTR19
|
||||
IN? CH-WIGGINS,TH-GROWLER-CAB \?CCL20
|
||||
?CTR19: PRINT K-FIDGETING-MSG
|
||||
JUMP ?CND16
|
||||
?CCL20: CALL2 RT-PICK-NEXT,GL-WIGGINS-LOOK-TXT
|
||||
PRINT STACK
|
||||
?CND16: PRINTC 46
|
||||
CRLF
|
||||
RETURN 2
|
||||
?CCL11: CALL2 RT-TELL-ABOUT?,CH-WIGGINS
|
||||
ZERO? STACK /?CCL24
|
||||
EQUAL? GL-PRSA,V?WHO,V?WHAT \?CCL27
|
||||
SET 'OBJ,GL-PRSO
|
||||
JUMP ?CND25
|
||||
?CCL27: SET 'OBJ,GL-PRSI
|
||||
?CND25: FSET? CH-WIGGINS,FL-ASLEEP \?CCL30
|
||||
CALL2 RT-NO-CONDITION-MSG,CH-WIGGINS
|
||||
RSTACK
|
||||
?CCL30: EQUAL? GL-PRSA,V?WHO \?CCL32
|
||||
EQUAL? OBJ,CH-WIGGINS \?CCL32
|
||||
PRINTR """I'm Wiggins, 'ead o' the Baker Street Irregulars."""
|
||||
?CCL32: EQUAL? OBJ,CH-HOLMES \?CCL36
|
||||
PRINTR """E's a good man, guv'nor. Best as ever was."""
|
||||
?CCL36: PRINTR """Beats me. What do you think?"""
|
||||
?CCL24: CALL1 RT-WHO-WHAT-FAIL?
|
||||
ZERO? STACK /?CCL38
|
||||
RETURN 2
|
||||
?CCL38: EQUAL? CONTEXT,K-M-WINNER \?CCL40
|
||||
EQUAL? GL-PRSA,V?HELLO \?CCL43
|
||||
PRINTR """'Ello."""
|
||||
?CCL43: EQUAL? GL-PRSA,V?GOODBYE \?CCL45
|
||||
PRINTR """Ta ta."""
|
||||
?CCL45: EQUAL? GL-PRSA,V?THANK \?CCL47
|
||||
PRINTR """Anytime, mate."""
|
||||
?CCL47: EQUAL? GL-PRSA,V?WHERE \?CCL49
|
||||
PRINTR """Beats me. What do you think?"""
|
||||
?CCL49: ZERO? CH-WIGGINS-AUX1 \?CCL51
|
||||
ICALL2 RT-CTHEO-PRINT,CH-WIGGINS
|
||||
PRINT K-WOUNDED-PRIDE-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL51: EQUAL? GL-PRSA,V?ENTER \?CCL53
|
||||
EQUAL? GL-PRSO,TH-BUTT-OF-MALMSEY \?CCL56
|
||||
FSET? GL-PRSO,FL-BROKEN /?CCL56
|
||||
SET 'WIGGINS-COLD?,TRUE-VALUE
|
||||
PRINTR "Wiggins dutifully climbs into the full butt of malmsey and has a nice bath and gets out again."
|
||||
?CCL56: EQUAL? GL-PRSO,TH-BUTT-OF-MALMSEY \?CCL60
|
||||
IN? TH-GARNET,TH-BUTT-OF-MALMSEY \?CCL63
|
||||
MOVE TH-GARNET,CH-PLAYER
|
||||
ICALL2 RT-THIS-IS-IT,TH-GARNET
|
||||
SET 'WIGGINS-COLD?,TRUE-VALUE
|
||||
FSET TH-GARNET,FL-SEEN
|
||||
FSET TH-GARNET,FL-TOUCHED
|
||||
FCLEAR TH-GARNET,FL-NODESC
|
||||
PRINTI "Wiggins climbs into the empty butt of malmsey, gets the gem, gets out and gives it to you."
|
||||
CRLF
|
||||
GETP TH-GARNET,P?VALUE
|
||||
ICALL2 RT-UPDATE-SCORE,STACK
|
||||
PUTP TH-GARNET,P?VALUE,0
|
||||
RTRUE
|
||||
?CCL63: PRINTR "Wiggins says, ""Once was enough, thank you."""
|
||||
?CCL60: EQUAL? GL-PRSO,TH-HANSOM-CAB,TH-GROWLER-CAB,TH-BOAT \?CCL65
|
||||
IN? CH-HOLMES,RM-LAIR \?CCL68
|
||||
IN? CH-PLAYER,GL-PRSO \?CCL71
|
||||
PRINTI "Wiggins climbs in next to you."
|
||||
CRLF
|
||||
MOVE CH-WIGGINS,GL-PRSO
|
||||
JUMP ?CND69
|
||||
?CCL71: PRINT K-AFTER-YOU-MSG
|
||||
CRLF
|
||||
?CND69: SET 'GL-PUPPY,CH-WIGGINS
|
||||
FCLEAR CH-WIGGINS,FL-NODESC
|
||||
FCLEAR CH-WIGGINS,FL-BROKEN
|
||||
RTRUE
|
||||
?CCL68: PRINT K-CANT-LEAVE-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL65: EQUAL? GL-PRSO,LG-WATER \FALSE
|
||||
PRINTR """I ain't no bleedin' mermaid. Besides, bathing ain't 'ealthy."""
|
||||
?CCL53: EQUAL? GL-PRSA,V?TAKE,V?STEAL \?CCL75
|
||||
EQUAL? GL-PRSO,TH-GARNET \?CCL78
|
||||
IN? TH-GARNET,TH-BUTT-OF-MALMSEY \?CCL78
|
||||
MOVE TH-GARNET,CH-PLAYER
|
||||
ICALL2 RT-THIS-IS-IT,TH-GARNET
|
||||
SET 'WIGGINS-COLD?,TRUE-VALUE
|
||||
FSET TH-GARNET,FL-SEEN
|
||||
FSET TH-GARNET,FL-TOUCHED
|
||||
FCLEAR TH-GARNET,FL-NODESC
|
||||
ICALL2 RT-CTHEO-PRINT,CH-WIGGINS
|
||||
IN? CH-WIGGINS,TH-BUTT-OF-MALMSEY /?CND81
|
||||
PRINTI " climbs into the empty butt of malsey,"
|
||||
?CND81: PRINTI " gets the gem, gets out, and gives it to you."
|
||||
CRLF
|
||||
GETP TH-GARNET,P?VALUE
|
||||
ICALL2 RT-UPDATE-SCORE,STACK
|
||||
PUTP TH-GARNET,P?VALUE,0
|
||||
RTRUE
|
||||
?CCL78: EQUAL? GL-PRSO,TH-GUARDS-POCKET,TH-BOX-KEY,TH-GUARDS-KEYS /?CTR83
|
||||
EQUAL? GL-PRSI,TH-GUARDS-POCKET,CH-BANK-GUARD \?CCL84
|
||||
?CTR83: ICALL1 RT-STEAL-KEY
|
||||
RTRUE
|
||||
?CCL84: EQUAL? GL-PRSA,V?STEAL \FALSE
|
||||
PRINTR """I would if I could, guv. But I don't see 'ow to do it."""
|
||||
?CCL75: EQUAL? GL-PRSA,V?ROB \?CCL90
|
||||
EQUAL? GL-PRSO,CH-BANK-GUARD \?CCL90
|
||||
CALL1 RT-STEAL-KEY
|
||||
RSTACK
|
||||
?CCL90: EQUAL? GL-PRSA,V?EMPTY,V?REACH-IN,V?SEARCH \?CCL94
|
||||
EQUAL? GL-PRSO,TH-GUARDS-POCKET,CH-BANK-GUARD /?CTR96
|
||||
EQUAL? GL-PRSI,TH-GUARDS-POCKET,CH-BANK-GUARD \?CCL97
|
||||
?CTR96: ICALL1 RT-STEAL-KEY
|
||||
RTRUE
|
||||
?CCL97: PRINTR """I would if I could, guv. But I don't see 'ow to do it."""
|
||||
?CCL94: EQUAL? GL-PRSA,V?FOLLOW \?CCL101
|
||||
EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL104
|
||||
IN? CH-HOLMES,RM-LAIR \?CCL107
|
||||
PRINTI """After you, guv."""
|
||||
CRLF
|
||||
SET 'GL-PUPPY,CH-WIGGINS
|
||||
FCLEAR CH-WIGGINS,FL-NODESC
|
||||
FCLEAR CH-WIGGINS,FL-BROKEN
|
||||
RTRUE
|
||||
?CCL107: PRINT K-CANT-LEAVE-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL104: PRINTR """I'm not a bleedin' bloodhound."""
|
||||
?CCL101: EQUAL? GL-PRSA,V?WAIT \?CCL109
|
||||
EQUAL? GL-PUPPY,CH-WIGGINS \?CCL112
|
||||
SET 'GL-PUPPY,FALSE-VALUE
|
||||
PRINTR """Right. I'm glued to this spot."""
|
||||
?CCL112: PRINTR """Whatever you say, guv."""
|
||||
?CCL109: EQUAL? GL-PRSA,V?EXIT \?CCL114
|
||||
PRINT K-AFTER-YOU-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL114: EQUAL? GL-PRSA,V?PULL \?CCL116
|
||||
EQUAL? GL-PRSO,TH-PORTCULLIS-CHAIN \?CCL116
|
||||
PRINTR """I can't reach it, guv."""
|
||||
?CCL116: PRINTR "Wiggins looks at you and scratches his head."
|
||||
?CCL40: ZERO? GL-NOW-PRSI? /?CCL120
|
||||
EQUAL? GL-PRSA,V?GIVE \?CCL123
|
||||
FSET? CH-WIGGINS,FL-ASLEEP \?CCL126
|
||||
ICALL RT-NO-CONDITION-MSG,CH-WIGGINS,STR?812
|
||||
RTRUE
|
||||
?CCL126: EQUAL? GL-PRSO,TH-SHILLING \?CCL128
|
||||
MOVE TH-SHILLING,CH-WIGGINS
|
||||
FSET TH-SHILLING,FL-NOALL
|
||||
SET 'CH-WIGGINS-AUX1,1
|
||||
ZERO? GL-P-CONT \?CND129
|
||||
SET 'WINNER-IS-WIGGINS,TRUE-VALUE
|
||||
?CND129: SET 'GL-P-QCONTEXT-TH,CH-WIGGINS
|
||||
SET 'GL-P-QCONTEXT-RM,GL-PLACE-CUR
|
||||
PRINTI "Wiggins looks at "
|
||||
ICALL2 RT-THEO-PRINT,TH-SHILLING
|
||||
PRINTR " and then at you. After a few moments he stuffs it deep into the recesses of his clothing and says, ""I'm all yours. Wot's the plan?"""
|
||||
?CCL128: EQUAL? GL-PRSO,TH-EMERALD,TH-SAPPHIRE,TH-RUBY /?CTR131
|
||||
EQUAL? GL-PRSO,TH-OPAL,TH-TOPAZ,TH-GARNET /?CTR131
|
||||
EQUAL? GL-PRSO,TH-POUND-NOTE,TH-SIXPENCE \?CCL132
|
||||
?CTR131: PRINTI "Wiggins glances at your offer and"
|
||||
PRINT K-WOUNDED-PRIDE-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL132: PRINTR "Wiggins looks at the item you have handed him and then returns it to you. Clearly it was not of interest to him."
|
||||
?CCL123: EQUAL? GL-PRSA,V?TAKE \FALSE
|
||||
EQUAL? GL-PRSO,TH-SHILLING \FALSE
|
||||
FSET? CH-WIGGINS,FL-ASLEEP \?CCL142
|
||||
PRINTI "He must have hidden it very well. "
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTR "can't find it."
|
||||
?CCL142: PRINTR """Sorry, guv'nor. A deal's a deal."""
|
||||
?CCL120: ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?SMELL \FALSE
|
||||
ZERO? WIGGINS-COLD? /?CCL150
|
||||
PRINT K-EAU-DE-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL150: PRINTR "Yuck. Eau de urchin."
|
||||
|
||||
|
||||
.FUNCT RT-AC-CH-BUTLER,CONTEXT,WORD-NUM
|
||||
ICALL2 RT-THIS-IS-IT,CH-BUTLER
|
||||
EQUAL? CONTEXT,K-M-WINNER \?CCL3
|
||||
FSET? CH-BUTLER,FL-ASLEEP \?CCL6
|
||||
CALL2 RT-NO-CONDITION-MSG,CH-BUTLER
|
||||
RSTACK
|
||||
?CCL6: EQUAL? GL-PRSA,V?TAKE,V?FIND \?CCL8
|
||||
CALL RT-IDENTIFY-EVENT?,W?MYCROFT,GL-PRSO
|
||||
ZERO? STACK /?CCL8
|
||||
SET 'GL-WINNER,CH-PLAYER
|
||||
ICALL RT-PERFORM,V?ASK-FOR,CH-BUTLER,TH-EVENT
|
||||
RTRUE
|
||||
?CCL8: EQUAL? GL-PRSA,V?HELLO \?CCL12
|
||||
PRINTC 34
|
||||
CALL1 RT-TIME-OF-DAY
|
||||
ZERO? STACK \?CCL15
|
||||
PRINTI "How do you do?"
|
||||
JUMP ?CND13
|
||||
?CCL15: CALL1 RT-TIME-OF-DAY
|
||||
EQUAL? STACK,1,2 \?CCL17
|
||||
PRINTI "Good day."
|
||||
JUMP ?CND13
|
||||
?CCL17: CALL1 RT-TIME-OF-DAY
|
||||
EQUAL? STACK,3 \?CND13
|
||||
PRINTI "Good evening."
|
||||
?CND13: PRINTR """"
|
||||
?CCL12: EQUAL? GL-PRSA,V?GOODBYE \?CCL20
|
||||
PRINTC 34
|
||||
CALL1 RT-TIME-OF-DAY
|
||||
ZERO? STACK \?CCL23
|
||||
PRINTI "Good night"
|
||||
JUMP ?CND21
|
||||
?CCL23: CALL1 RT-TIME-OF-DAY
|
||||
EQUAL? STACK,1,2 \?CCL25
|
||||
PRINTI "Good day"
|
||||
JUMP ?CND21
|
||||
?CCL25: CALL1 RT-TIME-OF-DAY
|
||||
EQUAL? STACK,3 \?CND21
|
||||
PRINTI "Good evening"
|
||||
?CND21: PRINTR "."""
|
||||
?CCL20: EQUAL? GL-PRSA,V?THANK \?CCL28
|
||||
PRINTR """You're quite welcome."""
|
||||
?CCL28: EQUAL? GL-PRSA,V?WHO \?CCL30
|
||||
EQUAL? GL-PRSO,CH-BUTLER \?CCL30
|
||||
PRINTR """I am one of the staff of this fine establishment."""
|
||||
?CCL30: EQUAL? GL-PRSA,V?WHO,V?WHAT,V?WHERE \?CCL34
|
||||
PRINTR """I'm far too discreet to respond."""
|
||||
?CCL34: EQUAL? GL-PRSA,V?YES,V?NO \?CCL36
|
||||
ICALL2 RT-CTHEO-PRINT,CH-BUTLER
|
||||
PRINTR " looks at you expectantly."
|
||||
?CCL36: EQUAL? GL-PRSA,V?RESCUE \?CCL38
|
||||
PRINTR """What can I do for you?"""
|
||||
?CCL38: PRINTR """I'm afraid I am unable to do that."""
|
||||
?CCL3: ZERO? GL-NOW-PRSI? \?CCL40
|
||||
EQUAL? GL-PRSA,V?ASK-FOR,V?ASK-ABOUT \FALSE
|
||||
FSET? CH-BUTLER,FL-ASLEEP \?CCL46
|
||||
CALL2 RT-NO-CONDITION-MSG,CH-BUTLER
|
||||
RSTACK
|
||||
?CCL46: CALL RT-IDENTIFY-EVENT?,W?MYCROFT,GL-PRSI
|
||||
ZERO? STACK /?CCL48
|
||||
BTST MYCROFT-STATE,1 \?CCL51
|
||||
PRINTR """I am very sorry but Mr Mycroft Holmes is not available at this time. Perhaps you would care to come back later?"""
|
||||
?CCL51: BTST MYCROFT-STATE,2 \?CCL53
|
||||
BAND MYCROFT-STATE,-3 >MYCROFT-STATE
|
||||
PRINTI "The butler listens to you and then leaves. He comes back shortly."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTR """Mr Mycroft Holmes requires that you offer some token to verify that you are indeed the person you claim to be. Give whatever it is to me and I will take it to him."""
|
||||
?CCL53: PRINTR "The butler listens politely but insists that he can do nothing more for you than to deliver the token to Mr Mycroft Holmes."
|
||||
?CCL48: EQUAL? GL-PRSI,CH-HOLMES \?CCL55
|
||||
PRINTR """I am afraid that I know the younger Mr Holmes only by his somewhat colourful reputation."""
|
||||
?CCL55: EQUAL? GL-PRSI,CH-BUTLER \?CCL57
|
||||
PRINTR """I am well, sir. Thank you for asking."""
|
||||
?CCL57: EQUAL? GL-PRSI,CH-PLAYER,CH-ME \?CCL59
|
||||
PRINTR "He looks down his nose at you and sniffs, ""I don't believe we've been introduced."""
|
||||
?CCL59: EQUAL? GL-PRSI,CH-MEMBERS \?CCL61
|
||||
PRINTR """They seem livelier than usual for this time of year."""
|
||||
?CCL61: EQUAL? GL-PRSI,RM-DIOGENES-CLUB \?CCL63
|
||||
PRINTR "The butler coughs deferentially, ""It is one of the most exclusive clubs in London, sir."" He glances at your clothes. ""Membership is by invitation only."""
|
||||
?CCL63: FSET? GL-PRSI,FL-PERSON \?CCL65
|
||||
FSET? GL-PRSI,FL-PLURAL \?CCL68
|
||||
PRINTR """Unfortunately, I can say nothing about them."""
|
||||
?CCL68: FSET? GL-PRSI,FL-FEMALE \?CCL70
|
||||
PRINTR """I am sorry but I can tell you nothing about her."""
|
||||
?CCL70: PRINTR """Much to my regret I can tell you nothing about him."""
|
||||
?CCL65: PRINTR """I'm afraid I wouldn't know anything about that."""
|
||||
?CCL40: ZERO? GL-NOW-PRSI? /FALSE
|
||||
EQUAL? GL-PRSA,V?GIVE \FALSE
|
||||
FSET? CH-BUTLER,FL-ASLEEP \?CCL78
|
||||
CALL RT-NO-CONDITION-MSG,CH-BUTLER,STR?812
|
||||
RSTACK
|
||||
?CCL78: BTST MYCROFT-STATE,1 \?CCL80
|
||||
PRINTR "The butler politely declines to take the gift you have offered."
|
||||
?CCL80: BTST MYCROFT-STATE,2 \?CCL82
|
||||
PRINTR "The butler refuses to take the item you have offered and asks if you have come to speak with someone here in the club."
|
||||
?CCL82: EQUAL? GL-PRSO,TH-RING \?CCL84
|
||||
BOR MYCROFT-STATE,5 >MYCROFT-STATE
|
||||
REMOVE TH-RING
|
||||
PRINT K-BUTLER-ACCEPTS-MSG
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "After a few moments, Mycroft Holmes appears. He looks very worried."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI """Sherlock warned me that you might come,"" he says. ""And the fact that you are here indicates that he is indeed in trouble. I believe that in order to solve this mystery, you are going to have to go to the Tower of London. It will be closed, but you can give the password '"
|
||||
RANDOM 6 >WORD-NUM
|
||||
SET 'PASSWORD-ID,WORD-NUM
|
||||
EQUAL? WORD-NUM,1 \?CCL87
|
||||
PRINTI "Boleyn"
|
||||
JUMP ?CND85
|
||||
?CCL87: EQUAL? WORD-NUM,2 \?CCL89
|
||||
PRINTI "Cleves"
|
||||
JUMP ?CND85
|
||||
?CCL89: EQUAL? WORD-NUM,3 \?CCL91
|
||||
PRINTI "Howard"
|
||||
JUMP ?CND85
|
||||
?CCL91: EQUAL? WORD-NUM,4 \?CCL93
|
||||
PRINTI "Parr"
|
||||
JUMP ?CND85
|
||||
?CCL93: EQUAL? WORD-NUM,5 \?CCL95
|
||||
PRINTI "Aragon"
|
||||
JUMP ?CND85
|
||||
?CCL95: EQUAL? WORD-NUM,6 \?CND85
|
||||
PRINTI "Seymour"
|
||||
?CND85: PRINTI "' to the guard at the Byward Tower. He will let you in. Good luck."""
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "Mycroft pauses before he goes and looks at you meditatively, as if trying to decide if he can put his faith in you to rescue his brother. After a moment he gives his head an unconscious nod, then turns around and disappears back into the club."
|
||||
CRLF
|
||||
ICALL2 RT-UPDATE-SCORE,1
|
||||
RTRUE
|
||||
?CCL84: PRINT K-BUTLER-ACCEPTS-MSG
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "The butler soon returns looking concerned."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTR """I am sorry but Mr Mycroft Holmes says this will not do. Do you have anything else?"""
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-BANK-VAULT-DOOR,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
EQUAL? GL-PLACE-CUR,RM-BANK-OF-ENGLAND \?CCL6
|
||||
ICALL2 RT-OPEN-CLOSED-MSG,LG-BANK-VAULT-DOOR
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTR "In the middle of the door you see a big shiny dial."
|
||||
?CCL6: ICALL2 RT-OPEN-CLOSED-MSG,LG-BANK-VAULT-DOOR
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTR "The inside of the door is shiny and flat."
|
||||
?CCL3: EQUAL? GL-PRSA,V?OPEN \?CCL8
|
||||
FSET? LG-BANK-VAULT-DOOR,FL-OPENED \?CCL11
|
||||
PRINTR "The vault door is already open."
|
||||
?CCL11: FSET? LG-BANK-VAULT-DOOR,FL-LOCKED \?CCL13
|
||||
PRINTR "The vault door is locked."
|
||||
?CCL13: FSET LG-BANK-VAULT-DOOR,FL-OPENED
|
||||
PRINTR "The vault door swings open."
|
||||
?CCL8: EQUAL? GL-PRSA,V?CLOSE \?CCL15
|
||||
FSET? LG-BANK-VAULT-DOOR,FL-OPENED /?CCL18
|
||||
PRINTR "The vault door is already closed."
|
||||
?CCL18: FCLEAR LG-BANK-VAULT-DOOR,FL-OPENED
|
||||
FSET LG-BANK-VAULT-DOOR,FL-LOCKED
|
||||
SET 'TH-DIAL-AUX1,0
|
||||
SET 'TH-DIAL-AUX2,0
|
||||
PRINTI "The vault door swings closed and locks"
|
||||
IN? CH-PLAYER,RM-BANK-VAULT \?CCL21
|
||||
PRINTI " you in. Whoops!"
|
||||
CRLF
|
||||
CRLF
|
||||
CALL1 RT-QSR
|
||||
RSTACK
|
||||
?CCL21: PRINTR "."
|
||||
?CCL15: EQUAL? GL-PRSA,V?ENTER,V?THROUGH \?CCL23
|
||||
EQUAL? GL-PLACE-CUR,RM-BANK-VAULT \?CCL26
|
||||
CALL2 RT-DO-WALK,P?EAST
|
||||
RSTACK
|
||||
?CCL26: EQUAL? GL-PLACE-CUR,RM-BANK-OF-ENGLAND \FALSE
|
||||
CALL2 RT-DO-WALK,P?WEST
|
||||
RSTACK
|
||||
?CCL23: EQUAL? GL-PRSA,V?LOOK-INSIDE \?CCL30
|
||||
FSET? LG-BANK-VAULT-DOOR,FL-OPENED \?CCL33
|
||||
ICALL RT-CYOU-MSG,STR?665,STR?666
|
||||
PRINTI "row upon row of "
|
||||
ICALL2 DPRINT,TH-BOXES
|
||||
PRINTR "."
|
||||
?CCL33: ICALL2 RT-CTHEO-PRINT,LG-BANK-VAULT-DOOR
|
||||
PRINTR " is closed."
|
||||
?CCL30: EQUAL? GL-PRSA,V?UNLOCK \?CCL35
|
||||
FSET? LG-BANK-VAULT-DOOR,FL-OPENED \?CCL38
|
||||
ICALL2 RT-CTHEO-PRINT,LG-BANK-VAULT-DOOR
|
||||
PRINTR " is already opened."
|
||||
?CCL38: PRINT K-HOW-TO-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL35: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
PRINT K-RICOCHET-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-TOPAZ-MSG
|
||||
EQUAL? GL-PRSO,TH-TOPAZ \FALSE
|
||||
EQUAL? GL-PUPPY,CH-HOLMES \FALSE
|
||||
CRLF
|
||||
PRINTI "Holmes plucks you by the sleeve and reaches into the box. ""Observe, Watson."" He pulls out an almost invisible thread and examines it with glittering eyes. ""Muslin,"" he declares, more to himself than to you. ""Of Indian origin, and of the type used almost exclusively in the manufacture of turbans."" He looks at you in triumph. ""Our case is almost complete, Doctor. The Agra gems, the Trichinopoly cigar, and now this strand of muslin."""
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTR "Holmes puts the strand into his pocket and explains. ""Moriarty - for reasons as yet unknown to us - has stolen the Crown Jewels. The Agra gems have somehow passed into his hands by way of this Indian accomplice, and he is using small pieces of it to lure me into a rendezvous with him. It's a dangerous game we play, Watson, but if we are to recover the regalia we have no choice."""
|
||||
|
||||
.ENDI
|
972
bank.zil
Normal file
972
bank.zil
Normal file
|
@ -0,0 +1,972 @@
|
|||
;*****************************************************************************
|
||||
; "game : SHERLOCK!"
|
||||
; "file : BANK.ZIL"
|
||||
; "auth : $Author: RAB $"
|
||||
; "date : $Date: 28 Oct 1987 17:47:38 $"
|
||||
; "revs : $Revision: 1.89 $"
|
||||
; "vers : 1.00"
|
||||
;*****************************************************************************
|
||||
|
||||
<CONSTANT K-GEM-BOX-NUM 600> ;"Box number containing the gem."
|
||||
|
||||
<ROUTINE RT-KIDNAP ()
|
||||
<MOVE ,CH-HOLMES ,RM-LAIR>
|
||||
<MOVE ,TH-ROPE ,CH-HOLMES>
|
||||
<MC-MAKE ,CH-HOLMES ,FL-LOCKED>
|
||||
<SETG TH-ROPE-AUX1 ,CH-HOLMES>
|
||||
<SET-MYCROFT-STATE CLEAR ,MYCROFT-LOCKED>
|
||||
<SETG GL-PUPPY <>>
|
||||
<TELL
|
||||
CR
|
||||
"Suddenly, someone grabs you from behind, pins your arms to your sides, and
|
||||
covers up your head. You struggle fiercely to get loose, but to no
|
||||
avail. Then you hear a voice shout, \"Let him go, we've got the other
|
||||
one.\"" CR CR
|
||||
|
||||
"The person holding you knocks you on the head and flings you to the
|
||||
ground. You lose consciousness for a few moments, and when you awake, you
|
||||
are alone." CR CR
|
||||
|
||||
"Sherlock Holmes has been kidnapped." CR>
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE RT-WIGGINS-HELP-MSG ()
|
||||
<TELL
|
||||
CTHE ,CH-WIGGINS " says, \"I saw it all, guv'nor. But it was over before I
|
||||
could lift a finger. Mr 'Olmes was a friend to me, 'e was. And I'd do
|
||||
anyfing to 'elp you get 'im back.\"" CR>
|
||||
<SETG GL-PUPPY ,CH-WIGGINS>
|
||||
<MC-UNMAKE ,CH-WIGGINS ,FL-NODESC>
|
||||
<MC-UNMAKE ,CH-WIGGINS ,FL-BROKEN>
|
||||
<SETG GL-PUPPY-MSG? <>>>
|
||||
|
||||
<GLOBAL BOX-KEY-COLD? <>>
|
||||
|
||||
<ROUTINE RT-STEAL-KEY ()
|
||||
<COND (<F? ,BOX-KEY-COLD?>
|
||||
<SETG BOX-KEY-COLD? T>
|
||||
<MOVE ,TH-BOX-KEY ,CH-PLAYER>
|
||||
<TELL
|
||||
CTHE ,CH-WIGGINS " casually strolls past the guard and says, \"Cor blimey.
|
||||
That bird isn't 'alf built, is she?\" While the guard's attention is diverted,
|
||||
Wiggins's hand flashes in and out of his pocket. Then just as casually as
|
||||
before, he strolls back to you, slips something into your hand, and whispers,
|
||||
\"Sorry I couldn't get everything, guv. I 'ope this is enough.\"" CR>
|
||||
<RT-UPDATE-SCORE <GETP ,TH-BOX-KEY ,P?VALUE>>
|
||||
<PUTP ,TH-BOX-KEY ,P?VALUE 0>)
|
||||
(T
|
||||
<TELL "\"Sorry, guv. 'E'll never go for it twice.\"" CR>)>
|
||||
<RTRUE>>
|
||||
|
||||
<OBJECT TH-INTNUM
|
||||
(LOC GLOBAL-OBJECTS)
|
||||
(DESC "number")
|
||||
(FLAGS FL-NODESC FL-SEEN)
|
||||
(SYNONYM INTNUM NUMBER)
|
||||
(GENERIC RT-GN-INTNUM)
|
||||
(ACTION RT-AC-TH-INTNUM)>
|
||||
|
||||
<OBJECT TH-SAFETY-DEPOSIT-BOX
|
||||
(LOC RM-BANK-VAULT)
|
||||
(DESC "safety deposit box")
|
||||
(FLAGS FL-NODESC FL-CONTAINER FL-OPENABLE FL-LOCKED FL-HAS-DESCFCN)
|
||||
(SYNONYM INTNUM BOX)
|
||||
(ADJECTIVE SAFETY DEPOSIT BOX NUMBER)
|
||||
(SIZE 0 CAPACITY 10)
|
||||
(GENERIC RT-GN-INTNUM)
|
||||
(ACTION RT-AC-TH-SAFETY-DEPOSIT-BOX)>
|
||||
|
||||
<OBJECT TH-RING
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "ring")
|
||||
(FLAGS FL-TAKEABLE FL-NOALL FL-CLOTHING)
|
||||
(SYNONYM RING)
|
||||
(ADJECTIVE SIGNET)
|
||||
(VALUE 1)
|
||||
(SIZE 1 MASS 1)
|
||||
(ACTION RT-AC-TH-RING)>
|
||||
|
||||
<OBJECT TH-SHILLING
|
||||
(DESC "shilling")
|
||||
(FLAGS FL-TAKEABLE FL-MONEY)
|
||||
(SYNONYM SHILLING COIN)
|
||||
(VALUE 0)
|
||||
(SIZE 1 MASS 1)>
|
||||
|
||||
<OBJECT TH-BOX-KEY
|
||||
(LOC TH-GUARDS-POCKET)
|
||||
(DESC "key")
|
||||
(FLAGS FL-TAKEABLE FL-HAS-DESCFCN)
|
||||
(SYNONYM KEY)
|
||||
(ADJECTIVE MASTER)
|
||||
(SIZE 1)
|
||||
(VALUE 1)
|
||||
(ACTION RT-AC-TH-BOX-KEY)>
|
||||
|
||||
<OBJECT TH-BOX-LOCK
|
||||
(LOC RM-BANK-VAULT)
|
||||
(DESC "lock")
|
||||
(FLAGS FL-NODESC FL-CONTAINER FL-OPENED)
|
||||
(SYNONYM INTNUM)
|
||||
(ADJECTIVE LOCK NUMBER)
|
||||
(GENERIC RT-GN-INTNUM)
|
||||
(ACTION RT-AC-TH-BOX-LOCK)>
|
||||
|
||||
<OBJECT TH-BOXES
|
||||
(LOC RM-BANK-VAULT)
|
||||
(DESC "safety deposit boxes")
|
||||
(FLAGS FL-NODESC FL-PLURAL FL-OPENABLE FL-CONTAINER
|
||||
FL-HAS-DESCFCN)
|
||||
(SYNONYM BOXES)
|
||||
(ADJECTIVE SAFETY DEPOSIT)
|
||||
(ACTION RT-AC-TH-BOXES)>
|
||||
|
||||
<OBJECT TH-GUARDS-POCKET
|
||||
(LOC CH-BANK-GUARD)
|
||||
(DESC "guard's pocket")
|
||||
(FLAGS FL-NODESC FL-CONTAINER FL-OPENED FL-TRYTAKE)
|
||||
(SYNONYM POCKET)
|
||||
(ADJECTIVE HIS GUARD\'S)
|
||||
(SIZE 0 CAPACITY 10)
|
||||
(ACTION RT-AC-TH-GUARDS-POCKET)>
|
||||
|
||||
<ROUTINE RT-AC-TH-INTNUM ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-TH-AC "TH-INTNUM" .CONTEXT>>
|
||||
<COND (<MC-VERB? WAIT-FOR WAIT VERIFY>
|
||||
<RFALSE>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<RT-IMPOSSIBLE-MSG>
|
||||
<RTRUE>)
|
||||
(<NOT <MC-HERE? ,RM-BANK-VAULT>>
|
||||
<COND (<EQUAL? ,GL-P-NUMBER -1>
|
||||
<RT-CYOU-MSG "do" "does">
|
||||
<TELL "not see that here." CR>)
|
||||
(T
|
||||
<RT-CYOU-MSG "do" "does">
|
||||
<TELL "not need to use a number here." CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-RING ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-TH-AC "TH-RING" .CONTEXT>>
|
||||
<COND (<MC-THIS-PRSI?>
|
||||
<RFALSE>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? WEAR>
|
||||
<TELL "It's the wrong size." CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-BOX-KEY ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-TH-AC "TH-BOX-KEY" .CONTEXT>>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<OR <IN? ,TH-BOX-KEY ,TH-GUARDS-POCKET>
|
||||
<IN? ,TH-BOX-KEY ,CH-BANK-GUARD>>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "can't see it. The guard has it." CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<TELL
|
||||
CTHE ,TH-BOX-KEY " has the word \"Master\" written on it." CR>)>)
|
||||
(<MC-THIS-PRSI?>
|
||||
<RFALSE>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? TURN>
|
||||
<COND (<IN? ,TH-BOX-KEY ,TH-BOX-LOCK>
|
||||
<COND (<EQUAL? ,TH-BOX-KEY-AUX1 ,K-GEM-BOX-NUM>
|
||||
<COND (<MC-IS? ,TH-SAFETY-DEPOSIT-BOX ,FL-OPENED>
|
||||
<TELL "The box is already open." CR>)
|
||||
(T
|
||||
<SETG TH-SAFETY-DEPOSIT-BOX-AUX1 ,TH-BOX-KEY-AUX1>
|
||||
<RT-CYOU-MSG "open" "opens">
|
||||
<TELL "the box with the key.">
|
||||
<COND (<FIRST? ,TH-SAFETY-DEPOSIT-BOX>
|
||||
<TELL " Inside you see ">
|
||||
<RT-PRINT-CONTENTS-2 ,TH-SAFETY-DEPOSIT-BOX>
|
||||
<TELL ".">)>
|
||||
<MC-MAKE ,TH-SAFETY-DEPOSIT-BOX ,FL-OPENED>
|
||||
<MC-UNMAKE ,TH-SAFETY-DEPOSIT-BOX ,FL-LOCKED>
|
||||
<CRLF>)>)
|
||||
(T
|
||||
<RT-CYOU-MSG "open" "opens">
|
||||
<TELL ,K-NOTHING-INSIDE-MSG>
|
||||
<RT-YOU-MSG "lock" "locks">
|
||||
<TELL "it back up again." CR>)>)>)
|
||||
(<MC-VERB? READ>
|
||||
<COND (<OR <IN? ,TH-BOX-KEY ,TH-GUARDS-POCKET>
|
||||
<IN? ,TH-BOX-KEY ,CH-BANK-GUARD>>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "can't see it. The guard has it." CR>)
|
||||
(T
|
||||
<TELL "It says, \Master.\"" CR>)>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-BOX-LOCK ("OPTIONAL" (CONTEXT <>) "AUX" NUM)
|
||||
<DEBUGGING? <RT-DEBUG-TH-AC "TH-BOX-LOCK" .CONTEXT>>
|
||||
<COND (<EQUAL? ,GL-P-NUMBER -1>
|
||||
<COND (<ZERO? ,TH-BOX-LOCK-AUX1>
|
||||
<TELL ,K-SPECIFY-MSG "lock by number." CR>
|
||||
<RTRUE>)>)
|
||||
(<OR <L? ,GL-P-NUMBER 1>
|
||||
<G? ,GL-P-NUMBER 999>>
|
||||
<TELL "There is no lock number " N ,GL-P-NUMBER "." CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<SETG TH-BOX-LOCK-AUX1 ,GL-P-NUMBER>)>
|
||||
<SET NUM ,TH-BOX-LOCK-AUX1>
|
||||
<COND (<MC-THIS-PRSI?>
|
||||
<COND (<MC-VERB? PUT>
|
||||
<COND (<MC-PRSO? ,TH-BOX-KEY>
|
||||
<MOVE ,TH-BOX-KEY ,TH-BOX-LOCK>
|
||||
<SETG TH-BOX-KEY-AUX1 ,TH-BOX-LOCK-AUX1>
|
||||
<TELL "The key fits nicely." CR>)
|
||||
(T
|
||||
<RT-CANT-PUT-IN-ON-MSG>)>)
|
||||
(<MC-VERB? TAKE>
|
||||
<COND (<NOT <MC-PRSO? ,TH-BOX-KEY>>
|
||||
<RFALSE>)
|
||||
(<IN? ,TH-BOX-KEY ,TH-BOX-LOCK>
|
||||
<MOVE ,TH-BOX-KEY ,GL-WINNER>
|
||||
<SETG TH-BOX-KEY-AUX1 0>
|
||||
<TELL "The key comes out smoothly." CR>)>)>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? SHOOT>
|
||||
<TELL ,K-RICOCHET-MSG CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-SAFETY-DEPOSIT-BOX ("OPTIONAL" (CONTEXT <>) "AUX" NUM)
|
||||
<DEBUGGING? <RT-DEBUG-TH-AC "TH-SAFETY-DEPOSIT-BOX" .CONTEXT>>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<SET NUM ,TH-SAFETY-DEPOSIT-BOX-AUX1>
|
||||
<TELL "It looks the same as all the other boxes." CR>
|
||||
<RTRUE>)
|
||||
(<EQUAL? ,GL-P-NUMBER -1>
|
||||
<COND (<ZERO? ,TH-SAFETY-DEPOSIT-BOX-AUX1>
|
||||
<TELL ,K-SPECIFY-MSG "box by number." CR>
|
||||
<RTRUE>)
|
||||
(<MC-IS? ,TH-SAFETY-DEPOSIT-BOX ,FL-OPENED>
|
||||
<SETG TH-SAFETY-DEPOSIT-BOX-AUX1 600>)>)
|
||||
(<OR <L? ,GL-P-NUMBER 1>
|
||||
<G? ,GL-P-NUMBER 999>>
|
||||
<TELL "There is no box number " N ,GL-P-NUMBER "." CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<SETG TH-SAFETY-DEPOSIT-BOX-AUX1 ,GL-P-NUMBER>)>
|
||||
<SET NUM ,TH-SAFETY-DEPOSIT-BOX-AUX1>
|
||||
<COND (<MC-THIS-PRSI?>
|
||||
<COND (<MC-VERB? TAKE PUT FILL EMPTY-INTO POUR-FROM>
|
||||
<COND (<OR <NOT <EQUAL? .NUM ,K-GEM-BOX-NUM>>
|
||||
<MC-ISNOT? ,TH-SAFETY-DEPOSIT-BOX ,FL-OPENED>>
|
||||
<TELL CTHEI " is closed." CR>)>)>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? UNLOCK OPEN OPEN-WITH>
|
||||
<COND (<NOT <MC-PRSI? <> ,TH-BOX-KEY>>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "can't " VW " " THEO " with " THEI "." CR>)
|
||||
(<AND <NOT <IN? ,TH-BOX-KEY ,GL-WINNER>>
|
||||
<NOT <EQUAL? .NUM ,TH-BOX-KEY-AUX1>>>
|
||||
<RT-CYOU-MSG "do" "does">
|
||||
<TELL "not have the key." CR>)
|
||||
(<EQUAL? .NUM ,K-GEM-BOX-NUM>
|
||||
<COND (<MC-IS? ,TH-SAFETY-DEPOSIT-BOX ,FL-OPENED>
|
||||
<TELL "It is already open." CR>)
|
||||
(T
|
||||
<RT-CYOU-MSG "open" "opens">
|
||||
<TELL "the box with the key.">
|
||||
<COND (<FIRST? ,TH-SAFETY-DEPOSIT-BOX>
|
||||
<TELL " Inside you see ">
|
||||
<RT-PRINT-CONTENTS-2 ,TH-SAFETY-DEPOSIT-BOX>
|
||||
<TELL ".">)>
|
||||
<MC-MAKE ,TH-SAFETY-DEPOSIT-BOX ,FL-OPENED>
|
||||
<MC-UNMAKE ,TH-SAFETY-DEPOSIT-BOX ,FL-LOCKED>
|
||||
<CRLF>)>)
|
||||
(T
|
||||
<RT-CYOU-MSG "open" "opens">
|
||||
<TELL ,K-NOTHING-INSIDE-MSG>
|
||||
<RT-YOU-MSG "lock" "locks">
|
||||
<TELL "it back up again." CR>)>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? LOCK CLOSE>
|
||||
<COND (<EQUAL? .NUM ,K-GEM-BOX-NUM>
|
||||
<COND (<AND <NOT <IN? ,TH-BOX-KEY ,GL-WINNER>>
|
||||
<NOT <EQUAL? .NUM ,TH-BOX-KEY-AUX1>>>
|
||||
<RT-CYOU-MSG "do" "does">
|
||||
<TELL "not have the key." CR>)
|
||||
(<MC-ISNOT? ,TH-SAFETY-DEPOSIT-BOX ,FL-OPENED>
|
||||
<TELL ,K-CLOSED-AND-LOCKED-MSG CR>)
|
||||
(T
|
||||
<RT-CYOU-MSG "close and lock"
|
||||
"closes and locks">
|
||||
<TELL "the box with the key.">
|
||||
<MC-UNMAKE ,TH-SAFETY-DEPOSIT-BOX ,FL-OPENED>
|
||||
<MC-MAKE ,TH-SAFETY-DEPOSIT-BOX ,FL-LOCKED>
|
||||
<CRLF>)>)
|
||||
(T
|
||||
<TELL ,K-CLOSED-AND-LOCKED-MSG CR>)>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? READ>
|
||||
<TELL N ,TH-SAFETY-DEPOSIT-BOX-AUX1 CR>)
|
||||
(<MC-VERB? LOOK-INSIDE SEARCH>
|
||||
<COND (<OR <NOT <EQUAL? .NUM ,K-GEM-BOX-NUM>>
|
||||
<MC-ISNOT? ,TH-SAFETY-DEPOSIT-BOX ,FL-OPENED>>
|
||||
<TELL CTHEO " is closed." CR>)
|
||||
(T
|
||||
<TELL "Inside " THEO>
|
||||
<RT-YOU-MSG "see" "sees">
|
||||
<RT-PRINT-CONTENTS-2 ,TH-SAFETY-DEPOSIT-BOX>
|
||||
<TELL "." CR>)>)
|
||||
(<MC-VERB? EMPTY REACH-IN>
|
||||
<COND (<OR <NOT <EQUAL? .NUM ,K-GEM-BOX-NUM>>
|
||||
<MC-ISNOT? ,TH-SAFETY-DEPOSIT-BOX ,FL-OPENED>>
|
||||
<TELL CTHEO " is closed." CR>)>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<TELL ,K-RICOCHET-MSG CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-DIAL ("OPTIONAL" (CONTEXT <>) "AUX" (LOCK? 0) WHO PTS)
|
||||
<DEBUGGING? <RT-DEBUG-TH-AC "TH-DIAL" .CONTEXT>>
|
||||
<COND (<MC-T? .CONTEXT> <RFALSE>)
|
||||
(<ZERO? ,TH-DIAL-AUX1>
|
||||
<SETG TH-DIAL-AUX1 ,TH-RIGHT>)>
|
||||
<COND (<MC-THIS-PRSI?>
|
||||
<RFALSE>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<AND <MC-VERB? TUNE-TO>
|
||||
<NOT <MC-PRSI? <> TH-LEFT TH-RIGHT>>>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "can't " VW " " THE ,TH-DIAL " to " THEI "." CR>)
|
||||
(<MC-VERB? TUNE-TO SPIN TURN>
|
||||
<COND (<MC-PRSI? <> TH-LEFT TH-RIGHT TH-HANDS>
|
||||
<COND (<MC-ISNOT? ,TH-STETHOSCOPE ,FL-WORN>
|
||||
<SET LOCK? 1>
|
||||
<TELL "The dial turns smoothly." CR>)
|
||||
(<NOT <MC-LISTEN? ,TH-DIAL
|
||||
,LG-BANK-VAULT-DOOR
|
||||
,RM-BANK-VAULT>>
|
||||
<SET LOCK? 1>
|
||||
<TELL "The dial turns quietly." CR>)
|
||||
(<MC-IS? ,TH-COTTON-BALLS ,FL-WORN>
|
||||
<SET LOCK? 1>
|
||||
<TELL "The dial turns with a series of muffled clicks." CR>)
|
||||
(<MC-IS? ,LG-BANK-VAULT-DOOR ,FL-OPENED>
|
||||
<SET LOCK? 2>
|
||||
<TELL "Clunk." CR>)
|
||||
(<NOT <EQUAL? ,TH-DIAL-AUX1 ,GL-PRSI>>
|
||||
<SET LOCK? 1>
|
||||
<TELL "Clunk." CR>)
|
||||
(T
|
||||
<SETG TH-DIAL-AUX2 <+ ,TH-DIAL-AUX2 1>>)>
|
||||
<COND (<EQUAL? .LOCK? 1> T)
|
||||
(<EQUAL? ,TH-DIAL-AUX2 1>
|
||||
<SETG TH-DIAL-AUX1 ,TH-RIGHT>
|
||||
<TELL "Whirr." CR>)
|
||||
(<EQUAL? ,TH-DIAL-AUX2 2>
|
||||
<SETG TH-DIAL-AUX1 ,TH-LEFT>
|
||||
<TELL "Click." CR>)
|
||||
(<EQUAL? ,TH-DIAL-AUX2 3>
|
||||
<SETG TH-DIAL-AUX1 ,TH-RIGHT>
|
||||
<TELL "Click." CR>)
|
||||
(<EQUAL? ,TH-DIAL-AUX2 4>
|
||||
<SETG TH-DIAL-AUX1 ,TH-RIGHT>
|
||||
<TELL "Whirr." CR>)
|
||||
(<EQUAL? ,TH-DIAL-AUX2 5>
|
||||
<SET LOCK? 2>
|
||||
<TELL "Click. Kerchunk. The vault door swings open." CR>
|
||||
<SET WHO <RT-WHO-SAYS?>>
|
||||
<COND (<EQUAL? .WHO ,CH-HOLMES>
|
||||
<TELL CR
|
||||
"Holmes says, \"Splendid, Watson. The net is drawing ever tighter
|
||||
around our quarry.\"" CR>)>
|
||||
<SET PTS <GETP ,LG-BANK-VAULT-DOOR
|
||||
,P?VALUE>>
|
||||
<COND (<NOT <ZERO? .PTS>>
|
||||
<RT-UPDATE-SCORE .PTS>
|
||||
<PUTP ,LG-BANK-VAULT-DOOR
|
||||
,P?VALUE 0>)>)>)
|
||||
(T
|
||||
<RT-IMPOSSIBLE-MSG>)>
|
||||
<COND (<EQUAL? .LOCK? 1>
|
||||
<SETG TH-DIAL-AUX1 0>
|
||||
<SETG TH-DIAL-AUX2 0>)
|
||||
(<EQUAL? .LOCK? 2>
|
||||
<SETG TH-DIAL-AUX1 -1>
|
||||
<SETG TH-DIAL-AUX2 -1>
|
||||
<MC-UNMAKE ,LG-BANK-VAULT-DOOR ,FL-LOCKED>
|
||||
<MC-MAKE ,LG-BANK-VAULT-DOOR ,FL-OPENED>)>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<TELL ,K-RICOCHET-MSG CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-BOXES ("OPT" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-BOXES">>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<TELL
|
||||
"There are rows and rows of safety deposit boxes, all alike, numbered from 1
|
||||
to 999." CR>)
|
||||
(<MC-VERB? UNLOCK LOCK OPEN CLOSE READ>
|
||||
<TELL ,K-SPECIFY-MSG "box by number." CR>
|
||||
<RFATAL>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<TELL ,K-RICOCHET-MSG CR>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-GUARDS-POCKET ()
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-GUARDS-POCKET">>
|
||||
<COND (<MC-VERB? LOOK-INSIDE EXAMINE SEARCH>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "can't see inside the guard's pocket." CR>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? PUT>
|
||||
<RT-IMPOSSIBLE-MSG>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? TAKE EMPTY REACH-IN STEAL>
|
||||
<TELL
|
||||
CTHE ,CH-BANK-GUARD " slaps the offending hand away and says, \"Keep your
|
||||
hands to yourself, mate.\"" CR>
|
||||
<RTRUE>)>>
|
||||
|
||||
<ROUTINE RT-AC-CH-BANK-GUARD ("OPTIONAL" (CONTEXT <>) "AUX" GEMCNT OBJ)
|
||||
<DEBUGGING? <RT-DEBUG-CH-AC "CH-BANK-GUARD" .CONTEXT>>
|
||||
<RT-THIS-IS-IT ,CH-BANK-GUARD>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<TELL
|
||||
CTHE ,CH-BANK-GUARD " is lounging against the wall, idly jangling some keys
|
||||
in his pocket and waiting for girls to walk by." CR>
|
||||
<RTRUE>)
|
||||
(<RT-TELL-ABOUT? ,CH-BANK-GUARD>
|
||||
<SET OBJ <COND (<MC-VERB? WHO WHAT>
|
||||
,GL-PRSO)
|
||||
(T
|
||||
,GL-PRSI)>>
|
||||
<TELL ,K-GUARD-IGNORES-MSG CR>)
|
||||
(<RT-WHO-WHAT-FAIL?>
|
||||
<RFATAL>)
|
||||
(<MC-THIS-WINNER?>
|
||||
<COND (<MC-VERB? GIVE>
|
||||
<COND (<MC-PRSO? ,TH-BOX-KEY ,TH-GUARDS-KEYS>
|
||||
<TELL ,K-SORRY-MATE-MSG CR>)
|
||||
(<MC-PRSO? ,TH-OPAL ,TH-RUBY ,TH-SAPPHIRE ,TH-EMERALD>
|
||||
<TELL ,K-ILL-HOLD-IT-MSG CR>)>)
|
||||
(T
|
||||
<TELL ,K-GUARD-IGNORES-MSG CR>)>)
|
||||
(<MC-THIS-PRSI?>
|
||||
<COND (<MC-VERB? GIVE>
|
||||
<COND (<MC-PRSO? ,TH-OPAL ,TH-RUBY ,TH-SAPPHIRE ,TH-EMERALD>
|
||||
<MOVE ,GL-PRSO ,CH-BANK-GUARD>
|
||||
<MC-MAKE ,GL-PRSO ,FL-NOALL>
|
||||
<SET GEMCNT ,CH-BANK-GUARD-AUX1>
|
||||
<INC GEMCNT>
|
||||
<SETG CH-BANK-GUARD-AUX1 .GEMCNT>
|
||||
<COND (<EQUAL? .GEMCNT 1>
|
||||
;<COND (<MC-F? <BAND ,CH-HOLMES-AUX1
|
||||
,K-HOLMES-GEM?>>
|
||||
<SETG CH-HOLMES-AUX1 <BOR ,CH-HOLMES-AUX1
|
||||
,K-HOLMES-GEM?>>
|
||||
<MOVE ,TH-RING ,CH-PLAYER>
|
||||
<MC-MAKE ,TH-RING ,FL-SEEN>
|
||||
<MC-MAKE ,TH-RING ,FL-TOUCHED>
|
||||
<MC-UNMAKE ,TH-RING ,FL-NODESC>
|
||||
<TELL
|
||||
"Holmes intercepts the gem on it's way to the guard. He">
|
||||
<RT-HOLMES-SAYS-AGRA-MSG>
|
||||
<RT-UPDATE-SCORE <GETP ,TH-RING ,P?VALUE>>
|
||||
<PUTP ,TH-RING ,P?VALUE 0>)>
|
||||
<TELL
|
||||
"\"Now this is very nice. But I think I would need more than just one to make
|
||||
letting you in worth my while. I'll hold this for you until you come back.\""
|
||||
CR>)
|
||||
(<EQUAL? .GEMCNT 2>
|
||||
<TELL
|
||||
"\"This is even more beautiful than the other one. But it isn't worth taking
|
||||
the risk for only two of them.\"" CR>)
|
||||
(<EQUAL? .GEMCNT 3>
|
||||
<TELL "\"One more and you're in.\"" CR>)
|
||||
(<EQUAL? .GEMCNT 4>
|
||||
<TELL
|
||||
CTHE ,CH-BANK-GUARD " looks furtively up and down the street. Then he
|
||||
whispers to you out of the side of his mouth, \"Good enough. Go on in.\"" CR>
|
||||
<RT-UPDATE-SCORE 3>)>
|
||||
<RTRUE>)
|
||||
(<MC-PRSO? ,TH-BOX-KEY>
|
||||
<MOVE ,TH-BOX-KEY ,TH-GUARDS-POCKET>
|
||||
<TELL
|
||||
CTHE ,CH-BANK-GUARD " looks surprised and says, \"Ta, mate. I didn't know
|
||||
I dropped it. I'll have to keep it in a safer place.\" He puts the key
|
||||
into one of his inside pockets." CR>)
|
||||
(<MC-PRSO? ,TH-RED-GLASS>
|
||||
<TELL
|
||||
CTHE ,CH-BANK-GUARD " looks at it carefully and then hands it back
|
||||
to you, saying, \"For a moment there, I thought this was a ruby. But
|
||||
it's only a piece of glass.\"" CR CR ,K-MORE-VALUABLE-MSG CR>)
|
||||
(T
|
||||
<TELL
|
||||
CTHE ,CH-BANK-GUARD " examines what you are offering and then declines
|
||||
your bribe." CR CR ,K-MORE-VALUABLE-MSG CR>)>)
|
||||
(<MC-VERB? TAKE>
|
||||
<COND (<MC-PRSO? ,TH-OPAL ,TH-RUBY ,TH-SAPPHIRE ,TH-EMERALD>
|
||||
<TELL ,K-ILL-HOLD-IT-MSG CR>)
|
||||
(<MC-PRSO? ,TH-BOX-KEY ,TH-GUARDS-KEYS>
|
||||
<TELL ,K-SORRY-MATE-MSG CR>)
|
||||
(<MC-PRSO? CH-BANK-GUARD>
|
||||
<TELL CTHE ,CH-BANK-GUARD ,K-MUST-WEIGH-MSG CR>)>)
|
||||
(<MC-VERB? SHOW>
|
||||
<COND (<MC-PRSO? ,TH-OPAL ,TH-RUBY ,TH-SAPPHIRE ,TH-EMERALD
|
||||
,TH-RED-GLASS>
|
||||
<TELL "\"My, what a loverly gem!\"" CR>)
|
||||
(<MC-PRSO? ,TH-BOX-KEY>
|
||||
<MOVE ,TH-BOX-KEY ,TH-GUARDS-POCKET>
|
||||
<TELL
|
||||
CTHE ,CH-BANK-GUARD " looks surprised and says, \"Oh! Thank you. I must have
|
||||
dropped it. I'll be sure to keep it in a safer place.\" He takes the key and
|
||||
puts it in one of his inside pockets." CR>)>)>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? TAKE>
|
||||
<COND (<MC-PRSI? <>>
|
||||
<TELL CTHE ,CH-BANK-GUARD ,K-MUST-WEIGH-MSG CR>)>)
|
||||
(<MC-VERB? ASK-FOR>
|
||||
<COND (<MC-PRSI? ,TH-BOX-KEY ,TH-GUARDS-KEYS>
|
||||
<TELL ,K-SORRY-MATE-MSG CR>)
|
||||
(<MC-PRSI? ,TH-OPAL ,TH-RUBY ,TH-SAPPHIRE ,TH-EMERALD>
|
||||
<TELL ,K-ILL-HOLD-IT-MSG CR>)>)>)>>
|
||||
|
||||
<GLOBAL WIGGINS-COLD? <>>
|
||||
|
||||
<ROUTINE RT-AC-CH-WIGGINS ("OPTIONAL" (CONTEXT <>) OBJ)
|
||||
<DEBUGGING? <RT-DEBUG-CH-AC "CH-WIGGINS" .CONTEXT>>
|
||||
<RT-THIS-IS-IT ,CH-WIGGINS>
|
||||
<COND (<AND <MC-THIS-WINNER?>
|
||||
<FSET? ,GL-WINNER ,FL-ASLEEP>>
|
||||
<RT-NO-CONDITION-MSG ,GL-WINNER>
|
||||
<RTRUE>)
|
||||
(<AND <==? .CONTEXT ,K-M-CONT>
|
||||
<FSET? ,CH-WIGGINS ,FL-ASLEEP>>
|
||||
<TELL "It's bad enough that you wasted the etherium; using it to
|
||||
steal from your friends is quite unsporting. ">
|
||||
<RTRUE>)
|
||||
(<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<FSET? ,CH-WIGGINS ,FL-ASLEEP>
|
||||
<TELL "Wiggins is still suffering from the effects of the
|
||||
etherium gas." CR>
|
||||
<RTRUE>)
|
||||
(<MC-IS? ,CH-WIGGINS ,FL-BROKEN>
|
||||
<MC-UNMAKE ,CH-WIGGINS ,FL-BROKEN>
|
||||
<MC-UNMAKE ,CH-WIGGINS ,FL-NODESC>
|
||||
<MC-MAKE ,CH-WIGGINS ,FL-SEEN>
|
||||
<TELL
|
||||
"After staring at his dirty face for a few moments, you suddenly
|
||||
recognize the boy. He is Wiggins, the head of the Baker Street
|
||||
Irregulars, which is Holmes's unofficial army of street urchins
|
||||
who \"go everywhere and do everything.\"" CR>)>
|
||||
<TELL <RT-PICK-NEXT ,GL-WIGGINS-DESC-TXT>>
|
||||
<COND (<IN? ,CH-WIGGINS ,TH-BOAT>
|
||||
<TELL ,K-ENJOYING-RIDE-MSG>)
|
||||
(<OR <IN? ,CH-WIGGINS ,TH-HANSOM-CAB>
|
||||
<IN? ,CH-WIGGINS ,TH-GROWLER-CAB>>
|
||||
<TELL ,K-FIDGETING-MSG>)
|
||||
(T
|
||||
<TELL <RT-PICK-NEXT ,GL-WIGGINS-LOOK-TXT>>)>
|
||||
<TELL "." CR>
|
||||
<RETURN 2>)
|
||||
(<RT-TELL-ABOUT? ,CH-WIGGINS>
|
||||
<SET OBJ <COND (<MC-VERB? WHO WHAT>
|
||||
,GL-PRSO)
|
||||
(T
|
||||
,GL-PRSI)>>
|
||||
<COND (<MC-IS? ,CH-WIGGINS ,FL-ASLEEP>
|
||||
<RT-NO-CONDITION-MSG ,CH-WIGGINS>)
|
||||
(<AND <MC-VERB? WHO>
|
||||
<EQUAL? .OBJ ,CH-WIGGINS>>
|
||||
<TELL
|
||||
"\"I'm Wiggins, 'ead o' the Baker Street Irregulars.\""
|
||||
CR>)
|
||||
(<EQUAL? .OBJ ,CH-HOLMES>
|
||||
<TELL "\"E's a good man, guv'nor. Best as ever was.\"" CR>)
|
||||
(T
|
||||
<TELL "\"Beats me. What do you think?\"" CR>)>)
|
||||
(<RT-WHO-WHAT-FAIL?>
|
||||
<RFATAL>)
|
||||
(<MC-THIS-WINNER?>
|
||||
<COND (<MC-VERB? HELLO>
|
||||
<TELL "\"'Ello.\"" CR>)
|
||||
(<MC-VERB? GOODBYE>
|
||||
<TELL "\"Ta ta.\"" CR>)
|
||||
(<MC-VERB? THANK>
|
||||
<TELL "\"Anytime, mate.\"" CR>)
|
||||
(<MC-VERB? WHERE>
|
||||
<TELL "\"Beats me. What do you think?\"" CR>)
|
||||
(<ZERO? ,CH-WIGGINS-AUX1>
|
||||
<TELL CTHE ,CH-WIGGINS ,K-WOUNDED-PRIDE-MSG CR>)
|
||||
(<MC-VERB? ENTER>
|
||||
<COND (<AND <MC-PRSO? ,TH-BUTT-OF-MALMSEY>
|
||||
<NOT <FSET? ,GL-PRSO ,FL-BROKEN>>>
|
||||
;<COND (<IN? ,CH-WIGGINS ,TH-BUTT-OF-MALMSEY>
|
||||
<TELL "He's already up to his ears in malmsey."
|
||||
CR>)
|
||||
(T)>
|
||||
<SETG WIGGINS-COLD? T>
|
||||
<TELL
|
||||
"Wiggins dutifully climbs into the full butt of malmsey and has a
|
||||
nice bath and gets out again." CR>)
|
||||
(<MC-PRSO? ,TH-BUTT-OF-MALMSEY>
|
||||
<COND ;(<IN? ,CH-WIGGINS ,TH-BUTT-OF-MALMSEY>
|
||||
<TELL "He's already in it." CR>)
|
||||
(<IN? ,TH-GARNET ,TH-BUTT-OF-MALMSEY>
|
||||
<MOVE ,TH-GARNET ,CH-PLAYER>
|
||||
<RT-THIS-IS-IT ,TH-GARNET>
|
||||
<SETG WIGGINS-COLD? T>
|
||||
<MC-MAKE ,TH-GARNET ,FL-SEEN>
|
||||
<MC-MAKE ,TH-GARNET ,FL-TOUCHED>
|
||||
<MC-UNMAKE ,TH-GARNET ,FL-NODESC>
|
||||
<TELL
|
||||
"Wiggins climbs into the empty butt of malmsey, gets the gem, gets
|
||||
out and gives it to you." CR>
|
||||
<RT-UPDATE-SCORE <GETP ,TH-GARNET ,P?VALUE>>
|
||||
<PUTP ,TH-GARNET ,P?VALUE 0>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<TELL
|
||||
"Wiggins says, \"Once was enough, thank you.\""
|
||||
CR>)>)
|
||||
(<MC-PRSO? ,TH-HANSOM-CAB ,TH-GROWLER-CAB ,TH-BOAT>
|
||||
<COND (<IN? ,CH-HOLMES ,RM-LAIR>
|
||||
<COND (<IN? ,CH-PLAYER ,GL-PRSO>
|
||||
<TELL "Wiggins climbs in next to you."
|
||||
CR>
|
||||
<MOVE ,CH-WIGGINS ,GL-PRSO>)
|
||||
(T
|
||||
<TELL ,K-AFTER-YOU-MSG CR>)>
|
||||
<SETG GL-PUPPY ,CH-WIGGINS>
|
||||
<MC-UNMAKE ,CH-WIGGINS ,FL-NODESC>
|
||||
<MC-UNMAKE ,CH-WIGGINS ,FL-BROKEN>)
|
||||
(T
|
||||
<TELL ,K-CANT-LEAVE-MSG CR>)>)
|
||||
(<MC-PRSO? LG-WATER>
|
||||
<TELL
|
||||
"\"I ain't no bleedin' mermaid. Besides, bathing ain't 'ealthy.\"" CR>)>)
|
||||
(<MC-VERB? TAKE STEAL>
|
||||
<COND (<AND <MC-PRSO? ,TH-GARNET>
|
||||
<IN? ,TH-GARNET ,TH-BUTT-OF-MALMSEY>>
|
||||
<MOVE ,TH-GARNET ,CH-PLAYER>
|
||||
<RT-THIS-IS-IT ,TH-GARNET>
|
||||
<SETG WIGGINS-COLD? T>
|
||||
<MC-MAKE ,TH-GARNET ,FL-SEEN>
|
||||
<MC-MAKE ,TH-GARNET ,FL-TOUCHED>
|
||||
<MC-UNMAKE ,TH-GARNET ,FL-NODESC>
|
||||
<TELL CTHE ,CH-WIGGINS>
|
||||
<COND (<NOT <IN? ,CH-WIGGINS ,TH-BUTT-OF-MALMSEY>>
|
||||
<TELL " climbs into the empty butt of malsey,">)>
|
||||
<TELL " gets the gem, gets out, and gives it to you."
|
||||
CR>
|
||||
<RT-UPDATE-SCORE <GETP ,TH-GARNET ,P?VALUE>>
|
||||
<PUTP ,TH-GARNET ,P?VALUE 0>
|
||||
<RTRUE>)
|
||||
(<OR <MC-PRSO? ,TH-GUARDS-POCKET ,TH-BOX-KEY
|
||||
,TH-GUARDS-KEYS>
|
||||
<MC-PRSI? ,TH-GUARDS-POCKET ,CH-BANK-GUARD>>
|
||||
<RT-STEAL-KEY>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? STEAL>
|
||||
<TELL
|
||||
"\"I would if I could, guv. But I don't see 'ow to do it.\"" CR>)>)
|
||||
(<AND <MC-VERB? ROB>
|
||||
<MC-PRSO? ,CH-BANK-GUARD>>
|
||||
<RT-STEAL-KEY>)
|
||||
(<MC-VERB? EMPTY REACH-IN SEARCH>
|
||||
<COND (<OR <MC-PRSO? ,TH-GUARDS-POCKET ,CH-BANK-GUARD>
|
||||
<MC-PRSI? ,TH-GUARDS-POCKET ,CH-BANK-GUARD>>
|
||||
<RT-STEAL-KEY>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<TELL
|
||||
"\"I would if I could, guv. But I don't see 'ow to do it.\"" CR>)>)
|
||||
(<MC-VERB? FOLLOW>
|
||||
<COND (<MC-PRSO? ,CH-ME ,CH-PLAYER>
|
||||
<COND (<IN? ,CH-HOLMES ,RM-LAIR>
|
||||
<TELL "\"After you, guv.\"" CR>
|
||||
<SETG GL-PUPPY ,CH-WIGGINS>
|
||||
<MC-UNMAKE ,CH-WIGGINS ,FL-NODESC>
|
||||
<MC-UNMAKE ,CH-WIGGINS ,FL-BROKEN>)
|
||||
(T
|
||||
<TELL ,K-CANT-LEAVE-MSG CR>)>)
|
||||
(T
|
||||
<TELL "\"I'm not a bleedin' bloodhound.\"" CR>)>)
|
||||
(<MC-VERB? WAIT>
|
||||
<COND (<EQUAL? ,GL-PUPPY ,CH-WIGGINS>
|
||||
<SETG GL-PUPPY <>>
|
||||
<TELL "\"Right. I'm glued to this spot.\"" CR>)
|
||||
(T
|
||||
<TELL "\"Whatever you say, guv.\"" CR>)>)
|
||||
(<MC-VERB? EXIT>
|
||||
;<COND (<EQUAL? ,GL-PUPPY ,CH-WIGGINS>
|
||||
<SETG GL-PUPPY <>>
|
||||
<TELL ,K-CAN-LEAVE-MSG CR>)
|
||||
(T
|
||||
<TELL ,K-CAN-LEAVE-MSG CR>)>
|
||||
<TELL ,K-AFTER-YOU-MSG CR>)
|
||||
(<AND <MC-VERB? PULL>
|
||||
<MC-PRSO? ,TH-PORTCULLIS-CHAIN>>
|
||||
<TELL "\"I can't reach it, guv.\"" CR>)
|
||||
(T
|
||||
<TELL "Wiggins looks at you and scratches his head." CR>
|
||||
<RTRUE>)>)
|
||||
(<MC-THIS-PRSI?>
|
||||
<COND (<MC-VERB? GIVE>
|
||||
<COND (<MC-IS? ,CH-WIGGINS ,FL-ASLEEP>
|
||||
<RT-NO-CONDITION-MSG ,CH-WIGGINS "accept your offer">)
|
||||
(<MC-PRSO? ,TH-SHILLING>
|
||||
<MOVE ,TH-SHILLING ,CH-WIGGINS>
|
||||
<MC-MAKE ,TH-SHILLING ,FL-NOALL>
|
||||
<SETG CH-WIGGINS-AUX1 1>
|
||||
<COND (<F? ,GL-P-CONT>
|
||||
<SETG WINNER-IS-WIGGINS T>)>
|
||||
<SETG GL-P-QCONTEXT-TH ,CH-WIGGINS>
|
||||
<SETG GL-P-QCONTEXT-RM ,GL-PLACE-CUR>
|
||||
<TELL
|
||||
"Wiggins looks at " THE ,TH-SHILLING " and then at you. After a few
|
||||
moments he stuffs it deep into the recesses of his clothing and says, \"I'm
|
||||
all yours. Wot's the plan?\"" CR>)
|
||||
(<MC-PRSO? ,TH-EMERALD
|
||||
,TH-SAPPHIRE
|
||||
,TH-RUBY
|
||||
,TH-OPAL
|
||||
,TH-TOPAZ
|
||||
,TH-GARNET
|
||||
,TH-POUND-NOTE
|
||||
,TH-SIXPENCE>
|
||||
<TELL "Wiggins glances at your offer and"
|
||||
,K-WOUNDED-PRIDE-MSG CR>)
|
||||
(T
|
||||
<TELL
|
||||
"Wiggins looks at the item you have handed him and then returns it
|
||||
to you. Clearly it was not of interest to him." CR>)>
|
||||
<RTRUE>)
|
||||
(<AND <MC-VERB? TAKE>
|
||||
<MC-PRSO? ,TH-SHILLING>>
|
||||
<COND (<MC-IS? ,CH-WIGGINS ,FL-ASLEEP>
|
||||
<TELL "He must have hidden it very well. ">
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "can't find it." CR>)
|
||||
(T
|
||||
<TELL "\"Sorry, guv'nor. A deal's a deal.\"" CR>)>)>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? SMELL>
|
||||
<COND (<T? ,WIGGINS-COLD?>
|
||||
<TELL ,K-EAU-DE-MSG CR>)
|
||||
(T
|
||||
<TELL "Yuck. Eau de urchin." CR>)>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-CH-BUTLER ("OPTIONAL" (CONTEXT <>) "AUX" WORD-NUM)
|
||||
<DEBUGGING? <RT-DEBUG-CH-AC "CH-BUTLER" .CONTEXT>>
|
||||
<RT-THIS-IS-IT ,CH-BUTLER>
|
||||
<COND (<MC-THIS-WINNER?>
|
||||
<COND (<MC-IS? ,CH-BUTLER ,FL-ASLEEP>
|
||||
<RT-NO-CONDITION-MSG ,CH-BUTLER>)
|
||||
(<AND <MC-VERB? TAKE FIND>
|
||||
<RT-IDENTIFY-EVENT? ,W?MYCROFT ,GL-PRSO>>
|
||||
<SETG GL-WINNER ,CH-PLAYER>
|
||||
<RT-PERFORM ,V?ASK-FOR ,CH-BUTLER ,TH-EVENT>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? HELLO>
|
||||
<TELL "\"">
|
||||
<COND (<EQUAL? <RT-TIME-OF-DAY> 0>
|
||||
<TELL "How do you do?">)
|
||||
(<EQUAL? <RT-TIME-OF-DAY> 1 2>
|
||||
<TELL "Good day.">)
|
||||
(<EQUAL? <RT-TIME-OF-DAY> 3>
|
||||
<TELL "Good evening.">)>
|
||||
<TELL "\"" CR>)
|
||||
(<MC-VERB? GOODBYE>
|
||||
<TELL "\"">
|
||||
<COND (<EQUAL? <RT-TIME-OF-DAY> 0>
|
||||
<TELL "Good night">)
|
||||
(<EQUAL? <RT-TIME-OF-DAY> 1 2>
|
||||
<TELL "Good day">)
|
||||
(<EQUAL? <RT-TIME-OF-DAY> 3>
|
||||
<TELL "Good evening">)>
|
||||
<TELL ".\"" CR>)
|
||||
(<MC-VERB? THANK>
|
||||
<TELL "\"You're quite welcome.\"" CR>)
|
||||
(<AND <MC-VERB? WHO>
|
||||
<MC-PRSO? ,CH-BUTLER>>
|
||||
<TELL
|
||||
"\"I am one of the staff of this fine establishment.\"" CR>)
|
||||
(<MC-VERB? WHO WHAT WHERE>
|
||||
<TELL
|
||||
"\"I'm far too discreet to respond.\"" CR>)
|
||||
(<MC-VERB? YES NO>
|
||||
<TELL
|
||||
CTHE ,CH-BUTLER " looks at you expectantly." CR>)
|
||||
(<MC-VERB? RESCUE>
|
||||
<TELL "\"What can I do for you?\"" CR>)
|
||||
(T
|
||||
<TELL
|
||||
"\"I'm afraid I am unable to do that.\"" CR>)>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? ASK-FOR ASK-ABOUT>
|
||||
<COND (<MC-IS? ,CH-BUTLER ,FL-ASLEEP>
|
||||
<RT-NO-CONDITION-MSG ,CH-BUTLER>)
|
||||
(<RT-IDENTIFY-EVENT? ,W?MYCROFT ,GL-PRSI>
|
||||
<COND (<NOT <0? <ANDB ,MYCROFT-STATE
|
||||
,MYCROFT-LOCKED>>>
|
||||
<TELL
|
||||
"\"I am very sorry but Mr Mycroft Holmes is not available at this time.
|
||||
Perhaps you would care to come back later?\"" CR>)
|
||||
(<NOT <0? <ANDB ,MYCROFT-STATE
|
||||
,MYCROFT-ASLEEP>>>
|
||||
<SET-MYCROFT-STATE CLEAR ,MYCROFT-ASLEEP>
|
||||
<TELL
|
||||
"The butler listens to you and then leaves. He comes back shortly." CR CR
|
||||
"\"Mr Mycroft Holmes requires that you offer some token to verify that you
|
||||
are indeed the person you claim to be. Give whatever it is to me and I will
|
||||
take it to him.\"" CR>)
|
||||
(T
|
||||
<TELL
|
||||
"The butler listens politely but insists that he can do nothing more for you
|
||||
than to deliver the token to Mr Mycroft Holmes." CR>)>)
|
||||
(<MC-PRSI? ,CH-HOLMES>
|
||||
<TELL
|
||||
"\"I am afraid that I know the younger Mr Holmes only by his somewhat
|
||||
colourful reputation.\"" CR>)
|
||||
(<MC-PRSI? ,CH-BUTLER>
|
||||
<TELL
|
||||
"\"I am well, sir. Thank you for asking.\"" CR>)
|
||||
(<MC-PRSI? ,CH-PLAYER ,CH-ME>
|
||||
<TELL
|
||||
"He looks down his nose at you and sniffs, \"I don't believe we've been
|
||||
introduced.\"" CR>)
|
||||
(<MC-PRSI? ,CH-MEMBERS>
|
||||
<TELL
|
||||
"\"They seem livelier than usual for this time of year.\"" CR>)
|
||||
(<MC-PRSI? ,RM-DIOGENES-CLUB>
|
||||
<TELL
|
||||
"The butler coughs deferentially, \"It is one of the most exclusive
|
||||
clubs in London, sir.\" He glances at your clothes. \"Membership is by
|
||||
invitation only.\"" CR>)
|
||||
(<MC-IS? ,GL-PRSI ,FL-PERSON>
|
||||
<COND (<MC-IS? ,GL-PRSI ,FL-PLURAL>
|
||||
<TELL
|
||||
"\"Unfortunately, I can say nothing about them.\"" CR>)
|
||||
(<MC-IS? ,GL-PRSI ,FL-FEMALE>
|
||||
<TELL
|
||||
"\"I am sorry but I can tell you nothing about her.\"" CR>)
|
||||
(T
|
||||
<TELL
|
||||
"\"Much to my regret I can tell you nothing about him.\"" CR>)>)
|
||||
(T
|
||||
<TELL
|
||||
"\"I'm afraid I wouldn't know anything about that.\"" CR>)>)>)
|
||||
(<MC-THIS-PRSI?>
|
||||
<COND (<MC-VERB? GIVE>
|
||||
<COND (<MC-IS? ,CH-BUTLER ,FL-ASLEEP>
|
||||
<RT-NO-CONDITION-MSG ,CH-BUTLER "accept your offer">)
|
||||
(<NOT <0? <ANDB ,MYCROFT-STATE ,MYCROFT-LOCKED>>>
|
||||
<TELL
|
||||
"The butler politely declines to take the gift you have offered." CR>)
|
||||
(<NOT <0? <ANDB ,MYCROFT-STATE ,MYCROFT-ASLEEP>>>
|
||||
<TELL
|
||||
"The butler refuses to take the item you have offered and asks if you
|
||||
have come to speak with someone here in the club." CR>)
|
||||
(<MC-PRSO? ,TH-RING>
|
||||
<SET-MYCROFT-STATE SET ,MYCROFT-LOCKED
|
||||
,MYCROFT-SEEN>
|
||||
<REMOVE ,TH-RING>
|
||||
<TELL ,K-BUTLER-ACCEPTS-MSG CR CR
|
||||
"After a few moments, Mycroft Holmes appears. He looks very worried." CR CR
|
||||
"\"Sherlock warned me that you might come,\" he says. \"And the fact
|
||||
that you are here indicates that he is indeed in trouble. I believe that
|
||||
in order to solve this mystery, you are going to have to go to the Tower
|
||||
of London. It will be closed, but you can give the password '">
|
||||
<SET WORD-NUM <RANDOM 6>>
|
||||
<SETG PASSWORD-ID .WORD-NUM>
|
||||
<COND (<EQUAL? .WORD-NUM 1>
|
||||
<TELL "Boleyn">)
|
||||
(<EQUAL? .WORD-NUM 2>
|
||||
<TELL "Cleves">)
|
||||
(<EQUAL? .WORD-NUM 3>
|
||||
<TELL "Howard">)
|
||||
(<EQUAL? .WORD-NUM 4>
|
||||
<TELL "Parr">)
|
||||
(<EQUAL? .WORD-NUM 5>
|
||||
<TELL "Aragon">)
|
||||
(<EQUAL? .WORD-NUM 6>
|
||||
<TELL "Seymour">)>
|
||||
<TELL
|
||||
"' to the guard at the Byward Tower. He will let you in. Good luck.\"" CR CR
|
||||
"Mycroft pauses before he goes and looks at you meditatively, as if
|
||||
trying to decide if he can put his faith in you to rescue his
|
||||
brother. After a moment he gives his head an unconscious nod, then
|
||||
turns around and disappears back into the club." CR>
|
||||
<RT-UPDATE-SCORE 1>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<TELL ,K-BUTLER-ACCEPTS-MSG CR CR
|
||||
"The butler soon returns looking concerned." CR CR
|
||||
"\"I am sorry but Mr Mycroft Holmes says this will not do. Do you have
|
||||
anything else?\"" CR>)>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-BANK-VAULT-DOOR ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-BANK-VAULT-DOOR" .CONTEXT>>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<EQUAL? ,GL-PLACE-CUR ,RM-BANK-OF-ENGLAND>
|
||||
<RT-OPEN-CLOSED-MSG ,LG-BANK-VAULT-DOOR>
|
||||
<CRLF> <CRLF>
|
||||
<TELL "In the middle of the door you see a big shiny dial." CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RT-OPEN-CLOSED-MSG ,LG-BANK-VAULT-DOOR>
|
||||
<CRLF> <CRLF>
|
||||
<TELL "The inside of the door is shiny and flat." CR>
|
||||
<RTRUE>)>)
|
||||
(<MC-VERB? OPEN>
|
||||
<COND (<MC-IS? ,LG-BANK-VAULT-DOOR ,FL-OPENED>
|
||||
<TELL "The vault door is already open." CR>)
|
||||
(<MC-IS? ,LG-BANK-VAULT-DOOR ,FL-LOCKED>
|
||||
<TELL "The vault door is locked." CR>)
|
||||
(T
|
||||
<MC-MAKE ,LG-BANK-VAULT-DOOR ,FL-OPENED>
|
||||
<TELL "The vault door swings open." CR>)>)
|
||||
(<MC-VERB? CLOSE>
|
||||
<COND (<MC-ISNOT? ,LG-BANK-VAULT-DOOR ,FL-OPENED>
|
||||
<TELL "The vault door is already closed." CR>)
|
||||
(T
|
||||
<MC-UNMAKE ,LG-BANK-VAULT-DOOR ,FL-OPENED>
|
||||
<MC-MAKE ,LG-BANK-VAULT-DOOR ,FL-LOCKED>
|
||||
<SETG TH-DIAL-AUX1 0>
|
||||
<SETG TH-DIAL-AUX2 0>
|
||||
<TELL "The vault door swings closed and locks">
|
||||
<COND (<IN? ,CH-PLAYER ,RM-BANK-VAULT>
|
||||
<TELL " you in. Whoops!" CR CR>
|
||||
<RT-QSR>)
|
||||
(T
|
||||
<TELL "." CR>)>)>)
|
||||
(<MC-VERB? ENTER THROUGH>
|
||||
<COND (<MC-HERE? ,RM-BANK-VAULT>
|
||||
<RT-DO-WALK ,P?EAST>)
|
||||
(<MC-HERE? ,RM-BANK-OF-ENGLAND>
|
||||
<RT-DO-WALK ,P?WEST>)>)
|
||||
(<MC-VERB? LOOK-INSIDE>
|
||||
<COND (<MC-IS? ,LG-BANK-VAULT-DOOR ,FL-OPENED>
|
||||
<RT-CYOU-MSG "see" "sees">
|
||||
<TELL "row upon row of " D ,TH-BOXES "." CR>)
|
||||
(T
|
||||
<TELL CTHE ,LG-BANK-VAULT-DOOR " is closed." CR>)>)
|
||||
(<MC-VERB? UNLOCK>
|
||||
<COND (<MC-IS? ,LG-BANK-VAULT-DOOR ,FL-OPENED>
|
||||
<TELL CTHE ,LG-BANK-VAULT-DOOR " is already opened." CR>)
|
||||
(T
|
||||
<TELL ,K-HOW-TO-MSG CR>)>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<TELL ,K-RICOCHET-MSG CR>)>>
|
||||
|
||||
<ROUTINE RT-TOPAZ-MSG ()
|
||||
<COND (<AND <==? ,GL-PRSO ,TH-TOPAZ>
|
||||
<==? ,GL-PUPPY ,CH-HOLMES>>
|
||||
<TELL CR "Holmes plucks you by the sleeve and reaches into
|
||||
the box. \"Observe, Watson.\" He pulls out an almost invisible thread and
|
||||
examines it with glittering eyes. \"Muslin,\" he declares, more to himself
|
||||
than to you. \"Of Indian origin, and of the type used almost exclusively in
|
||||
the manufacture of turbans.\" He looks at you in triumph. \"Our case is
|
||||
almost complete, Doctor. The Agra gems, the Trichinopoly cigar, and now this
|
||||
strand of muslin.\"" CR CR
|
||||
|
||||
"Holmes puts the strand into his pocket and explains. \"Moriarty - for reasons
|
||||
as yet unknown to us - has stolen the Crown Jewels. The Agra gems have somehow
|
||||
passed into his hands by way of this Indian accomplice, and he is using small
|
||||
pieces of it to lure me into a rendezvous with him. It's a dangerous game we
|
||||
play, Watson, but if we are to recover the regalia we have no choice.\"" CR>)>>
|
||||
|
||||
|
||||
|
||||
|
BIN
benclk-ss1
Normal file
BIN
benclk-ss1
Normal file
Binary file not shown.
32
boot.zabstr
Normal file
32
boot.zabstr
Normal file
|
@ -0,0 +1,32 @@
|
|||
|
||||
<DEFINE-ROUTINE RT-META-IN?>
|
||||
<DEFINE-ROUTINE RT-SEE-INSIDE?>
|
||||
<DEFINE-ROUTINE RT-VISIBLE?>
|
||||
<GLOBAL LAST-PSEUDO-LOC <> %<> WORD>
|
||||
<DEFINE-ROUTINE CLOSED?>
|
||||
<DEFINE-ROUTINE RT-ACCESSIBLE?>
|
||||
<DEFINE-ROUTINE RT-DONT-ALL?>
|
||||
<DEFINE-ROUTINE DPRINT>
|
||||
<DEFINE-ROUTINE RT-A-PRINT>
|
||||
<DEFINE-ROUTINE RT-THEO-PRINT>
|
||||
<DEFINE-ROUTINE RT-CTHEO-PRINT>
|
||||
<DEFINE-ROUTINE RT-THEI-PRINT>
|
||||
<DEFINE-ROUTINE RT-CTHEI-PRINT>
|
||||
<DEFINE-ROUTINE RT-PRINT-SPACES>
|
||||
<DEFINE-ROUTINE SAY-NUMBER>
|
||||
<DEFINE-ROUTINE RT-UPDATE-STATUS-LINE>
|
||||
<DEFINE-ROUTINE RT-REFER-TO-MSG>
|
||||
<DEFINE-ROUTINE RT-SAY-ROOM-NAME-IF-LIT>
|
||||
<DEFINE-ROUTINE RT-DESCRIBE-PLACE>
|
||||
<DEFINE-ROUTINE RT-EXEC-RM-DESCFCN>
|
||||
<DEFINE-ROUTINE RT-DESCFCN-CONTEXT>
|
||||
<DEFINE-ROUTINE RT-DESC-ALL>
|
||||
<DEFINE-ROUTINE RT-GOTO>
|
||||
<DEFINE-ROUTINE RT-RESET-THEM>
|
||||
<DEFINE-ROUTINE RT-UPDATE-SCORE>
|
||||
<DEFINE-ROUTINE RT-UPDATE-MOVES>
|
||||
<DEFINE-ROUTINE RT-UPDATE-CLOCK>
|
||||
<DEFINE-ROUTINE RT-MAIN-LOOP>
|
||||
<DEFINE-ROUTINE RT-TOUCH-VERB?>
|
||||
<DEFINE-ROUTINE RT-TALK-VERB?>
|
||||
<DEFINE-ROUTINE RT-AC-CH-PLAYER>
|
737
boot.zap
Normal file
737
boot.zap
Normal file
|
@ -0,0 +1,737 @@
|
|||
|
||||
|
||||
.FUNCT RT-META-IN?,OBJ1,OBJ2
|
||||
?PRG1: ZERO? OBJ1 /FALSE
|
||||
IN? OBJ1,ROOMS /FALSE
|
||||
IN? OBJ1,LOCAL-GLOBALS /FALSE
|
||||
EQUAL? OBJ1,OBJ2 /TRUE
|
||||
LOC OBJ1 >OBJ1
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT RT-SEE-INSIDE?,THING
|
||||
ZERO? THING /FALSE
|
||||
FSET? THING,FL-SURFACE /TRUE
|
||||
FSET? THING,FL-CONTAINER \?CCL7
|
||||
FSET? THING,FL-OPENED /TRUE
|
||||
FSET? THING,FL-TRANSPARENT /TRUE
|
||||
?CCL7: FSET? THING,FL-PERSON /?PRD15
|
||||
FSET? THING,FL-ALIVE \FALSE
|
||||
?PRD15: EQUAL? THING,CH-PLAYER /FALSE
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-VISIBLE?,OBJ
|
||||
CALL RT-ACCESSIBLE?,OBJ,TRUE-VALUE
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT CLOSED?,WLOC,VISIBLE?
|
||||
ZERO? WLOC /FALSE
|
||||
FSET? WLOC,FL-OPENED /FALSE
|
||||
ZERO? VISIBLE? /?PRD7
|
||||
FSET? WLOC,FL-TRANSPARENT /FALSE
|
||||
?PRD7: FSET? WLOC,FL-SURFACE /FALSE
|
||||
FSET? WLOC,FL-ALIVE /FALSE
|
||||
IN? WLOC,ROOMS \TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-ACCESSIBLE?,OBJ,VISIBLE?,LOC,OLOC,WLOC,RMG,RMGL
|
||||
GETPT GL-PLACE-CUR,P?GLOBAL >RMG
|
||||
PTSIZE RMG >RMGL
|
||||
ZERO? OBJ \?CCL3
|
||||
SET 'GL-CLOSED-OBJECT,FALSE-VALUE
|
||||
RFALSE
|
||||
?CCL3: EQUAL? OBJ,ROOMS /TRUE
|
||||
EQUAL? OBJ,PSEUDO-OBJECT \?CND1
|
||||
EQUAL? LAST-PSEUDO-LOC,GL-PLACE-CUR /TRUE
|
||||
RFALSE
|
||||
?CND1: LOC GL-WINNER >WLOC
|
||||
?PRG9: IN? WLOC,ROOMS /?REP10
|
||||
CALL CLOSED?,WLOC,VISIBLE?
|
||||
ZERO? STACK \?REP10
|
||||
LOC WLOC >WLOC
|
||||
JUMP ?PRG9
|
||||
?REP10: SET 'OLOC,OBJ
|
||||
EQUAL? OLOC,WLOC /TRUE
|
||||
?PRG18: ZERO? OLOC /FALSE
|
||||
IN? OLOC,GLOBAL-OBJECTS /?CCL23
|
||||
INTBL? OLOC,RMG,RMGL,1 \?CND22
|
||||
?CCL23: IN? OLOC,ROOMS \TRUE
|
||||
EQUAL? OLOC,OBJ /TRUE
|
||||
RFALSE
|
||||
?CND22: IN? OLOC,ROOMS /FALSE
|
||||
LOC OLOC >OLOC
|
||||
EQUAL? OLOC,WLOC /TRUE
|
||||
CALL CLOSED?,OLOC,VISIBLE?
|
||||
ZERO? STACK /?PRG18
|
||||
IN? OLOC,GLOBAL-OBJECTS /TRUE
|
||||
INTBL? OLOC,RMG,RMGL,1 /TRUE
|
||||
SET 'GL-CLOSED-OBJECT,OLOC
|
||||
SET 'GL-IN-OUT,TRUE-VALUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-DONT-ALL?,O,I,L
|
||||
LOC O >L
|
||||
ZERO? L /TRUE
|
||||
EQUAL? O,I /TRUE
|
||||
FSET? O,FL-BODYPART /TRUE
|
||||
FSET? O,FL-NOALL /TRUE
|
||||
EQUAL? GL-PRSA,V?TAKE \?CCL11
|
||||
ZERO? I \?CCL14
|
||||
CALL RT-META-IN?,O,GL-WINNER
|
||||
ZERO? STACK /?CCL14
|
||||
IN? O,GL-WINNER /TRUE
|
||||
GET GL-P-NAMW,0
|
||||
ZERO? STACK /TRUE
|
||||
GET GL-P-BUTS,K-P-MATCHLEN
|
||||
ZERO? STACK \TRUE
|
||||
?CCL14: FSET? O,FL-TAKEABLE /?CCL22
|
||||
FSET? O,FL-TRYTAKE \TRUE
|
||||
?CCL22: FSET? L,FL-PERSON \?CCL26
|
||||
EQUAL? L,I \TRUE
|
||||
?CCL26: FSET? L,FL-CONTAINER \?CCL30
|
||||
FSET? L,FL-OPENED \TRUE
|
||||
?CCL30: ZERO? I /?CCL34
|
||||
EQUAL? L,I \TRUE
|
||||
CALL2 RT-SEE-INSIDE?,I
|
||||
ZERO? STACK /TRUE
|
||||
RFALSE
|
||||
?CCL34: EQUAL? L,GL-PLACE-CUR /FALSE
|
||||
CALL2 RT-SEE-INSIDE?,L
|
||||
ZERO? STACK /TRUE
|
||||
RFALSE
|
||||
?CCL11: EQUAL? GL-PRSA,V?DROP,V?PUT,V?PUT-ON /?CTR44
|
||||
EQUAL? GL-PRSA,V?THROW,V?THROW-OVER \FALSE
|
||||
?CTR44: EQUAL? O,TH-POCKET /TRUE
|
||||
EQUAL? L,TH-POCKET /TRUE
|
||||
FSET? O,FL-WORN /TRUE
|
||||
EQUAL? L,GL-WINNER /FALSE
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT DPRINT,O,X
|
||||
FSET? O,FL-HAS-SDESC \?CCL3
|
||||
GETP O,P?ACTION >X
|
||||
ZERO? X /?CCL3
|
||||
CALL X,K-M-SDESC
|
||||
RSTACK
|
||||
?CCL3: PRINTD O
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-A-PRINT,O
|
||||
ICALL RT-THEO-PRINT,O,FALSE-VALUE,K-DESC-A
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-THEO-PRINT,O,CAP?,CLASS,?TMP1
|
||||
ASSIGNED? 'CLASS /?CND1
|
||||
SET 'CLASS,K-DESC-THE
|
||||
?CND1: ZERO? O \?CND3
|
||||
SET 'O,GL-PRSO
|
||||
?CND3: ZERO? CAP? /?PRG7
|
||||
DIROUT K-D-SCR-OFF
|
||||
DIROUT K-D-TBL-ON,GL-DIROUT-TBL
|
||||
?PRG7: FSET? O,FL-NOARTC /?CCL11
|
||||
FSET? O,FL-YOUR \?CCL14
|
||||
PRINTI "your"
|
||||
JUMP ?CND12
|
||||
?CCL14: EQUAL? CLASS,K-DESC-ANY \?CCL16
|
||||
PRINTI "any"
|
||||
JUMP ?CND12
|
||||
?CCL16: EQUAL? CLASS,K-DESC-THE /?CTR17
|
||||
FSET? O,FL-PLURAL \?CCL18
|
||||
FSET? O,FL-PERSON \?CCL18
|
||||
?CTR17: PRINTI "the"
|
||||
JUMP ?CND12
|
||||
?CCL18: FSET? O,FL-PLURAL \?CCL24
|
||||
FSET? O,FL-PERSON /?CCL24
|
||||
PRINTI "some"
|
||||
JUMP ?CND12
|
||||
?CCL24: EQUAL? O,LG-WATER /?CND12
|
||||
FSET? O,FL-VOWEL \?CCL30
|
||||
PRINTI "an"
|
||||
JUMP ?CND12
|
||||
?CCL30: PRINTC 97
|
||||
?CND12: PRINTC 32
|
||||
?CND9: EQUAL? O,CH-ME \?CCL34
|
||||
ZERO? CAP? /?CCL34
|
||||
PRINTI "you"
|
||||
JUMP ?REP8
|
||||
?CCL11: FSET? O,FL-HAS-SDESC \?CND9
|
||||
GETP O,P?ACTION
|
||||
ICALL STACK,K-M-SDESC,CLASS
|
||||
JUMP ?REP8
|
||||
?CCL34: ICALL2 DPRINT,O
|
||||
?REP8: ZERO? CAP? /TRUE
|
||||
DIROUT K-D-TBL-OFF
|
||||
DIROUT K-D-SCR-ON
|
||||
GETB GL-DIROUT-TBL,2 >CAP?
|
||||
LESS? CAP?,97 /?CND39
|
||||
GRTR? CAP?,122 /?CND39
|
||||
SUB CAP?,32
|
||||
PUTB GL-DIROUT-TBL,2,STACK
|
||||
?CND39: ADD GL-DIROUT-TBL,2 >?TMP1
|
||||
GET GL-DIROUT-TBL,0
|
||||
PRINTT ?TMP1,STACK
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-CTHEO-PRINT,O
|
||||
CALL RT-THEO-PRINT,O,TRUE-VALUE
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-THEI-PRINT,I
|
||||
ZERO? I \?CND1
|
||||
SET 'I,GL-PRSI
|
||||
?CND1: CALL2 RT-THEO-PRINT,I
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-CTHEI-PRINT,I
|
||||
ZERO? I \?CND1
|
||||
SET 'I,GL-PRSI
|
||||
?CND1: CALL RT-THEO-PRINT,I,TRUE-VALUE
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-PRINT-SPACES,N,AMT
|
||||
?PRG1: GRTR? N,GL-BLANKS-LEN \?CCL5
|
||||
SET 'AMT,GL-BLANKS-LEN
|
||||
JUMP ?CND3
|
||||
?CCL5: SET 'AMT,N
|
||||
?CND3: PRINTT GL-BLANKS,AMT
|
||||
SUB N,AMT >N
|
||||
GRTR? N,0 /?PRG1
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT SAY-NUMBER,N,X
|
||||
SET 'X,10000
|
||||
?PRG1: LESS? N,X \?REP2
|
||||
PRINTC 32
|
||||
DIV X,10 >X
|
||||
LESS? X,10 \?PRG1
|
||||
?REP2: PRINTN N
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-UPDATE-STATUS-LINE
|
||||
GET 0,8
|
||||
BTST STACK,4 \?CND1
|
||||
ICALL2 RT-INIT-SCREEN,TRUE-VALUE
|
||||
GET 0,8
|
||||
BAND STACK,-5
|
||||
PUT 0,8,STACK
|
||||
?CND1: SCREEN K-S-WIN
|
||||
HLIGHT K-H-INV
|
||||
EQUAL? GL-PLACE-CUR,GL-PLACE-STS /?CND3
|
||||
ZERO? GL-SHORT-STAT? /?CCL7
|
||||
CURSET GL-SPLIT-ROW,1
|
||||
JUMP ?CND5
|
||||
?CCL7: CURSET GL-SPLIT-ROW,2
|
||||
?CND5: ICALL2 RT-PRINT-SPACES,GL-STAT-MAX-ROOM
|
||||
CURSET GL-SPLIT-ROW,2
|
||||
CALL RT-SAY-ROOM-NAME-IF-LIT,GL-PLACE-CUR,FALSE-VALUE,TRUE-VALUE
|
||||
ZERO? STACK /?CCL10
|
||||
SET 'GL-PLACE-STS,GL-PLACE-CUR
|
||||
JUMP ?CND3
|
||||
?CCL10: SET 'GL-PLACE-STS,-1
|
||||
?CND3: EQUAL? GL-SCORE-CUR,GL-SCORE-STS /?CND11
|
||||
SET 'GL-SCORE-STS,GL-SCORE-CUR
|
||||
ADD GL-SCORE-HEADER-LEN,GL-STAT-S-POS
|
||||
CURSET GL-SPLIT-ROW,STACK
|
||||
ICALL2 SAY-NUMBER,GL-SCORE-CUR
|
||||
?CND11: CURSET GL-SPLIT-ROW,GL-STAT-T-POS
|
||||
ZERO? GL-SHORT-STAT? /?CCL15
|
||||
ICALL2 RT-CLK-DOW-MSG,3
|
||||
PRINTC 32
|
||||
ICALL2 RT-CLK-NTI-MSG,22
|
||||
JUMP ?CND13
|
||||
?CCL15: ICALL2 RT-CLK-DOW-MSG,5
|
||||
ADD 10,GL-STAT-T-POS
|
||||
CURSET GL-SPLIT-ROW,STACK
|
||||
ICALL2 RT-CLK-NTI-MSG,7
|
||||
?CND13: HLIGHT K-H-NRM
|
||||
SCREEN K-S-NOR
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-REFER-TO-MSG
|
||||
PRINTR "[To what are you referring?]"
|
||||
|
||||
|
||||
.FUNCT RT-SAY-ROOM-NAME-IF-LIT,HERE,FORCE?,SL?,LEN,MAXLEN,LC,X,CNT
|
||||
ASSIGNED? 'HERE /?CND1
|
||||
SET 'HERE,GL-PLACE-CUR
|
||||
?CND1: SET 'MAXLEN,300
|
||||
SET 'CNT,2
|
||||
ZERO? SL? /?CND3
|
||||
SET 'MAXLEN,GL-STAT-MAX-ROOM
|
||||
?CND3: ZERO? FORCE? \?CTR6
|
||||
ZERO? GL-NOW-LIT? /?CCL7
|
||||
?CTR6: DIROUT K-D-SCR-OFF
|
||||
DIROUT K-D-TBL-ON,GL-DIROUT-TBL
|
||||
ICALL2 DPRINT,HERE
|
||||
DIROUT K-D-TBL-OFF
|
||||
DIROUT K-D-SCR-ON
|
||||
GET GL-DIROUT-TBL,0 >LEN
|
||||
INC 'LEN
|
||||
PUT GL-DIROUT-TBL,0,0
|
||||
GRTR? LEN,1 \?CCL12
|
||||
SET 'LC,32
|
||||
?PRG13: GETB GL-DIROUT-TBL,CNT >X
|
||||
LESS? X,97 /?CND15
|
||||
GRTR? X,122 /?CND15
|
||||
EQUAL? CNT,2 /?CCL20
|
||||
EQUAL? LC,32 \?CND15
|
||||
?CCL20: SUB X,32 >X
|
||||
?CND15: PRINTC X
|
||||
SET 'LC,X
|
||||
IGRTR? 'CNT,LEN /TRUE
|
||||
GRTR? CNT,MAXLEN \?PRG13
|
||||
RTRUE
|
||||
?CCL12: GET GL-DIROUT-TBL,2
|
||||
PRINTC STACK
|
||||
RTRUE
|
||||
?CCL7: PRINTI "Darkness"
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-DESCRIBE-PLACE,PLACE,LOOK
|
||||
ZERO? PLACE \?CND1
|
||||
SET 'PLACE,GL-PLACE-CUR
|
||||
?CND1: CALL RT-IS-LIT?,PLACE,TRUE-VALUE
|
||||
ZERO? STACK \?CND3
|
||||
PRINT K-TOO-DARK-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CND3: HLIGHT K-H-BLD
|
||||
ICALL RT-SAY-ROOM-NAME-IF-LIT,PLACE,TRUE-VALUE
|
||||
CRLF
|
||||
CRLF
|
||||
HLIGHT K-H-NRM
|
||||
ZERO? LOOK /?CCL7
|
||||
CALL RT-EXEC-RM-DESCFCN,PLACE,K-M-DESC-3
|
||||
RSTACK
|
||||
?CCL7: FSET? PLACE,FL-TOUCHED /?CCL9
|
||||
FSET PLACE,FL-TOUCHED
|
||||
CALL RT-EXEC-RM-DESCFCN,PLACE,K-M-DESC-1
|
||||
RSTACK
|
||||
?CCL9: EQUAL? GL-DESC-LEVEL,2 \?CCL11
|
||||
CALL RT-EXEC-RM-DESCFCN,PLACE,K-M-DESC-2
|
||||
RSTACK
|
||||
?CCL11: EQUAL? GL-DESC-LEVEL,1 /TRUE
|
||||
ZERO? GL-DESC-LEVEL /FALSE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-EXEC-RM-DESCFCN,PLACE,CONTEXT,DF
|
||||
FSET? PLACE,FL-HAS-DESCFCN \TRUE
|
||||
GETP PLACE,P?ACTION
|
||||
CALL STACK,CONTEXT
|
||||
ZERO? STACK /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-DESCFCN-CONTEXT,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESC-1,K-M-DESC-2,K-M-DESC-3 /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-DESC-ALL,PLACE,LOOK,HOLMES-IN-HOUSE?
|
||||
CALL RT-DESCRIBE-PLACE,PLACE,LOOK
|
||||
ZERO? STACK /?CND1
|
||||
ICALL RT-DESCRIBE-PLACE-CONTENTS,PLACE,LOOK
|
||||
?CND1: CALL RT-IS-LIT?,PLACE,TRUE-VALUE
|
||||
ZERO? STACK /TRUE
|
||||
ZERO? GL-PUPPY-MSG? \?CCL7
|
||||
SET 'GL-PUPPY-MSG?,TRUE-VALUE
|
||||
RTRUE
|
||||
?CCL7: ZERO? GL-PUPPY /TRUE
|
||||
EQUAL? GL-PUPPY,CH-HOLMES \?CCL11
|
||||
CRLF
|
||||
CALL2 RT-PICK-NEXT,GL-HOLMES-DESC-TXT
|
||||
PRINT STACK
|
||||
EQUAL? GL-PLACE-CUR,RM-ENTRY-HALL,RM-PARLOUR,RM-VESTIBULE /?CCL13
|
||||
EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY,RM-HOLMES-BEDROOM \?CND12
|
||||
?CCL13: SET 'HOLMES-IN-HOUSE?,TRUE-VALUE
|
||||
?CND12: ZERO? LOOK /?CCL18
|
||||
IN? CH-HOLMES,TH-BOAT \?CCL21
|
||||
PRINT K-SEASICK-MSG
|
||||
JUMP ?CND19
|
||||
?CCL21: IN? CH-HOLMES,TH-HANSOM-CAB /?CTR22
|
||||
IN? CH-HOLMES,TH-GROWLER-CAB \?CCL23
|
||||
?CTR22: PRINT K-SITTING-QUIETLY-MSG
|
||||
JUMP ?CND19
|
||||
?CCL23: ZERO? HOLMES-IN-HOUSE? /?CCL27
|
||||
CALL2 RT-PICK-NEXT,GL-HOLMES-HOUSE-LOOK-TXT
|
||||
PRINT STACK
|
||||
JUMP ?CND19
|
||||
?CCL27: FSET? GL-PLACE-CUR,FL-INDOORS \?CCL29
|
||||
CALL2 RT-PICK-NEXT,GL-HOLMES-INDOORS-LOOK-TXT
|
||||
PRINT STACK
|
||||
JUMP ?CND19
|
||||
?CCL29: CALL2 RT-PICK-NEXT,GL-HOLMES-OUTDOORS-LOOK-TXT
|
||||
PRINT STACK
|
||||
?CND19: PRINTR "."
|
||||
?CCL18: EQUAL? GL-DESC-LEVEL,2,1 \TRUE
|
||||
ZERO? HOLMES-IN-HOUSE? /?CCL33
|
||||
CALL2 RT-PICK-NEXT,GL-HOLMES-HOUSE-ENTER-TXT
|
||||
PRINT STACK
|
||||
JUMP ?CND31
|
||||
?CCL33: FSET? GL-PLACE-CUR,FL-INDOORS \?CCL35
|
||||
CALL2 RT-PICK-NEXT,GL-HOLMES-INDOORS-ENTER-TXT
|
||||
PRINT STACK
|
||||
JUMP ?CND31
|
||||
?CCL35: CALL2 RT-PICK-NEXT,GL-HOLMES-OUTDOORS-ENTER-TXT
|
||||
PRINT STACK
|
||||
?CND31: PRINTR "."
|
||||
?CCL11: EQUAL? GL-PUPPY,CH-WIGGINS \TRUE
|
||||
CRLF
|
||||
CALL2 RT-PICK-NEXT,GL-WIGGINS-DESC-TXT
|
||||
PRINT STACK
|
||||
ZERO? LOOK /?CCL39
|
||||
IN? CH-WIGGINS,TH-BOAT \?CCL42
|
||||
PRINT K-ENJOYING-RIDE-MSG
|
||||
JUMP ?CND40
|
||||
?CCL42: IN? CH-WIGGINS,TH-HANSOM-CAB /?CTR43
|
||||
IN? CH-WIGGINS,TH-GROWLER-CAB \?CCL44
|
||||
?CTR43: PRINT K-FIDGETING-MSG
|
||||
JUMP ?CND40
|
||||
?CCL44: CALL2 RT-PICK-NEXT,GL-WIGGINS-LOOK-TXT
|
||||
PRINT STACK
|
||||
?CND40: PRINTR "."
|
||||
?CCL39: EQUAL? GL-DESC-LEVEL,2,1 \TRUE
|
||||
CALL2 RT-PICK-NEXT,GL-WIGGINS-ENTER-TXT
|
||||
PRINT STACK
|
||||
PRINTR "."
|
||||
|
||||
|
||||
.FUNCT RT-GOTO,NEWPLACE,X,NEWLIT?,OLDPLACE,AMP?,SS?
|
||||
SET 'OLDPLACE,GL-PLACE-CUR
|
||||
MOVE CH-PLAYER,NEWPLACE
|
||||
SET 'GL-PLACE-CUR,NEWPLACE
|
||||
CALL1 RT-IS-LIT? >NEWLIT?
|
||||
MOVE CH-PLAYER,OLDPLACE
|
||||
SET 'GL-PLACE-CUR,OLDPLACE
|
||||
ZERO? NEWLIT? \?CND1
|
||||
ICALL2 TOO-DARK-TO-GO,NEWPLACE
|
||||
RTRUE
|
||||
?CND1: GETP GL-PLACE-CUR,P?ACTION
|
||||
CALL STACK,K-M-EXIT >X
|
||||
FSET? OLDPLACE,FL-INDOORS /?CND3
|
||||
FSET? NEWPLACE,FL-INDOORS /?CND3
|
||||
ICALL RT-CLOCK-JMP,0,5,0
|
||||
?CND3: SET 'GL-PLACE-PRV,OLDPLACE
|
||||
SET 'GL-PLACE-CUR,NEWPLACE
|
||||
CALL1 RT-IS-LIT? >GL-NOW-LIT?
|
||||
MOVE CH-PLAYER,GL-PLACE-CUR
|
||||
GETP GL-PLACE-CUR,P?ACTION
|
||||
CALL STACK,K-M-ENTERING >X
|
||||
ZERO? GL-PUPPY /?CCL9
|
||||
LOC CH-PLAYER
|
||||
MOVE GL-PUPPY,STACK
|
||||
JUMP ?CND7
|
||||
?CCL9: ZERO? GL-FORMER-PUPPY /?CND7
|
||||
IN? GL-FORMER-PUPPY,GL-PLACE-CUR \?CND7
|
||||
FSET? GL-FORMER-PUPPY,FL-ASLEEP /?CND7
|
||||
SET 'GL-PUPPY,GL-FORMER-PUPPY
|
||||
SET 'GL-FORMER-PUPPY,FALSE-VALUE
|
||||
?CND7: ICALL1 RT-DESC-ALL
|
||||
IN? TH-ETHERIUM-AMPOULE,CH-PLAYER \?PST15
|
||||
FSET? TH-ETHERIUM-AMPOULE,FL-BROKEN /?PRD18
|
||||
SET 'AMP?,1
|
||||
JUMP ?PEN14
|
||||
?PRD18: SET 'AMP?,0
|
||||
JUMP ?PEN14
|
||||
?PST15: SET 'AMP?,0
|
||||
?PEN14: FSET? TH-STETHOSCOPE,FL-WORN /?PRD20
|
||||
PUSH 0
|
||||
JUMP ?PRD21
|
||||
?PRD20: PUSH 1
|
||||
?PRD21: SET 'SS?,STACK
|
||||
ZERO? AMP? \?CCL23
|
||||
ZERO? SS? /?CND22
|
||||
?CCL23: ICALL HOLMES-COMPLAINS,AMP?,SS?
|
||||
?CND22: GETP GL-PLACE-CUR,P?ACTION
|
||||
CALL STACK,K-M-ENTERED >X
|
||||
ICALL1 RT-RESET-THEM
|
||||
IN? TH-ETHERIUM-GAS,GL-PLACE-CUR \TRUE
|
||||
ICALL1 RT-SMELL-ETHERIUM?
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-RESET-THEM
|
||||
CALL2 RT-VISIBLE?,GL-P-IT-OBJECT
|
||||
ZERO? STACK \?CND1
|
||||
SET 'GL-P-IT-OBJECT,TH-NOT-HERE-OBJECT
|
||||
?CND1: CALL2 RT-VISIBLE?,GL-P-THEM-OBJECT
|
||||
ZERO? STACK \?CND3
|
||||
SET 'GL-P-THEM-OBJECT,TH-NOT-HERE-OBJECT
|
||||
?CND3: CALL2 RT-VISIBLE?,GL-P-HIM-OBJECT
|
||||
ZERO? STACK \?CND5
|
||||
SET 'GL-P-HIM-OBJECT,TH-NOT-HERE-OBJECT
|
||||
?CND5: CALL2 RT-VISIBLE?,GL-P-HER-OBJECT
|
||||
ZERO? STACK \TRUE
|
||||
SET 'GL-P-HER-OBJECT,TH-NOT-HERE-OBJECT
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-UPDATE-SCORE,PTS
|
||||
ASSIGNED? 'PTS /?CND1
|
||||
SET 'PTS,1
|
||||
?CND1: ADD GL-SCORE-CUR,PTS >GL-SCORE-CUR
|
||||
CALL2 RT-NEW-SCORE-MSG,PTS
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-UPDATE-MOVES,MVS
|
||||
ASSIGNED? 'MVS /?CND1
|
||||
SET 'MVS,1
|
||||
?CND1: ZERO? GL-CLOCK-WAIT \FALSE
|
||||
ZERO? GL-CLOCK-STOP \FALSE
|
||||
ADD GL-MOVES-CUR,MVS >GL-MOVES-CUR
|
||||
RETURN GL-MOVES-CUR
|
||||
|
||||
|
||||
.FUNCT RT-UPDATE-CLOCK,HRS,MIN,SEC
|
||||
ZERO? HRS \?CCL2
|
||||
ZERO? MIN \?CCL2
|
||||
ZERO? SEC /?CND1
|
||||
?CCL2: ICALL RT-DO-CLOCK-SET,GL-TIME-UPDT-INC,HRS,MIN,SEC
|
||||
?CND1: CALL1 RT-CLOCK-INC
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-MAIN-LOOP,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,X,TOUCH-VERB?,MYCROFT?,TV,?TMP1
|
||||
?PRG1: SET 'CNT,0
|
||||
SET 'OBJ,FALSE-VALUE
|
||||
SET 'PTBL,TRUE-VALUE
|
||||
SET 'GL-P-MULT?,FALSE-VALUE
|
||||
EQUAL? GL-PLACE-CUR,GL-P-QCONTEXT-RM /?CND3
|
||||
SET 'GL-P-QCONTEXT-TH,FALSE-VALUE
|
||||
?CND3: CALL1 RT-PARSER >GL-P-GOOD
|
||||
ZERO? GL-P-GOOD /?CCL7
|
||||
GET GL-P-PRSI,K-P-MATCHLEN >ICNT
|
||||
GET GL-P-PRSO,K-P-MATCHLEN >OCNT
|
||||
ZERO? GL-P-IT-OBJECT /?CND8
|
||||
CALL2 RT-ACCESSIBLE?,GL-P-IT-OBJECT
|
||||
ZERO? STACK /?CND8
|
||||
SET 'TMP,FALSE-VALUE
|
||||
?PRG12: IGRTR? 'CNT,ICNT /?REP13
|
||||
GET GL-P-PRSI,CNT
|
||||
EQUAL? STACK,TH-IT \?PRG12
|
||||
PUT GL-P-PRSI,CNT,GL-P-IT-OBJECT
|
||||
SET 'TMP,TRUE-VALUE
|
||||
?REP13: ZERO? TMP \?CND19
|
||||
SET 'CNT,0
|
||||
?PRG21: IGRTR? 'CNT,OCNT /?CND19
|
||||
GET GL-P-PRSO,CNT
|
||||
EQUAL? STACK,TH-IT \?PRG21
|
||||
PUT GL-P-PRSO,CNT,GL-P-IT-OBJECT
|
||||
?CND19: SET 'CNT,0
|
||||
?CND8: ZERO? OCNT \?CCL30
|
||||
SET 'NUM,OCNT
|
||||
JUMP ?CND28
|
||||
?CCL30: GRTR? OCNT,1 \?CCL32
|
||||
SET 'TBL,GL-P-PRSO
|
||||
ZERO? ICNT \?CCL35
|
||||
SET 'OBJ,FALSE-VALUE
|
||||
JUMP ?CND33
|
||||
?CCL35: GET GL-P-PRSI,1 >OBJ
|
||||
?CND33: SET 'NUM,OCNT
|
||||
JUMP ?CND28
|
||||
?CCL32: GRTR? ICNT,1 \?CCL37
|
||||
SET 'PTBL,FALSE-VALUE
|
||||
SET 'TBL,GL-P-PRSI
|
||||
GET GL-P-PRSO,1 >OBJ
|
||||
SET 'NUM,ICNT
|
||||
JUMP ?CND28
|
||||
?CCL37: SET 'NUM,1
|
||||
?CND28: ZERO? OBJ \?CND38
|
||||
EQUAL? ICNT,1 \?CND38
|
||||
GET GL-P-PRSI,1 >OBJ
|
||||
?CND38: EQUAL? GL-PRSA,V?WALK \?CCL44
|
||||
CALL RT-PERFORM,GL-PRSA,GL-PRSO >V
|
||||
JUMP ?CND42
|
||||
?CCL44: ZERO? NUM \?CCL46
|
||||
GETB GL-P-SYNTAX,0
|
||||
SHIFT STACK,-6
|
||||
ZERO? STACK \?CCL49
|
||||
CALL2 RT-PERFORM,GL-PRSA >V
|
||||
SET 'GL-PRSO,FALSE-VALUE
|
||||
JUMP ?CND42
|
||||
?CCL49: ZERO? GL-NOW-LIT? \?CCL51
|
||||
ICALL1 RT-P-CLEAR
|
||||
PRINT K-TOO-DARK-MSG
|
||||
CRLF
|
||||
JUMP ?CND42
|
||||
?CCL51: ICALL1 RT-P-CLEAR
|
||||
PRINTI "[There isn't anything to "
|
||||
GET GL-P-ITBL,K-P-VERBN >TMP
|
||||
CALL1 RT-TALK-VERB?
|
||||
ZERO? STACK /?CCL54
|
||||
PRINTI "talk to"
|
||||
JUMP ?CND52
|
||||
?CCL54: ZERO? GL-P-MERGED \?CTR55
|
||||
ZERO? GL-P-ORPH /?CCL56
|
||||
?CTR55: GET TMP,0
|
||||
PRINTB STACK
|
||||
JUMP ?CND52
|
||||
?CCL56: GETB TMP,2 >?TMP1
|
||||
GETB TMP,3
|
||||
CALL RT-WORD-PRINT,?TMP1,STACK >V
|
||||
?CND52: PRINTI ".]"
|
||||
CRLF
|
||||
SET 'V,FALSE-VALUE
|
||||
JUMP ?CND42
|
||||
?CCL46: SET 'X,0
|
||||
GRTR? NUM,1 \?CND59
|
||||
SET 'GL-P-MULT?,TRUE-VALUE
|
||||
?CND59: SET 'TMP,FALSE-VALUE
|
||||
?PRG61: IGRTR? 'CNT,NUM \?CCL65
|
||||
GRTR? X,0 \?CCL68
|
||||
PRINTI "[The "
|
||||
EQUAL? X,NUM /?CND69
|
||||
PRINTI "other "
|
||||
?CND69: PRINTI "object"
|
||||
EQUAL? X,1 /?CND71
|
||||
PRINTC 115
|
||||
?CND71: PRINTI " that you mentioned "
|
||||
EQUAL? X,1 /?CCL75
|
||||
PRINTI "are"
|
||||
JUMP ?CND73
|
||||
?CCL75: PRINTI "is"
|
||||
?CND73: PRINTI "n't here.]"
|
||||
CRLF
|
||||
JUMP ?REP62
|
||||
?CCL68: ZERO? TMP \?REP62
|
||||
ICALL1 RT-REFER-TO-MSG
|
||||
JUMP ?REP62
|
||||
?CCL65: ZERO? PTBL /?CCL79
|
||||
GET GL-P-PRSO,CNT >OBJ1
|
||||
JUMP ?CND77
|
||||
?CCL79: GET GL-P-PRSI,CNT >OBJ1
|
||||
?CND77: GRTR? NUM,1 /?CCL81
|
||||
GET GL-P-ITBL,K-P-NC1
|
||||
GET STACK,0
|
||||
EQUAL? STACK,W?ALL,W?EVERYTHING \?CND80
|
||||
?CCL81: EQUAL? OBJ1,TH-NOT-HERE-OBJECT \?CCL86
|
||||
INC 'X
|
||||
JUMP ?PRG61
|
||||
?CCL86: EQUAL? GL-P-GET-FLAGS,K-P-ALL \?CCL88
|
||||
CALL RT-DONT-ALL?,OBJ1,OBJ
|
||||
ZERO? STACK \?PRG61
|
||||
?CCL88: CALL2 RT-ACCESSIBLE?,OBJ1
|
||||
ZERO? STACK /?PRG61
|
||||
EQUAL? OBJ1,CH-PLAYER /?PRG61
|
||||
EQUAL? OBJ1,TH-IT \?CCL97
|
||||
ICALL2 RT-CTHEO-PRINT,GL-P-IT-OBJECT
|
||||
JUMP ?CND95
|
||||
?CCL97: ICALL2 RT-CTHEO-PRINT,OBJ1
|
||||
?CND95: PRINTI ": "
|
||||
?CND80: SET 'TMP,TRUE-VALUE
|
||||
ZERO? PTBL /?CCL100
|
||||
SET 'GL-PRSO,OBJ1
|
||||
JUMP ?CND98
|
||||
?CCL100: SET 'GL-PRSO,OBJ
|
||||
?CND98: ZERO? PTBL /?CCL103
|
||||
SET 'GL-PRSI,OBJ
|
||||
JUMP ?CND101
|
||||
?CCL103: SET 'GL-PRSI,OBJ1
|
||||
?CND101: EQUAL? GL-WINNER,CH-BUTLER \?CND104
|
||||
GET GL-P-NAMW,0
|
||||
EQUAL? STACK,W?HOLMES,W?MYCROFT \?CND104
|
||||
SET 'MYCROFT?,TRUE-VALUE
|
||||
SET 'TOUCH-VERB?,FALSE-VALUE
|
||||
?CND104: ZERO? MYCROFT? \?CND108
|
||||
EQUAL? GL-PRSA,V?FIND /?CND108
|
||||
CALL1 RT-TOUCH-VERB? >TOUCH-VERB?
|
||||
ZERO? TOUCH-VERB? \?CCL109
|
||||
INTBL? GL-PRSA,GL-SEE-VERBS+2,20 >TV \?CND108
|
||||
?CCL109: ZERO? GL-PRSO /?CCL117
|
||||
CALL2 RT-VISIBLE?,GL-PRSO
|
||||
ZERO? STACK \?CCL117
|
||||
ICALL2 RT-CANT-SEE-ANY-MSG,GL-PRSO
|
||||
GRTR? OCNT,1 /?PRG61
|
||||
SET 'V,FATAL-VALUE
|
||||
JUMP ?REP62
|
||||
?CCL117: ZERO? GL-PRSI /?CND108
|
||||
CALL2 RT-VISIBLE?,GL-PRSI
|
||||
ZERO? STACK \?CND108
|
||||
ICALL2 RT-CANT-SEE-ANY-MSG,GL-PRSI
|
||||
GRTR? ICNT,1 /?PRG61
|
||||
SET 'V,FATAL-VALUE
|
||||
JUMP ?REP62
|
||||
?CND108: ZERO? TOUCH-VERB? /?CND127
|
||||
ZERO? GL-PRSO /?CCL131
|
||||
CALL2 RT-ACCESSIBLE?,GL-PRSO
|
||||
ZERO? STACK \?CCL131
|
||||
ICALL RT-CANT-TOUCH-MSG,GL-PRSO,GL-CLOSED-OBJECT,GL-IN-OUT
|
||||
GRTR? OCNT,1 /?PRG61
|
||||
SET 'V,FATAL-VALUE
|
||||
JUMP ?REP62
|
||||
?CCL131: ZERO? GL-PRSI /?CND127
|
||||
CALL2 RT-ACCESSIBLE?,GL-PRSI
|
||||
ZERO? STACK \?CND127
|
||||
ICALL RT-CANT-TOUCH-MSG,GL-PRSI,GL-CLOSED-OBJECT,GL-IN-OUT
|
||||
GRTR? ICNT,1 /?PRG61
|
||||
SET 'V,FATAL-VALUE
|
||||
JUMP ?REP62
|
||||
?CND127: CALL RT-PERFORM,GL-PRSA,GL-PRSO,GL-PRSI >V
|
||||
EQUAL? V,FATAL-VALUE \?PRG61
|
||||
?REP62: ZERO? GL-P-OVERFLOW /?CND42
|
||||
CRLF
|
||||
PRINTI "[Note: There are so many objects here that a few may have been overlooked. Please double check to make sure you have accomplished what you intended.]"
|
||||
CRLF
|
||||
?CND42: EQUAL? V,FATAL-VALUE \?CND5
|
||||
SET 'GL-P-CONT,FALSE-VALUE
|
||||
JUMP ?CND5
|
||||
?CCL7: SET 'GL-P-CONT,FALSE-VALUE
|
||||
?CND5: ZERO? GL-P-GOOD /?CND147
|
||||
EQUAL? V,FATAL-VALUE /?CND147
|
||||
INTBL? GL-PRSA,GL-GAME-VERBS+2,10 >TV /?CND147
|
||||
ICALL1 RT-UPDATE-MOVES
|
||||
ICALL1 RT-UPDATE-CLOCK
|
||||
ICALL1 RT-ALARM-CHK
|
||||
?CND147: ICALL1 RT-TIME-OF-DAY-MSG
|
||||
SET 'GL-PRSA,FALSE-VALUE
|
||||
SET 'GL-PRSO,FALSE-VALUE
|
||||
SET 'GL-PRSI,FALSE-VALUE
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT RT-TOUCH-VERB?
|
||||
INTBL? GL-PRSA,GL-TOUCH-VERBS+2,69 /?BOGUS1
|
||||
?BOGUS1: RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-TALK-VERB?
|
||||
INTBL? GL-PRSA,GL-TALK-VERBS+2,19 /?BOGUS1
|
||||
?BOGUS1: RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-CH-PLAYER,CONTEXT
|
||||
SET 'GL-WAIT-BELL,FALSE-VALUE
|
||||
EQUAL? CONTEXT,K-M-WINNER \?CCL3
|
||||
EQUAL? GL-PRSA,V?TELL \?CCL6
|
||||
SET 'GL-CLOCK-WAIT,FALSE-VALUE
|
||||
RFALSE
|
||||
?CCL6: EQUAL? GL-PRSO,TH-HANDS /?PRD10
|
||||
EQUAL? GL-PRSI,TH-HANDS \?CCL8
|
||||
?PRD10: CALL1 RT-CHECK-HANDS
|
||||
ZERO? STACK \FALSE
|
||||
?CCL8: CALL1 RT-TOUCH-VERB?
|
||||
ZERO? STACK /FALSE
|
||||
FSET? TH-HANDS,FL-LOCKED \FALSE
|
||||
CALL1 RT-HANDS-COVERING-EARS
|
||||
RSTACK
|
||||
?CCL3: CALL1 RT-AC-CH-PLAYER-AUX
|
||||
RSTACK
|
||||
|
||||
.ENDI
|
743
boot.zil
Normal file
743
boot.zil
Normal file
|
@ -0,0 +1,743 @@
|
|||
<ROUTINE RT-META-IN? (OBJ1 OBJ2)
|
||||
<REPEAT ()
|
||||
<COND (<OR <MC-F? .OBJ1>
|
||||
<IN? .OBJ1 ,ROOMS>
|
||||
<IN? .OBJ1 ,LOCAL-GLOBALS>>
|
||||
<RFALSE>)
|
||||
(<EQUAL? .OBJ1 .OBJ2>
|
||||
<RTRUE>)>
|
||||
<SET OBJ1 <LOC .OBJ1>>>>
|
||||
|
||||
<ROUTINE RT-SEE-INSIDE? (THING)
|
||||
<COND (<MC-F? .THING>
|
||||
<RFALSE>)
|
||||
(<MC-IS? .THING ,FL-SURFACE>
|
||||
<RTRUE>)
|
||||
(<AND <MC-IS? .THING ,FL-CONTAINER>
|
||||
; "All vehicles are also containers"
|
||||
;<OR <MC-IS? .THING ,FL-CONTAINER>
|
||||
<MC-IS? .THING ,FL-VEHICLE>>
|
||||
<OR <MC-IS? .THING ,FL-OPENED>
|
||||
<MC-IS? .THING ,FL-TRANSPARENT>>>
|
||||
<RTRUE>)
|
||||
(<AND <OR <MC-IS? .THING ,FL-PERSON>
|
||||
<MC-IS? .THING ,FL-ALIVE>>
|
||||
<NOT <EQUAL? .THING ,CH-PLAYER>>>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE RT-VISIBLE? (OBJ)
|
||||
<RT-ACCESSIBLE? .OBJ T>>
|
||||
|
||||
<GLOBAL LAST-PSEUDO-LOC <>>
|
||||
|
||||
<ROUTINE CLOSED? (WLOC VISIBLE?)
|
||||
<COND (<AND <T? .WLOC>
|
||||
<MC-ISNOT? .WLOC ,FL-OPENED>
|
||||
<OR <NOT .VISIBLE?>
|
||||
<MC-ISNOT? .WLOC ,FL-TRANSPARENT>>
|
||||
<MC-ISNOT? .WLOC ,FL-SURFACE>
|
||||
<MC-ISNOT? .WLOC ,FL-ALIVE>
|
||||
<NOT <IN? .WLOC ,ROOMS>>>
|
||||
T)>>
|
||||
|
||||
<ROUTINE RT-ACCESSIBLE? (OBJ "OPT" (VISIBLE? <>) "AUX" LOC OLOC WLOC
|
||||
(RMG <GETPT ,GL-PLACE-CUR ,P?GLOBAL>) (RMGL <PTSIZE .RMG>))
|
||||
; "See if it's a simple case"
|
||||
<COND (<F? .OBJ>
|
||||
<SETG GL-CLOSED-OBJECT <>>
|
||||
<RFALSE>)
|
||||
(<==? .OBJ ,ROOMS>
|
||||
<RTRUE>)
|
||||
(<==? .OBJ ,PSEUDO-OBJECT>
|
||||
<RETURN <==? ,LAST-PSEUDO-LOC ,GL-PLACE-CUR>>)>
|
||||
; "Now get the winner's effective room"
|
||||
<SET WLOC <LOC ,GL-WINNER>>
|
||||
<REPEAT ()
|
||||
<COND (<AND <NOT <IN? .WLOC ,ROOMS>>
|
||||
<NOT <CLOSED? .WLOC .VISIBLE?>>>
|
||||
; "If he's in a vehicle, then if the vehicle's open
|
||||
he can reach stuff in the room as well"
|
||||
<SET WLOC <LOC .WLOC>>)
|
||||
(T
|
||||
<RETURN>)>>
|
||||
<SET OLOC .OBJ>
|
||||
<COND (<==? .OLOC .WLOC> <RTRUE>)>
|
||||
<REPEAT ()
|
||||
<COND (<F? .OLOC> <RFALSE>)>
|
||||
; "We've hit a room, a global object, or a local global FOR THIS ROOM"
|
||||
<COND (<OR <IN? .OLOC ,GLOBAL-OBJECTS>
|
||||
<INTBL? .OLOC .RMG .RMGL 1>>
|
||||
<COND (<AND <IN? .OLOC ,ROOMS>
|
||||
<N==? .OLOC .OBJ>>
|
||||
<RFALSE>)>
|
||||
<RTRUE>)>
|
||||
<COND (<IN? .OLOC ,ROOMS> <RFALSE>)>
|
||||
; "Move up a step, see if we've run into the winner yet"
|
||||
<COND (<==? <SET OLOC <LOC .OLOC>> .WLOC> <RTRUE>)>
|
||||
; "Nope, see if this level is closed"
|
||||
<COND (<CLOSED? .OLOC .VISIBLE?>
|
||||
<COND (<OR <IN? .OLOC ,GLOBAL-OBJECTS>
|
||||
<INTBL? .OLOC .RMG .RMGL 1>>
|
||||
<RTRUE>)>
|
||||
; "If the new thing is closed, we've lost"
|
||||
<SETG GL-CLOSED-OBJECT .OLOC>
|
||||
<SETG GL-IN-OUT T>
|
||||
<RFALSE>)>>>
|
||||
|
||||
;<ROUTINE RT-ACCESSIBLE? (OBJ "OPT" (VISIBLE? <>) "AUX" WLOC OLOC (CLSD-PTR <>)
|
||||
PTR (CNT 0) TEMP TBL END)
|
||||
<COND (<MC-F? .OBJ>
|
||||
<SETG GL-CLOSED-OBJECT <>>
|
||||
<RFALSE>)
|
||||
(<EQUAL? .OBJ ,ROOMS>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .OBJ ,PSEUDO-OBJECT>
|
||||
<RETURN <==? ,LAST-PSEUDO-LOC ,GL-PLACE-CUR>>)>
|
||||
<SET PTR ,GL-LOC-TRAIL>
|
||||
<SET OLOC .OBJ>
|
||||
; "Check the object to see if it's in a closed container"
|
||||
<REPEAT ()
|
||||
<PUT .PTR 0 .OLOC>
|
||||
<INC CNT>
|
||||
<COND (<OR <MC-F? .OLOC>
|
||||
<IN? .OLOC ,ROOMS>
|
||||
<IN? .OLOC ,LOCAL-GLOBALS>
|
||||
<IN? .OLOC ,GLOBAL-OBJECTS>>
|
||||
<RETURN>)>
|
||||
<SET OLOC <LOC .OLOC>>
|
||||
<SET PTR <REST .PTR 2>>
|
||||
<COND (<CLOSED? .OLOC .VISIBLE?>
|
||||
<SETG GL-CLOSED-OBJECT .OLOC>
|
||||
<SETG GL-IN-OUT T>
|
||||
<COND (<MC-F? .CLSD-PTR>
|
||||
<SET CLSD-PTR .PTR>)>)>>
|
||||
<SET PTR <>>
|
||||
<SET WLOC ,GL-WINNER>
|
||||
; "Now see if the winner's in a closed thing that doesn't enclose
|
||||
anything that encloses the object in question"
|
||||
<REPEAT ()
|
||||
<COND (<MC-F? .WLOC>
|
||||
<SETG GL-CLOSED-OBJECT <>>
|
||||
<SETG GL-IN-OUT <>>
|
||||
<RFALSE>)
|
||||
(<SET PTR <INTBL? .WLOC ,GL-LOC-TRAIL .CNT>>
|
||||
<RETURN>)
|
||||
(<IN? .WLOC ,ROOMS>
|
||||
<RETURN>)>
|
||||
<SET WLOC <LOC .WLOC>>
|
||||
<COND (<CLOSED? .WLOC .VISIBLE?>
|
||||
<SETG GL-CLOSED-OBJECT .WLOC>
|
||||
<SETG GL-IN-OUT <>>
|
||||
<RFALSE>)>>
|
||||
<COND (<MC-F? .PTR>
|
||||
<RFALSE>)
|
||||
(<AND <MC-T? .CLSD-PTR>
|
||||
<G? .PTR .CLSD-PTR>>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>>
|
||||
|
||||
<ROUTINE RT-DONT-ALL? (O I "AUX" L)
|
||||
<SET L <LOC .O>>
|
||||
<COND (<OR <MC-F? .L>
|
||||
<EQUAL? .O .I>>
|
||||
<RTRUE>)
|
||||
(<MC-IS? .O ,FL-BODYPART>
|
||||
<RTRUE>)
|
||||
(<MC-IS? .O ,FL-NOALL>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? TAKE>
|
||||
<COND (<AND <MC-F? .I>
|
||||
<RT-META-IN? .O ,GL-WINNER>
|
||||
; "Let take find things in pockets and stuff if loser
|
||||
gave a name"
|
||||
<OR <IN? .O ,GL-WINNER>
|
||||
<F? <ZGET ,GL-P-NAMW 0>>
|
||||
<NOT <0? <ZGET ,GL-P-BUTS ,K-P-MATCHLEN>>>>>
|
||||
<RTRUE>)
|
||||
(<AND <MC-ISNOT? .O ,FL-TAKEABLE>
|
||||
<MC-ISNOT? .O ,FL-TRYTAKE>>
|
||||
<RTRUE>)
|
||||
(<AND <MC-IS? .L ,FL-PERSON>
|
||||
<N==? .L .I>>
|
||||
<RTRUE>)
|
||||
(<AND <MC-IS? .L ,FL-CONTAINER>
|
||||
<MC-ISNOT? .L ,FL-OPENED>>
|
||||
<RTRUE>)
|
||||
(<MC-T? .I>
|
||||
<COND (<NOT <EQUAL? .L .I>>
|
||||
<RTRUE>)
|
||||
(<RT-SEE-INSIDE? .I>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>)
|
||||
(<OR <EQUAL? .L ,GL-PLACE-CUR>
|
||||
<RT-SEE-INSIDE? .L>>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>)
|
||||
(<MC-VERB? DROP PUT PUT-ON THROW THROW-OVER>
|
||||
<COND (<EQUAL? .O ,TH-POCKET>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .L ,TH-POCKET>
|
||||
<RTRUE>)
|
||||
(<MC-IS? .O ,FL-WORN>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .L ,GL-WINNER>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RTRUE>)>)
|
||||
(T
|
||||
<RFALSE>)>>
|
||||
|
||||
; "tell token output routines"
|
||||
|
||||
<ROUTINE DPRINT (O "AUX" X)
|
||||
<COND (<AND <FSET? .O ,FL-HAS-SDESC>
|
||||
<T? <SET X <GETP .O ,P?ACTION>>>>
|
||||
<ZAPPLY .X ,K-M-SDESC>)
|
||||
(T
|
||||
<PRINTD .O>)>>
|
||||
|
||||
<ROUTINE RT-A-PRINT ("OPTIONAL" (O <>))
|
||||
<RT-THEO-PRINT .O <> ,K-DESC-A>
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE RT-THEO-PRINT ("OPTIONAL" (O <>) (CAP? <>) (CLASS ,K-DESC-THE))
|
||||
<COND (<MC-F? .O>
|
||||
<SET O ,GL-PRSO>)>
|
||||
<COND (.CAP?
|
||||
<DIROUT ,K-D-SCR-OFF>
|
||||
<DIROUT ,K-D-TBL-ON ,GL-DIROUT-TBL>)>
|
||||
<PROG ()
|
||||
<COND (<MC-ISNOT? .O ,FL-NOARTC>
|
||||
<COND (<MC-IS? .O ,FL-YOUR>
|
||||
<TELL "your">)
|
||||
(<==? .CLASS ,K-DESC-ANY>
|
||||
<TELL "any">)
|
||||
(<OR <==? .CLASS ,K-DESC-THE>
|
||||
<AND <MC-IS? .O ,FL-PLURAL>
|
||||
<MC-IS? .O ,FL-PERSON>>>
|
||||
<TELL "the">)
|
||||
(<AND <MC-IS? .O ,FL-PLURAL>
|
||||
<MC-ISNOT? .O ,FL-PERSON>>
|
||||
<TELL "some">)
|
||||
(<N==? .O ,LG-WATER>
|
||||
<COND (<MC-IS? .O ,FL-VOWEL>
|
||||
<TELL "an">)
|
||||
(T
|
||||
<TELL "a">)>)>
|
||||
<PRINTC !\ >)
|
||||
(<MC-IS? .O ,FL-HAS-SDESC>
|
||||
; "Know we have NOARTC set here"
|
||||
<APPLY <GETP .O ,P?ACTION> ,K-M-SDESC .CLASS>
|
||||
<RETURN>)>
|
||||
<COND (<AND <==? .O ,CH-ME> .CAP?> ;"to print YOU instead of YOURSELF"
|
||||
<TELL "you">) ;"at beginning of sentence - GTB"
|
||||
(T
|
||||
<TELL D .O>)>>
|
||||
<COND (.CAP?
|
||||
<DIROUT ,K-D-TBL-OFF>
|
||||
<DIROUT ,K-D-SCR-ON>
|
||||
<COND (<AND <G=? <SET CAP? <GETB ,GL-DIROUT-TBL 2>> !\a>
|
||||
<L=? .CAP? !\z>>
|
||||
<PUTB ,GL-DIROUT-TBL 2 <- .CAP? 32>>)>
|
||||
<PRINTT <ZREST ,GL-DIROUT-TBL 2> <ZGET ,GL-DIROUT-TBL 0>>)>
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE RT-CTHEO-PRINT ("OPTIONAL" (O <>))
|
||||
<RT-THEO-PRINT .O T>>
|
||||
|
||||
<ROUTINE RT-THEI-PRINT ("OPTIONAL" (I <>))
|
||||
<COND (<MC-F? .I>
|
||||
<SET I ,GL-PRSI>)>
|
||||
<RT-THEO-PRINT .I>>
|
||||
|
||||
<ROUTINE RT-CTHEI-PRINT ("OPTIONAL" (I <>))
|
||||
<COND (<MC-F? .I>
|
||||
<SET I ,GL-PRSI>)>
|
||||
<RT-THEO-PRINT .I T>>
|
||||
|
||||
|
||||
<ROUTINE RT-PRINT-SPACES (N "AUX" AMT)
|
||||
<REPEAT ()
|
||||
<COND (<G? .N ,GL-BLANKS-LEN>
|
||||
<SET AMT ,GL-BLANKS-LEN>)
|
||||
(T
|
||||
<SET AMT .N>)>
|
||||
<PRINTT ,GL-BLANKS .AMT>
|
||||
<COND (<L=? <SET N <- .N .AMT>> 0>
|
||||
<RTRUE>)>>>
|
||||
|
||||
<ROUTINE SAY-NUMBER (N)
|
||||
<REPEAT ((X 10000))
|
||||
<COND (<L? .N .X>
|
||||
<TELL " ">)
|
||||
(T
|
||||
<RETURN>)>
|
||||
<COND (<L? <SET X </ .X 10>> 10>
|
||||
<RETURN>)>>
|
||||
<TELL N .N>>
|
||||
|
||||
<ROUTINE RT-UPDATE-STATUS-LINE ()
|
||||
<COND (<BTST <LOWCORE FLAGS> 4>
|
||||
<RT-INIT-SCREEN T>
|
||||
<LOWCORE FLAGS <BAND <LOWCORE FLAGS> <XORB 4 -1>>>)>
|
||||
<SCREEN ,K-S-WIN>
|
||||
<HLIGHT ,K-H-INV>
|
||||
<COND (<NOT <EQUAL? ,GL-PLACE-CUR ,GL-PLACE-STS>>
|
||||
<COND (,GL-SHORT-STAT?
|
||||
<CURSET ,GL-SPLIT-ROW 1>)
|
||||
(T
|
||||
<CURSET ,GL-SPLIT-ROW 2>)>
|
||||
<RT-PRINT-SPACES ,GL-STAT-MAX-ROOM>
|
||||
<CURSET ,GL-SPLIT-ROW 2>
|
||||
<COND (<RT-SAY-ROOM-NAME-IF-LIT ,GL-PLACE-CUR <> T>
|
||||
<SETG GL-PLACE-STS ,GL-PLACE-CUR>)
|
||||
(T
|
||||
<SETG GL-PLACE-STS -1>)>)>
|
||||
<COND (<N==? ,GL-SCORE-CUR ,GL-SCORE-STS>
|
||||
<SETG GL-SCORE-STS ,GL-SCORE-CUR>
|
||||
<CURSET ,GL-SPLIT-ROW <+ ,GL-SCORE-HEADER-LEN ,GL-STAT-S-POS>>
|
||||
<SAY-NUMBER ,GL-SCORE-CUR>)>
|
||||
<CURSET ,GL-SPLIT-ROW ,GL-STAT-T-POS>
|
||||
<COND (,GL-SHORT-STAT?
|
||||
<RT-CLK-DOW-MSG <+ ,K-DOW-DW ,K-DOW-SN>>
|
||||
<TELL " ">
|
||||
<RT-CLK-NTI-MSG <+ ,K-NTI-SM ,K-NTI-HH ,K-NTI-MM>>)
|
||||
(T
|
||||
<RT-CLK-DOW-MSG <+ ,K-DOW-DW ,K-DOW-EN>>
|
||||
<CURSET ,GL-SPLIT-ROW <+ 10 ,GL-STAT-T-POS>>
|
||||
<RT-CLK-NTI-MSG <+ ,K-NTI-HH ,K-NTI-MM ,K-NTI-SS>>)>
|
||||
<HLIGHT ,K-H-NRM>
|
||||
<SCREEN ,K-S-NOR>
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE RT-REFER-TO-MSG ()
|
||||
<TELL "[To what are you referring?]" CR>
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE RT-SAY-ROOM-NAME-IF-LIT ("OPT" (HERE ,GL-PLACE-CUR) (FORCE? <>)
|
||||
(SL? <>) "AUX" LEN (MAXLEN 300))
|
||||
<COND (.SL?
|
||||
<SET MAXLEN ,GL-STAT-MAX-ROOM>)>
|
||||
<COND (<OR .FORCE? <MC-T? ,GL-NOW-LIT?>>
|
||||
<DIROUT ,K-D-SCR-OFF>
|
||||
<DIROUT ,K-D-TBL-ON ,GL-DIROUT-TBL>
|
||||
<TELL D .HERE>
|
||||
<DIROUT ,K-D-TBL-OFF>
|
||||
<DIROUT ,K-D-SCR-ON>
|
||||
<SET LEN <ZGET ,GL-DIROUT-TBL 0>>
|
||||
<SET LEN <+ .LEN 1>>
|
||||
<ZPUT ,GL-DIROUT-TBL 0 0>
|
||||
<COND (<G? .LEN 1>
|
||||
<REPEAT ((LC !\ ) X (CNT 2))
|
||||
<SET X <GETB ,GL-DIROUT-TBL .CNT>>
|
||||
<COND (<AND <G=? .X !\a>
|
||||
<L=? .X !\z>>
|
||||
<COND (<OR <==? .CNT 2>
|
||||
<==? .LC !\ >>
|
||||
<SET X <- .X 32>>)>)>
|
||||
<PRINTC .X>
|
||||
<SET LC .X>
|
||||
<COND (<G? <SET CNT <+ .CNT 1>> .LEN>
|
||||
<RETURN>)>
|
||||
<COND (<G? .CNT .MAXLEN> <RETURN>)>>)
|
||||
(T
|
||||
<PRINTC <ZGET ,GL-DIROUT-TBL 2>>)>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<TELL "Darkness">
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE RT-DESCRIBE-PLACE ("OPTIONAL" (PLACE <>) (LOOK <>))
|
||||
; "if no place is passed as an argument use gl-place-cur"
|
||||
<COND (<MC-F? .PLACE>
|
||||
<SET PLACE ,GL-PLACE-CUR>)>
|
||||
; "check if this place is lit"
|
||||
<COND (<MC-F? <RT-IS-LIT? .PLACE T>>
|
||||
<TELL ,K-TOO-DARK-MSG CR>
|
||||
<RTRUE>)>
|
||||
; "display room description (DESC) in bold"
|
||||
<HLIGHT ,K-H-BLD>
|
||||
<RT-SAY-ROOM-NAME-IF-LIT .PLACE T>
|
||||
<TELL CR CR>
|
||||
<HLIGHT ,K-H-NRM>
|
||||
; "determine description context"
|
||||
<COND (<MC-T? .LOOK>
|
||||
<RT-EXEC-RM-DESCFCN .PLACE ,K-M-DESC-3>)
|
||||
(<MC-ISNOT? .PLACE ,FL-TOUCHED>
|
||||
<MC-MAKE .PLACE ,FL-TOUCHED>
|
||||
<RT-EXEC-RM-DESCFCN .PLACE ,K-M-DESC-1>)
|
||||
(<EQUAL? ,GL-DESC-LEVEL 2>
|
||||
<RT-EXEC-RM-DESCFCN .PLACE ,K-M-DESC-2>)
|
||||
(<EQUAL? ,GL-DESC-LEVEL 1>
|
||||
<RTRUE>)
|
||||
(<EQUAL? ,GL-DESC-LEVEL 0>
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE RT-EXEC-RM-DESCFCN (PLACE CONTEXT "AUX" DF)
|
||||
<COND (<FSET? .PLACE ,FL-HAS-DESCFCN>
|
||||
<RETURN <NOT <APPLY <GETP .PLACE ,P?ACTION> .CONTEXT>>>)
|
||||
(T <RTRUE>)>>
|
||||
|
||||
<ROUTINE RT-DESCFCN-CONTEXT (CONTEXT)
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1 ,K-M-DESC-2 ,K-M-DESC-3>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE RT-DESC-ALL ("OPTIONAL" (PLACE <>) (LOOK <>)
|
||||
"AUX" (HOLMES-IN-HOUSE? <>))
|
||||
<COND (<RT-DESCRIBE-PLACE .PLACE .LOOK>
|
||||
<RT-DESCRIBE-PLACE-CONTENTS .PLACE .LOOK>)>
|
||||
<COND (<MC-F? <RT-IS-LIT? .PLACE T>>
|
||||
<RTRUE>)
|
||||
(<MC-F? ,GL-PUPPY-MSG?>
|
||||
<SETG GL-PUPPY-MSG? T>)
|
||||
(<MC-T? ,GL-PUPPY>
|
||||
<COND (<EQUAL? ,GL-PUPPY ,CH-HOLMES>
|
||||
<TELL CR
|
||||
<RT-PICK-NEXT ,GL-HOLMES-DESC-TXT>>
|
||||
<COND (<MC-HERE? ,RM-ENTRY-HALL
|
||||
,RM-PARLOUR
|
||||
,RM-VESTIBULE
|
||||
,RM-HOLMES-STUDY
|
||||
,RM-HOLMES-BEDROOM>
|
||||
<SET HOLMES-IN-HOUSE? T>)>
|
||||
<COND (<MC-T? .LOOK>
|
||||
<COND (<IN? ,CH-HOLMES ,TH-BOAT>
|
||||
<TELL ,K-SEASICK-MSG>)
|
||||
(<OR <IN? ,CH-HOLMES ,TH-HANSOM-CAB>
|
||||
<IN? ,CH-HOLMES ,TH-GROWLER-CAB>>
|
||||
<TELL ,K-SITTING-QUIETLY-MSG>)
|
||||
(.HOLMES-IN-HOUSE?
|
||||
<TELL <RT-PICK-NEXT
|
||||
,GL-HOLMES-HOUSE-LOOK-TXT>>)
|
||||
(<MC-IS? ,GL-PLACE-CUR ,FL-INDOORS>
|
||||
<TELL <RT-PICK-NEXT
|
||||
,GL-HOLMES-INDOORS-LOOK-TXT>>)
|
||||
(T
|
||||
<TELL <RT-PICK-NEXT
|
||||
,GL-HOLMES-OUTDOORS-LOOK-TXT>>)>
|
||||
<TELL "." CR>)
|
||||
(<EQUAL? ,GL-DESC-LEVEL 2 1>
|
||||
<COND (.HOLMES-IN-HOUSE?
|
||||
<TELL <RT-PICK-NEXT
|
||||
,GL-HOLMES-HOUSE-ENTER-TXT>>)
|
||||
(<MC-IS? ,GL-PLACE-CUR ,FL-INDOORS>
|
||||
<TELL <RT-PICK-NEXT
|
||||
,GL-HOLMES-INDOORS-ENTER-TXT>>)
|
||||
(T
|
||||
<TELL <RT-PICK-NEXT
|
||||
,GL-HOLMES-OUTDOORS-ENTER-TXT>>)>
|
||||
<TELL "." CR>)>)
|
||||
(<EQUAL? ,GL-PUPPY ,CH-WIGGINS>
|
||||
<TELL CR
|
||||
<RT-PICK-NEXT ,GL-WIGGINS-DESC-TXT>>
|
||||
<COND (<MC-T? .LOOK>
|
||||
<COND (<IN? ,CH-WIGGINS ,TH-BOAT>
|
||||
<TELL ,K-ENJOYING-RIDE-MSG>)
|
||||
(<OR <IN? ,CH-WIGGINS ,TH-HANSOM-CAB>
|
||||
<IN? ,CH-WIGGINS ,TH-GROWLER-CAB>>
|
||||
<TELL ,K-FIDGETING-MSG>)
|
||||
(T
|
||||
<TELL <RT-PICK-NEXT
|
||||
,GL-WIGGINS-LOOK-TXT>>)>
|
||||
<TELL "." CR>)
|
||||
(<EQUAL? ,GL-DESC-LEVEL 2 1>
|
||||
<TELL <RT-PICK-NEXT
|
||||
,GL-WIGGINS-ENTER-TXT> "." CR>)>)>)>
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE RT-GOTO (NEWPLACE "AUX" X NEWLIT? OLDPLACE AMP? SS?)
|
||||
<SET OLDPLACE ,GL-PLACE-CUR>
|
||||
<MOVE ,CH-PLAYER .NEWPLACE>
|
||||
<SETG GL-PLACE-CUR .NEWPLACE>
|
||||
<SET NEWLIT? <RT-IS-LIT?>>
|
||||
<MOVE ,CH-PLAYER .OLDPLACE>
|
||||
<SETG GL-PLACE-CUR .OLDPLACE>
|
||||
<COND (<MC-F? .NEWLIT?>
|
||||
; "Moved to get it out of preload"
|
||||
<TOO-DARK-TO-GO .NEWPLACE>
|
||||
<RTRUE>)>
|
||||
<SET X <APPLY <GETP ,GL-PLACE-CUR ,P?ACTION> ,K-M-EXIT>>
|
||||
<COND (<AND <MC-ISNOT? .OLDPLACE ,FL-INDOORS>
|
||||
<MC-ISNOT? .NEWPLACE ,FL-INDOORS>>
|
||||
<RT-CLOCK-JMP 0 5 0>)>
|
||||
<SETG GL-PLACE-PRV .OLDPLACE>
|
||||
<SETG GL-PLACE-CUR .NEWPLACE>
|
||||
<SETG GL-NOW-LIT? <RT-IS-LIT?>>
|
||||
<MOVE ,CH-PLAYER ,GL-PLACE-CUR>
|
||||
<SET X <APPLY <GETP ,GL-PLACE-CUR ,P?ACTION> ,K-M-ENTERING>>
|
||||
<COND (<MC-T? ,GL-PUPPY>
|
||||
<MOVE ,GL-PUPPY <LOC ,CH-PLAYER>>)
|
||||
(<AND <MC-T? ,GL-FORMER-PUPPY>
|
||||
<IN? ,GL-FORMER-PUPPY ,GL-PLACE-CUR>
|
||||
<NOT <FSET? ,GL-FORMER-PUPPY ,FL-ASLEEP>>>
|
||||
<SETG GL-PUPPY ,GL-FORMER-PUPPY>
|
||||
<SETG GL-FORMER-PUPPY <>>)>
|
||||
<RT-DESC-ALL>
|
||||
<SET AMP? <AND <IN? ,TH-ETHERIUM-AMPOULE ,CH-PLAYER>
|
||||
<NOT <FSET? ,TH-ETHERIUM-AMPOULE ,FL-BROKEN>>>>
|
||||
<SET SS? <MC-IS? ,TH-STETHOSCOPE ,FL-WORN>>
|
||||
<COND (<OR .AMP? .SS?>
|
||||
<HOLMES-COMPLAINS .AMP? .SS?>)>
|
||||
<SET X <APPLY <GETP ,GL-PLACE-CUR ,P?ACTION> ,K-M-ENTERED>>
|
||||
<RT-RESET-THEM>
|
||||
<COND (<IN? ,TH-ETHERIUM-GAS ,GL-PLACE-CUR>
|
||||
<RT-SMELL-ETHERIUM?>)>
|
||||
;"Check if etherium is in the room."
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE RT-RESET-THEM ()
|
||||
<COND (<NOT <RT-VISIBLE? ,GL-P-IT-OBJECT>>
|
||||
<SETG GL-P-IT-OBJECT ,TH-NOT-HERE-OBJECT>)>
|
||||
<COND (<NOT <RT-VISIBLE? ,GL-P-THEM-OBJECT>>
|
||||
<SETG GL-P-THEM-OBJECT ,TH-NOT-HERE-OBJECT>)>
|
||||
<COND (<NOT <RT-VISIBLE? ,GL-P-HIM-OBJECT>>
|
||||
<SETG GL-P-HIM-OBJECT ,TH-NOT-HERE-OBJECT>)>
|
||||
<COND (<NOT <RT-VISIBLE? ,GL-P-HER-OBJECT>>
|
||||
<SETG GL-P-HER-OBJECT ,TH-NOT-HERE-OBJECT>)>
|
||||
<RTRUE>>
|
||||
|
||||
<ROUTINE RT-UPDATE-SCORE ("OPTIONAL" (PTS 1))
|
||||
<SETG GL-SCORE-CUR <+ ,GL-SCORE-CUR .PTS>>
|
||||
<RT-NEW-SCORE-MSG .PTS>>
|
||||
|
||||
<ROUTINE RT-UPDATE-MOVES ("OPTIONAL" (MVS 1))
|
||||
<COND (<MC-T? ,GL-CLOCK-WAIT>
|
||||
<RFALSE>)
|
||||
(<MC-T? ,GL-CLOCK-STOP>
|
||||
<RFALSE>)>
|
||||
<SETG GL-MOVES-CUR <+ ,GL-MOVES-CUR .MVS>>>
|
||||
|
||||
<ROUTINE RT-UPDATE-CLOCK ("OPTIONAL" (HRS 0) (MIN 0) (SEC 0))
|
||||
<COND (<OR <MC-NOTZERO? .HRS>
|
||||
<MC-NOTZERO? .MIN>
|
||||
<MC-NOTZERO? .SEC>>
|
||||
<RT-CLOCK-INC-SET .HRS .MIN .SEC>)>
|
||||
<RT-CLOCK-INC>>
|
||||
|
||||
<ROUTINE RT-MAIN-LOOP ("AUX" ICNT OCNT NUM CNT OBJ TBL (V <>) PTBL OBJ1
|
||||
TMP X (TOUCH-VERB? <>) (MYCROFT? <>) TV)
|
||||
<REPEAT ()
|
||||
<SET CNT 0>
|
||||
<SET OBJ <>>
|
||||
<SET PTBL T>
|
||||
<SETG GL-P-MULT? <>>
|
||||
<COND (<NOT <MC-HERE? GL-P-QCONTEXT-RM>>
|
||||
<SETG GL-P-QCONTEXT-TH <>>)>
|
||||
<SETG GL-P-GOOD <RT-PARSER>>
|
||||
<COND (<MC-T? ,GL-P-GOOD>
|
||||
<SET ICNT <GET ,GL-P-PRSI ,K-P-MATCHLEN>>
|
||||
<SET OCNT <GET ,GL-P-PRSO ,K-P-MATCHLEN>>
|
||||
<COND (<AND <MC-T? ,GL-P-IT-OBJECT>
|
||||
<RT-ACCESSIBLE? ,GL-P-IT-OBJECT>>
|
||||
<SET TMP <>>
|
||||
<REPEAT ()
|
||||
<COND (<G? <SET CNT <+ .CNT 1>> .ICNT>
|
||||
<RETURN>)
|
||||
(T
|
||||
<COND (<EQUAL? <GET ,GL-P-PRSI .CNT> ,TH-IT>
|
||||
<PUT ,GL-P-PRSI .CNT ,GL-P-IT-OBJECT>
|
||||
<SET TMP T>
|
||||
<RETURN>)>)>>
|
||||
<COND (<ZERO? .TMP>
|
||||
<SET CNT 0>
|
||||
<REPEAT ()
|
||||
<COND (<G? <SET CNT <+ .CNT 1>> .OCNT>
|
||||
<RETURN>)
|
||||
(T
|
||||
<COND (<EQUAL? <GET ,GL-P-PRSO .CNT> ,TH-IT>
|
||||
<PUT ,GL-P-PRSO .CNT ,GL-P-IT-OBJECT>
|
||||
<RETURN>)>)>>)>
|
||||
<SET CNT 0>)>
|
||||
<SET NUM <COND (<ZERO? .OCNT>
|
||||
.OCNT)
|
||||
(<G? .OCNT 1>
|
||||
<SET TBL ,GL-P-PRSO>
|
||||
<COND (<ZERO? .ICNT>
|
||||
<SET OBJ <>>)
|
||||
(T
|
||||
<SET OBJ <GET ,GL-P-PRSI 1>>)>
|
||||
.OCNT)
|
||||
(<G? .ICNT 1>
|
||||
<SET PTBL <>>
|
||||
<SET TBL ,GL-P-PRSI>
|
||||
<SET OBJ <GET ,GL-P-PRSO 1>>
|
||||
.ICNT)
|
||||
(T 1)>>
|
||||
<COND (<AND <ZERO? .OBJ>
|
||||
<EQUAL? .ICNT 1>>
|
||||
<SET OBJ <GET ,GL-P-PRSI 1>>)>
|
||||
<COND (<MC-VERB? WALK>
|
||||
<SET V <RT-PERFORM ,GL-PRSA ,GL-PRSO>>)
|
||||
(<ZERO? .NUM>
|
||||
<COND (<0? <P-SONUMS ,GL-P-SYNTAX>>
|
||||
<SET V <RT-PERFORM ,GL-PRSA>>
|
||||
<SETG GL-PRSO <>>)
|
||||
(<ZERO? ,GL-NOW-LIT?>
|
||||
<RT-P-CLEAR>
|
||||
<TELL ,K-TOO-DARK-MSG CR>)
|
||||
(T
|
||||
<RT-P-CLEAR>
|
||||
<TELL "[There isn't anything to ">
|
||||
<SET TMP <GET ,GL-P-ITBL ,K-P-VERBN>>
|
||||
<COND (<RT-TALK-VERB?>
|
||||
<TELL "talk to">)
|
||||
(<OR <MC-T? ,GL-P-MERGED>
|
||||
<MC-T? ,GL-P-ORPH>>
|
||||
<PRINTB <GET .TMP 0>>)
|
||||
(T
|
||||
<SET V <RT-WORD-PRINT <GETB .TMP 2>
|
||||
<GETB .TMP 3>>>)>
|
||||
<TELL ".]" CR>
|
||||
<SET V <>>)>)
|
||||
(T
|
||||
<SET X 0>
|
||||
<COND (<G? .NUM 1>
|
||||
<SETG GL-P-MULT? T>)>
|
||||
<SET TMP <>>
|
||||
<REPEAT ()
|
||||
<COND (<G? <SET CNT <+ .CNT 1>> .NUM>
|
||||
<COND (<G? .X 0>
|
||||
<TELL "[The ">
|
||||
<COND (<NOT <EQUAL? .X .NUM>>
|
||||
<TELL "other ">)>
|
||||
<TELL "object">
|
||||
<COND (<NOT <EQUAL? .X 1>>
|
||||
<TELL "s">)>
|
||||
<TELL " that you mentioned ">
|
||||
<COND (<NOT <EQUAL? .X 1>>
|
||||
<TELL "are">)
|
||||
(T
|
||||
<TELL "is">)>
|
||||
<TELL "n't here.]" CR>)
|
||||
(<ZERO? .TMP>
|
||||
<RT-REFER-TO-MSG>)>
|
||||
<RETURN>)
|
||||
(T
|
||||
<COND (<MC-T? .PTBL>
|
||||
<SET OBJ1 <GET ,GL-P-PRSO .CNT>>)
|
||||
(T
|
||||
<SET OBJ1 <GET ,GL-P-PRSI .CNT>>)>
|
||||
<COND (<OR <G? .NUM 1>
|
||||
<EQUAL? <GET <GET ,GL-P-ITBL ,K-P-NC1> 0>
|
||||
,W?ALL ,W?EVERYTHING>>
|
||||
<COND (<EQUAL? .OBJ1 ,TH-NOT-HERE-OBJECT>
|
||||
<INC X>
|
||||
<AGAIN>)
|
||||
(<AND <EQUAL? ,GL-P-GET-FLAGS ,K-P-ALL>
|
||||
<RT-DONT-ALL? .OBJ1 .OBJ>>
|
||||
<AGAIN>)
|
||||
(<NOT <RT-ACCESSIBLE? .OBJ1>>
|
||||
<AGAIN>)
|
||||
(<EQUAL? .OBJ1 ,CH-PLAYER>
|
||||
<AGAIN>)
|
||||
(T
|
||||
<COND (<EQUAL? .OBJ1 ,TH-IT>
|
||||
<TELL CTHE ,GL-P-IT-OBJECT>)
|
||||
(T
|
||||
<TELL CTHE .OBJ1>)>
|
||||
<TELL ": ">)>)>
|
||||
<SET TMP T>
|
||||
<SETG GL-PRSO <COND (<MC-T? .PTBL>
|
||||
.OBJ1)
|
||||
(T
|
||||
.OBJ)>>
|
||||
<SETG GL-PRSI <COND (<MC-T? .PTBL>
|
||||
.OBJ)
|
||||
(T
|
||||
.OBJ1)>>
|
||||
; "DEB -- Do real visibility or accessibility tests here."
|
||||
<COND (<AND <==? ,GL-WINNER ,CH-BUTLER>
|
||||
<EQUAL? <ZGET ,GL-P-NAMW 0>
|
||||
,W?HOLMES ,W?MYCROFT>>
|
||||
<SET MYCROFT? T>
|
||||
<SET TOUCH-VERB? <>>)>
|
||||
<COND (<AND <F? .MYCROFT?>
|
||||
<N==? ,GL-PRSA ,V?FIND>
|
||||
<OR <SET TOUCH-VERB? <RT-TOUCH-VERB?>>
|
||||
<SET TV <INTBL? ,GL-PRSA <REST ,GL-SEE-VERBS 2>
|
||||
<GET ,GL-SEE-VERBS 0>>>>>
|
||||
<COND (<AND <MC-T? ,GL-PRSO>
|
||||
<NOT <RT-VISIBLE? ,GL-PRSO>>>
|
||||
<RT-CANT-SEE-ANY-MSG ,GL-PRSO>
|
||||
<COND (<L=? .OCNT 1>
|
||||
<SET V ,FATAL-VALUE>
|
||||
<RETURN>)>
|
||||
<AGAIN>)
|
||||
(<AND <MC-T? ,GL-PRSI>
|
||||
<NOT <RT-VISIBLE? ,GL-PRSI>>>
|
||||
<RT-CANT-SEE-ANY-MSG ,GL-PRSI>
|
||||
<COND (<L=? .ICNT 1>
|
||||
<SET V ,FATAL-VALUE>
|
||||
<RETURN>)>
|
||||
<AGAIN>)>)>
|
||||
<COND (.TOUCH-VERB?
|
||||
<COND (<AND <MC-T? ,GL-PRSO>
|
||||
<NOT <RT-ACCESSIBLE? ,GL-PRSO>>>
|
||||
<RT-CANT-TOUCH-MSG ,GL-PRSO ,GL-CLOSED-OBJECT ,GL-IN-OUT>
|
||||
<COND (<L=? .OCNT 1>
|
||||
<SET V ,FATAL-VALUE>
|
||||
<RETURN>)>
|
||||
<AGAIN>)
|
||||
(<AND <MC-T? ,GL-PRSI>
|
||||
<NOT <RT-ACCESSIBLE? ,GL-PRSI>>>
|
||||
<RT-CANT-TOUCH-MSG ,GL-PRSI ,GL-CLOSED-OBJECT ,GL-IN-OUT>
|
||||
<COND (<L=? .ICNT 1>
|
||||
<SET V ,FATAL-VALUE>
|
||||
<RETURN>)>
|
||||
<AGAIN>)>)>
|
||||
; "DEB -- End real visibility and accessibility tests."
|
||||
<SET V <RT-PERFORM ,GL-PRSA ,GL-PRSO ,GL-PRSI>>
|
||||
<COND (<EQUAL? .V ,FATAL-VALUE>
|
||||
<RETURN>)>)>>
|
||||
<COND (,GL-P-OVERFLOW
|
||||
<TELL CR
|
||||
"[Note: There are so many objects here that a few may have been overlooked.
|
||||
Please double check to make sure you have accomplished what you intended.]"
|
||||
CR>)>)>
|
||||
<COND (<EQUAL? .V ,FATAL-VALUE>
|
||||
<SETG GL-P-CONT <>>)>)
|
||||
(T
|
||||
<SETG GL-P-CONT <>>)>
|
||||
<COND (<AND <MC-T? ,GL-P-GOOD>
|
||||
<NOT <EQUAL? .V ,FATAL-VALUE>>
|
||||
<NOT <SET TV <INTBL? ,GL-PRSA <REST ,GL-GAME-VERBS 2>
|
||||
<GET ,GL-GAME-VERBS 0>>>>>
|
||||
<RT-UPDATE-MOVES>
|
||||
<RT-UPDATE-CLOCK>
|
||||
<RT-ALARM-CHK>)>
|
||||
<RT-TIME-OF-DAY-MSG>
|
||||
<SETG GL-PRSA <>>
|
||||
<SETG GL-PRSO <>>
|
||||
<SETG GL-PRSI <>>>>
|
||||
|
||||
<ROUTINE RT-TOUCH-VERB? ()
|
||||
<INTBL? ,GL-PRSA <REST ,GL-TOUCH-VERBS 2> <GET ,GL-TOUCH-VERBS 0>>>
|
||||
|
||||
<ROUTINE RT-TALK-VERB? ()
|
||||
<INTBL? ,GL-PRSA <REST ,GL-TALK-VERBS 2> <GET ,GL-TALK-VERBS 0>>>
|
||||
|
||||
; "RT-AC-CH-PLAYER has to be here because called every turn, more or less."
|
||||
|
||||
<ROUTINE RT-AC-CH-PLAYER ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-CH-AC "CH-PLAYER" .CONTEXT>>
|
||||
<SETG GL-WAIT-BELL <>>
|
||||
<COND (<MC-THIS-WINNER?>
|
||||
<COND (<MC-VERB? TELL>
|
||||
<SETG GL-CLOCK-WAIT <>>
|
||||
<RFALSE>)
|
||||
(<AND <OR <MC-PRSO? ,TH-HANDS>
|
||||
<MC-PRSI? ,TH-HANDS>>
|
||||
<RT-CHECK-HANDS>>
|
||||
<RFALSE>)
|
||||
(<AND <RT-TOUCH-VERB?>
|
||||
<MC-IS? ,TH-HANDS ,FL-LOCKED>>
|
||||
<RT-HANDS-COVERING-EARS>)>)
|
||||
(T
|
||||
<RT-AC-CH-PLAYER-AUX>)>>
|
46
cab.zabstr
Normal file
46
cab.zabstr
Normal file
|
@ -0,0 +1,46 @@
|
|||
|
||||
<OBJECT CH-HANSOM-CABBIE (LOC TH-HANSOM-CAB) (DESC "hansom cabbie") (FLAGS
|
||||
FL-NODESC FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL) (SYNONYM CABBIE DRIVER) (
|
||||
ADJECTIVE HANSOM) (SIZE 99) (ACTION RT-AC-CH-HANSOM-CABBIE)>
|
||||
<OBJECT CH-GROWLER-CABBIE (LOC TH-GROWLER-CAB) (DESC "growler cabbie") (FLAGS
|
||||
FL-NODESC FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL) (SYNONYM CABBIE DRIVER) (
|
||||
ADJECTIVE GROWLER) (SIZE 99) (ACTION RT-AC-CH-GROWLER-CABBIE)>
|
||||
<DEFINE-ROUTINE RT-AC-CH-HANSOM-CABBIE>
|
||||
<DEFINE-ROUTINE RT-AC-CH-GROWLER-CABBIE>
|
||||
<CONSTANT CAB-ROOM-IDS-LEN 37>
|
||||
<CONSTANT CAB-ROOM-IDS <TABLE (PURE BYTE) RM-221B-BAKER-ST RM-YORK-PLACE
|
||||
RM-MARYLEBONE-RD RM-TOTTENHAM-COURT-RD RM-ST-GILES-CIRCUS RM-OXFORD-ST
|
||||
RM-ORCHARD-ST RM-AUDLEY-ST RM-HYDE-PARK-CORNER RM-KENSINGTON-GARDENS
|
||||
RM-TRAFALGAR-SQUARE RM-GREAT-RUSSELL-ST RM-GROSVENOR-PLACE RM-VICTORIA-SQUARE
|
||||
RM-VICTORIA-STREET RM-BROAD-SANCTUARY RM-PARLIAMENT-SQUARE
|
||||
RM-BUCKINGHAM-PALACE-RD RM-QUEENS-GARDENS RM-BIRDCAGE-WALK RM-THE-MALL
|
||||
RM-WHITEHALL RM-NEW-OXFORD-ST RM-COVENT-GARDEN RM-THE-STRAND RM-FLEET-STREET
|
||||
RM-THE-EMBANKMENT RM-UPPER-THAMES-ST 0 RM-PINCHIN-LANE RM-CHEAPSIDE
|
||||
RM-THREADNEEDLE-ST RM-KING-WILLIAM-ST RM-MONUMENT RM-LOWER-THAMES-ST
|
||||
RM-LONDON-BRIDGE RM-TOWER-ENTRANCE>>
|
||||
<DEFINE-ROUTINE RT-GET-ROOM-ID>
|
||||
<DEFINE-ROUTINE RT-CAB-DIST>
|
||||
<DEFINE-ROUTINE RT-I-CAB-ARRIVE>
|
||||
<DEFINE-ROUTINE RT-I-HANSOM-LEAVE>
|
||||
<DEFINE-ROUTINE RT-I-HANSOM-TO?>
|
||||
<DEFINE-ROUTINE RT-I-GROWLER-LEAVE>
|
||||
<DEFINE-ROUTINE RT-I-GROWLER-TO?>
|
||||
<DEFINE-ROUTINE RT-MOVE-HANSOM>
|
||||
<DEFINE-ROUTINE RT-MOVE-GROWLER>
|
||||
<DEFINE-ROUTINE RT-CF-TH-HANSOM-CAB>
|
||||
<DEFINE-ROUTINE RT-CF-TH-GROWLER-CAB>
|
||||
<DEFINE-ROUTINE RT-BLOW-WHISTLE>
|
||||
<OBJECT TH-HANSOM-CAB (LOC RM-VICTORIA-SQUARE) (DESC "hansom cab") (FLAGS
|
||||
FL-VEHICLE FL-CONTAINER FL-TRYTAKE FL-OPENED FL-LIGHTED FL-HAS-DESCFCN) (
|
||||
SYNONYM CAB) (ADJECTIVE HANSOM) (SIZE 0 CAPACITY 999) (ACTION
|
||||
RT-AC-TH-HANSOM-CAB) (CONTFCN RT-CF-TH-HANSOM-CAB)>
|
||||
<OBJECT TH-GROWLER-CAB (LOC RM-OXFORD-ST) (DESC "growler cab") (FLAGS
|
||||
FL-VEHICLE FL-CONTAINER FL-TRYTAKE FL-OPENED FL-LIGHTED FL-HAS-DESCFCN) (
|
||||
SYNONYM CAB) (ADJECTIVE GROWLER) (SIZE 0 CAPACITY 999) (ACTION
|
||||
RT-AC-TH-GROWLER-CAB) (CONTFCN RT-CF-TH-GROWLER-CAB)>
|
||||
<OBJECT TH-CAB-WHISTLE (LOC CH-PLAYER) (DESC "whistle") (FLAGS FL-TAKEABLE
|
||||
FL-CLOTHING FL-WORN) (SYNONYM WHISTLE) (SIZE 1 MASS 1) (ACTION
|
||||
RT-AC-TH-CAB-WHISTLE)>
|
||||
<DEFINE-ROUTINE RT-AC-TH-HANSOM-CAB>
|
||||
<DEFINE-ROUTINE RT-AC-TH-GROWLER-CAB>
|
||||
<DEFINE-ROUTINE RT-AC-TH-CAB-WHISTLE>
|
823
cab.zap
Normal file
823
cab.zap
Normal file
|
@ -0,0 +1,823 @@
|
|||
|
||||
|
||||
.FUNCT RT-AC-CH-HANSOM-CABBIE,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-WINNER \?CCL3
|
||||
EQUAL? GL-PRSA,V?WAIT \?CCL6
|
||||
SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE
|
||||
SET 'GL-WHERE-TO-ORPH?,FALSE-VALUE
|
||||
PRINTI """Right-o."""
|
||||
CRLF
|
||||
SET 'TH-HANSOM-CAB-AUX2,1
|
||||
ICALL2 RT-ALARM-CLR,RT-I-HANSOM-LEAVE
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,30,0
|
||||
CALL RT-ALARM-SET-REL,RT-I-HANSOM-LEAVE,STACK
|
||||
RSTACK
|
||||
?CCL6: EQUAL? GL-PRSA,V?DRIVE,V?WALK-TO \?CCL8
|
||||
CALL1 RT-CF-TH-HANSOM-CAB
|
||||
RSTACK
|
||||
?CCL8: EQUAL? GL-PRSA,V?HELLO,V?GOODBYE,V?THANK \?CCL10
|
||||
SET 'GL-WINNER,CH-PLAYER
|
||||
CALL RT-PERFORM,GL-PRSA,CH-HANSOM-CABBIE
|
||||
RSTACK
|
||||
?CCL10: PRINTR """Sorry, guv. All I does is drives a cab."""
|
||||
?CCL3: EQUAL? GL-PRSA,V?PAY \?PRD14
|
||||
ZERO? GL-NOW-PRSI? /?CTR11
|
||||
?PRD14: EQUAL? GL-PRSA,V?GIVE \?CCL12
|
||||
ZERO? GL-NOW-PRSI? /?CCL12
|
||||
FSET? GL-PRSO,FL-MONEY \?CCL12
|
||||
?CTR11: PRINTR """No thanks, guv'nor. It'll go on Mr 'Olmes's monthly account."""
|
||||
?CCL12: EQUAL? GL-PRSA,V?TELL \?CCL21
|
||||
ZERO? GL-NOW-PRSI? \?CCL21
|
||||
ZERO? GL-P-CONT \FALSE
|
||||
?CCL21: EQUAL? GL-PRSA,V?HELLO \?CCL26
|
||||
PRINTR """'Ello."""
|
||||
?CCL26: EQUAL? GL-PRSA,V?GOODBYE \?CCL28
|
||||
PRINTR """Ta ta."""
|
||||
?CCL28: EQUAL? GL-PRSA,V?THANK \?CCL30
|
||||
PRINTR """Anytime, mate."""
|
||||
?CCL30: CALL1 RT-TALK-VERB?
|
||||
ZERO? STACK /FALSE
|
||||
PRINTR """Sorry, sir. No time to chat."""
|
||||
|
||||
|
||||
.FUNCT RT-AC-CH-GROWLER-CABBIE,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-WINNER \?CCL3
|
||||
EQUAL? GL-PRSA,V?WAIT \?CCL6
|
||||
SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE
|
||||
SET 'GL-WHERE-TO-ORPH?,FALSE-VALUE
|
||||
ICALL2 RT-CTHEO-PRINT,CH-GROWLER-CABBIE
|
||||
PRINTR " says brightly, ""Okay."""
|
||||
?CCL6: EQUAL? GL-PRSA,V?DRIVE,V?WALK-TO \?CCL8
|
||||
CALL1 RT-CF-TH-GROWLER-CAB
|
||||
RSTACK
|
||||
?CCL8: ICALL2 RT-CTHEO-PRINT,CH-GROWLER-CABBIE
|
||||
PRINTR " says brightly, ""Hello,"" and looks at you expectantly."
|
||||
?CCL3: EQUAL? GL-PRSA,V?PAY \?PRD12
|
||||
ZERO? GL-NOW-PRSI? /?CTR9
|
||||
?PRD12: EQUAL? GL-PRSA,V?GIVE \?CCL10
|
||||
ZERO? GL-NOW-PRSI? /?CCL10
|
||||
FSET? GL-PRSO,FL-MONEY \?CCL10
|
||||
?CTR9: ICALL2 RT-CTHEO-PRINT,CH-GROWLER-CABBIE
|
||||
PRINTR " says brightly, ""No thanks. I'm not in it for the money. I just like to meet new people."""
|
||||
?CCL10: EQUAL? GL-PRSA,V?TELL \?CCL19
|
||||
ZERO? GL-NOW-PRSI? \?CCL19
|
||||
ZERO? GL-P-CONT \FALSE
|
||||
?CCL19: CALL1 RT-TALK-VERB?
|
||||
ZERO? STACK /FALSE
|
||||
ICALL2 RT-CTHEO-PRINT,CH-GROWLER-CABBIE
|
||||
PRINTR " says brightly, ""Hello,"" and looks at you expectantly."
|
||||
|
||||
|
||||
.FUNCT RT-GET-ROOM-ID,HERE,TBL
|
||||
INTBL? HERE,CAB-ROOM-IDS,CAB-ROOM-IDS-LEN,1 >TBL \FALSE
|
||||
LESS? CAB-ROOM-IDS,0 \?CCL6
|
||||
SUB TBL,CAB-ROOM-IDS
|
||||
ADD STACK,1
|
||||
RSTACK
|
||||
?CCL6: SUB CAB-ROOM-IDS,TBL
|
||||
ADD STACK,1
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-CAB-DIST,HERE,THERE,NUM1,NUM2,PTR,TMP
|
||||
CALL2 RT-GET-ROOM-ID,HERE >NUM1
|
||||
CALL2 RT-GET-ROOM-ID,THERE >NUM2
|
||||
EQUAL? HERE,THERE /FALSE
|
||||
EQUAL? NUM1,NUM2 /FALSE
|
||||
LESS? NUM1,NUM2 \?CND5
|
||||
SET 'TMP,NUM1
|
||||
SET 'NUM1,NUM2
|
||||
SET 'NUM2,TMP
|
||||
?CND5: SUB NUM1,2 >NUM1
|
||||
?PRG7: LESS? NUM1,1 /?REP8
|
||||
ADD PTR,NUM1 >PTR
|
||||
DEC 'NUM1
|
||||
JUMP ?PRG7
|
||||
?REP8: SUB NUM2,1
|
||||
ADD PTR,STACK >PTR
|
||||
GETB GL-CAB-DIST-TBL,PTR
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-I-CAB-ARRIVE,CAB,PLACE,NUM,SCORE,AUX1
|
||||
SET 'NUM,TH-CAB-WHISTLE-AUX1
|
||||
SET 'PLACE,TH-CAB-WHISTLE-AUX2
|
||||
SET 'TH-CAB-WHISTLE-AUX1,0
|
||||
SET 'TH-CAB-WHISTLE-AUX2,0
|
||||
EQUAL? GL-PLACE-CUR,PLACE \FALSE
|
||||
EQUAL? GL-PRSA,V?WALK /FALSE
|
||||
EQUAL? NUM,1 \?CCL8
|
||||
SET 'CAB,TH-GROWLER-CAB
|
||||
SET 'SCORE,0
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,5,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-GROWLER-LEAVE,STACK
|
||||
ICALL2 RT-REMOVE-ALL,TH-GROWLER-CAB
|
||||
MOVE CH-GROWLER-CABBIE,TH-GROWLER-CAB
|
||||
FSET CH-GROWLER-CABBIE,FL-SEEN
|
||||
JUMP ?CND6
|
||||
?CCL8: EQUAL? NUM,2 \FALSE
|
||||
SET 'CAB,TH-HANSOM-CAB
|
||||
SET 'SCORE,5
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,5,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-HANSOM-LEAVE,STACK
|
||||
ICALL2 RT-REMOVE-ALL,TH-HANSOM-CAB
|
||||
MOVE CH-HANSOM-CABBIE,TH-HANSOM-CAB
|
||||
FSET CH-HANSOM-CABBIE,FL-SEEN
|
||||
?CND6: ZERO? SOUND-QUEUED? \?CND11
|
||||
SET 'CAB-RAMP,2
|
||||
ICALL1 RT-S-CAB-ARRIVES
|
||||
?CND11: CRLF
|
||||
PRINTI "A "
|
||||
ICALL2 DPRINT,CAB
|
||||
PRINTI " pulls up beside you."
|
||||
CRLF
|
||||
MOVE CAB,GL-PLACE-CUR
|
||||
EQUAL? CAB,TH-HANSOM-CAB \?CCL15
|
||||
SET 'AUX1,TH-HANSOM-CAB-AUX1
|
||||
JUMP ?CND13
|
||||
?CCL15: SET 'AUX1,TH-GROWLER-CAB-AUX1
|
||||
?CND13: ZERO? AUX1 \TRUE
|
||||
EQUAL? CAB,TH-HANSOM-CAB \?CCL20
|
||||
SET 'TH-HANSOM-CAB-AUX1,1
|
||||
JUMP ?CND18
|
||||
?CCL20: SET 'TH-GROWLER-CAB-AUX1,1
|
||||
?CND18: ZERO? SCORE /TRUE
|
||||
ICALL2 RT-UPDATE-SCORE,SCORE
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-I-HANSOM-LEAVE
|
||||
EQUAL? GL-PLACE-CUR,RM-VICTORIA-SQUARE /?CND1
|
||||
CALL2 RT-VISIBLE?,TH-HANSOM-CAB
|
||||
ZERO? STACK /?CND3
|
||||
ICALL1 RT-S-CAB-LEAVES
|
||||
ICALL2 RT-CTHEO-PRINT,TH-HANSOM-CAB
|
||||
PRINTI " drives off."
|
||||
CRLF
|
||||
?CND3: MOVE TH-HANSOM-CAB,RM-VICTORIA-SQUARE
|
||||
ICALL2 RT-REMOVE-ALL,TH-HANSOM-CAB
|
||||
MOVE CH-HANSOM-CABBIE,TH-HANSOM-CAB
|
||||
CALL1 RT-IS-LIT? >GL-NOW-LIT?
|
||||
?CND1: SET 'TH-HANSOM-CAB-AUX2,0
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-I-HANSOM-TO?
|
||||
IN? CH-PLAYER,TH-HANSOM-CAB \FALSE
|
||||
PRINTI """Where to mister?"""
|
||||
CRLF
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,1,0
|
||||
CALL RT-ALARM-SET-REL,RT-I-HANSOM-TO?,STACK
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-I-GROWLER-LEAVE
|
||||
EQUAL? GL-PLACE-CUR,RM-OXFORD-ST /FALSE
|
||||
CALL2 RT-VISIBLE?,TH-GROWLER-CAB
|
||||
ZERO? STACK /?CND3
|
||||
ICALL1 RT-S-CAB-LEAVES
|
||||
ICALL2 RT-CTHEO-PRINT,TH-GROWLER-CAB
|
||||
PRINTI " drives off."
|
||||
CRLF
|
||||
?CND3: MOVE TH-GROWLER-CAB,RM-OXFORD-ST
|
||||
ICALL2 RT-REMOVE-ALL,TH-GROWLER-CAB
|
||||
MOVE CH-GROWLER-CABBIE,TH-GROWLER-CAB
|
||||
CALL1 RT-IS-LIT? >GL-NOW-LIT?
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-I-GROWLER-TO?
|
||||
IN? CH-PLAYER,TH-GROWLER-CAB \FALSE
|
||||
CRLF
|
||||
PRINTI "Suddenly the cabbie - who seems to have a low threshold of boredom - pipes up and says, ""I know where we can go!"""
|
||||
CRLF
|
||||
CRLF
|
||||
PRINT K-WILD-RIDE-MSG
|
||||
CRLF
|
||||
ICALL1 RT-MOVE-GROWLER
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,5,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-GROWLER-TO?,STACK
|
||||
CRLF
|
||||
CALL1 RT-DESC-ALL
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-MOVE-HANSOM,ROOM,MIN
|
||||
EQUAL? GL-PLACE-CUR,ROOM \?CCL3
|
||||
PRINTR """We're already here, guv."""
|
||||
?CCL3: ZERO? ROOM /FALSE
|
||||
SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE
|
||||
SET 'GL-WHERE-TO-ORPH?,FALSE-VALUE
|
||||
CALL RT-CAB-DIST,GL-PLACE-CUR,ROOM
|
||||
MUL STACK,K-HANSOM-TIME >MIN
|
||||
PRINTI """Right-o."""
|
||||
CRLF
|
||||
CRLF
|
||||
MOVE TH-HANSOM-CAB,ROOM
|
||||
SET 'GL-PLACE-PRV,GL-PLACE-CUR
|
||||
SET 'GL-PLACE-CUR,ROOM
|
||||
IN? CH-PLAYER,TH-HANSOM-CAB \?CCL8
|
||||
SET 'GL-PUPPY-MSG?,FALSE-VALUE
|
||||
EQUAL? ROOM,RM-COVENT-GARDEN \?CCL11
|
||||
SET 'LOOPING?,S-CROWD
|
||||
SET 'LOOP-VOL,8
|
||||
JUMP ?CND9
|
||||
?CCL11: SET 'LOOPING?,FALSE-VALUE
|
||||
?CND9: ICALL SOUNDS,S-HORSE,S-START,4,6
|
||||
PRINTI "The cab speeds through the streets, "
|
||||
CALL1 RT-TIME-OF-DAY
|
||||
EQUAL? STACK,1,2,3 \?CND12
|
||||
PRINTI "deftly weaving in and out of the jubilee traffic and "
|
||||
?CND12: PRINTI "whizzing past famous landmarks. Only a few minutes later, you arrive at your destination."
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 RT-DESC-ALL
|
||||
JUMP ?CND6
|
||||
?CCL8: ICALL1 RT-S-CAB-LEAVES
|
||||
PRINTI "The cab drives off."
|
||||
CRLF
|
||||
CALL1 RT-IS-LIT? >GL-NOW-LIT?
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,30,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-HANSOM-LEAVE,STACK
|
||||
?CND6: ICALL2 RT-ALARM-CLR,RT-I-HANSOM-LEAVE
|
||||
ICALL RT-CLOCK-JMP,0,MIN,0
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-MOVE-GROWLER,ROOM,NUM,MIN
|
||||
RANDOM 37 >NUM
|
||||
EQUAL? NUM,1 \?CCL3
|
||||
SET 'ROOM,RM-AUDLEY-ST
|
||||
JUMP ?CND1
|
||||
?CCL3: EQUAL? NUM,2 \?CCL5
|
||||
SET 'ROOM,RM-221B-BAKER-ST
|
||||
JUMP ?CND1
|
||||
?CCL5: EQUAL? NUM,3 \?CCL7
|
||||
SET 'ROOM,RM-BIRDCAGE-WALK
|
||||
JUMP ?CND1
|
||||
?CCL7: EQUAL? NUM,5 \?CCL9
|
||||
SET 'ROOM,RM-BROAD-SANCTUARY
|
||||
JUMP ?CND1
|
||||
?CCL9: EQUAL? NUM,6 \?CCL11
|
||||
SET 'ROOM,RM-BUCKINGHAM-PALACE-RD
|
||||
JUMP ?CND1
|
||||
?CCL11: EQUAL? NUM,7 \?CCL13
|
||||
SET 'ROOM,RM-CHEAPSIDE
|
||||
JUMP ?CND1
|
||||
?CCL13: EQUAL? NUM,8 \?CCL15
|
||||
SET 'ROOM,RM-COVENT-GARDEN
|
||||
JUMP ?CND1
|
||||
?CCL15: EQUAL? NUM,9 \?CCL17
|
||||
SET 'ROOM,RM-THE-EMBANKMENT
|
||||
JUMP ?CND1
|
||||
?CCL17: EQUAL? NUM,10 \?CCL19
|
||||
SET 'ROOM,RM-FLEET-STREET
|
||||
JUMP ?CND1
|
||||
?CCL19: EQUAL? NUM,11 \?CCL21
|
||||
SET 'ROOM,RM-GREAT-RUSSELL-ST
|
||||
JUMP ?CND1
|
||||
?CCL21: EQUAL? NUM,12 \?CCL23
|
||||
SET 'ROOM,RM-GROSVENOR-PLACE
|
||||
JUMP ?CND1
|
||||
?CCL23: EQUAL? NUM,13 \?CCL25
|
||||
SET 'ROOM,RM-HYDE-PARK-CORNER
|
||||
JUMP ?CND1
|
||||
?CCL25: EQUAL? NUM,14 \?CCL27
|
||||
SET 'ROOM,RM-KENSINGTON-GARDENS
|
||||
JUMP ?CND1
|
||||
?CCL27: EQUAL? NUM,15 \?CCL29
|
||||
SET 'ROOM,RM-KING-WILLIAM-ST
|
||||
JUMP ?CND1
|
||||
?CCL29: EQUAL? NUM,16 \?CCL31
|
||||
SET 'ROOM,RM-LONDON-BRIDGE
|
||||
JUMP ?CND1
|
||||
?CCL31: EQUAL? NUM,17 \?CCL33
|
||||
SET 'ROOM,RM-LOWER-THAMES-ST
|
||||
JUMP ?CND1
|
||||
?CCL33: EQUAL? NUM,18 \?CCL35
|
||||
SET 'ROOM,RM-THE-MALL
|
||||
JUMP ?CND1
|
||||
?CCL35: EQUAL? NUM,19 \?CCL37
|
||||
SET 'ROOM,RM-MARYLEBONE-RD
|
||||
JUMP ?CND1
|
||||
?CCL37: EQUAL? NUM,20 \?CCL39
|
||||
SET 'ROOM,RM-MONUMENT
|
||||
JUMP ?CND1
|
||||
?CCL39: EQUAL? NUM,21 \?CCL41
|
||||
SET 'ROOM,RM-NEW-OXFORD-ST
|
||||
JUMP ?CND1
|
||||
?CCL41: EQUAL? NUM,22 \?CCL43
|
||||
SET 'ROOM,RM-OXFORD-ST
|
||||
JUMP ?CND1
|
||||
?CCL43: EQUAL? NUM,23 \?CCL45
|
||||
SET 'ROOM,RM-ORCHARD-ST
|
||||
JUMP ?CND1
|
||||
?CCL45: EQUAL? NUM,24 \?CCL47
|
||||
SET 'ROOM,RM-PARLIAMENT-SQUARE
|
||||
JUMP ?CND1
|
||||
?CCL47: EQUAL? NUM,25 \?CCL49
|
||||
SET 'ROOM,RM-PINCHIN-LANE
|
||||
JUMP ?CND1
|
||||
?CCL49: EQUAL? NUM,26 \?CCL51
|
||||
SET 'ROOM,RM-QUEENS-GARDENS
|
||||
JUMP ?CND1
|
||||
?CCL51: EQUAL? NUM,27 \?CCL53
|
||||
SET 'ROOM,RM-ST-GILES-CIRCUS
|
||||
JUMP ?CND1
|
||||
?CCL53: EQUAL? NUM,28 \?CCL55
|
||||
SET 'ROOM,RM-THE-STRAND
|
||||
JUMP ?CND1
|
||||
?CCL55: EQUAL? NUM,29 \?CCL57
|
||||
SET 'ROOM,RM-THREADNEEDLE-ST
|
||||
JUMP ?CND1
|
||||
?CCL57: EQUAL? NUM,30 \?CCL59
|
||||
SET 'ROOM,RM-TOTTENHAM-COURT-RD
|
||||
JUMP ?CND1
|
||||
?CCL59: EQUAL? NUM,31 \?CCL61
|
||||
SET 'ROOM,RM-TOWER-ENTRANCE
|
||||
JUMP ?CND1
|
||||
?CCL61: EQUAL? NUM,32 \?CCL63
|
||||
SET 'ROOM,RM-TRAFALGAR-SQUARE
|
||||
JUMP ?CND1
|
||||
?CCL63: EQUAL? NUM,33 \?CCL65
|
||||
SET 'ROOM,RM-UPPER-THAMES-ST
|
||||
JUMP ?CND1
|
||||
?CCL65: EQUAL? NUM,34 \?CCL67
|
||||
SET 'ROOM,RM-VICTORIA-STREET
|
||||
JUMP ?CND1
|
||||
?CCL67: EQUAL? NUM,35 \?CCL69
|
||||
SET 'ROOM,RM-VICTORIA-SQUARE
|
||||
JUMP ?CND1
|
||||
?CCL69: EQUAL? NUM,36 \?CCL71
|
||||
SET 'ROOM,RM-WHITEHALL
|
||||
JUMP ?CND1
|
||||
?CCL71: EQUAL? NUM,37 \?CCL73
|
||||
SET 'ROOM,RM-YORK-PLACE
|
||||
JUMP ?CND1
|
||||
?CCL73: PRINTI "This is odd..."
|
||||
CRLF
|
||||
CRLF
|
||||
SET 'ROOM,RM-KENSINGTON-GARDENS
|
||||
?CND1: CALL RT-CAB-DIST,GL-PLACE-CUR,ROOM
|
||||
MUL STACK,K-GROWLER-TIME >MIN
|
||||
EQUAL? ROOM,RM-COVENT-GARDEN \?CCL76
|
||||
SET 'LOOPING?,S-CROWD
|
||||
SET 'LOOP-VOL,8
|
||||
JUMP ?CND74
|
||||
?CCL76: SET 'LOOPING?,FALSE-VALUE
|
||||
?CND74: ICALL SOUNDS,S-HORSE,S-START,4,6
|
||||
MOVE TH-GROWLER-CAB,ROOM
|
||||
SET 'GL-PLACE-PRV,GL-PLACE-CUR
|
||||
SET 'GL-PLACE-CUR,ROOM
|
||||
SET 'GL-PUPPY-MSG?,FALSE-VALUE
|
||||
CALL RT-CLOCK-JMP,0,MIN,0
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-CF-TH-HANSOM-CAB,CONTEXT,WRD,ADJ
|
||||
IN? CH-PLAYER,TH-HANSOM-CAB \?CND1
|
||||
SET 'GL-WHERE-TO-PROMPT?,TRUE-VALUE
|
||||
SET 'GL-WHERE-TO-ORPH?,TRUE-VALUE
|
||||
?CND1: EQUAL? GL-PRSA,V?WALK \?CCL5
|
||||
EQUAL? GL-P-WALK-DIR,P?OUT \?CCL5
|
||||
CALL RT-PERFORM,V?EXIT,TH-HANSOM-CAB
|
||||
RSTACK
|
||||
?CCL5: EQUAL? GL-PRSA,V?WALK \?PRD11
|
||||
EQUAL? GL-WINNER,CH-PLAYER /?CTR8
|
||||
?PRD11: EQUAL? GL-PRSA,V?ENTER \?CCL9
|
||||
EQUAL? GL-PRSO,TH-HANSOM-CAB /?CCL9
|
||||
?CTR8: ICALL1 RT-CYOU-MSG
|
||||
ICALL RT-WOULD-HAVE-TO-MSG,STR?797,TH-HANSOM-CAB
|
||||
PRINTR " first."
|
||||
?CCL9: EQUAL? GL-PRSA,V?DRIVE,V?WALK-TO \?CCL17
|
||||
GET GL-P-NAMW,0 >WRD
|
||||
GET GL-P-ADJW,0 >ADJ
|
||||
EQUAL? GL-PRSO,RM-AUDLEY-ST \?CCL20
|
||||
CALL2 RT-MOVE-HANSOM,RM-AUDLEY-ST
|
||||
RSTACK
|
||||
?CCL20: EQUAL? GL-PRSO,RM-221B-BAKER-ST,RM-ENTRY-HALL \?CCL22
|
||||
CALL2 RT-MOVE-HANSOM,RM-221B-BAKER-ST
|
||||
RSTACK
|
||||
?CCL22: EQUAL? GL-PRSO,RM-BIRDCAGE-WALK \?CCL24
|
||||
CALL2 RT-MOVE-HANSOM,RM-BIRDCAGE-WALK
|
||||
RSTACK
|
||||
?CCL24: EQUAL? GL-PRSO,RM-BROAD-SANCTUARY,LG-TOMBS-ABBEY \?CCL26
|
||||
CALL2 RT-MOVE-HANSOM,RM-BROAD-SANCTUARY
|
||||
RSTACK
|
||||
?CCL26: EQUAL? GL-PRSO,RM-BUCKINGHAM-PALACE-RD \?CCL28
|
||||
CALL2 RT-MOVE-HANSOM,RM-BUCKINGHAM-PALACE-RD
|
||||
RSTACK
|
||||
?CCL28: EQUAL? GL-PRSO,RM-CHEAPSIDE \?CCL30
|
||||
CALL2 RT-MOVE-HANSOM,RM-CHEAPSIDE
|
||||
RSTACK
|
||||
?CCL30: EQUAL? GL-PRSO,RM-COVENT-GARDEN \?CCL32
|
||||
CALL2 RT-MOVE-HANSOM,RM-COVENT-GARDEN
|
||||
RSTACK
|
||||
?CCL32: EQUAL? GL-PRSO,RM-THE-EMBANKMENT,LG-WATER \?CCL34
|
||||
CALL2 RT-MOVE-HANSOM,RM-THE-EMBANKMENT
|
||||
RSTACK
|
||||
?CCL34: EQUAL? GL-PRSO,RM-FLEET-STREET \?CCL36
|
||||
CALL2 RT-MOVE-HANSOM,RM-FLEET-STREET
|
||||
RSTACK
|
||||
?CCL36: EQUAL? GL-PRSO,RM-GREAT-RUSSELL-ST,RM-BRITISH-MUSEUM \?CCL38
|
||||
CALL2 RT-MOVE-HANSOM,RM-GREAT-RUSSELL-ST
|
||||
RSTACK
|
||||
?CCL38: EQUAL? GL-PRSO,RM-GROSVENOR-PLACE \?CCL40
|
||||
CALL2 RT-MOVE-HANSOM,RM-GROSVENOR-PLACE
|
||||
RSTACK
|
||||
?CCL40: EQUAL? GL-PRSO,RM-HYDE-PARK-CORNER \?CCL42
|
||||
CALL2 RT-MOVE-HANSOM,RM-HYDE-PARK-CORNER
|
||||
RSTACK
|
||||
?CCL42: EQUAL? GL-PRSO,RM-KENSINGTON-GARDENS \?CCL44
|
||||
CALL2 RT-MOVE-HANSOM,RM-KENSINGTON-GARDENS
|
||||
RSTACK
|
||||
?CCL44: EQUAL? GL-PRSO,RM-KING-WILLIAM-ST \?CCL46
|
||||
CALL2 RT-MOVE-HANSOM,RM-KING-WILLIAM-ST
|
||||
RSTACK
|
||||
?CCL46: EQUAL? GL-PRSO,RM-LONDON-BRIDGE \?CCL48
|
||||
CALL2 RT-MOVE-HANSOM,RM-LONDON-BRIDGE
|
||||
RSTACK
|
||||
?CCL48: EQUAL? GL-PRSO,RM-LOWER-THAMES-ST,RM-BAR-OF-GOLD,RM-SWAN-LANE \?CCL50
|
||||
CALL2 RT-MOVE-HANSOM,RM-LOWER-THAMES-ST
|
||||
RSTACK
|
||||
?CCL50: EQUAL? GL-PRSO,RM-THE-MALL \?CCL52
|
||||
CALL2 RT-MOVE-HANSOM,RM-THE-MALL
|
||||
RSTACK
|
||||
?CCL52: EQUAL? GL-PRSO,RM-MARYLEBONE-RD,RM-MADAME-TUSSAUDS \?CCL54
|
||||
CALL2 RT-MOVE-HANSOM,RM-MARYLEBONE-RD
|
||||
RSTACK
|
||||
?CCL54: EQUAL? WRD,W?MONUMENT \?PRD58
|
||||
EQUAL? ADJ,FALSE-VALUE /?CTR55
|
||||
?PRD58: EQUAL? GL-PRSO,RM-MONUMENT \?CCL56
|
||||
?CTR55: CALL2 RT-MOVE-HANSOM,RM-MONUMENT
|
||||
RSTACK
|
||||
?CCL56: EQUAL? GL-PRSO,RM-NEW-OXFORD-ST \?CCL62
|
||||
CALL2 RT-MOVE-HANSOM,RM-NEW-OXFORD-ST
|
||||
RSTACK
|
||||
?CCL62: EQUAL? WRD,W?STREET,W?ST \?PRD66
|
||||
EQUAL? ADJ,W?OXFORD /?CTR63
|
||||
?PRD66: EQUAL? GL-PRSO,RM-OXFORD-ST \?CCL64
|
||||
?CTR63: CALL2 RT-MOVE-HANSOM,RM-OXFORD-ST
|
||||
RSTACK
|
||||
?CCL64: EQUAL? GL-PRSO,RM-ORCHARD-ST \?CCL70
|
||||
CALL2 RT-MOVE-HANSOM,RM-ORCHARD-ST
|
||||
RSTACK
|
||||
?CCL70: EQUAL? GL-PRSO,RM-PARLIAMENT-SQUARE,RM-PARLIAMENT,TH-BELL \?CCL72
|
||||
CALL2 RT-MOVE-HANSOM,RM-PARLIAMENT-SQUARE
|
||||
RSTACK
|
||||
?CCL72: EQUAL? GL-PRSO,RM-PINCHIN-LANE,RM-SHERMANS-HOUSE \?CCL74
|
||||
CALL2 RT-MOVE-HANSOM,RM-PINCHIN-LANE
|
||||
RSTACK
|
||||
?CCL74: EQUAL? GL-PRSO,RM-QUEENS-GARDENS,RM-BUCKINGHAM-PALACE \?CCL76
|
||||
CALL2 RT-MOVE-HANSOM,RM-QUEENS-GARDENS
|
||||
RSTACK
|
||||
?CCL76: EQUAL? GL-PRSO,RM-ST-GILES-CIRCUS \?CCL78
|
||||
CALL2 RT-MOVE-HANSOM,RM-ST-GILES-CIRCUS
|
||||
RSTACK
|
||||
?CCL78: EQUAL? GL-PRSO,RM-THE-STRAND \?CCL80
|
||||
CALL2 RT-MOVE-HANSOM,RM-THE-STRAND
|
||||
RSTACK
|
||||
?CCL80: EQUAL? GL-PRSO,RM-THREADNEEDLE-ST,RM-BANK-OF-ENGLAND \?CCL82
|
||||
CALL2 RT-MOVE-HANSOM,RM-THREADNEEDLE-ST
|
||||
RSTACK
|
||||
?CCL82: EQUAL? GL-PRSO,RM-TOTTENHAM-COURT-RD \?CCL84
|
||||
CALL2 RT-MOVE-HANSOM,RM-TOTTENHAM-COURT-RD
|
||||
RSTACK
|
||||
?CCL84: EQUAL? WRD,W?TOWER /?CTR85
|
||||
EQUAL? GL-PRSO,RM-TOWER-ENTRANCE,LG-TOWER,RM-DRAWBRIDGE \?CCL86
|
||||
?CTR85: CALL2 RT-MOVE-HANSOM,RM-TOWER-ENTRANCE
|
||||
RSTACK
|
||||
?CCL86: EQUAL? GL-PRSO,RM-TRAFALGAR-SQUARE,RM-DIOGENES-CLUB \?CCL90
|
||||
CALL2 RT-MOVE-HANSOM,RM-TRAFALGAR-SQUARE
|
||||
RSTACK
|
||||
?CCL90: EQUAL? GL-PRSO,RM-UPPER-THAMES-ST \?CCL92
|
||||
CALL2 RT-MOVE-HANSOM,RM-UPPER-THAMES-ST
|
||||
RSTACK
|
||||
?CCL92: EQUAL? GL-PRSO,RM-VICTORIA-STREET \?CCL94
|
||||
CALL2 RT-MOVE-HANSOM,RM-VICTORIA-STREET
|
||||
RSTACK
|
||||
?CCL94: EQUAL? GL-PRSO,RM-VICTORIA-SQUARE \?CCL96
|
||||
CALL2 RT-MOVE-HANSOM,RM-VICTORIA-SQUARE
|
||||
RSTACK
|
||||
?CCL96: EQUAL? GL-PRSO,RM-WHITEHALL,RM-SCOTLAND-YARD \?CCL98
|
||||
CALL2 RT-MOVE-HANSOM,RM-WHITEHALL
|
||||
RSTACK
|
||||
?CCL98: EQUAL? GL-PRSO,RM-YORK-PLACE \FALSE
|
||||
CALL2 RT-MOVE-HANSOM,RM-YORK-PLACE
|
||||
RSTACK
|
||||
?CCL17: EQUAL? GL-PRSA,V?STAND,V?STAND-ON,V?LEAP \?CCL102
|
||||
PRINT K-ENOUGH-ROOM-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL102: EQUAL? GL-PRSA,V?SIT \?CCL104
|
||||
PRINTR "You're already seated."
|
||||
?CCL104: CALL1 RT-TOUCH-VERB?
|
||||
ZERO? STACK /FALSE
|
||||
EQUAL? GL-PRSO,FALSE-VALUE,ROOMS /?CND107
|
||||
IN? GL-PRSO,GLOBAL-OBJECTS /?CND107
|
||||
CALL RT-META-IN?,GL-PRSO,TH-HANSOM-CAB
|
||||
ZERO? STACK \?CND107
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTI "cannot reach "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTR "."
|
||||
?CND107: EQUAL? GL-PRSI,FALSE-VALUE,ROOMS /FALSE
|
||||
IN? GL-PRSI,GLOBAL-OBJECTS /FALSE
|
||||
FSET? GL-PRSI,FL-PERSON \?CCL119
|
||||
IN? GL-PRSI,GL-PLACE-CUR /FALSE
|
||||
?CCL119: CALL RT-META-IN?,GL-PRSI,TH-HANSOM-CAB
|
||||
ZERO? STACK \FALSE
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTI "cannot reach "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTR "."
|
||||
|
||||
|
||||
.FUNCT RT-CF-TH-GROWLER-CAB,CONTEXT
|
||||
IN? CH-PLAYER,TH-GROWLER-CAB \?CND1
|
||||
SET 'GL-WHERE-TO-PROMPT?,TRUE-VALUE
|
||||
SET 'GL-WHERE-TO-ORPH?,TRUE-VALUE
|
||||
?CND1: EQUAL? GL-PRSA,V?WALK \?CCL5
|
||||
EQUAL? GL-P-WALK-DIR,P?OUT \?CCL5
|
||||
CALL RT-PERFORM,V?EXIT,TH-GROWLER-CAB
|
||||
RSTACK
|
||||
?CCL5: EQUAL? GL-PRSA,V?WALK \?PRD11
|
||||
EQUAL? GL-WINNER,CH-PLAYER /?CTR8
|
||||
?PRD11: EQUAL? GL-PRSA,V?ENTER \?CCL9
|
||||
EQUAL? GL-PRSO,TH-GROWLER-CAB /?CCL9
|
||||
?CTR8: ICALL1 RT-CYOU-MSG
|
||||
ICALL RT-WOULD-HAVE-TO-MSG,STR?797,TH-GROWLER-CAB
|
||||
PRINTR " first."
|
||||
?CCL9: EQUAL? GL-PRSA,V?DRIVE,V?WALK-TO \?CCL17
|
||||
PRINTI """Oh good! I've never been THERE before."""
|
||||
CRLF
|
||||
CRLF
|
||||
SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE
|
||||
SET 'GL-WHERE-TO-ORPH?,FALSE-VALUE
|
||||
ICALL2 RT-ALARM-CLR,RT-I-GROWLER-TO?
|
||||
ICALL2 RT-ALARM-CLR,RT-I-GROWLER-LEAVE
|
||||
ICALL1 RT-MOVE-GROWLER
|
||||
IN? CH-PLAYER,TH-GROWLER-CAB \?CCL20
|
||||
SET 'GL-PUPPY-MSG?,FALSE-VALUE
|
||||
PRINT K-WILD-RIDE-MSG
|
||||
CRLF
|
||||
CRLF
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,5,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-GROWLER-TO?,STACK
|
||||
ICALL1 RT-DESC-ALL
|
||||
RTRUE
|
||||
?CCL20: PRINTI "The cab drives off."
|
||||
CRLF
|
||||
CALL1 RT-IS-LIT? >GL-NOW-LIT?
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,30,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-GROWLER-LEAVE,STACK
|
||||
RTRUE
|
||||
?CCL17: EQUAL? GL-PRSA,V?STAND,V?STAND-ON,V?LEAP \?CCL22
|
||||
PRINT K-ENOUGH-ROOM-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL22: EQUAL? GL-PRSA,V?SIT \?CCL24
|
||||
PRINTR "You're already seated."
|
||||
?CCL24: CALL1 RT-TOUCH-VERB?
|
||||
ZERO? STACK /FALSE
|
||||
EQUAL? GL-PRSO,FALSE-VALUE,ROOMS /?CND27
|
||||
IN? GL-PRSO,GLOBAL-OBJECTS /?CND27
|
||||
CALL RT-META-IN?,GL-PRSO,TH-GROWLER-CAB
|
||||
ZERO? STACK \?CND27
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTI "cannot reach "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTR "."
|
||||
?CND27: EQUAL? GL-PRSI,FALSE-VALUE,ROOMS /FALSE
|
||||
IN? GL-PRSI,GLOBAL-OBJECTS /FALSE
|
||||
CALL RT-META-IN?,GL-PRSI,TH-GROWLER-CAB
|
||||
ZERO? STACK \FALSE
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTI "cannot reach "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTR "."
|
||||
|
||||
|
||||
.FUNCT RT-BLOW-WHISTLE,WHO,WHO2,L,?TMP1
|
||||
LOC TH-HANSOM-CAB >?TMP1
|
||||
LOC TH-GROWLER-CAB
|
||||
EQUAL? GL-PLACE-CUR,?TMP1,STACK \?CCL3
|
||||
PRINT K-CAB-HERE-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL3: PRINTI "Tweeeeeeeeee!"
|
||||
CRLF
|
||||
FSET? GL-PLACE-CUR,FL-INDOORS \?CCL6
|
||||
EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY \?CND7
|
||||
FSET? CH-HOLMES,FL-ASLEEP \?CND7
|
||||
PRINT K-HOLMES-DISTRACTION-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CND7: CALL1 RT-ANYONE-HERE? >WHO
|
||||
ZERO? WHO /TRUE
|
||||
LOC WHO >L
|
||||
REMOVE WHO
|
||||
CALL1 RT-ANYONE-HERE? >WHO2
|
||||
ZERO? WHO2 /?CCL15
|
||||
PRINTI "Everyone holds their hands to their "
|
||||
JUMP ?CND13
|
||||
?CCL15: ICALL2 RT-CTHEO-PRINT,WHO
|
||||
PRINTI " hold"
|
||||
ICALL2 RT-S-NOS-MSG,WHO
|
||||
PRINTC 32
|
||||
ICALL2 RT-YOUR-MSG,WHO
|
||||
PRINTI "hands to "
|
||||
ICALL2 RT-YOUR-MSG,WHO
|
||||
?CND13: MOVE WHO,L
|
||||
PRINTI "ears and glare"
|
||||
ICALL2 RT-S-NOS-MSG,WHO
|
||||
PRINTR " at you."
|
||||
?CCL6: EQUAL? GL-PLACE-CUR,RM-TOWER-GREEN,RM-OUTER-WARD,RM-BYWARD-TOWER /TRUE
|
||||
EQUAL? GL-PLACE-CUR,RM-INSIDE-TRAITORS-GATE,RM-OUTSIDE-TRAITORS-GATE,RM-DRAWBRIDGE /TRUE
|
||||
EQUAL? GL-PLACE-CUR,RM-THAMES-ONE,RM-THAMES-TWO,RM-THAMES-THREE /TRUE
|
||||
EQUAL? GL-PLACE-CUR,RM-THAMES-FOUR,RM-THAMES-FIVE,RM-SWAN-LANE /TRUE
|
||||
INC 'TH-CAB-WHISTLE-AUX1
|
||||
SET 'TH-CAB-WHISTLE-AUX2,GL-PLACE-CUR
|
||||
CALL2 RT-ALARM-SET?,RT-I-CAB-ARRIVE
|
||||
ZERO? STACK \TRUE
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,1,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-CAB-ARRIVE,STACK
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-HANSOM-CAB,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
PRINTR "It is a small cab with two wheels and room for only two persons, drawn by a single horse."
|
||||
?CCL3: EQUAL? GL-PRSA,V?ENTER \?CCL5
|
||||
EQUAL? GL-PRSO,ROOMS,TH-HANSOM-CAB \?CCL5
|
||||
FSET? TH-SUIT-OF-ARMOUR,FL-WORN \?CCL10
|
||||
PRINT K-HEAVY-ARMOUR-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL10: IN? GL-WINNER,TH-HANSOM-CAB /FALSE
|
||||
MOVE GL-WINNER,TH-HANSOM-CAB
|
||||
ZERO? GL-PUPPY /?CCL15
|
||||
EQUAL? GL-WINNER,CH-PLAYER \?CCL15
|
||||
MOVE GL-PUPPY,TH-HANSOM-CAB
|
||||
PRINTI "You and "
|
||||
ICALL2 RT-THEO-PRINT,GL-PUPPY
|
||||
PRINTI " get "
|
||||
JUMP ?CND13
|
||||
?CCL15: ICALL RT-CYOU-MSG,STR?753,STR?754
|
||||
?CND13: FSET TH-HANSOM-CAB,FL-NODESC
|
||||
ICALL2 RT-ALARM-CLR,RT-I-HANSOM-LEAVE
|
||||
SET 'TH-HANSOM-CAB-AUX2,0
|
||||
SET 'GL-WHERE-TO-PROMPT?,TRUE-VALUE
|
||||
SET 'GL-WHERE-TO-ORPH?,TRUE-VALUE
|
||||
PRINTR "into the cab."
|
||||
?CCL5: EQUAL? GL-PRSA,V?EXIT \?CCL19
|
||||
EQUAL? GL-PRSO,ROOMS,TH-HANSOM-CAB \?CCL19
|
||||
IN? CH-PLAYER,TH-HANSOM-CAB \FALSE
|
||||
MOVE GL-WINNER,GL-PLACE-CUR
|
||||
ZERO? GL-PUPPY /?CCL27
|
||||
EQUAL? GL-WINNER,CH-PLAYER \?CCL27
|
||||
MOVE GL-PUPPY,GL-PLACE-CUR
|
||||
PRINTI "You and "
|
||||
ICALL2 RT-THEO-PRINT,GL-PUPPY
|
||||
PRINTI " get "
|
||||
JUMP ?CND25
|
||||
?CCL27: ICALL RT-CYOU-MSG,STR?753,STR?754
|
||||
?CND25: PRINTI "out of the cab."
|
||||
FCLEAR TH-HANSOM-CAB,FL-NODESC
|
||||
ZERO? TH-HANSOM-CAB-AUX2 \?CND30
|
||||
IN? CH-PLAYER,TH-HANSOM-CAB /?CND30
|
||||
ZERO? GL-PUPPY /?PRD35
|
||||
IN? GL-PUPPY,TH-HANSOM-CAB /?CND30
|
||||
?PRD35: EQUAL? GL-PLACE-CUR,RM-VICTORIA-SQUARE /?CND30
|
||||
PRINTI " After"
|
||||
ICALL RT-YOU-MSG,STR?753,STR?754
|
||||
PRINTI "out, it drives off."
|
||||
ICALL1 RT-S-CAB-LEAVES
|
||||
MOVE TH-HANSOM-CAB,RM-VICTORIA-SQUARE
|
||||
ICALL2 RT-REMOVE-ALL,TH-HANSOM-CAB
|
||||
MOVE CH-HANSOM-CABBIE,TH-HANSOM-CAB
|
||||
ICALL2 RT-ALARM-CLR,RT-I-HANSOM-LEAVE
|
||||
CALL1 RT-IS-LIT? >GL-NOW-LIT?
|
||||
?CND30: SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE
|
||||
SET 'GL-WHERE-TO-ORPH?,FALSE-VALUE
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL19: EQUAL? GL-PRSA,V?LOOK-ON \?CCL39
|
||||
PRINTR "There is a cab driver sitting on the hansom."
|
||||
?CCL39: EQUAL? GL-PRSA,V?TAKE,V?PUSH-TO \?CCL41
|
||||
ZERO? GL-NOW-PRSI? \?CCL41
|
||||
PRINT K-TAKE-CAB-MSG
|
||||
CRLF
|
||||
RETURN 2
|
||||
?CCL41: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
CALL1 RT-WASTE-OF-BULLETS-MSG
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-GROWLER-CAB,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
PRINTR "It is a large cab with four wheels and room for four persons, drawn by a single horse."
|
||||
?CCL3: EQUAL? GL-PRSA,V?ENTER \?CCL5
|
||||
EQUAL? GL-PRSO,ROOMS,TH-GROWLER-CAB \?CCL5
|
||||
FSET? TH-SUIT-OF-ARMOUR,FL-WORN \?CCL10
|
||||
PRINT K-HEAVY-ARMOUR-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL10: IN? GL-WINNER,TH-GROWLER-CAB /FALSE
|
||||
MOVE GL-WINNER,TH-GROWLER-CAB
|
||||
ZERO? GL-PUPPY /?CCL15
|
||||
EQUAL? GL-WINNER,CH-PLAYER \?CCL15
|
||||
MOVE GL-PUPPY,TH-GROWLER-CAB
|
||||
PRINTI "You and "
|
||||
ICALL2 RT-THEO-PRINT,GL-PUPPY
|
||||
PRINTI " get "
|
||||
JUMP ?CND13
|
||||
?CCL15: ICALL RT-CYOU-MSG,STR?753,STR?754
|
||||
?CND13: FSET TH-GROWLER-CAB,FL-NODESC
|
||||
ICALL2 RT-ALARM-CLR,RT-I-GROWLER-LEAVE
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,5,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-GROWLER-TO?,STACK
|
||||
SET 'GL-WHERE-TO-PROMPT?,TRUE-VALUE
|
||||
SET 'GL-WHERE-TO-ORPH?,TRUE-VALUE
|
||||
PRINTR "into the cab."
|
||||
?CCL5: EQUAL? GL-PRSA,V?EXIT \?CCL19
|
||||
EQUAL? GL-PRSO,ROOMS,TH-GROWLER-CAB \?CCL19
|
||||
IN? CH-PLAYER,TH-GROWLER-CAB \FALSE
|
||||
MOVE GL-WINNER,GL-PLACE-CUR
|
||||
ZERO? GL-PUPPY /?CCL27
|
||||
EQUAL? GL-WINNER,CH-PLAYER \?CCL27
|
||||
MOVE GL-PUPPY,GL-PLACE-CUR
|
||||
PRINTI "You and "
|
||||
ICALL2 RT-THEO-PRINT,GL-PUPPY
|
||||
PRINTI " get "
|
||||
JUMP ?CND25
|
||||
?CCL27: ICALL RT-CYOU-MSG,STR?753,STR?754
|
||||
?CND25: PRINTI "out of the cab."
|
||||
FCLEAR TH-GROWLER-CAB,FL-NODESC
|
||||
IN? CH-PLAYER,TH-GROWLER-CAB /?CND30
|
||||
ZERO? GL-PUPPY /?PRD34
|
||||
IN? GL-PUPPY,TH-GROWLER-CAB /?CND30
|
||||
?PRD34: EQUAL? GL-PLACE-CUR,RM-OXFORD-ST /?CND30
|
||||
PRINTI " After"
|
||||
ICALL RT-YOU-MSG,STR?753,STR?754
|
||||
PRINTI "out, it drives off."
|
||||
ICALL1 RT-S-CAB-LEAVES
|
||||
MOVE TH-GROWLER-CAB,RM-OXFORD-ST
|
||||
ICALL2 RT-REMOVE-ALL,TH-GROWLER-CAB
|
||||
MOVE CH-GROWLER-CABBIE,TH-GROWLER-CAB
|
||||
ICALL2 RT-ALARM-CLR,RT-I-GROWLER-LEAVE
|
||||
ICALL2 RT-ALARM-CLR,RT-I-GROWLER-TO?
|
||||
CALL1 RT-IS-LIT? >GL-NOW-LIT?
|
||||
?CND30: SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE
|
||||
SET 'GL-WHERE-TO-ORPH?,FALSE-VALUE
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL19: EQUAL? GL-PRSA,V?LOOK-ON \?CCL38
|
||||
PRINTR "There is a cab driver sitting on the growler."
|
||||
?CCL38: EQUAL? GL-PRSA,V?TAKE,V?PUSH-TO \?CCL40
|
||||
ZERO? GL-NOW-PRSI? \?CCL40
|
||||
PRINT K-TAKE-CAB-MSG
|
||||
CRLF
|
||||
RETURN 2
|
||||
?CCL40: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
CALL1 RT-WASTE-OF-BULLETS-MSG
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-CAB-WHISTLE
|
||||
EQUAL? GL-PRSA,V?BLOW-INTO \?CCL3
|
||||
ZERO? GL-NOW-PRSI? \?CCL3
|
||||
CALL1 RT-BLOW-WHISTLE
|
||||
RSTACK
|
||||
?CCL3: EQUAL? GL-PRSA,V?CALL \?CCL7
|
||||
ZERO? GL-NOW-PRSI? /?CCL7
|
||||
EQUAL? GL-PRSO,TH-HANSOM-CAB \?CCL12
|
||||
ICALL1 RT-BLOW-WHISTLE
|
||||
CALL2 RT-ALARM-SET?,RT-I-CAB-ARRIVE
|
||||
ZERO? STACK /TRUE
|
||||
ICALL RT-DO-CLOCK-SET,GL-TIME-UPDT-INC,0,2,0
|
||||
ICALL1 RT-BLOW-WHISTLE
|
||||
RTRUE
|
||||
?CCL12: EQUAL? GL-PRSO,TH-GROWLER-CAB \?CCL16
|
||||
ICALL1 RT-BLOW-WHISTLE
|
||||
CALL2 RT-ALARM-SET?,RT-I-CAB-ARRIVE
|
||||
ZERO? STACK /TRUE
|
||||
ICALL RT-DO-CLOCK-SET,GL-TIME-UPDT-INC,0,2,0
|
||||
RTRUE
|
||||
?CCL16: GET GL-P-NAMW,0
|
||||
EQUAL? STACK,W?CAB \?CCL20
|
||||
CALL1 RT-BLOW-WHISTLE
|
||||
RSTACK
|
||||
?CCL20: ICALL1 RT-CYOU-MSG
|
||||
PRINTI "can't "
|
||||
PRINTB GL-P-PRSA-WORD
|
||||
PRINTC 32
|
||||
ICALL1 RT-A-PRINT
|
||||
PRINTI " with "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTR "."
|
||||
?CCL7: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
CALL1 RT-WASTE-OF-BULLETS-MSG
|
||||
RSTACK
|
||||
|
||||
.ENDI
|
786
cab.zil
Normal file
786
cab.zil
Normal file
|
@ -0,0 +1,786 @@
|
|||
;*****************************************************************************
|
||||
; "game : SHERLOCK!"
|
||||
; "file : CAB.ZIL"
|
||||
; "auth : $Author: RAB $"
|
||||
; "date : $Date: 28 Oct 1987 4:35:40 $"
|
||||
; "rev : $Revision: 1.63 $"
|
||||
; "vers : 1.00"
|
||||
;*****************************************************************************
|
||||
|
||||
<OBJECT CH-HANSOM-CABBIE
|
||||
(LOC TH-HANSOM-CAB)
|
||||
(DESC "hansom cabbie")
|
||||
(FLAGS FL-NODESC FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL)
|
||||
(SYNONYM CABBIE DRIVER)
|
||||
(ADJECTIVE HANSOM)
|
||||
(SIZE 99)
|
||||
(ACTION RT-AC-CH-HANSOM-CABBIE)>
|
||||
|
||||
<OBJECT CH-GROWLER-CABBIE
|
||||
(LOC TH-GROWLER-CAB)
|
||||
(DESC "growler cabbie")
|
||||
(FLAGS FL-NODESC FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL)
|
||||
(SYNONYM CABBIE DRIVER ;FLOYD)
|
||||
(ADJECTIVE GROWLER)
|
||||
(SIZE 99)
|
||||
(ACTION RT-AC-CH-GROWLER-CABBIE)>
|
||||
|
||||
<ROUTINE RT-AC-CH-HANSOM-CABBIE ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-CH-AC "CH-HANSOM-CABBIE" .CONTEXT>>
|
||||
<COND (<MC-THIS-WINNER?>
|
||||
<COND (<MC-VERB? WAIT>
|
||||
<SETG GL-WHERE-TO-PROMPT? <>>
|
||||
<SETG GL-WHERE-TO-ORPH? <>>
|
||||
<TELL "\"Right-o.\"" CR>
|
||||
<SETG TH-HANSOM-CAB-AUX2 1>
|
||||
<RT-ALARM-CLR ,RT-I-HANSOM-LEAVE>
|
||||
<RT-ALARM-SET-REL ,RT-I-HANSOM-LEAVE <RT-PARM-SET 0 30 0>>)
|
||||
(<MC-VERB? DRIVE WALK-TO>
|
||||
<RT-CF-TH-HANSOM-CAB>)
|
||||
(<MC-VERB? HELLO GOODBYE THANK>
|
||||
<SETG GL-WINNER ,CH-PLAYER>
|
||||
<RT-PERFORM ,GL-PRSA ,CH-HANSOM-CABBIE>)
|
||||
(T
|
||||
<TELL "\"Sorry, guv. All I does is drives a cab.\"" CR>)>)
|
||||
(<OR <AND <MC-VERB? PAY>
|
||||
<MC-THIS-PRSO?>>
|
||||
<AND <MC-VERB? GIVE>
|
||||
<MC-THIS-PRSI?>
|
||||
<MC-IS? ,GL-PRSO ,FL-MONEY>>>
|
||||
<TELL
|
||||
"\"No thanks, guv'nor. It'll go on Mr 'Olmes's monthly account.\"" CR>)
|
||||
(<AND <MC-VERB? TELL>
|
||||
<MC-THIS-PRSO?>
|
||||
,GL-P-CONT>
|
||||
<RFALSE>)
|
||||
(<MC-VERB? HELLO>
|
||||
<TELL "\"'Ello.\"" CR>)
|
||||
(<MC-VERB? GOODBYE>
|
||||
<TELL "\"Ta ta.\"" CR>)
|
||||
(<MC-VERB? THANK>
|
||||
<TELL "\"Anytime, mate.\"" CR>)
|
||||
(<RT-TALK-VERB?>
|
||||
<TELL "\"Sorry, sir. No time to chat.\"" CR>)>>
|
||||
|
||||
<ROUTINE RT-AC-CH-GROWLER-CABBIE ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-CH-AC "CH-GROWLER-CABBIE" .CONTEXT>>
|
||||
<COND (<MC-THIS-WINNER?>
|
||||
<COND (<MC-VERB? WAIT>
|
||||
<SETG GL-WHERE-TO-PROMPT? <>>
|
||||
<SETG GL-WHERE-TO-ORPH? <>>
|
||||
<TELL CTHE ,CH-GROWLER-CABBIE " says brightly, \"Okay.\"" CR>)
|
||||
(<MC-VERB? DRIVE WALK-TO>
|
||||
<RT-CF-TH-GROWLER-CAB>)
|
||||
(T
|
||||
<TELL CTHE ,CH-GROWLER-CABBIE " says brightly, \"Hello,\"
|
||||
and looks at you expectantly." CR>)>)
|
||||
(<OR <AND <MC-VERB? PAY>
|
||||
<MC-THIS-PRSO?>>
|
||||
<AND <MC-VERB? GIVE>
|
||||
<MC-THIS-PRSI?>
|
||||
<MC-IS? ,GL-PRSO ,FL-MONEY>>>
|
||||
<TELL
|
||||
CTHE ,CH-GROWLER-CABBIE " says brightly, \"No thanks. I'm not in it for the
|
||||
money. I just like to meet new people.\"" CR>)
|
||||
(<AND <MC-VERB? TELL>
|
||||
<MC-THIS-PRSO?>
|
||||
,GL-P-CONT>
|
||||
<RFALSE>)
|
||||
(<RT-TALK-VERB?>
|
||||
<TELL CTHE ,CH-GROWLER-CABBIE " says brightly, \"Hello,\" and looks
|
||||
at you expectantly." CR>)>>
|
||||
|
||||
; "This was formerly contained in the AUX1 properties of the rooms in the
|
||||
table. Since it's just the numbers from 1 to 37, we can play horrible
|
||||
games by subtracting the initial pointer and the INTBL? pointer instead.
|
||||
It's a byte table because we order objects ROOMS-FIRST"
|
||||
|
||||
<CONSTANT CAB-ROOM-IDS-LEN 37>
|
||||
|
||||
<CONSTANT CAB-ROOM-IDS
|
||||
<TABLE (PURE BYTE)
|
||||
RM-221B-BAKER-ST ;1
|
||||
RM-YORK-PLACE ;2
|
||||
RM-MARYLEBONE-RD ;3
|
||||
RM-TOTTENHAM-COURT-RD ;4
|
||||
RM-ST-GILES-CIRCUS ;5
|
||||
RM-OXFORD-ST ;6
|
||||
RM-ORCHARD-ST ;7
|
||||
RM-AUDLEY-ST ;8
|
||||
RM-HYDE-PARK-CORNER ;9
|
||||
RM-KENSINGTON-GARDENS ;10
|
||||
RM-TRAFALGAR-SQUARE ;11
|
||||
RM-GREAT-RUSSELL-ST ;12
|
||||
RM-GROSVENOR-PLACE ;13
|
||||
RM-VICTORIA-SQUARE ;14
|
||||
RM-VICTORIA-STREET ;15
|
||||
RM-BROAD-SANCTUARY ;16
|
||||
RM-PARLIAMENT-SQUARE ;17
|
||||
RM-BUCKINGHAM-PALACE-RD ;18
|
||||
RM-QUEENS-GARDENS ;19
|
||||
RM-BIRDCAGE-WALK ;20
|
||||
RM-THE-MALL ;21
|
||||
RM-WHITEHALL ;22
|
||||
RM-NEW-OXFORD-ST ;23
|
||||
RM-COVENT-GARDEN ;24
|
||||
RM-THE-STRAND ;25
|
||||
RM-FLEET-STREET ;26
|
||||
RM-THE-EMBANKMENT ;27
|
||||
RM-UPPER-THAMES-ST ;28
|
||||
0;RM-BLIND-ALLEY ;29
|
||||
RM-PINCHIN-LANE ;30
|
||||
RM-CHEAPSIDE ;31
|
||||
RM-THREADNEEDLE-ST ;32
|
||||
RM-KING-WILLIAM-ST ;33
|
||||
RM-MONUMENT ;34
|
||||
RM-LOWER-THAMES-ST ;35
|
||||
RM-LONDON-BRIDGE ;36
|
||||
RM-TOWER-ENTRANCE ;37>>
|
||||
|
||||
<ROUTINE RT-GET-ROOM-ID (HERE "AUX" TBL)
|
||||
<COND (<SET TBL <INTBL? .HERE ,CAB-ROOM-IDS ,CAB-ROOM-IDS-LEN 1>>
|
||||
<COND (<L? ,CAB-ROOM-IDS 0>
|
||||
<+ <- .TBL ,CAB-ROOM-IDS> 1>)
|
||||
(T
|
||||
<+ <- ,CAB-ROOM-IDS .TBL> 1>)>)
|
||||
(T 0)>>
|
||||
|
||||
<ROUTINE RT-CAB-DIST (HERE THERE "AUX" NUM1 NUM2 (PTR 0) TMP)
|
||||
<SET NUM1 <RT-GET-ROOM-ID .HERE>>
|
||||
<SET NUM2 <RT-GET-ROOM-ID .THERE>>
|
||||
<COND ;(<OR <ZERO? .NUM1>
|
||||
<ZERO? .NUM2>>
|
||||
<TELL "*** ERROR: Missing room number ***" CR D .HERE " to " D .THERE "." CR>
|
||||
<RETURN 0>)
|
||||
(<OR <EQUAL? .HERE .THERE>
|
||||
<EQUAL? .NUM1 .NUM2>>
|
||||
<RETURN 0>)>
|
||||
<COND (<L? .NUM1 .NUM2>
|
||||
<SET TMP .NUM1>
|
||||
<SET NUM1 .NUM2>
|
||||
<SET NUM2 .TMP>)>
|
||||
<SET NUM1 <- .NUM1 2>>
|
||||
<REPEAT ()
|
||||
<COND (<L? .NUM1 1>
|
||||
<RETURN>)
|
||||
(T
|
||||
<SET PTR <+ .PTR .NUM1>>
|
||||
<DEC NUM1>)>>
|
||||
<SET PTR <+ .PTR <- .NUM2 1>>>
|
||||
<RETURN <GETB ,GL-CAB-DIST-TBL .PTR>>>
|
||||
|
||||
<ROUTINE RT-I-CAB-ARRIVE ("AUX" (CAB <>) (PLACE <>) NUM SCORE AUX1)
|
||||
<SET NUM ,TH-CAB-WHISTLE-AUX1>
|
||||
<SET PLACE ,TH-CAB-WHISTLE-AUX2>
|
||||
<SETG TH-CAB-WHISTLE-AUX1 0>
|
||||
<SETG TH-CAB-WHISTLE-AUX2 0>
|
||||
<COND (<AND <MC-HERE? .PLACE>
|
||||
<NOT <MC-VERB? WALK>>>
|
||||
<COND (<EQUAL? .NUM 1>
|
||||
<SET CAB ,TH-GROWLER-CAB>
|
||||
<SET SCORE 0>
|
||||
<RT-ALARM-SET-REL ,RT-I-GROWLER-LEAVE <RT-PARM-SET 0 5 0>>
|
||||
<RT-REMOVE-ALL ,TH-GROWLER-CAB>
|
||||
<MOVE ,CH-GROWLER-CABBIE ,TH-GROWLER-CAB>
|
||||
<MC-MAKE ,CH-GROWLER-CABBIE ,FL-SEEN>
|
||||
;<IFSOUND <COND (<F? ,SOUND-QUEUED?>
|
||||
<SETG CAB-RAMP 2>
|
||||
<RT-S-CAB-ARRIVES>)>>)
|
||||
(<EQUAL? .NUM 2>
|
||||
<SET CAB ,TH-HANSOM-CAB>
|
||||
<SET SCORE 5>
|
||||
<RT-ALARM-SET-REL ,RT-I-HANSOM-LEAVE <RT-PARM-SET 0 5 0>>
|
||||
<RT-REMOVE-ALL ,TH-HANSOM-CAB>
|
||||
<MOVE ,CH-HANSOM-CABBIE ,TH-HANSOM-CAB>
|
||||
<MC-MAKE ,CH-HANSOM-CABBIE ,FL-SEEN>)
|
||||
(T
|
||||
<RFALSE>)>
|
||||
<IFSOUND <COND (<F? ,SOUND-QUEUED?>
|
||||
<SETG CAB-RAMP 2>
|
||||
<RT-S-CAB-ARRIVES>)>>
|
||||
<TELL CR "A " D .CAB " pulls up beside you." CR>
|
||||
<MOVE .CAB ,GL-PLACE-CUR>
|
||||
<COND (<==? .CAB ,TH-HANSOM-CAB>
|
||||
<SET AUX1 ,TH-HANSOM-CAB-AUX1>)
|
||||
(T
|
||||
<SET AUX1 ,TH-GROWLER-CAB-AUX1>)>
|
||||
<COND (<ZERO? .AUX1>
|
||||
<COND (<==? .CAB ,TH-HANSOM-CAB>
|
||||
<SETG TH-HANSOM-CAB-AUX1 1>)
|
||||
(T
|
||||
<SETG TH-GROWLER-CAB-AUX1 1>)>
|
||||
<COND (<NOT <ZERO? .SCORE>>
|
||||
<RT-UPDATE-SCORE .SCORE>)>)>
|
||||
<RTRUE>)>>
|
||||
|
||||
<ROUTINE RT-I-HANSOM-LEAVE ()
|
||||
<COND (<NOT <MC-HERE? ,RM-VICTORIA-SQUARE>>
|
||||
<COND (<RT-VISIBLE? ,TH-HANSOM-CAB>
|
||||
<IFSOUND <RT-S-CAB-LEAVES>>
|
||||
<TELL CTHE ,TH-HANSOM-CAB " drives off." CR>)>
|
||||
<MOVE ,TH-HANSOM-CAB ,RM-VICTORIA-SQUARE>
|
||||
<RT-REMOVE-ALL ,TH-HANSOM-CAB>
|
||||
<MOVE ,CH-HANSOM-CABBIE ,TH-HANSOM-CAB>
|
||||
<SETG GL-NOW-LIT? <RT-IS-LIT?>>)>
|
||||
<SETG TH-HANSOM-CAB-AUX2 0>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE RT-I-HANSOM-TO? ()
|
||||
<COND (<IN? ,CH-PLAYER ,TH-HANSOM-CAB>
|
||||
<TELL "\"Where to mister?\"" CR>
|
||||
<RT-ALARM-SET-REL ,RT-I-HANSOM-TO? <RT-PARM-SET 0 1 0>>)>>
|
||||
|
||||
<ROUTINE RT-I-GROWLER-LEAVE ()
|
||||
<COND (<NOT <MC-HERE? ,RM-OXFORD-ST>>
|
||||
<COND (<RT-VISIBLE? ,TH-GROWLER-CAB>
|
||||
<IFSOUND <RT-S-CAB-LEAVES>>
|
||||
<TELL CTHE ,TH-GROWLER-CAB " drives off." CR>)>
|
||||
<MOVE ,TH-GROWLER-CAB ,RM-OXFORD-ST>
|
||||
<RT-REMOVE-ALL ,TH-GROWLER-CAB>
|
||||
<MOVE ,CH-GROWLER-CABBIE ,TH-GROWLER-CAB>
|
||||
<SETG GL-NOW-LIT? <RT-IS-LIT?>>)>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE RT-I-GROWLER-TO? ()
|
||||
<COND (<IN? ,CH-PLAYER ,TH-GROWLER-CAB>
|
||||
<TELL CR
|
||||
"Suddenly the cabbie - who seems to have a low threshold of boredom - pipes
|
||||
up and says, \"I know where we can go!\"" CR CR ,K-WILD-RIDE-MSG CR>
|
||||
<RT-MOVE-GROWLER>
|
||||
<RT-ALARM-SET-REL ,RT-I-GROWLER-TO? <RT-PARM-SET 0 5 0>>
|
||||
<CRLF>
|
||||
<RT-DESC-ALL>)>>
|
||||
|
||||
<ROUTINE RT-MOVE-HANSOM ("OPTIONAL" (ROOM <>) MIN)
|
||||
<COND (<MC-HERE? .ROOM>
|
||||
<TELL "\"We're already here, guv.\"" CR>)
|
||||
(<MC-T? .ROOM>
|
||||
<SETG GL-WHERE-TO-PROMPT? <>>
|
||||
<SETG GL-WHERE-TO-ORPH? <>>
|
||||
<SET MIN <* <RT-CAB-DIST ,GL-PLACE-CUR .ROOM> ,K-HANSOM-TIME>>
|
||||
<TELL "\"Right-o.\"" CR CR>
|
||||
<MOVE ,TH-HANSOM-CAB .ROOM>
|
||||
<SETG GL-PLACE-PRV ,GL-PLACE-CUR>
|
||||
<SETG GL-PLACE-CUR .ROOM>
|
||||
<COND (<IN? ,CH-PLAYER ,TH-HANSOM-CAB>
|
||||
<SETG GL-PUPPY-MSG? <>>
|
||||
<IFSOUND <COND (<==? .ROOM ,RM-COVENT-GARDEN>
|
||||
<SETG LOOPING? ,S-CROWD>
|
||||
<SETG LOOP-VOL 8>)
|
||||
(T
|
||||
<SETG LOOPING? <>>)>
|
||||
<SOUNDS ,S-HORSE ,S-START 4 6>>
|
||||
<TELL "The cab speeds through the streets, ">
|
||||
<COND (<EQUAL? <RT-TIME-OF-DAY> 1 2 3>
|
||||
<TELL "deftly weaving in and out of the
|
||||
jubilee traffic and ">)>
|
||||
<TELL "whizzing past famous landmarks. Only a few minutes
|
||||
later, you arrive at your destination." CR CR>
|
||||
<RT-DESC-ALL>)
|
||||
(T
|
||||
<IFSOUND <RT-S-CAB-LEAVES>>
|
||||
<TELL "The cab drives off." CR>
|
||||
<SETG GL-NOW-LIT? <RT-IS-LIT?>>
|
||||
<RT-ALARM-SET-REL ,RT-I-HANSOM-LEAVE <RT-PARM-SET 0 30 0>>)>
|
||||
<RT-ALARM-CLR ,RT-I-HANSOM-LEAVE>
|
||||
<RT-CLOCK-JMP 0 .MIN 0>
|
||||
<RTRUE>)>>
|
||||
|
||||
<ROUTINE RT-MOVE-GROWLER ("AUX" ROOM NUM MIN)
|
||||
<SET NUM <RANDOM 37>>
|
||||
<COND (<EQUAL? .NUM 1>
|
||||
<SET ROOM ,RM-AUDLEY-ST>)
|
||||
(<EQUAL? .NUM 2>
|
||||
<SET ROOM ,RM-221B-BAKER-ST>)
|
||||
(<EQUAL? .NUM 3>
|
||||
<SET ROOM ,RM-BIRDCAGE-WALK>)
|
||||
;(<EQUAL? .NUM 4>
|
||||
<SET ROOM ,RM-BLIND-ALLEY>)
|
||||
(<EQUAL? .NUM 5>
|
||||
<SET ROOM ,RM-BROAD-SANCTUARY>)
|
||||
(<EQUAL? .NUM 6>
|
||||
<SET ROOM ,RM-BUCKINGHAM-PALACE-RD>)
|
||||
(<EQUAL? .NUM 7>
|
||||
<SET ROOM ,RM-CHEAPSIDE>)
|
||||
(<EQUAL? .NUM 8>
|
||||
<SET ROOM ,RM-COVENT-GARDEN>)
|
||||
(<EQUAL? .NUM 9>
|
||||
<SET ROOM ,RM-THE-EMBANKMENT>)
|
||||
(<EQUAL? .NUM 10>
|
||||
<SET ROOM ,RM-FLEET-STREET>)
|
||||
(<EQUAL? .NUM 11>
|
||||
<SET ROOM ,RM-GREAT-RUSSELL-ST>)
|
||||
(<EQUAL? .NUM 12>
|
||||
<SET ROOM ,RM-GROSVENOR-PLACE>)
|
||||
(<EQUAL? .NUM 13>
|
||||
<SET ROOM ,RM-HYDE-PARK-CORNER>)
|
||||
(<EQUAL? .NUM 14>
|
||||
<SET ROOM ,RM-KENSINGTON-GARDENS>)
|
||||
(<EQUAL? .NUM 15>
|
||||
<SET ROOM ,RM-KING-WILLIAM-ST>)
|
||||
(<EQUAL? .NUM 16>
|
||||
<SET ROOM ,RM-LONDON-BRIDGE>)
|
||||
(<EQUAL? .NUM 17>
|
||||
<SET ROOM ,RM-LOWER-THAMES-ST>)
|
||||
(<EQUAL? .NUM 18>
|
||||
<SET ROOM ,RM-THE-MALL>)
|
||||
(<EQUAL? .NUM 19>
|
||||
<SET ROOM ,RM-MARYLEBONE-RD>)
|
||||
(<EQUAL? .NUM 20>
|
||||
<SET ROOM ,RM-MONUMENT>)
|
||||
(<EQUAL? .NUM 21>
|
||||
<SET ROOM ,RM-NEW-OXFORD-ST>)
|
||||
(<EQUAL? .NUM 22>
|
||||
<SET ROOM ,RM-OXFORD-ST>)
|
||||
(<EQUAL? .NUM 23>
|
||||
<SET ROOM ,RM-ORCHARD-ST>)
|
||||
(<EQUAL? .NUM 24>
|
||||
<SET ROOM ,RM-PARLIAMENT-SQUARE>)
|
||||
(<EQUAL? .NUM 25>
|
||||
<SET ROOM ,RM-PINCHIN-LANE>)
|
||||
(<EQUAL? .NUM 26>
|
||||
<SET ROOM ,RM-QUEENS-GARDENS>)
|
||||
(<EQUAL? .NUM 27>
|
||||
<SET ROOM ,RM-ST-GILES-CIRCUS>)
|
||||
(<EQUAL? .NUM 28>
|
||||
<SET ROOM ,RM-THE-STRAND>)
|
||||
(<EQUAL? .NUM 29>
|
||||
<SET ROOM ,RM-THREADNEEDLE-ST>)
|
||||
(<EQUAL? .NUM 30>
|
||||
<SET ROOM ,RM-TOTTENHAM-COURT-RD>)
|
||||
(<EQUAL? .NUM 31>
|
||||
<SET ROOM ,RM-TOWER-ENTRANCE>)
|
||||
(<EQUAL? .NUM 32>
|
||||
<SET ROOM ,RM-TRAFALGAR-SQUARE>)
|
||||
(<EQUAL? .NUM 33>
|
||||
<SET ROOM ,RM-UPPER-THAMES-ST>)
|
||||
(<EQUAL? .NUM 34>
|
||||
<SET ROOM ,RM-VICTORIA-STREET>)
|
||||
(<EQUAL? .NUM 35>
|
||||
<SET ROOM ,RM-VICTORIA-SQUARE>)
|
||||
(<EQUAL? .NUM 36>
|
||||
<SET ROOM ,RM-WHITEHALL>)
|
||||
(<EQUAL? .NUM 37>
|
||||
<SET ROOM ,RM-YORK-PLACE>)
|
||||
(T
|
||||
<TELL "This is odd..." CR CR>
|
||||
<SET ROOM ,RM-KENSINGTON-GARDENS>)>
|
||||
<SET MIN <* <RT-CAB-DIST ,GL-PLACE-CUR .ROOM> ,K-GROWLER-TIME>>
|
||||
<IFSOUND <COND (<==? .ROOM ,RM-COVENT-GARDEN>
|
||||
<SETG LOOPING? ,S-CROWD>
|
||||
<SETG LOOP-VOL 8>)
|
||||
(T
|
||||
<SETG LOOPING? <>>)>
|
||||
<SOUNDS ,S-HORSE ,S-START 4 6>>
|
||||
<MOVE ,TH-GROWLER-CAB .ROOM>
|
||||
<SETG GL-PLACE-PRV ,GL-PLACE-CUR>
|
||||
<SETG GL-PLACE-CUR .ROOM>
|
||||
<SETG GL-PUPPY-MSG? <>>
|
||||
<RT-CLOCK-JMP 0 .MIN 0>>
|
||||
|
||||
<ROUTINE RT-CF-TH-HANSOM-CAB ("OPTIONAL" (CONTEXT <>) "AUX" WRD ADJ)
|
||||
<COND (<IN? ,CH-PLAYER ,TH-HANSOM-CAB>
|
||||
<SETG GL-WHERE-TO-PROMPT? T>
|
||||
<SETG GL-WHERE-TO-ORPH? T>)>
|
||||
<COND (<AND <MC-VERB? WALK>
|
||||
<EQUAL? ,GL-P-WALK-DIR ,P?OUT>>
|
||||
<RT-PERFORM ,V?EXIT ,TH-HANSOM-CAB>)
|
||||
(<OR <AND <MC-VERB? WALK>
|
||||
<EQUAL? ,GL-WINNER ,CH-PLAYER>>
|
||||
<AND <MC-VERB? ENTER>
|
||||
<NOT <MC-PRSO? ,TH-HANSOM-CAB>>>>
|
||||
<RT-CYOU-MSG>
|
||||
<RT-WOULD-HAVE-TO-MSG "get out of" ,TH-HANSOM-CAB>
|
||||
<TELL " first." CR>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? DRIVE WALK-TO>
|
||||
<SET WRD <GET ,GL-P-NAMW 0>>
|
||||
<SET ADJ <GET ,GL-P-ADJW 0>>
|
||||
<COND (<MC-PRSO? ,RM-AUDLEY-ST>
|
||||
<RT-MOVE-HANSOM ,RM-AUDLEY-ST>)
|
||||
(<MC-PRSO? ,RM-221B-BAKER-ST ,RM-ENTRY-HALL>
|
||||
<RT-MOVE-HANSOM ,RM-221B-BAKER-ST>)
|
||||
(<MC-PRSO? ,RM-BIRDCAGE-WALK>
|
||||
<RT-MOVE-HANSOM ,RM-BIRDCAGE-WALK>)
|
||||
;(<MC-PRSO? ,RM-BLIND-ALLEY ,RM-SIGN-OF-RED-HERRING>
|
||||
<RT-MOVE-HANSOM ,RM-BLIND-ALLEY>)
|
||||
(<MC-PRSO? ,RM-BROAD-SANCTUARY ,LG-TOMBS-ABBEY>
|
||||
<RT-MOVE-HANSOM ,RM-BROAD-SANCTUARY>)
|
||||
(<MC-PRSO? ,RM-BUCKINGHAM-PALACE-RD>
|
||||
<RT-MOVE-HANSOM ,RM-BUCKINGHAM-PALACE-RD>)
|
||||
(<MC-PRSO? ,RM-CHEAPSIDE>
|
||||
<RT-MOVE-HANSOM ,RM-CHEAPSIDE>)
|
||||
(<MC-PRSO? ,RM-COVENT-GARDEN>
|
||||
<RT-MOVE-HANSOM ,RM-COVENT-GARDEN>)
|
||||
(<MC-PRSO? ,RM-THE-EMBANKMENT ,LG-WATER>
|
||||
<RT-MOVE-HANSOM ,RM-THE-EMBANKMENT>)
|
||||
(<MC-PRSO? ,RM-FLEET-STREET>
|
||||
<RT-MOVE-HANSOM ,RM-FLEET-STREET>)
|
||||
(<MC-PRSO? ,RM-GREAT-RUSSELL-ST ,RM-BRITISH-MUSEUM>
|
||||
<RT-MOVE-HANSOM ,RM-GREAT-RUSSELL-ST>)
|
||||
(<MC-PRSO? ,RM-GROSVENOR-PLACE>
|
||||
<RT-MOVE-HANSOM ,RM-GROSVENOR-PLACE>)
|
||||
(<MC-PRSO? ,RM-HYDE-PARK-CORNER>
|
||||
<RT-MOVE-HANSOM ,RM-HYDE-PARK-CORNER>)
|
||||
(<MC-PRSO? ,RM-KENSINGTON-GARDENS>
|
||||
<RT-MOVE-HANSOM ,RM-KENSINGTON-GARDENS>)
|
||||
(<MC-PRSO? ,RM-KING-WILLIAM-ST>
|
||||
<RT-MOVE-HANSOM ,RM-KING-WILLIAM-ST>)
|
||||
(<MC-PRSO? ,RM-LONDON-BRIDGE>
|
||||
<RT-MOVE-HANSOM ,RM-LONDON-BRIDGE>)
|
||||
(<MC-PRSO? ,RM-LOWER-THAMES-ST ,RM-BAR-OF-GOLD
|
||||
,RM-SWAN-LANE>
|
||||
<RT-MOVE-HANSOM ,RM-LOWER-THAMES-ST>)
|
||||
(<MC-PRSO? ,RM-THE-MALL>
|
||||
<RT-MOVE-HANSOM ,RM-THE-MALL>)
|
||||
(<MC-PRSO? ,RM-MARYLEBONE-RD ,RM-MADAME-TUSSAUDS>
|
||||
<RT-MOVE-HANSOM ,RM-MARYLEBONE-RD>)
|
||||
(<OR <AND <EQUAL? .WRD ,W?MONUMENT>
|
||||
<EQUAL? .ADJ <>>>
|
||||
<MC-PRSO? ,RM-MONUMENT>>
|
||||
<RT-MOVE-HANSOM ,RM-MONUMENT>)
|
||||
(<MC-PRSO? ,RM-NEW-OXFORD-ST>
|
||||
<RT-MOVE-HANSOM ,RM-NEW-OXFORD-ST>)
|
||||
(<OR <AND <EQUAL? .WRD ,W?STREET ,W?ST>
|
||||
<EQUAL? .ADJ ,W?OXFORD>>
|
||||
<MC-PRSO? ,RM-OXFORD-ST>>
|
||||
<RT-MOVE-HANSOM ,RM-OXFORD-ST>)
|
||||
(<MC-PRSO? ,RM-ORCHARD-ST>
|
||||
<RT-MOVE-HANSOM ,RM-ORCHARD-ST>)
|
||||
(<MC-PRSO? ,RM-PARLIAMENT-SQUARE ,RM-PARLIAMENT ,TH-BELL>
|
||||
<RT-MOVE-HANSOM ,RM-PARLIAMENT-SQUARE>)
|
||||
(<MC-PRSO? ,RM-PINCHIN-LANE ,RM-SHERMANS-HOUSE>
|
||||
<RT-MOVE-HANSOM ,RM-PINCHIN-LANE>)
|
||||
(<MC-PRSO? ,RM-QUEENS-GARDENS ,RM-BUCKINGHAM-PALACE>
|
||||
<RT-MOVE-HANSOM ,RM-QUEENS-GARDENS>)
|
||||
(<MC-PRSO? ,RM-ST-GILES-CIRCUS>
|
||||
<RT-MOVE-HANSOM ,RM-ST-GILES-CIRCUS>)
|
||||
(<MC-PRSO? ,RM-THE-STRAND>
|
||||
<RT-MOVE-HANSOM ,RM-THE-STRAND>)
|
||||
(<MC-PRSO? ,RM-THREADNEEDLE-ST ,RM-BANK-OF-ENGLAND>
|
||||
<RT-MOVE-HANSOM ,RM-THREADNEEDLE-ST>)
|
||||
(<MC-PRSO? ,RM-TOTTENHAM-COURT-RD>
|
||||
<RT-MOVE-HANSOM ,RM-TOTTENHAM-COURT-RD>)
|
||||
(<OR <EQUAL? .WRD ,W?TOWER>
|
||||
<MC-PRSO? ,RM-TOWER-ENTRANCE ,LG-TOWER
|
||||
,RM-DRAWBRIDGE>>
|
||||
<RT-MOVE-HANSOM ,RM-TOWER-ENTRANCE>)
|
||||
(<MC-PRSO? ,RM-TRAFALGAR-SQUARE ,RM-DIOGENES-CLUB>
|
||||
<RT-MOVE-HANSOM ,RM-TRAFALGAR-SQUARE>)
|
||||
(<MC-PRSO? ,RM-UPPER-THAMES-ST>
|
||||
<RT-MOVE-HANSOM ,RM-UPPER-THAMES-ST>)
|
||||
(<MC-PRSO? ,RM-VICTORIA-STREET>
|
||||
<RT-MOVE-HANSOM ,RM-VICTORIA-STREET>)
|
||||
(<MC-PRSO? ,RM-VICTORIA-SQUARE>
|
||||
<RT-MOVE-HANSOM ,RM-VICTORIA-SQUARE>)
|
||||
(<MC-PRSO? ,RM-WHITEHALL ,RM-SCOTLAND-YARD>
|
||||
<RT-MOVE-HANSOM ,RM-WHITEHALL>)
|
||||
(<MC-PRSO? ,RM-YORK-PLACE>
|
||||
<RT-MOVE-HANSOM ,RM-YORK-PLACE>)>)
|
||||
(<MC-VERB? STAND STAND-ON LEAP>
|
||||
<TELL ,K-ENOUGH-ROOM-MSG CR>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? SIT>
|
||||
<TELL "You're already seated." CR>
|
||||
<RTRUE>)
|
||||
(<RT-TOUCH-VERB?>
|
||||
<COND (<MC-PRSO? <> ,ROOMS>
|
||||
T)
|
||||
(<IN? ,GL-PRSO ,GLOBAL-OBJECTS>
|
||||
T)
|
||||
(<NOT <RT-META-IN? ,GL-PRSO ,TH-HANSOM-CAB>>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "cannot reach " THEO "." CR>
|
||||
<RTRUE>)>
|
||||
<COND (<MC-PRSI? <> ,ROOMS>
|
||||
<RFALSE>)
|
||||
(<IN? ,GL-PRSI ,GLOBAL-OBJECTS>
|
||||
<RFALSE>)
|
||||
(<AND <FSET? ,GL-PRSI ,FL-PERSON>
|
||||
<IN? ,GL-PRSI ,GL-PLACE-CUR>>
|
||||
<RFALSE>)
|
||||
(<NOT <RT-META-IN? ,GL-PRSI ,TH-HANSOM-CAB>>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "cannot reach " THEI "." CR>)>)>>
|
||||
|
||||
<ROUTINE RT-CF-TH-GROWLER-CAB ("OPTIONAL" (CONTEXT <>))
|
||||
<COND (<IN? ,CH-PLAYER ,TH-GROWLER-CAB>
|
||||
<SETG GL-WHERE-TO-PROMPT? T>
|
||||
<SETG GL-WHERE-TO-ORPH? T>)>
|
||||
<COND (<AND <MC-VERB? WALK>
|
||||
<EQUAL? ,GL-P-WALK-DIR ,P?OUT>>
|
||||
<RT-PERFORM ,V?EXIT ,TH-GROWLER-CAB>)
|
||||
(<OR <AND <MC-VERB? WALK>
|
||||
<EQUAL? ,GL-WINNER ,CH-PLAYER>>
|
||||
<AND <MC-VERB? ENTER>
|
||||
<NOT <MC-PRSO? ,TH-GROWLER-CAB>>>>
|
||||
<RT-CYOU-MSG>
|
||||
<RT-WOULD-HAVE-TO-MSG "get out of" ,TH-GROWLER-CAB>
|
||||
<TELL " first." CR>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? DRIVE WALK-TO>
|
||||
<TELL "\"Oh good! I've never been THERE before.\"" CR CR>
|
||||
<SETG GL-WHERE-TO-PROMPT? <>>
|
||||
<SETG GL-WHERE-TO-ORPH? <>>
|
||||
<RT-ALARM-CLR ,RT-I-GROWLER-TO?>
|
||||
<RT-ALARM-CLR ,RT-I-GROWLER-LEAVE>
|
||||
<RT-MOVE-GROWLER>
|
||||
<COND (<IN? ,CH-PLAYER ,TH-GROWLER-CAB>
|
||||
<SETG GL-PUPPY-MSG? <>>
|
||||
<TELL ,K-WILD-RIDE-MSG CR CR>
|
||||
<RT-ALARM-SET-REL ,RT-I-GROWLER-TO? <RT-PARM-SET 0 5 0>>
|
||||
<RT-DESC-ALL>)
|
||||
(T
|
||||
<TELL "The cab drives off." CR>
|
||||
<SETG GL-NOW-LIT? <RT-IS-LIT?>>
|
||||
<RT-ALARM-SET-REL ,RT-I-GROWLER-LEAVE <RT-PARM-SET 0 30 0>>)>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? STAND STAND-ON LEAP>
|
||||
<TELL ,K-ENOUGH-ROOM-MSG CR>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? SIT>
|
||||
<TELL "You're already seated." CR>
|
||||
<RTRUE>)
|
||||
(<RT-TOUCH-VERB?>
|
||||
<COND (<MC-PRSO? <> ,ROOMS> T)
|
||||
(<IN? ,GL-PRSO ,GLOBAL-OBJECTS> T)
|
||||
(<NOT <RT-META-IN? ,GL-PRSO ,TH-GROWLER-CAB>>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "cannot reach " THEO "." CR>
|
||||
<RTRUE>)>
|
||||
<COND (<MC-PRSI? <> ,ROOMS>
|
||||
<RFALSE>)
|
||||
(<IN? ,GL-PRSI ,GLOBAL-OBJECTS>
|
||||
<RFALSE>)
|
||||
(<NOT <RT-META-IN? ,GL-PRSI ,TH-GROWLER-CAB>>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "cannot reach " THEI "." CR>)>)>>
|
||||
|
||||
<ROUTINE RT-BLOW-WHISTLE ("AUX" WHO WHO2 L)
|
||||
<COND (<MC-HERE? <LOC ,TH-HANSOM-CAB> <LOC ,TH-GROWLER-CAB>>
|
||||
<TELL ,K-CAB-HERE-MSG CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
;<IFSOUND <SOUNDS ,S-WHISTLE ,S-START 8 1
|
||||
<COND (,TH-CAB-WHISTLE-AUX1
|
||||
<RT-S-WHISTLE-TWICE>)
|
||||
(T CHECK-LOOPING)>>>
|
||||
<TELL "Tweeeeeeeeee!" CR>)>
|
||||
<COND (<MC-IS? ,GL-PLACE-CUR ,FL-INDOORS>
|
||||
<COND (<AND <MC-HERE? ,RM-HOLMES-STUDY>
|
||||
<MC-IS? ,CH-HOLMES ,FL-ASLEEP>>
|
||||
<TELL ,K-HOLMES-DISTRACTION-MSG CR>
|
||||
<RTRUE>)>
|
||||
<SET WHO <RT-ANYONE-HERE?>>
|
||||
<COND (<MC-T? .WHO>
|
||||
<SET L <LOC .WHO>>
|
||||
<REMOVE .WHO>
|
||||
<SET WHO2 <RT-ANYONE-HERE?>>
|
||||
<COND (;AND .WHO2 ;<MC-ISNOT? .WHO2 ,FL-ASLEEP> ;"RFP"
|
||||
<TELL "Everyone holds their hands to their ">)
|
||||
(T
|
||||
<TELL CTHE .WHO " hold">
|
||||
<RT-S-NOS-MSG .WHO>
|
||||
<TELL " ">
|
||||
<RT-YOUR-MSG .WHO>
|
||||
<TELL "hands to ">
|
||||
<RT-YOUR-MSG .WHO>)>
|
||||
<MOVE .WHO .L>
|
||||
<TELL "ears and glare">
|
||||
<RT-S-NOS-MSG .WHO>
|
||||
<TELL " at you." CR>)>)
|
||||
(<NOT <MC-HERE? ,RM-TOWER-GREEN ,RM-OUTER-WARD
|
||||
,RM-BYWARD-TOWER ,RM-INSIDE-TRAITORS-GATE
|
||||
,RM-OUTSIDE-TRAITORS-GATE ,RM-DRAWBRIDGE
|
||||
,RM-THAMES-ONE ,RM-THAMES-TWO
|
||||
,RM-THAMES-THREE ,RM-THAMES-FOUR
|
||||
,RM-THAMES-FIVE ,RM-SWAN-LANE>>
|
||||
<SETG TH-CAB-WHISTLE-AUX1 <+ ,TH-CAB-WHISTLE-AUX1 1>>
|
||||
<SETG TH-CAB-WHISTLE-AUX2 ,GL-PLACE-CUR>
|
||||
<COND (<NOT <RT-ALARM-SET? ,RT-I-CAB-ARRIVE>>
|
||||
<RT-ALARM-SET-REL ,RT-I-CAB-ARRIVE <RT-PARM-SET 0 1 0>>)>)>
|
||||
<RTRUE>>
|
||||
|
||||
<OBJECT TH-HANSOM-CAB
|
||||
(LOC RM-VICTORIA-SQUARE)
|
||||
(DESC "hansom cab")
|
||||
(FLAGS FL-VEHICLE FL-CONTAINER FL-TRYTAKE FL-OPENED FL-LIGHTED
|
||||
FL-HAS-DESCFCN)
|
||||
(SYNONYM CAB)
|
||||
(ADJECTIVE HANSOM)
|
||||
(SIZE 0 CAPACITY 999)
|
||||
(ACTION RT-AC-TH-HANSOM-CAB)
|
||||
(CONTFCN RT-CF-TH-HANSOM-CAB)>
|
||||
|
||||
<OBJECT TH-GROWLER-CAB
|
||||
(LOC RM-OXFORD-ST)
|
||||
(DESC "growler cab")
|
||||
(FLAGS FL-VEHICLE FL-CONTAINER FL-TRYTAKE FL-OPENED FL-LIGHTED
|
||||
FL-HAS-DESCFCN)
|
||||
(SYNONYM CAB)
|
||||
(ADJECTIVE GROWLER)
|
||||
(SIZE 0 CAPACITY 999)
|
||||
(ACTION RT-AC-TH-GROWLER-CAB)
|
||||
(CONTFCN RT-CF-TH-GROWLER-CAB)>
|
||||
|
||||
<OBJECT TH-CAB-WHISTLE
|
||||
(LOC CH-PLAYER)
|
||||
(DESC "whistle")
|
||||
(FLAGS FL-TAKEABLE FL-CLOTHING FL-WORN)
|
||||
(SYNONYM WHISTLE)
|
||||
(SIZE 1 MASS 1)
|
||||
(ACTION RT-AC-TH-CAB-WHISTLE)>
|
||||
|
||||
<ROUTINE RT-AC-TH-HANSOM-CAB ("OPT" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-HANSOM-CAB">>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<TELL
|
||||
"It is a small cab with two wheels and room for only two persons,
|
||||
drawn by a single horse." CR>
|
||||
<RTRUE>)
|
||||
(<AND <MC-VERB? ENTER>
|
||||
<MC-PRSO? ,ROOMS ,TH-HANSOM-CAB>>
|
||||
<COND (<MC-IS? ,TH-SUIT-OF-ARMOUR ,FL-WORN>
|
||||
<TELL ,K-HEAVY-ARMOUR-MSG CR>)
|
||||
(<NOT <IN? ,GL-WINNER ,TH-HANSOM-CAB>>
|
||||
<MOVE ,GL-WINNER ,TH-HANSOM-CAB>
|
||||
<COND (<AND <MC-T? ,GL-PUPPY>
|
||||
<EQUAL? ,GL-WINNER ,CH-PLAYER>>
|
||||
<MOVE ,GL-PUPPY ,TH-HANSOM-CAB>
|
||||
<TELL "You and " THE ,GL-PUPPY " get ">)
|
||||
(T
|
||||
<RT-CYOU-MSG "get" "gets">)>
|
||||
<MC-MAKE ,TH-HANSOM-CAB ,FL-NODESC>
|
||||
<RT-ALARM-CLR ,RT-I-HANSOM-LEAVE>
|
||||
<SETG TH-HANSOM-CAB-AUX2 0>
|
||||
;<RT-ALARM-SET-REL ,RT-I-HANSOM-TO? <RT-PARM-SET 0 5 0>>
|
||||
<SETG GL-WHERE-TO-PROMPT? T>
|
||||
<SETG GL-WHERE-TO-ORPH? T>
|
||||
<TELL "into the cab." CR>)>)
|
||||
(<AND <MC-VERB? EXIT>
|
||||
<MC-PRSO? ,ROOMS ,TH-HANSOM-CAB>>
|
||||
<COND (<IN? ,CH-PLAYER ,TH-HANSOM-CAB>
|
||||
<MOVE ,GL-WINNER ,GL-PLACE-CUR>
|
||||
<COND (<AND <MC-T? ,GL-PUPPY>
|
||||
<EQUAL? ,GL-WINNER ,CH-PLAYER>>
|
||||
<MOVE ,GL-PUPPY ,GL-PLACE-CUR>
|
||||
<TELL "You and " THE ,GL-PUPPY " get ">)
|
||||
(T
|
||||
<RT-CYOU-MSG "get" "gets">)>
|
||||
<TELL "out of the cab.">
|
||||
<MC-UNMAKE ,TH-HANSOM-CAB ,FL-NODESC>
|
||||
<COND (<AND <ZERO? ,TH-HANSOM-CAB-AUX2>
|
||||
<NOT <IN? ,CH-PLAYER ,TH-HANSOM-CAB>>
|
||||
<OR <MC-F? ,GL-PUPPY>
|
||||
<NOT <IN? ,GL-PUPPY ,TH-HANSOM-CAB>>>
|
||||
<NOT <MC-HERE? ,RM-VICTORIA-SQUARE>>>
|
||||
<TELL " After">
|
||||
<RT-YOU-MSG "get" "gets">
|
||||
<TELL "out, it drives off.">
|
||||
<IFSOUND <RT-S-CAB-LEAVES>>
|
||||
<MOVE ,TH-HANSOM-CAB ,RM-VICTORIA-SQUARE>
|
||||
<RT-REMOVE-ALL ,TH-HANSOM-CAB>
|
||||
<MOVE ,CH-HANSOM-CABBIE ,TH-HANSOM-CAB>
|
||||
<RT-ALARM-CLR ,RT-I-HANSOM-LEAVE>
|
||||
;<RT-ALARM-CLR ,RT-I-HANSOM-TO?>
|
||||
<SETG GL-NOW-LIT? <RT-IS-LIT?>>)>
|
||||
<SETG GL-WHERE-TO-PROMPT? <>>
|
||||
<SETG GL-WHERE-TO-ORPH? <>>
|
||||
<CRLF>)>)
|
||||
(<MC-VERB? LOOK-ON>
|
||||
<TELL "There is a cab driver sitting on the hansom." CR>)
|
||||
(<AND <MC-VERB? TAKE PUSH-TO>
|
||||
<MC-THIS-PRSO?>>
|
||||
<TELL ,K-TAKE-CAB-MSG CR>
|
||||
<RFATAL>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<RT-WASTE-OF-BULLETS-MSG>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-GROWLER-CAB ("OPT" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-GROWLER-CAB">>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<TELL
|
||||
"It is a large cab with four wheels and room for four persons,
|
||||
drawn by a single horse." CR>
|
||||
<RTRUE>)
|
||||
(<AND <MC-VERB? ENTER>
|
||||
<MC-PRSO? ,ROOMS ,TH-GROWLER-CAB>>
|
||||
<COND (<MC-IS? ,TH-SUIT-OF-ARMOUR ,FL-WORN>
|
||||
<TELL ,K-HEAVY-ARMOUR-MSG CR>)
|
||||
(<NOT <IN? ,GL-WINNER ,TH-GROWLER-CAB>>
|
||||
<MOVE ,GL-WINNER ,TH-GROWLER-CAB>
|
||||
<COND (<AND <MC-T? ,GL-PUPPY>
|
||||
<EQUAL? ,GL-WINNER ,CH-PLAYER>>
|
||||
<MOVE ,GL-PUPPY ,TH-GROWLER-CAB>
|
||||
<TELL "You and " THE ,GL-PUPPY " get ">)
|
||||
(T
|
||||
<RT-CYOU-MSG "get" "gets">)>
|
||||
<MC-MAKE ,TH-GROWLER-CAB ,FL-NODESC>
|
||||
<RT-ALARM-CLR ,RT-I-GROWLER-LEAVE>
|
||||
<RT-ALARM-SET-REL ,RT-I-GROWLER-TO? <RT-PARM-SET 0 5 0>>
|
||||
<SETG GL-WHERE-TO-PROMPT? T>
|
||||
<SETG GL-WHERE-TO-ORPH? T>
|
||||
<TELL "into the cab." CR>)>)
|
||||
(<AND <MC-VERB? EXIT>
|
||||
<MC-PRSO? ,ROOMS ,TH-GROWLER-CAB>>
|
||||
<COND (<IN? ,CH-PLAYER ,TH-GROWLER-CAB>
|
||||
<MOVE ,GL-WINNER ,GL-PLACE-CUR>
|
||||
<COND (<AND <MC-T? ,GL-PUPPY>
|
||||
<EQUAL? ,GL-WINNER ,CH-PLAYER>>
|
||||
<MOVE ,GL-PUPPY ,GL-PLACE-CUR>
|
||||
<TELL "You and " THE ,GL-PUPPY " get ">)
|
||||
(T
|
||||
<RT-CYOU-MSG "get" "gets">)>
|
||||
<TELL "out of the cab.">
|
||||
<MC-UNMAKE ,TH-GROWLER-CAB ,FL-NODESC>
|
||||
<COND (<AND <NOT <IN? ,CH-PLAYER ,TH-GROWLER-CAB>>
|
||||
<OR <MC-F? ,GL-PUPPY>
|
||||
<NOT <IN? ,GL-PUPPY ,TH-GROWLER-CAB>>>
|
||||
<NOT <MC-HERE? ,RM-OXFORD-ST>>>
|
||||
<TELL " After">
|
||||
<RT-YOU-MSG "get" "gets">
|
||||
<TELL "out, it drives off.">
|
||||
<IFSOUND <RT-S-CAB-LEAVES>>
|
||||
<MOVE ,TH-GROWLER-CAB ,RM-OXFORD-ST>
|
||||
<RT-REMOVE-ALL ,TH-GROWLER-CAB>
|
||||
<MOVE ,CH-GROWLER-CABBIE ,TH-GROWLER-CAB>
|
||||
<RT-ALARM-CLR ,RT-I-GROWLER-LEAVE>
|
||||
<RT-ALARM-CLR ,RT-I-GROWLER-TO?>
|
||||
<SETG GL-NOW-LIT? <RT-IS-LIT?>>)>
|
||||
<SETG GL-WHERE-TO-PROMPT? <>>
|
||||
<SETG GL-WHERE-TO-ORPH? <>>
|
||||
<CRLF>)>)
|
||||
(<MC-VERB? LOOK-ON>
|
||||
<TELL "There is a cab driver sitting on the growler." CR>)
|
||||
(<AND <MC-VERB? TAKE PUSH-TO>
|
||||
<MC-THIS-PRSO?>>
|
||||
<TELL ,K-TAKE-CAB-MSG CR>
|
||||
<RFATAL>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<RT-WASTE-OF-BULLETS-MSG>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-CAB-WHISTLE ()
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-CAB-WHISTLE">>
|
||||
<COND (<AND <MC-VERB? BLOW-INTO>
|
||||
<MC-THIS-PRSO?>>
|
||||
<RT-BLOW-WHISTLE>)
|
||||
(<AND <MC-VERB? CALL>
|
||||
<MC-THIS-PRSI?>>
|
||||
<COND (<MC-PRSO? ,TH-HANSOM-CAB>
|
||||
<RT-BLOW-WHISTLE>
|
||||
<COND (<RT-ALARM-SET? ,RT-I-CAB-ARRIVE>
|
||||
<RT-CLOCK-INC-SET 0 2 0>
|
||||
<RT-BLOW-WHISTLE>)>
|
||||
<RTRUE>)
|
||||
(<MC-PRSO? ,TH-GROWLER-CAB>
|
||||
<RT-BLOW-WHISTLE>
|
||||
<COND (<RT-ALARM-SET? ,RT-I-CAB-ARRIVE>
|
||||
<RT-CLOCK-INC-SET 0 2 0>)>
|
||||
<RTRUE>)
|
||||
(<EQUAL? <GET ,GL-P-NAMW 0> ,W?CAB>
|
||||
<RT-BLOW-WHISTLE>)
|
||||
(T
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "can't " VW " " AO " with " THEI "." CR>)>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<RT-WASTE-OF-BULLETS-MSG>)>>
|
53
charles.zabstr
Normal file
53
charles.zabstr
Normal file
|
@ -0,0 +1,53 @@
|
|||
|
||||
<OBJECT TH-WAX-HEAD (LOC TH-CHARLES-STATUE) (FLAGS FL-TAKEABLE FL-TRYTAKE
|
||||
FL-NODESC FL-NOALL FL-HAS-SDESC FL-HAS-DESCFCN) (SYNONYM HEAD WAX) (ADJECTIVE
|
||||
HEAD WAX) (SIZE 1 CAPACITY 1 MASS 0) (GENERIC RT-GN-WAX) (ACTION
|
||||
RT-AC-TH-WAX-HEAD)>
|
||||
<VOC "POOL" NOUN>
|
||||
<VOC "POOL" ADJ>
|
||||
<OBJECT TH-WAX-AX (LOC TH-CHARLES-STATUE) (FLAGS FL-TAKEABLE FL-VOWEL FL-NODESC
|
||||
FL-NOALL FL-WEAPON FL-HAS-DESCFCN FL-HAS-SDESC) (SYNONYM BLADE AX AXE WAX) (
|
||||
ADJECTIVE WAX WAX) (SIZE 12 CAPACITY 0 MASS 0) (GENERIC RT-GN-WAX) (ACTION
|
||||
DESC-WAX-AX)>
|
||||
<VOC "MELTED" ADJ>
|
||||
<OBJECT TH-EMERALD (FLAGS FL-READABLE FL-TAKEABLE FL-VOWEL FL-SURFACE FL-MONEY
|
||||
FL-HAS-DESCFCN FL-HAS-SDESC FL-NEEDS-IDENTITY FL-LOSE-IDENTITY) (OBJ-ADJ 0) (
|
||||
OBJ-NOUN 0) (SYNONYM EMERALD GEM GEMS SCRATCH) (ADJECTIVE GREEN EMERALD
|
||||
EMERALD\'S) (VALUE 5) (SIZE 1 MASS 1 CAPACITY 1) (GENERIC RT-GN-GEM) (ACTION
|
||||
RT-AC-TH-EMERALD)>
|
||||
<OBJECT TH-TORCH (LOC TH-FAWKES-STATUE) (FLAGS FL-BURNABLE FL-TAKEABLE
|
||||
FL-NODESC FL-NOALL FL-HAS-SDESC FL-HAS-DESCFCN) (SYNONYM TORCH) (ADJECTIVE ZZZP
|
||||
) (SIZE 1) (ACTION RT-AC-TH-TORCH)>
|
||||
<VOC "BURNT" ADJ>
|
||||
<OBJECT TH-TOBACCO (LOC TH-PERSIAN-SLIPPER) (DESC "tobacco") (FLAGS FL-TAKEABLE
|
||||
FL-BURNABLE FL-PLURAL FL-COLLECTIVE FL-NOALL FL-HAS-DESCFCN) (SYNONYM TOBACCO
|
||||
SHAG) (ADJECTIVE SHAG) (VALUE 1) (SIZE 1) (ACTION RT-AC-TH-TOBACCO)>
|
||||
<DEFINE-ROUTINE BURN-OUT-MATCH>
|
||||
<DEFINE-ROUTINE RT-AC-TH-MATCH>
|
||||
<DEFINE-ROUTINE CLEAR-ALL-FLAGS>
|
||||
<DEFINE-ROUTINE RT-AC-TH-TORCH>
|
||||
<DEFINE-ROUTINE RT-LIGHT-PIPE>
|
||||
<DEFINE-ROUTINE RT-AC-TH-TOBACCO>
|
||||
<DEFINE-ROUTINE RT-AC-TH-PIPE>
|
||||
<DEFINE-ROUTINE RT-AC-TH-MAIL>
|
||||
<DEFINE-ROUTINE RT-AC-TH-NEWSPAPER>
|
||||
<DEFINE-ROUTINE RT-AC-TH-WESTMINSTER-CLUE>
|
||||
<CONSTANT K-HOLMES-HEAD? 1>
|
||||
<CONSTANT K-HOLMES-GEM? 2>
|
||||
<DEFINE-ROUTINE RT-AC-TH-WAX-HEAD>
|
||||
<DEFINE-ROUTINE DESC-WAX-AX>
|
||||
<DEFINE-ROUTINE RT-GUARD-TAKE-ITEM>
|
||||
<DEFINE-ROUTINE RT-GUARD-STOP-ENTRANCE>
|
||||
<DEFINE-ROUTINE RT-EX-RM-EXIT-TUSSAUDS>
|
||||
<DEFINE-ROUTINE RT-EX-RM-MATCH-SNIFFING-DOG>
|
||||
<DEFINE-ROUTINE RT-PUT-OUT>
|
||||
<DEFINE-ROUTINE RT-I-MATCH-OUT>
|
||||
<DEFINE-ROUTINE BURN-MATCH-OUT>
|
||||
<DEFINE-ROUTINE RT-I-PIPE-OUT>
|
||||
<DEFINE-ROUTINE RT-I-TORCH-OUT>
|
||||
<DEFINE-ROUTINE RT-I-NEWSPAPER-OUT>
|
||||
<DEFINE-ROUTINE RT-I-CLUE-OUT>
|
||||
<DEFINE-ROUTINE RT-I-MAIL-OUT>
|
||||
<DEFINE-ROUTINE RT-I-MATCHBOOK-OUT>
|
||||
<DEFINE-ROUTINE PRE-LIGHT-WITH>
|
||||
<DEFINE-ROUTINE RT-GN-WAX>
|
994
charles.zap
Normal file
994
charles.zap
Normal file
|
@ -0,0 +1,994 @@
|
|||
|
||||
|
||||
.FUNCT BURN-OUT-MATCH
|
||||
FCLEAR TH-MATCH,FL-BURNABLE
|
||||
ICALL2 CLEAR-ALL-FLAGS,TH-MATCH
|
||||
FSET TH-MATCH,FL-TAKEABLE
|
||||
FSET TH-MATCH,FL-BROKEN
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-MATCH,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-SDESC \?CCL3
|
||||
FSET? TH-MATCH,FL-BROKEN \?CCL6
|
||||
PRINTI "burnt match"
|
||||
RTRUE
|
||||
?CCL6: PRINTI "match"
|
||||
RTRUE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-DESCFCN \?CCL8
|
||||
FSET? TH-MATCH,FL-BROKEN /FALSE
|
||||
FSET? TH-MATCH,FL-LIGHTED \FALSE
|
||||
ICALL2 RT-CTHEO-PRINT,TH-MATCH
|
||||
PRINTR " is burning."
|
||||
?CCL8: ZERO? CONTEXT \FALSE
|
||||
FSET? TH-MATCH,FL-BROKEN \?CCL17
|
||||
EQUAL? GL-PRSA,V?LAMP-OFF,V?LIGHT,V?STRIKE /?CCL20
|
||||
EQUAL? GL-PRSA,V?BURN-WITH,V?LIGHT-WITH \FALSE
|
||||
?CCL20: PRINTR "The match is already burned out."
|
||||
?CCL17: EQUAL? GL-PRSA,V?LIGHT-WITH,V?BURN-WITH,V?STRIKE /?PRD26
|
||||
EQUAL? GL-PRSA,V?LIGHT \?CCL24
|
||||
?PRD26: EQUAL? GL-PRSO,TH-MATCH \?CCL24
|
||||
FSET? TH-MATCH,FL-LIGHTED \?CCL31
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is already lit."
|
||||
?CCL31: FSET? TH-MATCH,FL-BURNABLE /?CCL33
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is burned out."
|
||||
?CCL33: EQUAL? GL-PRSI,TH-HANDS,FALSE-VALUE /?CCL35
|
||||
FSET? GL-PRSI,FL-LIGHTED \FALSE
|
||||
FSET? GL-PRSI,FL-BURNABLE \FALSE
|
||||
?CCL35: FSET TH-MATCH,FL-LIGHTED
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,2,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-MATCH-OUT,STACK
|
||||
MOVE TH-MATCH,GL-WINNER
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " flares to life."
|
||||
?CCL24: EQUAL? GL-PRSA,V?LAMP-OFF \FALSE
|
||||
FSET? TH-MATCH,FL-LIGHTED /?CCL44
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " isn't lit."
|
||||
?CCL44: FCLEAR TH-MATCH,FL-LIGHTED
|
||||
ICALL1 BURN-OUT-MATCH
|
||||
ICALL2 RT-ALARM-CLR,RT-I-MATCH-OUT
|
||||
ICALL RT-CYOU-MSG,STR?802,STR?803
|
||||
PRINTR "out the match."
|
||||
|
||||
|
||||
.FUNCT CLEAR-ALL-FLAGS,OBJ,N
|
||||
SET 'N,1
|
||||
?PRG1: EQUAL? N,FL-HAS-SDESC,FL-HAS-DESCFCN,FL-NEEDS-IDENTITY /?CND3
|
||||
EQUAL? N,FL-LOSE-IDENTITY /?CND3
|
||||
FCLEAR OBJ,N
|
||||
?CND3: IGRTR? 'N,48 \?PRG1
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-TORCH,CONTEXT,WHO
|
||||
EQUAL? CONTEXT,K-M-SDESC \?CCL3
|
||||
FSET? TH-TORCH,FL-BROKEN \?CCL6
|
||||
PRINTI "burnt torch"
|
||||
RTRUE
|
||||
?CCL6: PRINTI "torch"
|
||||
RTRUE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-DESCFCN \?CCL8
|
||||
FSET? TH-TORCH,FL-BROKEN /FALSE
|
||||
FSET? TH-TORCH,FL-LIGHTED \FALSE
|
||||
ICALL2 RT-CTHEO-PRINT,TH-TORCH
|
||||
PRINTR " is burning."
|
||||
?CCL8: FSET? TH-TORCH,FL-BROKEN /FALSE
|
||||
EQUAL? GL-PRSA,V?MELT,V?HEAT,V?LIGHT-WITH /?PRD18
|
||||
EQUAL? GL-PRSA,V?BURN-WITH \?CCL16
|
||||
?PRD18: EQUAL? GL-PRSI,TH-TORCH \?CCL16
|
||||
FSET? TH-TORCH,FL-LIGHTED /?CCL23
|
||||
ICALL2 RT-CTHEO-PRINT,TH-TORCH
|
||||
PRINTR " is not lit."
|
||||
?CCL23: EQUAL? GL-PRSO,TH-TORCH \?CCL25
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is already lit."
|
||||
?CCL25: EQUAL? GL-PRSO,TH-WAX-HEAD \?CCL27
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTI " melts into a pool of wax on the floor. You see a gem glittering in the wax."
|
||||
CRLF
|
||||
MOVE TH-WAX-HEAD,GL-PLACE-CUR
|
||||
MOVE TH-EMERALD,TH-WAX-HEAD
|
||||
ICALL2 CLEAR-ALL-FLAGS,TH-WAX-HEAD
|
||||
FSET TH-WAX-HEAD,FL-OPENED
|
||||
FSET TH-WAX-HEAD,FL-TRANSPARENT
|
||||
FSET TH-WAX-HEAD,FL-CONTAINER
|
||||
FSET TH-WAX-HEAD,FL-BROKEN
|
||||
ICALL2 SET-MASS-TO-ONE,TH-WAX-HEAD
|
||||
GETPT TH-WAX-HEAD,P?SYNONYM
|
||||
PUT STACK,0,W?POOL
|
||||
GETPT TH-WAX-HEAD,P?ADJECTIVE
|
||||
PUT STACK,0,W?POOL
|
||||
CALL2 RT-THIS-IS-IT,TH-EMERALD
|
||||
RSTACK
|
||||
?CCL27: EQUAL? GL-PRSO,TH-WAX-AX \?CCL29
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTI " melts into a pool of wax on the floor."
|
||||
CRLF
|
||||
MOVE TH-WAX-AX,GL-PLACE-CUR
|
||||
ICALL2 CLEAR-ALL-FLAGS,TH-WAX-AX
|
||||
FSET TH-WAX-AX,FL-OPENED
|
||||
FSET TH-WAX-AX,FL-TRANSPARENT
|
||||
FSET TH-WAX-AX,FL-CONTAINER
|
||||
FSET TH-WAX-AX,FL-BROKEN
|
||||
ICALL2 SET-SIZE-TO-ONE,TH-WAX-AX
|
||||
ICALL2 SET-CAPACITY-TO-ONE,TH-WAX-AX
|
||||
ICALL2 SET-MASS-TO-ONE,TH-WAX-AX
|
||||
GETPT TH-WAX-AX,P?SYNONYM
|
||||
PUT STACK,0,W?AX
|
||||
GETPT TH-WAX-AX,P?ADJECTIVE
|
||||
PUT STACK,0,W?MELTED
|
||||
RTRUE
|
||||
?CCL29: FSET? GL-PRSO,FL-BURNABLE /FALSE
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTI "cannot "
|
||||
PRINTB GL-P-PRSA-WORD
|
||||
PRINTC 32
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTI " with "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTR "."
|
||||
?CCL16: EQUAL? GL-PRSA,V?LIGHT-WITH,V?BURN-WITH \FALSE
|
||||
EQUAL? GL-PRSO,TH-TORCH \FALSE
|
||||
EQUAL? GL-PRSI,TH-TOBACCO,TH-PIPE \?CCL38
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \?CCL38
|
||||
ICALL1 RT-CTHEI-PRINT
|
||||
ICALL2 RT-DONT-DOESNT-MSG,GL-PRSI
|
||||
PRINTI "put out enough heat to light "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTR "."
|
||||
?CCL38: FSET? GL-PRSI,FL-BURNABLE /?CCL42
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTI "cannot light "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTI " with "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTR "."
|
||||
?CCL42: FSET? GL-PRSI,FL-LIGHTED /?CCL44
|
||||
ICALL1 RT-CTHEI-PRINT
|
||||
ICALL2 RT-ISNT-ARENT-MSG,GL-PRSI
|
||||
PRINTR "burning."
|
||||
?CCL44: ICALL1 RT-CTHEO-PRINT
|
||||
PRINTI " catches fire quickly."
|
||||
CRLF
|
||||
FSET TH-TORCH,FL-LIGHTED
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,1,0,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-TORCH-OUT,STACK
|
||||
CALL1 RT-WHO-SAYS? >WHO
|
||||
EQUAL? WHO,CH-HOLMES \?CND45
|
||||
CRLF
|
||||
PRINTI "Holmes looks at you and says, ""An ingenious solution, Watson. My compliments, old chap."""
|
||||
CRLF
|
||||
?CND45: CALL2 RT-UPDATE-SCORE,4
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-LIGHT-PIPE,FIRE
|
||||
FSET? FIRE,FL-BURNABLE /?CCL3
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTI "cannot light "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTI " with "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTR "."
|
||||
?CCL3: FSET? FIRE,FL-LIGHTED /?CCL5
|
||||
ICALL2 RT-CTHEO-PRINT,FIRE
|
||||
PRINTR " is not burning."
|
||||
?CCL5: FSET? TH-TOBACCO,FL-LIGHTED \?CCL7
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is already lit."
|
||||
?CCL7: IN? TH-TOBACCO,TH-PIPE \FALSE
|
||||
FSET TH-TOBACCO,FL-LIGHTED
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,15,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-PIPE-OUT,STACK
|
||||
PRINTI "After a few puffs, "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTR " fires right up."
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-TOBACCO,CONTEXT,I
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \?CCL6
|
||||
ICALL2 RT-CTHEO-PRINT,TH-TOBACCO
|
||||
PRINTR " is burning."
|
||||
?CCL6: PRINTR "It's Holmes's favorite brand of shag tobacco."
|
||||
?CCL3: ZERO? GL-NOW-PRSI? \?CND1
|
||||
SET 'GL-P-IT-OBJECT,TH-TOBACCO
|
||||
?CND1: EQUAL? GL-PRSA,V?LIGHT-WITH,V?BURN-WITH \?CCL10
|
||||
EQUAL? GL-PRSO,TH-TOBACCO \?CCL10
|
||||
EQUAL? GL-PRSI,FALSE-VALUE,TH-HANDS \?CCL15
|
||||
SET 'I,TH-MATCH
|
||||
JUMP ?CND13
|
||||
?CCL15: SET 'I,GL-PRSI
|
||||
?CND13: IN? I,GL-WINNER /?CCL18
|
||||
ICALL RT-CYOU-MSG,STR?228,STR?229
|
||||
PRINTI "not holding "
|
||||
ICALL2 RT-A-PRINT,I
|
||||
PRINTR "."
|
||||
?CCL18: IN? TH-PIPE,GL-WINNER /?CCL20
|
||||
ICALL RT-CYOU-MSG,STR?228,STR?229
|
||||
PRINTI "not holding "
|
||||
ICALL2 RT-THEO-PRINT,TH-PIPE
|
||||
PRINTR "."
|
||||
?CCL20: FSET? TH-TOBACCO,FL-LIGHTED \?CCL22
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is already lit."
|
||||
?CCL22: CALL2 RT-LIGHT-PIPE,I
|
||||
ZERO? STACK \TRUE
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTC 32
|
||||
PRINT K-SMOULDERS-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL10: EQUAL? GL-PRSA,V?TAKE,V?TOUCH \?CCL26
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \?CCL26
|
||||
PRINTR "Yeeeeouch! That's hot!"
|
||||
?CCL26: EQUAL? GL-PRSA,V?SMOKE \?CCL30
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \?CCL33
|
||||
PRINT K-BRAND-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL33: ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is not lit."
|
||||
?CCL30: EQUAL? GL-PRSA,V?SMELL \FALSE
|
||||
PRINTR "The shag has a strong, but pleasant smell."
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-PIPE,CONTEXT,I,DEST
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \?CCL6
|
||||
IN? TH-TOBACCO,TH-PIPE \?CCL6
|
||||
PRINTI "Smoke gently wafts from "
|
||||
ICALL2 RT-THEO-PRINT,TH-PIPE
|
||||
PRINTR "."
|
||||
?CCL6: PRINTR "It is an old and oily black clay pipe, the companion of Holmes's deepest meditations."
|
||||
?CCL3: ZERO? CONTEXT \FALSE
|
||||
ZERO? GL-NOW-PRSI? \?CCL12
|
||||
EQUAL? GL-PRSA,V?LIGHT-WITH,V?BURN-WITH \?CCL15
|
||||
EQUAL? GL-PRSI,FALSE-VALUE,TH-HANDS \?CCL18
|
||||
SET 'I,TH-MATCH
|
||||
JUMP ?CND16
|
||||
?CCL18: SET 'I,GL-PRSI
|
||||
?CND16: IN? I,GL-WINNER /?CCL21
|
||||
ICALL RT-CYOU-MSG,STR?228,STR?229
|
||||
PRINTI "not holding "
|
||||
ICALL2 RT-A-PRINT,I
|
||||
PRINTR "."
|
||||
?CCL21: IN? TH-PIPE,GL-WINNER /?CCL23
|
||||
ICALL RT-CYOU-MSG,STR?228,STR?229
|
||||
PRINTI "not holding "
|
||||
ICALL2 RT-THEO-PRINT,TH-PIPE
|
||||
PRINTR "."
|
||||
?CCL23: FSET? TH-TOBACCO,FL-LIGHTED \?CCL25
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is already lit."
|
||||
?CCL25: CALL2 RT-LIGHT-PIPE,I
|
||||
ZERO? STACK \TRUE
|
||||
PRINTR "There is nothing in the pipe to light."
|
||||
?CCL15: EQUAL? GL-PRSA,V?PUT \?CCL29
|
||||
EQUAL? GL-PRSI,TH-PLAYER-BODY \?CCL29
|
||||
GET GL-P-NAMW,1
|
||||
EQUAL? STACK,W?MOUTH \?CCL29
|
||||
CALL RT-PERFORM,V?SMOKE,TH-PIPE
|
||||
RSTACK
|
||||
?CCL29: EQUAL? GL-PRSA,V?SMOKE \?CCL34
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \?CCL37
|
||||
PRINT K-BRAND-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL37: ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is not lit."
|
||||
?CCL34: EQUAL? GL-PRSA,V?EMPTY-INTO,V?POUR \FALSE
|
||||
IN? TH-TOBACCO,TH-PIPE \FALSE
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \FALSE
|
||||
EQUAL? GL-PRSA,V?POUR \?CCL45
|
||||
FCLEAR TH-TOBACCO,FL-LIGHTED
|
||||
MOVE TH-TOBACCO,GL-PLACE-CUR
|
||||
ICALL2 RT-CTHEO-PRINT,TH-TOBACCO
|
||||
PRINTI " falls "
|
||||
EQUAL? GL-PLACE-CUR,RM-THAMES-ONE,RM-THAMES-TWO,RM-THAMES-THREE /?CTR47
|
||||
EQUAL? GL-PLACE-CUR,RM-THAMES-FOUR,RM-THAMES-FIVE \?CCL48
|
||||
?CTR47: REMOVE TH-TOBACCO
|
||||
PRINTR "into the water."
|
||||
?CCL48: PRINTI "to "
|
||||
FSET? GL-PLACE-CUR,FL-INDOORS \?CCL53
|
||||
ICALL1 TELL-THE-FLOOR
|
||||
JUMP ?CND51
|
||||
?CCL53: ICALL1 TELL-THE-GROUND
|
||||
?CND51: PRINTI ", "
|
||||
PRINT K-SMOULDERS-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL45: EQUAL? GL-PRSA,V?EMPTY-INTO \FALSE
|
||||
CALL RT-ROOM-IN-ON-MSG?,TH-TOBACCO,GL-PRSI
|
||||
ZERO? STACK \TRUE
|
||||
CALL RT-CHECK-MOVE-MSG?,TH-TOBACCO,GL-PRSI
|
||||
ZERO? STACK \TRUE
|
||||
FCLEAR TH-TOBACCO,FL-LIGHTED
|
||||
MOVE TH-TOBACCO,GL-PRSI
|
||||
ICALL2 RT-CTHEO-PRINT,TH-TOBACCO
|
||||
PRINTI " falls "
|
||||
FSET? GL-PRSI,FL-CONTAINER \?CCL63
|
||||
PRINTI "into"
|
||||
JUMP ?CND61
|
||||
?CCL63: PRINTI "onto"
|
||||
?CND61: PRINTC 32
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTI ", "
|
||||
PRINT K-SMOULDERS-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL12: ZERO? GL-NOW-PRSI? /FALSE
|
||||
EQUAL? GL-PRSA,V?PUT \?CCL68
|
||||
EQUAL? GL-PRSO,TH-TOBACCO /?CCL68
|
||||
PRINTI "Putting "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTI " in "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTI " would"
|
||||
CALL1 RT-WASTE-OF-TIME-MSG
|
||||
RSTACK
|
||||
?CCL68: EQUAL? GL-PRSA,V?POUR-FROM \FALSE
|
||||
EQUAL? GL-PRSO,TH-TOBACCO \FALSE
|
||||
IN? TH-TOBACCO,TH-PIPE \FALSE
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \FALSE
|
||||
FCLEAR TH-TOBACCO,FL-LIGHTED
|
||||
MOVE TH-TOBACCO,GL-PLACE-CUR
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTI " falls to "
|
||||
FSET? GL-PLACE-CUR,FL-INDOORS \?CCL79
|
||||
ICALL1 TELL-THE-FLOOR
|
||||
JUMP ?CND77
|
||||
?CCL79: ICALL1 TELL-THE-GROUND
|
||||
?CND77: PRINTI ", "
|
||||
PRINT K-SMOULDERS-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-MAIL,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
FSET? TH-MAIL,FL-LIGHTED \FALSE
|
||||
ICALL2 RT-CTHEO-PRINT,TH-MAIL
|
||||
PRINTR " is burning."
|
||||
?CCL3: ZERO? CONTEXT \FALSE
|
||||
ZERO? GL-NOW-PRSI? \?CND1
|
||||
SET 'GL-P-IT-OBJECT,TH-MAIL
|
||||
?CND1: EQUAL? GL-PRSA,V?READ,V?EXAMINE,V?LOOK-ON /?CTR11
|
||||
EQUAL? GL-PRSA,V?LOOK-INSIDE,V?OPEN,V?SEARCH /?CTR11
|
||||
EQUAL? GL-PRSA,V?OPEN-WITH \?CCL12
|
||||
?CTR11: PRINTR "You should not read other people's mail."
|
||||
?CCL12: EQUAL? GL-PRSA,V?CLOSE \?CCL17
|
||||
PRINTR "The mail hasn't been opened."
|
||||
?CCL17: EQUAL? GL-PRSA,V?TAKE \?CCL19
|
||||
ZERO? KNIFE-COLD? /?CCL19
|
||||
SET 'KNIFE-COLD?,FALSE-VALUE
|
||||
MOVE TH-KNIFE,GL-WINNER
|
||||
PRINTI "[Taking the knife first]"
|
||||
ZERO? GL-P-MULT? /?CCL24
|
||||
PRINTC 32
|
||||
RFALSE
|
||||
?CCL24: CRLF
|
||||
RFALSE
|
||||
?CCL19: EQUAL? GL-PRSA,V?LIGHT-WITH,V?BURN-WITH \FALSE
|
||||
ZERO? GL-NOW-PRSI? \FALSE
|
||||
FSET? TH-MAIL,FL-LIGHTED \?CCL31
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is already lit."
|
||||
?CCL31: FSET? GL-PRSI,FL-BURNABLE /?CCL33
|
||||
EQUAL? GL-PRSI,TH-PIPE \FALSE
|
||||
?CCL33: FSET? GL-PRSI,FL-LIGHTED \?PRD39
|
||||
FSET? GL-PRSI,FL-BURNABLE /?CTR36
|
||||
?PRD39: EQUAL? GL-PRSI,TH-PIPE \?CCL37
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \?CCL37
|
||||
?CTR36: ICALL2 RT-CTHEO-PRINT,TH-MAIL
|
||||
PRINTI " lights up."
|
||||
CRLF
|
||||
FSET TH-MAIL,FL-LIGHTED
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,3,0
|
||||
CALL RT-ALARM-SET-REL,RT-I-MAIL-OUT,STACK
|
||||
RSTACK
|
||||
?CCL37: ICALL1 RT-CTHEI-PRINT
|
||||
ICALL2 RT-ISNT-ARENT-MSG,GL-PRSI
|
||||
PRINTR "burning."
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-NEWSPAPER,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
FSET? TH-NEWSPAPER,FL-LIGHTED \?CCL6
|
||||
ICALL2 RT-CTHEO-PRINT,TH-NEWSPAPER
|
||||
PRINTR " is burning."
|
||||
?CCL6: PRINTR "It's the newspaper that came in your game package."
|
||||
?CCL3: ZERO? CONTEXT \FALSE
|
||||
EQUAL? GL-PRSA,V?READ,V?READ-TO,V?SHOW /?CCL10
|
||||
EQUAL? GL-PRSA,V?LIGHT-WITH,V?BURN-WITH,V?GIVE /?CCL10
|
||||
EQUAL? GL-PRSA,V?TELL-ABOUT \FALSE
|
||||
?CCL10: IN? TH-NEWSPAPER,CH-PLAYER /?CCL15
|
||||
PRINTR "The newspaper will not leap into your hand by itself."
|
||||
?CCL15: EQUAL? GL-PRSA,V?READ \?CCL17
|
||||
CALL1 RT-READ-NEWSPAPER
|
||||
RSTACK
|
||||
?CCL17: EQUAL? GL-PRSA,V?READ-TO,V?SHOW,V?GIVE \?PRD21
|
||||
ZERO? GL-NOW-PRSI? /?CTR18
|
||||
?PRD21: EQUAL? GL-PRSA,V?TELL-ABOUT \?CCL19
|
||||
ZERO? GL-NOW-PRSI? /?CCL19
|
||||
?CTR18: FSET? GL-PRSI,FL-PERSON \FALSE
|
||||
FSET? TH-NEWSPAPER,FL-ASLEEP /?CCL29
|
||||
FSET? TH-NEWSPAPER,FL-OPENED \?CND26
|
||||
?CCL29: ICALL1 RT-READ-NEWSPAPER
|
||||
CRLF
|
||||
?CND26: EQUAL? GL-PRSA,V?READ-TO,V?SHOW,V?GIVE \?PRD36
|
||||
EQUAL? GL-PRSI,CH-HOLMES /?CTR33
|
||||
?PRD36: EQUAL? GL-PRSA,V?TELL-ABOUT \?CCL34
|
||||
EQUAL? GL-PRSO,CH-HOLMES \?CCL34
|
||||
?CTR33: FSET? CH-HOLMES,FL-ASLEEP \FALSE
|
||||
ICALL1 RT-WAKE-UP-HOLMES
|
||||
EQUAL? GL-PRSA,V?GIVE \TRUE
|
||||
MOVE TH-NEWSPAPER,CH-HOLMES
|
||||
RTRUE
|
||||
?CCL34: ICALL1 RT-CTHEI-PRINT
|
||||
ICALL2 RT-DONT-DOESNT-MSG,GL-PRSI
|
||||
PRINTR "seem to be interested."
|
||||
?CCL19: EQUAL? GL-PRSA,V?LIGHT-WITH,V?BURN-WITH \FALSE
|
||||
ZERO? GL-NOW-PRSI? \FALSE
|
||||
FSET? TH-NEWSPAPER,FL-LIGHTED \?CCL52
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is already lit."
|
||||
?CCL52: FSET? GL-PRSI,FL-BURNABLE /?CCL54
|
||||
EQUAL? GL-PRSI,TH-PIPE \FALSE
|
||||
?CCL54: FSET? GL-PRSI,FL-LIGHTED \?PRD60
|
||||
FSET? GL-PRSI,FL-BURNABLE /?CTR57
|
||||
?PRD60: EQUAL? GL-PRSI,TH-PIPE \?CCL58
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \?CCL58
|
||||
?CTR57: ICALL2 RT-CTHEO-PRINT,TH-NEWSPAPER
|
||||
PRINTI " lights up."
|
||||
CRLF
|
||||
FSET TH-NEWSPAPER,FL-LIGHTED
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,3,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-NEWSPAPER-OUT,STACK
|
||||
RTRUE
|
||||
?CCL58: ICALL1 RT-CTHEI-PRINT
|
||||
ICALL2 RT-ISNT-ARENT-MSG,GL-PRSI
|
||||
PRINTR "burning."
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-WESTMINSTER-CLUE,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
FSET? TH-MAIL,FL-LIGHTED \FALSE
|
||||
ICALL2 RT-CTHEO-PRINT,TH-MAIL
|
||||
PRINTR " is burning."
|
||||
?CCL3: ZERO? CONTEXT \FALSE
|
||||
EQUAL? GL-PRSA,V?READ,V?EXAMINE \?CCL10
|
||||
IN? TH-WESTMINSTER-CLUE,CH-PLAYER /?CCL13
|
||||
PRINTR "The paper will not leap into your hand by itself."
|
||||
?CCL13: GETP TH-WESTMINSTER-CLUE,P?FLIPPED
|
||||
ZERO? STACK \?CCL15
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "Mortality, behold and fear!"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "What a change of flesh is here!"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "Think how many royal bones"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "Sleep within this heap of stones:"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "Here they lie, had realms and lands,"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "Who now want strength"
|
||||
ICALL1 RT-WRAP-PRINT
|
||||
PRINTI "to stir their hands."
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINT K-ASTERISK-MSG
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "For two-score years I reigned alone,"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "A virgin queen on England's throne."
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "My navy caused Armada's shame,"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "And with me died the Tudor name."
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINT K-ASTERISK-MSG
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "The apple sorely tempted Eve,"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "And Tell another aimed to cleave."
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "But when one fell, it showed to me,"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "The mighty pull of gravity."
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINT K-ASTERISK-MSG
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "My father, it was said, would die,"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "Beneath the Holy City's sky."
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "Jerusalem his body claimed,"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "And it is after him I'm named."
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINT K-ASTERISK-MSG
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINT K-ASTERISK-MSG
|
||||
CRLF
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "O stately Holmes of England,"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "In Baker Street abide."
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTI "For even you must surely fail,"
|
||||
CRLF
|
||||
ICALL1 RT-INDENT-PRINT
|
||||
PRINTR "To save your country's pride."
|
||||
?CCL15: PRINTR "This side appears to be blank."
|
||||
?CCL10: EQUAL? GL-PRSA,V?LIGHT-WITH,V?BURN-WITH \?CCL17
|
||||
ZERO? GL-NOW-PRSI? \?CCL17
|
||||
FSET? TH-WESTMINSTER-CLUE,FL-LIGHTED \?CCL22
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINTR " is already lit."
|
||||
?CCL22: FSET? GL-PRSI,FL-BURNABLE /?CCL24
|
||||
EQUAL? GL-PRSI,TH-PIPE \FALSE
|
||||
?CCL24: FSET? GL-PRSI,FL-LIGHTED \?PRD30
|
||||
FSET? GL-PRSI,FL-BURNABLE /?CTR27
|
||||
?PRD30: EQUAL? GL-PRSI,TH-PIPE \?CCL28
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \?CCL28
|
||||
?CTR27: ICALL2 RT-CTHEO-PRINT,TH-WESTMINSTER-CLUE
|
||||
PRINTI " lights up."
|
||||
CRLF
|
||||
FSET TH-WESTMINSTER-CLUE,FL-LIGHTED
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,3,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-CLUE-OUT,STACK
|
||||
RTRUE
|
||||
?CCL28: ICALL1 RT-CTHEI-PRINT
|
||||
ICALL2 RT-ISNT-ARENT-MSG,GL-PRSI
|
||||
PRINTR "burning."
|
||||
?CCL17: EQUAL? GL-PRSA,V?FLIP \?CCL36
|
||||
IN? TH-WESTMINSTER-CLUE,GL-WINNER /?CCL39
|
||||
ICALL RT-CYOU-MSG,STR?228,STR?229
|
||||
PRINTI "not holding "
|
||||
ICALL2 RT-THEO-PRINT,TH-WESTMINSTER-CLUE
|
||||
PRINTR "."
|
||||
?CCL39: GETP TH-WESTMINSTER-CLUE,P?FLIPPED
|
||||
SUB 1,STACK
|
||||
PUTP TH-WESTMINSTER-CLUE,P?FLIPPED,STACK
|
||||
ICALL RT-CYOU-MSG,STR?804,STR?805
|
||||
ICALL2 RT-THEO-PRINT,TH-WESTMINSTER-CLUE
|
||||
PRINTR " over."
|
||||
?CCL36: EQUAL? GL-PRSA,V?LOOK-THRU \FALSE
|
||||
EQUAL? GL-PRSI,TH-MAGNIFYING-GLASS \FALSE
|
||||
PRINTR "It's been wiped clean."
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-WAX-HEAD,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-SDESC \?CCL3
|
||||
FSET? TH-WAX-HEAD,FL-BROKEN \?CCL6
|
||||
PRINTI "wax pool"
|
||||
RTRUE
|
||||
?CCL6: PRINTI "wax head"
|
||||
RTRUE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-DESCFCN \?CCL8
|
||||
FSET? TH-WAX-HEAD,FL-BROKEN \FALSE
|
||||
FIRST? TH-WAX-HEAD /FALSE
|
||||
PRINTI "Looks like any other "
|
||||
ICALL2 DPRINT,TH-WAX-HEAD
|
||||
PRINTR "."
|
||||
?CCL8: FSET? TH-WAX-HEAD,FL-BROKEN /FALSE
|
||||
IN? TH-WAX-HEAD,TH-CHARLES-STATUE \?CCL18
|
||||
EQUAL? GL-PRSA,V?TAKE,V?UNSCREW-FROM \?CCL21
|
||||
MOVE TH-WAX-HEAD,GL-WINNER
|
||||
FSET TH-WAX-HEAD,FL-SEEN
|
||||
FCLEAR TH-WAX-HEAD,FL-NODESC
|
||||
FCLEAR TH-WAX-HEAD,FL-NOALL
|
||||
ZERO? GL-P-MULT? /?CCL24
|
||||
PRINTR "Taken."
|
||||
?CCL24: ICALL RT-CYOU-MSG,STR?697,STR?698
|
||||
ICALL2 RT-THEO-PRINT,TH-WAX-HEAD
|
||||
PRINTR "."
|
||||
?CCL21: CALL1 RT-TOUCH-VERB?
|
||||
ZERO? STACK /FALSE
|
||||
FSET TH-WAX-HEAD,FL-SEEN
|
||||
ICALL2 RT-CTHEO-PRINT,TH-WAX-HEAD
|
||||
PRINTI " wobbles slightly."
|
||||
BTST CH-HOLMES-AUX1,1 /?CND27
|
||||
PRINTC 32
|
||||
ICALL2 RT-THEO-PRINT,CH-HOLMES
|
||||
PRINTI " says, ""Even when he was alive, he didn't have his head screwed on right."""
|
||||
BOR CH-HOLMES-AUX1,K-HOLMES-HEAD? >CH-HOLMES-AUX1
|
||||
?CND27: CRLF
|
||||
RTRUE
|
||||
?CCL18: EQUAL? GL-PRSA,V?MELT,V?HEAT \?CCL30
|
||||
ZERO? GL-NOW-PRSI? \?CCL30
|
||||
FSET? GL-PRSI,FL-BURNABLE \?PRD35
|
||||
FSET? GL-PRSI,FL-LIGHTED /?CTR29
|
||||
?PRD35: EQUAL? GL-PRSI,TH-PIPE \?CCL30
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \?CCL30
|
||||
?CTR29: ICALL1 RT-CTHEO-PRINT
|
||||
PRINTI " softens, but "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTR " does not put out enough heat to melt it."
|
||||
?CCL30: EQUAL? GL-PRSA,V?MUNG,V?KILL,V?OPEN \FALSE
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTR "can't break into the head."
|
||||
|
||||
|
||||
.FUNCT DESC-WAX-AX,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-SDESC \?CCL3
|
||||
FSET? TH-WAX-AX,FL-BROKEN \?CCL6
|
||||
PRINTI "melted axe"
|
||||
RTRUE
|
||||
?CCL6: PRINTI "axe"
|
||||
RTRUE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-DESCFCN \FALSE
|
||||
FSET? TH-WAX-AX,FL-BROKEN \FALSE
|
||||
FIRST? TH-WAX-AX /FALSE
|
||||
PRINTI "Looks like any other "
|
||||
ICALL2 DPRINT,TH-WAX-AX
|
||||
PRINTR "."
|
||||
|
||||
|
||||
.FUNCT RT-GUARD-TAKE-ITEM,OBJ1,OBJ2,OBJ3,STR
|
||||
ICALL2 RT-CTHEO-PRINT,CH-TUSSAUDS-GUARD
|
||||
PRINTI " says, ""I'm sorry, but "
|
||||
ICALL2 RT-THEO-PRINT,OBJ1
|
||||
ZERO? OBJ2 /?CCL3
|
||||
ZERO? OBJ3 /?CCL3
|
||||
PRINTI ", "
|
||||
ICALL2 RT-THEO-PRINT,OBJ2
|
||||
PRINTI " and "
|
||||
ICALL2 RT-THEO-PRINT,OBJ3
|
||||
PRINTI " are"
|
||||
SET 'STR,STR?806
|
||||
JUMP ?CND1
|
||||
?CCL3: ZERO? OBJ2 /?CCL7
|
||||
PRINTI " and "
|
||||
ICALL2 RT-THEO-PRINT,OBJ2
|
||||
PRINTI " are"
|
||||
SET 'STR,STR?806
|
||||
JUMP ?CND1
|
||||
?CCL7: PRINTI " is"
|
||||
SET 'STR,STR?807
|
||||
?CND1: PRINTI " not to be removed."" He takes "
|
||||
PRINT STR
|
||||
PRINTI " and returns "
|
||||
PRINT STR
|
||||
PRINTI " to the proper place."
|
||||
CRLF
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-GUARD-STOP-ENTRANCE,OBJ,WHO
|
||||
CALL1 RT-WHO-SAYS? >WHO
|
||||
ICALL SOUNDS,S-BARK,S-START,8,4
|
||||
ICALL2 RT-CTHEO-PRINT,CH-MATCH-SNIFFING-DOG
|
||||
PRINTI " barks loudly and "
|
||||
ICALL2 RT-THEO-PRINT,CH-TUSSAUDS-GUARD
|
||||
PRINTI " says, ""Seeing as how it's you, "
|
||||
EQUAL? WHO,CH-HOLMES \?CCL3
|
||||
PRINTI "Mr Holmes"
|
||||
JUMP ?CND1
|
||||
?CCL3: PRINTI "Doctor Watson"
|
||||
?CND1: PRINTI ", I don't mind letting you in. But as you know we are very afraid of fire here, so we have trained this dog to detect matches or open flames. I'm afraid I can't allow you"
|
||||
EQUAL? WHO,CH-HOLMES,CH-WIGGINS \?CND4
|
||||
PRINTI " or your companion"
|
||||
?CND4: PRINTI " to enter until "
|
||||
ICALL2 RT-THEO-PRINT,OBJ
|
||||
PRINTR " has been discarded."""
|
||||
|
||||
|
||||
.FUNCT RT-EX-RM-EXIT-TUSSAUDS,IN1,IN2,IN3,TORCH
|
||||
EQUAL? GL-PRSO,P?SOUTH,P?OUT \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-MADAME-TUSSAUDS \FALSE
|
||||
CALL RT-META-IN?,TH-TORCH,GL-WINNER
|
||||
ZERO? STACK \?CCL8
|
||||
CALL RT-META-IN?,TH-TORCH,GL-PUPPY
|
||||
ZERO? STACK \?CCL8
|
||||
SET 'IN1,0
|
||||
JUMP ?CND6
|
||||
?CCL8: SET 'TORCH,TH-TORCH
|
||||
SET 'IN1,1
|
||||
?CND6: CALL RT-META-IN?,TH-WAX-HEAD,GL-WINNER >IN2
|
||||
ZERO? IN2 \?PEN11
|
||||
CALL RT-META-IN?,TH-WAX-HEAD,GL-PUPPY >IN2
|
||||
?PEN11: CALL RT-META-IN?,TH-WAX-AX,GL-WINNER >IN3
|
||||
ZERO? IN3 \?PEN14
|
||||
CALL RT-META-IN?,TH-WAX-AX,GL-PUPPY >IN3
|
||||
?PEN14: ZERO? IN1 /?CCL19
|
||||
ZERO? IN2 /?CCL19
|
||||
ZERO? IN3 /?CCL19
|
||||
ICALL RT-GUARD-TAKE-ITEM,TH-TORCH,TH-WAX-HEAD,TH-WAX-AX
|
||||
JUMP ?CND17
|
||||
?CCL19: ZERO? IN1 /?CCL24
|
||||
ZERO? IN2 /?CCL24
|
||||
ICALL RT-GUARD-TAKE-ITEM,TH-TORCH,TH-WAX-HEAD
|
||||
JUMP ?CND17
|
||||
?CCL24: ZERO? IN1 /?CCL28
|
||||
ZERO? IN3 /?CCL28
|
||||
ICALL RT-GUARD-TAKE-ITEM,TH-TORCH,TH-WAX-AX
|
||||
JUMP ?CND17
|
||||
?CCL28: ZERO? IN2 /?CCL32
|
||||
ZERO? IN3 /?CCL32
|
||||
ICALL RT-GUARD-TAKE-ITEM,TH-WAX-HEAD,TH-WAX-AX
|
||||
JUMP ?CND17
|
||||
?CCL32: ZERO? IN1 /?CCL36
|
||||
ICALL2 RT-GUARD-TAKE-ITEM,TH-TORCH
|
||||
JUMP ?CND17
|
||||
?CCL36: ZERO? IN2 /?CCL38
|
||||
ICALL2 RT-GUARD-TAKE-ITEM,TH-WAX-HEAD
|
||||
JUMP ?CND17
|
||||
?CCL38: ZERO? IN3 /?CND17
|
||||
ICALL2 RT-GUARD-TAKE-ITEM,TH-WAX-AX
|
||||
?CND17: ZERO? IN1 /?CND40
|
||||
MOVE TORCH,TH-FAWKES-STATUE
|
||||
FSET TORCH,FL-NODESC
|
||||
FSET? TORCH,FL-LIGHTED \?CND40
|
||||
ICALL2 RT-ALARM-CLR,RT-I-TORCH-OUT
|
||||
ICALL1 RT-I-TORCH-OUT
|
||||
FSET TH-TORCH,FL-NODESC
|
||||
?CND40: ZERO? IN2 /?CND44
|
||||
MOVE TH-WAX-HEAD,TH-CHARLES-STATUE
|
||||
FSET TH-WAX-HEAD,FL-NODESC
|
||||
?CND44: ZERO? IN3 /?CND46
|
||||
MOVE TH-WAX-AX,TH-CHARLES-STATUE
|
||||
FSET TH-WAX-AX,FL-NODESC
|
||||
?CND46: RETURN RM-MARYLEBONE-RD
|
||||
|
||||
|
||||
.FUNCT RT-EX-RM-MATCH-SNIFFING-DOG,OBJ,FLAME?,FIRST,LAMP?,MATCH?
|
||||
SET 'FIRST,TRUE-VALUE
|
||||
EQUAL? GL-PRSO,P?NORTH,P?IN \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-MARYLEBONE-RD \FALSE
|
||||
?PRG6: FIRST? GL-WINNER >OBJ /?PRG9
|
||||
?PRG9: ZERO? OBJ /?REP10
|
||||
FSET? OBJ,FL-BURNABLE \?CND11
|
||||
FSET? OBJ,FL-LIGHTED \?CND11
|
||||
EQUAL? OBJ,TH-TOBACCO /?CND11
|
||||
SET 'FLAME?,OBJ
|
||||
?REP10: ZERO? FLAME? \?REP7
|
||||
ZERO? FIRST /?REP7
|
||||
ZERO? GL-PUPPY /?REP7
|
||||
FIRST? GL-PUPPY >OBJ /?BOGUS25
|
||||
?BOGUS25: SET 'FIRST,FALSE-VALUE
|
||||
JUMP ?PRG6
|
||||
?CND11: NEXT? OBJ >OBJ /?PRG9
|
||||
JUMP ?PRG9
|
||||
?REP7: CALL RT-META-IN?,TH-MATCH,CH-PLAYER
|
||||
ZERO? STACK \?PRD32
|
||||
CALL RT-META-IN?,TH-MATCH,GL-PUPPY
|
||||
ZERO? STACK /?PST31
|
||||
?PRD32: FSET? TH-MATCH,FL-BURNABLE /?PST36
|
||||
FSET? TH-MATCH,FL-LIGHTED /?PRD38
|
||||
PUSH 0
|
||||
JUMP ?PRD39
|
||||
?PRD38: PUSH 1
|
||||
?PRD39: SET 'MATCH?,STACK
|
||||
JUMP ?PEN30
|
||||
?PST36: SET 'MATCH?,1
|
||||
JUMP ?PEN30
|
||||
?PST31: SET 'MATCH?,0
|
||||
?PEN30: ZERO? MATCH? \?CCL27
|
||||
CALL RT-META-IN?,TH-LAMP,CH-PLAYER >LAMP?
|
||||
ZERO? LAMP? \?PEN41
|
||||
CALL RT-META-IN?,TH-LAMP,GL-PUPPY >LAMP?
|
||||
?PEN41: ZERO? LAMP? \?CCL27
|
||||
ZERO? FLAME? /?CND26
|
||||
?CCL27: ZERO? FLAME? /?CCL46
|
||||
SET 'OBJ,FLAME?
|
||||
JUMP ?CND44
|
||||
?CCL46: ZERO? LAMP? /?CCL48
|
||||
SET 'OBJ,TH-LAMP
|
||||
JUMP ?CND44
|
||||
?CCL48: ZERO? MATCH? \?CCL50
|
||||
SET 'OBJ,0
|
||||
JUMP ?CND44
|
||||
?CCL50: SET 'OBJ,TH-MATCH
|
||||
?CND44: ICALL2 RT-GUARD-STOP-ENTRANCE,OBJ
|
||||
RFALSE
|
||||
?CND26: FSET? TH-WAX-HEAD,FL-BROKEN /?CCL52
|
||||
FSET? TH-WAX-AX,FL-BROKEN /?CCL52
|
||||
RETURN RM-MADAME-TUSSAUDS
|
||||
?CCL52: PRINTI "The guard blocks your path and says, ""Oh no you don't, laddie. When I let you in earlier you made a proper mess of my museum. I won't let you do that again."" After you promise to pay for the damage and plead with him for a few moments, he finally steps aside."
|
||||
CRLF
|
||||
CRLF
|
||||
RETURN RM-MADAME-TUSSAUDS
|
||||
|
||||
|
||||
.FUNCT RT-PUT-OUT,THING
|
||||
FSET? THING,FL-BURNABLE \FALSE
|
||||
FSET? THING,FL-LIGHTED \FALSE
|
||||
EQUAL? THING,TH-MATCH \?CCL7
|
||||
ICALL2 RT-ALARM-CLR,RT-I-MATCH-OUT
|
||||
CALL1 RT-I-MATCH-OUT
|
||||
RSTACK
|
||||
?CCL7: EQUAL? THING,TH-PIPE \?CCL9
|
||||
ICALL2 RT-ALARM-CLR,RT-I-PIPE-OUT
|
||||
CALL1 RT-I-PIPE-OUT
|
||||
RSTACK
|
||||
?CCL9: EQUAL? THING,TH-TORCH \?CCL11
|
||||
ICALL2 RT-ALARM-CLR,RT-I-TORCH-OUT
|
||||
CALL1 RT-I-TORCH-OUT
|
||||
RSTACK
|
||||
?CCL11: EQUAL? THING,TH-NEWSPAPER \?CCL13
|
||||
ICALL2 RT-ALARM-CLR,RT-I-NEWSPAPER-OUT
|
||||
CALL1 RT-I-NEWSPAPER-OUT
|
||||
RSTACK
|
||||
?CCL13: EQUAL? THING,TH-WESTMINSTER-CLUE \?CCL15
|
||||
ICALL2 RT-ALARM-CLR,RT-I-CLUE-OUT
|
||||
CALL1 RT-I-CLUE-OUT
|
||||
RSTACK
|
||||
?CCL15: EQUAL? THING,TH-MAIL \?CCL17
|
||||
ICALL2 RT-ALARM-CLR,RT-I-MAIL-OUT
|
||||
CALL1 RT-I-MAIL-OUT
|
||||
RSTACK
|
||||
?CCL17: EQUAL? THING,TH-MATCHBOOK \?CCL19
|
||||
ICALL2 RT-ALARM-CLR,RT-I-MATCHBOOK-OUT
|
||||
CALL1 RT-I-MATCHBOOK-OUT
|
||||
RSTACK
|
||||
?CCL19: REMOVE THING
|
||||
FCLEAR THING,FL-WORN
|
||||
FCLEAR THING,FL-LIGHTED
|
||||
FCLEAR THING,FL-BURNABLE
|
||||
ICALL2 RT-CTHEO-PRINT,THING
|
||||
PRINTI " burn"
|
||||
ICALL2 RT-S-NOS-MSG,THING
|
||||
PRINTR " up and disappears."
|
||||
|
||||
|
||||
.FUNCT RT-I-MATCH-OUT,RESULT
|
||||
CALL2 RT-VISIBLE?,TH-MATCH
|
||||
ZERO? STACK /?CND1
|
||||
CRLF
|
||||
ICALL2 RT-CTHEO-PRINT,TH-MATCH
|
||||
PRINTI " flickers and dies."
|
||||
CRLF
|
||||
SET 'RESULT,TRUE-VALUE
|
||||
?CND1: FCLEAR TH-MATCH,FL-LIGHTED
|
||||
ICALL1 BURN-MATCH-OUT
|
||||
RETURN RESULT
|
||||
|
||||
|
||||
.FUNCT BURN-MATCH-OUT
|
||||
FCLEAR TH-MATCH,FL-BURNABLE
|
||||
FSET TH-MATCH,FL-BROKEN
|
||||
GETPT TH-MATCH,P?ADJECTIVE
|
||||
PUT STACK,0,W?BURNT
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-I-PIPE-OUT,RESULT
|
||||
CALL2 RT-VISIBLE?,TH-TOBACCO
|
||||
ZERO? STACK /?CND1
|
||||
CRLF
|
||||
ICALL2 RT-CTHEO-PRINT,TH-PIPE
|
||||
PRINTI " has gone out."
|
||||
CRLF
|
||||
?CND1: FCLEAR TH-TOBACCO,FL-LIGHTED
|
||||
FCLEAR TH-TOBACCO,FL-BURNABLE
|
||||
REMOVE TH-TOBACCO
|
||||
RETURN RESULT
|
||||
|
||||
|
||||
.FUNCT RT-I-TORCH-OUT,RESULT
|
||||
CALL2 RT-VISIBLE?,TH-TORCH
|
||||
ZERO? STACK /?CND1
|
||||
CRLF
|
||||
ICALL2 RT-CTHEO-PRINT,TH-TORCH
|
||||
PRINTI " sputters and dies."
|
||||
CRLF
|
||||
SET 'RESULT,TRUE-VALUE
|
||||
?CND1: ICALL2 CLEAR-ALL-FLAGS,TH-TORCH
|
||||
GETPT TH-TORCH,P?ADJECTIVE
|
||||
PUT STACK,0,W?BURNT
|
||||
FSET TH-TORCH,FL-TAKEABLE
|
||||
FSET TH-TORCH,FL-BROKEN
|
||||
RETURN RESULT
|
||||
|
||||
|
||||
.FUNCT RT-I-NEWSPAPER-OUT,RESULT
|
||||
CALL2 RT-VISIBLE?,TH-NEWSPAPER
|
||||
ZERO? STACK /?CND1
|
||||
CRLF
|
||||
ICALL2 RT-CTHEO-PRINT,TH-NEWSPAPER
|
||||
PRINTI " disappears into a cloud of fine ash, which itself disappears."
|
||||
CRLF
|
||||
SET 'RESULT,TRUE-VALUE
|
||||
?CND1: FCLEAR TH-NEWSPAPER,FL-LIGHTED
|
||||
FCLEAR TH-NEWSPAPER,FL-BURNABLE
|
||||
REMOVE TH-NEWSPAPER
|
||||
RETURN RESULT
|
||||
|
||||
|
||||
.FUNCT RT-I-CLUE-OUT,RESULT
|
||||
CALL2 RT-VISIBLE?,TH-WESTMINSTER-CLUE
|
||||
ZERO? STACK /?CND1
|
||||
CRLF
|
||||
ICALL2 RT-CTHEO-PRINT,TH-WESTMINSTER-CLUE
|
||||
PRINTI " disappears in a puff of oily black smoke."
|
||||
CRLF
|
||||
SET 'RESULT,TRUE-VALUE
|
||||
?CND1: FCLEAR TH-WESTMINSTER-CLUE,FL-LIGHTED
|
||||
FCLEAR TH-WESTMINSTER-CLUE,FL-BURNABLE
|
||||
REMOVE TH-WESTMINSTER-CLUE
|
||||
RETURN RESULT
|
||||
|
||||
|
||||
.FUNCT RT-I-MAIL-OUT,RESULT
|
||||
CALL2 RT-VISIBLE?,TH-MAIL
|
||||
ZERO? STACK /?CND1
|
||||
CRLF
|
||||
ICALL2 RT-CTHEO-PRINT,TH-MAIL
|
||||
PRINTI " disappears in a flash of light."
|
||||
CRLF
|
||||
SET 'RESULT,TRUE-VALUE
|
||||
?CND1: FCLEAR TH-MAIL,FL-LIGHTED
|
||||
FCLEAR TH-MAIL,FL-BURNABLE
|
||||
REMOVE TH-MAIL
|
||||
RETURN RESULT
|
||||
|
||||
|
||||
.FUNCT RT-I-MATCHBOOK-OUT,RESULT
|
||||
CALL2 RT-VISIBLE?,TH-MATCHBOOK
|
||||
ZERO? STACK /?CND1
|
||||
CRLF
|
||||
ICALL2 RT-CTHEO-PRINT,TH-MATCHBOOK
|
||||
PRINTI " burns up and disappears."
|
||||
CRLF
|
||||
SET 'RESULT,TRUE-VALUE
|
||||
?CND1: FCLEAR TH-MATCHBOOK,FL-LIGHTED
|
||||
FCLEAR TH-MATCHBOOK,FL-BURNABLE
|
||||
REMOVE TH-MATCHBOOK
|
||||
RETURN RESULT
|
||||
|
||||
|
||||
.FUNCT PRE-LIGHT-WITH
|
||||
EQUAL? GL-PRSO,TH-MATCH,TH-TOBACCO /FALSE
|
||||
IN? GL-PRSO,GL-WINNER /FALSE
|
||||
ICALL1 RT-CYOU-MSG
|
||||
ICALL RT-WOULD-HAVE-TO-MSG,STR?738,GL-PRSO
|
||||
PRINTI " to light "
|
||||
ICALL2 RT-SAY-HIM-HER-THEM-IT-MSG,GL-PRSO
|
||||
PRINTR "."
|
||||
|
||||
|
||||
.FUNCT RT-GN-WAX,TBL,LEN
|
||||
PUTP PSEUDO-OBJECT,P?ACTION,RT-DF-LG-WAX-STATUES
|
||||
SET 'LAST-PSEUDO-LOC,GL-PLACE-CUR
|
||||
RETURN PSEUDO-OBJECT
|
||||
|
||||
.ENDI
|
943
charles.zil
Normal file
943
charles.zil
Normal file
|
@ -0,0 +1,943 @@
|
|||
;*****************************************************************************
|
||||
; "game : SHERLOCK!"
|
||||
; "file : CHARLES.ZIL"
|
||||
; "auth : $Author: RAB $"
|
||||
; "date : $Date: 28 Oct 1987 19:34:20 $"
|
||||
; "rev : $Revision: 1.76 $"
|
||||
; "vers : 1.00"
|
||||
;*****************************************************************************
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "TH-WAX-HEAD commented out of THINGS1.ZIL"
|
||||
; "TH-WAX-AX commented out of THINGS1.ZIL"
|
||||
; "TH-EMERALD commented out of THINGS1.ZIL"
|
||||
; "TH-TORCH commented out of THINGS1.ZIL"
|
||||
; "TH-TOBACCO commented out of THINGS1.ZIL"
|
||||
;-----------------------------------------------------------------------------
|
||||
; "RT-AC-TH-MATCH commented out of THINGS2.ZIL"
|
||||
; "RT-AC-TH-TORCH commented out of THINGS2.ZIL"
|
||||
; "RT-AC-TH-TOBACCO commented out of THINGS2.ZIL"
|
||||
; "RT-AC-TH-PIPE commented out of THINGS2.ZIL"
|
||||
; "RT-AC-TH-MAIL commented out of THINGS2.ZIL"
|
||||
; "RT-AC-TH-NEWSPAPER commented out of THINGS2.ZIL"
|
||||
; "RT-AC-TH-WESTMINSTER-CLUE commented out of THINGS2.ZIL"
|
||||
;-----------------------------------------------------------------------------
|
||||
; "RT-DF-TH-MAIL commented out of THINGS3.ZIL"
|
||||
; "RT-DF-TH-NEWSPAPER commented out of THINGS3.ZIL"
|
||||
; "RT-DF-TH-WESTMINSTER-CLUE commented out of THINGS3.ZIL"
|
||||
; "RT-DF-TH-TOBACCO commented out of THINGS3.ZIL"
|
||||
; "RT-DF-TH-PIPE commented out of THINGS3.ZIL"
|
||||
; "RT-DF-TH-MATCH commented out of THINGS3.ZIL"
|
||||
; "RT-DF-TH-TORCH commented out of THINGS3.ZIL"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<OBJECT TH-WAX-HEAD
|
||||
(LOC TH-CHARLES-STATUE)
|
||||
(FLAGS FL-TAKEABLE FL-TRYTAKE FL-NODESC FL-NOALL FL-HAS-SDESC
|
||||
FL-HAS-DESCFCN)
|
||||
(SYNONYM HEAD WAX)
|
||||
(ADJECTIVE HEAD WAX)
|
||||
(SIZE 1 CAPACITY 1 MASS 0)
|
||||
(GENERIC RT-GN-WAX)
|
||||
(ACTION RT-AC-TH-WAX-HEAD)>
|
||||
|
||||
<VOC "POOL" NOUN>
|
||||
<VOC "POOL" ADJ>
|
||||
|
||||
<OBJECT TH-WAX-AX
|
||||
(LOC TH-CHARLES-STATUE)
|
||||
;(DESC "axe")
|
||||
(FLAGS FL-TAKEABLE FL-VOWEL FL-NODESC FL-NOALL FL-WEAPON
|
||||
FL-HAS-DESCFCN FL-HAS-SDESC)
|
||||
(SYNONYM BLADE AX AXE WAX)
|
||||
(ADJECTIVE WAX WAX)
|
||||
(SIZE 12 CAPACITY 0 MASS 0)
|
||||
(GENERIC RT-GN-WAX)
|
||||
(ACTION DESC-WAX-AX)>
|
||||
|
||||
<VOC "MELTED" ADJ>
|
||||
|
||||
<OBJECT TH-EMERALD
|
||||
(FLAGS FL-READABLE FL-TAKEABLE FL-VOWEL FL-SURFACE FL-MONEY
|
||||
FL-HAS-DESCFCN FL-HAS-SDESC FL-NEEDS-IDENTITY FL-LOSE-IDENTITY)
|
||||
(OBJ-ADJ 0)
|
||||
(OBJ-NOUN 0)
|
||||
(SYNONYM EMERALD GEM GEMS SCRATCH)
|
||||
(ADJECTIVE GREEN EMERALD EMERALD\'S)
|
||||
(VALUE 5)
|
||||
(SIZE 1 MASS 1 CAPACITY 1)
|
||||
(GENERIC RT-GN-GEM)
|
||||
(ACTION RT-AC-TH-EMERALD)>
|
||||
|
||||
<OBJECT TH-TORCH
|
||||
(LOC TH-FAWKES-STATUE)
|
||||
;(DESC "torch")
|
||||
(FLAGS FL-BURNABLE FL-TAKEABLE FL-NODESC FL-NOALL FL-HAS-SDESC
|
||||
FL-HAS-DESCFCN)
|
||||
(SYNONYM TORCH)
|
||||
(ADJECTIVE ZZZP)
|
||||
(SIZE 1)
|
||||
(ACTION RT-AC-TH-TORCH)>
|
||||
|
||||
<VOC "BURNT" ADJ>
|
||||
|
||||
<OBJECT TH-TOBACCO
|
||||
(LOC TH-PERSIAN-SLIPPER)
|
||||
(DESC "tobacco")
|
||||
(FLAGS FL-TAKEABLE FL-BURNABLE FL-PLURAL FL-COLLECTIVE FL-NOALL
|
||||
FL-HAS-DESCFCN)
|
||||
(SYNONYM TOBACCO SHAG)
|
||||
(ADJECTIVE SHAG)
|
||||
(VALUE 1)
|
||||
(SIZE 1)
|
||||
(ACTION RT-AC-TH-TOBACCO)>
|
||||
|
||||
<ROUTINE BURN-OUT-MATCH ()
|
||||
<FCLEAR ,TH-MATCH ,FL-BURNABLE>
|
||||
<CLEAR-ALL-FLAGS ,TH-MATCH>
|
||||
<FSET ,TH-MATCH ,FL-TAKEABLE>
|
||||
<FSET ,TH-MATCH ,FL-BROKEN>>
|
||||
|
||||
<ROUTINE RT-AC-TH-MATCH ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-MATCH">>
|
||||
<COND (<==? .CONTEXT ,K-M-SDESC>
|
||||
<COND (<FSET? ,TH-MATCH ,FL-BROKEN>
|
||||
<TELL "burnt match">)
|
||||
(T
|
||||
<TELL "match">)>)
|
||||
(<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<FSET? ,TH-MATCH ,FL-BROKEN>
|
||||
<RFALSE>)
|
||||
(<MC-IS? ,TH-MATCH ,FL-LIGHTED>
|
||||
<TELL CTHE ,TH-MATCH " is burning." CR>)
|
||||
(T <RFALSE>)>)
|
||||
(<MC-T? .CONTEXT> <RFALSE>)
|
||||
(<FSET? ,TH-MATCH ,FL-BROKEN>
|
||||
<COND (<MC-VERB? LAMP-OFF LIGHT STRIKE BURN-WITH LIGHT-WITH>
|
||||
<TELL "The match is already burned out." CR>)>)
|
||||
(<AND <MC-VERB? LIGHT-WITH BURN-WITH STRIKE LIGHT>
|
||||
<MC-PRSO? ,TH-MATCH>>
|
||||
<COND (<MC-IS? ,TH-MATCH ,FL-LIGHTED>
|
||||
<TELL CTHEO " is already lit." CR>)
|
||||
(<MC-ISNOT? ,TH-MATCH ,FL-BURNABLE>
|
||||
<TELL CTHEO " is burned out." CR>)
|
||||
(<OR <MC-PRSI? ,TH-HANDS <>>
|
||||
<AND <MC-IS? ,GL-PRSI ,FL-LIGHTED>
|
||||
<MC-IS? ,GL-PRSI ,FL-BURNABLE>>>
|
||||
<MC-MAKE ,TH-MATCH ,FL-LIGHTED>
|
||||
<RT-ALARM-SET-REL ,RT-I-MATCH-OUT
|
||||
<RT-PARM-SET 0 2 0>>
|
||||
<MOVE ,TH-MATCH ,GL-WINNER>
|
||||
<TELL CTHEO " flares to life." CR>)>)
|
||||
(<MC-VERB? LAMP-OFF>
|
||||
<COND (<MC-ISNOT? ,TH-MATCH ,FL-LIGHTED>
|
||||
<TELL CTHEO " isn't lit." CR>)
|
||||
(T
|
||||
<MC-UNMAKE ,TH-MATCH ,FL-LIGHTED>
|
||||
;<MC-UNMAKE ,TH-MATCH ,FL-BURNABLE>
|
||||
<BURN-OUT-MATCH>
|
||||
;<MOVE ,TH-BURNT-MATCH <LOC ,TH-MATCH>>
|
||||
;<REMOVE ,TH-MATCH>
|
||||
<RT-ALARM-CLR ,RT-I-MATCH-OUT>
|
||||
<RT-CYOU-MSG "blow" "blows">
|
||||
<TELL "out the match." CR>)>)>>
|
||||
|
||||
<ROUTINE CLEAR-ALL-FLAGS (OBJ)
|
||||
<REPEAT ((N 1))
|
||||
<COND (<NOT <EQUAL? .N ,FL-HAS-SDESC ,FL-HAS-DESCFCN ,FL-NEEDS-IDENTITY
|
||||
,FL-LOSE-IDENTITY>>
|
||||
<FCLEAR .OBJ .N>)>
|
||||
<COND (<G? <SET N <+ .N 1>> 48> <RETURN>)>>>
|
||||
|
||||
<ROUTINE RT-AC-TH-TORCH ("OPTIONAL" (CONTEXT <>) "AUX" WHO)
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-TORCH">>
|
||||
<COND (<==? .CONTEXT ,K-M-SDESC>
|
||||
<COND (<FSET? ,TH-TORCH ,FL-BROKEN>
|
||||
<TELL "burnt torch">)
|
||||
(T
|
||||
<TELL "torch">)>)
|
||||
(<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<FSET? ,TH-TORCH ,FL-BROKEN>
|
||||
<RFALSE>)
|
||||
(<MC-IS? ,TH-TORCH ,FL-LIGHTED>
|
||||
<TELL CTHE ,TH-TORCH " is burning." CR>
|
||||
<RTRUE>)>
|
||||
<RFALSE>)
|
||||
(<FSET? ,TH-TORCH ,FL-BROKEN>
|
||||
<RFALSE>
|
||||
;<RT-AC-TH-BURNT-TORCH .CONTEXT>)
|
||||
(<AND <MC-VERB? MELT HEAT LIGHT-WITH BURN-WITH>
|
||||
<MC-PRSI? ,TH-TORCH>>
|
||||
<COND (<MC-ISNOT? ,TH-TORCH ,FL-LIGHTED>
|
||||
<TELL CTHE ,TH-TORCH " is not lit." CR>)
|
||||
(<MC-PRSO? ,TH-TORCH>
|
||||
<TELL CTHEO " is already lit." CR>)
|
||||
(<MC-PRSO? ,TH-WAX-HEAD>
|
||||
;<REMOVE ,TH-WAX-HEAD>
|
||||
;<MOVE ,TH-WAX-POOL ,GL-PLACE-CUR>
|
||||
<TELL
|
||||
CTHEO " melts into a pool of wax on the floor. You see
|
||||
a gem glittering in the wax." CR>
|
||||
<MOVE ,TH-WAX-HEAD ,GL-PLACE-CUR>
|
||||
<MOVE ,TH-EMERALD ,TH-WAX-HEAD>
|
||||
<CLEAR-ALL-FLAGS ,TH-WAX-HEAD>
|
||||
<FSET ,TH-WAX-HEAD ,FL-OPENED>
|
||||
<FSET ,TH-WAX-HEAD ,FL-TRANSPARENT>
|
||||
<FSET ,TH-WAX-HEAD ,FL-CONTAINER>
|
||||
<FSET ,TH-WAX-HEAD ,FL-BROKEN>
|
||||
<SET-MASS-TO-ONE ,TH-WAX-HEAD>
|
||||
<PUT <GETPT ,TH-WAX-HEAD ,P?SYNONYM> 0 ,W?POOL>
|
||||
<PUT <GETPT ,TH-WAX-HEAD ,P?ADJECTIVE> 0 ,W?POOL>
|
||||
<RT-THIS-IS-IT ,TH-EMERALD>)
|
||||
(<MC-PRSO? ,TH-WAX-AX>
|
||||
;<REMOVE ,TH-WAX-AX>
|
||||
;<MOVE ,TH-MELTED-AX ,GL-PLACE-CUR>
|
||||
<TELL CTHEO " melts into a pool of wax on the floor." CR>
|
||||
<MOVE ,TH-WAX-AX ,GL-PLACE-CUR>
|
||||
<CLEAR-ALL-FLAGS ,TH-WAX-AX>
|
||||
<FSET ,TH-WAX-AX ,FL-OPENED>
|
||||
<FSET ,TH-WAX-AX ,FL-TRANSPARENT>
|
||||
<FSET ,TH-WAX-AX ,FL-CONTAINER>
|
||||
<FSET ,TH-WAX-AX ,FL-BROKEN>
|
||||
<SET-SIZE-TO-ONE ,TH-WAX-AX>
|
||||
<SET-CAPACITY-TO-ONE ,TH-WAX-AX>
|
||||
<SET-MASS-TO-ONE ,TH-WAX-AX>
|
||||
<PUT <GETPT ,TH-WAX-AX ,P?SYNONYM> 0 ,W?AX>
|
||||
<PUT <GETPT ,TH-WAX-AX ,P?ADJECTIVE> 0 ,W?MELTED>)
|
||||
(<MC-ISNOT? ,GL-PRSO ,FL-BURNABLE>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "cannot " VW " " THEO " with " THEI "." CR>)>)
|
||||
(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
|
||||
<MC-PRSO? ,TH-TORCH>>
|
||||
<COND (<AND <MC-PRSI? ,TH-TOBACCO ,TH-PIPE>
|
||||
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>
|
||||
<TELL CTHEI>
|
||||
<RT-DONT-DOESNT-MSG ,GL-PRSI>
|
||||
<TELL "put out enough heat to light " THEO "." CR>)
|
||||
(<MC-ISNOT? ,GL-PRSI ,FL-BURNABLE>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "cannot light " THEO " with " THEI "." CR>)
|
||||
(<MC-ISNOT? ,GL-PRSI ,FL-LIGHTED>
|
||||
<TELL CTHEI>
|
||||
<RT-ISNT-ARENT-MSG ,GL-PRSI>
|
||||
<TELL "burning." CR>)
|
||||
(T
|
||||
<TELL CTHEO " catches fire quickly." CR>
|
||||
<MC-MAKE ,TH-TORCH ,FL-LIGHTED>
|
||||
<RT-ALARM-SET-REL ,RT-I-TORCH-OUT <RT-PARM-SET 1 0 0>>
|
||||
<SET WHO <RT-WHO-SAYS?>>
|
||||
<COND (<EQUAL? .WHO ,CH-HOLMES>
|
||||
<TELL CR
|
||||
"Holmes looks at you and says, \"An ingenious solution, Watson. My
|
||||
compliments, old chap.\"" CR>)>
|
||||
<RT-UPDATE-SCORE 4>)>)>>
|
||||
|
||||
<ROUTINE RT-LIGHT-PIPE (FIRE)
|
||||
<COND (<MC-ISNOT? .FIRE ,FL-BURNABLE>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "cannot light " THEO " with " THEI "." CR>)
|
||||
(<MC-ISNOT? .FIRE ,FL-LIGHTED>
|
||||
<TELL CTHE .FIRE " is not burning." CR>)
|
||||
(<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<TELL CTHEO " is already lit." CR>)
|
||||
(<IN? ,TH-TOBACCO ,TH-PIPE>
|
||||
<MC-MAKE ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<RT-ALARM-SET-REL ,RT-I-PIPE-OUT <RT-PARM-SET 0 15 0>>
|
||||
<TELL "After a few puffs, " THEO " fires right up." CR>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-TOBACCO ("OPTIONAL" (CONTEXT <>) "AUX" I)
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-TOBACCO">>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<TELL CTHE ,TH-TOBACCO " is burning." CR>)
|
||||
(T
|
||||
<TELL "It's Holmes's favorite brand of shag tobacco." CR>)>
|
||||
<RTRUE>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<SETG GL-P-IT-OBJECT ,TH-TOBACCO>)>
|
||||
<COND (<AND <MC-VERB? LIGHT-WITH BURN-WITH>
|
||||
<MC-PRSO? ,TH-TOBACCO>>
|
||||
<COND (<MC-PRSI? <> ,TH-HANDS>
|
||||
<SET I ,TH-MATCH>)
|
||||
(T
|
||||
<SET I ,GL-PRSI>)>
|
||||
<COND (<NOT <IN? .I ,GL-WINNER>>
|
||||
<RT-CYOU-MSG "are" "is">
|
||||
<TELL "not holding " A .I "." CR>)
|
||||
(<NOT <IN? ,TH-PIPE ,GL-WINNER>>
|
||||
<RT-CYOU-MSG "are" "is">
|
||||
<TELL "not holding " THE ,TH-PIPE "." CR>)
|
||||
(<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<TELL CTHEO " is already lit." CR>)
|
||||
(<RT-LIGHT-PIPE .I>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<TELL CTHEO " " ,K-SMOULDERS-MSG CR>)>)
|
||||
(<AND <MC-VERB? TAKE TOUCH>
|
||||
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>
|
||||
<TELL "Yeeeeouch! That's hot!" CR>)
|
||||
;(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
|
||||
<MC-PRSI? ,TH-TOBACCO>
|
||||
<MC-IS? ,GL-PRSO ,FL-BURNABLE>>
|
||||
<COND (<MC-PRSO? ,TH-TORCH>
|
||||
<RFALSE>)
|
||||
(<MC-ISNOT? ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<TELL CTHEI " is not lit." CR>)
|
||||
(<MC-IS? ,GL-PRSO ,FL-LIGHTED>
|
||||
<TELL CTHEO " is already burning." CR>)
|
||||
(<MC-PRSO? ,TH-NEWSPAPER ,TH-WESTMINSTER-CLUE ,TH-MAIL>
|
||||
<TELL CTHEO " lights right up." CR>
|
||||
<MC-MAKE ,GL-PRSO ,FL-LIGHTED>
|
||||
<COND (<MC-PRSO? ,TH-NEWSPAPER>
|
||||
<RT-ALARM-SET-REL ,RT-I-NEWSPAPER-OUT <RT-PARM-SET 0 3 0>>)
|
||||
(<MC-PRSO? ,TH-WESTMINSTER-CLUE>
|
||||
<RT-ALARM-SET-REL ,RT-I-CLUE-OUT <RT-PARM-SET 0 3 0>>)
|
||||
(<MC-PRSO? ,TH-MAIL>
|
||||
<RT-ALARM-SET-REL ,RT-I-MAIL-OUT <RT-PARM-SET 0 3 0>>)>)
|
||||
(T
|
||||
<TELL "Unfortunately, " THEI " doesn't put out enough heat to light " THEO "." CR>)>)
|
||||
(<MC-VERB? SMOKE>
|
||||
<COND (<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<TELL ,K-BRAND-MSG CR>)
|
||||
(T
|
||||
<TELL CTHEO " is not lit." CR>)>)
|
||||
(<MC-VERB? SMELL>
|
||||
<TELL "The shag has a strong, but pleasant smell." CR>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-PIPE ("OPTIONAL" (CONTEXT <>) "AUX" I DEST)
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-PIPE">>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<AND <MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<IN? ,TH-TOBACCO ,TH-PIPE>>
|
||||
<TELL "Smoke gently wafts from " THE ,TH-PIPE "." CR>)
|
||||
(T
|
||||
<TELL "It is an old and oily black clay pipe, the companion of Holmes's deepest meditations." CR>)>)
|
||||
(<MC-T? .CONTEXT> <RFALSE>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? LIGHT-WITH BURN-WITH>
|
||||
<COND (<MC-PRSI? <> ,TH-HANDS>
|
||||
<SET I ,TH-MATCH>)
|
||||
(T
|
||||
<SET I ,GL-PRSI>)>
|
||||
<COND (<NOT <IN? .I ,GL-WINNER>>
|
||||
<RT-CYOU-MSG "are" "is">
|
||||
<TELL "not holding " A .I "." CR>)
|
||||
(<NOT <IN? ,TH-PIPE ,GL-WINNER>>
|
||||
<RT-CYOU-MSG "are" "is">
|
||||
<TELL "not holding " THE ,TH-PIPE "." CR>)
|
||||
(<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<TELL CTHEO " is already lit." CR>)
|
||||
(<RT-LIGHT-PIPE .I>
|
||||
<RTRUE>)
|
||||
;(<FIRST? ,TH-PIPE>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "cannot light " THE <FIRST? ,TH-PIPE>
|
||||
" in " THE ,TH-PIPE "." CR>)
|
||||
(T
|
||||
<TELL "There is nothing in the pipe to light." CR>)>)
|
||||
(<AND <MC-VERB? PUT>
|
||||
<MC-PRSI? ,TH-PLAYER-BODY>
|
||||
<==? <ZGET ,GL-P-NAMW 1> ,W?MOUTH>>
|
||||
<RT-PERFORM ,V?SMOKE ,TH-PIPE>)
|
||||
(<MC-VERB? SMOKE>
|
||||
<COND (<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<TELL ,K-BRAND-MSG CR>)
|
||||
(T
|
||||
<TELL CTHEO " is not lit." CR>)>)
|
||||
(<AND <MC-VERB? EMPTY-INTO POUR>
|
||||
<IN? ,TH-TOBACCO ,TH-PIPE>
|
||||
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>
|
||||
<COND (<MC-VERB? POUR>
|
||||
<MC-UNMAKE ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<MOVE ,TH-TOBACCO ,GL-PLACE-CUR>
|
||||
<TELL CTHE ,TH-TOBACCO " falls ">
|
||||
<COND (<MC-HERE? ,RM-THAMES-ONE ,RM-THAMES-TWO
|
||||
,RM-THAMES-THREE ,RM-THAMES-FOUR
|
||||
,RM-THAMES-FIVE>
|
||||
<REMOVE ,TH-TOBACCO>
|
||||
<TELL "into the water." CR>)
|
||||
(T
|
||||
<TELL "to ">
|
||||
<COND (<MC-IS? ,GL-PLACE-CUR ,FL-INDOORS>
|
||||
<TELL-THE-FLOOR>)
|
||||
(T
|
||||
<TELL-THE-GROUND>)>
|
||||
<TELL ", " ,K-SMOULDERS-MSG CR>)>)
|
||||
(<MC-VERB? EMPTY-INTO>
|
||||
<COND (<RT-ROOM-IN-ON-MSG? ,TH-TOBACCO ,GL-PRSI>
|
||||
<RTRUE>)
|
||||
(<RT-CHECK-MOVE-MSG? ,TH-TOBACCO ,GL-PRSI>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<MC-UNMAKE ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<MOVE ,TH-TOBACCO ,GL-PRSI>
|
||||
<TELL CTHE ,TH-TOBACCO " falls ">
|
||||
<COND (<MC-IS? ,GL-PRSI ,FL-CONTAINER>
|
||||
<TELL "into">)
|
||||
(T
|
||||
<TELL "onto">)>
|
||||
<TELL " " THEI ", " ,K-SMOULDERS-MSG CR>)>)>)>)
|
||||
(<MC-THIS-PRSI?>
|
||||
<COND (<AND <MC-VERB? PUT>
|
||||
<NOT <MC-PRSO? ,TH-TOBACCO>>>
|
||||
<TELL "Putting " THEO " in " THEI " would">
|
||||
<RT-WASTE-OF-TIME-MSG>)
|
||||
(<AND <MC-VERB? POUR-FROM>
|
||||
<MC-PRSO? ,TH-TOBACCO>
|
||||
<IN? ,TH-TOBACCO ,TH-PIPE>
|
||||
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>
|
||||
<MC-UNMAKE ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<MOVE ,TH-TOBACCO ,GL-PLACE-CUR>
|
||||
<TELL CTHEO " falls to ">
|
||||
<COND (<MC-IS? ,GL-PLACE-CUR ,FL-INDOORS>
|
||||
<TELL-THE-FLOOR>)
|
||||
(T
|
||||
<TELL-THE-GROUND>)>
|
||||
<TELL ", " ,K-SMOULDERS-MSG CR>)
|
||||
;(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
|
||||
<MC-THIS-PRSI?>
|
||||
<MC-IS? ,GL-PRSO ,FL-BURNABLE>>
|
||||
<COND (<MC-PRSO? ,TH-TORCH>
|
||||
<RFALSE>)
|
||||
(<MC-ISNOT? ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<TELL CTHEI " is not lit." CR>)
|
||||
(<MC-IS? ,GL-PRSO ,FL-LIGHTED>
|
||||
<TELL CTHEO " is already burning." CR>)
|
||||
(<MC-PRSO? ,TH-NEWSPAPER ,TH-WESTMINSTER-CLUE ,TH-MAIL>
|
||||
<TELL CTHEO " lights right up." CR>
|
||||
<MC-MAKE ,GL-PRSO ,FL-LIGHTED>
|
||||
<COND (<MC-PRSO? ,TH-NEWSPAPER>
|
||||
<RT-ALARM-SET-REL ,RT-I-NEWSPAPER-OUT <RT-PARM-SET 0 3 0>>)
|
||||
(<MC-PRSO? ,TH-WESTMINSTER-CLUE>
|
||||
<RT-ALARM-SET-REL ,RT-I-CLUE-OUT <RT-PARM-SET 0 3 0>>)
|
||||
(<MC-PRSO? ,TH-MAIL>
|
||||
<RT-ALARM-SET-REL ,RT-I-MAIL-OUT <RT-PARM-SET 0 3 0>>)>)
|
||||
(T
|
||||
<TELL "Unfortunately, " THEI " doesn't put out
|
||||
enough heat to light " THEO "." CR>)>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-MAIL ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-MAIL">>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<MC-IS? ,TH-MAIL ,FL-LIGHTED>
|
||||
<TELL CTHE ,TH-MAIL " is burning." CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>)
|
||||
(<MC-T? .CONTEXT> <RFALSE>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<SETG GL-P-IT-OBJECT ,TH-MAIL>)>
|
||||
<COND (<MC-VERB? READ EXAMINE LOOK-ON LOOK-INSIDE OPEN SEARCH OPEN-WITH>
|
||||
<TELL "You should not read other people's mail." CR>)
|
||||
(<MC-VERB? CLOSE>
|
||||
<TELL "The mail hasn't been opened." CR>)
|
||||
(<AND <MC-VERB? TAKE>
|
||||
<T? ,KNIFE-COLD?>>
|
||||
<SETG KNIFE-COLD? <>>
|
||||
<MOVE ,TH-KNIFE ,GL-WINNER>
|
||||
<TELL "[Taking the knife first]">
|
||||
<COND (,GL-P-MULT?
|
||||
<TELL " ">)
|
||||
(T
|
||||
<CRLF>)>
|
||||
<RFALSE>)
|
||||
(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
|
||||
<MC-THIS-PRSO?>>
|
||||
<COND (<MC-IS? ,TH-MAIL ,FL-LIGHTED>
|
||||
<TELL CTHEO " is already lit." CR>)
|
||||
(<AND <MC-ISNOT? ,GL-PRSI ,FL-BURNABLE>
|
||||
<NOT <MC-PRSI? ,TH-PIPE>>>
|
||||
<RFALSE>)
|
||||
(<OR <AND <MC-IS? ,GL-PRSI ,FL-LIGHTED>
|
||||
<MC-IS? ,GL-PRSI ,FL-BURNABLE>>
|
||||
<AND <MC-PRSI? ,TH-PIPE>
|
||||
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>>
|
||||
<TELL CTHE ,TH-MAIL " lights up." CR>
|
||||
<MC-MAKE ,TH-MAIL ,FL-LIGHTED>
|
||||
<RT-ALARM-SET-REL ,RT-I-MAIL-OUT <RT-PARM-SET 0 3 0>>)
|
||||
(T
|
||||
<TELL CTHEI>
|
||||
<RT-ISNT-ARENT-MSG ,GL-PRSI>
|
||||
<TELL "burning." CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-NEWSPAPER ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-NEWSPAPER">>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<MC-IS? ,TH-NEWSPAPER ,FL-LIGHTED>
|
||||
<TELL CTHE ,TH-NEWSPAPER " is burning." CR>)
|
||||
(T
|
||||
<TELL
|
||||
"It's the newspaper that came in your game package."
|
||||
CR>)>
|
||||
<RTRUE>)
|
||||
(<MC-T? .CONTEXT> <RFALSE>)
|
||||
(<NOT <MC-VERB? READ READ-TO SHOW LIGHT-WITH BURN-WITH
|
||||
GIVE TELL-ABOUT>>
|
||||
<RFALSE>)
|
||||
(<NOT <IN? ,TH-NEWSPAPER ,CH-PLAYER>>
|
||||
<TELL "The newspaper will not leap into your hand by itself." CR>)
|
||||
(<MC-VERB? READ>
|
||||
<RT-READ-NEWSPAPER>)
|
||||
(<OR <AND <MC-VERB? READ-TO SHOW GIVE>
|
||||
<MC-THIS-PRSO?>>
|
||||
<AND <MC-VERB? TELL-ABOUT>
|
||||
<MC-THIS-PRSI?>>>
|
||||
<COND (<MC-ISNOT? ,GL-PRSI ,FL-PERSON>
|
||||
<RFALSE>)
|
||||
(<OR <MC-IS? ,TH-NEWSPAPER ,FL-ASLEEP>
|
||||
<MC-IS? ,TH-NEWSPAPER ,FL-OPENED>>
|
||||
<RT-READ-NEWSPAPER>
|
||||
<CRLF>)>
|
||||
<COND (<OR <AND <MC-VERB? READ-TO SHOW GIVE>
|
||||
<MC-PRSI? ,CH-HOLMES>>
|
||||
<AND <MC-VERB? TELL-ABOUT>
|
||||
<MC-PRSO? ,CH-HOLMES>>>
|
||||
<COND (<MC-IS? ,CH-HOLMES ,FL-ASLEEP>
|
||||
<RT-WAKE-UP-HOLMES>
|
||||
<COND
|
||||
(<MC-VERB? GIVE>
|
||||
<MOVE ,TH-NEWSPAPER ,CH-HOLMES>)>
|
||||
<RTRUE>)
|
||||
;(T
|
||||
<TELL "\"Don't be tedious, Watson. You have ">
|
||||
<COND (<MC-VERB? READ-TO>
|
||||
<TELL "read">)
|
||||
(<MC-VERB? SHOW>
|
||||
<TELL "shown">)
|
||||
(<MC-VERB? GIVE>
|
||||
<TELL "given">)
|
||||
(<MC-VERB? TELL-ABOUT>
|
||||
<TELL "mentioned">)>
|
||||
<TELL " that to me already.\"" CR>)>)
|
||||
(T
|
||||
<TELL CTHEI>
|
||||
<RT-DONT-DOESNT-MSG ,GL-PRSI>
|
||||
<TELL "seem to be interested." CR>)>)
|
||||
(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
|
||||
<MC-THIS-PRSO?>>
|
||||
<COND (<MC-IS? ,TH-NEWSPAPER ,FL-LIGHTED>
|
||||
<TELL CTHEO " is already lit." CR>)
|
||||
(<AND <MC-ISNOT? ,GL-PRSI ,FL-BURNABLE>
|
||||
<NOT <MC-PRSI? ,TH-PIPE>>>
|
||||
<RFALSE>)
|
||||
(<OR <AND <MC-IS? ,GL-PRSI ,FL-LIGHTED>
|
||||
<MC-IS? ,GL-PRSI ,FL-BURNABLE>>
|
||||
<AND <MC-PRSI? ,TH-PIPE>
|
||||
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>>
|
||||
<TELL CTHE ,TH-NEWSPAPER " lights up." CR>
|
||||
<MC-MAKE ,TH-NEWSPAPER ,FL-LIGHTED>
|
||||
<RT-ALARM-SET-REL ,RT-I-NEWSPAPER-OUT <RT-PARM-SET 0 3 0>>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<TELL CTHEI>
|
||||
<RT-ISNT-ARENT-MSG ,GL-PRSI>
|
||||
<TELL "burning." CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-WESTMINSTER-CLUE ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-WESTMINSTER-CLUE">>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<MC-IS? ,TH-MAIL ,FL-LIGHTED>
|
||||
<TELL CTHE ,TH-MAIL " is burning." CR>
|
||||
<RTRUE>)
|
||||
(T <RFALSE>)>)
|
||||
(<MC-T? .CONTEXT> <RFALSE>)
|
||||
(<MC-VERB? READ EXAMINE>
|
||||
<COND (<NOT <IN? ,TH-WESTMINSTER-CLUE ,CH-PLAYER>>
|
||||
<TELL "The paper will not leap into your hand by itself." CR>)
|
||||
(<ZERO? <GETP ,TH-WESTMINSTER-CLUE ,P?FLIPPED>>
|
||||
<TELL
|
||||
INDENT "Mortality, behold and fear!" CR
|
||||
INDENT "What a change of flesh is here!" CR
|
||||
INDENT "Think how many royal bones" CR
|
||||
INDENT "Sleep within this heap of stones:" CR
|
||||
INDENT "Here they lie, had realms and lands," CR
|
||||
INDENT "Who now want strength" WRAP "to stir their hands." CR CR
|
||||
|
||||
INDENT ,K-ASTERISK-MSG CR CR
|
||||
|
||||
INDENT "For two-score years I reigned alone," CR
|
||||
INDENT "A virgin queen on England's throne." CR
|
||||
INDENT "My navy caused Armada's shame," CR
|
||||
INDENT "And with me died the Tudor name." CR CR
|
||||
|
||||
INDENT ,K-ASTERISK-MSG CR CR
|
||||
|
||||
INDENT "The apple sorely tempted Eve," CR
|
||||
INDENT "And Tell another aimed to cleave." CR
|
||||
INDENT "But when one fell, it showed to me," CR
|
||||
INDENT "The mighty pull of gravity." CR CR
|
||||
|
||||
INDENT ,K-ASTERISK-MSG CR CR
|
||||
|
||||
INDENT "My father, it was said, would die," CR
|
||||
INDENT "Beneath the Holy City's sky." CR
|
||||
INDENT "Jerusalem his body claimed," CR
|
||||
INDENT "And it is after him I'm named." CR CR
|
||||
|
||||
INDENT ,K-ASTERISK-MSG CR CR
|
||||
|
||||
INDENT ,K-ASTERISK-MSG CR CR
|
||||
|
||||
INDENT "O stately Holmes of England," CR
|
||||
INDENT "In Baker Street abide." CR
|
||||
INDENT "For even you must surely fail," CR
|
||||
INDENT "To save your country's pride." CR>)
|
||||
(T
|
||||
<TELL "This side appears to be blank." CR>)>)
|
||||
(<AND <MC-VERB? LIGHT-WITH BURN-WITH>
|
||||
<MC-THIS-PRSO?>>
|
||||
<COND (<MC-IS? ,TH-WESTMINSTER-CLUE ,FL-LIGHTED>
|
||||
<TELL CTHEO " is already lit." CR>)
|
||||
(<AND <MC-ISNOT? ,GL-PRSI ,FL-BURNABLE>
|
||||
<NOT <MC-PRSI? ,TH-PIPE>>>
|
||||
<RFALSE>)
|
||||
(<OR <AND <MC-IS? ,GL-PRSI ,FL-LIGHTED>
|
||||
<MC-IS? ,GL-PRSI ,FL-BURNABLE>>
|
||||
<AND <MC-PRSI? ,TH-PIPE>
|
||||
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>>
|
||||
<TELL CTHE ,TH-WESTMINSTER-CLUE " lights up." CR>
|
||||
<MC-MAKE ,TH-WESTMINSTER-CLUE ,FL-LIGHTED>
|
||||
<RT-ALARM-SET-REL ,RT-I-CLUE-OUT <RT-PARM-SET 0 3 0>>)
|
||||
(T
|
||||
<TELL CTHEI>
|
||||
<RT-ISNT-ARENT-MSG ,GL-PRSI>
|
||||
<TELL "burning." CR>)>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? FLIP>
|
||||
<COND (<NOT <IN? ,TH-WESTMINSTER-CLUE ,GL-WINNER>>
|
||||
<RT-CYOU-MSG "are" "is">
|
||||
<TELL "not holding " THE ,TH-WESTMINSTER-CLUE "." CR>)
|
||||
(T
|
||||
<PUTP ,TH-WESTMINSTER-CLUE ,P?FLIPPED <- 1 <GETP ,TH-WESTMINSTER-CLUE ,P?FLIPPED>>>
|
||||
<RT-CYOU-MSG "turn" "turns">
|
||||
<TELL THE ,TH-WESTMINSTER-CLUE " over." CR>)>)
|
||||
(<AND <MC-VERB? LOOK-THRU>
|
||||
<MC-PRSI? ,TH-MAGNIFYING-GLASS>>
|
||||
<TELL "It's been wiped clean." CR>)>>
|
||||
|
||||
<CONSTANT K-HOLMES-HEAD? 1> ; "Has Holmes made comment about Charles I head?"
|
||||
<CONSTANT K-HOLMES-GEM? 2> ; "Has Holmes made comment about gem?"
|
||||
|
||||
<ROUTINE RT-AC-TH-WAX-HEAD ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "TH-WAX-HEAD">>
|
||||
<COND (<==? .CONTEXT ,K-M-SDESC>
|
||||
<COND (<FSET? ,TH-WAX-HEAD ,FL-BROKEN>
|
||||
<TELL "wax pool">)
|
||||
(T
|
||||
<TELL "wax head">)>)
|
||||
(<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<NOT <FSET? ,TH-WAX-HEAD ,FL-BROKEN>>
|
||||
<RFALSE>)
|
||||
(<NOT <FIRST? ,TH-WAX-HEAD>>
|
||||
<TELL "Looks like any other " D ,TH-WAX-HEAD "." CR>)>)
|
||||
(<NOT <FSET? ,TH-WAX-HEAD ,FL-BROKEN>> ; "STILL THE HEAD"
|
||||
<COND (<IN? ,TH-WAX-HEAD ,TH-CHARLES-STATUE>
|
||||
<COND (<MC-VERB? TAKE ;UNSCREW UNSCREW-FROM>
|
||||
<MOVE ,TH-WAX-HEAD ,GL-WINNER>
|
||||
<MC-MAKE ,TH-WAX-HEAD ,FL-SEEN>
|
||||
<MC-UNMAKE ,TH-WAX-HEAD ,FL-NODESC>
|
||||
<MC-UNMAKE ,TH-WAX-HEAD ,FL-NOALL>
|
||||
<COND (,GL-P-MULT?
|
||||
<TELL "Taken." CR>)
|
||||
(T
|
||||
<RT-CYOU-MSG "take" "takes">
|
||||
<TELL THE ,TH-WAX-HEAD "." CR>)>)
|
||||
(<RT-TOUCH-VERB?>
|
||||
<MC-MAKE ,TH-WAX-HEAD ,FL-SEEN>
|
||||
<TELL CTHE ,TH-WAX-HEAD " wobbles slightly.">
|
||||
<COND (<MC-F? <BAND ,CH-HOLMES-AUX1 ,K-HOLMES-HEAD?>>
|
||||
<TELL " " THE ,CH-HOLMES
|
||||
" says, \"Even when he was alive, he didn't have his head screwed on right.\"">
|
||||
<SETG CH-HOLMES-AUX1 <BOR ,CH-HOLMES-AUX1 ,K-HOLMES-HEAD?>>)>
|
||||
<CRLF>)>)
|
||||
(<AND <MC-VERB? MELT HEAT>
|
||||
<MC-THIS-PRSO?>
|
||||
<OR <AND <MC-IS? ,GL-PRSI ,FL-BURNABLE>
|
||||
<MC-IS? ,GL-PRSI ,FL-LIGHTED>>
|
||||
<AND <MC-PRSI? ,TH-PIPE>
|
||||
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>>>
|
||||
<TELL CTHEO " softens, but " THEI
|
||||
" does not put out enough heat to melt it." CR>)
|
||||
(<MC-VERB? MUNG KILL OPEN>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL "can't break into the head." CR>)>)
|
||||
(T ; "NOW THE POOL"
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE DESC-WAX-AX ("OPTIONAL" (CONTEXT <>))
|
||||
<COND (<==? .CONTEXT ,K-M-SDESC>
|
||||
<COND (<FSET? ,TH-WAX-AX ,FL-BROKEN>
|
||||
<TELL "melted axe">)
|
||||
(T
|
||||
<TELL "axe">)>)
|
||||
(<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<NOT <FSET? ,TH-WAX-AX ,FL-BROKEN>> <RFALSE>)
|
||||
(<NOT <FIRST? ,TH-WAX-AX>>
|
||||
<TELL "Looks like any other " D ,TH-WAX-AX "." CR>)>)>>
|
||||
|
||||
<ROUTINE RT-GUARD-TAKE-ITEM (OBJ1 "OPTIONAL" (OBJ2 <>) (OBJ3 <>) "AUX" STR)
|
||||
<TELL CTHE ,CH-TUSSAUDS-GUARD " says, \"I'm sorry, but " THE .OBJ1>
|
||||
<COND (<AND .OBJ2 .OBJ3>
|
||||
<TELL ", " THE .OBJ2 " and " THE .OBJ3 " are">
|
||||
<SET STR "them">)
|
||||
(<MC-T? .OBJ2>
|
||||
<TELL " and " THE .OBJ2 " are">
|
||||
<SET STR "them">)
|
||||
(T
|
||||
<TELL " is">
|
||||
<SET STR "it">)>
|
||||
<TELL
|
||||
" not to be removed.\" He takes " .STR " and returns " .STR " to the proper
|
||||
place." CR CR>>
|
||||
|
||||
<ROUTINE RT-GUARD-STOP-ENTRANCE ("OPTIONAL" (OBJ <>) "AUX" WHO)
|
||||
<SET WHO <RT-WHO-SAYS?>>
|
||||
<IFSOUND <SOUNDS ,S-BARK ,S-START 8 4>>
|
||||
<TELL CTHE ,CH-MATCH-SNIFFING-DOG " barks loudly and " THE
|
||||
,CH-TUSSAUDS-GUARD " says, \"Seeing as how it's you, ">
|
||||
<COND (<EQUAL? .WHO ,CH-HOLMES>
|
||||
<TELL "Mr Holmes">)
|
||||
(T
|
||||
<TELL "Doctor Watson">)>
|
||||
<TELL
|
||||
", I don't mind letting you in. But as you know we are very afraid of
|
||||
fire here, so we have trained this dog to detect matches or open
|
||||
flames. I'm afraid I can't allow you">
|
||||
<COND (<EQUAL? .WHO ,CH-HOLMES ,CH-WIGGINS>
|
||||
<TELL " or your companion">)>
|
||||
<TELL " to enter until " THE .OBJ " has been discarded.\"" CR>
|
||||
;<COND (<AND .OBJ ;"COND ALWAYS TRUE"
|
||||
<OR <IN? .OBJ ,CH-PLAYER>
|
||||
<AND ,GL-PUPPY
|
||||
<IN? .OBJ ,GL-PUPPY>>>>
|
||||
<TELL THE .OBJ>)
|
||||
(T
|
||||
<TELL "the item">
|
||||
<COND (<NOT .OBJ>
|
||||
<TELL "s">)>
|
||||
<TELL " to which the dog objects">)>
|
||||
;<TELL " ha">
|
||||
;<COND (.OBJ
|
||||
<TELL "s">)
|
||||
(T
|
||||
<TELL "ve">)>
|
||||
;<TELL " been discarded.\"" CR>>
|
||||
|
||||
<ROUTINE RT-EX-RM-EXIT-TUSSAUDS ("AUX" IN1 IN2 IN3 TORCH)
|
||||
<COND (<AND <EQUAL? ,GL-PRSO ,P?SOUTH ,P?OUT>
|
||||
<MC-HERE? ,RM-MADAME-TUSSAUDS>>
|
||||
<SET IN1
|
||||
<COND (<OR <RT-META-IN? ,TH-TORCH ,GL-WINNER>
|
||||
<RT-META-IN? ,TH-TORCH ,GL-PUPPY>>
|
||||
<SET TORCH ,TH-TORCH>)
|
||||
;(<OR <RT-META-IN? ,TH-BURNT-TORCH ,GL-WINNER>
|
||||
<RT-META-IN? ,TH-BURNT-TORCH ,GL-PUPPY>>
|
||||
<SET TORCH ,TH-BURNT-TORCH>)>>
|
||||
<SET IN2 <OR <RT-META-IN? ,TH-WAX-HEAD ,GL-WINNER>
|
||||
<RT-META-IN? ,TH-WAX-HEAD ,GL-PUPPY>>>
|
||||
<SET IN3 <OR <RT-META-IN? ,TH-WAX-AX ,GL-WINNER>
|
||||
<RT-META-IN? ,TH-WAX-AX ,GL-PUPPY>>>
|
||||
<COND (<AND .IN1 .IN2 .IN3>
|
||||
<RT-GUARD-TAKE-ITEM ,TH-TORCH ,TH-WAX-HEAD ,TH-WAX-AX>)
|
||||
(<AND .IN1 .IN2>
|
||||
<RT-GUARD-TAKE-ITEM ,TH-TORCH ,TH-WAX-HEAD>)
|
||||
(<AND .IN1 .IN3>
|
||||
<RT-GUARD-TAKE-ITEM ,TH-TORCH ,TH-WAX-AX>)
|
||||
(<AND .IN2 .IN3>
|
||||
<RT-GUARD-TAKE-ITEM ,TH-WAX-HEAD ,TH-WAX-AX>)
|
||||
(<MC-T? .IN1>
|
||||
<RT-GUARD-TAKE-ITEM ,TH-TORCH>)
|
||||
(<MC-T? .IN2>
|
||||
<RT-GUARD-TAKE-ITEM ,TH-WAX-HEAD>)
|
||||
(<MC-T? .IN3>
|
||||
<RT-GUARD-TAKE-ITEM ,TH-WAX-AX>)>
|
||||
<COND (<MC-T? .IN1>
|
||||
<MOVE .TORCH ,TH-FAWKES-STATUE>
|
||||
<MC-MAKE .TORCH ,FL-NODESC>
|
||||
<COND (<MC-IS? .TORCH ,FL-LIGHTED>
|
||||
<RT-ALARM-CLR ,RT-I-TORCH-OUT>
|
||||
<RT-I-TORCH-OUT>
|
||||
<MC-MAKE ,TH-TORCH ,FL-NODESC>
|
||||
;<MC-MAKE ,TH-BURNT-TORCH ,FL-NODESC>)>)>
|
||||
<COND (<MC-T? .IN2>
|
||||
<MOVE ,TH-WAX-HEAD ,TH-CHARLES-STATUE>
|
||||
<MC-MAKE ,TH-WAX-HEAD ,FL-NODESC>)>
|
||||
<COND (<MC-T? .IN3>
|
||||
<MOVE ,TH-WAX-AX ,TH-CHARLES-STATUE>
|
||||
<MC-MAKE ,TH-WAX-AX ,FL-NODESC>)>
|
||||
<RETURN ,RM-MARYLEBONE-RD>)>>
|
||||
|
||||
; "NORTH from RM-MARYLEBONE-RD to RM-MADAME-TUSSAUDS"
|
||||
|
||||
<ROUTINE RT-EX-RM-MATCH-SNIFFING-DOG ("AUX" OBJ (FLAME? <>) (FIRST T) LAMP? MATCH?)
|
||||
<COND (<AND <EQUAL? ,GL-PRSO ,P?NORTH ,P?IN>
|
||||
<MC-HERE? ,RM-MARYLEBONE-RD>>
|
||||
<REPEAT ()
|
||||
<SET OBJ <FIRST? ,GL-WINNER>>
|
||||
<REPEAT ()
|
||||
<COND (<MC-F? .OBJ>
|
||||
<RETURN>)
|
||||
(<AND <MC-IS? .OBJ ,FL-BURNABLE>
|
||||
<MC-IS? .OBJ ,FL-LIGHTED>
|
||||
<NOT <EQUAL? .OBJ ,TH-TOBACCO>>>
|
||||
<SET FLAME? .OBJ>
|
||||
<RETURN>)>
|
||||
<SET OBJ <NEXT? .OBJ>>>
|
||||
<COND (<AND <MC-F? .FLAME?>
|
||||
<MC-T? .FIRST>
|
||||
<MC-T? ,GL-PUPPY>>
|
||||
<SET OBJ <FIRST? ,GL-PUPPY>>
|
||||
<SET FIRST <>>)
|
||||
(T
|
||||
<RETURN>)>>
|
||||
<COND (<OR <SET MATCH? <AND <OR <RT-META-IN? ,TH-MATCH ,CH-PLAYER>
|
||||
<RT-META-IN? ,TH-MATCH ,GL-PUPPY>>
|
||||
<OR <MC-IS? ,TH-MATCH ,FL-BURNABLE>
|
||||
<MC-IS? ,TH-MATCH ,FL-LIGHTED>>>>
|
||||
<SET LAMP? <OR <RT-META-IN? ,TH-LAMP ,CH-PLAYER>
|
||||
<RT-META-IN? ,TH-LAMP ,GL-PUPPY>>>
|
||||
.FLAME?>
|
||||
<SET OBJ <COND (.FLAME?
|
||||
.FLAME?)
|
||||
(.LAMP?
|
||||
,TH-LAMP)
|
||||
(.MATCH?
|
||||
,TH-MATCH)>>
|
||||
<RT-GUARD-STOP-ENTRANCE .OBJ>
|
||||
<RFALSE>)>
|
||||
<COND (<OR <FSET? ,TH-WAX-HEAD ,FL-BROKEN>
|
||||
;<MC-F? <LOC ,TH-WAX-HEAD>>
|
||||
<FSET? ,TH-WAX-AX ,FL-BROKEN>
|
||||
;<MC-F? <LOC ,TH-WAX-AX>>>
|
||||
<TELL
|
||||
"The guard blocks your path and says, \"Oh no you don't, laddie. When I let
|
||||
you in earlier you made a proper mess of my museum. I won't let you do that
|
||||
again.\" After you promise to pay for the damage and plead with him for a few
|
||||
moments, he finally steps aside." CR CR>)>
|
||||
<RETURN ,RM-MADAME-TUSSAUDS>)>>
|
||||
|
||||
<ROUTINE RT-PUT-OUT (THING)
|
||||
<COND (<MC-ISNOT? .THING ,FL-BURNABLE>
|
||||
<RFALSE>)
|
||||
(<MC-ISNOT? .THING ,FL-LIGHTED>
|
||||
<RFALSE>)
|
||||
(<EQUAL? .THING ,TH-MATCH>
|
||||
<RT-ALARM-CLR ,RT-I-MATCH-OUT>
|
||||
<RT-I-MATCH-OUT>)
|
||||
(<EQUAL? .THING ,TH-PIPE>
|
||||
<RT-ALARM-CLR ,RT-I-PIPE-OUT>
|
||||
<RT-I-PIPE-OUT>)
|
||||
(<EQUAL? .THING ,TH-TORCH>
|
||||
<RT-ALARM-CLR ,RT-I-TORCH-OUT>
|
||||
<RT-I-TORCH-OUT>)
|
||||
(<EQUAL? .THING ,TH-NEWSPAPER>
|
||||
<RT-ALARM-CLR ,RT-I-NEWSPAPER-OUT>
|
||||
<RT-I-NEWSPAPER-OUT>)
|
||||
(<EQUAL? .THING ,TH-WESTMINSTER-CLUE>
|
||||
<RT-ALARM-CLR ,RT-I-CLUE-OUT>
|
||||
<RT-I-CLUE-OUT>)
|
||||
(<EQUAL? .THING ,TH-MAIL>
|
||||
<RT-ALARM-CLR ,RT-I-MAIL-OUT>
|
||||
<RT-I-MAIL-OUT>)
|
||||
(<EQUAL? .THING ,TH-MATCHBOOK>
|
||||
<RT-ALARM-CLR ,RT-I-MATCHBOOK-OUT>
|
||||
<RT-I-MATCHBOOK-OUT>)
|
||||
(T
|
||||
<REMOVE .THING>
|
||||
<FCLEAR .THING ,FL-WORN>
|
||||
<MC-UNMAKE .THING ,FL-LIGHTED>
|
||||
<MC-UNMAKE .THING ,FL-BURNABLE>
|
||||
<TELL CTHE .THING " burn">
|
||||
<RT-S-NOS-MSG .THING>
|
||||
<TELL " up and disappears." CR>)>>
|
||||
|
||||
<ROUTINE RT-I-MATCH-OUT ("AUX" (RESULT <>))
|
||||
<COND (<RT-VISIBLE? ,TH-MATCH>
|
||||
<TELL CR CTHE ,TH-MATCH " flickers and dies." CR>
|
||||
<SET RESULT T>)>
|
||||
<MC-UNMAKE ,TH-MATCH ,FL-LIGHTED>
|
||||
<BURN-MATCH-OUT>
|
||||
;<MC-UNMAKE ,TH-MATCH ,FL-BURNABLE>
|
||||
;<MOVE ,TH-BURNT-MATCH <LOC ,TH-MATCH>>
|
||||
;<REMOVE ,TH-MATCH>
|
||||
<RETURN .RESULT>>
|
||||
|
||||
<ROUTINE BURN-MATCH-OUT ()
|
||||
<FCLEAR ,TH-MATCH ,FL-BURNABLE>
|
||||
<FSET ,TH-MATCH ,FL-BROKEN>
|
||||
<PUT <GETPT ,TH-MATCH ,P?ADJECTIVE> 0 ,W?BURNT>>
|
||||
|
||||
<ROUTINE RT-I-PIPE-OUT ("AUX" (RESULT <>))
|
||||
<COND (<RT-VISIBLE? ,TH-TOBACCO>
|
||||
<TELL CR CTHE ,TH-PIPE " has gone out." CR>)>
|
||||
<MC-UNMAKE ,TH-TOBACCO ,FL-LIGHTED>
|
||||
<MC-UNMAKE ,TH-TOBACCO ,FL-BURNABLE>
|
||||
<REMOVE ,TH-TOBACCO>
|
||||
<RETURN .RESULT>>
|
||||
|
||||
<ROUTINE RT-I-TORCH-OUT ("AUX" (RESULT <>))
|
||||
<COND (<RT-VISIBLE? ,TH-TORCH>
|
||||
<TELL CR CTHE ,TH-TORCH " sputters and dies." CR>
|
||||
<SET RESULT T>)>
|
||||
<CLEAR-ALL-FLAGS ,TH-TORCH>
|
||||
<PUT <GETPT ,TH-TORCH ,P?ADJECTIVE> 0 ,W?BURNT>
|
||||
<FSET ,TH-TORCH ,FL-TAKEABLE>
|
||||
<FSET ,TH-TORCH ,FL-BROKEN>
|
||||
;<MC-UNMAKE ,TH-TORCH ,FL-LIGHTED>
|
||||
;<MC-UNMAKE ,TH-TORCH ,FL-BURNABLE>
|
||||
;<MOVE ,TH-BURNT-TORCH <LOC ,TH-TORCH>>
|
||||
;<REMOVE ,TH-TORCH>
|
||||
<RETURN .RESULT>>
|
||||
|
||||
<ROUTINE RT-I-NEWSPAPER-OUT ("AUX" (RESULT <>))
|
||||
<COND (<RT-VISIBLE? ,TH-NEWSPAPER>
|
||||
<TELL CR CTHE ,TH-NEWSPAPER " disappears into a cloud of fine ash, which itself disappears." CR>
|
||||
<SET RESULT T>)>
|
||||
<MC-UNMAKE ,TH-NEWSPAPER ,FL-LIGHTED>
|
||||
<MC-UNMAKE ,TH-NEWSPAPER ,FL-BURNABLE>
|
||||
<REMOVE ,TH-NEWSPAPER>
|
||||
<RETURN .RESULT>>
|
||||
|
||||
<ROUTINE RT-I-CLUE-OUT ("AUX" (RESULT <>))
|
||||
<COND (<RT-VISIBLE? ,TH-WESTMINSTER-CLUE>
|
||||
<TELL CR CTHE ,TH-WESTMINSTER-CLUE
|
||||
" disappears in a puff of oily black smoke." CR>
|
||||
<SET RESULT T>)>
|
||||
<MC-UNMAKE ,TH-WESTMINSTER-CLUE ,FL-LIGHTED>
|
||||
<MC-UNMAKE ,TH-WESTMINSTER-CLUE ,FL-BURNABLE>
|
||||
<REMOVE ,TH-WESTMINSTER-CLUE>
|
||||
<RETURN .RESULT>>
|
||||
|
||||
<ROUTINE RT-I-MAIL-OUT ("AUX" (RESULT <>))
|
||||
<COND (<RT-VISIBLE? ,TH-MAIL>
|
||||
<TELL CR CTHE ,TH-MAIL " disappears in a flash of light." CR>
|
||||
<SET RESULT T>)>
|
||||
<MC-UNMAKE ,TH-MAIL ,FL-LIGHTED>
|
||||
<MC-UNMAKE ,TH-MAIL ,FL-BURNABLE>
|
||||
<REMOVE ,TH-MAIL>
|
||||
<RETURN .RESULT>>
|
||||
|
||||
<ROUTINE RT-I-MATCHBOOK-OUT ("AUX" (RESULT <>))
|
||||
<COND (<RT-VISIBLE? ,TH-MATCHBOOK>
|
||||
<TELL CR CTHE ,TH-MATCHBOOK " burns up and disappears." CR>
|
||||
<SET RESULT T>)>
|
||||
<MC-UNMAKE ,TH-MATCHBOOK ,FL-LIGHTED>
|
||||
<MC-UNMAKE ,TH-MATCHBOOK ,FL-BURNABLE>
|
||||
<REMOVE ,TH-MATCHBOOK>
|
||||
<RETURN .RESULT>>
|
||||
|
||||
<ROUTINE PRE-LIGHT-WITH ()
|
||||
<DEBUGGING? <RT-DEBUG-PRE-VERB "PRE-LIGHT-WITH">>
|
||||
<COND (<AND <NOT <MC-PRSO? ,TH-MATCH ,TH-TOBACCO>>
|
||||
<NOT <IN? ,GL-PRSO ,GL-WINNER>>>
|
||||
<RT-CYOU-MSG>
|
||||
<RT-WOULD-HAVE-TO-MSG "be holding" ,GL-PRSO>
|
||||
<TELL " to light ">
|
||||
<RT-SAY-HIM-HER-THEM-IT-MSG ,GL-PRSO>
|
||||
<TELL "." CR>)>>
|
||||
|
||||
<ROUTINE RT-GN-WAX (TBL "OPTIONAL" (LEN 0))
|
||||
<PUTP ,PSEUDO-OBJECT ,P?ACTION ,RT-DF-LG-WAX-STATUES>
|
||||
<SETG LAST-PSEUDO-LOC ,GL-PLACE-CUR>
|
||||
<RETURN ,PSEUDO-OBJECT>>
|
||||
|
BIN
clk.was-mid
Normal file
BIN
clk.was-mid
Normal file
Binary file not shown.
1222
constants.zil
Normal file
1222
constants.zil
Normal file
File diff suppressed because it is too large
Load diff
BIN
crowd.was-mid
Normal file
BIN
crowd.was-mid
Normal file
Binary file not shown.
22
eliza.zabstr
Normal file
22
eliza.zabstr
Normal file
|
@ -0,0 +1,22 @@
|
|||
|
||||
<OBJECT TH-BLUE-PILL-BOTTLE (LOC TH-BLACK-BAG) (DESC "blue bottle") (FLAGS
|
||||
FL-CONTAINER FL-OPENABLE FL-READABLE FL-TAKEABLE) (SYNONYM BOTTLE BOTTLES LABEL
|
||||
) (ADJECTIVE BLUE) (SIZE 3 MASS 2 CAPACITY 2) (GENERIC RT-GN-BOTTLE) (ACTION
|
||||
RT-AC-TH-BLUE-PILL-BOTTLE)>
|
||||
<OBJECT TH-BROWN-PILL-BOTTLE (LOC TH-BLACK-BAG) (DESC "brown bottle") (FLAGS
|
||||
FL-CONTAINER FL-OPENABLE FL-READABLE FL-TAKEABLE) (SYNONYM BOTTLE BOTTLES LABEL
|
||||
) (ADJECTIVE BROWN) (SIZE 3 MASS 2 CAPACITY 2) (GENERIC RT-GN-BOTTLE) (ACTION
|
||||
RT-AC-TH-BROWN-PILL-BOTTLE)>
|
||||
<OBJECT TH-ORANGE-PILL (LOC TH-BLUE-PILL-BOTTLE) (DESC "orange pill") (FLAGS
|
||||
FL-TAKEABLE FL-READABLE FL-FOOD FL-VOWEL) (SYNONYM PILL PILLS) (ADJECTIVE
|
||||
ORANGE) (SIZE 1 MASS 1) (GENERIC RT-GN-PILL) (ACTION RT-AC-TH-ORANGE-PILL)>
|
||||
<OBJECT TH-YELLOW-PILL (LOC TH-BROWN-PILL-BOTTLE) (DESC "yellow pill") (FLAGS
|
||||
FL-TAKEABLE FL-READABLE FL-FOOD) (SYNONYM PILL PILLS) (ADJECTIVE YELLOW) (SIZE
|
||||
1 MASS 1) (GENERIC RT-GN-PILL) (ACTION RT-AC-TH-YELLOW-PILL)>
|
||||
<DEFINE-ROUTINE RT-AC-TH-BLUE-PILL-BOTTLE>
|
||||
<DEFINE-ROUTINE RT-AC-TH-BROWN-PILL-BOTTLE>
|
||||
<DEFINE-ROUTINE RT-AC-TH-ORANGE-PILL>
|
||||
<DEFINE-ROUTINE RT-AC-TH-YELLOW-PILL>
|
||||
<DEFINE-ROUTINE RT-AC-CH-ELIZA-DOOLITTLE>
|
||||
<DEFINE-ROUTINE RT-LISTEN-ELIZA>
|
||||
<DEFINE-ROUTINE RT-CURE-ELIZA>
|
210
eliza.zap
Normal file
210
eliza.zap
Normal file
|
@ -0,0 +1,210 @@
|
|||
|
||||
|
||||
.FUNCT RT-AC-TH-BLUE-PILL-BOTTLE,CONTEXT
|
||||
ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?READ,V?EXAMINE,V?LOOK-ON \?CCL6
|
||||
PRINTR "The label on the bottle reads: ""Digitalis leaf. For tachycardia and other accelerated arrhythmias."""
|
||||
?CCL6: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
REMOVE TH-BLUE-PILL-BOTTLE
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINT K-SHATTER-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-BROWN-PILL-BOTTLE,CONTEXT
|
||||
ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?READ,V?EXAMINE,V?LOOK-ON \?CCL6
|
||||
PRINTR "The label on the bottle reads: ""Belladonna. For bradycardia and other decelerated arrhythmias."""
|
||||
?CCL6: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
REMOVE TH-BROWN-PILL-BOTTLE
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINT K-SHATTER-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-ORANGE-PILL,CONTEXT
|
||||
ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?EAT \?CCL6
|
||||
EQUAL? GL-WINNER,CH-PLAYER \?CCL6
|
||||
PRINTI "You swallow the pill. For a few moments everything seems to move much slower."
|
||||
CRLF
|
||||
REMOVE GL-PRSO
|
||||
RTRUE
|
||||
?CCL6: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
REMOVE TH-ORANGE-PILL
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINT K-SHATTER-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-TH-YELLOW-PILL,CONTEXT
|
||||
ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?EAT \?CCL6
|
||||
EQUAL? GL-WINNER,CH-PLAYER \?CCL6
|
||||
PRINTI "You swallow the pill. For a few moments everything seems to move much faster."
|
||||
CRLF
|
||||
REMOVE GL-PRSO
|
||||
RTRUE
|
||||
?CCL6: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
REMOVE TH-YELLOW-PILL
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
PRINT K-SHATTER-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-CH-ELIZA-DOOLITTLE,CONTEXT
|
||||
GETP CH-ELIZA-DOOLITTLE,P?OBJ-NOUN
|
||||
EQUAL? STACK,W?HEART,W?HEARTBEAT \?CCL3
|
||||
EQUAL? CONTEXT,K-M-SDESC \?CCL6
|
||||
PRINTI "girl's heart"
|
||||
RTRUE
|
||||
?CCL6: EQUAL? CONTEXT,K-M-DESCFCN \?CCL8
|
||||
PRINTR "You don't have X-ray vision."
|
||||
?CCL8: ZERO? CONTEXT \FALSE
|
||||
EQUAL? GL-PRSA,V?LISTEN \?CCL12
|
||||
ICALL1 RT-LISTEN-ELIZA
|
||||
RTRUE
|
||||
?CCL12: CALL1 RT-TOUCH-VERB?
|
||||
ZERO? STACK /FALSE
|
||||
ICALL1 RT-IMPOSSIBLE-MSG
|
||||
RTRUE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-SDESC \?CCL16
|
||||
PRINTI "girl"
|
||||
RTRUE
|
||||
?CCL16: EQUAL? CONTEXT,K-M-DESCFCN \?CCL18
|
||||
ICALL2 RT-THIS-IS-IT,CH-ELIZA-DOOLITTLE
|
||||
PRINTR "The flower girl is lying on the ground in a dead faint. She is very beautiful, but her clothes indicate that she must be poor."
|
||||
?CCL18: EQUAL? CONTEXT,K-M-WINNER \?CCL20
|
||||
ICALL2 RT-CTHEO-PRINT,CH-ELIZA-DOOLITTLE
|
||||
PRINTR " is unconscious. She cannot do anything."
|
||||
?CCL20: ZERO? CONTEXT \FALSE
|
||||
EQUAL? GL-PRSA,V?LISTEN \?PRD26
|
||||
ZERO? GL-NOW-PRSI? /?CTR23
|
||||
?PRD26: EQUAL? GL-PRSA,V?USE-ON,V?TOUCH-TO \?PRD29
|
||||
EQUAL? GL-PRSO,TH-STETHOSCOPE \?PRD29
|
||||
ZERO? GL-NOW-PRSI? \?CTR23
|
||||
?PRD29: EQUAL? GL-PRSA,V?DIAGNOSE \?PRD33
|
||||
ZERO? GL-NOW-PRSI? /?CTR23
|
||||
?PRD33: EQUAL? GL-PRSA,V?LOOK-THRU \?CCL24
|
||||
EQUAL? GL-P-PRSA-WORD,W?EXAMINE \?CCL24
|
||||
ZERO? GL-NOW-PRSI? \?CCL24
|
||||
EQUAL? GL-PRSI,TH-STETHOSCOPE \?CCL24
|
||||
?CTR23: CALL1 RT-LISTEN-ELIZA
|
||||
RSTACK
|
||||
?CCL24: EQUAL? GL-PRSA,V?GIVE,V?FEED \?CCL41
|
||||
CALL2 RT-CURE-ELIZA,GL-PRSO
|
||||
RSTACK
|
||||
?CCL41: EQUAL? GL-PRSA,V?TAKE,V?RAISE,V?MOVE \?CCL43
|
||||
EQUAL? GL-PRSO,TH-ELIZAS-FLOWERS \?CCL46
|
||||
PRINT K-OUTRAGED-CROWD-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL46: EQUAL? GL-PRSO,CH-ELIZA-DOOLITTLE \FALSE
|
||||
PRINTR "The girl is too sick to be moved."
|
||||
?CCL43: EQUAL? GL-PRSA,V?RESCUE \?CCL50
|
||||
PRINTR "A noble thought, worthy of someone who has taken the Hippocratic oath."
|
||||
?CCL50: EQUAL? GL-PRSA,V?ALARM \?CCL52
|
||||
PRINTR "Your medical expertise tells you she's not just asleep. It's more serious than that."
|
||||
?CCL52: EQUAL? GL-PRSA,V?SEARCH \FALSE
|
||||
PRINT K-OUTRAGED-CROWD-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-LISTEN-ELIZA,?TMP1
|
||||
FSET? TH-COTTON-BALLS,FL-WORN \?CCL3
|
||||
ICALL1 RT-CYOU-MSG
|
||||
PRINTI "cannot hear a thing with "
|
||||
ICALL2 RT-THEO-PRINT,TH-COTTON-BALLS
|
||||
PRINTI " in "
|
||||
ICALL2 RT-THEO-PRINT,TH-EARS
|
||||
PRINTR "."
|
||||
?CCL3: FSET? TH-STETHOSCOPE,FL-WORN \?CCL5
|
||||
LOC CH-PLAYER >?TMP1
|
||||
LOC CH-ELIZA-DOOLITTLE
|
||||
EQUAL? ?TMP1,STACK /?CND6
|
||||
PRINTR "You can't reach the girl from where you are."
|
||||
?CND6: ZERO? CH-ELIZA-DOOLITTLE-AUX1 \?CND8
|
||||
RANDOM 100
|
||||
LESS? 50,STACK /?CCL12
|
||||
SET 'CH-ELIZA-DOOLITTLE-AUX1,1
|
||||
JUMP ?CND8
|
||||
?CCL12: SET 'CH-ELIZA-DOOLITTLE-AUX1,2
|
||||
?CND8: EQUAL? CH-ELIZA-DOOLITTLE-AUX1,1 \?CCL15
|
||||
ICALL SOUNDS,S-HEART3,S-START,6,10
|
||||
PRINTR "Her heartbeat is incredibly fast."
|
||||
?CCL15: EQUAL? CH-ELIZA-DOOLITTLE-AUX1,2 \FALSE
|
||||
ICALL SOUNDS,S-HEART1,S-START,6,6
|
||||
PRINTR "Her heartbeat is incredibly slow."
|
||||
?CCL5: EQUAL? GL-PRSO,TH-STETHOSCOPE /?CTR18
|
||||
EQUAL? GL-PRSI,TH-STETHOSCOPE \?CCL19
|
||||
?CTR18: ICALL RT-CYOU-MSG,STR?228,STR?229
|
||||
PRINTI "not wearing "
|
||||
ICALL2 RT-THEO-PRINT,TH-STETHOSCOPE
|
||||
PRINTR "."
|
||||
?CCL19: PRINTR "The city noises are too loud for you to make an accurate diagnosis."
|
||||
|
||||
|
||||
.FUNCT RT-CURE-ELIZA,CURE
|
||||
EQUAL? CURE,TH-ORANGE-PILL \?CCL3
|
||||
REMOVE TH-ORANGE-PILL
|
||||
EQUAL? CH-ELIZA-DOOLITTLE-AUX1,1 \?CCL6
|
||||
SET 'CH-ELIZA-DOOLITTLE-AUX1,3
|
||||
JUMP ?CND4
|
||||
?CCL6: SET 'CH-ELIZA-DOOLITTLE-AUX1,4
|
||||
?CND4: PRINTI "You give her "
|
||||
ICALL2 RT-THEO-PRINT,CURE
|
||||
PRINTC 46
|
||||
CRLF
|
||||
CRLF
|
||||
JUMP ?CND1
|
||||
?CCL3: EQUAL? CURE,TH-YELLOW-PILL \?CCL8
|
||||
REMOVE TH-YELLOW-PILL
|
||||
EQUAL? CH-ELIZA-DOOLITTLE-AUX1,2 \?CCL11
|
||||
SET 'CH-ELIZA-DOOLITTLE-AUX1,3
|
||||
JUMP ?CND9
|
||||
?CCL11: SET 'CH-ELIZA-DOOLITTLE-AUX1,4
|
||||
?CND9: PRINTI "You give her "
|
||||
ICALL2 RT-THEO-PRINT,CURE
|
||||
PRINTC 46
|
||||
CRLF
|
||||
CRLF
|
||||
?CND1: EQUAL? CH-ELIZA-DOOLITTLE-AUX1,3 \?CCL14
|
||||
MOVE TH-CARNATION,TH-LAPEL
|
||||
REMOVE CH-ELIZA-DOOLITTLE
|
||||
FCLEAR CH-ELIZA-DOOLITTLE,FL-ASLEEP
|
||||
PRINTI "Nothing happens for a moment, but then her eyelids flutter briefly and she opens her eyes."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "The crowd breaks into applause, and they help her to her feet. When she is standing, she smiles at you shyly and puts a lovely carnation in your lapel as a gesture of thanks."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "Just then, a distinguished-looking gentleman appears on the scene, takes her by the arm, and says, ""Come, Eliza. We mustn't be late for the ball."""
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "He escorts her away, but as she leaves, she glances back at you once more with a grateful expression in her lovely eyes."
|
||||
CRLF
|
||||
GETP TH-CARNATION,P?VALUE
|
||||
ICALL2 RT-UPDATE-SCORE,STACK
|
||||
PUTP TH-CARNATION,P?VALUE,0
|
||||
RTRUE
|
||||
?CCL8: PRINTR "That would not do her much good."
|
||||
?CCL14: EQUAL? CH-ELIZA-DOOLITTLE-AUX1,4 \FALSE
|
||||
FCLEAR CH-ELIZA-DOOLITTLE,FL-ALIVE
|
||||
PRINTI "Nothing happens for a moment, but then suddenly her body goes limp. It must have been the wrong pill."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "By this time, the large crowd has gathered the attention of the police. Inspector Lestrade pushes his way through the crowd, sees the dead girl, and says, ""I'm sorry, Doctor Watson. I know you must have tried to save her. I'm afraid you'll have to come along with me to fill out the death certificate."""
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "Unfortunately, by the time you finish filling out the forms associated with the girl's death, the news of theft of the Crown Jewels leaks to the press, and all is lost."
|
||||
CRLF
|
||||
CRLF
|
||||
CALL1 RT-QSR
|
||||
RSTACK
|
||||
|
||||
.ENDI
|
250
eliza.zil
Normal file
250
eliza.zil
Normal file
|
@ -0,0 +1,250 @@
|
|||
;*****************************************************************************
|
||||
; "game : SHERLOCK!"
|
||||
; "file : ELIZA.ZIL"
|
||||
; "auth : $Author: DEB $"
|
||||
; "date : $Date: 26 Oct 1987 4:07:18 $"
|
||||
; "revs : $Revision: 1.34 $"
|
||||
; "vers : 1.00"
|
||||
;*****************************************************************************
|
||||
|
||||
<OBJECT TH-BLUE-PILL-BOTTLE
|
||||
(LOC TH-BLACK-BAG)
|
||||
(DESC "blue bottle")
|
||||
(FLAGS FL-CONTAINER FL-OPENABLE FL-READABLE FL-TAKEABLE)
|
||||
(SYNONYM BOTTLE BOTTLES LABEL)
|
||||
(ADJECTIVE BLUE)
|
||||
(SIZE 3 MASS 2 CAPACITY 2)
|
||||
(GENERIC RT-GN-BOTTLE)
|
||||
(ACTION RT-AC-TH-BLUE-PILL-BOTTLE)>
|
||||
|
||||
<OBJECT TH-BROWN-PILL-BOTTLE
|
||||
(LOC TH-BLACK-BAG)
|
||||
(DESC "brown bottle")
|
||||
(FLAGS FL-CONTAINER FL-OPENABLE FL-READABLE FL-TAKEABLE)
|
||||
(SYNONYM BOTTLE BOTTLES LABEL)
|
||||
(ADJECTIVE BROWN)
|
||||
(SIZE 3 MASS 2 CAPACITY 2)
|
||||
(GENERIC RT-GN-BOTTLE)
|
||||
(ACTION RT-AC-TH-BROWN-PILL-BOTTLE)>
|
||||
|
||||
<OBJECT TH-ORANGE-PILL
|
||||
(LOC TH-BLUE-PILL-BOTTLE)
|
||||
(DESC "orange pill")
|
||||
(FLAGS FL-TAKEABLE FL-READABLE FL-FOOD FL-VOWEL)
|
||||
(SYNONYM PILL PILLS)
|
||||
(ADJECTIVE ORANGE)
|
||||
(SIZE 1 MASS 1)
|
||||
(GENERIC RT-GN-PILL)
|
||||
(ACTION RT-AC-TH-ORANGE-PILL)>
|
||||
|
||||
<OBJECT TH-YELLOW-PILL
|
||||
(LOC TH-BROWN-PILL-BOTTLE)
|
||||
(DESC "yellow pill")
|
||||
(FLAGS FL-TAKEABLE FL-READABLE FL-FOOD)
|
||||
(SYNONYM PILL PILLS)
|
||||
(ADJECTIVE YELLOW)
|
||||
(SIZE 1 MASS 1)
|
||||
(GENERIC RT-GN-PILL)
|
||||
(ACTION RT-AC-TH-YELLOW-PILL)>
|
||||
|
||||
<ROUTINE RT-AC-TH-BLUE-PILL-BOTTLE ("OPTIONAL" (CONTEXT<>))
|
||||
<DEBUGGING? <RT-DEBUG-TH-AC "TH-BLUE-PILL-BOTTLE" .CONTEXT>>
|
||||
<COND (<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? READ EXAMINE LOOK-ON>
|
||||
<TELL
|
||||
"The label on the bottle reads: \"Digitalis leaf. For tachycardia and
|
||||
other accelerated arrhythmias.\"" CR>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<REMOVE ,TH-BLUE-PILL-BOTTLE>
|
||||
<TELL CTHEO ,K-SHATTER-MSG CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-BROWN-PILL-BOTTLE ("OPTIONAL" (CONTEXT<>))
|
||||
<DEBUGGING? <RT-DEBUG-TH-AC "TH-BROWN-PILL-BOTTLE" .CONTEXT>>
|
||||
<COND (<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? READ EXAMINE LOOK-ON>
|
||||
<TELL
|
||||
"The label on the bottle reads: \"Belladonna. For bradycardia and
|
||||
other decelerated arrhythmias.\"" CR>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<REMOVE ,TH-BROWN-PILL-BOTTLE>
|
||||
<TELL CTHEO ,K-SHATTER-MSG CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-ORANGE-PILL ("OPTIONAL" (CONTEXT<>))
|
||||
<DEBUGGING? <RT-DEBUG-TH-AC "TH-ORANGE-PILL" .CONTEXT>>
|
||||
<COND (<MC-THIS-PRSO?>
|
||||
<COND (<AND <MC-VERB? EAT>
|
||||
<==? ,GL-WINNER ,CH-PLAYER>>
|
||||
<TELL "You swallow the pill. For a few moments everything
|
||||
seems to move much slower." CR>
|
||||
<REMOVE ,GL-PRSO>
|
||||
T)
|
||||
(<MC-VERB? SHOOT>
|
||||
<REMOVE ,TH-ORANGE-PILL>
|
||||
<TELL CTHEO ,K-SHATTER-MSG CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-TH-YELLOW-PILL ("OPTIONAL" (CONTEXT<>))
|
||||
<DEBUGGING? <RT-DEBUG-TH-AC "TH-YELLOW-PILL" .CONTEXT>>
|
||||
<COND (<MC-THIS-PRSO?>
|
||||
<COND (<AND <MC-VERB? EAT>
|
||||
<==? ,GL-WINNER ,CH-PLAYER>>
|
||||
<TELL "You swallow the pill. For a few moments everything
|
||||
seems to move much faster." CR>
|
||||
<REMOVE ,GL-PRSO>
|
||||
T)
|
||||
(<MC-VERB? SHOOT>
|
||||
<REMOVE ,TH-YELLOW-PILL>
|
||||
<TELL CTHEO ,K-SHATTER-MSG CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-CH-ELIZA-DOOLITTLE ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-CH-AC "CH-ELIZA-DOOLITTLE" .CONTEXT>>
|
||||
<COND (<EQUAL? <GETP ,CH-ELIZA-DOOLITTLE ,P?OBJ-NOUN>
|
||||
,W?HEART ,W?HEARTBEAT>
|
||||
<COND (<==? .CONTEXT ,K-M-SDESC>
|
||||
<TELL "girl's heart">
|
||||
<RTRUE>)
|
||||
(<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<TELL "You don't have X-ray vision." CR>
|
||||
<RTRUE>)
|
||||
(<T? .CONTEXT> <RFALSE>)
|
||||
(<MC-VERB? LISTEN>
|
||||
<RT-LISTEN-ELIZA>
|
||||
<RTRUE>)
|
||||
(<RT-TOUCH-VERB?>
|
||||
<RT-IMPOSSIBLE-MSG>
|
||||
<RTRUE>)>)
|
||||
(<==? .CONTEXT ,K-M-SDESC>
|
||||
<TELL "girl">)
|
||||
(<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<RT-THIS-IS-IT ,CH-ELIZA-DOOLITTLE>
|
||||
<TELL
|
||||
"The flower girl is lying on the ground in a dead faint. She is very
|
||||
beautiful, but her clothes indicate that she must be poor." CR>
|
||||
<RTRUE>)
|
||||
(<MC-THIS-WINNER?>
|
||||
<TELL
|
||||
CTHE ,CH-ELIZA-DOOLITTLE " is unconscious. She cannot do anything." CR>
|
||||
<RTRUE>)
|
||||
(<T? .CONTEXT> <RFALSE>)
|
||||
(<OR <AND <MC-VERB? LISTEN>
|
||||
<MC-THIS-PRSO?>>
|
||||
<AND <MC-VERB? USE-ON TOUCH-TO>
|
||||
<MC-PRSO? ,TH-STETHOSCOPE>
|
||||
<MC-THIS-PRSI?>>
|
||||
<AND <MC-VERB? DIAGNOSE>
|
||||
<MC-THIS-PRSO?>>
|
||||
<AND <MC-VERB? LOOK-THRU>
|
||||
<EQUAL? ,GL-P-PRSA-WORD ,W?EXAMINE>
|
||||
<MC-THIS-PRSO?>
|
||||
<MC-PRSI? ,TH-STETHOSCOPE>>>
|
||||
<RT-LISTEN-ELIZA>)
|
||||
(<MC-VERB? GIVE FEED>
|
||||
<RT-CURE-ELIZA ,GL-PRSO>)
|
||||
(<MC-VERB? TAKE RAISE MOVE>
|
||||
<COND (<MC-PRSO? ,TH-ELIZAS-FLOWERS>
|
||||
<TELL ,K-OUTRAGED-CROWD-MSG CR>
|
||||
<RTRUE>)
|
||||
(<MC-PRSO? CH-ELIZA-DOOLITTLE>
|
||||
<TELL "The girl is too sick to be moved." CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>)
|
||||
(<MC-VERB? RESCUE>
|
||||
<TELL
|
||||
"A noble thought, worthy of someone who has taken the Hippocratic oath." CR>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? ALARM>
|
||||
<TELL
|
||||
"Your medical expertise tells you she's not just asleep. It's more serious
|
||||
than that." CR>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? SEARCH>
|
||||
<TELL ,K-OUTRAGED-CROWD-MSG CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE RT-LISTEN-ELIZA ()
|
||||
<COND (<MC-IS? ,TH-COTTON-BALLS ,FL-WORN>
|
||||
<RT-CYOU-MSG>
|
||||
<TELL
|
||||
"cannot hear a thing with " THE ,TH-COTTON-BALLS " in " THE ,TH-EARS "." CR>)
|
||||
(<MC-IS? ,TH-STETHOSCOPE ,FL-WORN>
|
||||
<COND (<N==? <LOC ,CH-PLAYER> <LOC ,CH-ELIZA-DOOLITTLE>>
|
||||
<TELL "You can't reach the girl from where you are."
|
||||
CR>
|
||||
<RTRUE>)>
|
||||
<COND (<ZERO? ,CH-ELIZA-DOOLITTLE-AUX1>
|
||||
<COND (<MC-PROB 50>
|
||||
<SETG CH-ELIZA-DOOLITTLE-AUX1 1>)
|
||||
(T
|
||||
<SETG CH-ELIZA-DOOLITTLE-AUX1 2>)>)>
|
||||
<COND (<EQUAL? ,CH-ELIZA-DOOLITTLE-AUX1 1>
|
||||
<IFSOUND <SOUNDS ,S-HEART3 ,S-START 6 10>>
|
||||
<TELL "Her heartbeat is incredibly fast." CR>)
|
||||
(<EQUAL? ,CH-ELIZA-DOOLITTLE-AUX1 2>
|
||||
<IFSOUND <SOUNDS ,S-HEART1 ,S-START 6 6>>
|
||||
<TELL "Her heartbeat is incredibly slow." CR>)>)
|
||||
(<OR <MC-PRSO? ,TH-STETHOSCOPE>
|
||||
<MC-PRSI? ,TH-STETHOSCOPE>>
|
||||
<RT-CYOU-MSG "are" "is">
|
||||
<TELL "not wearing " THE ,TH-STETHOSCOPE "." CR>)
|
||||
(T
|
||||
<TELL
|
||||
"The city noises are too loud for you to make an accurate diagnosis." CR>)>>
|
||||
|
||||
<ROUTINE RT-CURE-ELIZA (CURE)
|
||||
<COND (<EQUAL? .CURE ,TH-ORANGE-PILL>
|
||||
<REMOVE ,TH-ORANGE-PILL>
|
||||
<COND (<EQUAL? ,CH-ELIZA-DOOLITTLE-AUX1 1>
|
||||
<SETG CH-ELIZA-DOOLITTLE-AUX1 3>)
|
||||
(T
|
||||
<SETG CH-ELIZA-DOOLITTLE-AUX1 4>)>
|
||||
<TELL "You give her " THE .CURE "." CR CR>)
|
||||
(<EQUAL? .CURE ,TH-YELLOW-PILL>
|
||||
<REMOVE ,TH-YELLOW-PILL>
|
||||
<COND (<EQUAL? ,CH-ELIZA-DOOLITTLE-AUX1 2>
|
||||
<SETG CH-ELIZA-DOOLITTLE-AUX1 3>)
|
||||
(T
|
||||
<SETG CH-ELIZA-DOOLITTLE-AUX1 4>)>
|
||||
<TELL "You give her " THE .CURE "." CR CR>)
|
||||
(T
|
||||
<TELL "That would not do her much good." CR>
|
||||
<RTRUE>)>
|
||||
<COND (<EQUAL? ,CH-ELIZA-DOOLITTLE-AUX1 3>
|
||||
<MOVE ,TH-CARNATION ,TH-LAPEL>
|
||||
<REMOVE ,CH-ELIZA-DOOLITTLE>
|
||||
<MC-UNMAKE ,CH-ELIZA-DOOLITTLE ,FL-ASLEEP>
|
||||
<TELL
|
||||
"Nothing happens for a moment, but then her eyelids flutter briefly and
|
||||
she opens her eyes." CR CR
|
||||
|
||||
"The crowd breaks into applause, and they help her to her feet. When she
|
||||
is standing, she smiles at you shyly and puts a lovely carnation in your
|
||||
lapel as a gesture of thanks." CR CR
|
||||
|
||||
"Just then, a distinguished-looking gentleman appears on the scene, takes
|
||||
her by the arm, and says, \"Come, Eliza. We mustn't be late for the
|
||||
ball.\"" CR CR
|
||||
|
||||
"He escorts her away, but as she leaves, she glances back at you once
|
||||
more with a grateful expression in her lovely eyes." CR>
|
||||
<RT-UPDATE-SCORE <GETP ,TH-CARNATION ,P?VALUE>>
|
||||
<PUTP ,TH-CARNATION ,P?VALUE 0>
|
||||
<RTRUE>)
|
||||
(<EQUAL? ,CH-ELIZA-DOOLITTLE-AUX1 4>
|
||||
<MC-UNMAKE ,CH-ELIZA-DOOLITTLE ,FL-ALIVE>
|
||||
<TELL
|
||||
"Nothing happens for a moment, but then suddenly her body goes limp. It
|
||||
must have been the wrong pill." CR CR
|
||||
|
||||
"By this time, the large crowd has gathered the attention of the
|
||||
police. Inspector Lestrade pushes his way through the crowd, sees the
|
||||
dead girl, and says, \"I'm sorry, Doctor Watson. I know you must have
|
||||
tried to save her. I'm afraid you'll have to come along with me to fill
|
||||
out the death certificate.\"" CR CR
|
||||
|
||||
"Unfortunately, by the time you finish filling out the forms associated
|
||||
with the girl's death, the news of theft of the Crown Jewels leaks to the
|
||||
press, and all is lost." CR CR>
|
||||
<RT-QSR>)>>
|
||||
|
BIN
fan.was-mid
Normal file
BIN
fan.was-mid
Normal file
Binary file not shown.
BIN
fanfare.bin
Normal file
BIN
fanfare.bin
Normal file
Binary file not shown.
28
gamesound.chart
Normal file
28
gamesound.chart
Normal file
|
@ -0,0 +1,28 @@
|
|||
-date- -rel- -size- -pre- -obj- -glo- -voc-
|
||||
12/23 1 182622 30979 314 240 1194
|
||||
12/23 2 189426 30979 314 240 1194
|
||||
12/24 3 189410 30977 314 240 1194
|
||||
1/07 3 189410 30977 314 240 1194
|
||||
1/08 4 189402 30977 314 240 1194
|
||||
1/11 5 189402 30977 314 240 1194
|
||||
1/12 6 189522 30977 314 240 1194
|
||||
1/12 7 189554 30977 314 240 1194
|
||||
1/12 8 189606 30977 314 240 1194
|
||||
1/13 9 189614 30977 314 240 1194
|
||||
1/15 10 190390 30983 314 240 1194
|
||||
1/18 11 190390 30983 314 240 1194
|
||||
1/18 12 190402 30983 314 240 1194
|
||||
1/18 13 190410 30983 314 240 1194
|
||||
1/18 14 190410 30983 314 240 1194
|
||||
1/19 15 190414 30983 314 240 1194
|
||||
1/19 16 190478 30983 314 240 1194
|
||||
1/19 17 190502 30983 314 240 1194
|
||||
1/19 18 190474 30977 314 240 1194
|
||||
1/20 19 190378 30977 314 240 1194
|
||||
1/20 20 190362 30977 314 240 1194
|
||||
1/22 21 190362 30977 314 240 1194
|
||||
1/23 22 190366 30977 314 240 1194
|
||||
1/26 23 190174 30977 314 240 1194
|
||||
1/26 24 190138 30973 314 240 1194
|
||||
1/26 25 190130 30973 314 240 1194
|
||||
1/27 26 190178 30973 314 240 1194
|
36
gamesound.errors
Normal file
36
gamesound.errors
Normal file
|
@ -0,0 +1,36 @@
|
|||
Assembling GAMESOUND.ZAP.26 on Wednesday, January 27, 1988 15:52:06
|
||||
Release: 26
|
||||
|
||||
64 Inserting GAMESOUNDFREQ.ZAP.1 (620 bytes)
|
||||
684 Inserting GAMESOUNDDAT.ZAP.26 (30289 bytes)
|
||||
30973 Inserting SCHED.ZAP.140 (1253 bytes)
|
||||
32226 Inserting BOOT.ZAP.159 (2610 bytes)
|
||||
34836 Inserting PARSER.ZAP.184 (9985 bytes)
|
||||
44821 Inserting GAMESOUNDPUR.ZAP.26 (3202 bytes)
|
||||
48023 Inserting OTHER-MISC.ZAP.138 (4317 bytes)
|
||||
52340 Inserting DEBUG.ZAP.147 (58 bytes)
|
||||
52398 Inserting HINTS.ZAP.140 (1650 bytes)
|
||||
54048 Inserting VERBS.ZAP.84 (18296 bytes)
|
||||
72344 Inserting PEOPLE.ZAP.71 (15680 bytes)
|
||||
88024 Inserting GENERIC.ZAP.120 (871 bytes)
|
||||
88895 Inserting PLACES3.ZAP.137 (14899 bytes)
|
||||
103794 Inserting PLACES2.ZAP.129 (8415 bytes)
|
||||
112209 Inserting THINGS2.ZAP.145 (17725 bytes)
|
||||
129934 Inserting THINGS1.ZAP.125 (1601 bytes)
|
||||
131535 Inserting CAB.ZAP.142 (3875 bytes)
|
||||
135410 Inserting TOWER.ZAP.125 (2311 bytes)
|
||||
137721 Inserting SCOPE.ZAP.122 (1533 bytes)
|
||||
139254 Inserting ELIZA.ZAP.124 (1801 bytes)
|
||||
141055 Inserting CHARLES.ZAP.131 (5059 bytes)
|
||||
146114 Inserting BANK.ZAP.128 (7526 bytes)
|
||||
153640 Inserting PUZZLES.ZAP.133 (14468 bytes)
|
||||
168108 Inserting LOCALS.ZAP.65 (3365 bytes)
|
||||
171473 Inserting GAMESOUNDSTR.ZAP.26 (18705 bytes)
|
||||
314 objects.
|
||||
240 globals.
|
||||
1194 word vocabulary.
|
||||
|
||||
190178 bytes (186K).
|
||||
30973 bytes of preload.
|
||||
16443 bytes of impure.
|
||||
Outputting symbol tables
|
2
gamesound.lowcore
Normal file
2
gamesound.lowcore
Normal file
|
@ -0,0 +1,2 @@
|
|||
|
||||
0
|
1319
gamesound.record
Normal file
1319
gamesound.record
Normal file
File diff suppressed because it is too large
Load diff
1
gamesound.serial
Normal file
1
gamesound.serial
Normal file
|
@ -0,0 +1 @@
|
|||
27
|
63
gamesound.zap
Normal file
63
gamesound.zap
Normal file
|
@ -0,0 +1,63 @@
|
|||
.NEW 5
|
||||
; Low core locations
|
||||
%ZVERSION:: .BYTE 5
|
||||
.BYTE FLAGS
|
||||
%ZORKID:: ZORKID
|
||||
%ENDLOD:: ENDLOD
|
||||
%START:: START
|
||||
%VOCAB:: VOCAB
|
||||
%OBJECT:: OBJECT
|
||||
%GLOBAL:: GLOBAL
|
||||
%PURBOT:: IMPURE
|
||||
%FLAGS:: .WORD 144
|
||||
%SERIAL:: .WORD 0
|
||||
%SERI1:: .WORD 0
|
||||
%SERI2:: .WORD 0
|
||||
%FWORDS:: WORDS
|
||||
%PLENTH:: .WORD 0
|
||||
%PCHKSM:: .WORD 0
|
||||
%INTWRD:: .WORD 0
|
||||
%SCRWRD:: .WORD 0
|
||||
%HWRD:: .WORD 0
|
||||
%VWRD:: .WORD 0
|
||||
%FWRD:: .WORD 0
|
||||
%LMRG:: .WORD 0
|
||||
%RMRG:: .WORD 0
|
||||
%CLRWRD:: .WORD 0
|
||||
%TCHAR:: TCHARS
|
||||
%CRCNT:: .WORD 0
|
||||
%CRFUNC:: .WORD 0
|
||||
%CHRSET:: .WORD 0
|
||||
%EXTAB:: 0
|
||||
.WORD 0
|
||||
.WORD 0
|
||||
.WORD 0
|
||||
.WORD 0
|
||||
.INSERT "PS:<SHERLOCK>GAMESOUNDFREQ" ;Frequent word table
|
||||
.INSERT "PS:<SHERLOCK>GAMESOUNDDAT" ; Data file
|
||||
.INSERT "PS:<SHERLOCK>SCHED"
|
||||
.INSERT "PS:<SHERLOCK>BOOT"
|
||||
.INSERT "PS:<SHERLOCK>PARSER"
|
||||
.INSERT "PS:<SHERLOCK>GAMESOUNDPUR"
|
||||
.INSERT "PS:<SHERLOCK>OTHER-MISC"
|
||||
.INSERT "PS:<SHERLOCK>DEBUG"
|
||||
.INSERT "PS:<SHERLOCK>HINTS"
|
||||
.INSERT "PS:<SHERLOCK>VERBS"
|
||||
.INSERT "PS:<SHERLOCK>PEOPLE"
|
||||
.INSERT "PS:<SHERLOCK>GENERIC"
|
||||
.INSERT "PS:<SHERLOCK>PLACES3"
|
||||
.INSERT "PS:<SHERLOCK>PLACES2"
|
||||
.INSERT "PS:<SHERLOCK>THINGS2"
|
||||
.INSERT "PS:<SHERLOCK>THINGS1"
|
||||
.INSERT "PS:<SHERLOCK>CAB"
|
||||
.INSERT "PS:<SHERLOCK>TOWER"
|
||||
.INSERT "PS:<SHERLOCK>SCOPE"
|
||||
.INSERT "PS:<SHERLOCK>ELIZA"
|
||||
.INSERT "PS:<SHERLOCK>CHARLES"
|
||||
.INSERT "PS:<SHERLOCK>BANK"
|
||||
.INSERT "PS:<SHERLOCK>PUZZLES"
|
||||
.INSERT "PS:<SHERLOCK>LOCALS"
|
||||
|
||||
.INSERT "PS:<SHERLOCK>GAMESOUNDSTR"
|
||||
|
||||
.END
|
185
gamesound.zil
Normal file
185
gamesound.zil
Normal file
|
@ -0,0 +1,185 @@
|
|||
<PRINC "
|
||||
******************************************************************************
|
||||
******************************* SHERLOCK 1.00 ********************************
|
||||
******************************************************************************
|
||||
">
|
||||
|
||||
<VERSION XZIP>
|
||||
|
||||
ON!-INITIAL
|
||||
OFF!-INITIAL
|
||||
ENABLE!-INITIAL
|
||||
DISABLE!-INITIAL
|
||||
|
||||
<SET REDEFINE T>
|
||||
|
||||
<SETG SIBREAKS ".,\"!?">
|
||||
|
||||
<OR <GASSIGNED? ZILCH>
|
||||
<SETG WBREAKS <STRING !\" !,WBREAKS>>>
|
||||
|
||||
<COND
|
||||
(<GASSIGNED? PREDGEN>
|
||||
<SETG ZSTR-ON <SETG ZSTR-OFF ,TIME>>)>
|
||||
|
||||
<SETG GL-DEBUG? <>>
|
||||
|
||||
<FUNNY-GLOBALS?>
|
||||
|
||||
<FREQUENT-WORDS?>
|
||||
|
||||
<ORDER-OBJECTS? ROOMS-AND-LGS-FIRST> ; "So we can use byte tables for rooms"
|
||||
|
||||
<SETG COMPACT-VOCABULARY? T> ; "Saves a byte/word"
|
||||
|
||||
<SETG COMPACT-SYNTAXES? T> ; "Seriously cram syntaxes"
|
||||
|
||||
<SETG DO-PURE-TABLE-NTHS? T> ; "Minor optimization"
|
||||
|
||||
<ZIP-OPTIONS SOUND UNDO> ; "Set UNDO bit in FLAGS"
|
||||
|
||||
; "GLOBAL property should make byte tables instead of word tables, due to
|
||||
ROOMS-AND-LGS-FIRST. DIRECTION properties redefined to take advantage
|
||||
of single-byte room pointers, and to make more common exit types take
|
||||
less space."
|
||||
<PROPDEF GLOBAL <>
|
||||
(GLOBAL "MANY" LG:OBJECT = <> "MANY" <ROOM .LG>)>
|
||||
|
||||
<PROPDEF DIRECTIONS <>
|
||||
(DIR TO R:ROOM =
|
||||
(UEXIT 1) #SEMI "UNCONDITIONAL EXIT"
|
||||
(REXIT <ROOM .R>) #SEMI "TO ROOM")
|
||||
(DIR PER F:FCN = ; "Changed because most common case"
|
||||
(FEXIT 2) #SEMI "CONDITIONAL EXIT"
|
||||
(FEXITFCN <WORD .F>) #SEMI "PER FUNCTION")
|
||||
(DIR TO R:ROOM IF O:OBJECT IS OPEN =
|
||||
(DEXIT 3) #SEMI "CONDITIONAL EXIT"
|
||||
(REXIT <ROOM .R>) #SEMI "TO ROOM"
|
||||
(DEXITOBJ <OBJECT .O>) #SEMI "IF DOOR IS OPEN")
|
||||
(DIR SORRY S:STRING =
|
||||
(NEXIT 4) #SEMI "IMPOSSIBLE EXIT"
|
||||
(NEXITSTR <STRING .S>) #SEMI "FAILURE MESSAGE"
|
||||
<BYTE 0>
|
||||
<BYTE 0>)
|
||||
(DIR TO R:ROOM IF F:GLOBAL =
|
||||
(CEXIT 5) #SEMI "CONDITIONAL EXIT"
|
||||
(REXIT <ROOM .R>) #SEMI "TO ROOM"
|
||||
(CEXITFLAG <GLOBAL .F>) #SEMI "IF FLAG IS TRUE"
|
||||
<BYTE 0> <BYTE 0> <BYTE 0>)
|
||||
>
|
||||
|
||||
<DIRECTIONS NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
|
||||
|
||||
<PUTPROP PSEUDOS PROPSPEC HACK-PSEUDOS>
|
||||
|
||||
<DEFINE20 HACK-PSEUDOS (LIST "AUX" (N 0) (CT 0) NL)
|
||||
<SET LIST <REST .LIST>>
|
||||
<SET LIST
|
||||
<MAPF ,LIST
|
||||
<FUNCTION (X)
|
||||
<COND (<0? .N>
|
||||
<SET CT <+ .CT 1>>
|
||||
<SET N 1>
|
||||
<COND (<TYPE? .X ATOM>
|
||||
<TABLE (PURE PATTERN (BYTE [REST WORD]))
|
||||
1
|
||||
<VOC <SPNAME .X> ADJ>>)
|
||||
(<TYPE? .X LIST>
|
||||
<EVAL <CHTYPE (TABLE (PURE PATTERN (BYTE [REST WORD]))
|
||||
<LENGTH .X>
|
||||
!<MAPF ,LIST
|
||||
<FUNCTION (Y)
|
||||
<VOC <SPNAME .Y> ADJ>>
|
||||
.X>) FORM>>)
|
||||
(T 0)>)
|
||||
(<1? .N>
|
||||
<SET N 2>
|
||||
<COND (<TYPE? .X ATOM>
|
||||
<TABLE (PURE PATTERN (BYTE [REST WORD]))
|
||||
1 <VOC <SPNAME .X> NOUN>>)
|
||||
(<TYPE? .X LIST>
|
||||
<EVAL <CHTYPE (TABLE (PURE PATTERN (BYTE [REST WORD]))
|
||||
<LENGTH .X>
|
||||
!<MAPF ,LIST
|
||||
<FUNCTION (Y)
|
||||
<VOC <SPNAME .Y> NOUN>>
|
||||
.X>) FORM>>)
|
||||
(T 0)>)
|
||||
(T
|
||||
<SET N 0>
|
||||
.X)>>
|
||||
.LIST>>
|
||||
(<> <EVAL <CHTYPE (TABLE (PURE PATTERN (BYTE [REST WORD]))
|
||||
.CT !.LIST) FORM>>)>
|
||||
|
||||
<PUTPROP SIZE PROPSPEC HACK-SIZE>
|
||||
|
||||
<SETG20 SIZE-VALS 13>
|
||||
<SETG20 MASS-VALS 11>
|
||||
<SETG20 CAPACITY-VALS 102>
|
||||
|
||||
<DEFINE20 HACK-SIZE (LIST "AUX" (VAL 0) TL TN)
|
||||
<COND (<SET TL <MEMQ SIZE .LIST>>
|
||||
<SET TN <2 .TL>>
|
||||
<COND (<L? .TN 6>
|
||||
<SET VAL .TN>)
|
||||
(<==? .TN 10> <SET VAL 6>)
|
||||
(<==? .TN 12> <SET VAL 7>)
|
||||
(<==? .TN 15> <SET VAL 8>)
|
||||
(<==? .TN 20> <SET VAL 9>)
|
||||
(<==? .TN 50> <SET VAL 10>)
|
||||
(<==? .TN 99> <SET VAL 11>)
|
||||
(<==? .TN 100> <SET VAL 12>)
|
||||
(T <ERROR UNKNOWN-SIZE!-ERRORS .TN .LIST>)>)>
|
||||
<COND (<SET TL <MEMQ MASS .LIST>>
|
||||
<SET TN <2 .TL>>
|
||||
<COND (<L? .TN 6>)
|
||||
(<==? .TN 10> <SET TN 6>)
|
||||
(<==? .TN 15> <SET TN 7>)
|
||||
(<==? .TN 50> <SET TN 8>)
|
||||
(<==? .TN 100> <SET TN 9>)
|
||||
(<==? .TN 250> <SET TN 10>)
|
||||
(T <ERROR UNKNOWN-MASS!-ERRORS .TN .NAME .LIST>)>
|
||||
<SET VAL <+ .VAL <* .TN ,SIZE-VALS>>>)>
|
||||
<COND (<SET TL <MEMQ CAPACITY .LIST>>
|
||||
<SET TN <2 .TL>>
|
||||
<COND (<L? .TN 101>)
|
||||
(<==? .TN 999> <SET TN 101>)
|
||||
(T <ERROR UNKNOWN CAPACITY!-ERRORS .TN .NAME .LIST>)>
|
||||
<SET VAL <+ .VAL <* .TN <* ,SIZE-VALS ,MASS-VALS>>>>)>
|
||||
(<> .VAL)>
|
||||
|
||||
<DEFMAC IFSOUND ("ARGS" X)
|
||||
<COND (<LENGTH? .X 1> <1 .X>)
|
||||
(T <CHTYPE (!.X) SPLICE>)>>
|
||||
|
||||
<INSERT-FILE "CONSTANTS" T>
|
||||
<INSERT-FILE "MACROS" T> ;"AUXES MERGED INTO MACROS"
|
||||
<INSERT-FILE "SYNTAX" T> ;"MISC (BETA/GAMMA STUFF) DELETED"
|
||||
<INSERT-FILE "SCHED" T>
|
||||
<INSERT-FILE "BOOT" T>
|
||||
<INSERT-FILE "PARSER" T>
|
||||
; "If PARSER doesn't end before 44800, you'll lose on the C64."
|
||||
<PUT-PURE-HERE>
|
||||
<INSERT-FILE "OTHER-MISC" T> ;"GO & WAIT & WINDOW MERGED INTO OTHER-MISC"
|
||||
<INSERT-FILE "SOUNDS" T>
|
||||
<INSERT-FILE "DEBUG" T>
|
||||
<INSERT-FILE "HINTS" T>
|
||||
<INSERT-FILE "VERBS" T>
|
||||
<INSERT-FILE "PEOPLE" T>
|
||||
<INSERT-FILE "GENERIC" T>
|
||||
<INSERT-FILE "PLACES3" T>
|
||||
<INSERT-FILE "PLACES2" T>
|
||||
<INSERT-FILE "PLACES1" T>
|
||||
<INSERT-FILE "THINGS2" T>
|
||||
<INSERT-FILE "THINGS1" T>
|
||||
<INSERT-FILE "CAB" T>
|
||||
<INSERT-FILE "TOWER" T>
|
||||
<INSERT-FILE "SCOPE" T>
|
||||
<INSERT-FILE "ELIZA" T>
|
||||
<INSERT-FILE "CHARLES" T>
|
||||
<INSERT-FILE "BANK" T>
|
||||
<INSERT-FILE "PUZZLES" T>
|
||||
<INSERT-FILE "LOCALS" T> ;"MERGED LOCALS1 AND LOCALS2"
|
||||
|
||||
|
BIN
gamesound.zip
Normal file
BIN
gamesound.zip
Normal file
Binary file not shown.
16688
gamesounddat.zap
Normal file
16688
gamesounddat.zap
Normal file
File diff suppressed because it is too large
Load diff
200
gamesoundfreq.zap
Normal file
200
gamesoundfreq.zap
Normal file
|
@ -0,0 +1,200 @@
|
|||
.FSTR FSTR?1,"the " ;3108 1555
|
||||
.FSTR FSTR?2,"you " ;1300 651
|
||||
.FSTR FSTR?3,", " ;1172 1173
|
||||
.FSTR FSTR?4,"You " ;1104 369
|
||||
.FSTR FSTR?5,"and " ;1074 538
|
||||
.FSTR FSTR?6,"The " ;1014 339
|
||||
.FSTR FSTR?7,"to " ;724 725
|
||||
.FSTR FSTR?8,". " ;707 708
|
||||
.FSTR FSTR?9,"of " ;619 620
|
||||
.FSTR FSTR?10,"is " ;539 540
|
||||
.FSTR FSTR?11,"Holmes " ;534 90
|
||||
.FSTR FSTR?12,"that " ;531 178
|
||||
.FSTR FSTR?13,"your " ;477 160
|
||||
.FSTR FSTR?14,"with " ;429 144
|
||||
.FSTR FSTR?15,"cannot " ;420 85
|
||||
.FSTR FSTR?16,"already " ;414 70
|
||||
.FSTR FSTR?17,"Watson" ;390 79
|
||||
.FSTR FSTR?18,"in " ;387 388
|
||||
.FSTR FSTR?19,"are " ;378 190
|
||||
.FSTR FSTR?20,"have " ;372 125
|
||||
.FSTR FSTR?21,"It's " ;350 71
|
||||
.FSTR FSTR?22,"into " ;345 116
|
||||
.FSTR FSTR?23,"can't " ;330 67
|
||||
.FSTR FSTR?24,"from " ;321 108
|
||||
.FSTR FSTR?25,"for " ;316 159
|
||||
.FSTR FSTR?26,"not " ;270 136
|
||||
.FSTR FSTR?27,"There " ;270 55
|
||||
.FSTR FSTR?28,"his " ;238 120
|
||||
.FSTR FSTR?29,"looks " ;224 57
|
||||
.FSTR FSTR?30,"anything " ;224 33
|
||||
.FSTR FSTR?31,"says" ;210 106
|
||||
.FSTR FSTR?32,"about " ;204 52
|
||||
.FSTR FSTR?33,"I " ;203 204
|
||||
.FSTR FSTR?34,"He " ;202 102
|
||||
.FSTR FSTR?35,"see " ;196 99
|
||||
.FSTR FSTR?36,"out " ;192 97
|
||||
.FSTR FSTR?37,"through " ;192 33
|
||||
.FSTR FSTR?38,"something " ;192 25
|
||||
.FSTR FSTR?39,"Holmes's " ;189 22
|
||||
.FSTR FSTR?40,"which " ;188 48
|
||||
.FSTR FSTR?41,"on " ;180 181
|
||||
.FSTR FSTR?42,"it " ;176 177
|
||||
.FSTR FSTR?43,"but " ;176 89
|
||||
.FSTR FSTR?44,"would " ;176 45
|
||||
.FSTR FSTR?45,"don't " ;175 36
|
||||
.FSTR FSTR?46,"nothing " ;162 28
|
||||
.FSTR FSTR?47,"I'm " ;156 40
|
||||
.FSTR FSTR?48,"around " ;155 32
|
||||
.FSTR FSTR?49,"doesn't " ;154 23
|
||||
.FSTR FSTR?50,"at " ;153 154
|
||||
.FSTR FSTR?51,"It " ;150 76
|
||||
.FSTR FSTR?52,"get " ;144 73
|
||||
.FSTR FSTR?53,"door " ;144 49
|
||||
.FSTR FSTR?54,"back " ;144 49
|
||||
.FSTR FSTR?55,"this " ;141 48
|
||||
.FSTR FSTR?56,"How " ;141 48
|
||||
.FSTR FSTR?57,"other " ;140 36
|
||||
.FSTR FSTR?58,"Wiggins " ;140 21
|
||||
.FSTR FSTR?59,"then " ;138 47
|
||||
.FSTR FSTR?60,"will " ;135 46
|
||||
.FSTR FSTR?61,"you" ;132 133
|
||||
.FSTR FSTR?62,"has " ;132 67
|
||||
.FSTR FSTR?63,"holding " ;132 23
|
||||
.FSTR FSTR?64,"looking " ;126 22
|
||||
.FSTR FSTR?65,"appears " ;126 22
|
||||
.FSTR FSTR?66,"disappears " ;126 15
|
||||
.FSTR FSTR?67,"just " ;123 42
|
||||
.FSTR FSTR?68,"been " ;120 41
|
||||
.FSTR FSTR?69,"Street" ;120 25
|
||||
.FSTR FSTR?70,"Holmes" ;120 25
|
||||
.FSTR FSTR?71,"you're " ;120 21
|
||||
.FSTR FSTR?72,"You're " ;119 18
|
||||
.FSTR FSTR?73,"everything " ;117 14
|
||||
.FSTR FSTR?74,"do " ;116 117
|
||||
.FSTR FSTR?75,"there " ;116 30
|
||||
.FSTR FSTR?76,"That " ;116 30
|
||||
.FSTR FSTR?77,"one " ;114 58
|
||||
.FSTR FSTR?78,"can " ;114 58
|
||||
.FSTR FSTR?79,"be " ;113 114
|
||||
.FSTR FSTR?80,"Tower" ;112 29
|
||||
.FSTR FSTR?81,"This " ;112 29
|
||||
.FSTR FSTR?82,"Lestrade " ;112 15
|
||||
.FSTR FSTR?83,"only " ;111 38
|
||||
.FSTR FSTR?84,"he " ;110 111
|
||||
.FSTR FSTR?85,"Tower " ;110 23
|
||||
.FSTR FSTR?86,"must " ;108 37
|
||||
.FSTR FSTR?87,"look " ;108 37
|
||||
.FSTR FSTR?88,"like " ;108 37
|
||||
.FSTR FSTR?89,"Have " ;108 28
|
||||
.FSTR FSTR?90,"London " ;108 19
|
||||
.FSTR FSTR?91,"After " ;105 22
|
||||
.FSTR FSTR?92,"Crown " ;105 22
|
||||
.FSTR FSTR?93,"Hudson " ;102 18
|
||||
.FSTR FSTR?94,"Don't " ;102 18
|
||||
.FSTR FSTR?95,"as " ;100 101
|
||||
.FSTR FSTR?96,"too " ;100 51
|
||||
|
||||
|
||||
;word frequency table of 96 most common words
|
||||
|
||||
WORDS:: .TABLE
|
||||
FSTR?1
|
||||
FSTR?2
|
||||
FSTR?3
|
||||
FSTR?4
|
||||
FSTR?5
|
||||
FSTR?6
|
||||
FSTR?7
|
||||
FSTR?8
|
||||
FSTR?9
|
||||
FSTR?10
|
||||
FSTR?11
|
||||
FSTR?12
|
||||
FSTR?13
|
||||
FSTR?14
|
||||
FSTR?15
|
||||
FSTR?16
|
||||
FSTR?17
|
||||
FSTR?18
|
||||
FSTR?19
|
||||
FSTR?20
|
||||
FSTR?21
|
||||
FSTR?22
|
||||
FSTR?23
|
||||
FSTR?24
|
||||
FSTR?25
|
||||
FSTR?26
|
||||
FSTR?27
|
||||
FSTR?28
|
||||
FSTR?29
|
||||
FSTR?30
|
||||
FSTR?31
|
||||
FSTR?32
|
||||
FSTR?33
|
||||
FSTR?34
|
||||
FSTR?35
|
||||
FSTR?36
|
||||
FSTR?37
|
||||
FSTR?38
|
||||
FSTR?39
|
||||
FSTR?40
|
||||
FSTR?41
|
||||
FSTR?42
|
||||
FSTR?43
|
||||
FSTR?44
|
||||
FSTR?45
|
||||
FSTR?46
|
||||
FSTR?47
|
||||
FSTR?48
|
||||
FSTR?49
|
||||
FSTR?50
|
||||
FSTR?51
|
||||
FSTR?52
|
||||
FSTR?53
|
||||
FSTR?54
|
||||
FSTR?55
|
||||
FSTR?56
|
||||
FSTR?57
|
||||
FSTR?58
|
||||
FSTR?59
|
||||
FSTR?60
|
||||
FSTR?61
|
||||
FSTR?62
|
||||
FSTR?63
|
||||
FSTR?64
|
||||
FSTR?65
|
||||
FSTR?66
|
||||
FSTR?67
|
||||
FSTR?68
|
||||
FSTR?69
|
||||
FSTR?70
|
||||
FSTR?71
|
||||
FSTR?72
|
||||
FSTR?73
|
||||
FSTR?74
|
||||
FSTR?75
|
||||
FSTR?76
|
||||
FSTR?77
|
||||
FSTR?78
|
||||
FSTR?79
|
||||
FSTR?80
|
||||
FSTR?81
|
||||
FSTR?82
|
||||
FSTR?83
|
||||
FSTR?84
|
||||
FSTR?85
|
||||
FSTR?86
|
||||
FSTR?87
|
||||
FSTR?88
|
||||
FSTR?89
|
||||
FSTR?90
|
||||
FSTR?91
|
||||
FSTR?92
|
||||
FSTR?93
|
||||
FSTR?94
|
||||
FSTR?95
|
||||
FSTR?96
|
||||
.ENDT
|
||||
|
||||
.ENDI
|
311
gamesoundglobals.dat
Normal file
311
gamesoundglobals.dat
Normal file
|
@ -0,0 +1,311 @@
|
|||
(GL-PRSO ; 885
|
||||
GL-PRSA ; 787
|
||||
GL-PRSI ; 400
|
||||
GL-PLACE-CUR ; 381
|
||||
GL-WINNER ; 232
|
||||
GL-NOW-PRSI? ; 167
|
||||
GL-PUPPY ; 80
|
||||
GL-P-PRSA-WORD ; 60
|
||||
GL-P-IT-OBJECT ; 45
|
||||
GL-P-ITBL ; 81
|
||||
GL-PLACE-PRV ; 40
|
||||
GL-P-LEN ; 39
|
||||
GL-NOW-LIT? ; 36
|
||||
GL-P-ADJ ; 32
|
||||
GL-P-NCN ; 30
|
||||
GL-TIME-PARM ; 60
|
||||
GL-P-P-LEX ; 57
|
||||
GL-P-NAM ; 28
|
||||
GL-P-ORPH ; 23
|
||||
GL-P-OTBL ; 39
|
||||
CH-TRAINED-PIGEON-AUX1 ; 19
|
||||
GL-CUR-POS ; 18
|
||||
GL-P-SLOCBITS ; 18
|
||||
GL-WINDOW ; 18
|
||||
SOUND-QUEUED? ; 17
|
||||
GL-P-NUMBER ; 16
|
||||
GL-QUEST-NUM ; 15
|
||||
GL-TIME ; 30
|
||||
GL-CHAPT-NUM ; 14
|
||||
GL-P-GET-FLAGS ; 14
|
||||
CH-ELIZA-DOOLITTLE-AUX1 ; 13
|
||||
GL-P-CONT ; 13
|
||||
GL-P-MULT? ; 13
|
||||
GL-P-QUOT ; 13
|
||||
GL-P-WALK-DIR ; 13
|
||||
GL-SCORE-CUR ; 13
|
||||
GL-WHERE-TO-ORPH? ; 13
|
||||
LOOPING? ; 13
|
||||
GL-P-NAMW ; 25
|
||||
CH-HOLMES-AUX1 ; 12
|
||||
CH-TRAINED-PIGEON-AUX2 ; 12
|
||||
GL-FORMER-PUPPY ; 12
|
||||
GL-P-ACLAUSE ; 12
|
||||
GL-P-HER-OBJECT ; 12
|
||||
GL-P-HIM-OBJECT ; 12
|
||||
GL-P-MERGED ; 12
|
||||
GL-P-THEM-OBJECT ; 12
|
||||
GL-SPLIT-ROW ; 12
|
||||
GL-WHERE-TO-PROMPT? ; 12
|
||||
GL-CLOCK-WAIT ; 11
|
||||
GL-P-SYNTAX ; 11
|
||||
MYCROFT-STATE ; 11
|
||||
CAB-RAMP ; 10
|
||||
CH-TRAINED-PIGEON-AUX3 ; 10
|
||||
GL-ALLSCREEN ; 10
|
||||
GL-DESC-LEVEL ; 10
|
||||
GL-P-PRSO ; 20
|
||||
GL-P-QCONTEXT-TH ; 10
|
||||
GL-PUPPY-MSG? ; 10
|
||||
TH-DIAL-AUX1 ; 10
|
||||
TH-DIAL-AUX2 ; 10
|
||||
K-RICOCHET-MSG ; 19
|
||||
GL-P-VTBL ; 18
|
||||
HEARD-SWING? ; 9
|
||||
SOUND-ON? ; 9
|
||||
TH-BELL-AUX1 ; 9
|
||||
TH-ROPE-AUX2 ; 9
|
||||
GL-P-PRSI ; 17
|
||||
GL-LISTEN-OBJ ; 8
|
||||
GL-P-DIRECTION ; 8
|
||||
GL-P-GOOD ; 8
|
||||
GL-P-GWIMBIT ; 8
|
||||
GL-P-PHR ; 8
|
||||
GL-SCORE-MSG ; 8
|
||||
TH-BELL-AUX2 ; 8
|
||||
TH-PACKET-OF-PAPER-AUX1 ; 8
|
||||
TH-ROPE-AUX1 ; 8
|
||||
K-TOO-DARK-MSG ; 15
|
||||
CH-VENDOR-AUX1 ; 7
|
||||
GL-LAST-OUT-TOD ; 7
|
||||
GL-OOPS-TABLE ; 14
|
||||
GL-P-QCONTEXT-RM ; 7
|
||||
GL-P-TABLE ; 7
|
||||
GL-PLACE-STS ; 7
|
||||
PLAYER-IN-ABBEY ; 7
|
||||
TH-SAFETY-DEPOSIT-BOX-AUX1 ; 7
|
||||
GL-FUNNY-CLAUSE? ; 6
|
||||
GL-P-OF ; 6
|
||||
GL-P-XNAM ; 6
|
||||
GL-RESERVE-PTR ; 6
|
||||
GL-TIME-UPDT-INC ; 12
|
||||
TH-BOX-KEY-AUX1 ; 6
|
||||
GL-A-TIME ; 11
|
||||
GL-HOLMES-DESC-TXT ; 11
|
||||
GL-P-ADJW ; 11
|
||||
GL-P-MERGE ; 11
|
||||
GL-P-PIBUF ; 11
|
||||
GL-P-S-LEX ; 11
|
||||
GL-A-ROUT ; 10
|
||||
GL-P-XADJ ; 5
|
||||
GL-SCORE-MAX ; 5
|
||||
GL-SCORE-STS ; 5
|
||||
GL-STAT-S-POS ; 5
|
||||
GL-STAT-T-POS ; 5
|
||||
GL-WAIT-BELL ; 5
|
||||
INHIBIT-ROOMS ; 5
|
||||
K-HOW-TO-MSG ; 10
|
||||
RUN-SMELL-ETHERIUM? ; 5
|
||||
GL-BORING-TXT ; 9
|
||||
GL-P-OCLAUSE ; 9
|
||||
GL-P-TIME ; 9
|
||||
BELIEVE-WAIT-TIME? ; 4
|
||||
GL-CAN-UNDO ; 4
|
||||
GL-CLOSED-OBJECT ; 4
|
||||
GL-LASTFOC ; 4
|
||||
GL-LINE-TABLE ; 4
|
||||
GL-MOVES-CUR ; 4
|
||||
GL-OOPS-INBUF ; 8
|
||||
GL-P-END-ON-PREP ; 4
|
||||
GL-P-MOBY-FOUND ; 4
|
||||
GL-SHORT-STAT? ; 4
|
||||
K-ASTERISK-MSG ; 8
|
||||
K-GOOD-SHOW-MSG ; 8
|
||||
K-MAYBE-MSG ; 8
|
||||
K-PITY-MSG ; 8
|
||||
LOOP-VOL ; 4
|
||||
TH-BOX-LOCK-AUX1 ; 4
|
||||
TH-CAB-WHISTLE-AUX1 ; 4
|
||||
TH-HANSOM-CAB-AUX2 ; 4
|
||||
WIGGINS-COLD? ; 4
|
||||
GL-P-BUTS ; 7
|
||||
GL-P-OFW ; 7
|
||||
GL-TEMP-TIME ; 7
|
||||
K-SHATTER-MSG ; 7
|
||||
ALLOW-IN-TOWER ; 3
|
||||
CH-BANK-GUARD-AUX1 ; 3
|
||||
GL-AGAIN-DIR ; 3
|
||||
GL-ALARM-EXEC ; 3
|
||||
GL-DEBUG-FLAG ; 3
|
||||
GL-IN-OUT ; 3
|
||||
GL-LONG-OOPS ; 3
|
||||
GL-MOVES-STS ; 3
|
||||
GL-P-ANAM ; 3
|
||||
GL-P-AND ; 3
|
||||
GL-P-OVERFLOW ; 3
|
||||
GL-P-OVTBL ; 6
|
||||
GL-P-TIME-FLAG ; 3
|
||||
GL-STAT-MAX-ROOM ; 3
|
||||
KNIFE-COLD? ; 3
|
||||
LAST-PSEUDO-LOC ; 3
|
||||
PASSWORD-ID ; 3
|
||||
RM-HOLMES-STUDY-AUX1 ; 3
|
||||
TH-BOAT-AUX1 ; 3
|
||||
TH-CAB-WHISTLE-AUX2 ; 3
|
||||
TH-GUN-AUX1 ; 3
|
||||
WINNER-IS-WIGGINS ; 3
|
||||
K-ANNIE-OAKELEY-MSG ; 5
|
||||
K-BE-MORE-SPECIFIC-MSG ; 5
|
||||
K-HINTS ; 5
|
||||
BOX-KEY-COLD? ; 2
|
||||
CAB-ROOM-IDS ; 4
|
||||
CH-WIGGINS-AUX1 ; 2
|
||||
GL-ALARM-WAIT ; 2
|
||||
GL-CLOCK-STOP ; 2
|
||||
GL-COLUMN-TABLE ; 4
|
||||
GL-DIROUT-TBL ; 4
|
||||
GL-HINT-WARNING ; 2
|
||||
GL-HINTS-OFF ; 2
|
||||
GL-MIDSCREEN ; 2
|
||||
GL-P-DIR-WORD ; 2
|
||||
GL-SCORE-HEADER-LEN ; 2
|
||||
GL-YES-LEXV ; 4
|
||||
K-DONT-UNDERSTAND-MSG ; 4
|
||||
K-INAPPROPRIATE-MSG ; 4
|
||||
K-SMOULDERS-MSG ; 4
|
||||
K-SPECIFY-DIR-MSG ; 4
|
||||
K-SUICIDE-MSG ; 4
|
||||
K-THEFT-MSG ; 4
|
||||
TH-GROWLER-CAB-AUX1 ; 2
|
||||
TH-HANSOM-CAB-AUX1 ; 2
|
||||
TH-PHIAL-AUX1 ; 2
|
||||
TH-SAPPHIRE-AUX1 ; 2
|
||||
GL-DAY-NAME ; 3
|
||||
GL-HOLES ; 3
|
||||
GL-NO-POINT-TXT ; 3
|
||||
GL-WIGGINS-DESC-TXT ; 3
|
||||
K-BULLET-MSG ; 3
|
||||
K-DO-IT-YOURSELF-MSG ; 3
|
||||
K-FOUGHT-WELL-MSG ; 3
|
||||
K-GOOD-LOOK-MSG ; 3
|
||||
K-HEAVY-ARMOUR-MSG ; 3
|
||||
K-ILL-HOLD-IT-MSG ; 3
|
||||
K-MUST-BE-IN-BOAT-MSG ; 3
|
||||
K-NO-RESTING-MSG ; 3
|
||||
K-SEEMS-TO-HEAR-MSG ; 3
|
||||
K-SIGN-HERE-MSG ; 3
|
||||
K-SIMPLE-TOMB-MSG ; 3
|
||||
K-SORRY-MATE-MSG ; 3
|
||||
K-SPECIFY-MSG ; 3
|
||||
K-WELL-WORN-MSG ; 3
|
||||
GL-ALW-LIT? ; 1
|
||||
GL-CLOCK-FMT ; 1
|
||||
GL-HOLMES-HOUSE-LOOK-TXT ; 2
|
||||
GL-HOLMES-INDOORS-LOOK-TXT ; 2
|
||||
GL-HOLMES-OUTDOORS-LOOK-TXT ; 2
|
||||
GL-LOC-TRAIL ; 2
|
||||
GL-NOT-LIKELY-TXT ; 2
|
||||
GL-P-AADJ ; 1
|
||||
GL-P-DIR ; 1
|
||||
GL-P-RIBUF ; 2
|
||||
GL-P-T-LEX ; 2
|
||||
GL-TIME-UPDT-DEF ; 2
|
||||
GL-WIGGINS-LOOK-TXT ; 2
|
||||
GL-YES-IBUF ; 2
|
||||
K-AFTER-YOU-MSG ; 2
|
||||
K-AMBULATORY-MSG ; 2
|
||||
K-ANCHOR-ALREADY-OUT-MSG ; 2
|
||||
K-ANOTHER-PHIAL-MSG ; 2
|
||||
K-BETTER-SUCCESS-MSG ; 2
|
||||
K-BRAND-MSG ; 2
|
||||
K-BRAVO-MSG ; 2
|
||||
K-BREATH-TAKING-MSG ; 2
|
||||
K-BRIGHTENS-UP-MSG ; 2
|
||||
K-BUTLER-ACCEPTS-MSG ; 2
|
||||
K-CAB-HERE-MSG ; 2
|
||||
K-CANT-LEAVE-MSG ; 2
|
||||
K-CANT-WAIT-MSG ; 2
|
||||
K-CLOSED-AND-LOCKED-MSG ; 2
|
||||
K-CONFUSED-MSG ; 2
|
||||
K-CUSTOMARILY-KEEP-MSG ; 2
|
||||
K-DIZZY-MSG ; 2
|
||||
K-DROP-IT-FIRST-MSG ; 2
|
||||
K-EAU-DE-MSG ; 2
|
||||
K-ENJOYING-RIDE-MSG ; 2
|
||||
K-ENOUGH-ROOM-MSG ; 2
|
||||
K-EVERYONE-OUT-MSG ; 2
|
||||
K-EYES-HINGED-MSG ; 2
|
||||
K-FIDGETING-MSG ; 2
|
||||
K-GET-OUT-FIRST-MSG ; 2
|
||||
)(
|
||||
K-GLINT-MSG ; 2
|
||||
K-GNAWS-MSG ; 2
|
||||
K-GOOD-HEALTH-MSG ; 2
|
||||
K-GUARD-IGNORES-MSG ; 2
|
||||
K-HOLMES-DISTRACTION-MSG ; 2
|
||||
K-HOLMES-LICKS-MSG ; 2
|
||||
K-HOT-MSG ; 2
|
||||
K-HUDSON-WORRIED-MSG ; 2
|
||||
K-LESTRADE-ARRESTS-MSG ; 2
|
||||
K-MORE-VALUABLE-MSG ; 2
|
||||
K-MUST-WEIGH-MSG ; 2
|
||||
K-NELSON-STATUE-MSG ; 2
|
||||
K-NEVER-THEORIZE-MSG ; 2
|
||||
K-NOT-SEE-HERE-MSG ; 2
|
||||
K-NOTHING-INSIDE-MSG ; 2
|
||||
K-ON-DUTY-MSG ; 2
|
||||
K-OUTRAGED-CROWD-MSG ; 2
|
||||
K-PLEASE-KEEP-IT-MSG ; 2
|
||||
K-PLUG-HIM-MYSELF-MSG ; 2
|
||||
K-REFERRING-MSG ; 2
|
||||
K-SAPPHIRE-MSG ; 2
|
||||
K-SEASICK-MSG ; 2
|
||||
K-SECURELY-BOUND-MSG ; 2
|
||||
K-SHAFT-OF-LIGHT-MSG ; 2
|
||||
K-SITTING-QUIETLY-MSG ; 2
|
||||
K-TAKE-CAB-MSG ; 2
|
||||
K-TIPSY-MSG ; 2
|
||||
K-TOO-HAUGHTY-MSG ; 2
|
||||
K-TRANSEPT-MSG ; 2
|
||||
K-TWINKLE-MSG ; 2
|
||||
K-URCHIN-MSG ; 2
|
||||
K-WAKE-UP-MSG ; 2
|
||||
K-WILD-RIDE-MSG ; 2
|
||||
K-WONT-HELP-MSG ; 2
|
||||
K-WORK-OUT-YOURSELF-MSG ; 2
|
||||
K-WOUNDED-PRIDE-MSG ; 2
|
||||
K-YUCK-MSG ; 2
|
||||
GL-ALARM-STOP ; 1
|
||||
GL-BLANKS ; 1
|
||||
GL-CAB-DIST-TBL ; 1
|
||||
GL-FOG-TXT ; 1
|
||||
GL-HOLMES-DESPAIR-TXT ; 1
|
||||
GL-HOLMES-HOUSE-ENTER-TXT ; 1
|
||||
GL-HOLMES-IMPOSSIBLE-TXT ; 1
|
||||
GL-HOLMES-INDOORS-ENTER-TXT ; 1
|
||||
GL-HOLMES-OUTDOORS-ENTER-TXT ; 1
|
||||
GL-IMPOSSIBLE-TXT ; 1
|
||||
GL-LIBRARIAN-TXT1 ; 1
|
||||
GL-LIBRARIAN-TXT2 ; 1
|
||||
GL-LOOKS-TXT ; 1
|
||||
GL-PUZZLED-TXT ; 1
|
||||
GL-WIGGINS-ENTER-TXT ; 1
|
||||
GL-WIGGINS-IMPOSSIBLE-TXT ; 1
|
||||
K-BE-SPECIFIC-MSG ; 1
|
||||
K-HINT-COUNTS ; 1
|
||||
K-NO-SWIM-MSG ; 1
|
||||
K-PROFANITY-MSG ; 1
|
||||
MASS-TABLE ; 1
|
||||
Q-MAIN-MENU ; 1
|
||||
RETURN-SEE-HINT ; 1
|
||||
SIZE-TABLE ; 1
|
||||
FIND-NO-LOCS ; 0
|
||||
GL-GAME-VERBS ; 0
|
||||
GL-QUOTES ; 0
|
||||
GL-SEE-VERBS ; 0
|
||||
GL-TALK-VERBS ; 0
|
||||
GL-TOUCH-VERBS ; 0
|
||||
K-CAPS ; 0
|
||||
K-TO-COMPLETE-MSG ; 0
|
||||
TH-EVENT-NAMES ; 0
|
||||
)
|
2622
gamesoundpur.zap
Normal file
2622
gamesoundpur.zap
Normal file
File diff suppressed because it is too large
Load diff
878
gamesoundstr.zap
Normal file
878
gamesoundstr.zap
Normal file
|
@ -0,0 +1,878 @@
|
|||
|
||||
|
||||
; STRINGS ARE DEFINED HERE
|
||||
|
||||
STRBEG::
|
||||
|
||||
.GSTR STR?1,"Holmes"
|
||||
.GSTR STR?2,"Your friend"
|
||||
.GSTR STR?3,"The detective"
|
||||
.GSTR STR?4,"Your companion"
|
||||
.GSTR STR?5,"grimly"
|
||||
.GSTR STR?6,"sharply"
|
||||
.GSTR STR?7,"in despair"
|
||||
.GSTR STR?8,"severely"
|
||||
.GSTR STR?9,"for a moment"
|
||||
.GSTR STR?10,"I thought you had more sense than that, Watson"
|
||||
.GSTR STR?11,"That can't be done, Watson"
|
||||
.GSTR STR?12,"That's impossible, Doctor"
|
||||
.GSTR STR?13,"You can't do that, Watson"
|
||||
.GSTR STR?14,"You should know better, Doctor"
|
||||
.GSTR STR?15,"Impossible"
|
||||
.GSTR STR?16,"Don't be ridiculous, Watson"
|
||||
.GSTR STR?17,"Wiggins"
|
||||
.GSTR STR?18,"The boy"
|
||||
.GSTR STR?19,"The urchin"
|
||||
.GSTR STR?20,"Your assistant"
|
||||
.GSTR STR?21,"You must be out of your bleedin' mind"
|
||||
.GSTR STR?22,"That's ruddy impossible"
|
||||
.GSTR STR?23,"Not bloody likely"
|
||||
.GSTR STR?24,"For a toff, you're not too bright"
|
||||
.GSTR STR?25,"Nice try, Guv"
|
||||
.GSTR STR?26,"I thought doctors was smart"
|
||||
.GSTR STR?27,"That's impossible"
|
||||
.GSTR STR?28,"You can't do that"
|
||||
.GSTR STR?29,"That can't be done"
|
||||
.GSTR STR?30,"That won't work"
|
||||
.GSTR STR?31,"You try, but fail"
|
||||
.GSTR STR?32," is not likely"
|
||||
.GSTR STR?33," seems doubtful"
|
||||
.GSTR STR?34," seems unlikely"
|
||||
.GSTR STR?35,"looks"
|
||||
.GSTR STR?36,"appears"
|
||||
.GSTR STR?37,"seem to be"
|
||||
.GSTR STR?38,"puzzled"
|
||||
.GSTR STR?39,"bewildered"
|
||||
.GSTR STR?40,"confused"
|
||||
.GSTR STR?41,"perplexed"
|
||||
.GSTR STR?42,"unusual"
|
||||
.GSTR STR?43,"interesting"
|
||||
.GSTR STR?44,"extraordinary"
|
||||
.GSTR STR?45,"special"
|
||||
.GSTR STR?46," not do anything useful"
|
||||
.GSTR STR?47," accomplish nothing"
|
||||
.GSTR STR?48," have no desirable effect"
|
||||
.GSTR STR?49," not be very productive"
|
||||
.GSTR STR?50," serve no purpose"
|
||||
.GSTR STR?51," be pointless"
|
||||
.GSTR STR?52,"The fog swirls around you"
|
||||
.GSTR STR?53,"You can barely see through the thick fog"
|
||||
.GSTR STR?54,"The fog turns everything into an indistinct blur"
|
||||
.GSTR STR?55,"Wisps of fog creep along the ground"
|
||||
.GSTR STR?56,"The fog clings to everything like a shroud"
|
||||
.GSTR STR?57,"Fog blankets everything around you"
|
||||
.GSTR STR?58,"It is too dark to see."
|
||||
.GSTR STR?59,"[Please try to express that another way.]"
|
||||
.GSTR STR?60,"[You must be more specific.]"
|
||||
.GSTR STR?61,"[Be specific: what do you want to "
|
||||
K-BE-SPECIFIC-MSG=STR?61
|
||||
.GSTR STR?62," to complete this story.]"
|
||||
K-TO-COMPLETE-MSG=STR?62
|
||||
.GSTR STR?63,"There is a cab here already."
|
||||
.GSTR STR?64,"[To take a cab, get in and tell the cabbie to drive to your destination.]"
|
||||
K-TAKE-CAB-MSG=STR?64
|
||||
.GSTR STR?65,"'s brow is furrowed in intense concentration"
|
||||
.GSTR STR?66," is pacing back and forth nervously"
|
||||
.GSTR STR?67,"'s eyes are half-closed, but they miss nothing"
|
||||
.GSTR STR?68," is looking around with interest"
|
||||
.GSTR STR?69," appears lost in deep thought"
|
||||
.GSTR STR?70,"'s lean, severe face gives away none of his thoughts"
|
||||
.GSTR STR?71," is here, awaiting your next move"
|
||||
.GSTR STR?72," trails along after you"
|
||||
.GSTR STR?73," walks into the room alongside you"
|
||||
.GSTR STR?74," enters and begins pacing back and forth nervously"
|
||||
.GSTR STR?75," follows you"
|
||||
.GSTR STR?76," joins you and starts looking around with interest"
|
||||
.GSTR STR?77," drifts in after you, apparently lost in thought"
|
||||
.GSTR STR?78," appears lost in thought"
|
||||
.GSTR STR?79," is staring at the sky, as if he might find a clue there"
|
||||
.GSTR STR?80," is here"
|
||||
.GSTR STR?81," walks alongside you"
|
||||
.GSTR STR?82," follows you and begins pacing back and forth nervously"
|
||||
.GSTR STR?83," drifts along after you, apparently lost in thought"
|
||||
.GSTR STR?84," is shifting his weight from one foot to the other"
|
||||
.GSTR STR?85," appears eager to help"
|
||||
.GSTR STR?86," is standing around, waiting for you to do something"
|
||||
.GSTR STR?87," appears fascinated by everything"
|
||||
.GSTR STR?88," drifts along after you"
|
||||
.GSTR STR?89,"The butler accepts the item and asks you to wait while he takes it to Mr Mycroft Holmes."
|
||||
.GSTR STR?90," must weigh twice what you do. You won't be able to lift him."
|
||||
K-MUST-WEIGH-MSG=STR?90
|
||||
.GSTR STR?91,"the box with the key. You rummage around inside for a few moments but discover nothing that would help you, so"
|
||||
K-NOTHING-INSIDE-MSG=STR?91
|
||||
.GSTR STR?92," is fidgeting nervously on the seat next to you"
|
||||
.GSTR STR?93,"You must specify a particular "
|
||||
.GSTR STR?94,"""Sorry, mate. I've me own plans, you know."""
|
||||
.GSTR STR?95," looks like he is enjoying the boat ride"
|
||||
.GSTR STR?96,"""Don't worry. I'll hold it for you."""
|
||||
.GSTR STR?97,"It is already closed and locked."
|
||||
.GSTR STR?98,"""If you expect me to let you in there, you'll have to offer me something a lot more valuable than that."""
|
||||
K-MORE-VALUABLE-MSG=STR?98
|
||||
.GSTR STR?99,"The bullet ricochets wildly."
|
||||
.GSTR STR?100,"Mmmmmm. Eau de malmsey."
|
||||
.GSTR STR?101,"""After you, guv."""
|
||||
.GSTR STR?102,"Wiggins sidles up next to you and whispers, ""I'd like to, guv. But Mr 'Olmes done give me clear instructions not to leave this spot. Is there anyfing else I can do for you?"""
|
||||
.GSTR STR?103," says with wounded pride, ""Sorry, guv. Me and Mr 'Olmes has a deal. One shilling's me price. Nothing more. Nothing less."""
|
||||
K-WOUNDED-PRIDE-MSG=STR?103
|
||||
.GSTR STR?104,"The guard ignores you."
|
||||
K-GUARD-IGNORES-MSG=STR?104
|
||||
.GSTR STR?105,"Holmes absentmindedly licks his fingers and then wipes his hands on his smoking jacket. His "
|
||||
K-HOLMES-LICKS-MSG=STR?105
|
||||
.GSTR STR?106,"Holmes takes another phial out of his pocket and stares at it in the same way as before."
|
||||
.GSTR STR?107,"Yeeeeeeeeeeeeeeeeeeeouch!!! Hot, hot, hot, hot..."
|
||||
K-HOT-MSG=STR?107
|
||||
.GSTR STR?108,"The anchor is already out of the water."
|
||||
.GSTR STR?109,"You would have to be in the boat to "
|
||||
.GSTR STR?110,"You do not see that here."
|
||||
K-NOT-SEE-HERE-MSG=STR?110
|
||||
.GSTR STR?111,"This is no time for resting."
|
||||
.GSTR STR?112,"You begin to feel a little dizzy."
|
||||
.GSTR STR?113,"Lestrade arrests you and puts you in handcuffs. You will spend the rest of your life in Dartmoor, trying to understand where you went wrong."
|
||||
K-LESTRADE-ARRESTS-MSG=STR?113
|
||||
.GSTR STR?114," ""I don't blame you a bit, Dr Watson. Said ""Elementary"" one too many times did 'e? Many's the time I've wanted to plug him myself. Still, I've got to take you away. Come along now."""
|
||||
K-PLUG-HIM-MYSELF-MSG=STR?114
|
||||
.GSTR STR?115,"Who do you think you are, Annie Oakley?"
|
||||
.GSTR STR?116," shatters and disappears."
|
||||
.GSTR STR?117,"""Have you looked in your hat, old fellow? That is where you customarily keep it."""
|
||||
.GSTR STR?118,"""Please keep it, dear fellow. You may need it."""
|
||||
K-PLEASE-KEEP-IT-MSG=STR?118
|
||||
.GSTR STR?119," seems to hear you, but he does not respond."
|
||||
.GSTR STR?120,"Don't you think you should drop it first?"
|
||||
.GSTR STR?121," gnaws on your leg briefly in response."
|
||||
K-GNAWS-MSG=STR?121
|
||||
.GSTR STR?122,"""I'm afraid you'll have to work that out yourself, old boy."""
|
||||
K-WORK-OUT-YOURSELF-MSG=STR?122
|
||||
.GSTR STR?123,"""Never theorize in advance of the facts, Watson."""
|
||||
K-NEVER-THEORIZE-MSG=STR?123
|
||||
.GSTR STR?124,"The guard says, ""Sorry, sir. On duty, you know."""
|
||||
K-ON-DUTY-MSG=STR?124
|
||||
.GSTR STR?125,"The pigeon looks at you with a confused expression."
|
||||
.GSTR STR?126,"The nannies are too haughty to acknowledge your presence."
|
||||
K-TOO-HAUGHTY-MSG=STR?126
|
||||
.GSTR STR?127,"You'd have better success if you launched the boat first."
|
||||
.GSTR STR?128,"[To what are you referring?]"
|
||||
K-REFERRING-MSG=STR?128
|
||||
.GSTR STR?129,"You will have to do that yourself."
|
||||
.GSTR STR?130,"That would hardly be an appropriate thing to do."
|
||||
.GSTR STR?131,"How do you intend to do that?"
|
||||
.GSTR STR?132,"There is no place to swim here."
|
||||
K-NO-SWIM-MSG=STR?132
|
||||
.GSTR STR?133,"A proper Victorian would never use such a vulgar word."
|
||||
K-PROFANITY-MSG=STR?133
|
||||
.GSTR STR?134,"Suicide is frowned upon in medical circles."
|
||||
.GSTR STR?135,"Thievery, outside of established limits, is frowned upon by the medical profession."
|
||||
.GSTR STR?136,"[You must specify a direction.]"
|
||||
.GSTR STR?137," is not likely to help matters."
|
||||
K-WONT-HELP-MSG=STR?137
|
||||
.GSTR STR?138,"""Good show!"""
|
||||
.GSTR STR?139,"""Pity."""
|
||||
.GSTR STR?140,"""Be more decisive!"""
|
||||
.GSTR STR?141,"It's a simple tomb, with a brief inscription written on it."
|
||||
.GSTR STR?142,"The ceiling is breathtakingly beautiful."
|
||||
.GSTR STR?143,"Now that you know what to look for, you see a glint coming from Nelson's blind eye."
|
||||
K-GLINT-MSG=STR?143
|
||||
.GSTR STR?144," a statue of Nelson on the top and a bronze relief on the pedestal at the bottom."
|
||||
K-NELSON-STATUE-MSG=STR?144
|
||||
.GSTR STR?145,"You cannot take another step in that heavy suit of armour."
|
||||
.GSTR STR?146,"The door to the parlour is to the north, and a flight of well-worn stairs leads up to the first floor."
|
||||
.GSTR STR?147,"One of the urchins looks strangely familiar to you."
|
||||
K-URCHIN-MSG=STR?147
|
||||
.GSTR STR?148,"The vases of the fourth dynasty of the ancient Sumerians differed significantly from those of the third dynasty. The most pronounced change involved a slight flaring of the handles from one dynasty to the next. Most experts agree that this symbolized a drastic change in the Sumerians' perception of the goddess Ashtoreth. Others however, believe it made the vases easier to carry"
|
||||
.GSTR STR?149,"Monocotyledonous plants produce an embryo with a single cotyledon, which functions primarily to make available the food which is stored in the endosperm, as opposed to the more common dicotyledons, which include most of the woody, deciduous plants of the temperate climates"
|
||||
.GSTR STR?150,"The Beaker People of prehistoric Britain are remembered primarily for the reddish-brown pottery from which they take their name, and for interring their dead in single graves under round barrows. This culture disappeared in the Middle Bronze Age (circa 1800 B.C.) and has been annoying British schoolchildren ever since"
|
||||
.GSTR STR?151,"Perhaps you would be interested in something on the Punic Wars? I believe I have a nineteen-volume history of them here somewhere"
|
||||
.GSTR STR?152,"Stanislaw Leszczynski was crowned king of Poland in 1704, but was deposed only five years later because no one could pronounce his name"
|
||||
.GSTR STR?153,"The yin and yang philosophy of nature was developed around 2800 B.C. by the Chinese emperor Fu Hsi. According to Fu, health and tranquility require a harmonious balance among all the body's elements. This theory has always been ridiculed by the British, whose ancestors at this time were still painting themselves blue and naming their children Og"
|
||||
.GSTR STR?154,"Louis I, son of Charlemagne, ascended France's throne in 814 A.D. He was the first to implement that country's secret policy of naming all their kings Louis in order to confuse enemy agents, historians, and their own peasants."
|
||||
.GSTR STR?155,"The first workers' strike on record took place in Egypt in 1170 B.C., when labourers building a new pyramid in Thebes learned that their payroll had been delayed. They organized a protest, stopped working, and picketed the construction site carrying papyrus signs that read, 'Cash on the line, or you don't get your shrine.' Tradition also has it that the slogan they chanted was 'Stuff the crypt...We've been gypped...Ra Ra Ra.'"
|
||||
.GSTR STR?156,"The confusion between the usage of the present subjunctive and the past subjunctive is easily resolved as long as one remembers that the terms refer not to different times, but to differing sorts of uncertainty. Reference to time itself is only implied by the use of the past perfect subjunctive. While no deaths have as yet resulted from incorrect usage, it would be prudent not to take chances."
|
||||
.GSTR STR?157,"While uncovering one's head is a symbol of respect in many cultures, in others the opposite is true. Some Indian religions, for example, require that a man's head remain covered at all times, giving rise to the use of the turban, or 'imamah.' The tabu against removing one's turban eventually became so strong that thieves who thought nothing of stealing a victim's clothes would nevertheless leave his turban undisturbed."
|
||||
.GSTR STR?158,"Most historians ascribe Catherine de Medicis's poor reputation among the French to her ordering the wholesale massacre of French citizens in 1572. Recent research, however, has revealed that years before, in 1533, she brought into the country such vegetables as broccoli, artichokes, cabbage and haricot beans - and it is now widely accepted that this alone was sufficient to make the French hate her."
|
||||
.GSTR STR?159,"Are you sure I can't get you something on the Punic Wars?"
|
||||
.GSTR STR?160," looks a little green from the motion of the boat"
|
||||
K-SEASICK-MSG=STR?160
|
||||
.GSTR STR?161," is sitting quietly on the seat next to you"
|
||||
K-SITTING-QUIETLY-MSG=STR?161
|
||||
.GSTR STR?162," is securely bound to a chair with a thick rope"
|
||||
K-SECURELY-BOUND-MSG=STR?162
|
||||
.GSTR STR?163,"There is a sign on the wall."
|
||||
.GSTR STR?164,"Yuck! Have you looked at that stuff?"
|
||||
K-YUCK-MSG=STR?164
|
||||
.GSTR STR?165,", and it brightens up an otherwise gloomy interior"
|
||||
.GSTR STR?166,"A shaft of sunlight comes through the stained-glass window, lighting up one of the tombs, and relieving the general gloom of the Abbey's dark interior."
|
||||
K-SHAFT-OF-LIGHT-MSG=STR?166
|
||||
.GSTR STR?167," apologetically stands in front of the closed door. ""I'm terribly worried about Mr Holmes, Doctor. Won't you please attend to him right away?"""
|
||||
K-HUDSON-WORRIED-MSG=STR?167
|
||||
.GSTR STR?168," **********"
|
||||
.GSTR STR?169,"Twinkle, twinkle, son of Mars,"
|
||||
K-TWINKLE-MSG=STR?169
|
||||
.GSTR STR?170,"Transept of the Abbey, which is dominated by a beautiful rose window set high into the wall."
|
||||
K-TRANSEPT-MSG=STR?170
|
||||
.GSTR STR?171,"Your eyes must be hinged a very interesting way if you think you can do that."
|
||||
.GSTR STR?172,"This is a narrow corridor lined with tombs."
|
||||
.GSTR STR?173,"Everyone here has been knocked out by the etherium, although it's hard to tell."
|
||||
.GSTR STR?174,", to which is glued a beautiful, deep-blue sapphire."
|
||||
K-SAPPHIRE-MSG=STR?174
|
||||
.GSTR STR?175,"Holmes looks at you approvingly and says, ""Bravo, Watson. Well done, old chap."""
|
||||
.GSTR STR?176," to get a really good look at it."
|
||||
.GSTR STR?177,"""You fought well, Doctor. But you have lost."""
|
||||
.GSTR STR?178,"Sometime later you awaken and stumble back to your feet."
|
||||
K-WAKE-UP-MSG=STR?178
|
||||
.GSTR STR?179,"You would have to get out of the boat first."
|
||||
.GSTR STR?180,"It's not your brand, but it's pleasant nonetheless."
|
||||
.GSTR STR?181,"smoulders for a few seconds, then goes out."
|
||||
.GSTR STR?182,"The crowd is outraged that you would try to rob the ailing girl, and they beat you about the head and shoulders with their shopping bags."
|
||||
K-OUTRAGED-CROWD-MSG=STR?182
|
||||
.GSTR STR?183," He looks suprised that you didn't try to haggle with him, says, ""Thank you, guv'nor. Enjoy it in good 'ealth,"""
|
||||
K-GOOD-HEALTH-MSG=STR?183
|
||||
.GSTR STR?184,"You start to drink the wine and get a little tipsy. But even in your altered state of consciousness you soon realize you'll never be able to drink all of it."
|
||||
K-TIPSY-MSG=STR?184
|
||||
.GSTR STR?185,"The bullet knocks out the bung, which"
|
||||
.GSTR STR?186,"can't wait for that."
|
||||
.GSTR STR?187,"There isn't enough room in the cab to do that."
|
||||
.GSTR STR?188,"Holmes ignores the distraction and continues staring at the phial."
|
||||
K-HOLMES-DISTRACTION-MSG=STR?188
|
||||
.GSTR STR?189,"After a wild ride through the streets of London, the cab finally careens to a halt and the cabbie says brightly, ""Here we are!"""
|
||||
K-WILD-RIDE-MSG=STR?189
|
||||
.GSTR STR?190,"Jubilee"
|
||||
.GSTR STR?191,"Henry IV"
|
||||
.GSTR STR?192,"Duke of Wellington"
|
||||
.GSTR STR?193,"Toby"
|
||||
.GSTR STR?194,"Mycroft Holmes"
|
||||
.GSTR STR?195,"Agra treasure"
|
||||
.GSTR STR?196,"Lestrade"
|
||||
.GSTR STR?197,"Sunday"
|
||||
.GSTR STR?198,"Monday"
|
||||
.GSTR STR?199,"Tuesday"
|
||||
.GSTR STR?200,"Wednesday"
|
||||
.GSTR STR?201,"Thursday"
|
||||
.GSTR STR?202,"Friday"
|
||||
.GSTR STR?203,"Saturday"
|
||||
.GSTR STR?204,"Sun"
|
||||
.GSTR STR?205,"Mon"
|
||||
.GSTR STR?206,"Tue"
|
||||
.GSTR STR?207,"Wed"
|
||||
.GSTR STR?208,"Thu"
|
||||
.GSTR STR?209,"Fri"
|
||||
.GSTR STR?210,"Sat"
|
||||
.GSTR STR?211,"Sunday "
|
||||
.GSTR STR?212,"Monday "
|
||||
.GSTR STR?213,"Tuesday "
|
||||
.GSTR STR?214,"Thursday "
|
||||
.GSTR STR?215,"Friday "
|
||||
.GSTR STR?216,"Saturday "
|
||||
.GSTR STR?217,"0"
|
||||
.GSTR STR?218," "
|
||||
.GSTR STR?219," AM"
|
||||
.GSTR STR?220," a.m."
|
||||
.GSTR STR?221," PM"
|
||||
.GSTR STR?222," p.m."
|
||||
.GSTR STR?223,"notice"
|
||||
.GSTR STR?224,"notices"
|
||||
.GSTR STR?225,"any verbs"
|
||||
.GSTR STR?226,"enough nouns"
|
||||
.GSTR STR?227,"open"
|
||||
.GSTR STR?228,"are"
|
||||
.GSTR STR?229,"is"
|
||||
.GSTR STR?230,"would respond"
|
||||
.GSTR STR?231,"Chief Superintendent of Scotland Yard"
|
||||
.GSTR STR?232,"Inspector"
|
||||
.GSTR STR?233,"Detective"
|
||||
.GSTR STR?234,"Lieutenant"
|
||||
.GSTR STR?235,"Sergeant"
|
||||
.GSTR STR?236,"Private"
|
||||
.GSTR STR?237,"Patrolman"
|
||||
.GSTR STR?238,"Consulting Detective"
|
||||
.GSTR STR?239,"Visiting Hours: 7:00 a.m - 6:00 p.m."
|
||||
.GSTR STR?240,"""Quiet, please."""
|
||||
.GSTR STR?241," CHAMBER OF HORRORS "
|
||||
.GSTR STR?242,"ABANDON HOPE ALL YE WHO ENTER HERE"
|
||||
.GSTR STR?243,"MUSEUM HOURS: 8 a.m. - 6 p.m."
|
||||
.GSTR STR?244,"""1666"""
|
||||
.GSTR STR?245,"This a replica of the rowboat in "
|
||||
.GSTR STR?246,"which Captain Bligh was set adrift "
|
||||
.GSTR STR?247,"after the infamous Mutiny on the "
|
||||
.GSTR STR?248,"Bounty. Bligh and his men rowed 3600"
|
||||
.GSTR STR?249,"miles in 45 days, and lived to see "
|
||||
.GSTR STR?250,"the mutineers brought to justice. "
|
||||
.GSTR STR?251,"For your convenience, the Bank shall"
|
||||
.GSTR STR?252,"be closed for the entire Jubilee "
|
||||
.GSTR STR?253,"weekend. Thank you for your "
|
||||
.GSTR STR?254,"patronage. "
|
||||
.GSTR STR?255," THE TOWER IS CLOSED. "
|
||||
.GSTR STR?256," WE REGRET ANY INCONVENIENCE. "
|
||||
.GSTR STR?257," HAVE A NICE DAY. "
|
||||
.GSTR STR?258,"During the battle of Copenhagen, "
|
||||
.GSTR STR?259,"Lord Nelson's commander-in-chief ran"
|
||||
.GSTR STR?260,"the signal to ""discontinue action"" "
|
||||
.GSTR STR?261,"up his mast. Knowing the battle "
|
||||
.GSTR STR?262,"could yet be won, Nelson clapped his"
|
||||
.GSTR STR?263,"telescope to his blind eye and said,"
|
||||
.GSTR STR?264,"""I do not see the signal."" His "
|
||||
.GSTR STR?265,"subsequent attack led to victory and"
|
||||
.GSTR STR?266,"a secure place for Nelson in British"
|
||||
.GSTR STR?267,"history. "
|
||||
.GSTR STR?268," No Loitering. "
|
||||
.GSTR STR?269,"This means YOU!"
|
||||
.GSTR STR?270,"BAR OF GOLD"
|
||||
.GSTR STR?271,"""Many monarchs are buried in "
|
||||
.GSTR STR?272,"Westminster. But only one died here."
|
||||
.GSTR STR?273,"It happened on March 20th, 1413, and"
|
||||
.GSTR STR?274,"the event was later made famous in a"
|
||||
.GSTR STR?275,"scene written by Shakespeare:"" "
|
||||
.GSTR STR?276,"""It hath been prophesied to me many "
|
||||
.GSTR STR?277," years "
|
||||
.GSTR STR?278,"I should not die but in Jerusalem, "
|
||||
.GSTR STR?279,"Which vainly I supposed the Holy "
|
||||
.GSTR STR?280," Land. "
|
||||
.GSTR STR?281,"But bear me to that chamber, there "
|
||||
.GSTR STR?282," I'll lie, "
|
||||
.GSTR STR?283,"In that Jerusalem shall Harry die."" "
|
||||
.GSTR STR?284,"""Henry IV, Part II, Act V"" "
|
||||
.GSTR STR?285," HELD OVER "
|
||||
.GSTR STR?286,"SIXTH BIG WEEK!"
|
||||
.GSTR STR?287,"THE MOUSETRAP!!"
|
||||
.GSTR STR?288,"This sign unintentionally left blank."
|
||||
.GSTR STR?289," RETURN = see hint"
|
||||
RETURN-SEE-HINT=STR?289
|
||||
.GSTR STR?290,"Q = main menu"
|
||||
Q-MAIN-MENU=STR?290
|
||||
.GSTR STR?291,"How do I get into the house?"
|
||||
.GSTR STR?292,"Mrs Hudson is expecting you, so you shouldn't have to do anything too unusual."
|
||||
.GSTR STR?293,"Have you tried kicking down the door?"
|
||||
.GSTR STR?294,"KNOCK ON THE DOOR."
|
||||
.GSTR STR?295,"How do I get into the parlour?"
|
||||
.GSTR STR?296,"Mrs Hudson wants you to attend to something first."
|
||||
.GSTR STR?297,"Get Holmes's mind off the drug."
|
||||
.GSTR STR?298,"How do I get into the kitchen?"
|
||||
.GSTR STR?299,"Don't look at the next clue until you have opened the trap door in the hall."
|
||||
.GSTR STR?300,"You're cheating, aren't you?"
|
||||
.GSTR STR?301,"There is no trap door."
|
||||
.GSTR STR?302,"There is no kitchen."
|
||||
.GSTR STR?303,"Don't let the existence of these questions influence your playing of the game."
|
||||
.GSTR STR?304,"How do I get into the bedroom?"
|
||||
.GSTR STR?305,"Only Holmes can open that door."
|
||||
.GSTR STR?306,"When the visitor leaves, Holmes will open it."
|
||||
.GSTR STR?307,"How do I get onto the roof?"
|
||||
.GSTR STR?308,"The same way you got into the kitchen."
|
||||
.GSTR STR?309,"Will Mrs Hudson do anything for me?"
|
||||
.GSTR STR?310,"Have you tried kissing her?"
|
||||
.GSTR STR?311,"Have you tried bribing her?"
|
||||
.GSTR STR?312,"The sad fact is that she won't do anything for you."
|
||||
.GSTR STR?313,"Can I get Holmes out of his stupor?"
|
||||
.GSTR STR?314,"Holmes is bored with the commonplace events of everyday life."
|
||||
.GSTR STR?315,"He needs some mental excitement."
|
||||
.GSTR STR?316,"Newspapers generally contain interesting items."
|
||||
.GSTR STR?317,"For a doctor, you're not too bright. Read him the newspaper. (Or tell him about the visitor)."
|
||||
.GSTR STR?318,"Why does the clue paper exist?"
|
||||
.GSTR STR?319,"It looks like the thief is challenging Sherlock Holmes to a duel of wits."
|
||||
.GSTR STR?320,"Unlike yourself, Sherlock is not unarmed for such a duel."
|
||||
.GSTR STR?321,"The thief is laying down a trail of clues for Holmes to follow."
|
||||
.GSTR STR?322,"What's the answer to the 1st riddle?"
|
||||
.GSTR STR?323,"The verse refers to a particular place."
|
||||
.GSTR STR?324,"The place is the spot where most English royalty is buried."
|
||||
.GSTR STR?325,"Westminster Abbey."
|
||||
.GSTR STR?326,"What's the answer to the 2nd riddle?"
|
||||
.GSTR STR?327,"The verse refers to the last of the Tudor monarchs."
|
||||
.GSTR STR?328,"She was called the ""Virgin Queen."""
|
||||
.GSTR STR?329,"Elizabeth I."
|
||||
.GSTR STR?330,"What's the answer to the 3rd riddle?"
|
||||
.GSTR STR?331,"The discoverer of the law of gravity."
|
||||
.GSTR STR?332,"Sir Isaac Newton."
|
||||
.GSTR STR?333,"What's the answer to the 4th riddle?"
|
||||
.GSTR STR?334,"Don't read the next clue until you have thoroughly explored Westminster Abbey."
|
||||
.GSTR STR?335,"Have you looked around in the Jerusalem Chamber?"
|
||||
.GSTR STR?336,"The fourth verse refers to Henry V."
|
||||
.GSTR STR?337,"Where is the lamp?"
|
||||
.GSTR STR?338,"It's in Holmes's bedroom."
|
||||
.GSTR STR?339,"Who is the thief?"
|
||||
.GSTR STR?340,"Who do you think?"
|
||||
.GSTR STR?341,"How do I hail a cab?"
|
||||
.GSTR STR?342,"Consult the sample transcript in your game manual."
|
||||
.GSTR STR?343,"Why does the growler cab get lost?"
|
||||
.GSTR STR?344,"The driver is friendly, but stupid."
|
||||
.GSTR STR?345,"The driver is stupid, but friendly."
|
||||
.GSTR STR?346,"Give up. He'll never take you where you want to go."
|
||||
.GSTR STR?347,"Are the tombs important?"
|
||||
.GSTR STR?348,"They are to the people buried in them."
|
||||
.GSTR STR?349,"Yes."
|
||||
.GSTR STR?350,"How do I make a brass rubbing?"
|
||||
.GSTR STR?351,"Take a piece of paper from the pacquet of paper, put it on the tomb of your choice, and then rub it with the crayon."
|
||||
.GSTR STR?352,"What should I make rubbings of?"
|
||||
.GSTR STR?353,"Do not read the next clue until you have solved the verses on the thief's clue paper."
|
||||
.GSTR STR?354,"The tombs of Queen Elizabeth, Sir Isaac Newton and Henry V."
|
||||
.GSTR STR?355,"Why am I making brass rubbings?"
|
||||
.GSTR STR?356,"The thief is trying to send messages to Sherlock."
|
||||
.GSTR STR?357,"He wouldn't want his messages to be visible to everyone, now would he?"
|
||||
.GSTR STR?358,"Have you visited the British Museum yet?"
|
||||
.GSTR STR?359,"The book on the table in the British Museum contains a clue that will help you."
|
||||
.GSTR STR?360,"There is some invisible writing on some of the tombs."
|
||||
.GSTR STR?361,"When you make a rubbing, the invisible ink is transferred onto the back of the paper."
|
||||
.GSTR STR?362,"Invisible ink usually becomes visible when heated."
|
||||
.GSTR STR?363,"Heat the paper over the candles in the Evangelist Chapel."
|
||||
.GSTR STR?364,"Turn the paper over."
|
||||
.GSTR STR?365,"Where is the Stone of Scone?"
|
||||
.GSTR STR?366,"It belongs under the Coronation Chair in Edward the Confessor's Chapel - but we knew it was going to be stolen in 1950 and then returned several months later. We figured that was enough excitement for any one rock, so we left it out of the game, safe from your grubby paws."
|
||||
.GSTR STR?367,"What's the Son of Mars answer?"
|
||||
.GSTR STR?368,"Admiral Lord Nelson."
|
||||
.GSTR STR?369,"What's the Chopper answer?"
|
||||
.GSTR STR?370,"Charles I."
|
||||
.GSTR STR?371,"What's the London Bridge answer?"
|
||||
.GSTR STR?372,"Under London Bridge."
|
||||
.GSTR STR?373,"What's the answer to life's riddle?"
|
||||
.GSTR STR?374,"If we knew that, do you think we'd be sitting around writing games?"
|
||||
.GSTR STR?375,"What's the Pussycat answer?"
|
||||
.GSTR STR?376,"Go to the Tower of London."
|
||||
.GSTR STR?377,"What's the Number answer?"
|
||||
.GSTR STR?378,"Have you looked at the statue of William the Conqueror?"
|
||||
.GSTR STR?379,"Have you read the sign on the Monument?"
|
||||
.GSTR STR?380,"Have you ever read the Charge of the Light Brigade?"
|
||||
.GSTR STR?381,"600."
|
||||
.GSTR STR?382,"How about Hickory Dickory Dock?"
|
||||
.GSTR STR?383,"Big Ben."
|
||||
.GSTR STR?384,"How do I get past the librarian?"
|
||||
.GSTR STR?385,"Think of the room not as a museum, but as a library."
|
||||
.GSTR STR?386,"Have you read the sign on the librarian's desk?"
|
||||
.GSTR STR?387,"Has it occurred to you that he's doing an awful lot of talking?"
|
||||
.GSTR STR?388,"Tell him to be quiet."
|
||||
.GSTR STR?389,"What is a Whispering Gallery?"
|
||||
.GSTR STR?390,"It is a place where you can eavesdrop on other people from far away."
|
||||
.GSTR STR?391,"How do I get up there?"
|
||||
.GSTR STR?392,"Take the stairs up from the clerestory."
|
||||
.GSTR STR?393,"How do I get to the clerestory?"
|
||||
.GSTR STR?394,"You can't. St Paul's isn't even in the game."
|
||||
.GSTR STR?395,"We just like the word clerestory."
|
||||
.GSTR STR?396,"Are the pigeons important?"
|
||||
.GSTR STR?397,"Only to other pigeons."
|
||||
.GSTR STR?398,"Is the statue important?"
|
||||
.GSTR STR?399,"Have you looked at it?"
|
||||
.GSTR STR?400,"Have you looked at it closely?"
|
||||
.GSTR STR?401,"Have you looked at it through a telescope?"
|
||||
.GSTR STR?402,"Is the column important?"
|
||||
.GSTR STR?403,"If it wasn't there, we'd have to come up with some other way of keeping the statue out of your reach."
|
||||
.GSTR STR?404,"Is anything important?"
|
||||
.GSTR STR?405,"Like, wow, man. Heavy question!"
|
||||
.GSTR STR?406,"How do I stop rowing in circles?"
|
||||
.GSTR STR?407,"Has anyone told you you're not playing with a full deck?"
|
||||
.GSTR STR?408,"Has anyone told you you're not rowing with both oars in the water?"
|
||||
.GSTR STR?409,"You need two oars to steer the boat."
|
||||
.GSTR STR?410,"Don't read the next two clues unless you want to know where the other oar is."
|
||||
.GSTR STR?411,"The other oar is in another boat."
|
||||
.GSTR STR?412,"It's in Captain Bligh's boat in the Black Museum."
|
||||
.GSTR STR?413,"How do I stop the boat?"
|
||||
.GSTR STR?414,"Type, 'Whoa, Boat!'"
|
||||
.GSTR STR?415,"Just kidding. Drop the anchor."
|
||||
.GSTR STR?416,"How do I launch the boat?"
|
||||
.GSTR STR?417,"Got any rocket fuel?"
|
||||
.GSTR STR?418,"Type, 'Launch boat.'"
|
||||
.GSTR STR?419,"(Make sure you're in the boat and the anchor's up first.)"
|
||||
.GSTR STR?420,"How do I land the boat?"
|
||||
.GSTR STR?421,"You can only land the boat at the Embankment or outside Traitor's Gate."
|
||||
.GSTR STR?422,"Type: N or LAND BOAT."
|
||||
.GSTR STR?423,"How do I get the paddle?"
|
||||
.GSTR STR?424,"You can't get the paddle when you're outside Traitor's Gate."
|
||||
.GSTR STR?425,"If you don't have the paddle, you need two oars to row back up the river."
|
||||
.GSTR STR?426,"If you're on the river without a paddle or both oars, you're making a big mistake."
|
||||
.GSTR STR?427,"You can only take the paddle after you've entered the Tower."
|
||||
.GSTR STR?428,"Can I stop the man taking the boat?"
|
||||
.GSTR STR?429,"No, you can't. But after all, it's his boat."
|
||||
.GSTR STR?430,"What time does the last train leave?"
|
||||
.GSTR STR?431,"The timetable is posted on the wall."
|
||||
.GSTR STR?432,"9:15 p.m."
|
||||
.GSTR STR?433,"What track does it leave from?"
|
||||
.GSTR STR?434,"Track 29."
|
||||
.GSTR STR?435,"How much is a round-trip ticket?"
|
||||
.GSTR STR?436,"Why are you reading clues about a place that isn't even in the game?"
|
||||
.GSTR STR?437,"What is the matter with the girl?"
|
||||
.GSTR STR?438,"She has a bad heart."
|
||||
.GSTR STR?439,"Perhaps some medicine...."
|
||||
.GSTR STR?440,"Be careful. Drugs are dangerous."
|
||||
.GSTR STR?441,"How do I revive her?"
|
||||
.GSTR STR?442,"Have you made a positive diagnosis?"
|
||||
.GSTR STR?443,"Listen to the girl with your stethoscope."
|
||||
.GSTR STR?444,"If her heart is abnormally fast, give her something to slow it down."
|
||||
.GSTR STR?445,"An unusually fast heartbeat is known as tachycardia."
|
||||
.GSTR STR?446,"If her heart is abnormally slow, give her something to speed it up."
|
||||
.GSTR STR?447,"An unusually slow heartbeat is know as bradycardia."
|
||||
.GSTR STR?448,"Belladonna will speed up a slow heart."
|
||||
.GSTR STR?449,"Digitalis will slow down a fast heart."
|
||||
.GSTR STR?450,"The drugs are in your medicine bag."
|
||||
.GSTR STR?451,"Where is the stethoscope?"
|
||||
.GSTR STR?452,"Where do most doctors carry their stethoscopes?"
|
||||
.GSTR STR?453,"You are not most doctors."
|
||||
.GSTR STR?454,"You have it when you start the game."
|
||||
.GSTR STR?455,"Sorry about this. It turns out that Watson always carries his stethoscope in his hat. Really. (Read ""A Scandal in Bohemia."")"
|
||||
.GSTR STR?456,"How do I get past the guard dog?"
|
||||
.GSTR STR?457,"He won't let you carry any matches inside."
|
||||
.GSTR STR?458,"OK. So you already knew that."
|
||||
.GSTR STR?459,"He won't let you carry in any flames that he can see."
|
||||
.GSTR STR?460,"Alright, so you knew that too. How about flames that he can't see?"
|
||||
.GSTR STR?461,"Something that burns without a flame, for example."
|
||||
.GSTR STR?462,"Like tobacco maybe."
|
||||
.GSTR STR?463,"Light the pipe, drop the match, and go on in."
|
||||
.GSTR STR?464,"What do I do with the axe?"
|
||||
.GSTR STR?465,"The axe doesn't do much except cut down on the number of other things you can carry."
|
||||
.GSTR STR?466,"How can I light the torch?"
|
||||
.GSTR STR?467,"Light it from something that's already burning."
|
||||
.GSTR STR?468,"Light it from a burning piece of paper."
|
||||
.GSTR STR?469,"Light a piece of paper from the pipe, and then use it to light the torch."
|
||||
.GSTR STR?470,"Will Lestrade talk to me in his office?"
|
||||
.GSTR STR?471,"He doesn't like you."
|
||||
.GSTR STR?472,"He really doesn't like you."
|
||||
.GSTR STR?473,"What office?"
|
||||
.GSTR STR?474,"How do I get inside the bank?"
|
||||
.GSTR STR?475,"Despite the guard's assertions to the contrary, he can be bribed."
|
||||
.GSTR STR?476,"Give him something valuable."
|
||||
.GSTR STR?477,"Some gems might do the trick."
|
||||
.GSTR STR?478,"Give him the ruby, the sapphire, the emerald and the opal."
|
||||
.GSTR STR?479,"How do I get inside the vault?"
|
||||
.GSTR STR?480,"The door has a combination lock on it."
|
||||
.GSTR STR?481,"The tumblers turn too quietly for you to hear without amplification."
|
||||
.GSTR STR?482,"Listen to the door with the stethoscope, and then turn the dial left or right."
|
||||
.GSTR STR?483,"A 'clunk' means you're going the wrong way."
|
||||
.GSTR STR?484,"A 'whirr' means you're going the right way."
|
||||
.GSTR STR?485,"A 'click' means you should reverse directions."
|
||||
.GSTR STR?486,"The combination is right twice, left once, right twice."
|
||||
.GSTR STR?487,"Which box should I open?"
|
||||
.GSTR STR?488,"Have you solved the second clue on Sir Isaac Newton's tomb?"
|
||||
.GSTR STR?489,"Open box 600."
|
||||
.GSTR STR?490,"How do I open safety deposit boxes?"
|
||||
.GSTR STR?491,"Do you have any dynamite?"
|
||||
.GSTR STR?492,"Try using a key."
|
||||
.GSTR STR?493,"The bank guard has it."
|
||||
.GSTR STR?494,"It's in his pocket."
|
||||
.GSTR STR?495,"How good a pickpocket are you?"
|
||||
.GSTR STR?496,"How good a pickpocket are the people you know?"
|
||||
.GSTR STR?497,"Ask Wiggins to steal it."
|
||||
.GSTR STR?498,"How can I stop the kidnapping?"
|
||||
.GSTR STR?499,"Hire bodyguards."
|
||||
.GSTR STR?500,"Put Holmes in your medical bag."
|
||||
.GSTR STR?501,"You can't."
|
||||
.GSTR STR?502,"What does Mycroft want from me?"
|
||||
.GSTR STR?503,"Your blood?"
|
||||
.GSTR STR?504,"Your first-born male child?"
|
||||
.GSTR STR?505,"Sherlock's ring."
|
||||
.GSTR STR?506,"How do I get the token?"
|
||||
.GSTR STR?507,"Show any of the gems you have found to Sherlock."
|
||||
.GSTR STR?508,"How do I get into the Tower?"
|
||||
.GSTR STR?509,"Give the password to the beefeater."
|
||||
.GSTR STR?510,"You must get the password from someone who has government connections."
|
||||
.GSTR STR?511,"Mycroft Holmes knows the password."
|
||||
.GSTR STR?512,"Don't continue unless Sherlock Holmes has been kidnapped."
|
||||
.GSTR STR?513,"Go to the Diogenes Club and ask for Mycroft. The butler will ask you for a token. Give him the token. Mycroft will appear and give you the password."
|
||||
.GSTR STR?514,"Return to the Tower and give the guard the password."
|
||||
.GSTR STR?515,"Just type GUARD, [PASSWORD]."
|
||||
.GSTR STR?516,"How do I get out of the Tower?"
|
||||
.GSTR STR?517,"The beefeater won't let you out. You must find another exit."
|
||||
.GSTR STR?518,"The only other way out is through Traitor's Gate."
|
||||
.GSTR STR?519,"The portcullis is operated by the chain above it."
|
||||
.GSTR STR?520,"You do not weigh enough to pull down the chain."
|
||||
.GSTR STR?521,"Put on the suit of armour in the dungeon of the White Tower and then pull on the chain."
|
||||
.GSTR STR?522,"Where is the diamond?"
|
||||
.GSTR STR?523,"What diamond?"
|
||||
.GSTR STR?524,"How do I get the diamond?"
|
||||
.GSTR STR?525,"See previous hint."
|
||||
.GSTR STR?526,"Where is the sapphire?"
|
||||
.GSTR STR?527,"Did you solve the Hickory Dickory Dock riddle?"
|
||||
.GSTR STR?528,"It's stuck to the clapper of Big Ben."
|
||||
.GSTR STR?529,"How do I get the sapphire?"
|
||||
.GSTR STR?530,"Have you tried driving a hook into the ceiling, throwing a rope over the hook, climbing up onto the rail, swinging across the hollow shaft while screaming like Tarzan, and grabbing the sapphire as you swing by?"
|
||||
.GSTR STR?531,"Just asking."
|
||||
.GSTR STR?532,"Wait until the hour strikes. The clapper will swing your way."
|
||||
.GSTR STR?533,"You need to use your hands while the bell is ringing."
|
||||
.GSTR STR?534,"Put the cotton balls in your ears before the bell starts to ring."
|
||||
.GSTR STR?535,"The cotton balls are in the blue pill bottle."
|
||||
.GSTR STR?536,"Where is the ruby?"
|
||||
.GSTR STR?537,"Did you solve the Son of Mars riddle?"
|
||||
.GSTR STR?538,"It's somewhere in Trafalgar Square."
|
||||
.GSTR STR?539,"It's on the statue in Trafalgar Square."
|
||||
.GSTR STR?540,"It's in Nelson's blind eye."
|
||||
.GSTR STR?541,"You can discover it only by looking through the telescope."
|
||||
.GSTR STR?542,"How do I get the ruby?"
|
||||
.GSTR STR?543,"You can't get up there."
|
||||
.GSTR STR?544,"Someone - or something - else will have to get it for you."
|
||||
.GSTR STR?545,"Some kind of trained bird might do it."
|
||||
.GSTR STR?546,"Old Sherman, who lives in Pinchin Lane, trains animals."
|
||||
.GSTR STR?547,"Get the bird from Sherman. Take it to Trafalgar Square. Show the ruby to the pigeon, ask him to get it, and then let him go."
|
||||
.GSTR STR?548,"Do not read the next clue until you have done all of the above."
|
||||
.GSTR STR?549,"Did we mention that it's a homing pigeon?"
|
||||
.GSTR STR?550,"Return to Sherman's shop and ask him about the bird."
|
||||
.GSTR STR?551,"Where is the emerald?"
|
||||
.GSTR STR?552,"Did you solve the Chopper riddle?"
|
||||
.GSTR STR?553,"It's in the Chamber of Horrors."
|
||||
.GSTR STR?554,"It's hidden in one of the statues."
|
||||
.GSTR STR?555,"It's in the wax head of Charles I."
|
||||
.GSTR STR?556,"How do I get the emerald?"
|
||||
.GSTR STR?557,"It's encased in wax. What springs to mind?"
|
||||
.GSTR STR?558,"You need to melt the head."
|
||||
.GSTR STR?559,"You can't melt the head unless you remove it from the statue."
|
||||
.GSTR STR?560,"You need something that puts out enough heat to melt a big gob of wax."
|
||||
.GSTR STR?561,"The torch will melt the wax head."
|
||||
.GSTR STR?562,"Where is the sceptre?"
|
||||
.GSTR STR?563,"In the sceptre tank?"
|
||||
.GSTR STR?564,"Sorry about that."
|
||||
.GSTR STR?565,"There is no sceptre."
|
||||
.GSTR STR?566,"How do I get the sceptre?"
|
||||
.GSTR STR?567,"Dive into the sceptre tank."
|
||||
.GSTR STR?568,"Don't blame us. You're the one who keeps reading these bogus clues."
|
||||
.GSTR STR?569,"Where is the opal?"
|
||||
.GSTR STR?570,"Have you solved the London Bridge riddle?"
|
||||
.GSTR STR?571,"It's in the clump of moss under London Bridge."
|
||||
.GSTR STR?572,"How do I get the opal?"
|
||||
.GSTR STR?573,"Can you lower the bridge?"
|
||||
.GSTR STR?574,"Can you raise the water?"
|
||||
.GSTR STR?575,"Wait for high tide."
|
||||
.GSTR STR?576,"The newspaper that came with your game contains the tide tables for the weekend."
|
||||
.GSTR STR?577,"Where is the zorkmid?"
|
||||
.GSTR STR?578,"It's in the... oops. Sorry. Wrong game."
|
||||
.GSTR STR?579,"How do I get the zorkmid?"
|
||||
.GSTR STR?580,"Buy Zork I."
|
||||
.GSTR STR?581,"Buy Enchanter."
|
||||
.GSTR STR?582,"Buy Sorcerer."
|
||||
.GSTR STR?583,"You get the idea."
|
||||
.GSTR STR?584,"Where is the topaz?"
|
||||
.GSTR STR?585,"In a safety deposit box in the Bank of England."
|
||||
.GSTR STR?586,"Have you solved the number riddle?"
|
||||
.GSTR STR?587,"It's in box 600."
|
||||
.GSTR STR?588,"How do I get the topaz?"
|
||||
.GSTR STR?589,"See the clues for the Bank of England."
|
||||
.GSTR STR?590,"Where is the garnet?"
|
||||
.GSTR STR?591,"Did you solve the Tower of London riddle?"
|
||||
.GSTR STR?592,"It's in the butt of malmsey in the Bowyer Tower."
|
||||
.GSTR STR?593,"How do I get the garnet?"
|
||||
.GSTR STR?594,"Have you tried drinking the wine?"
|
||||
.GSTR STR?595,"Pretty tasty stuff, isn't it?"
|
||||
.GSTR STR?596,"You need to drain the keg somehow."
|
||||
.GSTR STR?597,"You need to remove the bung."
|
||||
.GSTR STR?598,"Knock out the bung with the mace."
|
||||
.GSTR STR?599,"Don't read the next clue until you have done all of the above."
|
||||
.GSTR STR?600,"Ask Wiggins to get the garnet for you."
|
||||
.GSTR STR?601,"Why are the gems important?"
|
||||
.GSTR STR?602,"You don't think the thief has been hiding gems all over London just for the fun of it, do you?"
|
||||
.GSTR STR?603,"Perhaps he is trying to send Sherlock yet another message."
|
||||
.GSTR STR?604,"Have you looked at any of the gems?"
|
||||
.GSTR STR?605,"Have you looked at any of them closely?"
|
||||
.GSTR STR?606,"Look at each of the gems through the magnifying glass."
|
||||
.GSTR STR?607,"Can I stop Akbar's knocking me out?"
|
||||
.GSTR STR?608,"Knock him out first."
|
||||
.GSTR STR?609,"Perhaps you could smuggle something in."
|
||||
.GSTR STR?610,"Have you noticed the henchman's religion?"
|
||||
.GSTR STR?611,"He probably won't disturb your hat."
|
||||
.GSTR STR?612,"Perhaps the etherium ampoule...."
|
||||
.GSTR STR?613,"Can I stop Moriarty when I wake up?"
|
||||
.GSTR STR?614,"If he is free to move around, he will always win."
|
||||
.GSTR STR?615,"Tie him up."
|
||||
.GSTR STR?616,"Don't forget to tie up the henchman, too."
|
||||
.GSTR STR?617,"Why do I finish without 100 points?"
|
||||
.GSTR STR?618,"If you play the game from start to finish and solve all the puzzles, you will end up with 100 points. If, however, you start the game and play through it using information you acquired in a previous session, you may have neglected to perform a few actions for which you received points. This should not be of concern to anyone who is content with failing to discover the highest ranking available to the game player."
|
||||
.GSTR STR?619,"Can I abbreviate ""stethoscope""?"
|
||||
.GSTR STR?620,"Yes. It can be abbreviated to STETH or SS."
|
||||
.GSTR STR?621,"What is the square root of 64?"
|
||||
.GSTR STR?622,"Eight."
|
||||
.GSTR STR?623,"STARTERS"
|
||||
.GSTR STR?624,"CABS"
|
||||
.GSTR STR?625,"WESTMINSTER ABBEY"
|
||||
.GSTR STR?626,"BRITISH MUSEUM"
|
||||
.GSTR STR?627,"ST PAUL'S"
|
||||
.GSTR STR?628,"TRAFALGAR SQUARE"
|
||||
.GSTR STR?629,"ON THE THAMES"
|
||||
.GSTR STR?630,"VICTORIA STATION"
|
||||
.GSTR STR?631,"COVENT GARDEN"
|
||||
.GSTR STR?632,"MADAME TUSSAUD'S"
|
||||
.GSTR STR?633,"SCOTLAND YARD"
|
||||
.GSTR STR?634,"BANK OF ENGLAND"
|
||||
.GSTR STR?635,"DIOGENES CLUB"
|
||||
.GSTR STR?636,"TOWER OF LONDON"
|
||||
.GSTR STR?637,"GEMS"
|
||||
.GSTR STR?638,"MORE GEMS"
|
||||
.GSTR STR?639,"THE LAIR"
|
||||
.GSTR STR?640,"MISCELLANEOUS"
|
||||
.GSTR STR?641,"INVISICLUES (tm)"
|
||||
.GSTR STR?642,"RETURN = see new hint"
|
||||
.GSTR STR?643,"Q = see hint menu"
|
||||
.GSTR STR?644," N = Next"
|
||||
.GSTR STR?645,"P = Previous"
|
||||
.GSTR STR?646," RETURN = See hint"
|
||||
.GSTR STR?647,"Q = Resume story"
|
||||
.GSTR STR?648,"wave"
|
||||
.GSTR STR?649,"waves"
|
||||
.GSTR STR?650,"shout"
|
||||
.GSTR STR?651,"shouts"
|
||||
.GSTR STR?652,"would fit very well"
|
||||
.GSTR STR?653,"do not"
|
||||
.GSTR STR?654,"does not"
|
||||
.GSTR STR?655,"do"
|
||||
.GSTR STR?656,"does"
|
||||
.GSTR STR?657,"Blowing"
|
||||
.GSTR STR?658,"Paying respect to"
|
||||
.GSTR STR?659,"could not"
|
||||
.GSTR STR?660,"cannot"
|
||||
.GSTR STR?661,"is looking for a fight"
|
||||
.GSTR STR?662,"closed"
|
||||
.GSTR STR?663,"become"
|
||||
.GSTR STR?664,"becomes"
|
||||
.GSTR STR?665,"see"
|
||||
.GSTR STR?666,"sees"
|
||||
.GSTR STR?667,"would agree with you"
|
||||
.GSTR STR?668,"inhale first.
|
||||
"
|
||||
.GSTR STR?669,"Flipping"
|
||||
.GSTR STR?670,"Folding"
|
||||
.GSTR STR?671,"would accept your offer"
|
||||
.GSTR STR?672,"Heating"
|
||||
.GSTR STR?673,"Kicking"
|
||||
.GSTR STR?674,"close"
|
||||
.GSTR STR?675,"surgeon"
|
||||
.GSTR STR?676,"veterinarian"
|
||||
.GSTR STR?677,"Trying to destroy"
|
||||
.GSTR STR?678,"locksmith"
|
||||
.GSTR STR?679,"Playing with"
|
||||
.GSTR STR?680,"Pointing at"
|
||||
.GSTR STR?681,"Pointing"
|
||||
.GSTR STR?682,"take off"
|
||||
.GSTR STR?683,"Pulling on"
|
||||
.GSTR STR?684,"Pushing around"
|
||||
.GSTR STR?685,"put"
|
||||
.GSTR STR?686,"puts"
|
||||
.GSTR STR?687,"ask about"
|
||||
.GSTR STR?688,"ASK CHARACTER ABOUT"
|
||||
.GSTR STR?689,"Toying in this way with"
|
||||
.GSTR STR?690,"would appreciate your reading"
|
||||
.GSTR STR?691,"wants to play piggyback"
|
||||
.GSTR STR?692,"Rubbing"
|
||||
.GSTR STR?693,"is interested in selling anything"
|
||||
.GSTR STR?694,"would buy anything"
|
||||
.GSTR STR?695,"salesperson"
|
||||
.GSTR STR?696,"Shaking"
|
||||
.GSTR STR?697,"take"
|
||||
.GSTR STR?698,"takes"
|
||||
.GSTR STR?699,"whisper"
|
||||
.GSTR STR?700,"whispers"
|
||||
.GSTR STR?701,"Fiddling with"
|
||||
.GSTR STR?702,"Turning"
|
||||
.GSTR STR?703,"drop"
|
||||
.GSTR STR?704,"drops"
|
||||
.GSTR STR?705,"already have"
|
||||
.GSTR STR?706,"already has"
|
||||
.GSTR STR?707,"opens"
|
||||
.GSTR STR?708,"closes"
|
||||
.GSTR STR?709,"ON"
|
||||
.GSTR STR?710,"OFF"
|
||||
.GSTR STR?711,"give"
|
||||
.GSTR STR?712,"gives"
|
||||
.GSTR STR?713,"shoot"
|
||||
.GSTR STR?714,"shoots"
|
||||
.GSTR STR?715,"take things"
|
||||
.GSTR STR?716,"asking"
|
||||
.GSTR STR?717,"let"
|
||||
.GSTR STR?718,"lets"
|
||||
.GSTR STR?719,"will do you any favours"
|
||||
.GSTR STR?720,"untie"
|
||||
.GSTR STR?721,"unties"
|
||||
.GSTR STR?722,"tie"
|
||||
.GSTR STR?723,"ties"
|
||||
.GSTR STR?724,"The fireplace is in the way."
|
||||
.GSTR STR?725,"You would fly out the bow window."
|
||||
.GSTR STR?726,"You were thinking maybe you had wings?"
|
||||
.GSTR STR?727,"take out"
|
||||
.GSTR STR?728,"feel"
|
||||
.GSTR STR?729,"feels"
|
||||
.GSTR STR?730,"Wiggins's"
|
||||
.GSTR STR?731,"Holmes's"
|
||||
.GSTR STR?732,"Mrs Hudson"
|
||||
.GSTR STR?733,"Mrs Hudson's"
|
||||
.GSTR STR?734,"the girl"
|
||||
.GSTR STR?735,"the girl's"
|
||||
.GSTR STR?736,"yourself"
|
||||
.GSTR STR?737,"your"
|
||||
.GSTR STR?738,"be holding"
|
||||
.GSTR STR?739,"make"
|
||||
.GSTR STR?740,"makes"
|
||||
.GSTR STR?741,"statue of Sir Isaac Newton"
|
||||
.GSTR STR?742,"cherubs"
|
||||
.GSTR STR?743,"diagram"
|
||||
.GSTR STR?744,"Newton's tomb"
|
||||
.GSTR STR?745,"any"
|
||||
.GSTR STR?746,"the"
|
||||
.GSTR STR?747,"some"
|
||||
.GSTR STR?748,"an"
|
||||
.GSTR STR?749,"a"
|
||||
.GSTR STR?750,"knights"
|
||||
.GSTR STR?751,"armour"
|
||||
.GSTR STR?752,"Sir Francis Vere's tomb"
|
||||
.GSTR STR?753,"get"
|
||||
.GSTR STR?754,"gets"
|
||||
.GSTR STR?755,"try"
|
||||
.GSTR STR?756,"tries"
|
||||
.GSTR STR?757,"struggle"
|
||||
.GSTR STR?758,"struggles"
|
||||
.GSTR STR?759,"remove"
|
||||
.GSTR STR?760,"removes"
|
||||
.GSTR STR?761,"tug"
|
||||
.GSTR STR?762,"tugs"
|
||||
.GSTR STR?763,"knock"
|
||||
.GSTR STR?764,"knocks"
|
||||
.GSTR STR?765,"hit"
|
||||
.GSTR STR?766,"hits"
|
||||
.GSTR STR?767,"touch"
|
||||
.GSTR STR?768,"touches"
|
||||
.GSTR STR?769,"reach"
|
||||
.GSTR STR?770,"reaches"
|
||||
.GSTR STR?771,"recall"
|
||||
.GSTR STR?772,"recalls"
|
||||
.GSTR STR?773,"quickly withdraw"
|
||||
.GSTR STR?774,"quickly withdraws"
|
||||
.GSTR STR?775,"release"
|
||||
.GSTR STR?776,"releases"
|
||||
.GSTR STR?777,"cut"
|
||||
.GSTR STR?778,"cuts"
|
||||
.GSTR STR?779,"strutting around"
|
||||
.GSTR STR?780,"pictures"
|
||||
.GSTR STR?781,"open it first."
|
||||
.GSTR STR?782,"triumphal arch"
|
||||
.GSTR STR?783,"fireplace"
|
||||
.GSTR STR?784,"gas light"
|
||||
.GSTR STR?785,"chariot"
|
||||
.GSTR STR?786,"marquees"
|
||||
.GSTR STR?787,"supports"
|
||||
.GSTR STR?788,"lower"
|
||||
.GSTR STR?789,"lowers"
|
||||
.GSTR STR?790,"raise"
|
||||
.GSTR STR?791,"raises"
|
||||
.GSTR STR?792,"that part of the statue"
|
||||
.GSTR STR?793,"things in the library"
|
||||
.GSTR STR?794,"produce"
|
||||
.GSTR STR?795,"walls"
|
||||
.GSTR STR?796,"instruments of torture"
|
||||
.GSTR STR?797,"get out of"
|
||||
.GSTR STR?798,"stick"
|
||||
.GSTR STR?799,"sticks"
|
||||
.GSTR STR?800,"come"
|
||||
.GSTR STR?801,"comes"
|
||||
.GSTR STR?802,"blow"
|
||||
.GSTR STR?803,"blows"
|
||||
.GSTR STR?804,"turn"
|
||||
.GSTR STR?805,"turns"
|
||||
.GSTR STR?806,"them"
|
||||
.GSTR STR?807,"it"
|
||||
.GSTR STR?808,"lock"
|
||||
.GSTR STR?809,"locks"
|
||||
.GSTR STR?810,"close and lock"
|
||||
.GSTR STR?811,"closes and locks"
|
||||
.GSTR STR?812,"accept your offer"
|
||||
.GSTR STR?813,"jump"
|
||||
.GSTR STR?814,"jumps"
|
||||
.GSTR STR?815,"pull"
|
||||
.GSTR STR?816,"pulls"
|
||||
.GSTR STR?817,"row"
|
||||
.GSTR STR?818,"rows"
|
||||
.GSTR STR?819,"paddle"
|
||||
.GSTR STR?820,"paddles"
|
||||
.GSTR STR?821,"unlock"
|
||||
.GSTR STR?822,"unlocks"
|
||||
.GSTR STR?823,"water"
|
||||
.GSTR STR?824,"statues"
|
||||
.GSTR STR?825,"staring at you"
|
||||
.GSTR STR?826,"pedestal"
|
||||
|
||||
.ENDI
|
14
generic.zabstr
Normal file
14
generic.zabstr
Normal file
|
@ -0,0 +1,14 @@
|
|||
|
||||
<DEFINE-ROUTINE RT-GN-PAPER>
|
||||
<DEFINE-ROUTINE RT-GN-GEM>
|
||||
<DEFINE-ROUTINE RT-GN-PIGEON>
|
||||
<DEFINE-ROUTINE RT-GN-OAR>
|
||||
<DEFINE-ROUTINE RT-GN-BOX>
|
||||
<DEFINE-ROUTINE RT-GN-DOOR>
|
||||
<DEFINE-ROUTINE RT-GN-BOTTLE>
|
||||
<DEFINE-ROUTINE RT-GN-PILL>
|
||||
<DEFINE-ROUTINE RT-GN-TH-CLOTHES>
|
||||
<DEFINE-ROUTINE RT-GN-BODY>
|
||||
<DEFINE-ROUTINE RT-GN-INTNUM>
|
||||
<DEFINE-ROUTINE RT-GN-ETHERIUM>
|
||||
<DEFINE-ROUTINE RT-GN-TOWER>
|
301
generic.zap
Normal file
301
generic.zap
Normal file
|
@ -0,0 +1,301 @@
|
|||
|
||||
|
||||
.FUNCT RT-GN-PAPER,TBL,LEN,PTR,OBJ,PAPER,CONT,C-PAPER,HELD,H-PAPER,GND,G-PAPER
|
||||
ZERO? LEN \?CND1
|
||||
GET TBL,0 >LEN
|
||||
?CND1: ADD TBL,2 >PTR
|
||||
INTBL? GL-P-IT-OBJECT,PTR,LEN \?PRG6
|
||||
PRINTC 91
|
||||
ICALL2 RT-CTHEO-PRINT,GL-P-IT-OBJECT
|
||||
PRINTC 93
|
||||
CRLF
|
||||
RETURN GL-P-IT-OBJECT
|
||||
?PRG6: MUL LEN,2
|
||||
ADD TBL,STACK
|
||||
GRTR? PTR,STACK /?REP7
|
||||
GET PTR,0 >OBJ
|
||||
LOC OBJ
|
||||
FSET? STACK,FL-SURFACE /?REP7
|
||||
LOC OBJ
|
||||
EQUAL? STACK,CH-PLAYER \?CCL15
|
||||
ZERO? HELD \?CCL18
|
||||
SET 'HELD,TRUE-VALUE
|
||||
SET 'H-PAPER,OBJ
|
||||
JUMP ?CND11
|
||||
?CCL18: SET 'H-PAPER,FALSE-VALUE
|
||||
JUMP ?CND11
|
||||
?CCL15: LOC OBJ
|
||||
EQUAL? STACK,GL-PLACE-CUR \?CCL20
|
||||
ZERO? GND \?CCL23
|
||||
SET 'GND,TRUE-VALUE
|
||||
SET 'G-PAPER,OBJ
|
||||
JUMP ?CND11
|
||||
?CCL23: SET 'G-PAPER,FALSE-VALUE
|
||||
JUMP ?CND11
|
||||
?CCL20: ZERO? CONT \?CCL25
|
||||
LOC OBJ
|
||||
FSET? STACK,FL-CONTAINER \?CCL25
|
||||
LOC OBJ >CONT
|
||||
SET 'C-PAPER,OBJ
|
||||
JUMP ?CND11
|
||||
?CCL25: LOC OBJ
|
||||
FSET? STACK,FL-CONTAINER \?CND11
|
||||
ZERO? CONT /?CND11
|
||||
LOC OBJ
|
||||
EQUAL? STACK,CONT /?CND11
|
||||
SET 'C-PAPER,FALSE-VALUE
|
||||
?CND11: ADD PTR,2 >PTR
|
||||
JUMP ?PRG6
|
||||
?REP7: ZERO? OBJ /?CCL34
|
||||
LOC OBJ
|
||||
FSET? STACK,FL-SURFACE \?CCL34
|
||||
SET 'PAPER,OBJ
|
||||
JUMP ?CND32
|
||||
?CCL34: ZERO? H-PAPER /?CCL38
|
||||
SET 'PAPER,H-PAPER
|
||||
JUMP ?CND32
|
||||
?CCL38: ZERO? G-PAPER /?CCL40
|
||||
SET 'PAPER,G-PAPER
|
||||
JUMP ?CND32
|
||||
?CCL40: ZERO? C-PAPER /FALSE
|
||||
SET 'PAPER,C-PAPER
|
||||
?CND32: PRINTC 91
|
||||
ICALL2 RT-CTHEO-PRINT,PAPER
|
||||
PRINTC 93
|
||||
CRLF
|
||||
CRLF
|
||||
RETURN PAPER
|
||||
|
||||
|
||||
.FUNCT RT-GN-GEM,TBL,LEN,PTR,OBJ,GEM,CONT,C-GEM,HELD,H-GEM,GND,G-GEM
|
||||
ZERO? LEN \?CND1
|
||||
GET TBL,0 >LEN
|
||||
?CND1: ADD TBL,2 >PTR
|
||||
INTBL? GL-P-IT-OBJECT,PTR,LEN \?CCL5
|
||||
PRINTC 91
|
||||
ICALL2 RT-CTHEO-PRINT,GL-P-IT-OBJECT
|
||||
PRINTC 93
|
||||
CRLF
|
||||
CRLF
|
||||
RETURN GL-P-IT-OBJECT
|
||||
?CCL5: EQUAL? GL-PLACE-CUR,RM-CLOCK-TOWER \?PRG10
|
||||
IN? TH-SAPPHIRE,TH-CLAPPER \?PRG10
|
||||
RETURN TH-SAPPHIRE
|
||||
?PRG10: MUL LEN,2
|
||||
ADD TBL,STACK
|
||||
GRTR? PTR,STACK /?REP11
|
||||
GET PTR,0 >OBJ
|
||||
LOC OBJ
|
||||
EQUAL? STACK,CH-PLAYER \?CCL17
|
||||
ZERO? HELD \?CCL20
|
||||
SET 'HELD,TRUE-VALUE
|
||||
SET 'H-GEM,OBJ
|
||||
JUMP ?CND15
|
||||
?CCL20: SET 'H-GEM,FALSE-VALUE
|
||||
JUMP ?CND15
|
||||
?CCL17: LOC OBJ
|
||||
EQUAL? STACK,GL-PLACE-CUR \?CCL22
|
||||
ZERO? GND \?CCL25
|
||||
SET 'GND,TRUE-VALUE
|
||||
SET 'G-GEM,OBJ
|
||||
JUMP ?CND15
|
||||
?CCL25: SET 'G-GEM,FALSE-VALUE
|
||||
JUMP ?CND15
|
||||
?CCL22: LOC OBJ
|
||||
ZERO? STACK /?CCL27
|
||||
ZERO? CONT \?CCL27
|
||||
LOC OBJ
|
||||
FSET? STACK,FL-CONTAINER \?CCL27
|
||||
LOC OBJ >CONT
|
||||
SET 'C-GEM,OBJ
|
||||
JUMP ?CND15
|
||||
?CCL27: LOC OBJ
|
||||
ZERO? STACK /?CND15
|
||||
LOC OBJ
|
||||
FSET? STACK,FL-CONTAINER \?CND15
|
||||
ZERO? CONT /?CND15
|
||||
LOC OBJ
|
||||
EQUAL? STACK,CONT /?CND15
|
||||
SET 'C-GEM,FALSE-VALUE
|
||||
?CND15: ADD PTR,2 >PTR
|
||||
JUMP ?PRG10
|
||||
?REP11: ZERO? H-GEM /?CCL38
|
||||
SET 'GEM,H-GEM
|
||||
JUMP ?CND36
|
||||
?CCL38: ZERO? G-GEM /?CCL40
|
||||
SET 'GEM,G-GEM
|
||||
JUMP ?CND36
|
||||
?CCL40: ZERO? C-GEM /FALSE
|
||||
SET 'GEM,C-GEM
|
||||
?CND36: PRINTC 91
|
||||
ICALL2 RT-CTHEO-PRINT,GEM
|
||||
PRINTC 93
|
||||
CRLF
|
||||
CRLF
|
||||
RETURN GEM
|
||||
|
||||
|
||||
.FUNCT RT-GN-PIGEON,TBL,LEN
|
||||
FSET? CH-TRAINED-PIGEON,FL-ALIVE /?CCL3
|
||||
PRINTC 91
|
||||
ICALL2 RT-CTHEO-PRINT,TH-DEAD-PIGEON
|
||||
PRINTC 93
|
||||
CRLF
|
||||
CRLF
|
||||
RETURN TH-DEAD-PIGEON
|
||||
?CCL3: PRINTC 91
|
||||
ICALL2 RT-CTHEO-PRINT,CH-TRAINED-PIGEON
|
||||
PRINTC 93
|
||||
CRLF
|
||||
CRLF
|
||||
RETURN CH-TRAINED-PIGEON
|
||||
|
||||
|
||||
.FUNCT RT-GN-OAR,TBL,LEN
|
||||
EQUAL? GL-P-IT-OBJECT,TH-OAR-1,TH-OAR-2 \?CCL3
|
||||
PRINTC 91
|
||||
ICALL2 RT-CTHEO-PRINT,GL-P-IT-OBJECT
|
||||
PRINTC 93
|
||||
CRLF
|
||||
CRLF
|
||||
RETURN GL-P-IT-OBJECT
|
||||
?CCL3: PRINTC 91
|
||||
ICALL2 RT-CTHEO-PRINT,TH-OAR-2
|
||||
PRINTC 93
|
||||
CRLF
|
||||
CRLF
|
||||
RETURN TH-OAR-2
|
||||
|
||||
|
||||
.FUNCT RT-GN-BOX,TBL,LEN,PTR
|
||||
ZERO? LEN \?CND1
|
||||
GET TBL,0 >LEN
|
||||
?CND1: ADD TBL,2 >PTR
|
||||
INTBL? GL-P-IT-OBJECT,PTR,LEN \FALSE
|
||||
PRINTC 91
|
||||
ICALL2 RT-CTHEO-PRINT,GL-P-IT-OBJECT
|
||||
PRINTC 93
|
||||
CRLF
|
||||
CRLF
|
||||
RETURN GL-P-IT-OBJECT
|
||||
|
||||
|
||||
.FUNCT RT-GN-DOOR,TBL,LEN,PTR,OBJ,DOOR
|
||||
ZERO? LEN \?CND1
|
||||
GET TBL,0 >LEN
|
||||
?CND1: ADD TBL,2 >PTR
|
||||
?PRG3: MUL LEN,2
|
||||
ADD TBL,STACK
|
||||
GRTR? PTR,STACK /?REP4
|
||||
GET PTR,0 >OBJ
|
||||
EQUAL? GL-PRSA,V?OPEN \?CCL10
|
||||
FSET? OBJ,FL-OPENED /?CND8
|
||||
ZERO? DOOR \FALSE
|
||||
SET 'DOOR,OBJ
|
||||
JUMP ?CND8
|
||||
?CCL10: EQUAL? GL-PRSA,V?CLOSE \?CND8
|
||||
FSET? OBJ,FL-OPENED \?CND8
|
||||
ZERO? DOOR \FALSE
|
||||
SET 'DOOR,OBJ
|
||||
?CND8: ADD PTR,2 >PTR
|
||||
JUMP ?PRG3
|
||||
?REP4: ZERO? DOOR /?CND22
|
||||
PRINTC 91
|
||||
ICALL2 RT-CTHEO-PRINT,DOOR
|
||||
PRINTC 93
|
||||
CRLF
|
||||
CRLF
|
||||
?CND22: RETURN DOOR
|
||||
|
||||
|
||||
.FUNCT RT-GN-BOTTLE,TBL,LEN,PTR,OBJ,BOTTLE
|
||||
ZERO? LEN \?CND1
|
||||
GET TBL,0 >LEN
|
||||
?CND1: ADD TBL,2 >PTR
|
||||
?PRG3: MUL LEN,2
|
||||
ADD TBL,STACK
|
||||
GRTR? PTR,STACK /?REP4
|
||||
GET PTR,0 >OBJ
|
||||
EQUAL? GL-PRSA,V?OPEN \?PRD11
|
||||
ZERO? GL-NOW-PRSI? \?PRD11
|
||||
FSET? OBJ,FL-OPENED \?CCL9
|
||||
?PRD11: EQUAL? GL-PRSA,V?CLOSE \?PRD15
|
||||
ZERO? GL-NOW-PRSI? \?PRD15
|
||||
FSET? OBJ,FL-OPENED /?CCL9
|
||||
?PRD15: EQUAL? GL-PRSA,V?PUT \?CND8
|
||||
ZERO? GL-NOW-PRSI? /?CND8
|
||||
FSET? OBJ,FL-OPENED \?CND8
|
||||
?CCL9: ZERO? BOTTLE \FALSE
|
||||
SET 'BOTTLE,OBJ
|
||||
?CND8: ADD PTR,2 >PTR
|
||||
JUMP ?PRG3
|
||||
?REP4: ZERO? BOTTLE /?CND25
|
||||
PRINTC 91
|
||||
ICALL2 RT-CTHEO-PRINT,BOTTLE
|
||||
PRINTC 93
|
||||
CRLF
|
||||
CRLF
|
||||
?CND25: RETURN BOTTLE
|
||||
|
||||
|
||||
.FUNCT RT-GN-PILL,TBL,LEN,PTR,OBJ,PILL
|
||||
ZERO? LEN \?CND1
|
||||
GET TBL,0 >LEN
|
||||
?CND1: ADD TBL,2 >PTR
|
||||
CALL1 RT-TOUCH-VERB?
|
||||
ZERO? STACK /?CND3
|
||||
?PRG5: MUL LEN,2
|
||||
ADD TBL,STACK
|
||||
GRTR? PTR,STACK /?CND3
|
||||
GET PTR,0 >OBJ
|
||||
CALL2 RT-ACCESSIBLE?,OBJ
|
||||
ZERO? STACK /?CND10
|
||||
ZERO? PILL \FALSE
|
||||
SET 'PILL,OBJ
|
||||
?CND10: ADD PTR,2 >PTR
|
||||
JUMP ?PRG5
|
||||
?CND3: ZERO? PILL /?CND15
|
||||
PRINTC 91
|
||||
ICALL2 RT-CTHEO-PRINT,PILL
|
||||
PRINTC 93
|
||||
CRLF
|
||||
CRLF
|
||||
?CND15: RETURN PILL
|
||||
|
||||
|
||||
.FUNCT RT-GN-TH-CLOTHES,TBL,LEN
|
||||
RETURN TH-CLOTHES
|
||||
|
||||
|
||||
.FUNCT RT-GN-BODY,TBL,LEN,PTR,OBJ
|
||||
ZERO? LEN \?CND1
|
||||
GET TBL,0 >LEN
|
||||
?CND1: ADD TBL,2 >PTR
|
||||
INTBL? TH-CLOTHES,PTR,LEN \?PRG5
|
||||
RETURN TH-CLOTHES
|
||||
?PRG5: ZERO? LEN /FALSE
|
||||
GET PTR,0 >OBJ
|
||||
FSET? OBJ,FL-BODYPART \?CND7
|
||||
RETURN OBJ
|
||||
?CND7: ADD PTR,2 >PTR
|
||||
DEC 'LEN
|
||||
JUMP ?PRG5
|
||||
|
||||
|
||||
.FUNCT RT-GN-INTNUM,TBL,LEN
|
||||
EQUAL? GL-PRSA,V?WAIT,V?WAIT-FOR /?CTR2
|
||||
RETURN TH-SAFETY-DEPOSIT-BOX
|
||||
?CTR2: RETURN TH-INTNUM
|
||||
|
||||
|
||||
.FUNCT RT-GN-ETHERIUM,TBL,LEN
|
||||
EQUAL? GL-PRSA,V?SMELL,V?INHALE \?CCL3
|
||||
RETURN TH-ETHERIUM-GAS
|
||||
?CCL3: EQUAL? GL-PRSA,V?MUNG,V?OPEN,V?LOOK-INSIDE \FALSE
|
||||
RETURN TH-ETHERIUM-AMPOULE
|
||||
|
||||
|
||||
.FUNCT RT-GN-TOWER,TBL,LEN
|
||||
RETURN LG-TOWER
|
||||
|
||||
.ENDI
|
253
generic.zil
Normal file
253
generic.zil
Normal file
|
@ -0,0 +1,253 @@
|
|||
;*****************************************************************************
|
||||
; "game : SHERLOCK!"
|
||||
; "file : GENERIC.ZIL"
|
||||
; "auth : $Author: DEB $"
|
||||
; "date : $Date: 28 Oct 1987 15:50:50 $"
|
||||
; "rev : $Revision: 1.25 $"
|
||||
; "vers : 1.00"
|
||||
;*****************************************************************************
|
||||
|
||||
<ROUTINE RT-GN-PAPER
|
||||
(TBL "OPTIONAL" (LEN 0) "AUX" PTR OBJ PAPER
|
||||
(CONT <>) (C-PAPER <>)
|
||||
(HELD <>) (H-PAPER <>)
|
||||
(GND <>) (G-PAPER <>))
|
||||
<COND (<ZERO? .LEN>
|
||||
<SET LEN <GET .TBL 0>>)>
|
||||
<SET PTR <REST .TBL 2>>
|
||||
<COND (<INTBL? ,GL-P-IT-OBJECT .PTR .LEN>
|
||||
<TELL "[" CTHE ,GL-P-IT-OBJECT "]" CR ;CR>
|
||||
<RETURN ,GL-P-IT-OBJECT>)
|
||||
(T
|
||||
<REPEAT ()
|
||||
<COND (<G? .PTR <REST .TBL <* .LEN 2>>>
|
||||
<RETURN>)
|
||||
(T
|
||||
<SET OBJ <GET .PTR 0>>)>
|
||||
; "If the paper is on a surface (i.e. tomb), use it."
|
||||
<COND (<MC-IS? <LOC .OBJ> ,FL-SURFACE>
|
||||
<RETURN>)
|
||||
; "Check for single held paper."
|
||||
(<EQUAL? <LOC .OBJ> ,CH-PLAYER>
|
||||
<COND (<MC-F? .HELD>
|
||||
<SET HELD T>
|
||||
<SET H-PAPER .OBJ>)
|
||||
(T
|
||||
<SET H-PAPER <>>)>)
|
||||
; "Check for single paper on ground/floor."
|
||||
(<EQUAL? <LOC .OBJ> ,GL-PLACE-CUR>
|
||||
<COND (<MC-F? .GND>
|
||||
<SET GND T>
|
||||
<SET G-PAPER .OBJ>)
|
||||
(T
|
||||
<SET G-PAPER <>>)>)
|
||||
; "Find first contained paper."
|
||||
(<AND <MC-F? .CONT>
|
||||
<MC-IS? <LOC .OBJ> ,FL-CONTAINER>>
|
||||
<SET CONT <LOC .OBJ>>
|
||||
<SET C-PAPER .OBJ>)
|
||||
; "Check for paper in a different container."
|
||||
(<AND <MC-IS? <LOC .OBJ> ,FL-CONTAINER>
|
||||
<MC-T? .CONT>
|
||||
<NOT <EQUAL? <LOC .OBJ> .CONT>>>
|
||||
<SET C-PAPER <>>)>
|
||||
<SET PTR <REST .PTR 2>>>
|
||||
<COND (<AND <MC-T? .OBJ>
|
||||
<MC-IS? <LOC .OBJ> ,FL-SURFACE>>
|
||||
<SET PAPER .OBJ>)
|
||||
(<MC-T? .H-PAPER>
|
||||
<SET PAPER .H-PAPER>)
|
||||
(<MC-T? .G-PAPER>
|
||||
<SET PAPER .G-PAPER>)
|
||||
(<MC-T? .C-PAPER>
|
||||
<SET PAPER .C-PAPER>)
|
||||
(T
|
||||
<RFALSE>)>
|
||||
<TELL "[" CTHE .PAPER "]" CR CR>
|
||||
<RETURN .PAPER>)>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE RT-GN-GEM (TBL "OPTIONAL" (LEN 0) "AUX" PTR OBJ GEM (CONT <>)
|
||||
(C-GEM <>) (HELD <>) (H-GEM <>)(GND <>) (G-GEM <>))
|
||||
<COND (<ZERO? .LEN>
|
||||
<SET LEN <GET .TBL 0>>)>
|
||||
<SET PTR <REST .TBL 2>>
|
||||
<COND (<INTBL? ,GL-P-IT-OBJECT .PTR .LEN>
|
||||
<TELL "[" CTHE ,GL-P-IT-OBJECT "]" CR CR>
|
||||
<RETURN ,GL-P-IT-OBJECT>)
|
||||
(<AND <MC-HERE? RM-CLOCK-TOWER>
|
||||
<IN? ,TH-SAPPHIRE ,TH-CLAPPER>>
|
||||
<RETURN ,TH-SAPPHIRE>)
|
||||
(T
|
||||
<REPEAT ()
|
||||
<COND (<G? .PTR <REST .TBL <* .LEN 2>>>
|
||||
<RETURN>)
|
||||
(T
|
||||
<SET OBJ <GET .PTR 0>>)>
|
||||
; "Check for single held gem."
|
||||
<COND (<EQUAL? <LOC .OBJ> ,CH-PLAYER>
|
||||
<COND (<MC-F? .HELD>
|
||||
<SET HELD T>
|
||||
<SET H-GEM .OBJ>)
|
||||
(T
|
||||
<SET H-GEM <>>)>)
|
||||
; "Check for single gem on ground/floor."
|
||||
(<EQUAL? <LOC .OBJ> ,GL-PLACE-CUR>
|
||||
<COND (<MC-F? .GND>
|
||||
<SET GND T>
|
||||
<SET G-GEM .OBJ>)
|
||||
(T
|
||||
<SET G-GEM <>>)>)
|
||||
; "Find first contained gem."
|
||||
(<AND <MC-T? <LOC .OBJ>>
|
||||
<MC-F? .CONT>
|
||||
<MC-IS? <LOC .OBJ> ,FL-CONTAINER>>
|
||||
<SET CONT <LOC .OBJ>>
|
||||
<SET C-GEM .OBJ>)
|
||||
; "Check for gem in a different container."
|
||||
(<AND <MC-T? <LOC .OBJ>>
|
||||
<MC-IS? <LOC .OBJ> ,FL-CONTAINER>
|
||||
<MC-T? .CONT>
|
||||
<NOT <EQUAL? <LOC .OBJ> .CONT>>>
|
||||
<SET C-GEM <>>)>
|
||||
<SET PTR <REST .PTR 2>>>
|
||||
<COND (<MC-T? .H-GEM> ; "Return single held gem."
|
||||
<SET GEM .H-GEM>)
|
||||
(<MC-T? .G-GEM> ; "Return single gem on ground/floor."
|
||||
<SET GEM .G-GEM>)
|
||||
(<MC-T? .C-GEM> ; "Return first gem in container."
|
||||
<SET GEM .C-GEM>)
|
||||
(T
|
||||
<RFALSE>)>
|
||||
<TELL "[" CTHE .GEM "]" CR CR>
|
||||
<RETURN .GEM>)>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE RT-GN-PIGEON (TBL "OPTIONAL" (LEN 0))
|
||||
<COND (<MC-ISNOT? ,CH-TRAINED-PIGEON ,FL-ALIVE>
|
||||
<TELL "[" CTHE ,TH-DEAD-PIGEON "]" CR CR>
|
||||
<RETURN ,TH-DEAD-PIGEON>)
|
||||
(T
|
||||
<TELL "[" CTHE ,CH-TRAINED-PIGEON "]" CR CR>
|
||||
<RETURN ,CH-TRAINED-PIGEON>)>>
|
||||
|
||||
<ROUTINE RT-GN-OAR (TBL "OPTIONAL" (LEN 0))
|
||||
<COND (<EQUAL? ,GL-P-IT-OBJECT ,TH-OAR-1 ,TH-OAR-2>
|
||||
<TELL "[" CTHE ,GL-P-IT-OBJECT "]" CR CR>
|
||||
<RETURN ,GL-P-IT-OBJECT>)
|
||||
(T
|
||||
<TELL "[" CTHE ,TH-OAR-2 "]" CR CR>
|
||||
<RETURN ,TH-OAR-2>)>>
|
||||
|
||||
<ROUTINE RT-GN-BOX (TBL "OPTIONAL" (LEN 0) "AUX" PTR)
|
||||
<COND (<ZERO? .LEN>
|
||||
<SET LEN <GET .TBL 0>>)>
|
||||
<SET PTR <REST .TBL 2>>
|
||||
<COND (<INTBL? ,GL-P-IT-OBJECT .PTR .LEN>
|
||||
<TELL "[" CTHE ,GL-P-IT-OBJECT "]" CR CR>
|
||||
<RETURN ,GL-P-IT-OBJECT>)
|
||||
(T
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE RT-GN-DOOR (TBL "OPTIONAL" (LEN 0) "AUX" PTR (OBJ <>) (DOOR <>))
|
||||
<COND (<ZERO? .LEN>
|
||||
<SET LEN <GET .TBL 0>>)>
|
||||
<SET PTR <REST .TBL 2>>
|
||||
<REPEAT ()
|
||||
<COND (<G? .PTR <REST .TBL <* .LEN 2>>>
|
||||
<RETURN>)
|
||||
(T
|
||||
<SET OBJ <GET .PTR 0>>)>
|
||||
<COND (<MC-VERB? OPEN>
|
||||
<COND (<MC-ISNOT? .OBJ ,FL-OPENED>
|
||||
<COND (<MC-F? .DOOR>
|
||||
<SET DOOR .OBJ>)
|
||||
(T
|
||||
<RFALSE>)>)>)
|
||||
(<MC-VERB? CLOSE>
|
||||
<COND (<MC-IS? .OBJ ,FL-OPENED>
|
||||
<COND (<MC-F? .DOOR>
|
||||
<SET DOOR .OBJ>)
|
||||
(T
|
||||
<RFALSE>)>)>)>
|
||||
<SET PTR <REST .PTR 2>>>
|
||||
<COND (<MC-T? .DOOR>
|
||||
<TELL "[" CTHE .DOOR "]" CR CR>)>
|
||||
<RETURN .DOOR>>
|
||||
|
||||
<ROUTINE RT-GN-BOTTLE (TBL "OPTIONAL" (LEN 0) "AUX" PTR OBJ (BOTTLE <>))
|
||||
<COND (<ZERO? .LEN>
|
||||
<SET LEN <GET .TBL 0>>)>
|
||||
<SET PTR <REST .TBL 2>>
|
||||
<REPEAT ()
|
||||
<COND (<G? .PTR <REST .TBL <* .LEN 2>>>
|
||||
<RETURN>)
|
||||
(T
|
||||
<SET OBJ <GET .PTR 0>>)>
|
||||
<COND (<OR <AND <MC-VERB? OPEN>
|
||||
<MC-THIS-PRSO?>
|
||||
<MC-ISNOT? .OBJ ,FL-OPENED>>
|
||||
<AND <MC-VERB? CLOSE>
|
||||
<MC-THIS-PRSO?>
|
||||
<MC-IS? .OBJ ,FL-OPENED>>
|
||||
<AND <MC-VERB? PUT>
|
||||
<MC-THIS-PRSI?>
|
||||
<MC-IS? .OBJ ,FL-OPENED>>>
|
||||
<COND (<MC-F? .BOTTLE>
|
||||
<SET BOTTLE .OBJ>)
|
||||
(T
|
||||
<RFALSE>)>)>
|
||||
<SET PTR <REST .PTR 2>>>
|
||||
<COND (<MC-T? .BOTTLE>
|
||||
<TELL "[" CTHE .BOTTLE "]" CR CR>)>
|
||||
<RETURN .BOTTLE>>
|
||||
|
||||
<ROUTINE RT-GN-PILL (TBL "OPTIONAL" (LEN 0) "AUX" PTR OBJ (PILL <>))
|
||||
<COND (<ZERO? .LEN>
|
||||
<SET LEN <GET .TBL 0>>)>
|
||||
<SET PTR <REST .TBL 2>>
|
||||
<COND (<RT-TOUCH-VERB?>
|
||||
<REPEAT ()
|
||||
<COND (<G? .PTR <REST .TBL <* .LEN 2>>>
|
||||
<RETURN>)
|
||||
(T
|
||||
<SET OBJ <GET .PTR 0>>)>
|
||||
<COND (<RT-ACCESSIBLE? .OBJ>
|
||||
<COND (<MC-F? .PILL>
|
||||
<SET PILL .OBJ>)
|
||||
(T
|
||||
<RFALSE>)>)>
|
||||
<SET PTR <REST .PTR 2>>>)>
|
||||
<COND (<MC-T? .PILL>
|
||||
<TELL "[" CTHE .PILL "]" CR CR>)>
|
||||
<RETURN .PILL>>
|
||||
|
||||
<ROUTINE RT-GN-TH-CLOTHES (TBL "OPTIONAL" (LEN 0))
|
||||
,TH-CLOTHES>
|
||||
|
||||
<ROUTINE RT-GN-BODY (TBL "OPTIONAL" (LEN 0) "AUX" PTR (OBJ <>))
|
||||
<COND (<ZERO? .LEN>
|
||||
<SET LEN <GET .TBL 0>>)>
|
||||
<SET PTR <REST .TBL 2>>
|
||||
<COND (<INTBL? ,TH-CLOTHES .PTR .LEN>
|
||||
<RETURN ,TH-CLOTHES>)>
|
||||
<REPEAT ()
|
||||
<COND (<ZERO? .LEN>
|
||||
<RETURN <>>)
|
||||
(<MC-IS? <SET OBJ <GET .PTR 0>> ,FL-BODYPART>
|
||||
<RETURN .OBJ>)>
|
||||
<SET PTR <REST .PTR 2>>
|
||||
<DEC LEN>>>
|
||||
|
||||
<ROUTINE RT-GN-INTNUM (TBL "OPTIONAL" (LEN 0))
|
||||
<COND (<MC-VERB? WAIT WAIT-FOR>
|
||||
<RETURN ,TH-INTNUM>)
|
||||
(T
|
||||
<RETURN ,TH-SAFETY-DEPOSIT-BOX>)>>
|
||||
|
||||
<ROUTINE RT-GN-ETHERIUM (TBL "OPT" (LEN 0))
|
||||
<COND (<MC-VERB? SMELL INHALE> ,TH-ETHERIUM-GAS)
|
||||
(<MC-VERB? MUNG OPEN LOOK-INSIDE> ,TH-ETHERIUM-AMPOULE)>>
|
||||
|
||||
<ROUTINE RT-GN-TOWER (TBL "OPTIONAL" (LEN 0))
|
||||
,LG-TOWER>
|
BIN
growl.was-mid
Normal file
BIN
growl.was-mid
Normal file
Binary file not shown.
BIN
heart1.was-mid
Normal file
BIN
heart1.was-mid
Normal file
Binary file not shown.
BIN
heart3.was-mid
Normal file
BIN
heart3.was-mid
Normal file
Binary file not shown.
298
hints.zabstr
Normal file
298
hints.zabstr
Normal file
|
@ -0,0 +1,298 @@
|
|||
|
||||
<FILE-FLAGS CLEAN-STACK?>
|
||||
<GLOBAL GL-HINT-WARNING <> %<> WORD>
|
||||
<GLOBAL GL-HINTS-OFF <> %<> WORD>
|
||||
<DEFINE-ROUTINE V-HINTS-NO>
|
||||
<CONSTANT RETURN-SEE-HINT " RETURN = see hint">
|
||||
<CONSTANT RETURN-SEE-HINT-LEN <LENGTH " RETURN = see hint">>
|
||||
<CONSTANT Q-MAIN-MENU "Q = main menu">
|
||||
<CONSTANT Q-MAIN-MENU-LEN <LENGTH "Q = main menu">>
|
||||
<GLOBAL GL-LINE-TABLE <PTABLE 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22>
|
||||
%<> WORD>
|
||||
<CONSTANT GL-COLUMN-TABLE <PTABLE 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4>>
|
||||
<DEFINE20 CONSTRUCT-HINTS (COUNT-NAME "TUPLE" STUFF "AUX" (SS <>) (HL (T)) (HLL
|
||||
.HL) V (CL (T)) (CLL .CL) TCL TCLL) <REPEAT ((CT 0)) <COND (<OR <EMPTY? .STUFF>
|
||||
<TYPE? <1 .STUFF> STRING>> <COND (<NOT .SS> <SET SS .STUFF> <SET TCL (T)> <SET
|
||||
TCLL .TCL> <SET CT 0>) (T <SET V <SUBSTRUC .SS 0 <- <LENGTH .SS> <LENGTH .STUFF
|
||||
>>>> <SET HLL <REST <PUTREST .HLL (<EVAL <FORM PLTABLE !.V>>)>>> <COND (.
|
||||
COUNT-NAME <SET CLL <REST <PUTREST .CLL (<EVAL <FORM TABLE (BYTE) !<REST .TCL!>
|
||||
>>)>>> <SET TCL (T)> <SET TCLL .TCL> <SET CT 0>)> <SET SS .STUFF>)> <COND (<
|
||||
EMPTY? .STUFF> <RETURN>)> <SET STUFF <REST .STUFF>>) (T <COND (.COUNT-NAME <
|
||||
COND (<1? <MOD <SET CT <+ .CT 1>> 2>> <SET TCLL <REST <PUTREST .TCLL (0)>>>)>)>
|
||||
<SET STUFF <REST .STUFF>>)>> <COND (.COUNT-NAME <EVAL <FORM CONSTANT .
|
||||
COUNT-NAME <EVAL <FORM PTABLE !<REST .CL!>>>>>)> <EVAL <FORM PLTABLE !<REST .HL
|
||||
!>>>>
|
||||
<CONSTANT K-HINTS <CONSTRUCT-HINTS K-HINT-COUNTS "STARTERS" <PLTABLE
|
||||
"How do I get into the house?"
|
||||
"Mrs Hudson is expecting you, so you shouldn't have to do
|
||||
anything too unusual." "Have you tried kicking down the door?"
|
||||
"KNOCK ON THE DOOR."> <PLTABLE "How do I get into the parlour?"
|
||||
"Mrs Hudson wants you to attend to something first."
|
||||
"Get Holmes's mind off the drug."> <PLTABLE "How do I get into the kitchen?"
|
||||
"Don't look at the next clue until you have opened the trap door in the hall."
|
||||
"You're cheating, aren't you?" "There is no trap door." "There is no kitchen."
|
||||
"Don't let the existence of these questions influence your playing of the game."
|
||||
> <PLTABLE "How do I get into the bedroom?" "Only Holmes can open that door."
|
||||
"When the visitor leaves, Holmes will open it."> <PLTABLE
|
||||
"How do I get onto the roof?" "The same way you got into the kitchen."> <
|
||||
PLTABLE "Will Mrs Hudson do anything for me?" "Have you tried kissing her?"
|
||||
"Have you tried bribing her?"
|
||||
"The sad fact is that she won't do anything for you."> <PLTABLE
|
||||
"Can I get Holmes out of his stupor?"
|
||||
"Holmes is bored with the commonplace events of everyday life."
|
||||
"He needs some mental excitement."
|
||||
"Newspapers generally contain interesting items."
|
||||
"For a doctor, you're not too bright. Read him the newspaper. (Or tell him about the visitor)."
|
||||
> <PLTABLE "Why does the clue paper exist?"
|
||||
"It looks like the thief is challenging Sherlock Holmes to a duel of wits."
|
||||
"Unlike yourself, Sherlock is not unarmed for such a duel."
|
||||
"The thief is laying down a trail of clues for Holmes to follow."> <PLTABLE
|
||||
"What's the answer to the 1st riddle?"
|
||||
"The verse refers to a particular place."
|
||||
"The place is the spot where most English royalty is buried."
|
||||
"Westminster Abbey."> <PLTABLE "What's the answer to the 2nd riddle?"
|
||||
"The verse refers to the last of the Tudor monarchs."
|
||||
"She was called the \"Virgin Queen.\"" "Elizabeth I."> <PLTABLE
|
||||
"What's the answer to the 3rd riddle?" "The discoverer of the law of gravity."
|
||||
"Sir Isaac Newton."> <PLTABLE "What's the answer to the 4th riddle?"
|
||||
"Don't read the next clue until you have thoroughly explored Westminster Abbey."
|
||||
"Have you looked around in the Jerusalem Chamber?"
|
||||
"The fourth verse refers to Henry V."> <PLTABLE "Where is the lamp?"
|
||||
"It's in Holmes's bedroom."> <PLTABLE "Who is the thief?" "Who do you think?">
|
||||
"CABS" <PLTABLE "How do I hail a cab?"
|
||||
"Consult the sample transcript in your game manual."> <PLTABLE
|
||||
"Why does the growler cab get lost?" "The driver is friendly, but stupid."
|
||||
"The driver is stupid, but friendly."
|
||||
"Give up. He'll never take you where you want to go."> "WESTMINSTER ABBEY" <
|
||||
PLTABLE "Are the tombs important?" "They are to the people buried in them."
|
||||
"Yes."> <PLTABLE "How do I make a brass rubbing?"
|
||||
"Take a piece of paper from the pacquet of paper, put it on the
|
||||
tomb of your choice, and then rub it with the crayon."> <PLTABLE
|
||||
"What should I make rubbings of?"
|
||||
"Do not read the next clue until you have solved the verses on
|
||||
the thief's clue paper."
|
||||
"The tombs of Queen Elizabeth, Sir Isaac Newton and Henry V."> <PLTABLE
|
||||
"Why am I making brass rubbings?"
|
||||
"The thief is trying to send messages to Sherlock."
|
||||
"He wouldn't want his messages to be visible to everyone, now would he?"
|
||||
"Have you visited the British Museum yet?"
|
||||
"The book on the table in the British Museum contains a clue
|
||||
that will help you." "There is some invisible writing on some of the tombs."
|
||||
"When you make a rubbing, the invisible ink is transferred
|
||||
onto the back of the paper."
|
||||
"Invisible ink usually becomes visible when heated."
|
||||
"Heat the paper over the candles in the Evangelist Chapel."
|
||||
"Turn the paper over."> <PLTABLE "Where is the Stone of Scone?"
|
||||
"It belongs under the Coronation Chair in Edward the Confessor's
|
||||
Chapel - but we knew it was going to be stolen in 1950 and then returned
|
||||
several months later. We figured that was enough excitement for any one rock,
|
||||
so we left it out of the game, safe from your grubby paws."> <PLTABLE
|
||||
"What's the Son of Mars answer?" "Admiral Lord Nelson."> <PLTABLE
|
||||
"What's the Chopper answer?" "Charles I."> <PLTABLE
|
||||
"What's the London Bridge answer?" "Under London Bridge."> <PLTABLE
|
||||
"What's the answer to life's riddle?"
|
||||
"If we knew that, do you think we'd be sitting around writing games?"> <PLTABLE
|
||||
"What's the Pussycat answer?" "Go to the Tower of London."> <PLTABLE
|
||||
"What's the Number answer?"
|
||||
"Have you looked at the statue of William the Conqueror?"
|
||||
"Have you read the sign on the Monument?"
|
||||
"Have you ever read the Charge of the Light Brigade?" "600."> <PLTABLE
|
||||
"How about Hickory Dickory Dock?" "Big Ben."> "BRITISH MUSEUM" <PLTABLE
|
||||
"How do I get past the librarian?"
|
||||
"Think of the room not as a museum, but as a library."
|
||||
"Have you read the sign on the librarian's desk?"
|
||||
"Has it occurred to you that he's doing an awful lot of talking?"
|
||||
"Tell him to be quiet."> "ST PAUL'S" <PLTABLE "What is a Whispering Gallery?"
|
||||
"It is a place where you can eavesdrop on other people from
|
||||
far away."> <PLTABLE "How do I get up there?"
|
||||
"Take the stairs up from the clerestory."> <PLTABLE
|
||||
"How do I get to the clerestory?"
|
||||
"You can't. St Paul's isn't even in the game."
|
||||
"We just like the word clerestory."> "TRAFALGAR SQUARE" <PLTABLE
|
||||
"Are the pigeons important?" "Only to other pigeons."> <PLTABLE
|
||||
"Is the statue important?" "Yes." "Have you looked at it?"
|
||||
"Have you looked at it closely?" "Have you looked at it through a telescope?">
|
||||
<PLTABLE "Is the column important?" "Yes."
|
||||
"If it wasn't there, we'd have to come up with some other way
|
||||
of keeping the statue out of your reach."> <PLTABLE "Is anything important?"
|
||||
"Like, wow, man. Heavy question!"> "ON THE THAMES" <PLTABLE
|
||||
"How do I stop rowing in circles?"
|
||||
"Has anyone told you you're not playing with a full deck?"
|
||||
"Has anyone told you you're not rowing with both oars in the water?"
|
||||
"You need two oars to steer the boat."
|
||||
"Don't read the next two clues unless you want to know where the other oar is."
|
||||
"The other oar is in another boat."
|
||||
"It's in Captain Bligh's boat in the Black Museum."> <PLTABLE
|
||||
"How do I stop the boat?" "Type, 'Whoa, Boat!'"
|
||||
"Just kidding. Drop the anchor."> <PLTABLE "How do I launch the boat?"
|
||||
"Got any rocket fuel?" "Type, 'Launch boat.'"
|
||||
"(Make sure you're in the boat and the anchor's up first.)"> <PLTABLE
|
||||
"How do I land the boat?"
|
||||
"You can only land the boat at the Embankment or outside Traitor's Gate."
|
||||
"Type: N or LAND BOAT."> <PLTABLE "How do I get the paddle?"
|
||||
"You can't get the paddle when you're outside Traitor's Gate."
|
||||
"If you don't have the paddle, you need two oars to row back up the river."
|
||||
"If you're on the river without a paddle or both oars, you're making a big mistake."
|
||||
"You can only take the paddle after you've entered the Tower."> <PLTABLE
|
||||
"Can I stop the man taking the boat?"
|
||||
"No, you can't. But after all, it's his boat."> "VICTORIA STATION" <PLTABLE
|
||||
"What time does the last train leave?" "The timetable is posted on the wall."
|
||||
"9:15 p.m."> <PLTABLE "What track does it leave from?" "Track 29."> <PLTABLE
|
||||
"How much is a round-trip ticket?"
|
||||
"Why are you reading clues about a place that isn't even in the game?">
|
||||
"COVENT GARDEN" <PLTABLE "What is the matter with the girl?"
|
||||
"She has a bad heart." "Perhaps some medicine...."
|
||||
"Be careful. Drugs are dangerous."> <PLTABLE "How do I revive her?"
|
||||
"Have you made a positive diagnosis?"
|
||||
"Listen to the girl with your stethoscope."
|
||||
"If her heart is abnormally fast, give her something to slow it down."
|
||||
"An unusually fast heartbeat is known as tachycardia."
|
||||
"If her heart is abnormally slow, give her something to speed it up."
|
||||
"An unusually slow heartbeat is know as bradycardia."
|
||||
"Belladonna will speed up a slow heart."
|
||||
"Digitalis will slow down a fast heart." "The drugs are in your medicine bag.">
|
||||
<PLTABLE "Where is the stethoscope?"
|
||||
"Where do most doctors carry their stethoscopes?" "You are not most doctors."
|
||||
"You have it when you start the game."
|
||||
"Sorry about this. It turns out that Watson always carries his
|
||||
stethoscope in his hat. Really. (Read \"A Scandal in Bohemia.\")">
|
||||
"MADAME TUSSAUD'S" <PLTABLE "How do I get past the guard dog?"
|
||||
"He won't let you carry any matches inside." "OK. So you already knew that."
|
||||
"He won't let you carry in any flames that he can see."
|
||||
"Alright, so you knew that too. How about flames that he can't see?"
|
||||
"Something that burns without a flame, for example." "Like tobacco maybe."
|
||||
"Light the pipe, drop the match, and go on in."> <PLTABLE
|
||||
"What do I do with the axe?"
|
||||
"The axe doesn't do much except cut down on the number of other things you can carry."
|
||||
> <PLTABLE "How can I light the torch?"
|
||||
"Light it from something that's already burning."
|
||||
"Light it from a burning piece of paper."
|
||||
"Light a piece of paper from the pipe, and then use it to light the torch.">
|
||||
"SCOTLAND YARD" <PLTABLE "Will Lestrade talk to me in his office?"
|
||||
"He doesn't like you." "He really doesn't like you." "What office?">
|
||||
"BANK OF ENGLAND" <PLTABLE "How do I get inside the bank?"
|
||||
"Despite the guard's assertions to the contrary, he can be bribed."
|
||||
"Give him something valuable." "Some gems might do the trick."
|
||||
"Give him the ruby, the sapphire, the emerald and the opal."> <PLTABLE
|
||||
"How do I get inside the vault?" "The door has a combination lock on it."
|
||||
"The tumblers turn too quietly for you to hear without amplification."
|
||||
"Listen to the door with the stethoscope, and then turn the dial left or right."
|
||||
"A 'clunk' means you're going the wrong way."
|
||||
"A 'whirr' means you're going the right way."
|
||||
"A 'click' means you should reverse directions."
|
||||
"The combination is right twice, left once, right twice."> <PLTABLE
|
||||
"Which box should I open?"
|
||||
"Have you solved the second clue on Sir Isaac Newton's tomb?" "Open box 600.">
|
||||
<PLTABLE "How do I open safety deposit boxes?" "Do you have any dynamite?"
|
||||
"Try using a key." "The bank guard has it." "It's in his pocket."
|
||||
"How good a pickpocket are you?"
|
||||
"How good a pickpocket are the people you know?" "Ask Wiggins to steal it."> <
|
||||
PLTABLE "How can I stop the kidnapping?" "Hire bodyguards."
|
||||
"Put Holmes in your medical bag." "You can't."> "DIOGENES CLUB" <PLTABLE
|
||||
"What does Mycroft want from me?" "Your blood?" "Your first-born male child?"
|
||||
"Sherlock's ring."> <PLTABLE "How do I get the token?"
|
||||
"Show any of the gems you have found to Sherlock."> "TOWER OF LONDON" <PLTABLE
|
||||
"How do I get into the Tower?" "Give the password to the beefeater."
|
||||
"You must get the password from someone who has government connections."
|
||||
"Mycroft Holmes knows the password."
|
||||
"Don't continue unless Sherlock Holmes has been kidnapped."
|
||||
"Go to the Diogenes Club and ask for Mycroft. The butler will
|
||||
ask you for a token. Give him the token. Mycroft will appear and give
|
||||
you the password." "Return to the Tower and give the guard the password."
|
||||
"Just type GUARD, [PASSWORD]."> <PLTABLE "How do I get out of the Tower?"
|
||||
"The beefeater won't let you out. You must find another exit."
|
||||
"The only other way out is through Traitor's Gate."
|
||||
"The portcullis is operated by the chain above it."
|
||||
"You do not weigh enough to pull down the chain."
|
||||
"Put on the suit of armour in the dungeon of the White Tower and then pull on the chain."
|
||||
> "GEMS" <PLTABLE "Where is the diamond?" "What diamond?"> <PLTABLE
|
||||
"How do I get the diamond?" "See previous hint."> <PLTABLE
|
||||
"Where is the sapphire?" "Did you solve the Hickory Dickory Dock riddle?"
|
||||
"It's stuck to the clapper of Big Ben."> <PLTABLE "How do I get the sapphire?"
|
||||
"Have you tried driving a hook into the ceiling, throwing a rope
|
||||
over the hook, climbing up onto the rail, swinging across the hollow shaft
|
||||
while screaming like Tarzan, and grabbing the sapphire as you swing by?"
|
||||
"Just asking." "Wait until the hour strikes. The clapper will swing your way."
|
||||
"You need to use your hands while the bell is ringing."
|
||||
"Put the cotton balls in your ears before the bell starts to ring."
|
||||
"The cotton balls are in the blue pill bottle."> <PLTABLE "Where is the ruby?"
|
||||
"Did you solve the Son of Mars riddle?" "It's somewhere in Trafalgar Square."
|
||||
"It's on the statue in Trafalgar Square." "It's in Nelson's blind eye."
|
||||
"You can discover it only by looking through the telescope."> <PLTABLE
|
||||
"How do I get the ruby?" "You can't get up there."
|
||||
"Someone - or something - else will have to get it for you."
|
||||
"Some kind of trained bird might do it."
|
||||
"Old Sherman, who lives in Pinchin Lane, trains animals."
|
||||
"Get the bird from Sherman. Take it to Trafalgar Square. Show
|
||||
the ruby to the pigeon, ask him to get it, and then let him go."
|
||||
"Do not read the next clue until you have done all of the above."
|
||||
"Did we mention that it's a homing pigeon?"
|
||||
"Return to Sherman's shop and ask him about the bird."> <PLTABLE
|
||||
"Where is the emerald?" "Did you solve the Chopper riddle?"
|
||||
"It's in the Chamber of Horrors." "It's hidden in one of the statues."
|
||||
"It's in the wax head of Charles I."> <PLTABLE "How do I get the emerald?"
|
||||
"It's encased in wax. What springs to mind?" "You need to melt the head."
|
||||
"You can't melt the head unless you remove it from the statue."
|
||||
"You need something that puts out enough heat to melt a big gob of wax."
|
||||
"The torch will melt the wax head."> <PLTABLE "Where is the sceptre?"
|
||||
"In the sceptre tank?" "Sorry about that." "There is no sceptre."> <PLTABLE
|
||||
"How do I get the sceptre?" "Dive into the sceptre tank."
|
||||
"Don't blame us. You're the one who keeps reading these bogus clues.">
|
||||
"MORE GEMS" <PLTABLE "Where is the opal?"
|
||||
"Have you solved the London Bridge riddle?"
|
||||
"It's in the clump of moss under London Bridge."> <PLTABLE
|
||||
"How do I get the opal?" "Can you lower the bridge?" "Can you raise the water?"
|
||||
"Wait for high tide."
|
||||
"The newspaper that came with your game contains the tide tables for the weekend."
|
||||
> <PLTABLE "Where is the zorkmid?" "It's in the... oops. Sorry. Wrong game.">
|
||||
<PLTABLE "How do I get the zorkmid?" "Buy Zork I." "Buy Enchanter."
|
||||
"Buy Sorcerer." "You get the idea."> <PLTABLE "Where is the topaz?"
|
||||
"In a safety deposit box in the Bank of England."
|
||||
"Have you solved the number riddle?" "It's in box 600."> <PLTABLE
|
||||
"How do I get the topaz?" "See the clues for the Bank of England."> <PLTABLE
|
||||
"Where is the garnet?" "Did you solve the Tower of London riddle?"
|
||||
"It's in the butt of malmsey in the Bowyer Tower."> <PLTABLE
|
||||
"How do I get the garnet?" "Have you tried drinking the wine?"
|
||||
"Pretty tasty stuff, isn't it?" "You need to drain the keg somehow."
|
||||
"You need to remove the bung." "Knock out the bung with the mace."
|
||||
"Don't read the next clue until you have done all of the above."
|
||||
"Ask Wiggins to get the garnet for you."> <PLTABLE
|
||||
"Why are the gems important?"
|
||||
"You don't think the thief has been hiding gems all over London just for the fun of it, do you?"
|
||||
"Perhaps he is trying to send Sherlock yet another message."
|
||||
"Have you looked at any of the gems?" "Have you looked at any of them closely?"
|
||||
"Look at each of the gems through the magnifying glass."> "THE LAIR" <PLTABLE
|
||||
"Can I stop Akbar's knocking me out?" "Knock him out first."
|
||||
"Perhaps you could smuggle something in."
|
||||
"Have you noticed the henchman's religion?"
|
||||
"He probably won't disturb your hat." "Perhaps the etherium ampoule...."> <
|
||||
PLTABLE "Can I stop Moriarty when I wake up?"
|
||||
"If he is free to move around, he will always win." "Tie him up."
|
||||
"Don't forget to tie up the henchman, too."> "MISCELLANEOUS" <PLTABLE
|
||||
"Why do I finish without 100 points?"
|
||||
"If you play the game from start to finish and solve all
|
||||
the puzzles, you will end up with 100 points. If, however, you start the
|
||||
game and play through it using information you acquired in a previous
|
||||
session, you may have neglected to perform a few actions for which you
|
||||
received points. This should not be of concern to anyone who is content
|
||||
with failing to discover the highest ranking available to the game player."> <
|
||||
PLTABLE "Can I abbreviate \"stethoscope\"?"
|
||||
"Yes. It can be abbreviated to STETH or SS."> <PLTABLE
|
||||
"What is the square root of 64?" "Eight.">>>
|
||||
<GLOBAL GL-CUR-POS 0 %<> WORD>
|
||||
<GLOBAL GL-QUEST-NUM 1 %<> WORD>
|
||||
<GLOBAL GL-CHAPT-NUM 1 %<> WORD>
|
||||
<CONSTANT GL-DIROUT-TBL <TABLE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0>>
|
||||
<DEFINE-ROUTINE V-HINT>
|
||||
<DEFINE-ROUTINE RT-PICK-QUESTION>
|
||||
<DEFINE-ROUTINE RT-ERASE-CURSOR>
|
||||
<DEFINE-ROUTINE RT-NEW-CURSOR>
|
||||
<DEFINE-ROUTINE RT-INVERSE-LINE>
|
||||
<DEFINE-ROUTINE RT-DISPLAY-HINT>
|
||||
<DEFINE-ROUTINE RT-PUT-UP-QUESTIONS>
|
||||
<DEFINE-ROUTINE RT-PUT-UP-CHAPTERS>
|
||||
<DEFINE-ROUTINE RT-INIT-HINT-SCREEN>
|
||||
<DEFINE-ROUTINE RT-CENTER-LINE>
|
||||
<DEFINE-ROUTINE RT-LEFT-LINE>
|
||||
<DEFINE-ROUTINE RT-RIGHT-LINE>
|
368
hints.zap
Normal file
368
hints.zap
Normal file
|
@ -0,0 +1,368 @@
|
|||
|
||||
|
||||
.FUNCT V-HINTS-NO
|
||||
EQUAL? GL-PRSO,ROOMS /?CCL3
|
||||
PRINT K-DONT-UNDERSTAND-MSG
|
||||
CRLF
|
||||
RETURN 2
|
||||
?CCL3: SET 'GL-HINTS-OFF,TRUE-VALUE
|
||||
PRINTI "[Hints have been disallowed for this session.]"
|
||||
CRLF
|
||||
RETURN 2
|
||||
|
||||
|
||||
.FUNCT V-HINT,CHR,MAXC,C,Q,WHO
|
||||
?FCN: ZERO? GL-HINTS-OFF /?CCL3
|
||||
ICALL RT-PERFORM,V?HINTS-NO,ROOMS
|
||||
RETURN 2
|
||||
?CCL3: ZERO? GL-HINT-WARNING \?CCL5
|
||||
SET 'GL-HINT-WARNING,TRUE-VALUE
|
||||
PRINTI "[Warning: It is recognized that the temptation for help may at times be so exceedingly strong that you might fetch hints prematurely. Therefore, you may at any time during the story type HINTS OFF, and this will disallow the seeking out of help for the present session of the story. If you still want a hint now, indicate HINT.]"
|
||||
CRLF
|
||||
RETURN 2
|
||||
?CCL5: ZERO? WHO \?CND1
|
||||
CALL1 RT-WHO-SAYS? >WHO
|
||||
EQUAL? WHO,CH-HOLMES,CH-WIGGINS \?CND1
|
||||
EQUAL? WHO,CH-HOLMES \?CCL11
|
||||
PRINTI "Holmes looks at you impatiently and sighs, ""Very well, Watson. If you must."""
|
||||
JUMP ?CND9
|
||||
?CCL11: PRINTI "Wiggins looks up at you with relief and says, ""Good idea, guv. We'll never work this out on our own."""
|
||||
?CND9: CRLF
|
||||
CRLF
|
||||
PRINTI "[Press any key to continue.]"
|
||||
CRLF
|
||||
INPUT 1
|
||||
?CND1: SET 'SOUND-QUEUED?,FALSE-VALUE
|
||||
ICALL1 KILL-SOUNDS
|
||||
SET 'MAXC,18
|
||||
ICALL1 RT-INIT-HINT-SCREEN
|
||||
CURSET 5,1
|
||||
ICALL1 RT-PUT-UP-CHAPTERS
|
||||
SUB GL-CHAPT-NUM,1 >GL-CUR-POS
|
||||
ICALL1 RT-NEW-CURSOR
|
||||
?PRG12: INPUT 1 >CHR
|
||||
EQUAL? CHR,81,113 \?CCL16
|
||||
SET 'Q,TRUE-VALUE
|
||||
JUMP ?REP13
|
||||
?CCL16: EQUAL? CHR,78,110 \?CCL18
|
||||
ICALL1 RT-ERASE-CURSOR
|
||||
EQUAL? GL-CHAPT-NUM,MAXC \?CCL21
|
||||
SET 'GL-CUR-POS,0
|
||||
SET 'GL-CHAPT-NUM,1
|
||||
SET 'GL-QUEST-NUM,1
|
||||
JUMP ?CND19
|
||||
?CCL21: INC 'GL-CUR-POS
|
||||
INC 'GL-CHAPT-NUM
|
||||
SET 'GL-QUEST-NUM,1
|
||||
?CND19: ICALL1 RT-NEW-CURSOR
|
||||
JUMP ?PRG12
|
||||
?CCL18: EQUAL? CHR,80,112 \?CCL23
|
||||
ICALL1 RT-ERASE-CURSOR
|
||||
EQUAL? GL-CHAPT-NUM,1 \?CCL26
|
||||
SET 'GL-CHAPT-NUM,MAXC
|
||||
SUB MAXC,1 >GL-CUR-POS
|
||||
JUMP ?CND24
|
||||
?CCL26: DEC 'GL-CUR-POS
|
||||
DEC 'GL-CHAPT-NUM
|
||||
?CND24: SET 'GL-QUEST-NUM,1
|
||||
ICALL1 RT-NEW-CURSOR
|
||||
JUMP ?PRG12
|
||||
?CCL23: EQUAL? CHR,13,10 \?PRG12
|
||||
ICALL1 RT-PICK-QUESTION
|
||||
?REP13: ZERO? Q /?FCN
|
||||
CLEAR -1
|
||||
ICALL1 V-REFRESH
|
||||
CALL1 RT-WHO-SAYS? >WHO
|
||||
EQUAL? WHO,CH-HOLMES \?CCL32
|
||||
CRLF
|
||||
PRINTI "Holmes barely glances at you and snaps, ""At last. Now may we proceed?"""
|
||||
CRLF
|
||||
JUMP ?CND30
|
||||
?CCL32: EQUAL? WHO,CH-WIGGINS \?CCL34
|
||||
CRLF
|
||||
PRINTI "Wiggins tugs your sleeve and asks hopefully, ""Learn anything?"""
|
||||
CRLF
|
||||
JUMP ?CND30
|
||||
?CCL34: CRLF
|
||||
PRINTI "Back to the story..."
|
||||
CRLF
|
||||
?CND30: ZERO? SOUND-ON? \?CCL36
|
||||
RETURN 2
|
||||
?CCL36: ICALL1 CHECK-LOOPING
|
||||
RETURN 2
|
||||
|
||||
|
||||
.FUNCT RT-PICK-QUESTION,CHR,MAXQ,Q
|
||||
?FCN: ICALL2 RT-INIT-HINT-SCREEN,FALSE-VALUE
|
||||
ICALL RT-LEFT-LINE,3,RETURN-SEE-HINT,RETURN-SEE-HINT-LEN
|
||||
ICALL RT-RIGHT-LINE,3,Q-MAIN-MENU,Q-MAIN-MENU-LEN
|
||||
GET K-HINTS,GL-CHAPT-NUM
|
||||
GET STACK,0
|
||||
SUB STACK,1 >MAXQ
|
||||
CURSET 5,1
|
||||
ICALL1 RT-PUT-UP-QUESTIONS
|
||||
SUB GL-QUEST-NUM,1 >GL-CUR-POS
|
||||
ICALL1 RT-NEW-CURSOR
|
||||
?PRG1: INPUT 1 >CHR
|
||||
EQUAL? CHR,81,113 \?CCL5
|
||||
SET 'Q,TRUE-VALUE
|
||||
JUMP ?REP2
|
||||
?CCL5: EQUAL? CHR,78,110 \?CCL7
|
||||
ICALL1 RT-ERASE-CURSOR
|
||||
EQUAL? GL-QUEST-NUM,MAXQ \?CCL10
|
||||
SET 'GL-CUR-POS,0
|
||||
SET 'GL-QUEST-NUM,1
|
||||
JUMP ?CND8
|
||||
?CCL10: INC 'GL-CUR-POS
|
||||
INC 'GL-QUEST-NUM
|
||||
?CND8: ICALL1 RT-NEW-CURSOR
|
||||
JUMP ?PRG1
|
||||
?CCL7: EQUAL? CHR,80,112 \?CCL12
|
||||
ICALL1 RT-ERASE-CURSOR
|
||||
EQUAL? GL-QUEST-NUM,1 \?CCL15
|
||||
SET 'GL-QUEST-NUM,MAXQ
|
||||
SUB MAXQ,1 >GL-CUR-POS
|
||||
JUMP ?CND13
|
||||
?CCL15: DEC 'GL-CUR-POS
|
||||
DEC 'GL-QUEST-NUM
|
||||
?CND13: ICALL1 RT-NEW-CURSOR
|
||||
JUMP ?PRG1
|
||||
?CCL12: EQUAL? CHR,13,10 \?PRG1
|
||||
ICALL1 RT-DISPLAY-HINT
|
||||
?REP2: ZERO? Q /?FCN
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-ERASE-CURSOR,?TMP1
|
||||
GET GL-LINE-TABLE,GL-CUR-POS >?TMP1
|
||||
GET GL-COLUMN-TABLE,GL-CUR-POS
|
||||
SUB STACK,2
|
||||
CURSET ?TMP1,STACK
|
||||
PRINTC 32
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-NEW-CURSOR,?TMP1
|
||||
GET GL-LINE-TABLE,GL-CUR-POS >?TMP1
|
||||
GET GL-COLUMN-TABLE,GL-CUR-POS
|
||||
SUB STACK,2
|
||||
CURSET ?TMP1,STACK
|
||||
PRINTC 62
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-INVERSE-LINE,CENTER-HALF
|
||||
HLIGHT K-H-INV
|
||||
GETB 0,33
|
||||
ICALL2 RT-PRINT-SPACES,STACK
|
||||
HLIGHT K-H-NRM
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-DISPLAY-HINT,H,MX,CNT,CHR,FLG,N,CV,SHIFT?,COUNT-OFFS,CURCX,CURC,?TMP1
|
||||
SET 'CNT,2
|
||||
SET 'FLG,TRUE-VALUE
|
||||
CLEAR -1
|
||||
SPLIT 3
|
||||
SCREEN K-S-WIN
|
||||
CURSET 1,1
|
||||
ICALL1 RT-INVERSE-LINE
|
||||
ICALL RT-CENTER-LINE,1,STR?641,16
|
||||
CURSET 3,1
|
||||
ICALL1 RT-INVERSE-LINE
|
||||
ICALL RT-LEFT-LINE,3,STR?642
|
||||
ICALL RT-RIGHT-LINE,3,STR?643,17
|
||||
CURSET 2,1
|
||||
ICALL1 RT-INVERSE-LINE
|
||||
HLIGHT K-H-BLD
|
||||
GET K-HINTS,GL-CHAPT-NUM >?TMP1
|
||||
ADD GL-QUEST-NUM,1
|
||||
GET ?TMP1,STACK >H
|
||||
SUB GL-CHAPT-NUM,1
|
||||
GET K-HINT-COUNTS,STACK >CV
|
||||
GET H,1
|
||||
ICALL RT-CENTER-LINE,2,STACK
|
||||
HLIGHT K-H-NRM
|
||||
GET H,0 >MX
|
||||
SCREEN K-S-NOR
|
||||
CRLF
|
||||
MOD GL-QUEST-NUM,2 >SHIFT?
|
||||
SUB GL-QUEST-NUM,1
|
||||
DIV STACK,2 >COUNT-OFFS
|
||||
GETB CV,COUNT-OFFS >CURCX
|
||||
ZERO? SHIFT? /?CCL3
|
||||
SHIFT CURCX,-4
|
||||
JUMP ?CND1
|
||||
?CCL3: PUSH CURCX
|
||||
?CND1: BAND STACK,15
|
||||
ADD 2,STACK >CURC
|
||||
?PRG4: EQUAL? CNT,CURC /?PRG9
|
||||
GET H,CNT
|
||||
PRINT STACK
|
||||
CRLF
|
||||
INC 'CNT
|
||||
JUMP ?PRG4
|
||||
?PRG9: ZERO? FLG /?CCL13
|
||||
GRTR? CNT,MX \?CCL13
|
||||
SET 'FLG,FALSE-VALUE
|
||||
PRINTI "[That's all.]"
|
||||
CRLF
|
||||
JUMP ?CND11
|
||||
?CCL13: ZERO? FLG /?CND11
|
||||
SUB MX,CNT
|
||||
ADD STACK,1 >N
|
||||
PRINTC 91
|
||||
PRINTN N
|
||||
PRINTI " hint"
|
||||
EQUAL? N,1 /?CND17
|
||||
PRINTC 115
|
||||
?CND17: PRINTI " left.]"
|
||||
PRINTI " -> "
|
||||
SET 'FLG,FALSE-VALUE
|
||||
?CND11: INPUT 1 >CHR
|
||||
EQUAL? CHR,81,113 \?CCL21
|
||||
ZERO? SHIFT? /?CCL24
|
||||
GETB CV,COUNT-OFFS
|
||||
BAND STACK,15 >?TMP1
|
||||
SUB CNT,2
|
||||
SHIFT STACK,4
|
||||
BOR ?TMP1,STACK
|
||||
PUTB CV,COUNT-OFFS,STACK
|
||||
RTRUE
|
||||
?CCL24: GETB CV,COUNT-OFFS
|
||||
BAND STACK,240 >?TMP1
|
||||
SUB CNT,2
|
||||
BOR ?TMP1,STACK
|
||||
PUTB CV,COUNT-OFFS,STACK
|
||||
RTRUE
|
||||
?CCL21: EQUAL? CHR,13,10 \?PRG9
|
||||
GRTR? CNT,MX /?PRG9
|
||||
SET 'FLG,TRUE-VALUE
|
||||
GET H,CNT
|
||||
PRINT STACK
|
||||
CRLF
|
||||
IGRTR? 'CNT,MX \?PRG9
|
||||
SET 'FLG,FALSE-VALUE
|
||||
PRINTI "[Final hint]"
|
||||
CRLF
|
||||
JUMP ?PRG9
|
||||
|
||||
|
||||
.FUNCT RT-PUT-UP-QUESTIONS,ST,MXQ,MXL,?TMP1
|
||||
SET 'ST,1
|
||||
GET K-HINTS,GL-CHAPT-NUM
|
||||
GET STACK,0
|
||||
SUB STACK,1 >MXQ
|
||||
GETB 0,32
|
||||
SUB STACK,1 >MXL
|
||||
?PRG1: GRTR? ST,MXQ /TRUE
|
||||
SUB ST,1
|
||||
GET GL-LINE-TABLE,STACK >?TMP1
|
||||
SUB ST,1
|
||||
GET GL-COLUMN-TABLE,STACK
|
||||
SUB STACK,1
|
||||
CURSET ?TMP1,STACK
|
||||
PRINTC 32
|
||||
GET K-HINTS,GL-CHAPT-NUM >?TMP1
|
||||
ADD ST,1
|
||||
GET ?TMP1,STACK
|
||||
GET STACK,1
|
||||
PRINT STACK
|
||||
INC 'ST
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT RT-PUT-UP-CHAPTERS,ST,MXC,MXL,?TMP1
|
||||
SET 'ST,1
|
||||
SET 'MXC,18
|
||||
GETB 0,32
|
||||
SUB STACK,1 >MXL
|
||||
?PRG1: GRTR? ST,MXC /TRUE
|
||||
SUB ST,1
|
||||
GET GL-LINE-TABLE,STACK >?TMP1
|
||||
SUB ST,1
|
||||
GET GL-COLUMN-TABLE,STACK
|
||||
SUB STACK,1
|
||||
CURSET ?TMP1,STACK
|
||||
PRINTC 32
|
||||
GET K-HINTS,ST
|
||||
GET STACK,1
|
||||
PRINT STACK
|
||||
INC 'ST
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT RT-INIT-HINT-SCREEN,THIRD
|
||||
ASSIGNED? 'THIRD /?CND1
|
||||
SET 'THIRD,TRUE-VALUE
|
||||
?CND1: CLEAR -1
|
||||
GETB 0,32
|
||||
SUB STACK,1
|
||||
SPLIT STACK
|
||||
SCREEN K-S-WIN
|
||||
CURSET 1,1
|
||||
ICALL1 RT-INVERSE-LINE
|
||||
CURSET 2,1
|
||||
ICALL1 RT-INVERSE-LINE
|
||||
CURSET 3,1
|
||||
ICALL1 RT-INVERSE-LINE
|
||||
ICALL RT-CENTER-LINE,1,STR?641,16
|
||||
ICALL RT-LEFT-LINE,2,STR?644
|
||||
ICALL RT-RIGHT-LINE,2,STR?645,12
|
||||
ZERO? THIRD /FALSE
|
||||
ICALL RT-LEFT-LINE,3,STR?646
|
||||
CALL RT-RIGHT-LINE,3,STR?647,16
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-CENTER-LINE,LN,STR,LEN,INV
|
||||
ASSIGNED? 'INV /?CND1
|
||||
SET 'INV,TRUE-VALUE
|
||||
?CND1: ZERO? LEN \?CND3
|
||||
DIROUT K-D-TBL-ON,GL-DIROUT-TBL
|
||||
PRINT STR
|
||||
DIROUT K-D-TBL-OFF
|
||||
GET GL-DIROUT-TBL,0 >LEN
|
||||
?CND3: GETB 0,33
|
||||
SUB STACK,LEN
|
||||
DIV STACK,2
|
||||
CURSET LN,STACK
|
||||
ZERO? INV /?CND5
|
||||
HLIGHT K-H-INV
|
||||
?CND5: PRINT STR
|
||||
ZERO? INV /FALSE
|
||||
HLIGHT K-H-NRM
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-LEFT-LINE,LN,STR,INV
|
||||
ASSIGNED? 'INV /?CND1
|
||||
SET 'INV,TRUE-VALUE
|
||||
?CND1: CURSET LN,1
|
||||
ZERO? INV /?CND3
|
||||
HLIGHT K-H-INV
|
||||
?CND3: PRINT STR
|
||||
ZERO? INV /FALSE
|
||||
HLIGHT K-H-NRM
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-RIGHT-LINE,LN,STR,LEN,INV
|
||||
ASSIGNED? 'INV /?CND1
|
||||
SET 'INV,TRUE-VALUE
|
||||
?CND1: ZERO? LEN \?CND3
|
||||
DIROUT 3,GL-DIROUT-TBL
|
||||
PRINT STR
|
||||
DIROUT -3
|
||||
GET GL-DIROUT-TBL,0 >LEN
|
||||
?CND3: GETB 0,33
|
||||
SUB STACK,LEN
|
||||
CURSET LN,STACK
|
||||
ZERO? INV /?CND5
|
||||
HLIGHT K-H-INV
|
||||
?CND5: PRINT STR
|
||||
ZERO? INV /FALSE
|
||||
HLIGHT K-H-NRM
|
||||
RTRUE
|
||||
|
||||
.ENDI
|
747
hints.zil
Normal file
747
hints.zil
Normal file
|
@ -0,0 +1,747 @@
|
|||
;"HINTS for SHERLOCK"
|
||||
|
||||
<FILE-FLAGS CLEAN-STACK?>
|
||||
|
||||
<GLOBAL GL-HINT-WARNING <>>
|
||||
<GLOBAL GL-HINTS-OFF <>>
|
||||
|
||||
<ROUTINE V-HINTS-NO ()
|
||||
<COND (<NOT <MC-PRSO? ,ROOMS>>
|
||||
<TELL ,K-DONT-UNDERSTAND-MSG CR>)
|
||||
(T
|
||||
<SETG GL-HINTS-OFF T>
|
||||
<TELL "[Hints have been disallowed for this session.]" CR>)>
|
||||
<RFATAL>>
|
||||
|
||||
<CONSTANT RETURN-SEE-HINT " RETURN = see hint">
|
||||
<CONSTANT RETURN-SEE-HINT-LEN <LENGTH " RETURN = see hint">>
|
||||
<CONSTANT Q-MAIN-MENU "Q = main menu">
|
||||
<CONSTANT Q-MAIN-MENU-LEN <LENGTH "Q = main menu">>
|
||||
|
||||
;"zeroth (first) element is 5"
|
||||
<GLOBAL GL-LINE-TABLE
|
||||
<PTABLE
|
||||
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22>>
|
||||
|
||||
;"zeroth (first) element is 4"
|
||||
<CONSTANT GL-COLUMN-TABLE
|
||||
<PTABLE
|
||||
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4>>
|
||||
|
||||
; "If the first argument is non-false, build a parallel impure table
|
||||
for storing the count of answers already seen; make it a constant
|
||||
under the given name."
|
||||
|
||||
<DEFINE20 CONSTRUCT-HINTS (COUNT-NAME "TUPLE" STUFF "AUX" (SS <>)
|
||||
(HL (T)) (HLL .HL) V
|
||||
(CL (T)) (CLL .CL)
|
||||
TCL TCLL)
|
||||
<REPEAT ((CT 0))
|
||||
<COND (<OR <EMPTY? .STUFF>
|
||||
<TYPE? <1 .STUFF> STRING>>
|
||||
; "Chapter break"
|
||||
<COND
|
||||
(<NOT .SS>
|
||||
; "First one, just do setup"
|
||||
<SET SS .STUFF>
|
||||
<SET TCL (T)>
|
||||
<SET TCLL .TCL>
|
||||
<SET CT 0>)
|
||||
(T
|
||||
<SET V <SUBSTRUC .SS 0 <- <LENGTH .SS> <LENGTH .STUFF>>>>
|
||||
; "One chapter's worth"
|
||||
<SET HLL <REST <PUTREST .HLL (<EVAL <FORM PLTABLE !.V>>)>>>
|
||||
<COND (.COUNT-NAME
|
||||
<SET CLL <REST <PUTREST .CLL
|
||||
(<EVAL <FORM TABLE (BYTE)
|
||||
!<REST .TCL>>>)>>>
|
||||
<SET TCL (T)>
|
||||
<SET TCLL .TCL>
|
||||
<SET CT 0>)>
|
||||
<SET SS .STUFF>)>
|
||||
<COND (<EMPTY? .STUFF> <RETURN>)>
|
||||
<SET STUFF <REST .STUFF>>)
|
||||
(T
|
||||
<COND (.COUNT-NAME
|
||||
<COND (<1? <MOD <SET CT <+ .CT 1>> 2>>
|
||||
<SET TCLL <REST <PUTREST .TCLL
|
||||
(0)>>>)>)>
|
||||
<SET STUFF <REST .STUFF>>)>>
|
||||
<COND (.COUNT-NAME
|
||||
<EVAL <FORM CONSTANT .COUNT-NAME
|
||||
<EVAL <FORM PTABLE !<REST .CL>>>>>)>
|
||||
<EVAL <FORM PLTABLE !<REST .HL>>>>
|
||||
|
||||
;"longest hint topic can be 17 chars"
|
||||
|
||||
<CONSTANT K-HINTS
|
||||
<CONSTRUCT-HINTS K-HINT-COUNTS
|
||||
"STARTERS"
|
||||
<PLTABLE "How do I get into the house?"
|
||||
"Mrs Hudson is expecting you, so you shouldn't have to do
|
||||
anything too unusual."
|
||||
"Have you tried kicking down the door?"
|
||||
"KNOCK ON THE DOOR.">
|
||||
<PLTABLE "How do I get into the parlour?"
|
||||
"Mrs Hudson wants you to attend to something first."
|
||||
"Get Holmes's mind off the drug.">
|
||||
<PLTABLE "How do I get into the kitchen?"
|
||||
"Don't look at the next clue until you have opened the trap door in the hall."
|
||||
"You're cheating, aren't you?"
|
||||
"There is no trap door."
|
||||
"There is no kitchen."
|
||||
"Don't let the existence of these questions influence your playing of the game.">
|
||||
<PLTABLE "How do I get into the bedroom?"
|
||||
"Only Holmes can open that door."
|
||||
"When the visitor leaves, Holmes will open it.">
|
||||
<PLTABLE "How do I get onto the roof?"
|
||||
"The same way you got into the kitchen.">
|
||||
<PLTABLE "Will Mrs Hudson do anything for me?"
|
||||
"Have you tried kissing her?"
|
||||
"Have you tried bribing her?"
|
||||
"The sad fact is that she won't do anything for you.">
|
||||
<PLTABLE "Can I get Holmes out of his stupor?"
|
||||
"Holmes is bored with the commonplace events of everyday life."
|
||||
"He needs some mental excitement."
|
||||
"Newspapers generally contain interesting items."
|
||||
"For a doctor, you're not too bright. Read him the newspaper. (Or tell him about the visitor).">
|
||||
<PLTABLE "Why does the clue paper exist?"
|
||||
"It looks like the thief is challenging Sherlock Holmes to a duel of wits."
|
||||
"Unlike yourself, Sherlock is not unarmed for such a duel."
|
||||
"The thief is laying down a trail of clues for Holmes to follow.">
|
||||
<PLTABLE "What's the answer to the 1st riddle?"
|
||||
"The verse refers to a particular place."
|
||||
"The place is the spot where most English royalty is buried."
|
||||
"Westminster Abbey.">
|
||||
<PLTABLE "What's the answer to the 2nd riddle?"
|
||||
"The verse refers to the last of the Tudor monarchs."
|
||||
"She was called the \"Virgin Queen.\""
|
||||
"Elizabeth I.">
|
||||
<PLTABLE "What's the answer to the 3rd riddle?"
|
||||
"The discoverer of the law of gravity."
|
||||
"Sir Isaac Newton.">
|
||||
<PLTABLE "What's the answer to the 4th riddle?"
|
||||
"Don't read the next clue until you have thoroughly explored Westminster Abbey."
|
||||
"Have you looked around in the Jerusalem Chamber?"
|
||||
"The fourth verse refers to Henry V.">
|
||||
<PLTABLE "Where is the lamp?"
|
||||
"It's in Holmes's bedroom.">
|
||||
<PLTABLE "Who is the thief?"
|
||||
"Who do you think?">
|
||||
"CABS"
|
||||
<PLTABLE "How do I hail a cab?"
|
||||
"Consult the sample transcript in your game manual.">
|
||||
<PLTABLE "Why does the growler cab get lost?"
|
||||
"The driver is friendly, but stupid."
|
||||
"The driver is stupid, but friendly."
|
||||
"Give up. He'll never take you where you want to go.">
|
||||
"WESTMINSTER ABBEY"
|
||||
<PLTABLE "Are the tombs important?"
|
||||
"They are to the people buried in them."
|
||||
"Yes.">
|
||||
<PLTABLE "How do I make a brass rubbing?"
|
||||
"Take a piece of paper from the pacquet of paper, put it on the
|
||||
tomb of your choice, and then rub it with the crayon.">
|
||||
<PLTABLE "What should I make rubbings of?"
|
||||
"Do not read the next clue until you have solved the verses on
|
||||
the thief's clue paper."
|
||||
"The tombs of Queen Elizabeth, Sir Isaac Newton and Henry V.">
|
||||
<PLTABLE "Why am I making brass rubbings?"
|
||||
"The thief is trying to send messages to Sherlock."
|
||||
"He wouldn't want his messages to be visible to everyone, now would he?"
|
||||
"Have you visited the British Museum yet?"
|
||||
"The book on the table in the British Museum contains a clue
|
||||
that will help you."
|
||||
"There is some invisible writing on some of the tombs."
|
||||
"When you make a rubbing, the invisible ink is transferred
|
||||
onto the back of the paper."
|
||||
"Invisible ink usually becomes visible when heated."
|
||||
"Heat the paper over the candles in the Evangelist Chapel."
|
||||
"Turn the paper over.">
|
||||
<PLTABLE "Where is the Stone of Scone?"
|
||||
"It belongs under the Coronation Chair in Edward the Confessor's
|
||||
Chapel - but we knew it was going to be stolen in 1950 and then returned
|
||||
several months later. We figured that was enough excitement for any one rock,
|
||||
so we left it out of the game, safe from your grubby paws.">
|
||||
<PLTABLE "What's the Son of Mars answer?"
|
||||
"Admiral Lord Nelson.">
|
||||
<PLTABLE "What's the Chopper answer?"
|
||||
"Charles I.">
|
||||
<PLTABLE "What's the London Bridge answer?"
|
||||
"Under London Bridge.">
|
||||
<PLTABLE "What's the answer to life's riddle?"
|
||||
"If we knew that, do you think we'd be sitting around writing games?">
|
||||
<PLTABLE "What's the Pussycat answer?"
|
||||
"Go to the Tower of London.">
|
||||
<PLTABLE "What's the Number answer?"
|
||||
"Have you looked at the statue of William the Conqueror?"
|
||||
"Have you read the sign on the Monument?"
|
||||
"Have you ever read the Charge of the Light Brigade?"
|
||||
"600.">
|
||||
<PLTABLE "How about Hickory Dickory Dock?"
|
||||
"Big Ben.">
|
||||
"BRITISH MUSEUM"
|
||||
<PLTABLE "How do I get past the librarian?"
|
||||
"Think of the room not as a museum, but as a library."
|
||||
"Have you read the sign on the librarian's desk?"
|
||||
"Has it occurred to you that he's doing an awful lot of talking?"
|
||||
"Tell him to be quiet.">
|
||||
"ST PAUL'S"
|
||||
<PLTABLE "What is a Whispering Gallery?"
|
||||
"It is a place where you can eavesdrop on other people from
|
||||
far away.">
|
||||
<PLTABLE "How do I get up there?"
|
||||
"Take the stairs up from the clerestory.">
|
||||
<PLTABLE "How do I get to the clerestory?"
|
||||
"You can't. St Paul's isn't even in the game."
|
||||
"We just like the word clerestory.">
|
||||
"TRAFALGAR SQUARE"
|
||||
<PLTABLE "Are the pigeons important?"
|
||||
"Only to other pigeons.">
|
||||
<PLTABLE "Is the statue important?"
|
||||
"Yes."
|
||||
"Have you looked at it?"
|
||||
"Have you looked at it closely?"
|
||||
"Have you looked at it through a telescope?">
|
||||
<PLTABLE "Is the column important?"
|
||||
"Yes."
|
||||
"If it wasn't there, we'd have to come up with some other way
|
||||
of keeping the statue out of your reach.">
|
||||
<PLTABLE "Is anything important?"
|
||||
"Like, wow, man. Heavy question!">
|
||||
"ON THE THAMES"
|
||||
<PLTABLE "How do I stop rowing in circles?"
|
||||
"Has anyone told you you're not playing with a full deck?"
|
||||
"Has anyone told you you're not rowing with both oars in the water?"
|
||||
"You need two oars to steer the boat."
|
||||
"Don't read the next two clues unless you want to know where the other oar is."
|
||||
"The other oar is in another boat."
|
||||
"It's in Captain Bligh's boat in the Black Museum.">
|
||||
<PLTABLE "How do I stop the boat?"
|
||||
"Type, 'Whoa, Boat!'"
|
||||
"Just kidding. Drop the anchor.">
|
||||
<PLTABLE "How do I launch the boat?"
|
||||
"Got any rocket fuel?"
|
||||
"Type, 'Launch boat.'"
|
||||
"(Make sure you're in the boat and the anchor's up first.)">
|
||||
<PLTABLE "How do I land the boat?"
|
||||
"You can only land the boat at the Embankment or outside Traitor's Gate."
|
||||
"Type: N or LAND BOAT.">
|
||||
<PLTABLE "How do I get the paddle?"
|
||||
"You can't get the paddle when you're outside Traitor's Gate."
|
||||
"If you don't have the paddle, you need two oars to row back up the river."
|
||||
"If you're on the river without a paddle or both oars, you're making a big mistake."
|
||||
"You can only take the paddle after you've entered the Tower.">
|
||||
<PLTABLE "Can I stop the man taking the boat?"
|
||||
"No, you can't. But after all, it's his boat.">
|
||||
"VICTORIA STATION"
|
||||
<PLTABLE "What time does the last train leave?"
|
||||
"The timetable is posted on the wall."
|
||||
"9:15 p.m.">
|
||||
<PLTABLE "What track does it leave from?"
|
||||
"Track 29.">
|
||||
<PLTABLE "How much is a round-trip ticket?"
|
||||
"Why are you reading clues about a place that isn't even in the game?">
|
||||
"COVENT GARDEN"
|
||||
<PLTABLE "What is the matter with the girl?"
|
||||
"She has a bad heart."
|
||||
"Perhaps some medicine...."
|
||||
"Be careful. Drugs are dangerous.">
|
||||
<PLTABLE "How do I revive her?"
|
||||
"Have you made a positive diagnosis?"
|
||||
"Listen to the girl with your stethoscope."
|
||||
"If her heart is abnormally fast, give her something to slow it down."
|
||||
"An unusually fast heartbeat is known as tachycardia."
|
||||
"If her heart is abnormally slow, give her something to speed it up."
|
||||
"An unusually slow heartbeat is know as bradycardia."
|
||||
"Belladonna will speed up a slow heart."
|
||||
"Digitalis will slow down a fast heart."
|
||||
"The drugs are in your medicine bag.">
|
||||
<PLTABLE "Where is the stethoscope?"
|
||||
"Where do most doctors carry their stethoscopes?"
|
||||
"You are not most doctors."
|
||||
"You have it when you start the game."
|
||||
"Sorry about this. It turns out that Watson always carries his
|
||||
stethoscope in his hat. Really. (Read \"A Scandal in Bohemia.\")">
|
||||
"MADAME TUSSAUD'S"
|
||||
<PLTABLE "How do I get past the guard dog?"
|
||||
"He won't let you carry any matches inside."
|
||||
"OK. So you already knew that."
|
||||
"He won't let you carry in any flames that he can see."
|
||||
"Alright, so you knew that too. How about flames that he can't see?"
|
||||
"Something that burns without a flame, for example."
|
||||
"Like tobacco maybe."
|
||||
"Light the pipe, drop the match, and go on in.">
|
||||
<PLTABLE "What do I do with the axe?"
|
||||
"The axe doesn't do much except cut down on the number of other things you can carry.">
|
||||
<PLTABLE "How can I light the torch?"
|
||||
"Light it from something that's already burning."
|
||||
"Light it from a burning piece of paper."
|
||||
"Light a piece of paper from the pipe, and then use it to light the torch.">
|
||||
"SCOTLAND YARD"
|
||||
<PLTABLE "Will Lestrade talk to me in his office?"
|
||||
"He doesn't like you."
|
||||
"He really doesn't like you."
|
||||
"What office?">
|
||||
"BANK OF ENGLAND"
|
||||
<PLTABLE "How do I get inside the bank?"
|
||||
"Despite the guard's assertions to the contrary, he can be bribed."
|
||||
"Give him something valuable."
|
||||
"Some gems might do the trick."
|
||||
"Give him the ruby, the sapphire, the emerald and the opal.">
|
||||
<PLTABLE "How do I get inside the vault?"
|
||||
"The door has a combination lock on it."
|
||||
"The tumblers turn too quietly for you to hear without amplification."
|
||||
"Listen to the door with the stethoscope, and then turn the dial left or right."
|
||||
"A 'clunk' means you're going the wrong way."
|
||||
"A 'whirr' means you're going the right way."
|
||||
"A 'click' means you should reverse directions."
|
||||
"The combination is right twice, left once, right twice.">
|
||||
<PLTABLE "Which box should I open?"
|
||||
"Have you solved the second clue on Sir Isaac Newton's tomb?"
|
||||
"Open box 600.">
|
||||
<PLTABLE "How do I open safety deposit boxes?"
|
||||
"Do you have any dynamite?"
|
||||
"Try using a key."
|
||||
"The bank guard has it."
|
||||
"It's in his pocket."
|
||||
"How good a pickpocket are you?"
|
||||
"How good a pickpocket are the people you know?"
|
||||
"Ask Wiggins to steal it.">
|
||||
<PLTABLE "How can I stop the kidnapping?"
|
||||
"Hire bodyguards."
|
||||
"Put Holmes in your medical bag."
|
||||
"You can't.">
|
||||
"DIOGENES CLUB"
|
||||
<PLTABLE "What does Mycroft want from me?"
|
||||
"Your blood?"
|
||||
"Your first-born male child?"
|
||||
"Sherlock's ring.">
|
||||
<PLTABLE "How do I get the token?"
|
||||
"Show any of the gems you have found to Sherlock.">
|
||||
"TOWER OF LONDON"
|
||||
<PLTABLE "How do I get into the Tower?"
|
||||
"Give the password to the beefeater."
|
||||
"You must get the password from someone who has government connections."
|
||||
"Mycroft Holmes knows the password."
|
||||
"Don't continue unless Sherlock Holmes has been kidnapped."
|
||||
"Go to the Diogenes Club and ask for Mycroft. The butler will
|
||||
ask you for a token. Give him the token. Mycroft will appear and give
|
||||
you the password."
|
||||
"Return to the Tower and give the guard the password."
|
||||
"Just type GUARD, [PASSWORD].">
|
||||
<PLTABLE "How do I get out of the Tower?"
|
||||
"The beefeater won't let you out. You must find another exit."
|
||||
"The only other way out is through Traitor's Gate."
|
||||
"The portcullis is operated by the chain above it."
|
||||
"You do not weigh enough to pull down the chain."
|
||||
"Put on the suit of armour in the dungeon of the White Tower and then pull on the chain.">
|
||||
"GEMS"
|
||||
<PLTABLE "Where is the diamond?"
|
||||
"What diamond?">
|
||||
<PLTABLE "How do I get the diamond?"
|
||||
"See previous hint.">
|
||||
<PLTABLE "Where is the sapphire?"
|
||||
"Did you solve the Hickory Dickory Dock riddle?"
|
||||
"It's stuck to the clapper of Big Ben.">
|
||||
<PLTABLE "How do I get the sapphire?"
|
||||
"Have you tried driving a hook into the ceiling, throwing a rope
|
||||
over the hook, climbing up onto the rail, swinging across the hollow shaft
|
||||
while screaming like Tarzan, and grabbing the sapphire as you swing by?"
|
||||
"Just asking."
|
||||
"Wait until the hour strikes. The clapper will swing your way."
|
||||
"You need to use your hands while the bell is ringing."
|
||||
"Put the cotton balls in your ears before the bell starts to ring."
|
||||
"The cotton balls are in the blue pill bottle.">
|
||||
<PLTABLE "Where is the ruby?"
|
||||
"Did you solve the Son of Mars riddle?"
|
||||
"It's somewhere in Trafalgar Square."
|
||||
"It's on the statue in Trafalgar Square."
|
||||
"It's in Nelson's blind eye."
|
||||
"You can discover it only by looking through the telescope.">
|
||||
<PLTABLE "How do I get the ruby?"
|
||||
"You can't get up there."
|
||||
"Someone - or something - else will have to get it for you."
|
||||
"Some kind of trained bird might do it."
|
||||
"Old Sherman, who lives in Pinchin Lane, trains animals."
|
||||
"Get the bird from Sherman. Take it to Trafalgar Square. Show
|
||||
the ruby to the pigeon, ask him to get it, and then let him go."
|
||||
"Do not read the next clue until you have done all of the above."
|
||||
"Did we mention that it's a homing pigeon?"
|
||||
"Return to Sherman's shop and ask him about the bird.">
|
||||
<PLTABLE "Where is the emerald?"
|
||||
"Did you solve the Chopper riddle?"
|
||||
"It's in the Chamber of Horrors."
|
||||
"It's hidden in one of the statues."
|
||||
"It's in the wax head of Charles I.">
|
||||
<PLTABLE "How do I get the emerald?"
|
||||
"It's encased in wax. What springs to mind?"
|
||||
"You need to melt the head."
|
||||
"You can't melt the head unless you remove it from the statue."
|
||||
"You need something that puts out enough heat to melt a big gob of wax."
|
||||
"The torch will melt the wax head.">
|
||||
<PLTABLE "Where is the sceptre?"
|
||||
"In the sceptre tank?"
|
||||
"Sorry about that."
|
||||
"There is no sceptre.">
|
||||
<PLTABLE "How do I get the sceptre?"
|
||||
"Dive into the sceptre tank."
|
||||
"Don't blame us. You're the one who keeps reading these bogus clues.">
|
||||
"MORE GEMS"
|
||||
<PLTABLE "Where is the opal?"
|
||||
"Have you solved the London Bridge riddle?"
|
||||
"It's in the clump of moss under London Bridge.">
|
||||
<PLTABLE "How do I get the opal?"
|
||||
"Can you lower the bridge?"
|
||||
"Can you raise the water?"
|
||||
"Wait for high tide."
|
||||
"The newspaper that came with your game contains the tide tables for the weekend.">
|
||||
<PLTABLE "Where is the zorkmid?"
|
||||
"It's in the... oops. Sorry. Wrong game.">
|
||||
<PLTABLE "How do I get the zorkmid?"
|
||||
"Buy Zork I."
|
||||
"Buy Enchanter."
|
||||
"Buy Sorcerer."
|
||||
"You get the idea.">
|
||||
<PLTABLE "Where is the topaz?"
|
||||
"In a safety deposit box in the Bank of England."
|
||||
"Have you solved the number riddle?"
|
||||
"It's in box 600.">
|
||||
<PLTABLE "How do I get the topaz?"
|
||||
"See the clues for the Bank of England.">
|
||||
<PLTABLE "Where is the garnet?"
|
||||
"Did you solve the Tower of London riddle?"
|
||||
"It's in the butt of malmsey in the Bowyer Tower.">
|
||||
<PLTABLE "How do I get the garnet?"
|
||||
"Have you tried drinking the wine?"
|
||||
"Pretty tasty stuff, isn't it?"
|
||||
"You need to drain the keg somehow."
|
||||
"You need to remove the bung."
|
||||
"Knock out the bung with the mace."
|
||||
"Don't read the next clue until you have done all of the above."
|
||||
"Ask Wiggins to get the garnet for you.">
|
||||
<PLTABLE "Why are the gems important?"
|
||||
"You don't think the thief has been hiding gems all over London just for the fun of it, do you?"
|
||||
"Perhaps he is trying to send Sherlock yet another message."
|
||||
"Have you looked at any of the gems?"
|
||||
"Have you looked at any of them closely?"
|
||||
"Look at each of the gems through the magnifying glass.">
|
||||
"THE LAIR"
|
||||
<PLTABLE "Can I stop Akbar's knocking me out?"
|
||||
"Knock him out first."
|
||||
"Perhaps you could smuggle something in."
|
||||
"Have you noticed the henchman's religion?"
|
||||
"He probably won't disturb your hat."
|
||||
"Perhaps the etherium ampoule....">
|
||||
<PLTABLE "Can I stop Moriarty when I wake up?"
|
||||
"If he is free to move around, he will always win."
|
||||
"Tie him up."
|
||||
"Don't forget to tie up the henchman, too.">
|
||||
"MISCELLANEOUS"
|
||||
<PLTABLE "Why do I finish without 100 points?"
|
||||
"If you play the game from start to finish and solve all
|
||||
the puzzles, you will end up with 100 points. If, however, you start the
|
||||
game and play through it using information you acquired in a previous
|
||||
session, you may have neglected to perform a few actions for which you
|
||||
received points. This should not be of concern to anyone who is content
|
||||
with failing to discover the highest ranking available to the game player.">
|
||||
<PLTABLE "Can I abbreviate \"stethoscope\"?"
|
||||
"Yes. It can be abbreviated to STETH or SS.">
|
||||
<PLTABLE "What is the square root of 64?"
|
||||
"Eight.">>>
|
||||
|
||||
<GLOBAL GL-CUR-POS 0> ;"determines where to place the highlight cursor
|
||||
Can go up to 17 Questions"
|
||||
|
||||
<GLOBAL GL-QUEST-NUM 1> ;"shows in HINT-TBL ltable which QUESTION it's on"
|
||||
|
||||
<GLOBAL GL-CHAPT-NUM 1> ;"shows in HINT-TBL ltable which CHAPTER it's on"
|
||||
|
||||
<CONSTANT GL-DIROUT-TBL
|
||||
<TABLE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|
||||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 >>
|
||||
|
||||
<ROUTINE V-HINT ("AUX" CHR MAXC (C <>) Q (WHO <>))
|
||||
<COND (,GL-HINTS-OFF
|
||||
<RT-PERFORM ,V?HINTS-NO ,ROOMS>
|
||||
<RFATAL>)
|
||||
(<NOT ,GL-HINT-WARNING>
|
||||
<SETG GL-HINT-WARNING T>
|
||||
<TELL
|
||||
"[Warning: It is recognized that the temptation for help may at times be so
|
||||
exceedingly strong that you might fetch hints prematurely. Therefore, you may
|
||||
at any time during the story type HINTS OFF, and this will disallow the
|
||||
seeking out of help for the present session of the story. If you still want a
|
||||
hint now, indicate HINT.]" CR>
|
||||
<RFATAL>)
|
||||
(<NOT .WHO>
|
||||
<SET WHO <RT-WHO-SAYS?>>
|
||||
<COND (<EQUAL? .WHO ,CH-HOLMES ,CH-WIGGINS>
|
||||
<COND (<EQUAL? .WHO ,CH-HOLMES>
|
||||
<TELL
|
||||
"Holmes looks at you impatiently and sighs, \"Very well, Watson. If you
|
||||
must.\"">)
|
||||
(T
|
||||
<TELL
|
||||
"Wiggins looks up at you with relief and says, \"Good idea, guv. We'll never
|
||||
work this out on our own.\"">)>
|
||||
<TELL CR CR "[Press any key to continue.]" CR>
|
||||
<INPUT 1>)>)>
|
||||
<IFSOUND ;<SET X <GET ,SOUND-FLAG 0>>
|
||||
<SETG SOUND-QUEUED? <>>
|
||||
<KILL-SOUNDS>>
|
||||
;<BUFOUT <>>
|
||||
<SET MAXC <GET ,K-HINTS 0>>
|
||||
<RT-INIT-HINT-SCREEN>
|
||||
<CURSET 5 1>
|
||||
<RT-PUT-UP-CHAPTERS>
|
||||
<SETG GL-CUR-POS <- ,GL-CHAPT-NUM 1>>
|
||||
<RT-NEW-CURSOR>
|
||||
<REPEAT ()
|
||||
<SET CHR <INPUT 1>>
|
||||
<COND (<EQUAL? .CHR !\Q !\q>
|
||||
<SET Q T>
|
||||
<RETURN>)
|
||||
(<EQUAL? .CHR !\N !\n>
|
||||
<RT-ERASE-CURSOR>
|
||||
<COND (<EQUAL? ,GL-CHAPT-NUM .MAXC>
|
||||
<SETG GL-CUR-POS 0>
|
||||
<SETG GL-CHAPT-NUM 1>
|
||||
<SETG GL-QUEST-NUM 1>)
|
||||
(T
|
||||
<SETG GL-CUR-POS <+ ,GL-CUR-POS 1>>
|
||||
<SETG GL-CHAPT-NUM <+ ,GL-CHAPT-NUM 1>>
|
||||
<SETG GL-QUEST-NUM 1>)>
|
||||
<RT-NEW-CURSOR>)
|
||||
(<EQUAL? .CHR !\P !\p>
|
||||
<RT-ERASE-CURSOR>
|
||||
<COND (<EQUAL? ,GL-CHAPT-NUM 1>
|
||||
<SETG GL-CHAPT-NUM .MAXC>
|
||||
<SETG GL-CUR-POS <- .MAXC 1>>)
|
||||
(T
|
||||
<SETG GL-CUR-POS <- ,GL-CUR-POS 1>>
|
||||
<SETG GL-CHAPT-NUM <- ,GL-CHAPT-NUM 1>>)>
|
||||
<SETG GL-QUEST-NUM 1>
|
||||
<RT-NEW-CURSOR>)
|
||||
(<EQUAL? .CHR 13 10>
|
||||
<RT-PICK-QUESTION>
|
||||
<RETURN>)>>
|
||||
<COND (<NOT .Q>
|
||||
<AGAIN> ;"AGAIN does whole routine?")>
|
||||
<CLEAR -1>
|
||||
<V-REFRESH>
|
||||
<SET WHO <RT-WHO-SAYS?>>
|
||||
<COND (<EQUAL? .WHO ,CH-HOLMES>
|
||||
<TELL CR
|
||||
"Holmes barely glances at you and snaps, \"At last. Now may we proceed?\"" CR>)
|
||||
(<EQUAL? .WHO ,CH-WIGGINS>
|
||||
<TELL CR
|
||||
"Wiggins tugs your sleeve and asks hopefully, \"Learn anything?\"" CR>)
|
||||
(T
|
||||
<TELL CR "Back to the story..." CR>)>
|
||||
<IFSOUND <COND (,SOUND-ON?
|
||||
<CHECK-LOOPING>)>>
|
||||
;<IFSOUND <COND (<G? .X 1>
|
||||
<SOUNDS </ .X 16> ,S-START <MOD .X 16>>)>>
|
||||
<RFATAL>>
|
||||
|
||||
<ROUTINE RT-PICK-QUESTION ("AUX" CHR MAXQ (Q <>))
|
||||
<RT-INIT-HINT-SCREEN <>>
|
||||
<RT-LEFT-LINE 3 ,RETURN-SEE-HINT ,RETURN-SEE-HINT-LEN>
|
||||
<RT-RIGHT-LINE 3 ,Q-MAIN-MENU ,Q-MAIN-MENU-LEN>
|
||||
<SET MAXQ <- <GET <GET ,K-HINTS ,GL-CHAPT-NUM> 0> 1>>
|
||||
<CURSET 5 1>
|
||||
<RT-PUT-UP-QUESTIONS>
|
||||
<SETG GL-CUR-POS <- ,GL-QUEST-NUM 1>>
|
||||
<RT-NEW-CURSOR>
|
||||
<REPEAT ()
|
||||
<SET CHR <INPUT 1>>
|
||||
<COND (<EQUAL? .CHR !\Q !\q>
|
||||
<SET Q T>
|
||||
<RETURN>)
|
||||
(<EQUAL? .CHR !\N !\n>
|
||||
<RT-ERASE-CURSOR>
|
||||
<COND (<EQUAL? ,GL-QUEST-NUM .MAXQ> ; "Wrap around on N"
|
||||
<SETG GL-CUR-POS 0>
|
||||
<SETG GL-QUEST-NUM 1>)
|
||||
(T
|
||||
<SETG GL-CUR-POS <+ ,GL-CUR-POS 1>>
|
||||
<SETG GL-QUEST-NUM <+ ,GL-QUEST-NUM 1>>)>
|
||||
<RT-NEW-CURSOR>)
|
||||
(<EQUAL? .CHR !\P !\p>
|
||||
<RT-ERASE-CURSOR>
|
||||
<COND (<EQUAL? ,GL-QUEST-NUM 1>
|
||||
<SETG GL-QUEST-NUM .MAXQ>
|
||||
<SETG GL-CUR-POS <- .MAXQ 1>>)
|
||||
(T
|
||||
<SETG GL-CUR-POS <- ,GL-CUR-POS 1>>
|
||||
<SETG GL-QUEST-NUM <- ,GL-QUEST-NUM 1>>)>
|
||||
<RT-NEW-CURSOR>)
|
||||
(<EQUAL? .CHR 13 10>
|
||||
<RT-DISPLAY-HINT>
|
||||
<RETURN>)>>
|
||||
<COND (<NOT .Q>
|
||||
<AGAIN>)>>
|
||||
|
||||
<ROUTINE RT-ERASE-CURSOR ()
|
||||
<CURSET <GET ,GL-LINE-TABLE ,GL-CUR-POS>
|
||||
<- <GET ,GL-COLUMN-TABLE ,GL-CUR-POS> 2>>
|
||||
<TELL " "> ;"erase previous highlight cursor">
|
||||
|
||||
;"go back 2 spaces from question text, print cursor and flash is between
|
||||
the cursor and text"
|
||||
|
||||
<ROUTINE RT-NEW-CURSOR ()
|
||||
<CURSET <GET ,GL-LINE-TABLE ,GL-CUR-POS>
|
||||
<- <GET ,GL-COLUMN-TABLE ,GL-CUR-POS> 2 ;1>>
|
||||
<TELL ">"> ;"print the new cursor">
|
||||
|
||||
<ROUTINE RT-INVERSE-LINE ("AUX" (CENTER-HALF <>))
|
||||
<HLIGHT ,K-H-INV>
|
||||
<RT-PRINT-SPACES <LOWCORE SCRH>>
|
||||
<HLIGHT ,K-H-NRM>>
|
||||
|
||||
<ROUTINE RT-DISPLAY-HINT ("AUX" H MX (CNT 2) CHR (FLG T) N CV
|
||||
SHIFT? COUNT-OFFS)
|
||||
<CLEAR -1>
|
||||
<SPLIT 3>
|
||||
<SCREEN ,K-S-WIN>
|
||||
<CURSET 1 1>
|
||||
<RT-INVERSE-LINE>
|
||||
<RT-CENTER-LINE 1 "INVISICLUES (tm)" <STRLENGTH "INVISICLUES (tm)">>
|
||||
<CURSET 3 1>
|
||||
<RT-INVERSE-LINE>
|
||||
<RT-LEFT-LINE 3 "RETURN = see new hint">
|
||||
<RT-RIGHT-LINE 3 "Q = see hint menu" <STRLENGTH "Q = see hint menu">>
|
||||
<CURSET 2 1>
|
||||
<RT-INVERSE-LINE>
|
||||
<HLIGHT ,K-H-BLD>
|
||||
<SET H <GET <GET ,K-HINTS ,GL-CHAPT-NUM> <+ ,GL-QUEST-NUM 1>>>
|
||||
; "Byte table to use for showing questions already seen"
|
||||
; "Actually a nibble table. The high four bits of each byte are for
|
||||
quest-num odd; the low for bits are for quest-num even. See SHIFT?
|
||||
and COUNT-OFFS."
|
||||
<SET CV <GET ,K-HINT-COUNTS <- ,GL-CHAPT-NUM 1>>>
|
||||
<RT-CENTER-LINE 2 <GET .H 1 ;,K-HINT-QUESTION>>
|
||||
<HLIGHT ,K-H-NRM>
|
||||
<SET MX <GET .H 0>>
|
||||
<SCREEN ,K-S-NOR>
|
||||
<CRLF>
|
||||
<SET SHIFT? <MOD ,GL-QUEST-NUM 2>>
|
||||
<SET COUNT-OFFS </ <- ,GL-QUEST-NUM 1> 2>>
|
||||
<REPEAT ((CURCX <GETB .CV .COUNT-OFFS>)
|
||||
(CURC <+ 2 <ANDB <COND (.SHIFT? <LSH .CURCX -4>)
|
||||
(T .CURCX)> *17*>>))
|
||||
<COND (<==? .CNT .CURC>
|
||||
<RETURN>)
|
||||
(T
|
||||
<TELL <GET .H .CNT> CR ;CR>
|
||||
<SET CNT <+ .CNT 1>>)>>
|
||||
<REPEAT ()
|
||||
<COND (<AND .FLG <G? .CNT .MX>>
|
||||
<SET FLG <>>
|
||||
<TELL "[That's all.]" CR>)
|
||||
(.FLG
|
||||
<SET N <+ <- .MX .CNT> 1>>
|
||||
<TELL "[" N .N " hint">
|
||||
<COND (<NOT <EQUAL? .N 1>>
|
||||
<TELL "s">)>
|
||||
<TELL " left.]" ;CR ;CR " -> ">
|
||||
<SET FLG <>>)>
|
||||
<SET CHR <INPUT 1>>
|
||||
<COND (<EQUAL? .CHR !\Q !\q>
|
||||
<COND (.SHIFT?
|
||||
<PUTB .CV .COUNT-OFFS
|
||||
<ORB <ANDB <GETB .CV .COUNT-OFFS> *17*>
|
||||
<LSH <- .CNT 2> 4>>>)
|
||||
(T
|
||||
<PUTB .CV .COUNT-OFFS
|
||||
<ORB <ANDB <GETB .CV .COUNT-OFFS> *360*>
|
||||
<- .CNT 2>>>)>
|
||||
<RETURN>)
|
||||
(<EQUAL? .CHR 13 10>
|
||||
<COND (<L=? .CNT .MX>
|
||||
<SET FLG T> ;".cnt starts as 2"
|
||||
<TELL <GET .H .CNT> ;CR CR>
|
||||
; "3rd = line 7, 4th = line 9, ect"
|
||||
<COND (<G? <SET CNT <+ .CNT 1>> .MX>
|
||||
<SET FLG <>>
|
||||
<TELL "[Final hint]" CR>)>)>)>>>
|
||||
|
||||
<ROUTINE RT-PUT-UP-QUESTIONS ("AUX" (ST 1) MXQ MXL)
|
||||
<SET MXQ <- <GET <GET ,K-HINTS ,GL-CHAPT-NUM> 0> 1>>
|
||||
<SET MXL <- <LOWCORE SCRV> 1>>
|
||||
<REPEAT ()
|
||||
<COND (<G? .ST .MXQ>
|
||||
<RETURN>)
|
||||
(T ;"zeroth"
|
||||
<CURSET <GET ,GL-LINE-TABLE <- .ST 1>>
|
||||
<- <GET ,GL-COLUMN-TABLE <- .ST 1>> 1>>)>
|
||||
<TELL " " <GET <GET <GET ,K-HINTS ,GL-CHAPT-NUM> <+ .ST 1>> 1>>
|
||||
<SET ST <+ .ST 1>>>>
|
||||
|
||||
<ROUTINE RT-PUT-UP-CHAPTERS ("AUX" (ST 1) MXC MXL)
|
||||
<SET MXC <GET ,K-HINTS 0>>
|
||||
<SET MXL <- <LOWCORE SCRV> 1>>
|
||||
<REPEAT ()
|
||||
<COND (<G? .ST .MXC>
|
||||
<RETURN>)
|
||||
(T ;"zeroth"
|
||||
<CURSET
|
||||
<GET ,GL-LINE-TABLE <- .ST 1>>
|
||||
<- <GET ,GL-COLUMN-TABLE <- .ST 1>> 1>>)>
|
||||
<TELL " " <GET <GET ,K-HINTS .ST> 1 ;,GL-HINT-QUEST>>
|
||||
<SET ST <+ .ST 1>>>>
|
||||
|
||||
<ROUTINE RT-INIT-HINT-SCREEN ("OPTIONAL" (THIRD T))
|
||||
<CLEAR -1>
|
||||
<SPLIT <- <LOWCORE SCRV> 1>>
|
||||
<SCREEN ,K-S-WIN>
|
||||
<CURSET 1 1>
|
||||
<RT-INVERSE-LINE>
|
||||
<CURSET 2 1>
|
||||
<RT-INVERSE-LINE>
|
||||
<CURSET 3 1>
|
||||
<RT-INVERSE-LINE>
|
||||
<RT-CENTER-LINE 1 "INVISICLUES (tm)" <STRLENGTH "INVISICLUES (tm)">>
|
||||
<RT-LEFT-LINE 2 " N = Next">
|
||||
<RT-RIGHT-LINE 2 "P = Previous" <STRLENGTH "P = Previous">>
|
||||
<COND (<MC-T? .THIRD>
|
||||
<RT-LEFT-LINE 3 " RETURN = See hint">
|
||||
<RT-RIGHT-LINE 3 "Q = Resume story" <STRLENGTH "Q = Resume story">>)>>
|
||||
|
||||
<ROUTINE RT-CENTER-LINE (LN STR "OPTIONAL" (LEN 0) (INV T))
|
||||
<COND (<ZERO? .LEN>
|
||||
<DIROUT ,K-D-TBL-ON ,GL-DIROUT-TBL ;,SLINE>
|
||||
<TELL .STR>
|
||||
<DIROUT ,K-D-TBL-OFF>
|
||||
<SET LEN <GET ,GL-DIROUT-TBL ;,SLINE 0>>)>
|
||||
<CURSET .LN </ <- <LOWCORE SCRH> .LEN> 2>>
|
||||
<COND (.INV
|
||||
<HLIGHT ,K-H-INV>)>
|
||||
<TELL .STR>
|
||||
<COND (.INV
|
||||
<HLIGHT ,K-H-NRM>)>>
|
||||
|
||||
<ROUTINE RT-LEFT-LINE (LN STR "OPTIONAL" (INV T))
|
||||
<CURSET .LN 1>
|
||||
<COND (.INV
|
||||
<HLIGHT ,K-H-INV>)>
|
||||
<TELL .STR>
|
||||
<COND (.INV
|
||||
<HLIGHT ,K-H-NRM>)>>
|
||||
|
||||
<ROUTINE RT-RIGHT-LINE (LN STR "OPTIONAL" (LEN 0) (INV T))
|
||||
<COND (<ZERO? .LEN>
|
||||
<DIROUT 3 ,GL-DIROUT-TBL ;,SLINE>
|
||||
<TELL .STR>
|
||||
<DIROUT -3>
|
||||
<SET LEN <GET ,GL-DIROUT-TBL ;,SLINE 0>>)>
|
||||
<CURSET .LN <- <LOWCORE SCRH> .LEN>>
|
||||
<COND (.INV
|
||||
<HLIGHT ,K-H-INV>)>
|
||||
<TELL .STR>
|
||||
<COND (.INV
|
||||
<HLIGHT ,K-H-NRM>)>>
|
||||
|
||||
|
BIN
horse.was-mid
Normal file
BIN
horse.was-mid
Normal file
Binary file not shown.
98
locals.zabstr
Normal file
98
locals.zabstr
Normal file
|
@ -0,0 +1,98 @@
|
|||
|
||||
<OBJECT LG-BAKER-ST-DOOR (LOC LOCAL-GLOBALS) (DESC "front door") (FLAGS FL-DOOR
|
||||
FL-OPENABLE FL-LOCKED) (SYNONYM DOOR) (ADJECTIVE FRONT HOLMES\' HOLMES\'S
|
||||
SHERLOCK) (GENERIC RT-GN-DOOR) (ACTION RT-AC-LG-BAKER-ST-DOOR)>
|
||||
<OBJECT LG-PARLOUR-DOOR (LOC LOCAL-GLOBALS) (DESC "parlour door") (FLAGS
|
||||
FL-DOOR FL-OPENABLE) (SYNONYM DOOR) (ADJECTIVE PARLOUR PARLOR) (GENERIC
|
||||
RT-GN-DOOR) (ACTION RT-AC-LG-PARLOUR-DOOR)>
|
||||
<OBJECT LG-HOLMES-STUDY-DOOR (LOC LOCAL-GLOBALS) (DESC "study door") (FLAGS
|
||||
FL-DOOR FL-OPENABLE FL-OPENED) (SYNONYM DOOR) (ADJECTIVE STUDY HOLMES\'S
|
||||
HOLMES\' SHERLOCK) (GENERIC RT-GN-DOOR) (ACTION RT-AC-LG-HOLMES-STUDY-DOOR)>
|
||||
<OBJECT LG-HOLMES-BEDROOM-DOOR (LOC LOCAL-GLOBALS) (DESC "bedroom door") (FLAGS
|
||||
FL-DOOR FL-OPENABLE FL-LOCKED) (SYNONYM DOOR) (ADJECTIVE BEDROOM HOLMES\'S
|
||||
HOLMES\' SHERLOCK) (GENERIC RT-GN-DOOR) (ACTION RT-AC-LG-HOLMES-BEDROOM-DOOR)>
|
||||
<OBJECT LG-BANK-VAULT-DOOR (LOC LOCAL-GLOBALS) (DESC "vault door") (FLAGS
|
||||
FL-DOOR FL-OPENABLE FL-LOCKED FL-HAS-DESCFCN) (SYNONYM DOOR) (ADJECTIVE VAULT)
|
||||
(VALUE 3) (GENERIC RT-GN-DOOR) (ACTION RT-AC-LG-BANK-VAULT-DOOR)>
|
||||
<OBJECT LG-BAR-OF-GOLD-DOOR (LOC LOCAL-GLOBALS) (DESC "door") (FLAGS FL-DOOR
|
||||
FL-OPENABLE FL-OPENED) (SYNONYM DOOR) (GENERIC RT-GN-DOOR) (ACTION
|
||||
RT-AC-LG-BAR-OF-GOLD-DOOR)>
|
||||
<OBJECT LG-LAIR-DOOR (LOC LOCAL-GLOBALS) (DESC "door") (FLAGS FL-DOOR
|
||||
FL-OPENABLE FL-LOCKED) (SYNONYM DOOR) (GENERIC RT-GN-DOOR) (ACTION
|
||||
RT-AC-LG-LAIR-DOOR)>
|
||||
<OBJECT LG-JERICHO-PARLOUR-DOOR (LOC LOCAL-GLOBALS) (DESC
|
||||
"door to the Jericho Parlour") (FLAGS FL-DOOR FL-OPENABLE) (SYNONYM DOOR) (
|
||||
ADJECTIVE JERICHO PARLOUR PARLOR) (GENERIC RT-GN-DOOR) (ACTION
|
||||
RT-AC-LG-JERICHO-PARLOUR-DOOR)>
|
||||
<OBJECT LG-BRITISH-MUSEUM-DOOR (LOC LOCAL-GLOBALS) (DESC "door") (FLAGS FL-DOOR
|
||||
FL-LOCKED FL-OPENABLE) (SYNONYM DOOR) (GENERIC RT-GN-DOOR) (ACTION
|
||||
RT-AC-LG-BRITISH-MUSEUM-DOOR)>
|
||||
<OBJECT LG-WESTMINSTER-DOOR (LOC LOCAL-GLOBALS) (DESC "Abbey door") (FLAGS
|
||||
FL-DOOR FL-LOCKED FL-OPENABLE) (SYNONYM DOOR) (GENERIC RT-GN-DOOR) (ACTION
|
||||
RT-AC-LG-WESTMINSTER-DOOR)>
|
||||
<OBJECT LG-SHOPS (LOC LOCAL-GLOBALS) (DESC "shops") (FLAGS FL-PLURAL
|
||||
FL-HAS-DESCFCN) (SYNONYM SHOPS STORES EMPORIUMS WINDOWS WINDOW SHOP STORE) (
|
||||
ACTION RT-AC-LG-SHOPS)>
|
||||
<OBJECT LG-WATER (LOC LOCAL-GLOBALS) (FLAGS FL-NODESC FL-CONTAINER FL-OPENED
|
||||
FL-SURFACE FL-HAS-SDESC FL-NOARTC) (SYNONYM WATER RIVER THAMES) (SIZE 0
|
||||
CAPACITY 100) (ACTION RT-AC-LG-WATER)>
|
||||
<OBJECT LG-UP-DOWN-STREAM (LOC LOCAL-GLOBALS) (FLAGS FL-NODESC FL-HAS-SDESC
|
||||
FL-NEEDS-IDENTITY) (OBJ-NOUN 0) (OBJ-ADJ 0) (SYNONYM UPSTREAM DOWNSTREAM) (
|
||||
ACTION RT-AC-LG-UP-DOWN-STREAM)>
|
||||
<OBJECT LG-PLAQUES (LOC LOCAL-GLOBALS) (DESC "sign") (FLAGS FL-TRYTAKE FL-NOALL
|
||||
FL-SURFACE FL-HAS-DESCFCN) (SYNONYM PLAQUE PLATE SIGN RELIEF) (SIZE 0 CAPACITY
|
||||
999) (ACTION RT-AC-LG-PLAQUES)>
|
||||
<OBJECT LG-WINDOW (LOC LOCAL-GLOBALS) (DESC "window") (FLAGS FL-TRYTAKE
|
||||
FL-NOALL FL-HAS-DESCFCN FL-OPENABLE FL-TRANSPARENT) (SYNONYM WINDOW) (ADJECTIVE
|
||||
BOW) (ACTION RT-AC-LG-WINDOW)>
|
||||
<OBJECT LG-TOMBS-ABBEY (LOC LOCAL-GLOBALS) (FLAGS FL-TRYTAKE FL-PLURAL FL-NOALL
|
||||
FL-HAS-DESCFCN FL-HAS-SDESC FL-NEEDS-IDENTITY) (OBJ-ADJ 0) (OBJ-NOUN 0) (
|
||||
ADJECTIVE WESTMINSTER) (SYNONYM TOMBS SCULPTURES STATUES TOMB ABBEY) (ACTION
|
||||
RT-AC-LG-TOMBS-ABBEY)>
|
||||
<OBJECT LG-STREETLIGHT (LOC LOCAL-GLOBALS) (DESC "streetlight") (FLAGS
|
||||
FL-TRYTAKE FL-NOALL FL-TRANSPARENT) (SYNONYM LIGHT LAMP STREETLIGHT STREETLAMP
|
||||
STREET-LIGHT GASLIGHT GAS-LIGHT) (ADJECTIVE GAS) (ACTION RT-AC-LG-STREETLIGHT)>
|
||||
|
||||
<OBJECT LG-STAIRWAY (LOC LOCAL-GLOBALS) (DESC "stairway") (FLAGS FL-TRYTAKE
|
||||
FL-NOALL) (SYNONYM STAIRWAY STAIR STAIRS STEP STEPS) (ACTION RT-AC-LG-STAIRWAY)
|
||||
>
|
||||
<OBJECT LG-SHAFT-OF-LIGHT (LOC LOCAL-GLOBALS) (DESC "shaft of light") (FLAGS
|
||||
FL-NODESC FL-HAS-DESCFCN) (SYNONYM SHAFT LIGHT SUNLIGHT) (ADJECTIVE SHAFT LIGHT
|
||||
SUNLIGHT) (ACTION RT-AC-LG-SHAFT-OF-LIGHT)>
|
||||
<OBJECT LG-MARBLE (LOC LOCAL-GLOBALS) (DESC "marble") (FLAGS FL-NODESC) (
|
||||
SYNONYM MARBLE)>
|
||||
<OBJECT LG-COLUMNS (LOC LOCAL-GLOBALS) (DESC "columns") (FLAGS FL-TRYTAKE
|
||||
FL-PLURAL FL-NOALL) (SYNONYM COLUMNS COLUMN) (ADJECTIVE PURBECK)>
|
||||
<OBJECT LG-RAVENS (LOC LOCAL-GLOBALS) (DESC "ravens") (FLAGS FL-NODESC
|
||||
FL-PLURAL FL-ALIVE FL-TRYTAKE FL-HAS-DESCFCN) (SYNONYM RAVENS BIRDS ROOKS RAVEN
|
||||
ROOK BIRD) (ADJECTIVE FLOCK GROUP BUNCH GAGGLE) (SIZE 50 MASS 250) (ACTION
|
||||
RT-AC-LG-RAVENS)>
|
||||
<OBJECT LG-BOATS (LOC LOCAL-GLOBALS) (DESC "boats") (FLAGS FL-NODESC
|
||||
FL-HAS-DESCFCN) (SYNONYM BOATS SHIPS) (ADJECTIVE PLEASURE) (ACTION
|
||||
RT-DF-LG-BOATS)>
|
||||
<OBJECT LG-TOWER (LOC LOCAL-GLOBALS) (DESC "Tower") (SYNONYM TOWER LONDON) (
|
||||
ADJECTIVE TOWER LONDON) (GENERIC RT-GN-TOWER) (ACTION RT-AC-LG-TOWER)>
|
||||
<DEFINE-ROUTINE RT-AC-LG-BAKER-ST-DOOR>
|
||||
<DEFINE-ROUTINE RT-AC-LG-PARLOUR-DOOR>
|
||||
<DEFINE-ROUTINE RT-AC-LG-HOLMES-STUDY-DOOR>
|
||||
<DEFINE-ROUTINE RT-AC-LG-HOLMES-BEDROOM-DOOR>
|
||||
<DEFINE-ROUTINE RT-AC-LG-BAR-OF-GOLD-DOOR>
|
||||
<DEFINE-ROUTINE RT-AC-LG-LAIR-DOOR>
|
||||
<DEFINE-ROUTINE RT-AC-LG-JERICHO-PARLOUR-DOOR>
|
||||
<DEFINE-ROUTINE RT-AC-LG-SHOPS>
|
||||
<DEFINE-ROUTINE RT-AC-LG-WATER>
|
||||
<DEFINE-ROUTINE RT-AC-LG-UP-DOWN-STREAM>
|
||||
<DEFINE-ROUTINE RT-AC-LG-BRITISH-MUSEUM-DOOR>
|
||||
<DEFINE-ROUTINE RT-AC-LG-WESTMINSTER-DOOR>
|
||||
<DEFINE-ROUTINE RT-AC-LG-PLAQUES>
|
||||
<DEFINE-ROUTINE RT-DF-LG-WAX-STATUES>
|
||||
<DEFINE-ROUTINE RT-AC-LG-WINDOW>
|
||||
<DEFINE-ROUTINE RT-AC-LG-TOMBS-ABBEY>
|
||||
<DEFINE-ROUTINE RT-AC-LG-STREETLIGHT>
|
||||
<DEFINE-ROUTINE RT-AC-LG-STAIRWAY>
|
||||
<DEFINE-ROUTINE RT-AC-LG-SHAFT-OF-LIGHT>
|
||||
<DEFINE-ROUTINE RT-AC-LG-RAVENS>
|
||||
<DEFINE-ROUTINE RT-DF-LG-BOATS>
|
||||
<DEFINE-ROUTINE RT-AC-LG-HOLMES-HOUSE>
|
||||
<DEFINE-ROUTINE RT-AC-LG-PEDESTAL>
|
||||
<DEFINE-ROUTINE RT-AC-LG-TOWER>
|
524
locals.zap
Normal file
524
locals.zap
Normal file
|
@ -0,0 +1,524 @@
|
|||
|
||||
|
||||
.FUNCT RT-AC-LG-BAKER-ST-DOOR
|
||||
EQUAL? GL-PRSA,V?KNOCK \?CCL3
|
||||
EQUAL? GL-PLACE-CUR,RM-ENTRY-HALL \?CCL6
|
||||
PRINTR "You are already inside."
|
||||
?CCL6: FSET? LG-BAKER-ST-DOOR,FL-OPENED \?CCL8
|
||||
PRINTR "The door is already open."
|
||||
?CCL8: FSET? CH-HUDSON,FL-ASLEEP \?CCL10
|
||||
PRINTR "There is no answer."
|
||||
?CCL10: FSET? LG-BAKER-ST-DOOR,FL-LOCKED /?CCL12
|
||||
FSET LG-BAKER-ST-DOOR,FL-OPENED
|
||||
MOVE CH-HUDSON,RM-ENTRY-HALL
|
||||
ICALL2 RT-THIS-IS-IT,CH-HUDSON
|
||||
PRINTR "Mrs Hudson appears and says, ""Please come in Dr Watson."" She steps back into the hall to allow room for you to pass."
|
||||
?CCL12: FCLEAR LG-BAKER-ST-DOOR,FL-LOCKED
|
||||
SET 'GL-PLACE-CUR,RM-ENTRY-HALL
|
||||
MOVE CH-HUDSON,GL-PLACE-CUR
|
||||
MOVE CH-PLAYER,GL-PLACE-CUR
|
||||
ICALL2 RT-THIS-IS-IT,CH-HUDSON
|
||||
PRINTI "You hear a bolt sliding back and the door opens to reveal a worried Mrs Hudson."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI """Oh Doctor Watson, I'm so glad to see you. It's Mr Holmes, sir. Three days have come and gone since he's been out of his rooms. He won't eat and I know he hasn't slept. Now there's a visitor who says he's here about some important government business. I tried to send him away, but he insisted on waiting in the parlour. That's when I sent for you. Thank God you've come."""
|
||||
CRLF
|
||||
ICALL RT-EXEC-RM-DESCFCN,RM-ENTRY-HALL,K-M-DESC-1
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL3: EQUAL? GL-PRSA,V?KICK,V?HIT,V?MUNG \?CCL14
|
||||
EQUAL? GL-PLACE-CUR,RM-ENTRY-HALL /FALSE
|
||||
FSET? LG-BAKER-ST-DOOR,FL-OPENED /FALSE
|
||||
PRINTR "Mrs Hudson pokes her head out the door and says, ""I'm not opening the door until you knock like a proper gentleman."" She slams the door in your face."
|
||||
?CCL14: EQUAL? GL-PRSA,V?ENTER,V?THROUGH \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-221B-BAKER-ST \?CCL24
|
||||
CALL2 RT-DO-WALK,P?WEST
|
||||
RSTACK
|
||||
?CCL24: EQUAL? GL-PLACE-CUR,RM-ENTRY-HALL \FALSE
|
||||
CALL2 RT-DO-WALK,P?EAST
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-PARLOUR-DOOR
|
||||
EQUAL? GL-PRSA,V?OPEN \?CCL3
|
||||
FSET? CH-HOLMES,FL-ASLEEP \FALSE
|
||||
ICALL2 RT-CTHEO-PRINT,CH-HUDSON
|
||||
PRINT K-HUDSON-WORRIED-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL3: EQUAL? GL-PRSA,V?ENTER,V?THROUGH \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-PARLOUR \?CCL11
|
||||
CALL2 RT-DO-WALK,P?SOUTH
|
||||
RSTACK
|
||||
?CCL11: EQUAL? GL-PLACE-CUR,RM-ENTRY-HALL \FALSE
|
||||
CALL2 RT-DO-WALK,P?NORTH
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-HOLMES-STUDY-DOOR
|
||||
EQUAL? GL-PRSA,V?ENTER,V?THROUGH \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-VESTIBULE \?CCL6
|
||||
CALL2 RT-DO-WALK,P?NORTH
|
||||
RSTACK
|
||||
?CCL6: EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY \FALSE
|
||||
CALL2 RT-DO-WALK,P?SOUTH
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-HOLMES-BEDROOM-DOOR
|
||||
EQUAL? GL-PRSA,V?ENTER,V?THROUGH \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY \?CCL6
|
||||
CALL2 RT-DO-WALK,P?WEST
|
||||
RSTACK
|
||||
?CCL6: EQUAL? GL-PLACE-CUR,RM-HOLMES-BEDROOM \FALSE
|
||||
CALL2 RT-DO-WALK,P?EAST
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-BAR-OF-GOLD-DOOR
|
||||
EQUAL? GL-PRSA,V?ENTER,V?THROUGH \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-BAR-OF-GOLD \?CCL6
|
||||
CALL2 RT-DO-WALK,P?EAST
|
||||
RSTACK
|
||||
?CCL6: EQUAL? GL-PLACE-CUR,RM-SWAN-LANE \FALSE
|
||||
CALL2 RT-DO-WALK,P?WEST
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-LAIR-DOOR
|
||||
ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?ENTER,V?THROUGH,V?OPEN /?PRD8
|
||||
EQUAL? GL-PRSA,V?CLOSE,V?UNLOCK,V?LOCK \?CCL6
|
||||
?PRD8: FSET? CH-AKBAR,FL-LOCKED /?CCL6
|
||||
FSET? CH-AKBAR,FL-ASLEEP /?CCL6
|
||||
PRINTI "Akbar"
|
||||
FSET? TH-WATSONS-HAT,FL-WORN \?CND12
|
||||
PRINTI " says, ""Forgive me, sir,"" and"
|
||||
?CND12: PRINTR " stops you as you move toward the door."
|
||||
?CCL6: EQUAL? GL-PRSA,V?OPEN \?CCL15
|
||||
FSET? CH-HOLMES,FL-LOCKED \?CCL15
|
||||
PRINTR "Holmes calls out, ""Watson! I'm still tied up!"" You pause and look back, torn by indecision."
|
||||
?CCL15: EQUAL? GL-PRSA,V?ENTER,V?THROUGH \?CCL19
|
||||
EQUAL? GL-PLACE-CUR,RM-LAIR \FALSE
|
||||
CALL2 RT-DO-WALK,P?OUT
|
||||
RSTACK
|
||||
?CCL19: EQUAL? GL-PRSA,V?UNLOCK \?CCL24
|
||||
EQUAL? GL-PRSI,TH-LAIR-KEY \?CCL24
|
||||
FSET? LG-LAIR-DOOR,FL-LOCKED \?CCL24
|
||||
FCLEAR LG-LAIR-DOOR,FL-LOCKED
|
||||
ICALL RT-CYOU-MSG,STR?821,STR?822
|
||||
ICALL2 RT-THEO-PRINT,LG-LAIR-DOOR
|
||||
PRINTR "."
|
||||
?CCL24: EQUAL? GL-PRSA,V?LOCK \FALSE
|
||||
EQUAL? GL-PRSI,TH-LAIR-KEY \FALSE
|
||||
FSET? LG-LAIR-DOOR,FL-OPENED /FALSE
|
||||
FSET? LG-LAIR-DOOR,FL-LOCKED /FALSE
|
||||
FSET LG-LAIR-DOOR,FL-LOCKED
|
||||
ICALL RT-CYOU-MSG,STR?808,STR?809
|
||||
ICALL2 RT-THEO-PRINT,LG-LAIR-DOOR
|
||||
PRINTR "."
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-JERICHO-PARLOUR-DOOR
|
||||
EQUAL? GL-PRSA,V?ENTER,V?THROUGH \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-SOUTH-AISLE \?CCL6
|
||||
CALL2 RT-DO-WALK,P?SOUTH
|
||||
RSTACK
|
||||
?CCL6: EQUAL? GL-PLACE-CUR,RM-JERICHO-PARLOUR \FALSE
|
||||
CALL2 RT-DO-WALK,P?NORTH
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-SHOPS,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
PRINTR "The shops are closed for the Jubilee."
|
||||
?CCL3: EQUAL? GL-PRSA,V?LOOK-INSIDE,V?SEARCH \FALSE
|
||||
PRINTR "The shops are all closed for the Jubilee."
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-WATER,CONTEXT,CLASS,CAP?
|
||||
EQUAL? CONTEXT,K-M-SDESC \?CCL3
|
||||
EQUAL? CLASS,K-DESC-A \?CCL6
|
||||
PUSH TRUE-VALUE
|
||||
JUMP ?CND4
|
||||
?CCL6: PUSH FALSE-VALUE
|
||||
?CND4: ICALL PRINT-SDESC,STR?823,CLASS,STACK,FALSE-VALUE
|
||||
RTRUE
|
||||
?CCL3: ZERO? CONTEXT \FALSE
|
||||
ZERO? GL-NOW-PRSI? \?CCL10
|
||||
EQUAL? GL-PRSA,V?ENTER,V?LEAP \?CCL13
|
||||
EQUAL? GL-WINNER,CH-PLAYER \?CCL16
|
||||
PRINTR "You may not remember this, but you can't swim."
|
||||
?CCL16: PRINTR "That's not very polite."
|
||||
?CCL13: EQUAL? GL-PRSA,V?DRINK \?CCL18
|
||||
PRINT K-YUCK-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL18: EQUAL? GL-PRSA,V?EXAMINE \?CCL20
|
||||
PRINTR "The water is black, oily, slimy, dirty, and otherwise unwholesome-looking."
|
||||
?CCL20: EQUAL? GL-PRSA,V?LOOK-INSIDE,V?SEARCH \?CCL22
|
||||
PRINTR "The water is so black and oily that you can't see a thing."
|
||||
?CCL22: EQUAL? GL-PRSA,V?REACH-IN,V?SEARCH \?CCL24
|
||||
PRINTR "Slimy things brush up against your hand, so you quickly pull it back."
|
||||
?CCL24: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
CALL1 RT-WASTE-OF-BULLETS-MSG
|
||||
RSTACK
|
||||
?CCL10: ZERO? GL-NOW-PRSI? /FALSE
|
||||
EQUAL? GL-PRSA,V?PUT,V?PUT-ON \FALSE
|
||||
FSET? GL-PRSO,FL-BODYPART /?CTR33
|
||||
EQUAL? GL-PRSO,CH-ME,CH-PLAYER \?CCL34
|
||||
?CTR33: PRINT K-YUCK-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL34: EQUAL? GL-PRSO,TH-ANCHOR,PSEUDO-OBJECT /?CTR38
|
||||
LOC GL-PRSO
|
||||
EQUAL? STACK,GLOBAL-OBJECTS,LOCAL-GLOBALS \?CCL39
|
||||
?CTR38: ICALL RT-PERFORM,V?DROP,GL-PRSO
|
||||
RTRUE
|
||||
?CCL39: EQUAL? GL-PRSO,CH-TRAINED-PIGEON \?CCL43
|
||||
REMOVE GL-PRSO
|
||||
ICALL1 RT-KILL-PIGEON
|
||||
PRINTI "The pigeon struggles briefly, its feathers too wet to fly, then sinks below the water."
|
||||
RTRUE
|
||||
?CCL43: REMOVE GL-PRSO
|
||||
FCLEAR GL-PRSO,FL-WORN
|
||||
PRINTR "Plop."
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-UP-DOWN-STREAM,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-SDESC \?CCL3
|
||||
GETP LG-UP-DOWN-STREAM,P?OBJ-NOUN
|
||||
PRINTB STACK
|
||||
RTRUE
|
||||
?CCL3: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
ICALL1 RT-IMPOSSIBLE-MSG
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-BRITISH-MUSEUM-DOOR
|
||||
EQUAL? GL-PRSA,V?ENTER,V?THROUGH \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-GREAT-RUSSELL-ST \?CCL6
|
||||
CALL2 RT-DO-WALK,P?NORTH
|
||||
RSTACK
|
||||
?CCL6: EQUAL? GL-PLACE-CUR,RM-BRITISH-MUSEUM \FALSE
|
||||
CALL2 RT-DO-WALK,P?SOUTH
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-WESTMINSTER-DOOR
|
||||
EQUAL? GL-PRSA,V?ENTER,V?THROUGH \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-BROAD-SANCTUARY \?CCL6
|
||||
CALL2 RT-DO-WALK,P?EAST
|
||||
RSTACK
|
||||
?CCL6: EQUAL? GL-PLACE-CUR,RM-NAVE \FALSE
|
||||
CALL2 RT-DO-WALK,P?WEST
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-PLAQUES,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
PRINTR "It looks mighty like a plaque."
|
||||
?CCL3: EQUAL? GL-PRSA,V?TAKE \?CCL5
|
||||
PRINTI "The plaque is firmly attached to the "
|
||||
EQUAL? GL-PLACE-CUR,RM-MANUSCRIPT-ROOM \?CCL8
|
||||
PRINTI "desk"
|
||||
JUMP ?CND6
|
||||
?CCL8: PRINTI "wall"
|
||||
?CND6: PRINTR ". You can't remove it."
|
||||
?CCL5: EQUAL? GL-PRSA,V?READ,V?EXAMINE \?CCL10
|
||||
EQUAL? GL-PLACE-CUR,RM-BROAD-SANCTUARY \?CCL13
|
||||
SET 'GL-WINDOW,PT?307
|
||||
JUMP ?CND11
|
||||
?CCL13: EQUAL? GL-PLACE-CUR,RM-MANUSCRIPT-ROOM \?CCL15
|
||||
SET 'GL-WINDOW,PT?407
|
||||
JUMP ?CND11
|
||||
?CCL15: EQUAL? GL-PLACE-CUR,RM-MADAME-TUSSAUDS \?CCL17
|
||||
SET 'GL-WINDOW,PT?507
|
||||
JUMP ?CND11
|
||||
?CCL17: EQUAL? GL-PLACE-CUR,RM-GREAT-RUSSELL-ST \?CCL19
|
||||
SET 'GL-WINDOW,PT?607
|
||||
JUMP ?CND11
|
||||
?CCL19: EQUAL? GL-PLACE-CUR,RM-MONUMENT \?CCL21
|
||||
SET 'GL-WINDOW,PT?707
|
||||
JUMP ?CND11
|
||||
?CCL21: EQUAL? GL-PLACE-CUR,RM-THE-BLACK-MUSEUM \?CCL23
|
||||
SET 'GL-WINDOW,PT?807
|
||||
JUMP ?CND11
|
||||
?CCL23: EQUAL? GL-PLACE-CUR,RM-THREADNEEDLE-ST \?CCL25
|
||||
SET 'GL-WINDOW,PT?907
|
||||
JUMP ?CND11
|
||||
?CCL25: EQUAL? GL-PLACE-CUR,RM-TOWER-ENTRANCE \?CCL27
|
||||
SET 'GL-WINDOW,PT?1007
|
||||
JUMP ?CND11
|
||||
?CCL27: EQUAL? GL-PLACE-CUR,RM-TRAFALGAR-SQUARE \?CCL29
|
||||
SET 'GL-WINDOW,PT?1107
|
||||
JUMP ?CND11
|
||||
?CCL29: EQUAL? GL-PLACE-CUR,RM-VICTORIA-STREET \?CCL31
|
||||
SET 'GL-WINDOW,PT?1207
|
||||
JUMP ?CND11
|
||||
?CCL31: EQUAL? GL-PLACE-CUR,RM-SWAN-LANE \?CCL33
|
||||
SET 'GL-WINDOW,PT?1307
|
||||
JUMP ?CND11
|
||||
?CCL33: EQUAL? GL-PLACE-CUR,RM-JERUSALEM-CHAMBER \?CCL35
|
||||
SET 'GL-WINDOW,PT?1407
|
||||
JUMP ?CND11
|
||||
?CCL35: SET 'GL-WINDOW,PT?1607
|
||||
?CND11: ICALL2 RT-WINDOW,GL-WINDOW
|
||||
SET 'GL-WINDOW,FALSE-VALUE
|
||||
RTRUE
|
||||
?CCL10: EQUAL? GL-PRSA,V?PUT,V?PUT-ON \FALSE
|
||||
ZERO? GL-NOW-PRSI? /FALSE
|
||||
PRINTI "Putting anything on "
|
||||
ICALL2 RT-THEO-PRINT,LG-PLAQUES
|
||||
PRINTI " would"
|
||||
CALL1 RT-WASTE-OF-TIME-MSG
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-DF-LG-WAX-STATUES,CONTEXT,CLASS
|
||||
EQUAL? CONTEXT,K-M-SDESC \?CCL3
|
||||
ICALL PRINT-SDESC,STR?824,CLASS,FALSE-VALUE,TRUE-VALUE
|
||||
RTRUE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-DESCFCN \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-MADAME-TUSSAUDS \?CCL8
|
||||
PRINTR "The statues are of King John, Sir Francis Drake, Sir Walter Raleigh, and William the Conqueror."
|
||||
?CCL8: EQUAL? GL-PLACE-CUR,RM-CHAMBER-OF-HORRORS \FALSE
|
||||
PRINTR "The statues are of Guy Fawkes, Charles I, and Saint Thomas Becket."
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-WINDOW,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
EQUAL? GL-PLACE-CUR,RM-221B-BAKER-ST \?CCL6
|
||||
PRINTR "It is a bow window, far above your head."
|
||||
?CCL6: EQUAL? GL-PLACE-CUR,RM-SOUTH-TRANSEPT \?CCL8
|
||||
PRINTI "It is the largest rose window in all England"
|
||||
CALL1 RT-TIME-OF-DAY
|
||||
EQUAL? STACK,1,2,3 \?CND9
|
||||
PRINT K-BRIGHTENS-UP-MSG
|
||||
?CND9: PRINTR "."
|
||||
?CCL8: EQUAL? GL-PLACE-CUR,RM-NORTH-TRANSEPT \FALSE
|
||||
PRINTI "It is set high in the north wall of the Abbey"
|
||||
CALL1 RT-TIME-OF-DAY
|
||||
EQUAL? STACK,1,2,3 \?CND13
|
||||
PRINT K-BRIGHTENS-UP-MSG
|
||||
?CND13: PRINTR "."
|
||||
?CCL3: EQUAL? GL-PRSA,V?SHOOT \?CCL16
|
||||
ZERO? GL-NOW-PRSI? \?CCL16
|
||||
CALL1 RT-WASTE-OF-BULLETS-MSG
|
||||
RSTACK
|
||||
?CCL16: IN? GL-WINNER,RM-SOUTH-TRANSEPT /?CTR19
|
||||
IN? GL-WINNER,RM-NORTH-TRANSEPT \?CCL20
|
||||
?CTR19: EQUAL? GL-PRSA,V?LOOK-INSIDE,V?SEARCH,V?LOOK-OUTSIDE \?CCL25
|
||||
PRINTR "You cannot see through the stained-glass window."
|
||||
?CCL25: CALL1 RT-TOUCH-VERB?
|
||||
ZERO? STACK /FALSE
|
||||
ICALL2 RT-CTHEO-PRINT,LG-WINDOW
|
||||
PRINTR " is too high."
|
||||
?CCL20: IN? GL-WINNER,RM-221B-BAKER-ST \?CCL29
|
||||
CALL1 RT-TOUCH-VERB?
|
||||
ZERO? STACK /?CCL32
|
||||
ICALL2 RT-CTHEO-PRINT,LG-WINDOW
|
||||
PRINTR " is too high."
|
||||
?CCL32: EQUAL? GL-PRSA,V?LOOK-INSIDE,V?LOOK-OUTSIDE,V?SEARCH \FALSE
|
||||
ICALL2 RT-CTHEO-PRINT,LG-WINDOW
|
||||
PRINTR " is too high to see in."
|
||||
?CCL29: IN? GL-WINNER,RM-HOLMES-STUDY \FALSE
|
||||
EQUAL? GL-PRSA,V?LOOK-INSIDE,V?LOOK-OUTSIDE,V?SEARCH \?CCL39
|
||||
PRINTI "You look down into Baker Street."
|
||||
CRLF
|
||||
CALL2 RT-DESCRIBE-PLACE-CONTENTS,RM-221B-BAKER-ST
|
||||
RSTACK
|
||||
?CCL39: EQUAL? GL-PRSA,V?MUNG \?CCL41
|
||||
ICALL2 RT-CTHEO-PRINT,LG-WINDOW
|
||||
PRINTR " is made of reinforced glass. It can't be broken."
|
||||
?CCL41: EQUAL? GL-PRSA,V?OPEN \FALSE
|
||||
ICALL2 RT-CTHEO-PRINT,LG-WINDOW
|
||||
PRINTR " is jammed shut. It can't be opened."
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-TOMBS-ABBEY,CONTEXT
|
||||
GETP LG-TOMBS-ABBEY,P?OBJ-NOUN
|
||||
EQUAL? STACK,W?ABBEY \?CCL3
|
||||
EQUAL? CONTEXT,K-M-SDESC \?CCL6
|
||||
PRINTI "Abbey"
|
||||
RTRUE
|
||||
?CCL6: ZERO? CONTEXT \FALSE
|
||||
EQUAL? GL-PRSA,V?ENTER \?CCL10
|
||||
EQUAL? GL-PLACE-CUR,RM-NAVE \?CCL13
|
||||
CALL1 RT-ALREADY-IN-ROOM-MSG
|
||||
RSTACK
|
||||
?CCL13: EQUAL? GL-PLACE-CUR,RM-BROAD-SANCTUARY \FALSE
|
||||
CALL2 RT-DO-WALK,P?EAST
|
||||
RSTACK
|
||||
?CCL10: EQUAL? GL-PRSA,V?EXIT \?CCL17
|
||||
EQUAL? GL-PLACE-CUR,RM-NAVE \?CCL20
|
||||
CALL2 RT-DO-WALK,P?WEST
|
||||
RSTACK
|
||||
?CCL20: CALL1 RT-NOT-IN-ROOM-MSG
|
||||
RSTACK
|
||||
?CCL17: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
CALL1 RT-IMPOSSIBLE-MSG
|
||||
RSTACK
|
||||
?CCL3: EQUAL? CONTEXT,K-M-SDESC \?CCL25
|
||||
PRINTI "tombs"
|
||||
RTRUE
|
||||
?CCL25: FSET? GL-PLACE-CUR,FL-INDOORS \?CTR26
|
||||
EQUAL? GL-PLACE-CUR,RM-JERICHO-PARLOUR,RM-JERUSALEM-CHAMBER,RM-NORTH-CLOISTER \?CCL27
|
||||
?CTR26: ICALL2 RT-CANT-SEE-ANY-MSG,LG-TOMBS-ABBEY
|
||||
RTRUE
|
||||
?CCL27: EQUAL? CONTEXT,K-M-DESCFCN \?CCL31
|
||||
EQUAL? GL-PLACE-CUR,RM-SOUTH-AMBULATORY,RM-NORTH-AMBULATORY \?CCL34
|
||||
PRINTR "There are so many of them! None stands out in particular."
|
||||
?CCL34: EQUAL? GL-PLACE-CUR,RM-CONFESSOR-CHAPEL \?CCL36
|
||||
PRINTR "Two of them are especially interesting. One is the tomb of Edward the Confessor. The other is of Henry V."
|
||||
?CCL36: PRINTR "One tomb in particular catches your eye."
|
||||
?CCL31: ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
CALL1 RT-SHOOT-DEAD-MSG
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-STREETLIGHT
|
||||
CALL1 RT-TOUCH-VERB?
|
||||
ZERO? STACK /?CCL3
|
||||
ICALL2 RT-CTHEO-PRINT,LG-STREETLIGHT
|
||||
PRINTR " is too high."
|
||||
?CCL3: ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
CALL1 RT-WASTE-OF-BULLETS-MSG
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-STAIRWAY
|
||||
EQUAL? GL-PRSA,V?CLIMB-UP \?CCL3
|
||||
CALL2 RT-DO-WALK,P?UP
|
||||
RSTACK
|
||||
?CCL3: EQUAL? GL-PRSA,V?CLIMB-DOWN \FALSE
|
||||
CALL2 RT-DO-WALK,P?DOWN
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-SHAFT-OF-LIGHT,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
PRINTR "Well, it's not really a shaft of light. It's more like a diffused murkiness. But any light that penetrates an English church from the outside counts as a shaft."
|
||||
?CCL3: ZERO? GL-NOW-PRSI? \?CCL5
|
||||
EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
CALL1 RT-WASTE-OF-BULLETS-MSG
|
||||
RSTACK
|
||||
?CCL5: ZERO? GL-NOW-PRSI? /FALSE
|
||||
EQUAL? GL-PRSA,V?PUT \FALSE
|
||||
EQUAL? GL-PRSO,TH-MAGNIFYING-GLASS \?CCL16
|
||||
CALL1 RT-WHO-SAYS?
|
||||
EQUAL? STACK,CH-HOLMES \?CCL19
|
||||
PRINTR """Your Afghan experience is showing, Watson. The hot sun there would surely produce rays capable, when focused, of producing a flame. Alas, our English sun is too weak to produce such an effect."""
|
||||
?CCL19: PRINTR "The rays from England's sun are too weak to focus."
|
||||
?CCL16: EQUAL? GL-PRSO,TH-GREEN-PAPER,TH-WHITE-PAPER,TH-BLUE-PAPER /FALSE
|
||||
EQUAL? GL-PRSO,TH-ORANGE-PAPER,TH-YELLOW-PAPER,TH-BROWN-PAPER /FALSE
|
||||
PRINTI "Putting "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTI " in "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
CALL1 RT-WASTE-OF-TIME-MSG
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-RAVENS,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||||
PRINTR "The ravens stare at you with baleful eyes."
|
||||
?CCL3: EQUAL? CONTEXT,K-M-WINNER \?CCL5
|
||||
ICALL2 RT-CTHEO-PRINT,LG-RAVENS
|
||||
PRINTR " caw raucously in response."
|
||||
?CCL5: ZERO? GL-NOW-PRSI? \FALSE
|
||||
EQUAL? GL-PRSA,V?TAKE \?CCL10
|
||||
ICALL2 RT-CTHEO-PRINT,LG-RAVENS
|
||||
PRINTR " fly out of reach."
|
||||
?CCL10: EQUAL? GL-PRSA,V?SHOOT \?CCL12
|
||||
ICALL RT-SHOOT-BIRDS,LG-RAVENS,STR?825
|
||||
RTRUE
|
||||
?CCL12: EQUAL? GL-PRSA,V?LISTEN \FALSE
|
||||
PRINTR "None of the ravens is quothing ""Nevermore."""
|
||||
|
||||
|
||||
.FUNCT RT-DF-LG-BOATS,CONTEXT
|
||||
EQUAL? CONTEXT,K-M-DESCFCN \FALSE
|
||||
CALL1 RT-TIME-OF-DAY
|
||||
ZERO? STACK \?CCL5
|
||||
ICALL2 RT-CTHEO-PRINT,LG-BOATS
|
||||
PRINTR " are shrouded in fog."
|
||||
?CCL5: ICALL2 RT-CTHEO-PRINT,LG-BOATS
|
||||
PRINTR " bob merrily on the river."
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-HOLMES-HOUSE
|
||||
EQUAL? GL-PRSA,V?ENTER \?CCL3
|
||||
EQUAL? GL-PLACE-CUR,RM-ENTRY-HALL,RM-PARLOUR,RM-VESTIBULE /?CTR5
|
||||
EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY,RM-HOLMES-BEDROOM \?CCL6
|
||||
?CTR5: ICALL1 RT-ALREADY-IN-ROOM-MSG
|
||||
RTRUE
|
||||
?CCL6: EQUAL? GL-PLACE-CUR,RM-221B-BAKER-ST \FALSE
|
||||
ICALL2 RT-DO-WALK,P?WEST
|
||||
RTRUE
|
||||
?CCL3: EQUAL? GL-PRSA,V?EXIT \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-ENTRY-HALL \?CCL15
|
||||
ICALL2 RT-DO-WALK,P?EAST
|
||||
RTRUE
|
||||
?CCL15: EQUAL? GL-PLACE-CUR,RM-PARLOUR,RM-VESTIBULE,RM-HOLMES-STUDY /?CTR16
|
||||
EQUAL? GL-PLACE-CUR,RM-HOLMES-BEDROOM \?CCL17
|
||||
?CTR16: PRINT K-SPECIFY-DIR-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL17: ICALL1 RT-NOT-IN-ROOM-MSG
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-PEDESTAL,CONTEXT,CLASS
|
||||
EQUAL? CONTEXT,K-M-SDESC \?CCL3
|
||||
ICALL PRINT-SDESC,STR?826,CLASS,FALSE-VALUE,FALSE-VALUE
|
||||
RTRUE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-DESCFCN \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-TRAFALGAR-SQUARE \FALSE
|
||||
PRINTR "On the pedestal you see a bronze relief."
|
||||
|
||||
|
||||
.FUNCT RT-AC-LG-TOWER
|
||||
EQUAL? GL-PRSA,V?ENTER \?CCL3
|
||||
EQUAL? GL-PLACE-CUR,RM-BYWARD-TOWER,RM-BLOODY-TOWER,RM-WAKEFIELD-TOWER /?CTR5
|
||||
EQUAL? GL-PLACE-CUR,RM-JEWEL-ROOM,RM-DUNGEON,RM-TORTURE-ROOM /?CTR5
|
||||
EQUAL? GL-PLACE-CUR,RM-WHITE-TOWER,RM-BOWYER-TOWER \?CCL6
|
||||
?CTR5: CALL1 RT-ALREADY-IN-ROOM-MSG
|
||||
RSTACK
|
||||
?CCL6: EQUAL? GL-PLACE-CUR,RM-OUTER-WARD,RM-TOWER-GREEN \?CCL11
|
||||
PRINT K-SPECIFY-DIR-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL11: EQUAL? GL-PLACE-CUR,RM-OUTSIDE-TRAITORS-GATE \?CCL13
|
||||
CALL2 RT-DO-WALK,P?NORTH
|
||||
RSTACK
|
||||
?CCL13: EQUAL? GL-PLACE-CUR,RM-DRAWBRIDGE,RM-TOWER-ENTRANCE \FALSE
|
||||
CALL2 RT-DO-WALK,P?EAST
|
||||
RSTACK
|
||||
?CCL3: EQUAL? GL-PRSA,V?EXIT \?CCL17
|
||||
EQUAL? GL-PLACE-CUR,RM-BLOODY-TOWER,RM-WAKEFIELD-TOWER,RM-WHITE-TOWER /?CTR19
|
||||
EQUAL? GL-PLACE-CUR,RM-BOWYER-TOWER,RM-BYWARD-TOWER \?CCL20
|
||||
?CTR19: CALL2 RT-DO-WALK,P?OUT
|
||||
RSTACK
|
||||
?CCL20: EQUAL? GL-PLACE-CUR,RM-DUNGEON,RM-TORTURE-ROOM \?CCL24
|
||||
CALL2 RT-DO-WALK,P?UP
|
||||
RSTACK
|
||||
?CCL24: EQUAL? GL-PLACE-CUR,RM-JEWEL-ROOM \?CCL26
|
||||
CALL2 RT-DO-WALK,P?DOWN
|
||||
RSTACK
|
||||
?CCL26: EQUAL? GL-PLACE-CUR,RM-INSIDE-TRAITORS-GATE \?CCL28
|
||||
CALL2 RT-DO-WALK,P?SOUTH
|
||||
RSTACK
|
||||
?CCL28: EQUAL? GL-PLACE-CUR,RM-OUTER-WARD,RM-TOWER-GREEN \?CCL30
|
||||
PRINT K-SPECIFY-DIR-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL30: CALL1 RT-NOT-IN-ROOM-MSG
|
||||
RSTACK
|
||||
?CCL17: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
CALL1 RT-IMPOSSIBLE-MSG
|
||||
RSTACK
|
||||
|
||||
.ENDI
|
691
locals.zil
Normal file
691
locals.zil
Normal file
|
@ -0,0 +1,691 @@
|
|||
;******************************************************************************
|
||||
; "game : SHERLOCK!"
|
||||
; "file : LOCALS.ZIL"
|
||||
; "auth : $Author: DEB $"
|
||||
; "date : $Date: 26 Oct 1987 7:15:02 $"
|
||||
; "rev : $Revision: 1.51 $"
|
||||
; "vers : 1.00"
|
||||
;******************************************************************************
|
||||
|
||||
<OBJECT LG-BAKER-ST-DOOR
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "front door")
|
||||
(FLAGS FL-DOOR FL-OPENABLE FL-LOCKED)
|
||||
(SYNONYM DOOR)
|
||||
(ADJECTIVE FRONT HOLMES\' HOLMES\'S SHERLOCK)
|
||||
(GENERIC RT-GN-DOOR)
|
||||
(ACTION RT-AC-LG-BAKER-ST-DOOR)>
|
||||
|
||||
<OBJECT LG-PARLOUR-DOOR
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "parlour door")
|
||||
(FLAGS FL-DOOR FL-OPENABLE)
|
||||
(SYNONYM DOOR)
|
||||
(ADJECTIVE PARLOUR PARLOR)
|
||||
(GENERIC RT-GN-DOOR)
|
||||
(ACTION RT-AC-LG-PARLOUR-DOOR)>
|
||||
|
||||
<OBJECT LG-HOLMES-STUDY-DOOR
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "study door")
|
||||
(FLAGS FL-DOOR FL-OPENABLE FL-OPENED)
|
||||
(SYNONYM DOOR)
|
||||
(ADJECTIVE STUDY HOLMES\'S HOLMES\' SHERLOCK)
|
||||
(GENERIC RT-GN-DOOR)
|
||||
(ACTION RT-AC-LG-HOLMES-STUDY-DOOR)>
|
||||
|
||||
<OBJECT LG-HOLMES-BEDROOM-DOOR
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "bedroom door")
|
||||
(FLAGS FL-DOOR FL-OPENABLE FL-LOCKED)
|
||||
(SYNONYM DOOR)
|
||||
(ADJECTIVE BEDROOM HOLMES\'S HOLMES\' SHERLOCK)
|
||||
(GENERIC RT-GN-DOOR)
|
||||
(ACTION RT-AC-LG-HOLMES-BEDROOM-DOOR)>
|
||||
|
||||
<OBJECT LG-BANK-VAULT-DOOR
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "vault door")
|
||||
(FLAGS FL-DOOR FL-OPENABLE FL-LOCKED FL-HAS-DESCFCN)
|
||||
(SYNONYM DOOR)
|
||||
(ADJECTIVE VAULT)
|
||||
(VALUE 3)
|
||||
(GENERIC RT-GN-DOOR)
|
||||
(ACTION RT-AC-LG-BANK-VAULT-DOOR)>
|
||||
|
||||
<OBJECT LG-BAR-OF-GOLD-DOOR
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "door")
|
||||
(FLAGS FL-DOOR FL-OPENABLE FL-OPENED)
|
||||
(SYNONYM DOOR)
|
||||
(GENERIC RT-GN-DOOR)
|
||||
(ACTION RT-AC-LG-BAR-OF-GOLD-DOOR)>
|
||||
|
||||
<OBJECT LG-LAIR-DOOR
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "door")
|
||||
(FLAGS FL-DOOR FL-OPENABLE FL-LOCKED)
|
||||
(SYNONYM DOOR)
|
||||
(GENERIC RT-GN-DOOR)
|
||||
(ACTION RT-AC-LG-LAIR-DOOR)>
|
||||
|
||||
<OBJECT LG-JERICHO-PARLOUR-DOOR
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "door to the Jericho Parlour")
|
||||
(FLAGS FL-DOOR FL-OPENABLE)
|
||||
(SYNONYM DOOR)
|
||||
(ADJECTIVE JERICHO PARLOUR PARLOR)
|
||||
(GENERIC RT-GN-DOOR)
|
||||
(ACTION RT-AC-LG-JERICHO-PARLOUR-DOOR)>
|
||||
|
||||
<OBJECT LG-BRITISH-MUSEUM-DOOR
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "door")
|
||||
(FLAGS FL-DOOR FL-LOCKED FL-OPENABLE)
|
||||
(SYNONYM DOOR)
|
||||
(GENERIC RT-GN-DOOR)
|
||||
(ACTION RT-AC-LG-BRITISH-MUSEUM-DOOR)>
|
||||
|
||||
<OBJECT LG-WESTMINSTER-DOOR
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "Abbey door")
|
||||
(FLAGS FL-DOOR FL-LOCKED FL-OPENABLE)
|
||||
(SYNONYM DOOR)
|
||||
(GENERIC RT-GN-DOOR)
|
||||
(ACTION RT-AC-LG-WESTMINSTER-DOOR)>
|
||||
|
||||
<OBJECT LG-SHOPS
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "shops")
|
||||
(FLAGS FL-PLURAL FL-HAS-DESCFCN)
|
||||
(SYNONYM SHOPS STORES EMPORIUMS WINDOWS WINDOW SHOP STORE)
|
||||
(ACTION RT-AC-LG-SHOPS)>
|
||||
|
||||
<OBJECT LG-WATER
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(FLAGS FL-NODESC FL-CONTAINER FL-OPENED FL-SURFACE FL-HAS-SDESC
|
||||
FL-NOARTC)
|
||||
(SYNONYM WATER RIVER THAMES)
|
||||
(SIZE 0 CAPACITY 100)
|
||||
(ACTION RT-AC-LG-WATER)>
|
||||
|
||||
<OBJECT LG-UP-DOWN-STREAM
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(FLAGS FL-NODESC FL-HAS-SDESC FL-NEEDS-IDENTITY)
|
||||
(OBJ-NOUN 0)
|
||||
(OBJ-ADJ 0)
|
||||
(SYNONYM UPSTREAM DOWNSTREAM)
|
||||
(ACTION RT-AC-LG-UP-DOWN-STREAM)>
|
||||
|
||||
<OBJECT LG-PLAQUES
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "sign")
|
||||
(FLAGS FL-TRYTAKE FL-NOALL FL-SURFACE FL-HAS-DESCFCN)
|
||||
(SYNONYM PLAQUE PLATE SIGN RELIEF)
|
||||
(SIZE 0 CAPACITY 999)
|
||||
(ACTION RT-AC-LG-PLAQUES)>
|
||||
|
||||
<OBJECT LG-WINDOW
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "window")
|
||||
(FLAGS FL-TRYTAKE FL-NOALL FL-HAS-DESCFCN FL-OPENABLE FL-TRANSPARENT)
|
||||
(SYNONYM WINDOW)
|
||||
(ADJECTIVE BOW)
|
||||
(ACTION RT-AC-LG-WINDOW)>
|
||||
|
||||
<OBJECT LG-TOMBS-ABBEY
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(FLAGS FL-TRYTAKE FL-PLURAL FL-NOALL FL-HAS-DESCFCN
|
||||
FL-HAS-SDESC FL-NEEDS-IDENTITY)
|
||||
(OBJ-ADJ 0)
|
||||
(OBJ-NOUN 0)
|
||||
(ADJECTIVE WESTMINSTER)
|
||||
(SYNONYM TOMBS SCULPTURES STATUES TOMB ABBEY)
|
||||
(ACTION RT-AC-LG-TOMBS-ABBEY)>
|
||||
|
||||
<OBJECT LG-STREETLIGHT
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "streetlight")
|
||||
(FLAGS FL-TRYTAKE FL-NOALL FL-TRANSPARENT)
|
||||
(SYNONYM LIGHT LAMP STREETLIGHT STREETLAMP STREET-LIGHT GASLIGHT GAS-LIGHT)
|
||||
(ADJECTIVE GAS)
|
||||
(ACTION RT-AC-LG-STREETLIGHT)>
|
||||
|
||||
<OBJECT LG-STAIRWAY
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "stairway")
|
||||
(FLAGS FL-TRYTAKE FL-NOALL)
|
||||
(SYNONYM STAIRWAY STAIR STAIRS STEP STEPS)
|
||||
(ACTION RT-AC-LG-STAIRWAY)>
|
||||
|
||||
<OBJECT LG-SHAFT-OF-LIGHT
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "shaft of light")
|
||||
(FLAGS FL-NODESC FL-HAS-DESCFCN)
|
||||
(SYNONYM SHAFT LIGHT SUNLIGHT)
|
||||
(ADJECTIVE SHAFT LIGHT SUNLIGHT)
|
||||
(ACTION RT-AC-LG-SHAFT-OF-LIGHT)>
|
||||
|
||||
<OBJECT LG-MARBLE
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "marble")
|
||||
(FLAGS FL-NODESC)
|
||||
(SYNONYM MARBLE)>
|
||||
|
||||
<OBJECT LG-COLUMNS
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "columns")
|
||||
(FLAGS FL-TRYTAKE FL-PLURAL FL-NOALL)
|
||||
(SYNONYM COLUMNS COLUMN)
|
||||
(ADJECTIVE PURBECK)>
|
||||
|
||||
<OBJECT LG-RAVENS
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "ravens")
|
||||
(FLAGS FL-NODESC FL-PLURAL FL-ALIVE FL-TRYTAKE FL-HAS-DESCFCN)
|
||||
(SYNONYM RAVENS BIRDS ROOKS RAVEN ROOK BIRD)
|
||||
(ADJECTIVE FLOCK GROUP BUNCH GAGGLE)
|
||||
(SIZE 50 MASS 250)
|
||||
(ACTION RT-AC-LG-RAVENS)>
|
||||
|
||||
<OBJECT LG-BOATS
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "boats")
|
||||
(FLAGS FL-NODESC FL-HAS-DESCFCN)
|
||||
(SYNONYM BOATS SHIPS)
|
||||
(ADJECTIVE PLEASURE)
|
||||
(ACTION RT-DF-LG-BOATS)>
|
||||
|
||||
<OBJECT LG-TOWER
|
||||
(LOC LOCAL-GLOBALS)
|
||||
(DESC "Tower")
|
||||
(SYNONYM TOWER LONDON)
|
||||
(ADJECTIVE TOWER LONDON)
|
||||
(GENERIC RT-GN-TOWER)
|
||||
(ACTION RT-AC-LG-TOWER)>
|
||||
|
||||
<ROUTINE RT-AC-LG-BAKER-ST-DOOR ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-BAKER-ST-DOOR">>
|
||||
<COND (<MC-VERB? KNOCK>
|
||||
<COND (<MC-HERE? ,RM-ENTRY-HALL>
|
||||
<TELL "You are already inside." CR>)
|
||||
(<MC-IS? ,LG-BAKER-ST-DOOR ,FL-OPENED>
|
||||
<TELL "The door is already open." CR>)
|
||||
(<MC-IS? ,CH-HUDSON ,FL-ASLEEP>
|
||||
<TELL "There is no answer." CR>)
|
||||
(<MC-ISNOT? ,LG-BAKER-ST-DOOR ,FL-LOCKED>
|
||||
<MC-MAKE ,LG-BAKER-ST-DOOR ,FL-OPENED>
|
||||
<MOVE ,CH-HUDSON ,RM-ENTRY-HALL>
|
||||
<RT-THIS-IS-IT ,CH-HUDSON>
|
||||
<TELL
|
||||
"Mrs Hudson appears and says, \"Please come in Dr Watson.\" She
|
||||
steps back into the hall to allow room for you to pass." CR>)
|
||||
(T
|
||||
<MC-UNMAKE ,LG-BAKER-ST-DOOR ,FL-LOCKED>
|
||||
<SETG GL-PLACE-CUR ,RM-ENTRY-HALL>
|
||||
<MOVE ,CH-HUDSON ,GL-PLACE-CUR>
|
||||
<MOVE ,CH-PLAYER ,GL-PLACE-CUR>
|
||||
<RT-THIS-IS-IT ,CH-HUDSON>
|
||||
<TELL
|
||||
"You hear a bolt sliding back and the door opens to reveal a worried
|
||||
Mrs Hudson." CR CR
|
||||
|
||||
"\"Oh Doctor Watson, I'm so glad to see you. It's Mr
|
||||
Holmes, sir. Three days have come and gone since he's been out of his
|
||||
rooms. He won't eat and I know he hasn't slept. Now there's a visitor
|
||||
who says he's here about some important government business. I tried
|
||||
to send him away, but he insisted on waiting in the parlour. That's
|
||||
when I sent for you. Thank God you've come.\"" CR>
|
||||
<RT-EXEC-RM-DESCFCN ,RM-ENTRY-HALL ,K-M-DESC-1>
|
||||
<CRLF>)>)
|
||||
(<MC-VERB? KICK HIT MUNG>
|
||||
<COND (<MC-HERE? ,RM-ENTRY-HALL>
|
||||
<RFALSE>)
|
||||
(<MC-ISNOT? ,LG-BAKER-ST-DOOR ,FL-OPENED>
|
||||
<TELL
|
||||
"Mrs Hudson pokes her head out the door and says, \"I'm not opening the door
|
||||
until you knock like a proper gentleman.\" She slams the door in your
|
||||
face." CR>)>)
|
||||
(<MC-VERB? ENTER THROUGH>
|
||||
<COND (<MC-HERE? ,RM-221B-BAKER-ST>
|
||||
<RT-DO-WALK ,P?WEST>)
|
||||
(<MC-HERE? ,RM-ENTRY-HALL>
|
||||
<RT-DO-WALK ,P?EAST>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-PARLOUR-DOOR ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-PARLOUR-DOOR">>
|
||||
<COND (<MC-VERB? OPEN>
|
||||
<COND (<MC-IS? ,CH-HOLMES ,FL-ASLEEP>
|
||||
<TELL CTHE ,CH-HUDSON ,K-HUDSON-WORRIED-MSG CR>)>)
|
||||
(<MC-VERB? ENTER THROUGH>
|
||||
<COND (<MC-HERE? ,RM-PARLOUR>
|
||||
<RT-DO-WALK ,P?SOUTH>)
|
||||
(<MC-HERE? ,RM-ENTRY-HALL>
|
||||
<RT-DO-WALK ,P?NORTH>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-HOLMES-STUDY-DOOR ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-HOLMES-STUDY-DOOR">>
|
||||
<COND (<MC-VERB? ENTER THROUGH>
|
||||
<COND (<MC-HERE? ,RM-VESTIBULE>
|
||||
<RT-DO-WALK ,P?NORTH>)
|
||||
(<MC-HERE? ,RM-HOLMES-STUDY>
|
||||
<RT-DO-WALK ,P?SOUTH>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-HOLMES-BEDROOM-DOOR ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-HOLMES-BEDROOM-DOOR">>
|
||||
<COND (<MC-VERB? ENTER THROUGH>
|
||||
<COND (<MC-HERE? ,RM-HOLMES-STUDY>
|
||||
<RT-DO-WALK ,P?WEST>)
|
||||
(<MC-HERE? ,RM-HOLMES-BEDROOM>
|
||||
<RT-DO-WALK ,P?EAST>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-BAR-OF-GOLD-DOOR ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-BAR-OF-GOLD-DOOR">>
|
||||
<COND (<MC-VERB? ENTER THROUGH>
|
||||
<COND (<MC-HERE? ,RM-BAR-OF-GOLD>
|
||||
<RT-DO-WALK ,P?EAST>)
|
||||
(<MC-HERE? ,RM-SWAN-LANE>
|
||||
<RT-DO-WALK ,P?WEST>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-LAIR-DOOR ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-LAIR-DOOR">>
|
||||
<COND (<MC-THIS-PRSO?>
|
||||
<COND (<AND <MC-VERB? ENTER THROUGH OPEN CLOSE UNLOCK LOCK>
|
||||
<MC-ISNOT? ,CH-AKBAR ,FL-LOCKED>
|
||||
<MC-ISNOT? ,CH-AKBAR ,FL-ASLEEP>>
|
||||
<TELL "Akbar">
|
||||
<COND (<MC-IS? ,TH-WATSONS-HAT ,FL-WORN>
|
||||
<TELL " says, \"Forgive me, sir,\" and">)>
|
||||
<TELL " stops you as you move toward the door." CR>)
|
||||
(<AND <MC-VERB? OPEN>
|
||||
<MC-IS? ,CH-HOLMES ,FL-LOCKED>>
|
||||
<TELL
|
||||
"Holmes calls out, \"Watson! I'm still tied up!\" You pause and look back,
|
||||
torn by indecision." CR>)
|
||||
(<MC-VERB? ENTER THROUGH>
|
||||
<COND (<MC-HERE? ,RM-LAIR>
|
||||
<RT-DO-WALK ,P?OUT>)>)
|
||||
(<AND <MC-VERB? UNLOCK>
|
||||
<MC-PRSI? ,TH-LAIR-KEY>
|
||||
<MC-IS? ,LG-LAIR-DOOR ,FL-LOCKED>>
|
||||
<MC-UNMAKE ,LG-LAIR-DOOR ,FL-LOCKED>
|
||||
<RT-CYOU-MSG "unlock" "unlocks">
|
||||
<TELL THE ,LG-LAIR-DOOR "." CR>)
|
||||
(<AND <MC-VERB? LOCK>
|
||||
<MC-PRSI? ,TH-LAIR-KEY>
|
||||
<MC-ISNOT? ,LG-LAIR-DOOR ,FL-OPENED>
|
||||
<MC-ISNOT? ,LG-LAIR-DOOR ,FL-LOCKED>>
|
||||
<MC-MAKE ,LG-LAIR-DOOR ,FL-LOCKED>
|
||||
<RT-CYOU-MSG "lock" "locks">
|
||||
<TELL THE ,LG-LAIR-DOOR "." CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-JERICHO-PARLOUR-DOOR ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-JERICHO-PARLOUR-DOOR">>
|
||||
<COND (<MC-VERB? ENTER THROUGH>
|
||||
<COND (<MC-HERE? ,RM-SOUTH-AISLE>
|
||||
<RT-DO-WALK ,P?SOUTH>)
|
||||
(<MC-HERE? ,RM-JERICHO-PARLOUR>
|
||||
<RT-DO-WALK ,P?NORTH>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-SHOPS ("OPT" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-SHOPS">>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<TELL "The shops are closed for the Jubilee." CR>)
|
||||
(<MC-VERB? LOOK-INSIDE SEARCH>
|
||||
<TELL "The shops are all closed for the Jubilee." CR>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-WATER ("OPT" (CONTEXT <>) (CLASS <>) (CAP? <>))
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-WATER">>
|
||||
<COND (<==? .CONTEXT ,K-M-SDESC>
|
||||
<PRINT-SDESC "water" .CLASS
|
||||
<COND (<==? .CLASS ,K-DESC-A> T)
|
||||
(T <>)>
|
||||
<>>
|
||||
<RTRUE>)
|
||||
(<T? .CONTEXT> <RFALSE>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? ENTER LEAP>
|
||||
<COND (<EQUAL? ,GL-WINNER ,CH-PLAYER>
|
||||
<TELL "You may not remember this, but you can't swim." CR>)
|
||||
(T
|
||||
<TELL "That's not very polite." CR>)>)
|
||||
(<MC-VERB? DRINK>
|
||||
<TELL ,K-YUCK-MSG CR>)
|
||||
(<MC-VERB? EXAMINE>
|
||||
<TELL "The water is black, oily, slimy, dirty, and
|
||||
otherwise unwholesome-looking." CR>)
|
||||
(<MC-VERB? LOOK-INSIDE SEARCH>
|
||||
<TELL
|
||||
"The water is so black and oily that you can't see a thing." CR>)
|
||||
(<MC-VERB? REACH-IN SEARCH>
|
||||
<TELL
|
||||
"Slimy things brush up against your hand, so you quickly pull it back." CR>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<RT-WASTE-OF-BULLETS-MSG>)>)
|
||||
(<MC-THIS-PRSI?>
|
||||
<COND (<MC-VERB? PUT PUT-ON>
|
||||
<COND (<OR <MC-IS? ,GL-PRSO ,FL-BODYPART>
|
||||
<MC-PRSO? ,CH-ME ,CH-PLAYER>>
|
||||
<TELL ,K-YUCK-MSG CR>)
|
||||
(T
|
||||
<COND (<OR <MC-PRSO? ,TH-ANCHOR ,PSEUDO-OBJECT>
|
||||
<EQUAL? <LOC ,GL-PRSO>
|
||||
,GLOBAL-OBJECTS
|
||||
,LOCAL-GLOBALS>>
|
||||
<RT-PERFORM ,V?DROP ,GL-PRSO>
|
||||
<RTRUE>)
|
||||
(<MC-PRSO? ,CH-TRAINED-PIGEON>
|
||||
<REMOVE ,GL-PRSO>
|
||||
<RT-KILL-PIGEON>
|
||||
<TELL "The pigeon struggles briefly,
|
||||
its feathers too wet to fly, then sinks below the water.">
|
||||
<RTRUE>)
|
||||
(T
|
||||
<REMOVE ,GL-PRSO>
|
||||
<FCLEAR ,GL-PRSO ,FL-WORN>
|
||||
<TELL "Plop." CR>
|
||||
<RTRUE>)>)>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-UP-DOWN-STREAM ("OPT" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-UPSTREAM">>
|
||||
<COND (<==? .CONTEXT ,K-M-SDESC>
|
||||
<PRINTB <GETP ,LG-UP-DOWN-STREAM ,P?OBJ-NOUN>>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<RT-IMPOSSIBLE-MSG>
|
||||
<RTRUE>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-BRITISH-MUSEUM-DOOR ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-BRITISH-MUSEUM-DOOR">>
|
||||
<COND (<MC-VERB? ENTER THROUGH>
|
||||
<COND (<MC-HERE? ,RM-GREAT-RUSSELL-ST>
|
||||
<RT-DO-WALK ,P?NORTH>)
|
||||
(<MC-HERE? ,RM-BRITISH-MUSEUM>
|
||||
<RT-DO-WALK ,P?SOUTH>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-WESTMINSTER-DOOR ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-WESTMINSTER-DOOR">>
|
||||
<COND (<MC-VERB? ENTER THROUGH>
|
||||
<COND (<MC-HERE? ,RM-BROAD-SANCTUARY>
|
||||
<RT-DO-WALK ,P?EAST>)
|
||||
(<MC-HERE? ,RM-NAVE>
|
||||
<RT-DO-WALK ,P?WEST>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-PLAQUES ("OPT" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-PLAQUES">>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<TELL "It looks mighty like a plaque." CR>)
|
||||
(<MC-VERB? TAKE>
|
||||
<TELL "The plaque is firmly attached to the ">
|
||||
<COND (<EQUAL? ,GL-PLACE-CUR ,RM-MANUSCRIPT-ROOM>
|
||||
<TELL "desk">)
|
||||
(T
|
||||
<TELL "wall">)>
|
||||
<TELL ". You can't remove it." CR>)
|
||||
(<MC-VERB? READ EXAMINE>
|
||||
<COND (<EQUAL? ,GL-PLACE-CUR ,RM-BROAD-SANCTUARY>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-ABBEY>>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-MANUSCRIPT-ROOM>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-QUIET>>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-MADAME-TUSSAUDS>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-HORRORS>>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-GREAT-RUSSELL-ST>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-MUSEUM>>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-MONUMENT>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-MONUMENT>>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-THE-BLACK-MUSEUM>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-BLIGH>>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-THREADNEEDLE-ST>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-BANK>>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-TOWER-ENTRANCE>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-TOWER>>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-TRAFALGAR-SQUARE>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-NELSON>>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-VICTORIA-STREET>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-LOITER>>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-SWAN-LANE>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-GOLDBAR>>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-JERUSALEM-CHAMBER>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-HENRY>>)
|
||||
;(<EQUAL? ,GL-PLACE-CUR ,RM-BLIND-ALLEY>
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-HERRING>>)
|
||||
(T
|
||||
<SETG GL-WINDOW <GET ,GL-QUOTES ,K-SIGN-BLANK>>)>
|
||||
<RT-WINDOW ,GL-WINDOW>
|
||||
<SETG GL-WINDOW <>>
|
||||
<RTRUE>)
|
||||
(<AND <MC-VERB? PUT PUT-ON>
|
||||
<MC-THIS-PRSI?>>
|
||||
<TELL "Putting anything on " THE ,LG-PLAQUES " would">
|
||||
<RT-WASTE-OF-TIME-MSG>)>>
|
||||
|
||||
<ROUTINE RT-DF-LG-WAX-STATUES ("OPT" (CONTEXT <>) (CLASS <>))
|
||||
<DEBUGGING? <RT-DEBUG-LG-DF "LG-WAX-STATUES">>
|
||||
<COND (<==? .CONTEXT ,K-M-SDESC>
|
||||
<PRINT-SDESC "statues" .CLASS <> T>
|
||||
<RTRUE>)
|
||||
(<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<EQUAL? ,GL-PLACE-CUR ,RM-MADAME-TUSSAUDS>
|
||||
<TELL "The statues are of King John, Sir Francis Drake,
|
||||
Sir Walter Raleigh, and William the Conqueror." CR>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-CHAMBER-OF-HORRORS>
|
||||
<TELL "The statues are of Guy Fawkes, Charles I, and
|
||||
Saint Thomas Becket." CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-WINDOW ("OPT" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-WINDOW">>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND (<EQUAL? ,GL-PLACE-CUR ,RM-221B-BAKER-ST>
|
||||
<TELL "It is a bow window, far above your head." CR>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-SOUTH-TRANSEPT>
|
||||
<TELL "It is the largest rose window in all England">
|
||||
<COND (<EQUAL? <RT-TIME-OF-DAY> 1 2 3>
|
||||
<TELL ,K-BRIGHTENS-UP-MSG>)>
|
||||
<TELL "." CR>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-NORTH-TRANSEPT>
|
||||
<TELL "It is set high in the north wall of the Abbey">
|
||||
<COND (<EQUAL? <RT-TIME-OF-DAY> 1 2 3>
|
||||
<TELL ,K-BRIGHTENS-UP-MSG>)>
|
||||
<TELL "." CR>)>)
|
||||
(<AND <MC-VERB? SHOOT>
|
||||
<MC-THIS-PRSO?>>
|
||||
<RT-WASTE-OF-BULLETS-MSG>)
|
||||
(<OR <IN? ,GL-WINNER ,RM-SOUTH-TRANSEPT>
|
||||
<IN? ,GL-WINNER ,RM-NORTH-TRANSEPT>>
|
||||
<COND (<MC-VERB? LOOK-INSIDE SEARCH LOOK-OUTSIDE>
|
||||
<TELL "You cannot see through the stained-glass window." CR>)
|
||||
(<RT-TOUCH-VERB?>
|
||||
<TELL CTHE ,LG-WINDOW " is too high." CR>)>)
|
||||
(<IN? ,GL-WINNER ,RM-221B-BAKER-ST>
|
||||
<COND (<RT-TOUCH-VERB?>
|
||||
<TELL CTHE ,LG-WINDOW " is too high." CR>)
|
||||
(<MC-VERB? LOOK-INSIDE LOOK-OUTSIDE SEARCH>
|
||||
<TELL CTHE ,LG-WINDOW " is too high to see in." CR>)>)
|
||||
(<IN? ,GL-WINNER ,RM-HOLMES-STUDY>
|
||||
<COND (<MC-VERB? LOOK-INSIDE LOOK-OUTSIDE SEARCH>
|
||||
<TELL "You look down into Baker Street." CR>
|
||||
<RT-DESCRIBE-PLACE-CONTENTS ,RM-221B-BAKER-ST>)
|
||||
(<MC-VERB? MUNG>
|
||||
<TELL CTHE ,LG-WINDOW
|
||||
" is made of reinforced glass. It can't be broken." CR>)
|
||||
(<MC-VERB? OPEN>
|
||||
<TELL CTHE ,LG-WINDOW
|
||||
" is jammed shut. It can't be opened." CR>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-TOMBS-ABBEY ("OPT" (CONTEXT <>))
|
||||
<COND (<==? <GETP ,LG-TOMBS-ABBEY ,P?OBJ-NOUN> ,W?ABBEY>
|
||||
<COND (<==? .CONTEXT ,K-M-SDESC>
|
||||
<TELL "Abbey">)
|
||||
(<T? .CONTEXT> <RFALSE>)
|
||||
(<MC-VERB? ENTER>
|
||||
<COND (<MC-HERE? ,RM-NAVE>
|
||||
<RT-ALREADY-IN-ROOM-MSG>)
|
||||
(<MC-HERE? ,RM-BROAD-SANCTUARY>
|
||||
<RT-DO-WALK ,P?EAST>)>)
|
||||
(<MC-VERB? EXIT>
|
||||
<COND (<MC-HERE? ,RM-NAVE>
|
||||
<RT-DO-WALK ,P?WEST>)
|
||||
(T
|
||||
<RT-NOT-IN-ROOM-MSG>)>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<RT-IMPOSSIBLE-MSG>)>)
|
||||
(T
|
||||
<COND (<==? .CONTEXT ,K-M-SDESC>
|
||||
<TELL "tombs">)
|
||||
(<OR <NOT <FSET? ,GL-PLACE-CUR ,FL-INDOORS>>
|
||||
<EQUAL? ,GL-PLACE-CUR ,RM-JERICHO-PARLOUR
|
||||
,RM-JERUSALEM-CHAMBER
|
||||
,RM-NORTH-CLOISTER>>
|
||||
<RT-CANT-SEE-ANY-MSG ,LG-TOMBS-ABBEY>
|
||||
<RTRUE>)
|
||||
(<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<COND
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-SOUTH-AMBULATORY
|
||||
,RM-NORTH-AMBULATORY>
|
||||
<TELL
|
||||
"There are so many of them! None stands out in particular." CR>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-CONFESSOR-CHAPEL>
|
||||
<TELL
|
||||
"Two of them are especially interesting. One is the tomb of Edward
|
||||
the Confessor. The other is of Henry V." CR>)
|
||||
(T
|
||||
<TELL "One tomb in particular catches your eye." CR>)>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? SHOOT>
|
||||
<RT-SHOOT-DEAD-MSG>)>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-STREETLIGHT ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-STREETLIGHT">>
|
||||
<COND (<RT-TOUCH-VERB?>
|
||||
<TELL CTHE ,LG-STREETLIGHT " is too high." CR>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? SHOOT>
|
||||
<RT-WASTE-OF-BULLETS-MSG>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-STAIRWAY ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-STAIRWAY">>
|
||||
<COND (<MC-VERB? CLIMB-UP>
|
||||
<RT-DO-WALK ,P?UP>)
|
||||
(<MC-VERB? CLIMB-DOWN>
|
||||
<RT-DO-WALK ,P?DOWN>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-SHAFT-OF-LIGHT ("OPT" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-SHAFT-OF-LIGHT">>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<TELL
|
||||
"Well, it's not really a shaft of light. It's more like a diffused
|
||||
murkiness. But any light that penetrates an English church from the outside
|
||||
counts as a shaft." CR>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? SHOOT>
|
||||
<RT-WASTE-OF-BULLETS-MSG>)>)
|
||||
(<MC-THIS-PRSI?>
|
||||
<COND (<MC-VERB? PUT>
|
||||
<COND (<MC-PRSO? ,TH-MAGNIFYING-GLASS>
|
||||
<COND (<EQUAL? <RT-WHO-SAYS?> ,CH-HOLMES>
|
||||
<TELL
|
||||
"\"Your Afghan experience is showing, Watson. The hot sun there would surely
|
||||
produce rays capable, when focused, of producing a flame. Alas, our English
|
||||
sun is too weak to produce such an effect.\"">)
|
||||
(T
|
||||
<TELL
|
||||
"The rays from England's sun are too weak to focus.">)>
|
||||
<CRLF>)
|
||||
(<MC-PRSO? ,TH-GREEN-PAPER
|
||||
,TH-WHITE-PAPER
|
||||
,TH-BLUE-PAPER
|
||||
,TH-ORANGE-PAPER
|
||||
,TH-YELLOW-PAPER
|
||||
,TH-BROWN-PAPER>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<TELL "Putting " THEO " in " THEI>
|
||||
<RT-WASTE-OF-TIME-MSG>)>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-RAVENS ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-OB-AC "LG-RAVENS" .CONTEXT>>
|
||||
<COND (<==? .CONTEXT ,K-M-DESCFCN>
|
||||
<TELL "The ravens stare at you with baleful eyes." CR>)
|
||||
(<MC-THIS-WINNER?>
|
||||
<TELL CTHE ,LG-RAVENS " caw raucously in response." CR>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? TAKE>
|
||||
<TELL CTHE ,LG-RAVENS " fly out of reach." CR>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<RT-SHOOT-BIRDS ,LG-RAVENS "staring at you">
|
||||
<RTRUE>)
|
||||
(<MC-VERB? LISTEN>
|
||||
<TELL "None of the ravens is quothing \"Nevermore.\"" CR>)>)>>
|
||||
|
||||
<ROUTINE RT-DF-LG-BOATS ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-OB-DF "LG-BOATS" .CONTEXT>>
|
||||
<COND (<N==? .CONTEXT ,K-M-DESCFCN> <RFALSE>)>
|
||||
<COND (<EQUAL? <RT-TIME-OF-DAY> 0>
|
||||
<TELL CTHE ,LG-BOATS " are shrouded in fog." CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<TELL CTHE ,LG-BOATS " bob merrily on the river." CR>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-HOLMES-HOUSE ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-HOLMES-HOUSE">>
|
||||
<COND (<MC-VERB? ENTER>
|
||||
<COND (<MC-HERE? ,RM-ENTRY-HALL ,RM-PARLOUR
|
||||
,RM-VESTIBULE ,RM-HOLMES-STUDY
|
||||
,RM-HOLMES-BEDROOM>
|
||||
<RT-ALREADY-IN-ROOM-MSG>
|
||||
<RTRUE>)
|
||||
(<MC-HERE? ,RM-221B-BAKER-ST>
|
||||
<RT-DO-WALK ,P?WEST>
|
||||
<RTRUE>)>)
|
||||
(<MC-VERB? EXIT>
|
||||
<COND (<MC-HERE? ,RM-ENTRY-HALL>
|
||||
<RT-DO-WALK ,P?EAST>
|
||||
<RTRUE>)
|
||||
(<MC-HERE? ,RM-PARLOUR ,RM-VESTIBULE
|
||||
,RM-HOLMES-STUDY ,RM-HOLMES-BEDROOM>
|
||||
<TELL ,K-SPECIFY-DIR-MSG CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RT-NOT-IN-ROOM-MSG>
|
||||
<RTRUE>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-PEDESTAL ("OPT" (CONTEXT <>) (CLASS <>))
|
||||
<COND (<==? .CONTEXT ,K-M-SDESC>
|
||||
<PRINT-SDESC "pedestal" .CLASS <> <>>
|
||||
<RTRUE>)
|
||||
(<N==? .CONTEXT ,K-M-DESCFCN> <RFALSE>)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-TRAFALGAR-SQUARE>
|
||||
<TELL "On the pedestal you see a bronze relief." CR>)>>
|
||||
|
||||
<ROUTINE RT-AC-LG-TOWER ()
|
||||
<DEBUGGING? <RT-DEBUG-LG-AC "LG-TOWER">>
|
||||
<COND (<MC-VERB? ENTER>
|
||||
<COND (<MC-HERE? ,RM-BYWARD-TOWER ,RM-BLOODY-TOWER
|
||||
,RM-WAKEFIELD-TOWER ,RM-JEWEL-ROOM
|
||||
,RM-DUNGEON ,RM-TORTURE-ROOM ,RM-WHITE-TOWER
|
||||
,RM-BOWYER-TOWER>
|
||||
<RT-ALREADY-IN-ROOM-MSG>)
|
||||
(<MC-HERE? ,RM-OUTER-WARD ,RM-TOWER-GREEN>
|
||||
<TELL ,K-SPECIFY-DIR-MSG CR>)
|
||||
(<MC-HERE? ,RM-OUTSIDE-TRAITORS-GATE>
|
||||
<RT-DO-WALK ,P?NORTH>)
|
||||
(<MC-HERE? ,RM-DRAWBRIDGE ,RM-TOWER-ENTRANCE>
|
||||
<RT-DO-WALK ,P?EAST>)>)
|
||||
(<MC-VERB? EXIT>
|
||||
<COND (<MC-HERE? ,RM-BLOODY-TOWER ,RM-WAKEFIELD-TOWER
|
||||
,RM-WHITE-TOWER ,RM-BOWYER-TOWER
|
||||
,RM-BYWARD-TOWER>
|
||||
<RT-DO-WALK ,P?OUT>)
|
||||
(<MC-HERE? ,RM-DUNGEON ,RM-TORTURE-ROOM>
|
||||
<RT-DO-WALK ,P?UP>)
|
||||
(<MC-HERE? ,RM-JEWEL-ROOM>
|
||||
<RT-DO-WALK ,P?DOWN>)
|
||||
(<MC-HERE? ,RM-INSIDE-TRAITORS-GATE>
|
||||
<RT-DO-WALK ,P?SOUTH>)
|
||||
(<MC-HERE? ,RM-OUTER-WARD RM-TOWER-GREEN>
|
||||
<TELL ,K-SPECIFY-DIR-MSG CR>)
|
||||
(T
|
||||
<RT-NOT-IN-ROOM-MSG>)>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<RT-IMPOSSIBLE-MSG>)>>
|
||||
|
||||
|
409
macros.zil
Normal file
409
macros.zil
Normal file
|
@ -0,0 +1,409 @@
|
|||
;*****************************************************************************
|
||||
; "game : SHERLOCK!"
|
||||
; "file : MACROS.ZIL"
|
||||
; "auth : $Author: DEB $"
|
||||
; "date : $Date: 24 Sep 1987 21:15:56 $"
|
||||
; "rev : $Revision: 1.4 $"
|
||||
; "vers : 1.00"
|
||||
;*****************************************************************************
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "default property values"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<PROPDEF VALUE 0>
|
||||
<PROPDEF SIZE 0>
|
||||
<PROPDEF STRENGTH 10>
|
||||
<PROPDEF DEXTERITY 10>
|
||||
|
||||
;*****************************************************************************
|
||||
; "tell-tokens"
|
||||
;*****************************************************************************
|
||||
|
||||
<TELL-TOKENS
|
||||
CR <CRLF>
|
||||
N * <PRINTN .X>
|
||||
C * <PRINTC .X>
|
||||
D * <DPRINT .X>
|
||||
A * <RT-A-PRINT .X>
|
||||
CA * <RT-THEO-PRINT .X T ,K-DESC-A>
|
||||
AO <RT-A-PRINT>
|
||||
ANY * <RT-THEO-PRINT .X <> ,K-DESC-ANY>
|
||||
THE * <RT-THEO-PRINT .X>
|
||||
THEO <RT-THEO-PRINT>
|
||||
THEI <RT-THEI-PRINT>
|
||||
CTHE * <RT-CTHEO-PRINT .X>
|
||||
CTHEO <RT-CTHEO-PRINT>
|
||||
CTHEI <RT-CTHEI-PRINT>
|
||||
VW <RT-VW-PRINT>
|
||||
INDENT <RT-INDENT-PRINT>
|
||||
WRAP <RT-WRAP-PRINT>
|
||||
>
|
||||
|
||||
<DEFINE MULTIFROB (X ATMS "AUX" (OO (OR)) (O .OO) (LL (T)) (L .LL) ATM)
|
||||
<REPEAT ()
|
||||
<COND
|
||||
(<EMPTY? .ATMS>
|
||||
<RETURN!-
|
||||
<COND
|
||||
(<LENGTH? .OO 1>
|
||||
<ERROR .X>
|
||||
)
|
||||
(<LENGTH? .OO 2>
|
||||
<NTH .OO 2>
|
||||
)
|
||||
(ELSE
|
||||
<CHTYPE .OO FORM>
|
||||
)
|
||||
>
|
||||
>
|
||||
)
|
||||
>
|
||||
<REPEAT ()
|
||||
<COND
|
||||
(<EMPTY? .ATMS>
|
||||
<RETURN!->
|
||||
)
|
||||
>
|
||||
<SET ATM <NTH .ATMS 1>>
|
||||
<SET L <REST <PUTREST .L
|
||||
(<COND
|
||||
(<TYPE? .ATM ATOM>
|
||||
<CHTYPE
|
||||
<COND
|
||||
(<==? .X GL-PRSA>
|
||||
<PARSE <STRING "V?" <SPNAME .ATM>>>
|
||||
)
|
||||
(<==? .X GL-P-PRSA-WORD>
|
||||
<PARSE <STRING "W?" <SPNAME .ATM>>>
|
||||
)
|
||||
(T
|
||||
.ATM
|
||||
)
|
||||
>
|
||||
GVAL
|
||||
>
|
||||
)
|
||||
(ELSE
|
||||
.ATM
|
||||
)
|
||||
>)
|
||||
>>>
|
||||
<SET ATMS <REST .ATMS>>
|
||||
<COND
|
||||
(<==? <LENGTH .LL> 4>
|
||||
<RETURN!->
|
||||
)
|
||||
>
|
||||
>
|
||||
<SET O <REST <PUTREST .O
|
||||
(<FORM EQUAL? <CHTYPE .X GVAL> !<REST .LL>>)
|
||||
>>>
|
||||
<SET LL (T)>
|
||||
<SET L .LL>
|
||||
>
|
||||
>
|
||||
|
||||
;*****************************************************************************
|
||||
; "macro definitions"
|
||||
;*****************************************************************************
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-VERB?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-VERB? ("ARGS" ATMS)
|
||||
<MULTIFROB GL-PRSA .ATMS>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-VERB-WORD?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-VERB-WORD? ("ARGS" ATMS)
|
||||
<MULTIFROB GL-P-PRSA-WORD .ATMS>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-PRSO?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-PRSO? ("ARGS" ATMS)
|
||||
<MULTIFROB GL-PRSO .ATMS>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-PRSI?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-PRSI? ("ARGS" ATMS)
|
||||
<MULTIFROB GL-PRSI .ATMS>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-THIS-PRSO?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-THIS-PRSO? ()
|
||||
<FORM ZERO? <CHTYPE GL-NOW-PRSI? GVAL>>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-THIS-PRSI?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-THIS-PRSI? ()
|
||||
<FORM NOT <FORM ZERO? <CHTYPE GL-NOW-PRSI? GVAL>>>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-HERE?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-HERE? ("ARGS" ATMS)
|
||||
<MULTIFROB GL-PLACE-CUR .ATMS>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-LISTEN?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-LISTEN? ("ARGS" ATMS)
|
||||
<MULTIFROB GL-LISTEN-OBJ .ATMS>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-PROB"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-PROB ('BASE?)
|
||||
<FORM NOT <FORM L? .BASE? '<RANDOM 100>>>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-GET/B"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-GET/B ('TBL 'PTR)
|
||||
<FORM GET .TBL .PTR>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-ABS"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-ABS ('NUM)
|
||||
<FORM COND
|
||||
(<FORM L? .NUM 0>
|
||||
<FORM - 0 .NUM>
|
||||
)
|
||||
(T
|
||||
.NUM
|
||||
)
|
||||
>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-SPACE"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-SPACE ()
|
||||
<FORM PRINTC 32>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-QUOTE?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-QUOTE? ()
|
||||
<FORM
|
||||
COND
|
||||
(<FORM NOT <FORM EQUAL?
|
||||
<CHTYPE GL-WINNER GVAL>
|
||||
<CHTYPE CH-PLAYER GVAL>>
|
||||
>
|
||||
<FORM PRINTC 34>
|
||||
)
|
||||
>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-MAKE"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-MAKE ('OBJ 'FLAG)
|
||||
<FORM FSET .OBJ .FLAG>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-UNMAKE"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-UNMAKE ('OBJ 'FLAG)
|
||||
<FORM FCLEAR .OBJ .FLAG>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-IS?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-IS? ('OBJ 'FLAG)
|
||||
<FORM FSET? .OBJ .FLAG>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-ISNOT?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-ISNOT? ('OBJ 'FLAG)
|
||||
<FORM NOT <FORM FSET? .OBJ .FLAG>>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-NOTZERO?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-NOTZERO? ('TERM)
|
||||
<FORM NOT <FORM ZERO? .TERM>>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-T?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-T? ('TERM)
|
||||
<FORM NOT <FORM ZERO? .TERM>>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-THIS-WINNER?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-THIS-WINNER? ()
|
||||
<FORM EQUAL? '.CONTEXT ',K-M-WINNER>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-F?"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-F? ('TERM)
|
||||
<FORM ZERO? .TERM>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-GET-RM-EXIT-DEST"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-GET-RM-EXIT-DEST ('PT)
|
||||
<FORM GETB .PT ',K-REXIT>
|
||||
>
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; "MC-GET-RM-EXIT-DOOR"
|
||||
;-----------------------------------------------------------------------------
|
||||
|
||||
<DEFMAC MC-GET-RM-EXIT-DOOR ('PT)
|
||||
<FORM GET <FORM REST .PT> '<- ,K-DEXITOBJ 1>>>
|
||||
|
||||
<DEFMAC DEBUGGING? ('X "OPT" 'Y)
|
||||
<COND (,GL-DEBUG?
|
||||
<COND (<TYPE? .X LIST>
|
||||
<CHTYPE .X SPLICE>)
|
||||
(T .X)>)
|
||||
(T
|
||||
<COND (<ASSIGNED? Y>
|
||||
<COND (<TYPE? .Y LIST>
|
||||
<CHTYPE .Y SPLICE>)
|
||||
(T .Y)>)
|
||||
(T #SPLICE ())>)>>
|
||||
|
||||
<DEFMAC STRLENGTH (X)
|
||||
<LENGTH .X>>
|
||||
|
||||
<DEFMAC RT-VW-PRINT ()
|
||||
<FORM PRINTB ',GL-P-PRSA-WORD>>
|
||||
|
||||
<DEFMAC RT-CLOCK-INC-SET ("ARGS" STUFF)
|
||||
<FORM RT-DO-CLOCK-SET ',GL-TIME-UPDT-INC !.STUFF>>
|
||||
|
||||
<DEFMAC RT-CLOCK-DEF-SET ("ARGS" STUFF)
|
||||
<FORM RT-DO-CLOCK-SET ',GL-TIME-UPDT-DEF !.STUFF>>
|
||||
|
||||
<DEFMAC RT-CLOCK-SET ("ARGS" STUFF)
|
||||
<FORM RT-DO-CLOCK-SET ',GL-TIME !.STUFF>>
|
||||
|
||||
<DEFMAC RT-PARM-SET ("ARGS" STUFF)
|
||||
<FORM RT-DO-CLOCK-SET ',GL-TIME-PARM !.STUFF>>
|
||||
|
||||
; "Generate an appropriate BTST to test the part of speech in cases where
|
||||
we can get away with it. Otherwise, call RT-WT?.
|
||||
EXTRA-BIT is used to test two parts of speech at the same time. Note
|
||||
that all arguments after the first are evaluated at compile time, so had
|
||||
better be PS? or P1? type constants."
|
||||
<DEFMAC WT? ('PTR BIT "OPT" (B1:<OR FIX FALSE> 5) EXTRA-BIT)
|
||||
<COND (<OR <NOT .B1>
|
||||
<G? .B1 4>>
|
||||
<COND (<ASSIGNED? EXTRA-BIT>
|
||||
; "Handle an OR test of two parts of speech"
|
||||
<FORM NOT <FORM 0? <FORM ANDB <FORM GETB .PTR ,K-P-PSOFF>
|
||||
<+ .BIT .EXTRA-BIT>>>>)
|
||||
(T
|
||||
<FORM BTST <FORM GETB .PTR ,K-P-PSOFF> .BIT>)>)
|
||||
(<ASSIGNED? EXTRA-BIT>
|
||||
<ERROR CANT-TEST-FOR-TWO-PARTS-OF-SPEECH-WITH-VALUE!-ERRORS
|
||||
.BIT .EXTRA-BIT WT?>)
|
||||
(T
|
||||
<FORM RT-WT? .PTR .BIT .B1>)>>
|
||||
|
||||
;"Structures created by eliminating the AUXn properties."
|
||||
|
||||
<GLOBAL TH-ROPE-AUX1 -1> ; "First person tied up"
|
||||
<GLOBAL TH-ROPE-AUX2 -1> ; "Second person tied up"
|
||||
|
||||
<GLOBAL CH-BANK-GUARD-AUX1 0 <> BYTE> ; "Number of gems used to bribe him"
|
||||
|
||||
<GLOBAL CH-HOLMES-AUX1 0 <> BYTE> ; "Seems to be flags for holmes"
|
||||
|
||||
<GLOBAL CH-TRAINED-PIGEON-AUX1 0 <> BYTE> ; "Flags"
|
||||
<GLOBAL CH-TRAINED-PIGEON-AUX2 0 <> BYTE>
|
||||
<GLOBAL CH-TRAINED-PIGEON-AUX3 0> ; "An object"
|
||||
|
||||
<GLOBAL RM-HOLMES-STUDY-AUX1 0 <> BYTE> ; "Minutes out of study after
|
||||
waking holmes"
|
||||
|
||||
<GLOBAL TH-BELL-AUX1 0 <> BYTE> ; "Number of times to ring Ben"
|
||||
<GLOBAL TH-BELL-AUX2 0 <> BYTE> ; "Bell position?"
|
||||
|
||||
<GLOBAL TH-PACKET-OF-PAPER-AUX1 0 <> BYTE>
|
||||
|
||||
<GLOBAL TH-BOX-KEY-AUX1 0> ; "Box the key is in (number)"
|
||||
|
||||
<GLOBAL TH-SAFETY-DEPOSIT-BOX-AUX1 0> ; "Box number"
|
||||
|
||||
<GLOBAL TH-BOX-LOCK-AUX1 0>
|
||||
|
||||
<GLOBAL TH-DIAL-AUX1 0> ;"Direction being turned, or some such"
|
||||
<GLOBAL TH-DIAL-AUX2 0>
|
||||
|
||||
<GLOBAL CH-WIGGINS-AUX1 0 <> BYTE> ; "True if `activated'"
|
||||
|
||||
<GLOBAL CH-ELIZA-DOOLITTLE-AUX1 0 <> BYTE>
|
||||
|
||||
<GLOBAL CH-VENDOR-AUX1 0 <> BYTE> ; "Number of haggles"
|
||||
|
||||
<GLOBAL TH-CAB-WHISTLE-AUX1 0 <> BYTE> ; "Number of whistles"
|
||||
<GLOBAL TH-CAB-WHISTLE-AUX2 0 <> BYTE> ; "Where"
|
||||
|
||||
<GLOBAL TH-HANSOM-CAB-AUX1 0 <> BYTE> ; "Called before?"
|
||||
<GLOBAL TH-HANSOM-CAB-AUX2 0 <> BYTE> ; "Waiting?"
|
||||
|
||||
<GLOBAL TH-GROWLER-CAB-AUX1 0 <> BYTE>
|
||||
|
||||
<GLOBAL TH-GUN-AUX1 6 <> BYTE> ; "Bullets left"
|
||||
|
||||
<GLOBAL TH-PHIAL-AUX1 0 <> BYTE>
|
||||
|
||||
<GLOBAL TH-BOAT-AUX1 0 <> BYTE>
|
||||
|
||||
<GLOBAL TH-SAPPHIRE-AUX1 2> ; "Number of grabs left"ct
|
22
misc.zil
Normal file
22
misc.zil
Normal file
|
@ -0,0 +1,22 @@
|
|||
;<REPLACE-DEFINITION DEBUGGING-CODE T>
|
||||
|
||||
;<REPLACE-DEFINITION TRADEMARK-MSG
|
||||
<CONSTANT GAMMA-TESTERS
|
||||
<PLTABLE "Steve Barone"
|
||||
"Geoff Cohen"
|
||||
"Robby Kumar"
|
||||
"Joshua Mandel"
|
||||
"Kelly Marold"
|
||||
"Michael Milgram"
|
||||
"Martin Rubenstein"
|
||||
"John Schappert"
|
||||
"Ron Tison"
|
||||
"Steve Watkins"
|
||||
"Jeff Bailey"
|
||||
"Michael Stein">>
|
||||
<ROUTINE RT-TRADEMARK-MSG ()
|
||||
<COND (<AND <G? ,SERIAL 0>
|
||||
<L? ,SERIAL <ZGET ,GAMMA-TESTERS 0>>>
|
||||
<TELL "Gamma test copy for "
|
||||
<ZGET ,GAMMA-TESTERS ,SERIAL>
|
||||
CR>)>>>
|
1073
other-misc.zap
Normal file
1073
other-misc.zap
Normal file
File diff suppressed because it is too large
Load diff
1049
other-misc.zil
Normal file
1049
other-misc.zil
Normal file
File diff suppressed because it is too large
Load diff
120
parser.zabstr
Normal file
120
parser.zabstr
Normal file
|
@ -0,0 +1,120 @@
|
|||
|
||||
<GLOBAL INHIBIT-ROOMS <> %<> WORD>
|
||||
<GLOBAL GL-FUNNY-CLAUSE? <> %<> WORD>
|
||||
<CONSTANT SH 128>
|
||||
<CONSTANT SC 64>
|
||||
<CONSTANT SIR 32>
|
||||
<CONSTANT SOG 16>
|
||||
<CONSTANT STAKE 8>
|
||||
<CONSTANT SMANY 4>
|
||||
<CONSTANT SHAVE 2>
|
||||
<CONSTANT LAST-OBJECT 0>
|
||||
<CONSTANT K-M-BEG 1>
|
||||
<CONSTANT K-M-ENTERING 2>
|
||||
<CONSTANT K-M-ENTERED 3>
|
||||
<CONSTANT K-M-EXIT 4>
|
||||
<CONSTANT K-M-END 5>
|
||||
<CONSTANT K-M-FLOOK 6>
|
||||
<CONSTANT K-M-NLOOK 7>
|
||||
<CONSTANT K-M-WINNER 8>
|
||||
<CONSTANT K-M-CONT 9>
|
||||
<CONSTANT K-M-OBJDESC 10>
|
||||
<CONSTANT K-M-CANT 11>
|
||||
<CONSTANT K-M-DESCFCN 12>
|
||||
<CONSTANT K-M-SDESC 13>
|
||||
<CONSTANT K-M-DESC-1 14>
|
||||
<CONSTANT K-M-DESC-2 15>
|
||||
<CONSTANT K-M-DESC-3 16>
|
||||
<CONSTANT K-P-LEXWORDS 1>
|
||||
<CONSTANT K-P-LEXSTART 1>
|
||||
<CONSTANT K-P-LEXELEN 2>
|
||||
<CONSTANT K-P-WORDLEN 4>
|
||||
<CONSTANT K-P-PSOFF 6>
|
||||
<CONSTANT K-P-P1OFF 7>
|
||||
<CONSTANT K-P-P1BITS 3>
|
||||
<CONSTANT K-P-ITBLLEN 9>
|
||||
<CONSTANT K-P-VERB 0>
|
||||
<CONSTANT K-P-VERBN 1>
|
||||
<CONSTANT K-P-PREP1 2>
|
||||
<CONSTANT K-P-PREP1N 3>
|
||||
<CONSTANT K-P-PREP2 4>
|
||||
<CONSTANT K-P-NC1 6>
|
||||
<CONSTANT K-P-NC1L 7>
|
||||
<CONSTANT K-P-NC2 8>
|
||||
<CONSTANT K-P-NC2L 9>
|
||||
<CONSTANT K-O-PTR 0>
|
||||
<CONSTANT K-O-START 1>
|
||||
<CONSTANT K-O-LENGTH 2>
|
||||
<CONSTANT K-O-END 3>
|
||||
<CONSTANT K-P-MATCHLEN 0>
|
||||
<CONSTANT K-P-ALL 1>
|
||||
<CONSTANT K-P-ONE 2>
|
||||
<CONSTANT K-P-INHIBIT 4>
|
||||
<CONSTANT K-P-SRCBOT 2>
|
||||
<CONSTANT K-P-SRCTOP 0>
|
||||
<CONSTANT K-P-SRCALL 1>
|
||||
<DEFINE-ROUTINE RT-CAPITALIZE>
|
||||
<DEFINE-ROUTINE RT-WORD-PRINT>
|
||||
<DEFINE-ROUTINE RT-VERB-PRINT>
|
||||
<DEFINE-ROUTINE RT-PREP-PRINT>
|
||||
<DEFINE-ROUTINE RT-CLAUSE-PRINT>
|
||||
<DEFINE-ROUTINE RT-BUFFER-PRINT>
|
||||
<GLOBAL GL-LONG-OOPS 3 %<> WORD>
|
||||
<DEFINE-ROUTINE RT-DONT-KNOW-WORD-MSG>
|
||||
<DEFINE-ROUTINE RT-DONT-KNOW-WORD-USE-MSG>
|
||||
<DEFINE-ROUTINE RT-CANT-SEE-ANY-MSG>
|
||||
<DEFINE-ROUTINE RT-TH-NOT-HERE-OBJECT>
|
||||
<DEFINE-ROUTINE RT-FAKE-ORPHAN-MSG>
|
||||
<DEFINE-ROUTINE RT-TIME-OF-DAY-MSG>
|
||||
<DEFINE-ROUTINE RT-TIME-OF-DAY>
|
||||
<DEFINE-ROUTINE RT-SPOKEN-TO-MSG>
|
||||
<DEFINE-ROUTINE RT-GET-PREP>
|
||||
<DEFINE-ROUTINE RT-SYNTAX-CHECK>
|
||||
<DEFINE-ROUTINE RT-CLAUSE>
|
||||
<DEFINE-ROUTINE RT-GET-WHAT-I-MEAN>
|
||||
<DEFINE-ROUTINE RT-P-CLEAR>
|
||||
<DEFINE-ROUTINE RT-PICK-NEXT>
|
||||
<DEFINE-ROUTINE RT-QCONTEXT-GOOD?>
|
||||
<DEFINE-ROUTINE RT-FIND-PERSON>
|
||||
<DEFINE-ROUTINE RT-ANYONE-HERE?>
|
||||
<DEFINE-ROUTINE RT-MOVE-ALL>
|
||||
<DEFINE-ROUTINE RT-GOT?>
|
||||
<DEFINE-ROUTINE RT-HELD?>
|
||||
<DEFINE-ROUTINE RT-THIS-IS-IT>
|
||||
<DEFINE-ROUTINE RT-CHANGE-LEXV>
|
||||
<DEFINE-ROUTINE RT-WT?>
|
||||
<DEFINE-ROUTINE RT-VERB-DIR-ONLY?>
|
||||
<DEFINE-ROUTINE RT-STUFF>
|
||||
<DEFINE-ROUTINE RT-INBUF-ADD>
|
||||
<DEFINE-ROUTINE RT-ACLAUSE-WIN>
|
||||
<DEFINE-ROUTINE RT-NCLAUSE-WIN>
|
||||
<DEFINE-ROUTINE RT-ORPHAN-VERB>
|
||||
<DEFINE-ROUTINE RT-ORPHAN>
|
||||
<DEFINE-ROUTINE RT-ORPHAN-MERGE>
|
||||
<DEFINE-ROUTINE RT-ADJ-CHECK>
|
||||
<DEFINE-ROUTINE RT-CLAUSE-COPY>
|
||||
<DEFINE-ROUTINE RT-CLAUSE-ADD>
|
||||
<DEFINE-ROUTINE RT-PREP-FIND>
|
||||
<DEFINE-ROUTINE RT-SYNTAX-FOUND>
|
||||
<DEFINE-ROUTINE RT-BUT-MERGE>
|
||||
<DEFINE-ROUTINE RT-SNARF-OBJECTS>
|
||||
<DEFINE-ROUTINE RT-SNARF>
|
||||
<DEFINE-ROUTINE RT-GET-OBJECT>
|
||||
<DEFINE-ROUTINE RT-MOBY-FIND>
|
||||
<DEFINE-ROUTINE RT-MATCH-PSEUDO>
|
||||
<DEFINE-ROUTINE RT-GLOBAL-CHECK>
|
||||
<DEFINE-ROUTINE RT-DO-SL>
|
||||
<DEFINE-ROUTINE RT-SEARCH-LIST>
|
||||
<DEFINE-ROUTINE RT-THIS-IT?>
|
||||
<DEFINE-ROUTINE RT-OBJ-FOUND>
|
||||
<DEFINE-ROUTINE RT-ITAKE>
|
||||
<DEFINE-ROUTINE RT-ITAKE-CHECK>
|
||||
<DEFINE-ROUTINE RT-MANY-CHECK>
|
||||
<DEFINE-ROUTINE RT-IS-LIT?>
|
||||
<GLOBAL WINNER-IS-WIGGINS <> %<> WORD>
|
||||
<DEFINE-ROUTINE RT-PERFORM>
|
||||
<DEFINE-ROUTINE RT-SET-GL-PLACE-CUR>
|
||||
<DEFINE-ROUTINE RT-PARSER>
|
||||
<DEFINE-ROUTINE RT-WHICH-PRINT>
|
||||
<DEFINE-ROUTINE RT-FIND-NOT-HERE>
|
||||
<DEFINE-ROUTINE RT-NOT-HERE-PRINT>
|
2588
parser.zap
Normal file
2588
parser.zap
Normal file
File diff suppressed because it is too large
Load diff
2559
parser.zil
Normal file
2559
parser.zil
Normal file
File diff suppressed because it is too large
Load diff
112
people.zabstr
Normal file
112
people.zabstr
Normal file
|
@ -0,0 +1,112 @@
|
|||
|
||||
<OBJECT CH-THEM (LOC GLOBAL-OBJECTS) (DESC "them") (FLAGS FL-NOARTC FL-PLURAL)
|
||||
(SYNONYM THEM THEMSELVES)>
|
||||
<OBJECT CH-ME (LOC GLOBAL-OBJECTS) (DESC "yourself") (FLAGS FL-NOARTC FL-ALIVE
|
||||
FL-PERSON) (SYNONYM I ME MYSELF BODY SELF) (ADJECTIVE MY)>
|
||||
<OBJECT CH-YOU (LOC GLOBAL-OBJECTS) (DESC "myself") (FLAGS FL-NOARTC FL-ALIVE
|
||||
FL-PERSON) (SYNONYM YOU YOURSELF)>
|
||||
<OBJECT CH-HIM (LOC GLOBAL-OBJECTS) (DESC "him") (FLAGS FL-NOARTC FL-ALIVE
|
||||
FL-PERSON) (SYNONYM HIM HIMSELF)>
|
||||
<OBJECT CH-HER (LOC GLOBAL-OBJECTS) (DESC "her") (FLAGS FL-NOARTC FL-ALIVE
|
||||
FL-PERSON FL-FEMALE) (SYNONYM HER HERSELF)>
|
||||
<OBJECT CH-PLAYER (DESC "you") (FLAGS FL-NOARTC FL-NODESC FL-ALIVE FL-PERSON) (
|
||||
SYNONYM DOCTOR WATSON) (ADJECTIVE DOCTOR) (SIZE 99 MASS 0 CAPACITY 60) (
|
||||
STRENGTH 999) (DEXTERITY 15) (ACTION RT-AC-CH-PLAYER)>
|
||||
<OBJECT CH-HOLMES (LOC TH-SOFA) (DESC "Holmes") (FLAGS FL-NOARTC FL-ALIVE
|
||||
FL-PERSON FL-TRYTAKE FL-NOALL FL-ASLEEP FL-HAS-DESCFCN) (SYNONYM HOLMES
|
||||
SHERLOCK DETECTIVE FRIEND COMPANION) (ADJECTIVE SHERLOCK) (SIZE 99 CAPACITY 60)
|
||||
(STRENGTH 999) (DEXTERITY 10) (ACTION RT-AC-CH-HOLMES)>
|
||||
<OBJECT CH-MATCH-SNIFFING-DOG (LOC RM-MARYLEBONE-RD) (DESC "dog") (FLAGS
|
||||
FL-NODESC FL-ALIVE FL-TRYTAKE FL-NOALL FL-HAS-DESCFCN) (SYNONYM DOG) (ADJECTIVE
|
||||
TRAINED) (SIZE 15 CAPACITY 15) (ACTION RT-AC-CH-MATCH-SNIFFING-DOG)>
|
||||
<OBJECT CH-TUSSAUDS-GUARD (LOC RM-MARYLEBONE-RD) (DESC "guard") (FLAGS
|
||||
FL-NODESC FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL FL-HAS-DESCFCN) (SYNONYM GUARD
|
||||
) (ADJECTIVE TUSSAUDS) (SIZE 99 CAPACITY 60) (ACTION RT-AC-CH-TUSSAUDS-GUARD)>
|
||||
<OBJECT CH-TRAINED-PIGEON (LOC CH-SHERMAN) (DESC "pigeon") (FLAGS FL-ALIVE
|
||||
FL-TAKEABLE FL-HAS-DESCFCN) (SYNONYM PIGEON BIRD) (ADJECTIVE TRAINED) (SIZE 10
|
||||
CAPACITY 5 MASS 5) (VALUE 1) (GENERIC RT-GN-PIGEON) (ACTION
|
||||
RT-AC-CH-TRAINED-PIGEON)>
|
||||
<OBJECT CH-SHERMAN (LOC RM-SHERMANS-HOUSE) (DESC "Sherman") (FLAGS FL-NODESC
|
||||
FL-NOARTC FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL FL-HAS-DESCFCN) (SYNONYM
|
||||
SHERMAN TRAINER) (ADJECTIVE OLD) (SIZE 99 CAPACITY 60) (ACTION RT-AC-CH-SHERMAN
|
||||
)>
|
||||
<OBJECT CH-BANK-GUARD (LOC RM-THREADNEEDLE-ST) (DESC "guard") (FLAGS FL-ALIVE
|
||||
FL-PERSON FL-TRYTAKE FL-NOALL FL-NODESC FL-HAS-DESCFCN) (SYNONYM GUARD) (
|
||||
ADJECTIVE BANK) (SIZE 99 CAPACITY 60) (ACTION RT-AC-CH-BANK-GUARD)>
|
||||
<OBJECT CH-WIGGINS (LOC RM-THREADNEEDLE-ST) (DESC "Wiggins") (FLAGS FL-NOARTC
|
||||
FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL FL-NODESC FL-BROKEN FL-HAS-DESCFCN) (
|
||||
SYNONYM WIGGINS URCHIN BOY COMPANION) (SIZE 20 CAPACITY 15) (STRENGTH 999) (
|
||||
DEXTERITY 10) (CONTFCN RT-AC-CH-WIGGINS) (ACTION RT-AC-CH-WIGGINS)>
|
||||
<OBJECT CH-ELIZA-DOOLITTLE (LOC RM-COVENT-GARDEN) (FLAGS FL-ALIVE FL-PERSON
|
||||
FL-FEMALE FL-TRYTAKE FL-NOALL FL-NEEDS-IDENTITY FL-LOSE-IDENTITY FL-ASLEEP
|
||||
FL-NODESC FL-HAS-DESCFCN FL-HAS-SDESC) (OBJ-ADJ 0) (OBJ-NOUN 0) (ADJECTIVE HER
|
||||
ELIZA\'S GIRL\'S) (SYNONYM ELIZA DOOLITTLE GIRL HEART HEARTBEAT) (SIZE 99
|
||||
CAPACITY 10) (VALUE 5) (ACTION RT-AC-CH-ELIZA-DOOLITTLE)>
|
||||
<OBJECT CH-PRIME-MINISTER (DESC "Prime Minister") (FLAGS FL-ALIVE FL-PERSON
|
||||
FL-TRYTAKE FL-NOALL FL-NODESC FL-HAS-DESCFCN) (SYNONYM MINISTER OFFICIAL
|
||||
VISITOR MAN) (ADJECTIVE PRIME) (SIZE 15) (CONTFCN RT-AC-CH-PRIME-MINISTER) (
|
||||
ACTION RT-AC-CH-PRIME-MINISTER)>
|
||||
<OBJECT CH-AKBAR (LOC RM-LAIR) (DESC "Akbar") (FLAGS FL-NOARTC FL-ALIVE
|
||||
FL-PERSON FL-TRYTAKE FL-NOALL FL-HAS-DESCFCN) (SYNONYM AKBAR) (SIZE 99 CAPACITY
|
||||
20) (VALUE 1) (ACTION RT-AC-CH-AKBAR)>
|
||||
<OBJECT CH-MORIARTY (LOC RM-LAIR) (DESC "Moriarty") (FLAGS FL-NOARTC FL-ALIVE
|
||||
FL-PERSON FL-TRYTAKE FL-NOALL FL-HAS-DESCFCN) (SYNONYM PROFESSOR PROF MORIARTY)
|
||||
(ADJECTIVE JAMES PROFESSOR PROF) (SIZE 99 CAPACITY 20) (VALUE 1) (ACTION
|
||||
RT-AC-CH-MORIARTY)>
|
||||
<OBJECT CH-HUDSON (LOC RM-ENTRY-HALL) (DESC "Mrs Hudson") (FLAGS FL-NOARTC
|
||||
FL-ALIVE FL-PERSON FL-FEMALE FL-TRYTAKE FL-NOALL FL-HAS-DESCFCN) (SYNONYM MRS
|
||||
HUDSON HOUSEKEEPER) (ADJECTIVE MRS) (SIZE 99 CAPACITY 99) (CONTFCN
|
||||
RT-AC-CH-HUDSON) (ACTION RT-AC-CH-HUDSON)>
|
||||
<OBJECT CH-DENKEEPER (LOC RM-BAR-OF-GOLD) (DESC "denkeeper") (FLAGS FL-ALIVE
|
||||
FL-PERSON FL-TRYTAKE FL-NOALL FL-NODESC FL-HAS-DESCFCN) (SYNONYM DENKEEPER
|
||||
PROPRIETOR MAN) (SIZE 99 CAPACITY 20) (ACTION RT-AC-CH-DENKEEPER)>
|
||||
<OBJECT CH-LIBRARIAN (LOC RM-MANUSCRIPT-ROOM) (DESC "lonely librarian") (FLAGS
|
||||
FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL FL-NODESC) (SYNONYM LIBRARIAN MAN) (
|
||||
ADJECTIVE LONELY) (SIZE 99 CAPACITY 99) (ACTION RT-AC-CH-LIBRARIAN)>
|
||||
<OBJECT CH-BUTLER (LOC RM-DIOGENES-CLUB) (DESC "butler") (FLAGS FL-NODESC
|
||||
FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL) (SYNONYM BUTLER MAN) (SIZE 99 CAPACITY
|
||||
99) (ACTION RT-AC-CH-BUTLER)>
|
||||
<OBJECT CH-NANNIES (LOC RM-KENSINGTON-GARDENS) (DESC "nannies") (FLAGS
|
||||
FL-NODESC FL-PLURAL FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL) (SYNONYM NANNIES) (
|
||||
SIZE 99 CAPACITY 99) (ACTION RT-AC-CH-NANNIES)>
|
||||
<OBJECT CH-QUEEN (LOC RM-BUCKINGHAM-PALACE) (DESC "Queen Victoria") (FLAGS
|
||||
FL-NOARTC FL-PERSON FL-ALIVE FL-TRYTAKE FL-NOALL FL-FEMALE) (SYNONYM QUEEN
|
||||
VICTORIA) (ADJECTIVE QUEEN) (SIZE 99 CAPACITY 99)>
|
||||
<OBJECT CH-HOUSEWIVES (LOC RM-COVENT-GARDEN) (DESC "women") (FLAGS FL-NODESC
|
||||
FL-PLURAL FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL FL-HAS-DESCFCN) (SYNONYM
|
||||
HOUSEWIVES WIVES WOMEN PEOPLE CROWDS CROWD SHOPPERS) (SIZE 99 CAPACITY 99) (
|
||||
ACTION RT-AC-CH-HOUSEWIVES)>
|
||||
<OBJECT CH-PALACE-GUARD (LOC RM-QUEENS-GARDENS) (DESC "Palace guard") (FLAGS
|
||||
FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL FL-HAS-DESCFCN) (SYNONYM GUARD) (
|
||||
ADJECTIVE PALACE) (SIZE 99 CAPACITY 20) (ACTION RT-AC-CH-PALACE-GUARD)>
|
||||
<OBJECT CH-URCHINS (LOC RM-THREADNEEDLE-ST) (DESC "urchins") (FLAGS FL-NODESC
|
||||
FL-PLURAL FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL FL-HAS-DESCFCN) (SYNONYM
|
||||
URCHINS) (SIZE 99 CAPACITY 99) (ACTION RT-AC-CH-URCHINS)>
|
||||
<OBJECT CH-MEMBERS (LOC RM-DIOGENES-CLUB) (DESC "members") (FLAGS FL-NODESC
|
||||
FL-PLURAL FL-ALIVE FL-PERSON FL-TRYTAKE FL-NOALL FL-HAS-DESCFCN) (SYNONYM
|
||||
MEMBERS) (ADJECTIVE CLUB AGING) (SIZE 99 CAPACITY 99) (ACTION RT-AC-CH-MEMBERS)
|
||||
>
|
||||
<DEFINE-ROUTINE RT-LIBRARIAN-SAYS-MSG>
|
||||
<DEFINE-ROUTINE RT-TELL-ABOUT?>
|
||||
<DEFINE-ROUTINE RT-WHO-WHAT-FAIL?>
|
||||
<DEFINE-ROUTINE RT-NO-CONDITION-MSG>
|
||||
<DEFINE-ROUTINE RT-AC-CH-HOLMES>
|
||||
<DEFINE-ROUTINE RT-HOLMES-SAYS-AGRA-MSG>
|
||||
<DEFINE-ROUTINE RT-HOLMES-DESCRIBE-MSG?>
|
||||
<DEFINE-ROUTINE RT-AC-CH-MATCH-SNIFFING-DOG>
|
||||
<DEFINE-ROUTINE RT-AC-CH-TUSSAUDS-GUARD>
|
||||
<DEFINE-ROUTINE RT-PIGEON-PANIC>
|
||||
<DEFINE-ROUTINE RT-PIGEON-FLY>
|
||||
<DEFINE-ROUTINE RT-AC-CH-TRAINED-PIGEON>
|
||||
<DEFINE-ROUTINE RT-AC-CH-SHERMAN>
|
||||
<DEFINE-ROUTINE RT-AC-CH-PRIME-MINISTER>
|
||||
<DEFINE-ROUTINE RT-AC-CH-AKBAR>
|
||||
<DEFINE-ROUTINE RT-AC-CH-MORIARTY>
|
||||
<DEFINE-ROUTINE RT-AC-CH-HUDSON>
|
||||
<DEFINE-ROUTINE RT-AC-CH-DENKEEPER>
|
||||
<DEFINE-ROUTINE RT-AC-CH-LIBRARIAN>
|
||||
<DEFINE-ROUTINE RT-AC-CH-NANNIES>
|
||||
<DEFINE-ROUTINE RT-AC-CH-HOUSEWIVES>
|
||||
<DEFINE-ROUTINE RT-AC-CH-PALACE-GUARD>
|
||||
<DEFINE-ROUTINE RT-AC-CH-URCHINS>
|
||||
<DEFINE-ROUTINE RT-AC-CH-MEMBERS>
|
1475
people.zap
Normal file
1475
people.zap
Normal file
File diff suppressed because it is too large
Load diff
1782
people.zil
Normal file
1782
people.zil
Normal file
File diff suppressed because it is too large
Load diff
1101
places1.zil
Normal file
1101
places1.zil
Normal file
File diff suppressed because it is too large
Load diff
28
places2.zabstr
Normal file
28
places2.zabstr
Normal file
|
@ -0,0 +1,28 @@
|
|||
|
||||
<DEFINE-ROUTINE RT-SURGE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-MADAME-TUSSAUDS>
|
||||
<DEFINE-ROUTINE RT-AC-RM-MANUSCRIPT-ROOM>
|
||||
<DEFINE-ROUTINE RT-AC-RM-VICTORIA-STREET>
|
||||
<DEFINE-ROUTINE RT-AC-RM-CLOCK-TOWER>
|
||||
<DEFINE-ROUTINE RT-AC-RM-THAMES-ONE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-THAMES-TWO>
|
||||
<DEFINE-ROUTINE RT-AC-RM-THAMES-THREE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-THAMES-FOUR>
|
||||
<DEFINE-ROUTINE RT-AC-RM-THAMES-FIVE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-SHERMANS-HOUSE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-THREADNEEDLE-ST>
|
||||
<DEFINE-ROUTINE RT-AC-RM-LONDON-BRIDGE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-SWAN-LANE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-BAR-OF-GOLD>
|
||||
<DEFINE-ROUTINE RT-AC-RM-LAIR>
|
||||
<DEFINE-ROUTINE RT-AC-RM-NAVE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-EVANGELIST-CHAPEL>
|
||||
<DEFINE-ROUTINE RT-AC-RM-HENRY-VII-CHAPEL>
|
||||
<DEFINE-ROUTINE RT-EX-ENTER-BANK-OF-ENGLAND>
|
||||
<DEFINE-ROUTINE RT-AC-RM-BUCKINGHAM-PALACE>
|
||||
<DEFINE-ROUTINE RT-EX-RM-ENTER-BUCKINGHAM-PALACE>
|
||||
<DEFINE-ROUTINE RT-EX-RM-STEER-BOAT>
|
||||
<DEFINE-ROUTINE RT-EX-RM-LAND-BOAT>
|
||||
<DEFINE-ROUTINE RT-EX-RM-LAUNCH-BOAT>
|
||||
<DEFINE-ROUTINE RT-EX-PARLOUR-ENTRY>
|
||||
<DEFINE-ROUTINE RT-EX-LEAVE-EMBANKMENT>
|
855
places2.zap
Normal file
855
places2.zap
Normal file
|
@ -0,0 +1,855 @@
|
|||
|
||||
|
||||
.FUNCT RT-SURGE
|
||||
CALL1 RT-TIME-OF-DAY
|
||||
ZERO? STACK \?CCL3
|
||||
PRINTI "The fog is so thick that even your light cannot penetrate it, so you retrace your steps."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: PRINTI "Surging crowds of "
|
||||
EQUAL? GL-PLACE-CUR,RM-KENSINGTON-GARDENS \?CCL6
|
||||
PRINTI "haughty nannies"
|
||||
JUMP ?CND4
|
||||
?CCL6: EQUAL? GL-PLACE-CUR,RM-COVENT-GARDEN \?CCL8
|
||||
PRINTI "housewives intent on a bargain"
|
||||
JUMP ?CND4
|
||||
?CCL8: PRINTI "tourists"
|
||||
?CND4: PRINTI " block your path."
|
||||
CRLF
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-MADAME-TUSSAUDS,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
EQUAL? CONTEXT,K-M-DESC-1 \?CND4
|
||||
FSET TH-ASH,FL-SEEN
|
||||
FSET TH-WILLIAM-STATUE,FL-SEEN
|
||||
FSET TH-WALTER-STATUE,FL-SEEN
|
||||
FSET TH-ELIZABETH-STATUE,FL-SEEN
|
||||
FSET TH-DRAKE-STATUE,FL-SEEN
|
||||
FSET TH-JOHN-STATUE,FL-SEEN
|
||||
?CND4: EQUAL? CONTEXT,K-M-DESC-1,K-M-DESC-2 \?CCL8
|
||||
EQUAL? GL-PLACE-PRV,RM-MARYLEBONE-RD \?CCL11
|
||||
PRINTI "You come in off the street and are now standing in"
|
||||
JUMP ?CND6
|
||||
?CCL11: PRINTI "You leave the Chamber of Horrors and go back into"
|
||||
JUMP ?CND6
|
||||
?CCL8: PRINTI "You are in"
|
||||
?CND6: PRINTI " the lobby."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "All around you are wax statues of famous people. To the west is a dark and ominous-looking doorway with a sign over it. The exit to the street is to the south."
|
||||
CRLF
|
||||
FSET? TH-ASH,FL-ASLEEP \FALSE
|
||||
IN? CH-HOLMES,GL-PLACE-CUR \FALSE
|
||||
FSET TH-ASH,FL-SEEN
|
||||
FCLEAR TH-ASH,FL-ASLEEP
|
||||
FCLEAR TH-ASH,FL-NODESC
|
||||
CRLF
|
||||
ICALL2 RT-CTHEO-PRINT,CH-HOLMES
|
||||
PRINTI " drops to his hands and knees and begins a minute examination of the floor. After a few moments he cries, ""Aha! Look here, Watson."" He points to a miniscule speck of ash on the floor."
|
||||
CRLF
|
||||
SET 'GL-PUPPY-MSG?,FALSE-VALUE
|
||||
RTRUE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-ENTERED \?CCL18
|
||||
FSET? TH-TOBACCO,FL-ASLEEP /?CCL18
|
||||
FSET? TH-TOBACCO,FL-LIGHTED \?CCL18
|
||||
ICALL2 RT-UPDATE-SCORE,1
|
||||
FSET TH-TOBACCO,FL-ASLEEP
|
||||
RFALSE
|
||||
?CCL18: ZERO? CONTEXT \FALSE
|
||||
EQUAL? GL-PRSA,V?ENTER \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-MARYLEBONE-RD \?CCL27
|
||||
ICALL2 RT-DO-WALK,P?NORTH
|
||||
RTRUE
|
||||
?CCL27: EQUAL? GL-PLACE-CUR,RM-CHAMBER-OF-HORRORS \FALSE
|
||||
ICALL2 RT-DO-WALK,P?EAST
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-MANUSCRIPT-ROOM,CONTEXT,VALUE
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
EQUAL? CONTEXT,K-M-DESC-1,K-M-DESC-2 \?CCL6
|
||||
PRINTI "The deserted corridor leads to"
|
||||
JUMP ?CND4
|
||||
?CCL6: PRINTI "You are in"
|
||||
?CND4: PRINTI " the manuscript room, which contains a dusty collection of old books on obscure subjects. "
|
||||
IN? CH-LIBRARIAN,RM-MANUSCRIPT-ROOM \?CND7
|
||||
PRINTI "There is an old librarian here, on whose desk sits a handwritten sign that reads ""Quiet, please."" "
|
||||
?CND7: PRINTI "There are thousands of books behind glass cases"
|
||||
EQUAL? CONTEXT,K-M-DESC-1 \?CND9
|
||||
PRINTI ", but one is lying unattended on a table"
|
||||
?CND9: PRINTI ". The only exit is to the west."
|
||||
CRLF
|
||||
EQUAL? CONTEXT,K-M-DESC-1 \FALSE
|
||||
FSET CH-LIBRARIAN,FL-SEEN
|
||||
FSET TH-CLUE-BOOK,FL-SEEN
|
||||
FSET TH-LIBRARY-TABLE,FL-SEEN
|
||||
CRLF
|
||||
PRINTI "The librarian - who is as dusty as the books - looks up in surprise as you come in. He "
|
||||
FSET? TH-COTTON-BALLS,FL-WORN \?CCL16
|
||||
PRINTI "whispers"
|
||||
JUMP ?CND14
|
||||
?CCL16: PRINTI "says loudly"
|
||||
?CND14: PRINTI ", ""Oh, I say! Hello! I don't get many visitors here. Is there something I can help you with? Some information about the Jubilee, perhaps? It's quite rare, you know, for a British ruler to celebrate 50 years on the throne. Unique, in fact. The closest anyone else came was Elizabeth, who ruled 45 years - although our records are somewhat vague before the year 900. The Anglo-Saxon chronicles do get rather sketchy, what? Still, they're the best we have. I think I can find a copy for you somewhere here."""
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTR "The librarian's voice trails off as he bustles from shelf to shelf, squinting at the books to find the one he thinks you want."
|
||||
?CCL3: ZERO? CONTEXT /?CCL18
|
||||
IN? CH-LIBRARIAN,RM-MANUSCRIPT-ROOM \?CCL18
|
||||
FSET? CH-LIBRARIAN,FL-ASLEEP /?CCL18
|
||||
EQUAL? CONTEXT,K-M-ENTERED \?CCL24
|
||||
FSET? CH-LIBRARIAN,FL-OPENED \?CCL24
|
||||
CRLF
|
||||
ICALL2 RT-CTHEO-PRINT,CH-LIBRARIAN
|
||||
PRINTR " says, ""Welcome back! I have more interesting things to tell you!"""
|
||||
?CCL24: EQUAL? CONTEXT,K-M-EXIT \?CCL28
|
||||
PRINTI "As you leave, the librarian calls out, ""Must you be going? I have so many other interesting things to tell you."""
|
||||
CRLF
|
||||
CRLF
|
||||
FSET CH-LIBRARIAN,FL-OPENED
|
||||
RTRUE
|
||||
?CCL28: EQUAL? CONTEXT,K-M-BEG \FALSE
|
||||
EQUAL? GL-PRSA,V?WALK,V?EXIT /FALSE
|
||||
INTBL? GL-PRSA,GL-GAME-VERBS+2,10 /FALSE
|
||||
EQUAL? GL-PRSA,V?WAIT,V?LISTEN \?CCL37
|
||||
PRINTI "The librarian says "
|
||||
FSET? TH-COTTON-BALLS,FL-WORN \?CCL40
|
||||
PRINTI "softly"
|
||||
JUMP ?CND38
|
||||
?CCL40: PRINTI "loudly"
|
||||
?CND38: PRINTI ", "
|
||||
ICALL1 RT-LIBRARIAN-SAYS-MSG
|
||||
RTRUE
|
||||
?CCL37: EQUAL? GL-PRSA,V?HUSH \?CCL42
|
||||
PRINTI "The librarian stops in midsentence and gets an embarrassed look on his face. ""Oh, I say. I'm sorry to have rambled on like this, but I do so enjoy speaking with visitors. I get them so seldom, you know. Thank you for listening."""
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "He leaves the room, mumbling something to himself about the articulation of the third joint of the hind leg of an extinct species of dung beetle."
|
||||
CRLF
|
||||
REMOVE CH-LIBRARIAN
|
||||
RTRUE
|
||||
?CCL42: EQUAL? GL-PRSA,V?LOOK \?CCL44
|
||||
ICALL RT-DESC-ALL,FALSE-VALUE,TRUE-VALUE
|
||||
CRLF
|
||||
PRINTI "As you look around, the librarian says "
|
||||
FSET? TH-COTTON-BALLS,FL-WORN \?CCL47
|
||||
PRINTI "softly"
|
||||
JUMP ?CND45
|
||||
?CCL47: PRINTI "loudly"
|
||||
?CND45: PRINTI ", "
|
||||
ICALL1 RT-LIBRARIAN-SAYS-MSG
|
||||
RTRUE
|
||||
?CCL44: EQUAL? GL-PRSA,V?TELL \?CCL49
|
||||
EQUAL? GL-PRSO,CH-LIBRARIAN /FALSE
|
||||
?CCL49: CALL1 RT-TALK-VERB?
|
||||
ZERO? STACK /?CCL53
|
||||
PRINTI "The librarian interrupts you as you attempt to speak, and "
|
||||
FSET? TH-COTTON-BALLS,FL-WORN \?CCL56
|
||||
PRINTI "whispers"
|
||||
JUMP ?CND54
|
||||
?CCL56: PRINTI "says"
|
||||
?CND54: PRINTI ", "
|
||||
ICALL1 RT-LIBRARIAN-SAYS-MSG
|
||||
RETURN 2
|
||||
?CCL53: PRINTI "The librarian launches off into another speech, and it distracts you from what you wanted to do. "
|
||||
ICALL1 RT-LIBRARIAN-SAYS-MSG
|
||||
RTRUE
|
||||
?CCL18: ZERO? CONTEXT \FALSE
|
||||
EQUAL? GL-PRSA,V?ENTER \?CCL61
|
||||
EQUAL? GL-PLACE-CUR,RM-BRITISH-MUSEUM \FALSE
|
||||
ICALL2 RT-DO-WALK,P?EAST
|
||||
RTRUE
|
||||
?CCL61: EQUAL? GL-PRSA,V?EXIT \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-MANUSCRIPT-ROOM \FALSE
|
||||
ICALL2 RT-DO-WALK,P?WEST
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-VICTORIA-STREET,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
EQUAL? CONTEXT,K-M-DESC-1,K-M-DESC-2 \?CCL6
|
||||
PRINTI "You enter"
|
||||
JUMP ?CND4
|
||||
?CCL6: PRINTI "You are loitering in"
|
||||
?CND4: PRINTI " Victoria Street, which runs east and west between Victoria Square and Broad Sanctuary."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "You see a sign outside one of the shops."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-BEG \?CCL8
|
||||
EQUAL? GL-PRSA,V?WAIT \?CCL8
|
||||
FSET? RM-VICTORIA-STREET,FL-ASLEEP /?CCL13
|
||||
FSET RM-VICTORIA-STREET,FL-ASLEEP
|
||||
PRINTR "After a few moments, a constable strolls by, bops you on the head with his billy club, and says, ""Move along, you."""
|
||||
?CCL13: PRINTI "The same constable as before walks by and says, ""You again? That's it, mate. Come along with me."" He bops you on the head again and arrests you on a charge of vagrancy."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "You spend the night in gaol, and in the morning Inspector Lestrade drops by to tell you that there has been a mix-up in the paperwork and you are to be deported to Australia the following day. He gives you a letter to deliver to his sister in Melbourne and wishes you luck."
|
||||
CRLF
|
||||
CRLF
|
||||
CALL1 RT-QSR
|
||||
RSTACK
|
||||
?CCL8: ZERO? CONTEXT \FALSE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-CLOCK-TOWER,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
EQUAL? CONTEXT,K-M-DESC-1,K-M-DESC-2 \?CCL6
|
||||
PRINTI "The stairs seem to wind up forever. Finally, you emerge into"
|
||||
JUMP ?CND4
|
||||
?CCL6: PRINTI "You are in"
|
||||
?CND4: PRINTI " the interior of the clock tower, high above the Houses of Parliament."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "The immense bell known as Big Ben is hanging from the ceiling, suspended over a hollow shaft that is so deep it might as well be bottomless. A wooden railing runs around the shaft for safety."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "Inside the bell, you see an enormous clapper"
|
||||
EQUAL? CONTEXT,K-M-DESC-1 \?CCL9
|
||||
FSET TH-BELL,FL-SEEN
|
||||
FSET TH-SAPPHIRE,FL-SEEN
|
||||
FSET TH-CLAPPER,FL-SEEN
|
||||
FSET TH-SHAFT,FL-SEEN
|
||||
FSET TH-RAILING,FL-SEEN
|
||||
PRINT K-SAPPHIRE-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL9: IN? TH-SAPPHIRE,TH-CLAPPER \?CCL12
|
||||
PRINT K-SAPPHIRE-MSG
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL12: PRINTC 46
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: CALL2 RT-ALARM-SET?,RT-I-SWING-BELL
|
||||
ZERO? STACK \FALSE
|
||||
ICALL1 RT-ZERO-SECONDS
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-THAMES-ONE,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
PRINTI "You are"
|
||||
ICALL1 RT-IN-VEHICLE-MSG
|
||||
PRINTI "on the Thames, just south of the Embankment."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: CALL1 RT-PROCESS-BOAT-ON-THAMES
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-THAMES-TWO,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
PRINTI "You are"
|
||||
ICALL1 RT-IN-VEHICLE-MSG
|
||||
PRINTI "on the Thames. Downstream you can see London Bridge."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: CALL1 RT-PROCESS-BOAT-ON-THAMES
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-THAMES-THREE,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
PRINTI "You are"
|
||||
ICALL1 RT-IN-VEHICLE-MSG
|
||||
PRINTI "underneath London Bridge."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-UNDER \?PRD7
|
||||
EQUAL? GL-PRSO,RM-LONDON-BRIDGE /?CTR4
|
||||
?PRD7: EQUAL? GL-PRSA,V?LOOK-UP \?CCL5
|
||||
EQUAL? GL-PRSO,ROOMS,RM-LONDON-BRIDGE \?CCL5
|
||||
?CTR4: PRINTI "You see nothing of interest"
|
||||
IN? TH-CLUMP-OF-MOSS,RM-THAMES-THREE \?CCL14
|
||||
FSET TH-CLUMP-OF-MOSS,FL-SEEN
|
||||
PRINTI ", other than a clump of moss lodged among the supports overhead."
|
||||
CRLF
|
||||
JUMP ?CND12
|
||||
?CCL14: PRINTC 46
|
||||
CRLF
|
||||
?CND12: ICALL1 RT-PROCESS-BOAT-ON-THAMES
|
||||
RTRUE
|
||||
?CCL5: CALL1 RT-PROCESS-BOAT-ON-THAMES
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-THAMES-FOUR,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
PRINTI "You are"
|
||||
ICALL1 RT-IN-VEHICLE-MSG
|
||||
PRINTI "on the Thames, just south of Traitor's Gate."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: CALL1 RT-PROCESS-BOAT-ON-THAMES
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-THAMES-FIVE,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
PRINTI "You are"
|
||||
ICALL1 RT-IN-VEHICLE-MSG
|
||||
PRINTI "on the Thames, in danger of drifting out to sea."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: CALL1 RT-PROCESS-BOAT-ON-THAMES
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-SHERMANS-HOUSE,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
EQUAL? CONTEXT,K-M-DESC-1 \?CCL6
|
||||
ICALL2 RT-THIS-IS-IT,CH-SHERMAN
|
||||
FSET CH-SHERMAN,FL-SEEN
|
||||
FSET RM-SHERMANS-HOUSE,FL-SEEN
|
||||
PRINTI "You enter the cramped quarters of Sherman's shop. The old animal-trainer's eyes brighten up when he sees you."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTR """You've probably come looking for Toby,"" he says. ""But I'm afraid I won't be able to help you this time. Toby's not feeling too well, and all my other animals are already out on loan. All I have left is a half-trained pigeon."""
|
||||
?CCL6: EQUAL? CONTEXT,K-M-DESC-2,K-M-DESC-3 \FALSE
|
||||
PRINTI "Sherman's shop is dingy and cramped. Dozens of empty cages are stacked up against the walls."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-ENTERED \?CCL10
|
||||
FSET? RM-SHERMANS-HOUSE,FL-ASLEEP \?CCL13
|
||||
FCLEAR RM-SHERMANS-HOUSE,FL-ASLEEP
|
||||
RFALSE
|
||||
?CCL13: FSET? CH-SHERMAN,FL-ASLEEP /FALSE
|
||||
FSET? CH-TRAINED-PIGEON,FL-ALIVE \?CCL17
|
||||
CRLF
|
||||
PRINTI "Sherman says, ""Welcome back. It's a pleasure to see you again."""
|
||||
CRLF
|
||||
CALL2 RT-THIS-IS-IT,CH-SHERMAN
|
||||
RSTACK
|
||||
?CCL17: CALL2 RT-SHERMAN-RAGE,TRUE-VALUE
|
||||
RSTACK
|
||||
?CCL10: ZERO? CONTEXT \FALSE
|
||||
EQUAL? GL-PRSA,V?ENTER \?CCL21
|
||||
EQUAL? GL-PLACE-CUR,RM-PINCHIN-LANE \FALSE
|
||||
ICALL2 RT-DO-WALK,P?WEST
|
||||
RTRUE
|
||||
?CCL21: EQUAL? GL-PRSA,V?EXIT \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-SHERMANS-HOUSE \FALSE
|
||||
ICALL2 RT-DO-WALK,P?EAST
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-THREADNEEDLE-ST,CONTEXT
|
||||
ZERO? CONTEXT \?CND1
|
||||
EQUAL? GL-PRSA,V?ENTER \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-BANK-OF-ENGLAND \FALSE
|
||||
ICALL2 RT-DO-WALK,P?SOUTH
|
||||
RTRUE
|
||||
?CND1: CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL9
|
||||
FSET CH-BANK-GUARD,FL-SEEN
|
||||
FSET CH-URCHINS,FL-SEEN
|
||||
FSET TH-GUARDS-POCKET,FL-SEEN
|
||||
EQUAL? CONTEXT,K-M-DESC-1,K-M-DESC-2 \?CCL12
|
||||
EQUAL? GL-PLACE-PRV,RM-BANK-OF-ENGLAND \?CCL15
|
||||
PRINTI "You emerge into"
|
||||
JUMP ?CND13
|
||||
?CCL15: PRINTI "You enter"
|
||||
?CND13: PRINTI " Threadneedle Street and are now"
|
||||
JUMP ?CND10
|
||||
?CCL12: PRINTI "You are"
|
||||
?CND10: PRINTI " in front of the Bank of England. The entrance to the bank is to the north, Cheapside leads off to the west, and King William Street "
|
||||
CALL1 RT-TIME-OF-DAY
|
||||
ZERO? STACK \?CCL18
|
||||
PRINTI "disappears off into the darkness"
|
||||
JUMP ?CND16
|
||||
?CCL18: PRINTI "continues"
|
||||
?CND16: PRINTI " to the southeast. On the wall is a small sign."
|
||||
CRLF
|
||||
EQUAL? CONTEXT,K-M-DESC-1 /?CTR20
|
||||
IN? CH-BANK-GUARD,RM-THREADNEEDLE-ST \?CCL21
|
||||
?CTR20: CRLF
|
||||
PRINTI "A bank guard is lounging up against the wall, idly jangling some keys in his pocket while he watches a group of urchins playing in the street."
|
||||
CRLF
|
||||
FSET? CH-WIGGINS,FL-BROKEN \FALSE
|
||||
CRLF
|
||||
PRINT K-URCHIN-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL21: CRLF
|
||||
PRINTI "A group of urchins is playing in the street."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL9: EQUAL? CONTEXT,K-M-BEG \?CCL27
|
||||
IN? CH-HOLMES,RM-LAIR \?CCL27
|
||||
FSET? TH-TOPAZ,FL-LOCKED /?CCL27
|
||||
ICALL1 RT-WIGGINS-HELP-MSG
|
||||
CRLF
|
||||
FSET TH-TOPAZ,FL-LOCKED
|
||||
RFALSE
|
||||
?CCL27: EQUAL? CONTEXT,K-M-ENTERED \FALSE
|
||||
EQUAL? GL-PLACE-PRV,RM-BANK-OF-ENGLAND \FALSE
|
||||
FSET? TH-TOPAZ,FL-ASLEEP /FALSE
|
||||
ICALL1 RT-KIDNAP
|
||||
FSET TH-TOPAZ,FL-ASLEEP
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-LONDON-BRIDGE,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
EQUAL? CONTEXT,K-M-DESC-1,K-M-DESC-2 \?CCL6
|
||||
EQUAL? GL-PLACE-PRV,RM-LAIR \?CCL9
|
||||
PRINTR "When you emerge from the lair you are momentarily disoriented, blinking your eyes in the bright sunlight. After a few moments, you realize you are standing on London bridge, but you have no idea from which direction you came."
|
||||
?CCL9: PRINTI "You"
|
||||
ICALL1 RT-DRIVE-WALK-MSG?
|
||||
PRINTI "up onto"
|
||||
JUMP ?CND4
|
||||
?CCL6: PRINTI "You are"
|
||||
ICALL1 RT-IN-VEHICLE-MSG
|
||||
PRINTI "on"
|
||||
?CND4: PRINTI " London Bridge. "
|
||||
CALL1 RT-TIME-OF-DAY
|
||||
EQUAL? STACK,1,2,3 \?CCL12
|
||||
PRINTI "The view of the river from here is spectacular, and hoards of sightseers are here with you to share the view."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL12: PRINTI "The fog is so dense you can barely see the river from here."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: ZERO? CONTEXT \?PRD16
|
||||
EQUAL? GL-PRSA,V?LOOK-UNDER,V?LOOK-DOWN \?PRD16
|
||||
EQUAL? GL-PRSO,RM-LONDON-BRIDGE /?CTR13
|
||||
?PRD16: EQUAL? CONTEXT,K-M-BEG \?CCL14
|
||||
EQUAL? GL-PRSA,V?LOOK-DOWN \?CCL14
|
||||
EQUAL? GL-PRSO,ROOMS \?CCL14
|
||||
?CTR13: PRINTR "You see the Thames flowing slowly by, just as it has done for centuries past."
|
||||
?CCL14: ZERO? CONTEXT \FALSE
|
||||
ZERO? GL-NOW-PRSI? \?CCL26
|
||||
EQUAL? GL-PRSA,V?ENTER \?CCL29
|
||||
EQUAL? GL-PLACE-CUR,RM-LOWER-THAMES-ST \?CCL32
|
||||
ICALL2 RT-DO-WALK,P?SOUTH
|
||||
RTRUE
|
||||
?CCL32: EQUAL? GL-PLACE-CUR,RM-THAMES-THREE \FALSE
|
||||
PRINTR "You can't climb onto the bridge."
|
||||
?CCL29: EQUAL? GL-PRSA,V?EXIT \?CCL36
|
||||
EQUAL? GL-PLACE-CUR,RM-LONDON-BRIDGE \FALSE
|
||||
ICALL2 RT-DO-WALK,P?NORTH
|
||||
RTRUE
|
||||
?CCL36: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||||
PRINT K-RICOCHET-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
?CCL26: ZERO? GL-NOW-PRSI? /FALSE
|
||||
IN? CH-PLAYER,TH-BOAT \FALSE
|
||||
EQUAL? GL-PRSA,V?PUT,V?PUT-ON \FALSE
|
||||
PRINTR "You can't attach anything to the bridge."
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-SWAN-LANE,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
EQUAL? CONTEXT,K-M-DESC-1,K-M-DESC-2 \?CCL6
|
||||
EQUAL? GL-PLACE-PRV,RM-LOWER-THAMES-ST \?CCL9
|
||||
PRINTI "With increasing apprehension, you descend"
|
||||
JUMP ?CND7
|
||||
?CCL9: PRINTI "With considerable relief, you emerge"
|
||||
?CND7: PRINTI " into"
|
||||
JUMP ?CND4
|
||||
?CCL6: PRINTI "With increasing apprehension, you are standing in"
|
||||
?CND4: PRINTI " Swan Lane, which runs along the waterfront of the Thames."
|
||||
CRLF
|
||||
CRLF
|
||||
EQUAL? CONTEXT,K-M-DESC-1 \?CND10
|
||||
PRINTI "It is a seedy, disreputable, run-down part of town that normally you wouldn't be caught dead in. After a moment's reflection, you wish you hadn't thought of it in quite those terms."
|
||||
CRLF
|
||||
CRLF
|
||||
?CND10: PRINTI "To the west is the entrance to one of the least savory buildings you have ever seen. There is a faded sign above the door that informs you that the establishment was, in better days, known as the Bar of Gold."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "Fortunately, it is only a short walk back up the stairs to Lower Thames Street."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-ENTERED \?CCL13
|
||||
EQUAL? GL-PLACE-PRV,RM-BAR-OF-GOLD \?CCL13
|
||||
IN? CH-WIGGINS,RM-SWAN-LANE \?CCL13
|
||||
CRLF
|
||||
ICALL2 RT-CTHEO-PRINT,CH-WIGGINS
|
||||
PRINTI " says, ""Blimey!! I didn't think you would make it out of there alive."""
|
||||
CRLF
|
||||
SET 'GL-PUPPY,CH-WIGGINS
|
||||
RETURN GL-PUPPY
|
||||
?CCL13: ZERO? CONTEXT \FALSE
|
||||
EQUAL? GL-PRSA,V?ENTER \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-BAR-OF-GOLD \FALSE
|
||||
ICALL2 RT-DO-WALK,P?EAST
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-BAR-OF-GOLD,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
EQUAL? CONTEXT,K-M-DESC-1 \?CND4
|
||||
FSET CH-DENKEEPER,FL-SEEN
|
||||
FSET TH-OPIUM-GAS,FL-SEEN
|
||||
?CND4: EQUAL? CONTEXT,K-M-DESC-1,K-M-DESC-2 \?CCL8
|
||||
PRINTI "After fighting the urge to turn and run, you enter and find yourself "
|
||||
JUMP ?CND6
|
||||
?CCL8: PRINTI "You are standing - rather nervously - "
|
||||
?CND6: PRINTI "in the Bar of Gold, the most infamous opium den in London. The proprietor is a most unsavory character who "
|
||||
EQUAL? CONTEXT,K-M-DESC-1,K-M-DESC-2 \?CCL11
|
||||
PRINTI "gives you a sidelong glance as you enter and then ignores you"
|
||||
JUMP ?CND9
|
||||
?CCL11: PRINTI "hasn't given you a second look since you came in"
|
||||
?CND9: PRINTC 46
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-ENTERING \?CCL13
|
||||
EQUAL? GL-PUPPY,CH-WIGGINS \?CCL13
|
||||
ICALL2 RT-THEO-PRINT,CH-WIGGINS
|
||||
PRINTI " says, ""You must be stark raving bonkers. That's the most dangerous place in London. I'll wait out here, thank you very much!"""
|
||||
CRLF
|
||||
CRLF
|
||||
SET 'GL-PUPPY,FALSE-VALUE
|
||||
RETURN GL-PUPPY
|
||||
?CCL13: ZERO? CONTEXT \FALSE
|
||||
EQUAL? GL-PRSA,V?ENTER \?CCL19
|
||||
EQUAL? GL-PLACE-CUR,RM-SWAN-LANE \FALSE
|
||||
ICALL2 RT-DO-WALK,P?WEST
|
||||
RTRUE
|
||||
?CCL19: EQUAL? GL-PRSA,V?EXIT \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-BAR-OF-GOLD \FALSE
|
||||
ICALL2 RT-DO-WALK,P?EAST
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-LAIR,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
EQUAL? CONTEXT,K-M-DESC-1 \?CCL6
|
||||
FSET CH-MORIARTY,FL-SEEN
|
||||
FSET TH-LAIR-KEY,FL-SEEN
|
||||
FSET TH-CROWN-JEWELS,FL-SEEN
|
||||
FSET TH-MORIARTY-DESK,FL-SEEN
|
||||
FSET TH-ROPE,FL-SEEN
|
||||
PRINTI "At last you come face to face with the evil Professor. He is sitting placidly behind his desk, looking at you as if you were some botanical specimen."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "As you look around the room, you see Sherlock Holmes tied to a chair. He is only inches away from the Crown Jewels, which Moriarty has spread out on his desk, the better to taunt Holmes."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "Holmes looks up and says, ""Ah, there you are Watson."" He turns his head towards Moriarty and says, ""You see, Professor, you grossly underestimate the intelligence and determination of your fellow countrymen."""
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTR """Watson,"" he continues. ""The Professor and I have just been chatting about why he led us on this merry chase. If you care to ask him, I'm sure he would be happy to fill you in as well."""
|
||||
?CCL6: EQUAL? CONTEXT,K-M-DESC-3 \FALSE
|
||||
PRINTI "The room is simply, but elegantly, furnished."
|
||||
FSET? CH-HOLMES,FL-LOCKED \?CND8
|
||||
SET 'GL-PUPPY-MSG?,FALSE-VALUE
|
||||
PRINTC 32
|
||||
CALL2 RT-PICK-NEXT,GL-HOLMES-DESC-TXT
|
||||
PRINT STACK
|
||||
PRINT K-SECURELY-BOUND-MSG
|
||||
PRINTC 46
|
||||
?CND8: CRLF
|
||||
RFALSE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-ENTERED \?CND1
|
||||
SET 'GL-PUPPY,CH-HOLMES
|
||||
?CND1: EQUAL? CONTEXT,K-M-BEG \FALSE
|
||||
EQUAL? GL-PRSA,V?TAKE,V?SHOW \?CCL16
|
||||
EQUAL? GL-PRSO,TH-BREATH /FALSE
|
||||
FSET? GL-PRSO,FL-BODYPART /FALSE
|
||||
FSET? GL-PRSO,FL-WORN /FALSE
|
||||
FSET? CH-MORIARTY,FL-LOCKED /FALSE
|
||||
FSET? CH-MORIARTY,FL-ASLEEP /FALSE
|
||||
CALL RT-META-IN?,GL-PRSO,GL-WINNER
|
||||
ZERO? STACK /?CCL30
|
||||
CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,1,0
|
||||
ICALL RT-ALARM-SET-REL,RT-I-TAKE-WATSONS-STUFF,STACK
|
||||
MOVE GL-PRSO,GL-WINNER
|
||||
PRINTI "Moriarty's normally emotionless features dissolve in rage. He shouts at Akbar, ""Why didn't you take that from him when you brought him in?"""
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTR "The outburst startles Akbar into momentary inaction, but he quickly recovers and starts to come towards you with a violent look in his eyes."
|
||||
?CCL30: PRINTI "Akbar steps in your way"
|
||||
FSET? TH-WATSONS-HAT,FL-WORN \?CND31
|
||||
PRINTI ", says, ""Pardon me, honourable sir,"""
|
||||
?CND31: PRINTI " and stops you from taking "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTR "."
|
||||
?CCL16: EQUAL? GL-PRSA,V?RELEASE \?CCL34
|
||||
EQUAL? GL-PRSO,TH-BREATH /FALSE
|
||||
?CCL34: EQUAL? GL-PRSA,V?UNTIE,V?RELEASE \?CCL38
|
||||
EQUAL? GL-PRSO,TH-ROPE /FALSE
|
||||
FSET? GL-PRSO,FL-LOCKED \?CCL43
|
||||
FSET? CH-AKBAR,FL-ASLEEP /?CTR45
|
||||
FSET? CH-AKBAR,FL-LOCKED \?CCL46
|
||||
?CTR45: FCLEAR GL-PRSO,FL-LOCKED
|
||||
ICALL RT-CYOU-MSG,STR?720,STR?721
|
||||
ICALL1 RT-THEO-PRINT
|
||||
EQUAL? GL-PRSO,TH-ROPE-AUX1 \?CCL51
|
||||
SET 'TH-ROPE-AUX1,TH-ROPE-AUX2
|
||||
SET 'TH-ROPE-AUX2,-1
|
||||
EQUAL? TH-ROPE-AUX1,-1 \?CND49
|
||||
MOVE TH-ROPE,CH-PLAYER
|
||||
FCLEAR TH-ROPE,FL-NODESC
|
||||
PRINTI ", keeping "
|
||||
ICALL2 RT-THEO-PRINT,TH-ROPE
|
||||
JUMP ?CND49
|
||||
?CCL51: EQUAL? GL-PRSO,TH-ROPE-AUX2 \?CND49
|
||||
SET 'TH-ROPE-AUX2,-1
|
||||
?CND49: PRINTC 46
|
||||
CRLF
|
||||
EQUAL? GL-PRSO,CH-MORIARTY,CH-AKBAR \TRUE
|
||||
FSET? CH-AKBAR,FL-ASLEEP /TRUE
|
||||
CRLF
|
||||
EQUAL? GL-PRSO,CH-MORIARTY \?CCL61
|
||||
PRINTI "Bad move. As soon as he is free, Moriarty"
|
||||
JUMP ?CND59
|
||||
?CCL61: PRINTI "Akbar immediately unties Moriarty, who"
|
||||
?CND59: PRINTI " unlocks his desk and pulls out a pistol. ""Thank you for releasing me, gentlemen,"" he says, waving the gun at you. ""Very sporting of you."" He glances at his pocketwatch. ""We shouldn't have too long to wait."" Minutes later you hear newsboys running through the streets shouting about the resignation of the Prime Minister."
|
||||
CRLF
|
||||
ICALL1 RT-QSR
|
||||
RTRUE
|
||||
?CCL46: CALL1 RT-ROPE-MSG
|
||||
RSTACK
|
||||
?CCL43: EQUAL? GL-PRSA,V?RELEASE /FALSE
|
||||
ICALL1 RT-CTHEO-PRINT
|
||||
ICALL2 RT-ISNT-ARENT-MSG,GL-PRSO
|
||||
PRINTR "tied up."
|
||||
?CCL38: EQUAL? GL-PRSA,V?TIE-UP \?CCL65
|
||||
EQUAL? GL-PRSI,TH-ROPE,ROOMS /?CCL65
|
||||
CALL1 RT-IMPOSSIBLE-MSG
|
||||
RSTACK
|
||||
?CCL65: EQUAL? GL-PRSA,V?TIE,V?TIE-UP \?CCL69
|
||||
EQUAL? GL-PRSO,CH-PLAYER,CH-ME /?CTR68
|
||||
EQUAL? GL-PRSI,CH-PLAYER,CH-ME \?CCL69
|
||||
?CTR68: PRINTR "We'll assume you're joking."
|
||||
?CCL69: EQUAL? GL-PRSA,V?TIE,V?TIE-UP \FALSE
|
||||
CALL2 RT-VISIBLE?,TH-ROPE
|
||||
ZERO? STACK /?CCL78
|
||||
FSET? CH-AKBAR,FL-ASLEEP /?CTR80
|
||||
FSET? CH-AKBAR,FL-LOCKED \?CCL81
|
||||
?CTR80: EQUAL? CH-HOLMES,GL-PRSI,GL-PRSO \?CND84
|
||||
PRINTR "Surely you jest."
|
||||
?CND84: EQUAL? TH-ROPE-AUX1,-1 \?CCL88
|
||||
SET 'TH-ROPE-AUX1,GL-PRSO
|
||||
JUMP ?CND86
|
||||
?CCL88: EQUAL? TH-ROPE-AUX2,-1 \?CCL90
|
||||
SET 'TH-ROPE-AUX2,GL-PRSO
|
||||
?CND86: EQUAL? GL-PRSI,ROOMS \?CND91
|
||||
SET 'GL-PRSI,FALSE-VALUE
|
||||
?CND91: MOVE TH-ROPE,GL-PLACE-CUR
|
||||
FSET TH-ROPE,FL-NODESC
|
||||
FSET GL-PRSO,FL-LOCKED
|
||||
EQUAL? GL-PRSI,FALSE-VALUE,TH-ROPE \?CCL95
|
||||
ICALL RT-CYOU-MSG,STR?722,STR?723
|
||||
PRINTI "up "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTR "."
|
||||
?CCL90: ICALL2 RT-CTHEO-PRINT,TH-ROPE
|
||||
PRINTR " is not long enough."
|
||||
?CCL95: EQUAL? TH-ROPE-AUX2,-1 /?CCL97
|
||||
ICALL RT-CYOU-MSG,STR?722,STR?723
|
||||
PRINTI "up "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTI ", but "
|
||||
ICALL2 RT-THEO-PRINT,TH-ROPE
|
||||
PRINTI " is not long enough to tie up "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTR " as well."
|
||||
?CCL97: FSET GL-PRSI,FL-LOCKED
|
||||
PRINTI "You tie "
|
||||
ICALL1 RT-THEO-PRINT
|
||||
PRINTI " to "
|
||||
ICALL1 RT-THEI-PRINT
|
||||
PRINTR "."
|
||||
?CCL81: CALL1 RT-ROPE-MSG
|
||||
RSTACK
|
||||
?CCL78: PRINTI "You don't have "
|
||||
ICALL2 RT-A-PRINT,TH-ROPE
|
||||
PRINTR "."
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-NAVE,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
EQUAL? CONTEXT,K-M-DESC-1 \?CCL6
|
||||
FSET TH-NEWTON-TOMB,FL-SEEN
|
||||
PRINTI "You enter the Abbey and pause in the Nave, struck by the sheer magnificence of the building. Massive Purbeck columns march the length of the Nave, and they rise in perfect proportion to meet each other in a series of pointed arches that are the hallmark of the Gothic style."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTR "The interior of the Abbey is dark, cold, and gloomy - but after a few moments your eyes adjust and you can make out a tomb at the far end of the room."
|
||||
?CCL6: EQUAL? CONTEXT,K-M-DESC-2,K-M-DESC-3 \FALSE
|
||||
EQUAL? CONTEXT,K-M-DESC-2 \?CCL10
|
||||
EQUAL? GL-PLACE-PRV,RM-BROAD-SANCTUARY \?CCL13
|
||||
PRINTI "You walk through the massive door and find yourself once again in"
|
||||
JUMP ?CND8
|
||||
?CCL13: PRINTI "You return to"
|
||||
JUMP ?CND8
|
||||
?CCL10: EQUAL? CONTEXT,K-M-DESC-3 \?CND8
|
||||
PRINTI "You are standing in"
|
||||
?CND8: PRINTI " the Nave. Amidst the massive columns, one tomb in particular catches your attention."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-ENTERED \?CCL16
|
||||
SET 'PLAYER-IN-ABBEY,TRUE-VALUE
|
||||
RFALSE
|
||||
?CCL16: EQUAL? CONTEXT,K-M-EXIT \FALSE
|
||||
EQUAL? GL-P-WALK-DIR,P?OUT,P?WEST \FALSE
|
||||
SET 'PLAYER-IN-ABBEY,FALSE-VALUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-EVANGELIST-CHAPEL,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
EQUAL? CONTEXT,K-M-DESC-1 \?CCL6
|
||||
FSET TH-BANK-OF-CANDLES,FL-SEEN
|
||||
FSET TH-VERE-TOMB,FL-SEEN
|
||||
PRINTI "You enter the Evangelist Chapel and wonder what it is about this room that makes you feel it is somehow different from the rest of the Abbey."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL6: EQUAL? CONTEXT,K-M-DESC-2 \?CCL8
|
||||
PRINTI "You return to the welcome warmth provided by the array of candles in the Evangelist Chapel."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL8: PRINTI "Light! Warmth! There is a bank of candles here lit by devoted worshippers. The candles warm the room so effectively that after a few moments you actually become uncomfortable."
|
||||
CRLF
|
||||
CRLF
|
||||
PRINTI "One of the most unusual tombs in the Abbey is here."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: EQUAL? CONTEXT,K-M-BEG \FALSE
|
||||
ICALL2 RT-PAPER-WARMING,TH-WHITE-PAPER
|
||||
ICALL2 RT-PAPER-WARMING,TH-BLUE-PAPER
|
||||
ICALL2 RT-PAPER-WARMING,TH-ORANGE-PAPER
|
||||
ICALL2 RT-PAPER-WARMING,TH-YELLOW-PAPER
|
||||
ICALL2 RT-PAPER-WARMING,TH-BROWN-PAPER
|
||||
ICALL2 RT-PAPER-WARMING,TH-GREEN-PAPER
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-HENRY-VII-CHAPEL,CONTEXT
|
||||
CALL2 RT-DESCFCN-CONTEXT,CONTEXT
|
||||
ZERO? STACK /?CCL3
|
||||
EQUAL? CONTEXT,K-M-DESC-1 \?CND4
|
||||
FSET TH-HENRY-VII-TOMB,FL-SEEN
|
||||
?CND4: EQUAL? CONTEXT,K-M-DESC-1,K-M-DESC-2 \?CCL8
|
||||
PRINTI "You enter"
|
||||
JUMP ?CND6
|
||||
?CCL8: PRINTI "You are in"
|
||||
?CND6: PRINTI " Henry VII's chapel, which is one of the most beautiful chapels in the world. The ceiling is a masterpiece of delicate fan vaulting, and the Renaissance gilt-bronze tomb is obviously the work of one of the Italian masters."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: EQUAL? GL-PRSA,V?LOOK-UP \FALSE
|
||||
PRINT K-BREATH-TAKING-MSG
|
||||
CRLF
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-EX-ENTER-BANK-OF-ENGLAND
|
||||
LESS? CH-BANK-GUARD-AUX1,4 \?CCL3
|
||||
PRINTI "The guard stops you as you try to enter. ""Excuse me, sir. You can't go in there. And don't even THINK about trying to bribe me."""
|
||||
CRLF
|
||||
ICALL2 RT-THIS-IS-IT,CH-BANK-GUARD
|
||||
RFALSE
|
||||
?CCL3: IN? TH-BOX-KEY,TH-GUARDS-POCKET \?CCL5
|
||||
PRINTI "Holmes takes you to one side and whispers, ""It is obvious, dear fellow, that it would be pointless to enter the bank with no means of unlocking anything we may find inside."""
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL5: IN? CH-BANK-GUARD,RM-THREADNEEDLE-ST /?CCL7
|
||||
RETURN RM-BANK-OF-ENGLAND
|
||||
?CCL7: PRINTI "As soon as you enter, the guard leaves."
|
||||
CRLF
|
||||
CRLF
|
||||
REMOVE CH-BANK-GUARD
|
||||
RETURN RM-BANK-OF-ENGLAND
|
||||
|
||||
|
||||
.FUNCT RT-AC-RM-BUCKINGHAM-PALACE,CONTEXT
|
||||
ZERO? CONTEXT \FALSE
|
||||
EQUAL? GL-PRSA,V?ENTER \?CCL5
|
||||
EQUAL? GL-PLACE-CUR,RM-QUEENS-GARDENS \FALSE
|
||||
ICALL2 RT-DO-WALK,P?WEST
|
||||
RTRUE
|
||||
?CCL5: EQUAL? GL-PRSA,V?EXIT \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-BUCKINGHAM-PALACE \FALSE
|
||||
ICALL2 RT-DO-WALK,P?EAST
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-EX-RM-ENTER-BUCKINGHAM-PALACE
|
||||
EQUAL? GL-PRSO,P?WEST,P?IN \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-QUEENS-GARDENS \FALSE
|
||||
ICALL2 RT-CTHEO-PRINT,CH-PALACE-GUARD
|
||||
PRINTI " steps into your path and says, ""I'm sorry, but I've been instructed to let no one into the Palace unless I receive certain items of interest to the Crown."""
|
||||
CRLF
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-EX-RM-STEER-BOAT
|
||||
ICALL2 RT-ALARM-CLR,RT-I-MOVE-DOWNSTREAM
|
||||
PRINTI "[To move the boat, ROW or PADDLE in a given direction, or LAND it.]"
|
||||
CRLF
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-EX-RM-LAND-BOAT
|
||||
PRINTI "[Land the Boat.]"
|
||||
CRLF
|
||||
ICALL1 RT-LAND-BOAT
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-EX-RM-LAUNCH-BOAT
|
||||
IN? CH-PLAYER,TH-BOAT \?CCL3
|
||||
PRINTI "[Launch the Boat.]"
|
||||
CRLF
|
||||
ICALL1 RT-LAUNCH-BOAT
|
||||
RFALSE
|
||||
?CCL3: PRINTI "The last man who walked on water was killed by a bunch of Romans. Why don't you play it safe and use a boat?"
|
||||
CRLF
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT RT-EX-PARLOUR-ENTRY
|
||||
FSET? CH-HOLMES,FL-ASLEEP \?CCL3
|
||||
ICALL2 RT-CTHEO-PRINT,CH-HUDSON
|
||||
PRINT K-HUDSON-WORRIED-MSG
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL3: FSET? LG-PARLOUR-DOOR,FL-OPENED /?CCL5
|
||||
ICALL2 RT-CTHEO-PRINT,LG-PARLOUR-DOOR
|
||||
PRINTI " is closed."
|
||||
CRLF
|
||||
RFALSE
|
||||
?CCL5: EQUAL? GL-PRSO,P?NORTH,P?IN \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-ENTRY-HALL \FALSE
|
||||
RETURN RM-PARLOUR
|
||||
|
||||
|
||||
.FUNCT RT-EX-LEAVE-EMBANKMENT
|
||||
FSET? TH-SUIT-OF-ARMOUR,FL-WORN \?CND1
|
||||
PRINT K-HEAVY-ARMOUR-MSG
|
||||
CRLF
|
||||
RFALSE
|
||||
?CND1: IN? GL-WINNER,TH-BOAT \?CND3
|
||||
ICALL RT-PERFORM,V?EXIT,TH-BOAT
|
||||
IN? GL-WINNER,RM-THE-EMBANKMENT \FALSE
|
||||
?CND3: EQUAL? GL-PRSO,P?NORTH \?CCL9
|
||||
EQUAL? GL-PLACE-CUR,RM-THE-EMBANKMENT \?CCL9
|
||||
RETURN RM-FLEET-STREET
|
||||
?CCL9: EQUAL? GL-PRSO,P?EAST \FALSE
|
||||
EQUAL? GL-PLACE-CUR,RM-THE-EMBANKMENT \FALSE
|
||||
RETURN RM-UPPER-THAMES-ST
|
||||
|
||||
.ENDI
|
901
places2.zil
Normal file
901
places2.zil
Normal file
|
@ -0,0 +1,901 @@
|
|||
;*****************************************************************************
|
||||
; "game : SHERLOCK!"
|
||||
; "file : PLACES2.ZIL"
|
||||
; "auth : $Author: RAB $"
|
||||
; "date : $Date: 28 Oct 1987 4:31:22 $"
|
||||
; "rev : $Revision: 1.72 $"
|
||||
; "vers : 1.00"
|
||||
;*****************************************************************************
|
||||
|
||||
<ROUTINE RT-SURGE ()
|
||||
<COND (<EQUAL? <RT-TIME-OF-DAY> 0>
|
||||
<TELL
|
||||
"The fog is so thick that even your light cannot penetrate it,
|
||||
so you retrace your steps." CR>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<TELL "Surging crowds of ">
|
||||
<COND (<EQUAL? ,GL-PLACE-CUR ,RM-KENSINGTON-GARDENS>
|
||||
<TELL "haughty nannies">)
|
||||
(<EQUAL? ,GL-PLACE-CUR ,RM-COVENT-GARDEN>
|
||||
<TELL "housewives intent on a bargain">)
|
||||
(T
|
||||
<TELL "tourists">)>
|
||||
<TELL " block your path." CR>
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-MADAME-TUSSAUDS ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-MADAME-TUSSAUDS" .CONTEXT>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1>
|
||||
<MC-MAKE ,TH-ASH ,FL-SEEN>
|
||||
<MC-MAKE ,TH-WILLIAM-STATUE ,FL-SEEN>
|
||||
<MC-MAKE ,TH-WALTER-STATUE ,FL-SEEN>
|
||||
<MC-MAKE ,TH-ELIZABETH-STATUE ,FL-SEEN>
|
||||
<MC-MAKE ,TH-DRAKE-STATUE ,FL-SEEN>
|
||||
<MC-MAKE ,TH-JOHN-STATUE ,FL-SEEN>)>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1 ,K-M-DESC-2>
|
||||
<COND (<EQUAL? ,GL-PLACE-PRV ,RM-MARYLEBONE-RD>
|
||||
<TELL "You come in off the street and are now standing in">)
|
||||
(T
|
||||
<TELL "You leave the Chamber of Horrors and go back into">)>)
|
||||
(T
|
||||
<TELL "You are in">)>
|
||||
<TELL " the lobby." CR CR "All around you are wax statues of
|
||||
famous people. To the west is a dark and ominous-looking doorway with a sign
|
||||
over it. The exit to the street is to the south." CR>
|
||||
<COND (<AND <MC-IS? ,TH-ASH ,FL-ASLEEP>
|
||||
<IN? ,CH-HOLMES ,GL-PLACE-CUR>>
|
||||
<MC-MAKE ,TH-ASH ,FL-SEEN>
|
||||
<MC-UNMAKE ,TH-ASH ,FL-ASLEEP>
|
||||
<MC-UNMAKE ,TH-ASH ,FL-NODESC>
|
||||
<TELL CR CTHE ,CH-HOLMES
|
||||
" drops to his hands and knees and begins a minute examination of the floor.
|
||||
After a few moments he cries, \"Aha! Look here, Watson.\" He points to a
|
||||
miniscule speck of ash on the floor." CR>
|
||||
<SETG GL-PUPPY-MSG? <>>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>)
|
||||
(<AND <EQUAL? .CONTEXT ,K-M-ENTERED>
|
||||
<MC-ISNOT? ,TH-TOBACCO ,FL-ASLEEP>
|
||||
<MC-IS? ,TH-TOBACCO ,FL-LIGHTED>>
|
||||
<RT-UPDATE-SCORE 1>
|
||||
<MC-MAKE ,TH-TOBACCO ,FL-ASLEEP>)
|
||||
(<F? .CONTEXT>
|
||||
<COND (<MC-VERB? ENTER>
|
||||
<COND (<MC-HERE? ,RM-MARYLEBONE-RD>
|
||||
<RT-DO-WALK ,P?NORTH>
|
||||
<RTRUE>)
|
||||
(<MC-HERE? ,RM-CHAMBER-OF-HORRORS>
|
||||
<RT-DO-WALK ,P?EAST>
|
||||
<RTRUE>)>)>)>
|
||||
<RFALSE>>
|
||||
|
||||
; "FL-OPENED = player exited room while librarian was talking to him"
|
||||
<ROUTINE RT-AC-RM-MANUSCRIPT-ROOM ("OPTIONAL" (CONTEXT <>) "AUX" VALUE)
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-MANUSCRIPT-ROOM" .CONTEXT>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1 ,K-M-DESC-2>
|
||||
<TELL "The deserted corridor leads to">)
|
||||
(T
|
||||
<TELL "You are in">)>
|
||||
<TELL
|
||||
" the manuscript room, which contains a dusty collection of
|
||||
old books on obscure subjects. ">
|
||||
<COND (<IN? ,CH-LIBRARIAN ,RM-MANUSCRIPT-ROOM>
|
||||
<TELL
|
||||
"There is an old librarian here, on whose desk sits a handwritten sign that
|
||||
reads \"Quiet, please.\" ">)>
|
||||
<TELL "There are thousands of books behind glass cases">
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1>
|
||||
<TELL ", but one is lying unattended on a table">)>
|
||||
<TELL ". The only exit is to the west." CR>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1>
|
||||
<MC-MAKE ,CH-LIBRARIAN ,FL-SEEN>
|
||||
<MC-MAKE ,TH-CLUE-BOOK ,FL-SEEN>
|
||||
;<MC-MAKE ,TH-LIBRARY-OBJ ,FL-SEEN>
|
||||
<MC-MAKE ,TH-LIBRARY-TABLE ,FL-SEEN>
|
||||
<TELL
|
||||
CR "The librarian - who is as dusty as the books - looks up in surprise as
|
||||
you come in. He ">
|
||||
<COND (<MC-IS? ,TH-COTTON-BALLS ,FL-WORN>
|
||||
<TELL "whispers">)
|
||||
(T
|
||||
<TELL "says loudly">)>
|
||||
<TELL
|
||||
", \"Oh, I say! Hello! I don't get many visitors here. Is there
|
||||
something I can help you with? Some information about the Jubilee,
|
||||
perhaps? It's quite rare, you know, for a British ruler to
|
||||
celebrate 50 years on the throne. Unique, in fact. The closest anyone
|
||||
else came was Elizabeth, who ruled 45 years - although our records are
|
||||
somewhat vague before the year 900. The Anglo-Saxon chronicles do get rather
|
||||
sketchy, what? Still, they're the best we have. I think I can find a copy
|
||||
for you somewhere here.\"" CR CR
|
||||
|
||||
"The librarian's voice trails off as he bustles from shelf to shelf,
|
||||
squinting at the books to find the one he thinks you want." CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RFALSE>)>)
|
||||
(<AND .CONTEXT
|
||||
<IN? ,CH-LIBRARIAN ,RM-MANUSCRIPT-ROOM>
|
||||
<MC-ISNOT? ,CH-LIBRARIAN ,FL-ASLEEP>>
|
||||
<COND (<AND <EQUAL? .CONTEXT ,K-M-ENTERED>
|
||||
<MC-IS? ,CH-LIBRARIAN ,FL-OPENED>>
|
||||
<TELL CR
|
||||
CTHE ,CH-LIBRARIAN " says, \"Welcome back! I have more interesting things to
|
||||
tell you!\"" CR>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .CONTEXT ,K-M-EXIT>
|
||||
<TELL
|
||||
"As you leave, the librarian calls out, \"Must you be going? I have
|
||||
so many other interesting things to tell you.\"" CR CR>
|
||||
<MC-MAKE ,CH-LIBRARIAN ,FL-OPENED>)
|
||||
(<EQUAL? .CONTEXT ,K-M-BEG>
|
||||
<COND (<OR <MC-VERB? WALK EXIT>
|
||||
<INTBL? ,GL-PRSA <REST ,GL-GAME-VERBS 2> <GET ,GL-GAME-VERBS 0>>>
|
||||
<RFALSE>)
|
||||
(<MC-VERB? WAIT LISTEN>
|
||||
<TELL "The librarian says ">
|
||||
<COND (<MC-IS? ,TH-COTTON-BALLS ,FL-WORN>
|
||||
<TELL "softly">)
|
||||
(T
|
||||
<TELL "loudly">)>
|
||||
<TELL ", ">
|
||||
<RT-LIBRARIAN-SAYS-MSG>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? HUSH>
|
||||
<TELL
|
||||
"The librarian stops in midsentence and gets an embarrassed look on
|
||||
his face. \"Oh, I say. I'm sorry to have rambled on like this, but I do
|
||||
so enjoy speaking with visitors. I get them so seldom, you know. Thank
|
||||
you for listening.\"" CR CR
|
||||
|
||||
"He leaves the room, mumbling something to himself about the articulation of
|
||||
the third joint of the hind leg of an extinct species of dung beetle." CR>
|
||||
<REMOVE ,CH-LIBRARIAN>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? LOOK>
|
||||
<RT-DESC-ALL <> T>
|
||||
<TELL CR "As you look around, the librarian says ">
|
||||
<COND (<MC-IS? ,TH-COTTON-BALLS ,FL-WORN>
|
||||
<TELL "softly">)
|
||||
(T
|
||||
<TELL "loudly">)>
|
||||
<TELL ", ">
|
||||
<RT-LIBRARIAN-SAYS-MSG>
|
||||
<RTRUE>)
|
||||
(<AND <MC-VERB? TELL>
|
||||
<MC-PRSO? ,CH-LIBRARIAN>>
|
||||
<RFALSE>)
|
||||
;(<EQUAL? ,GL-P-PRSA-WORD ,W?ECHO>
|
||||
<TELL
|
||||
"The librarian pauses for a second as if he is finally going to stop
|
||||
talking...but then he continues ">
|
||||
<COND (<MC-IS? ,TH-COTTON-BALLS ,FL-WORN>
|
||||
<TELL "quietly">)
|
||||
(T
|
||||
<TELL "noisily">)>
|
||||
<TELL " and says, ">
|
||||
<RT-LIBRARIAN-SAYS-MSG>
|
||||
<RTRUE>)
|
||||
(<RT-TALK-VERB?>
|
||||
<TELL
|
||||
"The librarian interrupts you as you attempt to speak, and ">
|
||||
<COND (<MC-IS? ,TH-COTTON-BALLS ,FL-WORN>
|
||||
<TELL "whispers">)
|
||||
(T
|
||||
<TELL "says">)>
|
||||
<TELL ", ">
|
||||
<RT-LIBRARIAN-SAYS-MSG>
|
||||
<RFATAL>)
|
||||
(T
|
||||
<TELL "The librarian launches off into another
|
||||
speech, and it distracts you from what you wanted to do. ">
|
||||
<RT-LIBRARIAN-SAYS-MSG>
|
||||
<RTRUE>)>)>)
|
||||
(.CONTEXT <RFALSE>)
|
||||
(T
|
||||
<COND (<MC-VERB? ENTER>
|
||||
<COND (<MC-HERE? ,RM-BRITISH-MUSEUM>
|
||||
<RT-DO-WALK ,P?EAST>
|
||||
<RTRUE>)>)
|
||||
(<MC-VERB? EXIT>
|
||||
<COND (<MC-HERE? ,RM-MANUSCRIPT-ROOM>
|
||||
<RT-DO-WALK ,P?WEST>
|
||||
<RTRUE>)>)>
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-VICTORIA-STREET ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-VICTORIA-STREET" .CONTEXT>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1 ,K-M-DESC-2>
|
||||
<TELL "You enter">)
|
||||
(T
|
||||
<TELL "You are loitering in">)>
|
||||
<TELL
|
||||
" Victoria Street, which runs east and west between Victoria Square
|
||||
and Broad Sanctuary." CR CR
|
||||
|
||||
"You see a sign outside one of the shops." CR>
|
||||
<RFALSE>)
|
||||
(<AND <==? .CONTEXT ,K-M-BEG>
|
||||
<MC-VERB? WAIT>>
|
||||
<COND (<MC-ISNOT? ,RM-VICTORIA-STREET ,FL-ASLEEP>
|
||||
<MC-MAKE ,RM-VICTORIA-STREET ,FL-ASLEEP>
|
||||
<TELL
|
||||
"After a few moments, a constable strolls by, bops you on the head
|
||||
with his billy club, and says, \"Move along, you.\"" CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<TELL
|
||||
"The same constable as before walks by and says, \"You again? That's it,
|
||||
mate. Come along with me.\" He bops you on the head again and arrests you
|
||||
on a charge of vagrancy." CR CR
|
||||
|
||||
"You spend the night in gaol, and in the morning Inspector Lestrade drops
|
||||
by to tell you that there has been a mix-up in the paperwork and you are
|
||||
to be deported to Australia the following day. He gives you a letter to
|
||||
deliver to his sister in Melbourne and wishes you luck." CR CR>
|
||||
<RT-QSR>)>)
|
||||
(<T? .CONTEXT> <RFALSE>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-CLOCK-TOWER ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-CLOCK-TOWER" .CONTEXT>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1 ,K-M-DESC-2>
|
||||
<TELL
|
||||
"The stairs seem to wind up forever. Finally, you emerge into">)
|
||||
(T
|
||||
<TELL "You are in">)>
|
||||
<TELL " the interior of the clock tower, high above the Houses
|
||||
of Parliament." CR CR
|
||||
|
||||
"The immense bell known as Big Ben is hanging from the
|
||||
ceiling, suspended over a hollow shaft that is so deep it might as
|
||||
well be bottomless. A wooden railing runs around the shaft
|
||||
for safety." CR CR
|
||||
|
||||
"Inside the bell, you see an enormous clapper">
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1>
|
||||
<MC-MAKE ,TH-BELL ,FL-SEEN>
|
||||
<MC-MAKE ,TH-SAPPHIRE ,FL-SEEN>
|
||||
<MC-MAKE ,TH-CLAPPER ,FL-SEEN>
|
||||
<MC-MAKE ,TH-SHAFT ,FL-SEEN>
|
||||
<MC-MAKE ,TH-RAILING ,FL-SEEN>
|
||||
<TELL ,K-SAPPHIRE-MSG CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<COND (<IN? ,TH-SAPPHIRE ,TH-CLAPPER>
|
||||
<TELL ,K-SAPPHIRE-MSG CR>)
|
||||
(T
|
||||
<TELL "." CR>)>
|
||||
<RFALSE>)>)
|
||||
(<NOT <RT-ALARM-SET? ,RT-I-SWING-BELL>>
|
||||
<RT-ZERO-SECONDS>)>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE RT-AC-RM-THAMES-ONE ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-THAMES-ONE" .CONTEXT>>
|
||||
;<IFSOUND <COND (<==? .CONTEXT ,K-M-BEG>
|
||||
<SOUNDS ,S-BOATING ,S-START>)>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<TELL "You are">
|
||||
<RT-IN-VEHICLE-MSG>
|
||||
<TELL "on the Thames, just south of the Embankment." CR>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RT-PROCESS-BOAT-ON-THAMES>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-THAMES-TWO ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-THAMES-TWO" .CONTEXT>>
|
||||
;<IFSOUND <COND (<==? .CONTEXT ,K-M-BEG>
|
||||
<SOUNDS ,S-BOATING ,S-START>)>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<TELL "You are">
|
||||
<RT-IN-VEHICLE-MSG>
|
||||
<TELL "on the Thames. Downstream you can see London Bridge." CR>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RT-PROCESS-BOAT-ON-THAMES>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-THAMES-THREE ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-THAMES-THREE" .CONTEXT>>
|
||||
;<IFSOUND <COND (<==? .CONTEXT ,K-M-BEG>
|
||||
<SOUNDS ,S-BOATING ,S-START>)>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<TELL "You are">
|
||||
<RT-IN-VEHICLE-MSG>
|
||||
<TELL "underneath London Bridge." CR>
|
||||
<RFALSE>)
|
||||
(<OR <AND <MC-VERB? EXAMINE LOOK-UNDER>
|
||||
<MC-PRSO? ,RM-LONDON-BRIDGE>>
|
||||
<AND <MC-VERB? LOOK-UP>
|
||||
<MC-PRSO? ,ROOMS ,RM-LONDON-BRIDGE>>>
|
||||
<TELL "You see nothing of interest">
|
||||
<COND (<IN? ,TH-CLUMP-OF-MOSS ,RM-THAMES-THREE>
|
||||
<MC-MAKE ,TH-CLUMP-OF-MOSS ,FL-SEEN>
|
||||
<TELL
|
||||
", other than a clump of moss lodged among the supports overhead." CR>)
|
||||
(T
|
||||
<TELL "." CR>)>
|
||||
<RT-PROCESS-BOAT-ON-THAMES>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RT-PROCESS-BOAT-ON-THAMES>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-THAMES-FOUR ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-THAMES-FOUR" .CONTEXT>>
|
||||
;<IFSOUND <COND (<==? .CONTEXT ,K-M-BEG>
|
||||
<SOUNDS ,S-BOATING ,S-START>)>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<TELL "You are">
|
||||
<RT-IN-VEHICLE-MSG>
|
||||
<TELL "on the Thames, just south of Traitor's Gate." CR>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RT-PROCESS-BOAT-ON-THAMES>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-THAMES-FIVE ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-THAMES-FIVE" .CONTEXT>>
|
||||
;<IFSOUND <COND (<==? .CONTEXT ,K-M-BEG>
|
||||
<SOUNDS ,S-BOATING ,S-START>)>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<TELL "You are">
|
||||
<RT-IN-VEHICLE-MSG>
|
||||
<TELL "on the Thames, in danger of drifting out to sea." CR>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<RT-PROCESS-BOAT-ON-THAMES>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-SHERMANS-HOUSE ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-SHERMANS-HOUSE" .CONTEXT>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1>
|
||||
<RT-THIS-IS-IT ,CH-SHERMAN>
|
||||
<MC-MAKE ,CH-SHERMAN ,FL-SEEN>
|
||||
<MC-MAKE ,RM-SHERMANS-HOUSE ,FL-SEEN>
|
||||
<TELL "You enter the cramped quarters of Sherman's
|
||||
shop. The old animal-trainer's eyes brighten up when he sees you." CR CR
|
||||
|
||||
"\"You've probably come looking for Toby,\" he says. \"But I'm afraid I
|
||||
won't be able to help you this time. Toby's not feeling too well, and all my
|
||||
other animals are already out on loan. All I have left is a half-trained
|
||||
pigeon.\"" CR>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .CONTEXT ,K-M-DESC-2 ,K-M-DESC-3>
|
||||
<TELL "Sherman's shop is dingy and cramped. Dozens of
|
||||
empty cages are stacked up against the walls." CR>
|
||||
<RFALSE>)>)
|
||||
(<EQUAL? .CONTEXT ,K-M-ENTERED>
|
||||
; "If the house is asleep, then the player has entered it for the first time,
|
||||
and Sherman should not act -- DEB"
|
||||
<COND (<MC-IS? ,RM-SHERMANS-HOUSE ,FL-ASLEEP>
|
||||
<MC-UNMAKE ,RM-SHERMANS-HOUSE ,FL-ASLEEP>
|
||||
<RFALSE>)
|
||||
; "If the house is not asleep, then the player has entered it more than once,
|
||||
and Sherman should act based on whether or not the trained pigeon is alive
|
||||
-- DEB"
|
||||
(<MC-IS? ,CH-SHERMAN ,FL-ASLEEP>
|
||||
<RFALSE>)
|
||||
(<MC-IS? ,CH-TRAINED-PIGEON ,FL-ALIVE>
|
||||
<TELL CR
|
||||
"Sherman says, \"Welcome back. It's a pleasure to see you again.\"" CR>
|
||||
<RT-THIS-IS-IT ,CH-SHERMAN>)
|
||||
(T
|
||||
<RT-SHERMAN-RAGE T>)>)
|
||||
(<T? .CONTEXT> <RFALSE>)
|
||||
(<MC-VERB? ENTER>
|
||||
<COND (<MC-HERE? ,RM-PINCHIN-LANE>
|
||||
<RT-DO-WALK ,P?WEST>
|
||||
<RTRUE>)>)
|
||||
(<MC-VERB? EXIT>
|
||||
<COND (<MC-HERE? ,RM-SHERMANS-HOUSE>
|
||||
<RT-DO-WALK ,P?EAST>
|
||||
<RTRUE>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-THREADNEEDLE-ST ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-THREADNEEDLE-ST" .CONTEXT>>
|
||||
<COND (<F? .CONTEXT>
|
||||
<COND (<MC-VERB? ENTER>
|
||||
<COND (<MC-HERE? ,RM-BANK-OF-ENGLAND>
|
||||
<RT-DO-WALK ,P?SOUTH>
|
||||
<RTRUE>)>)>
|
||||
<RFALSE>)>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<MC-MAKE ,CH-BANK-GUARD ,FL-SEEN>
|
||||
<MC-MAKE ,CH-URCHINS ,FL-SEEN>
|
||||
<MC-MAKE ,TH-GUARDS-POCKET ,FL-SEEN>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1 ,K-M-DESC-2>
|
||||
<COND (<EQUAL? ,GL-PLACE-PRV ,RM-BANK-OF-ENGLAND>
|
||||
<TELL "You emerge into">)
|
||||
(T
|
||||
<TELL "You enter">)>
|
||||
<TELL " Threadneedle Street and are now">)
|
||||
(T
|
||||
<TELL "You are">)>
|
||||
<TELL " in front of the Bank of England. The entrance to
|
||||
the bank is to the north, Cheapside leads off to the west, and King
|
||||
William Street ">
|
||||
<COND (<EQUAL? <RT-TIME-OF-DAY> 0>
|
||||
<TELL "disappears off into the darkness">)
|
||||
(T
|
||||
<TELL "continues">)>
|
||||
<TELL " to the southeast. On the wall is a small sign." CR>
|
||||
<COND (<OR <EQUAL? .CONTEXT ,K-M-DESC-1>
|
||||
<IN? ,CH-BANK-GUARD ,RM-THREADNEEDLE-ST>>
|
||||
<TELL
|
||||
CR "A bank guard is lounging up against the wall, idly jangling some keys
|
||||
in his pocket while he watches a group of urchins playing in the street." CR>
|
||||
<COND (<MC-IS? ,CH-WIGGINS ,FL-BROKEN>
|
||||
<TELL CR ,K-URCHIN-MSG CR>
|
||||
<RTRUE>)>)
|
||||
(T
|
||||
<TELL CR "A group of urchins is playing in the street." CR>)>
|
||||
<RFALSE>)
|
||||
(<AND <EQUAL? .CONTEXT ,K-M-BEG>
|
||||
<IN? ,CH-HOLMES ,RM-LAIR>
|
||||
<MC-ISNOT? ,TH-TOPAZ ,FL-LOCKED>>
|
||||
<RT-WIGGINS-HELP-MSG>
|
||||
<CRLF>
|
||||
<MC-MAKE ,TH-TOPAZ ,FL-LOCKED>)
|
||||
(<AND <EQUAL? .CONTEXT ,K-M-ENTERED>
|
||||
<EQUAL? ,GL-PLACE-PRV ,RM-BANK-OF-ENGLAND>
|
||||
<MC-ISNOT? ,TH-TOPAZ ,FL-ASLEEP>>
|
||||
<RT-KIDNAP>
|
||||
<MC-MAKE ,TH-TOPAZ ,FL-ASLEEP>)>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE RT-AC-RM-LONDON-BRIDGE ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-LONDON-BRIDGE" .CONTEXT>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1 ,K-M-DESC-2>
|
||||
<COND (<EQUAL? ,GL-PLACE-PRV ,RM-LAIR>
|
||||
<TELL
|
||||
"When you emerge from the lair you are momentarily disoriented, blinking
|
||||
your eyes in the bright sunlight. After a few moments, you realize you
|
||||
are standing on London bridge, but you have no idea from which direction
|
||||
you came." CR>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<TELL "You">
|
||||
<RT-DRIVE-WALK-MSG?>
|
||||
<TELL "up onto">)>)
|
||||
(T
|
||||
<TELL "You are">
|
||||
<RT-IN-VEHICLE-MSG>
|
||||
<TELL "on">)>
|
||||
<TELL " London Bridge. ">
|
||||
<COND (<EQUAL? <RT-TIME-OF-DAY> 1 2 3>
|
||||
<TELL "The view of the river from here is spectacular,
|
||||
and hoards of sightseers are here with you to share the view." CR>)
|
||||
(T
|
||||
<TELL
|
||||
"The fog is so dense you can barely see the river from here." CR>)>
|
||||
<RFALSE>)
|
||||
(<OR <AND <F? .CONTEXT>
|
||||
<MC-VERB? LOOK-UNDER LOOK-DOWN>
|
||||
<MC-PRSO? ,RM-LONDON-BRIDGE>>
|
||||
<AND <==? .CONTEXT ,K-M-BEG>
|
||||
<MC-VERB? LOOK-DOWN>
|
||||
<MC-PRSO? ,ROOMS>>>
|
||||
<TELL "You see the Thames flowing slowly by, just as it has
|
||||
done for centuries past." CR>
|
||||
<RTRUE>)
|
||||
(<T? .CONTEXT> <RFALSE>)
|
||||
(<MC-THIS-PRSO?>
|
||||
<COND (<MC-VERB? ENTER>
|
||||
<COND (<MC-HERE? ,RM-LOWER-THAMES-ST>
|
||||
<RT-DO-WALK ,P?SOUTH>
|
||||
<RTRUE>)
|
||||
(<MC-HERE? ,RM-THAMES-THREE>
|
||||
<TELL "You can't climb onto the bridge." CR>
|
||||
<RTRUE>)>)
|
||||
(<MC-VERB? EXIT>
|
||||
<COND (<MC-HERE? ,RM-LONDON-BRIDGE>
|
||||
<RT-DO-WALK ,P?NORTH>
|
||||
<RTRUE>)>)
|
||||
(<MC-VERB? SHOOT>
|
||||
<TELL ,K-RICOCHET-MSG CR>
|
||||
<RTRUE>)>)
|
||||
(<MC-THIS-PRSI?>
|
||||
<COND (<AND <IN? ,CH-PLAYER ,TH-BOAT>
|
||||
<MC-VERB? PUT PUT-ON>>
|
||||
<TELL "You can't attach anything to the bridge." CR>
|
||||
<RTRUE>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-SWAN-LANE ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-SWAN-LANE" .CONTEXT>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1 ,K-M-DESC-2>
|
||||
<COND (<EQUAL? ,GL-PLACE-PRV ,RM-LOWER-THAMES-ST>
|
||||
<TELL "With increasing apprehension, you descend">)
|
||||
(T
|
||||
<TELL "With considerable relief, you emerge">)>
|
||||
<TELL " into">)
|
||||
(T
|
||||
<TELL "With increasing apprehension, you are standing in">)>
|
||||
<TELL " Swan Lane, which runs along the waterfront of the Thames." CR CR>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1>
|
||||
<TELL "It is a seedy, disreputable, run-down part of town
|
||||
that normally you wouldn't be caught dead in. After a moment's reflection,
|
||||
you wish you hadn't thought of it in quite those terms." CR CR>)>
|
||||
<TELL
|
||||
"To the west is the entrance to one of the least savory buildings
|
||||
you have ever seen. There is a faded sign above the door that informs
|
||||
you that the establishment was, in better days, known as the Bar
|
||||
of Gold." CR CR
|
||||
|
||||
"Fortunately, it is only a short walk back up the stairs to Lower
|
||||
Thames Street." CR>
|
||||
<RFALSE>)
|
||||
(<AND <EQUAL? .CONTEXT ,K-M-ENTERED>
|
||||
<EQUAL? ,GL-PLACE-PRV ,RM-BAR-OF-GOLD>
|
||||
<IN? ,CH-WIGGINS ,RM-SWAN-LANE>>
|
||||
<TELL CR
|
||||
CTHE ,CH-WIGGINS " says, \"Blimey!! I didn't think you would make it
|
||||
out of there alive.\"" CR>
|
||||
<SETG GL-PUPPY ,CH-WIGGINS>
|
||||
;<MC-UNMAKE ,CH-WIGGINS ,FL-NODESC> ;"FLAGS NEVER SET"
|
||||
;<MC-UNMAKE ,CH-WIGGINS ,FL-BROKEN>)
|
||||
(<T? .CONTEXT> <RFALSE>)
|
||||
(<MC-VERB? ENTER>
|
||||
<COND (<MC-HERE? ,RM-BAR-OF-GOLD>
|
||||
<RT-DO-WALK ,P?EAST>
|
||||
<RTRUE>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-BAR-OF-GOLD ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-BAR-OF-GOLD" .CONTEXT>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1>
|
||||
<MC-MAKE ,CH-DENKEEPER ,FL-SEEN>
|
||||
<MC-MAKE ,TH-OPIUM-GAS ,FL-SEEN>)>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1 ,K-M-DESC-2>
|
||||
<TELL
|
||||
"After fighting the urge to turn and run, you enter and find yourself ">)
|
||||
(T
|
||||
<TELL "You are standing - rather nervously - ">)>
|
||||
<TELL
|
||||
"in the Bar of Gold, the most infamous opium den in London. The
|
||||
proprietor is a most unsavory character who ">
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1 ,K-M-DESC-2>
|
||||
<TELL
|
||||
"gives you a sidelong glance as you enter and then ignores you">)
|
||||
(T
|
||||
<TELL "hasn't given you a second look since you came in">)>
|
||||
<TELL "." CR>
|
||||
<RFALSE>)
|
||||
(<AND <EQUAL? .CONTEXT ,K-M-ENTERING>
|
||||
<EQUAL? ,GL-PUPPY ,CH-WIGGINS>>
|
||||
<TELL THE ,CH-WIGGINS " says, \"You must be stark raving
|
||||
bonkers. That's the most dangerous place in London. I'll wait
|
||||
out here, thank you very much!\"" CR CR>
|
||||
<SETG GL-PUPPY <>>)
|
||||
(<T? .CONTEXT> <RFALSE>)
|
||||
(<MC-VERB? ENTER>
|
||||
<COND (<MC-HERE? ,RM-SWAN-LANE>
|
||||
<RT-DO-WALK ,P?WEST>
|
||||
<RTRUE>)>)
|
||||
(<MC-VERB? EXIT>
|
||||
<COND (<MC-HERE? ,RM-BAR-OF-GOLD>
|
||||
<RT-DO-WALK ,P?EAST>
|
||||
<RTRUE>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-LAIR ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-LAIR" .CONTEXT>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1>
|
||||
<MC-MAKE ,CH-MORIARTY ,FL-SEEN>
|
||||
<MC-MAKE ,TH-LAIR-KEY ,FL-SEEN>
|
||||
<MC-MAKE ,TH-CROWN-JEWELS ,FL-SEEN>
|
||||
<MC-MAKE ,TH-MORIARTY-DESK ,FL-SEEN>
|
||||
<MC-MAKE ,TH-ROPE ,FL-SEEN>
|
||||
<TELL "At last you come face to face with the evil
|
||||
Professor. He is sitting placidly behind his desk, looking at you as if
|
||||
you were some botanical specimen." CR CR
|
||||
|
||||
"As you look around the room, you see Sherlock Holmes tied to a
|
||||
chair. He is only inches away from the Crown Jewels, which Moriarty has
|
||||
spread out on his desk, the better to taunt Holmes." CR CR
|
||||
|
||||
"Holmes looks up and says, \"Ah, there you are Watson.\" He turns his head
|
||||
towards Moriarty and says, \"You see, Professor, you grossly underestimate
|
||||
the intelligence and determination of your fellow countrymen.\"" CR CR
|
||||
|
||||
"\"Watson,\" he continues. \"The Professor and I have just been chatting about
|
||||
why he led us on this merry chase. If you care to ask him, I'm sure he would
|
||||
be happy to fill you in as well.\"" CR>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .CONTEXT ,K-M-DESC-3>
|
||||
<TELL "The room is simply, but elegantly, furnished.">
|
||||
<COND (<MC-IS? ,CH-HOLMES ,FL-LOCKED>
|
||||
<SETG GL-PUPPY-MSG? <>>
|
||||
<TELL " " <RT-PICK-NEXT ,GL-HOLMES-DESC-TXT>
|
||||
,K-SECURELY-BOUND-MSG ".">)>
|
||||
<CRLF>)>
|
||||
<RFALSE>)
|
||||
(<EQUAL? .CONTEXT ,K-M-ENTERED>
|
||||
<SETG GL-PUPPY ,CH-HOLMES>)>
|
||||
<COND (<==? .CONTEXT ,K-M-BEG>
|
||||
<COND (<MC-VERB? TAKE SHOW>
|
||||
<COND (<MC-PRSO? ,TH-BREATH>
|
||||
<RFALSE>)
|
||||
(<MC-IS? ,GL-PRSO ,FL-BODYPART>
|
||||
<RFALSE>)
|
||||
(<MC-IS? ,GL-PRSO ,FL-WORN>
|
||||
<RFALSE>)
|
||||
(<AND <MC-ISNOT? ,CH-MORIARTY ,FL-LOCKED>
|
||||
<MC-ISNOT? ,CH-MORIARTY ,FL-ASLEEP>>
|
||||
<COND (<RT-META-IN? ,GL-PRSO ,GL-WINNER>
|
||||
<RT-ALARM-SET-REL ,RT-I-TAKE-WATSONS-STUFF
|
||||
<RT-PARM-SET 0 1 0>>
|
||||
<MOVE ,GL-PRSO ,GL-WINNER>
|
||||
<TELL
|
||||
"Moriarty's normally emotionless features dissolve in rage. He shouts at
|
||||
Akbar, \"Why didn't you take that from him when you brought him
|
||||
in?\"" CR CR
|
||||
|
||||
"The outburst startles Akbar into momentary inaction, but he quickly recovers
|
||||
and starts to come towards you with a violent look in his eyes." CR>)
|
||||
(T
|
||||
<TELL "Akbar steps in your way">
|
||||
<COND (<MC-IS? ,TH-WATSONS-HAT ,FL-WORN>
|
||||
<TELL ", says, \"Pardon me, honourable sir,\"">)>
|
||||
<TELL " and stops you from taking " THEO "." CR>)>)>)
|
||||
(<AND <MC-VERB? RELEASE>
|
||||
<MC-PRSO? ,TH-BREATH>>
|
||||
<RFALSE>)
|
||||
(<MC-VERB? UNTIE RELEASE>
|
||||
<COND (<==? ,GL-PRSO ,TH-ROPE>
|
||||
<RFALSE>)
|
||||
(<MC-IS? ,GL-PRSO ,FL-LOCKED>
|
||||
<COND (<OR <MC-IS? ,CH-AKBAR ,FL-ASLEEP>
|
||||
<MC-IS? ,CH-AKBAR ,FL-LOCKED>>
|
||||
<MC-UNMAKE ,GL-PRSO ,FL-LOCKED>
|
||||
<RT-CYOU-MSG "untie" "unties">
|
||||
<TELL THEO>
|
||||
<COND (<EQUAL? ,GL-PRSO ,TH-ROPE-AUX1>
|
||||
<SETG TH-ROPE-AUX1 ,TH-ROPE-AUX2>
|
||||
<SETG TH-ROPE-AUX2 -1>
|
||||
<COND (<EQUAL? ,TH-ROPE-AUX1 -1>
|
||||
<MOVE ,TH-ROPE ,CH-PLAYER>
|
||||
<MC-UNMAKE ,TH-ROPE ,FL-NODESC>
|
||||
<TELL ", keeping " THE ,TH-ROPE>)>)
|
||||
(<EQUAL? ,GL-PRSO ,TH-ROPE-AUX2>
|
||||
<SETG TH-ROPE-AUX2 -1>)>
|
||||
<TELL "." CR>
|
||||
<COND (<AND <MC-PRSO? ,CH-MORIARTY ,CH-AKBAR>
|
||||
<MC-ISNOT? ,CH-AKBAR ,FL-ASLEEP>>
|
||||
<CRLF>
|
||||
<COND (<EQUAL? ,GL-PRSO ,CH-MORIARTY>
|
||||
<TELL
|
||||
"Bad move. As soon as he is free, Moriarty">)
|
||||
(T
|
||||
<TELL
|
||||
"Akbar immediately unties Moriarty, who">)>
|
||||
<TELL
|
||||
" unlocks his desk and pulls out a pistol. \"Thank you for releasing
|
||||
me, gentlemen,\" he says, waving the gun at you. \"Very sporting of
|
||||
you.\" He glances at his pocketwatch. \"We shouldn't have too long to
|
||||
wait.\" Minutes later you hear newsboys running through the
|
||||
streets shouting about the resignation of the Prime Minister." CR>
|
||||
<RT-QSR>)>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<RT-ROPE-MSG>)>)
|
||||
(<MC-VERB? RELEASE>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<TELL CTHEO>
|
||||
<RT-ISNT-ARENT-MSG ,GL-PRSO>
|
||||
<TELL "tied up." CR>)>)
|
||||
(<AND <MC-VERB? TIE-UP>
|
||||
<NOT <MC-PRSI? ,TH-ROPE ROOMS>>>
|
||||
<RT-IMPOSSIBLE-MSG>)
|
||||
(<AND <MC-VERB? TIE TIE-UP>
|
||||
<OR <MC-PRSO? ,CH-PLAYER ,CH-ME>
|
||||
<MC-PRSI? ,CH-PLAYER ,CH-ME>>>
|
||||
<TELL "We'll assume you're joking." CR>
|
||||
<RTRUE>)
|
||||
(<MC-VERB? TIE TIE-UP>
|
||||
<COND (<RT-VISIBLE? ,TH-ROPE>
|
||||
<COND (<OR <MC-IS? ,CH-AKBAR ,FL-ASLEEP>
|
||||
<MC-IS? ,CH-AKBAR ,FL-LOCKED>>
|
||||
<COND (<EQUAL? ,CH-HOLMES ,GL-PRSI ,GL-PRSO>
|
||||
<TELL "Surely you jest." CR>
|
||||
<RTRUE>)>
|
||||
<COND (<EQUAL? ,TH-ROPE-AUX1 -1>
|
||||
<SETG TH-ROPE-AUX1 ,GL-PRSO>)
|
||||
(<EQUAL? ,TH-ROPE-AUX2 -1>
|
||||
<SETG TH-ROPE-AUX2 ,GL-PRSO>)
|
||||
(T
|
||||
<TELL CTHE ,TH-ROPE " is not long enough." CR>
|
||||
<RTRUE>)>
|
||||
<COND (<EQUAL? ,GL-PRSI ,ROOMS>
|
||||
<SETG GL-PRSI <>>)>
|
||||
<MOVE ,TH-ROPE ,GL-PLACE-CUR>
|
||||
<MC-MAKE ,TH-ROPE ,FL-NODESC>
|
||||
<MC-MAKE ,GL-PRSO ,FL-LOCKED>
|
||||
<COND (<MC-PRSI? <> ,TH-ROPE>
|
||||
<RT-CYOU-MSG "tie" "ties">
|
||||
<TELL "up " THEO "." CR>)
|
||||
(<NOT <EQUAL? ,TH-ROPE-AUX2 -1>>
|
||||
<RT-CYOU-MSG "tie" "ties">
|
||||
<TELL "up " THEO ", but "
|
||||
THE ,TH-ROPE " is not long enough to tie up " THEI " as well." CR>)
|
||||
(T
|
||||
<MC-MAKE ,GL-PRSI ,FL-LOCKED>
|
||||
<TELL "You tie " THEO " to " THEI "." CR>)>)
|
||||
(T
|
||||
<RT-ROPE-MSG>)>)
|
||||
(T
|
||||
<TELL "You don't have " A ,TH-ROPE "." CR>)>)>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-NAVE ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-NAVE" .CONTEXT>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1>
|
||||
<MC-MAKE ,TH-NEWTON-TOMB ,FL-SEEN>
|
||||
<TELL
|
||||
"You enter the Abbey and pause in the Nave, struck by the sheer magnificence
|
||||
of the building. Massive Purbeck columns march the length of the Nave, and
|
||||
they rise in perfect proportion to meet each other in a series of pointed
|
||||
arches that are the hallmark of the Gothic style." CR CR
|
||||
|
||||
"The interior of the Abbey is dark, cold, and gloomy - but after a few
|
||||
moments your eyes adjust and you can make out a tomb at the far end of
|
||||
the room." CR>
|
||||
<RTRUE>)
|
||||
(<EQUAL? .CONTEXT ,K-M-DESC-2 ,K-M-DESC-3>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-2>
|
||||
<COND (<EQUAL? ,GL-PLACE-PRV ,RM-BROAD-SANCTUARY>
|
||||
<TELL
|
||||
"You walk through the massive door and find yourself once again in">)
|
||||
(T
|
||||
<TELL "You return to">)>)
|
||||
(<EQUAL? .CONTEXT ,K-M-DESC-3>
|
||||
<TELL "You are standing in">)>
|
||||
<TELL
|
||||
" the Nave. Amidst the massive columns, one tomb in particular catches your
|
||||
attention." CR>
|
||||
<RFALSE>)>)
|
||||
(<EQUAL? .CONTEXT ,K-M-ENTERED>
|
||||
<SETG PLAYER-IN-ABBEY T>)
|
||||
(<AND <EQUAL? .CONTEXT ,K-M-EXIT>
|
||||
<EQUAL? ,GL-P-WALK-DIR ,P?OUT ,P?WEST>>
|
||||
<SETG PLAYER-IN-ABBEY <>>)>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE RT-AC-RM-EVANGELIST-CHAPEL ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-EVANGELIST-CHAPEL" .CONTEXT>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1>
|
||||
<MC-MAKE ,TH-BANK-OF-CANDLES ,FL-SEEN>
|
||||
<MC-MAKE ,TH-VERE-TOMB ,FL-SEEN>
|
||||
<TELL
|
||||
"You enter the Evangelist Chapel and wonder what it is
|
||||
about this room that makes you feel it is somehow different from the
|
||||
rest of the Abbey." CR>)
|
||||
(<EQUAL? .CONTEXT ,K-M-DESC-2>
|
||||
<TELL "You return to the welcome warmth provided by
|
||||
the array of candles in the Evangelist Chapel." CR>)
|
||||
(T
|
||||
<TELL "Light! Warmth! There is a bank of candles
|
||||
here lit by devoted worshippers. The candles warm the room so effectively
|
||||
that after a few moments you actually become uncomfortable." CR CR
|
||||
|
||||
"One of the most unusual tombs in the Abbey is here." CR>)>
|
||||
<RFALSE>)
|
||||
(<EQUAL? .CONTEXT ,K-M-BEG>
|
||||
<RT-PAPER-WARMING ,TH-WHITE-PAPER>
|
||||
<RT-PAPER-WARMING ,TH-BLUE-PAPER>
|
||||
<RT-PAPER-WARMING ,TH-ORANGE-PAPER>
|
||||
<RT-PAPER-WARMING ,TH-YELLOW-PAPER>
|
||||
<RT-PAPER-WARMING ,TH-BROWN-PAPER>
|
||||
<RT-PAPER-WARMING ,TH-GREEN-PAPER>
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-HENRY-VII-CHAPEL ("OPTIONAL" (CONTEXT <>))
|
||||
<DEBUGGING? <RT-DEBUG-RM-AC "RM-HENRY-VII-CHAPEL" .CONTEXT>>
|
||||
<COND (<RT-DESCFCN-CONTEXT .CONTEXT>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1>
|
||||
<MC-MAKE ,TH-HENRY-VII-TOMB ,FL-SEEN>)>
|
||||
<COND (<EQUAL? .CONTEXT ,K-M-DESC-1 ,K-M-DESC-2>
|
||||
<TELL "You enter">)
|
||||
(T
|
||||
<TELL "You are in">)>
|
||||
<TELL
|
||||
" Henry VII's chapel, which is one of the most beautiful chapels
|
||||
in the world. The ceiling is a masterpiece of delicate fan vaulting, and
|
||||
the Renaissance gilt-bronze tomb is obviously the work of one of the
|
||||
Italian masters." CR>
|
||||
<RFALSE>)
|
||||
(<MC-VERB? LOOK-UP>
|
||||
<TELL ,K-BREATH-TAKING-MSG CR>)>>
|
||||
|
||||
<ROUTINE RT-EX-ENTER-BANK-OF-ENGLAND ()
|
||||
<COND (<L? ,CH-BANK-GUARD-AUX1 4>
|
||||
<TELL
|
||||
"The guard stops you as you try to enter. \"Excuse me, sir. You can't go
|
||||
in there. And don't even THINK about trying to bribe me.\"" CR>
|
||||
<RT-THIS-IS-IT ,CH-BANK-GUARD>
|
||||
<RFALSE>)
|
||||
(<IN? ,TH-BOX-KEY ,TH-GUARDS-POCKET>
|
||||
<TELL
|
||||
"Holmes takes you to one side and whispers, \"It is obvious, dear fellow, that
|
||||
it would be pointless to enter the bank with no means of unlocking anything we
|
||||
may find inside.\"" CR>
|
||||
<RFALSE>)
|
||||
(T
|
||||
<COND (<IN? ,CH-BANK-GUARD ,RM-THREADNEEDLE-ST>
|
||||
<TELL "As soon as you enter, the guard leaves." CR CR>
|
||||
<REMOVE ,CH-BANK-GUARD>)>
|
||||
<RETURN ,RM-BANK-OF-ENGLAND>)>>
|
||||
|
||||
<ROUTINE RT-AC-RM-BUCKINGHAM-PALACE ("OPT" (CONTEXT <>))
|
||||
<COND (<T? .CONTEXT> <RFALSE>)
|
||||
(<MC-VERB? ENTER>
|
||||
<COND (<MC-HERE? ,RM-QUEENS-GARDENS>
|
||||
<RT-DO-WALK ,P?WEST>
|
||||
<RTRUE>)>)
|
||||
(<MC-VERB? EXIT>
|
||||
<COND (<MC-HERE? ,RM-BUCKINGHAM-PALACE>
|
||||
<RT-DO-WALK ,P?EAST>
|
||||
<RTRUE>)>)>>
|
||||
|
||||
<ROUTINE RT-EX-RM-ENTER-BUCKINGHAM-PALACE ()
|
||||
<COND (<AND <EQUAL? ,GL-PRSO ,P?WEST ,P?IN>
|
||||
<MC-HERE? ,RM-QUEENS-GARDENS>>
|
||||
<TELL CTHE ,CH-PALACE-GUARD
|
||||
" steps into your path and says, \"I'm sorry, but I've
|
||||
been instructed to let no one into the Palace unless I receive certain items
|
||||
of interest to the Crown.\"" CR>
|
||||
<RFALSE>)>>
|
||||
|
||||
<ROUTINE RT-EX-RM-STEER-BOAT ()
|
||||
<RT-ALARM-CLR ,RT-I-MOVE-DOWNSTREAM>
|
||||
<TELL
|
||||
"[To move the boat, ROW or PADDLE in a given direction, or LAND it.]" CR>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE RT-EX-RM-LAND-BOAT ()
|
||||
<TELL "[Land the Boat.]" CR>
|
||||
<RT-LAND-BOAT>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE RT-EX-RM-LAUNCH-BOAT ()
|
||||
<COND (<IN? ,CH-PLAYER ,TH-BOAT>
|
||||
<TELL "[Launch the Boat.]" CR>
|
||||
<RT-LAUNCH-BOAT>)
|
||||
(T
|
||||
<TELL
|
||||
"The last man who walked on water was killed by a bunch of Romans. Why
|
||||
don't you play it safe and use a boat?" CR>)>
|
||||
<RFALSE>>
|
||||
|
||||
<ROUTINE RT-EX-PARLOUR-ENTRY ()
|
||||
<COND (<MC-IS? ,CH-HOLMES ,FL-ASLEEP>
|
||||
<TELL CTHE ,CH-HUDSON ,K-HUDSON-WORRIED-MSG CR>
|
||||
<RFALSE>)
|
||||
(<MC-ISNOT? ,LG-PARLOUR-DOOR ,FL-OPENED>
|
||||
<TELL CTHE ,LG-PARLOUR-DOOR " is closed." CR>
|
||||
<RFALSE>)
|
||||
(<AND <MC-PRSO? ,P?NORTH ,P?IN>
|
||||
<MC-HERE? ,RM-ENTRY-HALL>>
|
||||
<RETURN ,RM-PARLOUR>)>>
|
||||
|
||||
<ROUTINE RT-EX-LEAVE-EMBANKMENT ()
|
||||
<COND (<MC-IS? ,TH-SUIT-OF-ARMOUR ,FL-WORN>
|
||||
<TELL ,K-HEAVY-ARMOUR-MSG CR>
|
||||
<RFALSE>)>
|
||||
<COND (<IN? ,GL-WINNER ,TH-BOAT>
|
||||
<RT-PERFORM ,V?EXIT ,TH-BOAT>
|
||||
<COND (<NOT <IN? ,GL-WINNER ,RM-THE-EMBANKMENT>>
|
||||
<RFALSE>)>)>
|
||||
<COND (<AND <EQUAL? ,GL-PRSO ,P?NORTH>
|
||||
<MC-HERE? ,RM-THE-EMBANKMENT>>
|
||||
<RETURN ,RM-FLEET-STREET>)
|
||||
(<AND <EQUAL? ,GL-PRSO ,P?EAST>
|
||||
<MC-HERE? ,RM-THE-EMBANKMENT>>
|
||||
<RETURN ,RM-UPPER-THAMES-ST>)>>
|
74
places3.zabstr
Normal file
74
places3.zabstr
Normal file
|
@ -0,0 +1,74 @@
|
|||
|
||||
<DEFINE-ROUTINE RT-AC-RM-221B-BAKER-ST>
|
||||
<DEFINE-ROUTINE RT-AC-RM-ENTRY-HALL>
|
||||
<DEFINE-ROUTINE RT-AC-RM-PARLOUR>
|
||||
<DEFINE-ROUTINE RT-AC-RM-VESTIBULE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-HOLMES-STUDY>
|
||||
<DEFINE-ROUTINE RT-AC-RM-HOLMES-BEDROOM>
|
||||
<DEFINE-ROUTINE RT-AC-RM-YORK-PLACE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-MARYLEBONE-RD>
|
||||
<DEFINE-ROUTINE RT-AC-RM-CHAMBER-OF-HORRORS>
|
||||
<DEFINE-ROUTINE RT-AC-RM-TOTTENHAM-COURT-RD>
|
||||
<DEFINE-ROUTINE RT-AC-RM-ST-GILES-CIRCUS>
|
||||
<DEFINE-ROUTINE RT-AC-RM-OXFORD-ST>
|
||||
<DEFINE-ROUTINE RT-AC-RM-ORCHARD-ST>
|
||||
<DEFINE-ROUTINE RT-AC-RM-AUDLEY-ST>
|
||||
<DEFINE-ROUTINE RT-AC-RM-HYDE-PARK-CORNER>
|
||||
<DEFINE-ROUTINE RT-AC-RM-KENSINGTON-GARDENS>
|
||||
<DEFINE-ROUTINE RT-AC-RM-TRAFALGAR-SQUARE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-DIOGENES-CLUB>
|
||||
<DEFINE-ROUTINE RT-AC-RM-GREAT-RUSSELL-ST>
|
||||
<DEFINE-ROUTINE RT-AC-RM-BRITISH-MUSEUM>
|
||||
<DEFINE-ROUTINE RT-AC-RM-GROSVENOR-PLACE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-VICTORIA-SQUARE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-BROAD-SANCTUARY>
|
||||
<DEFINE-ROUTINE RT-AC-RM-PARLIAMENT-SQUARE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-PARLIAMENT>
|
||||
<DEFINE-ROUTINE RT-AC-RM-BUCKINGHAM-PALACE-RD>
|
||||
<DEFINE-ROUTINE RT-AC-RM-QUEENS-GARDENS>
|
||||
<DEFINE-ROUTINE RT-AC-RM-BIRDCAGE-WALK>
|
||||
<DEFINE-ROUTINE RT-AC-RM-THE-MALL>
|
||||
<DEFINE-ROUTINE RT-AC-RM-WHITEHALL>
|
||||
<DEFINE-ROUTINE RT-AC-RM-SCOTLAND-YARD>
|
||||
<DEFINE-ROUTINE RT-AC-RM-THE-BLACK-MUSEUM>
|
||||
<DEFINE-ROUTINE RT-AC-RM-NEW-OXFORD-ST>
|
||||
<DEFINE-ROUTINE RT-AC-RM-COVENT-GARDEN>
|
||||
<DEFINE-ROUTINE RT-AC-RM-THE-STRAND>
|
||||
<DEFINE-ROUTINE RT-AC-RM-FLEET-STREET>
|
||||
<DEFINE-ROUTINE RT-AC-RM-THE-EMBANKMENT>
|
||||
<DEFINE-ROUTINE RT-AC-RM-UPPER-THAMES-ST>
|
||||
<DEFINE-ROUTINE RT-AC-RM-PINCHIN-LANE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-CHEAPSIDE>
|
||||
<DEFINE-ROUTINE RT-AC-RM-BANK-OF-ENGLAND>
|
||||
<DEFINE-ROUTINE RT-AC-RM-BANK-VAULT>
|
||||
<DEFINE-ROUTINE RT-AC-RM-KING-WILLIAM-ST>
|
||||
<DEFINE-ROUTINE RT-AC-RM-MONUMENT>
|
||||
<DEFINE-ROUTINE RT-AC-RM-LOWER-THAMES-ST>
|
||||
<DEFINE-ROUTINE RT-AC-RM-TOWER-ENTRANCE>
|
||||
<DEFINE-ROUTINE RT-DF-RM-SOUTH-AISLE>
|
||||
<DEFINE-ROUTINE RT-DF-RM-JERICHO-PARLOUR>
|
||||
<DEFINE-ROUTINE RT-DF-RM-JERUSALEM-CHAMBER>
|
||||
<DEFINE-ROUTINE RT-DF-RM-NORTH-CLOISTER>
|
||||
<DEFINE-ROUTINE RT-DF-RM-SOUTH-TRANSEPT>
|
||||
<DEFINE-ROUTINE RT-DF-RM-NORTH-TRANSEPT>
|
||||
<DEFINE-ROUTINE RT-DF-RM-POETS-CORNER>
|
||||
<DEFINE-ROUTINE RT-DF-RM-SOUTH-AMBULATORY>
|
||||
<DEFINE-ROUTINE RT-DF-RM-SANCTUARY>
|
||||
<DEFINE-ROUTINE RT-DF-RM-NORTH-AMBULATORY>
|
||||
<DEFINE-ROUTINE RT-DF-RM-CONFESSOR-CHAPEL>
|
||||
<DEFINE-ROUTINE RT-DF-RM-SOUTH-CHAPEL-AISLE>
|
||||
<DEFINE-ROUTINE RT-DF-RM-NORTH-CHAPEL-AISLE>
|
||||
<DEFINE-ROUTINE RT-DF-RM-INNOCENTS-CORNER>
|
||||
<DEFINE-ROUTINE RT-AC-RM-DRAWBRIDGE>
|
||||
<DEFINE-ROUTINE RT-DF-RM-BYWARD-TOWER>
|
||||
<DEFINE-ROUTINE RT-DF-RM-OUTER-WARD>
|
||||
<DEFINE-ROUTINE RT-DF-RM-BLOODY-TOWER>
|
||||
<DEFINE-ROUTINE RT-DF-RM-WAKEFIELD-TOWER>
|
||||
<DEFINE-ROUTINE RT-DF-RM-JEWEL-ROOM>
|
||||
<DEFINE-ROUTINE RT-DF-RM-DUNGEON>
|
||||
<DEFINE-ROUTINE RT-DF-RM-TORTURE-ROOM>
|
||||
<DEFINE-ROUTINE RT-DF-RM-WHITE-TOWER>
|
||||
<DEFINE-ROUTINE RT-DF-RM-TOWER-GREEN>
|
||||
<DEFINE-ROUTINE RT-DF-RM-BOWYER-TOWER>
|
||||
<DEFINE-ROUTINE RT-DF-RM-INSIDE-TRAITORS-GATE>
|
||||
<DEFINE-ROUTINE RT-DF-RM-OUTSIDE-TRAITORS-GATE>
|
1704
places3.zap
Normal file
1704
places3.zap
Normal file
File diff suppressed because it is too large
Load diff
1733
places3.zil
Normal file
1733
places3.zil
Normal file
File diff suppressed because it is too large
Load diff
75
puzzles.zabstr
Normal file
75
puzzles.zabstr
Normal file
|
@ -0,0 +1,75 @@
|
|||
|
||||
<DEFINE-ROUTINE RT-EXAMINE-GEM>
|
||||
<DEFINE-ROUTINE RT-HANDLE-SCRATCH>
|
||||
<CONSTANT GL-HOLES:TABLE <TABLE 0 0 0 0 0 0 0 0 0 0 0 0 0>>
|
||||
<DEFINE-ROUTINE RT-HOLE?>
|
||||
<DEFINE-ROUTINE RT-WASTE-OF-BULLETS-MSG>
|
||||
<DEFINE-ROUTINE RT-SHOOT-DEAD-MSG>
|
||||
<DEFINE-ROUTINE RT-READ-NEWSPAPER>
|
||||
<DEFINE-ROUTINE RT-WAKE-UP-HOLMES>
|
||||
<DEFINE-ROUTINE RT-I-PM-HALL>
|
||||
<DEFINE-ROUTINE RT-I-PM-VESTIBULE>
|
||||
<DEFINE-ROUTINE RT-I-HUDSON>
|
||||
<DEFINE-ROUTINE RT-I-PM-LEAVE>
|
||||
<DEFINE-ROUTINE RT-I-PM-QUITS>
|
||||
<CONSTANT K-PIGEON-SHOWN-RUBY 1>
|
||||
<CONSTANT K-PIGEON-GET-RUBY 2>
|
||||
<CONSTANT K-PIGEON-TIRED 4>
|
||||
<DEFINE-ROUTINE RT-GET-PIGEON>
|
||||
<DEFINE-ROUTINE RT-PIGEON-INTEREST>
|
||||
<DEFINE-ROUTINE RT-KILL-PIGEON>
|
||||
<DEFINE-ROUTINE RT-PIGEON-OBJ>
|
||||
<DEFINE-ROUTINE RT-SHERMAN-RAGE>
|
||||
<DEFINE-ROUTINE RT-I-PIGEON-LOSE-INTEREST>
|
||||
<DEFINE-ROUTINE RT-I-PIGEON-IMPATIENT>
|
||||
<DEFINE-ROUTINE RT-I-PIGEON-CIRCLE>
|
||||
<DEFINE-ROUTINE RT-I-SHERMANS-REVENGE>
|
||||
<DEFINE-ROUTINE RT-IMPOLITE-MSG>
|
||||
<CONSTANT K-BELL-AWAY 0>
|
||||
<CONSTANT K-BELL-TOWARDS 1>
|
||||
<GLOBAL GL-WAIT-BELL:FLAG <> %<> WORD>
|
||||
<DEFINE-ROUTINE RT-I-BIGBEN>
|
||||
<GLOBAL HEARD-SWING? <> %<> WORD>
|
||||
<DEFINE-ROUTINE RT-I-SWING-BELL>
|
||||
<DEFINE-ROUTINE RT-RELIEF>
|
||||
<DEFINE-ROUTINE RT-ZERO-SECONDS>
|
||||
<DEFINE-ROUTINE RT-I-EXHALE>
|
||||
<DEFINE-ROUTINE RT-I-INHALE>
|
||||
<DEFINE-ROUTINE RT-I-TAKE-WATSONS-STUFF>
|
||||
<DEFINE-ROUTINE RT-I-OUT-OF-TIME>
|
||||
<DEFINE-ROUTINE RT-ETHERIUM-EFFECT>
|
||||
<DEFINE-ROUTINE RT-I-WAKE-UP>
|
||||
<DEFINE-ROUTINE RT-SMELL-ETHERIUM?>
|
||||
<DEFINE-ROUTINE RT-FIND-FLAME>
|
||||
<DEFINE-ROUTINE RT-DOES-MORIARTY-WIN>
|
||||
<DEFINE-ROUTINE RT-PROCESS-PASSWORD>
|
||||
<DEFINE-ROUTINE V-SWORDFISH>
|
||||
<DEFINE-ROUTINE RT-ROPE-MSG>
|
||||
<DEFINE-ROUTINE RT-INSCRIPTION-APPEARS-MSG>
|
||||
<DEFINE-ROUTINE RT-PROCESS-TOMB>
|
||||
<DEFINE-ROUTINE RT-READ-INSCRIPTION>
|
||||
<DEFINE-ROUTINE RT-READ-PAPER>
|
||||
<DEFINE-ROUTINE RT-PROCESS-PAPER>
|
||||
<DEFINE-ROUTINE RT-PAPER-WARMING>
|
||||
<DEFINE-ROUTINE RT-I-FLASH-WESTMINSTER-LIGHTS>
|
||||
<DEFINE-ROUTINE RT-I-WESTMINSTER-LIGHTS-ON>
|
||||
<DEFINE-ROUTINE RT-I-WESTMINSTER-LIGHTS-OFF>
|
||||
<DEFINE-ROUTINE RT-I-LOCKED-IN-END-GAME>
|
||||
<DEFINE-ROUTINE RT-I-OPEN-WESTMINSTER-DOOR>
|
||||
<DEFINE-ROUTINE RT-I-CLOSE-WESTMINSTER-DOOR>
|
||||
<DEFINE-ROUTINE RT-CF-TH-BOAT>
|
||||
<DEFINE-ROUTINE RT-PROCESS-BOAT-ON-THAMES>
|
||||
<DEFINE-ROUTINE RT-I-MOVE-DOWNSTREAM>
|
||||
<DEFINE-ROUTINE RT-MOVE-UPSTREAM>
|
||||
<DEFINE-ROUTINE RT-THAMES-TIDE>
|
||||
<DEFINE-ROUTINE RT-TOWER-PASSWORD>
|
||||
<DEFINE-ROUTINE V-BOLEYN>
|
||||
<DEFINE-ROUTINE V-CLEVES>
|
||||
<DEFINE-ROUTINE V-HOWARD>
|
||||
<DEFINE-ROUTINE V-PARR>
|
||||
<DEFINE-ROUTINE V-ARAGON>
|
||||
<DEFINE-ROUTINE V-SEYMOUR>
|
||||
<DEFINE-ROUTINE RT-I-OPEN-MUSEUM-DOOR>
|
||||
<DEFINE-ROUTINE RT-I-CLOSE-MUSEUM-DOOR>
|
||||
<DEFINE-ROUTINE RT-INDENT-PRINT>
|
||||
<DEFINE-ROUTINE RT-WRAP-PRINT>
|
1800
puzzles.zap
Normal file
1800
puzzles.zap
Normal file
File diff suppressed because it is too large
Load diff
1663
puzzles.zil
Normal file
1663
puzzles.zil
Normal file
File diff suppressed because it is too large
Load diff
39
sched.zabstr
Normal file
39
sched.zabstr
Normal file
|
@ -0,0 +1,39 @@
|
|||
|
||||
<CONSTANT K-SEC 0>
|
||||
<CONSTANT K-MIN 1>
|
||||
<CONSTANT K-HRS 2>
|
||||
<CONSTANT K-DAY 3>
|
||||
<CONSTANT K-DOW-BASE 12>
|
||||
<CONSTANT K-A-RSIZE 30>
|
||||
<CONSTANT K-A-TWDTH 4>
|
||||
<CONSTANT K-A-TSIZE <* ,K-A-TWDTH 30>>
|
||||
<GLOBAL GL-CLOCK-WAIT:FLAG <> %<> WORD>
|
||||
<GLOBAL GL-CLOCK-STOP:FLAG <> %<> WORD>
|
||||
<CONSTANT GL-TIME:TABLE <TABLE (BYTE) 0 0 0 0>>
|
||||
<CONSTANT GL-TEMP-TIME:TABLE <ITABLE ,K-A-TWDTH (BYTE) 0>>
|
||||
<CONSTANT GL-TIME-PARM:TABLE <ITABLE ,K-A-TWDTH (BYTE) 0>>
|
||||
<CONSTANT GL-TIME-UPDT-INC:TABLE <TABLE (BYTE) 0 0 0 0>>
|
||||
<CONSTANT GL-TIME-UPDT-DEF:TABLE <TABLE (BYTE) 0 0 0 0>>
|
||||
<CONSTANT GL-DAY-NAME:TABLE <PTABLE "Sunday" "Monday" "Tuesday" "Wednesday"
|
||||
"Thursday" "Friday" "Saturday" "Sun" "Mon" "Tue" "Wed" "Thu" "Fri" "Sat"
|
||||
"Sunday " "Monday " "Tuesday " "Wednesday" "Thursday " "Friday "
|
||||
"Saturday ">>
|
||||
<GLOBAL GL-ALARM-WAIT:FLAG <> %<> WORD>
|
||||
<GLOBAL GL-ALARM-STOP:FLAG <> %<> WORD>
|
||||
<GLOBAL GL-ALARM-EXEC:FLAG <> %<> WORD>
|
||||
<CONSTANT GL-A-ROUT:TABLE <ITABLE ,K-A-RSIZE 0>>
|
||||
<CONSTANT GL-A-TIME:TABLE <ITABLE ,K-A-TSIZE (BYTE) 0>>
|
||||
<DEFINE-ROUTINE RT-COPY-TIME>
|
||||
<DEFINE-ROUTINE RT-NORM-TIME>
|
||||
<DEFINE-ROUTINE RT-DO-CLOCK-SET>
|
||||
<DEFINE-ROUTINE RT-CLOCK-INC>
|
||||
<DEFINE-ROUTINE RT-CLOCK-CMP>
|
||||
<DEFINE-ROUTINE RT-CLOCK-JMP>
|
||||
<DEFINE-ROUTINE RT-CLK-NTI-MSG>
|
||||
<DEFINE-ROUTINE RT-CLK-DOW-MSG>
|
||||
<DEFINE-ROUTINE RT-ALARM-SET?>
|
||||
<DEFINE-ROUTINE RT-ALARM-SET-REL>
|
||||
<DEFINE-ROUTINE RT-ALARM-SET-ABS>
|
||||
<DEFINE-ROUTINE RT-ALARM-CLR>
|
||||
<GLOBAL RUN-SMELL-ETHERIUM? <> %<> WORD>
|
||||
<DEFINE-ROUTINE RT-ALARM-CHK>
|
324
sched.zap
Normal file
324
sched.zap
Normal file
|
@ -0,0 +1,324 @@
|
|||
|
||||
|
||||
.FUNCT RT-COPY-TIME,TBL1,TBL2
|
||||
COPYT TBL1,TBL2,K-A-TWDTH
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-NORM-TIME,TIME-TABLE,TEMP,M-LEN,?TMP1
|
||||
GETB TIME-TABLE,K-SEC >TEMP
|
||||
MOD TEMP,60
|
||||
PUTB TIME-TABLE,K-SEC,STACK
|
||||
GETB TIME-TABLE,K-MIN >?TMP1
|
||||
DIV TEMP,60
|
||||
ADD ?TMP1,STACK >TEMP
|
||||
MOD TEMP,60
|
||||
PUTB TIME-TABLE,K-MIN,STACK
|
||||
GETB TIME-TABLE,K-HRS >?TMP1
|
||||
DIV TEMP,60
|
||||
ADD ?TMP1,STACK >TEMP
|
||||
MOD TEMP,24
|
||||
PUTB TIME-TABLE,K-HRS,STACK
|
||||
GETB TIME-TABLE,K-DAY >?TMP1
|
||||
DIV TEMP,24 >TEMP
|
||||
ADD ?TMP1,TEMP
|
||||
PUTB TIME-TABLE,K-DAY,STACK
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-DO-CLOCK-SET,TBL,HRS,MIN,SEC,DAY
|
||||
PUTB TBL,K-SEC,SEC
|
||||
PUTB TBL,K-MIN,MIN
|
||||
PUTB TBL,K-HRS,HRS
|
||||
PUTB TBL,K-DAY,DAY
|
||||
RETURN TBL
|
||||
|
||||
|
||||
.FUNCT RT-CLOCK-INC,N,?TMP1
|
||||
ZERO? GL-CLOCK-WAIT /?CCL3
|
||||
SET 'GL-CLOCK-WAIT,FALSE-VALUE
|
||||
RFALSE
|
||||
?CCL3: ZERO? GL-CLOCK-STOP \FALSE
|
||||
?PRG5: GETB GL-TIME,N >?TMP1
|
||||
GETB GL-TIME-UPDT-INC,N
|
||||
ADD ?TMP1,STACK
|
||||
PUTB GL-TIME,N,STACK
|
||||
IGRTR? 'N,3 \?PRG5
|
||||
COPYT GL-TIME-UPDT-DEF,GL-TIME-UPDT-INC,K-A-TWDTH
|
||||
CALL2 RT-NORM-TIME,GL-TIME
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT RT-CLOCK-CMP,HRS,MIN,SEC,DAY,TMP
|
||||
ZERO? DAY /?CND1
|
||||
GETB GL-TIME,K-DAY >TMP
|
||||
GRTR? DAY,TMP /TRUE
|
||||
LESS? DAY,TMP \?CND1
|
||||
RETURN -1
|
||||
?CND1: GETB GL-TIME,K-HRS >TMP
|
||||
GRTR? HRS,TMP /TRUE
|
||||
LESS? HRS,TMP \?CCL11
|
||||
RETURN -1
|
||||
?CCL11: GETB GL-TIME,K-MIN >TMP
|
||||
GRTR? MIN,TMP /TRUE
|
||||
LESS? MIN,TMP \?CCL15
|
||||
RETURN -1
|
||||
?CCL15: GETB GL-TIME,K-SEC >TMP
|
||||
GRTR? SEC,TMP /TRUE
|
||||
LESS? SEC,TMP \FALSE
|
||||
RETURN -1
|
||||
|
||||
|
||||
.FUNCT RT-CLOCK-JMP,HRS,MIN,SEC,DAY
|
||||
ICALL RT-DO-CLOCK-SET,GL-TIME-UPDT-INC,HRS,MIN,SEC,DAY
|
||||
ICALL1 RT-CLOCK-INC
|
||||
EQUAL? GL-PRSA,V?WAIT,V?WAIT-FOR \?CCL3
|
||||
PUSH 2
|
||||
JUMP ?CND1
|
||||
?CCL3: PUSH 1
|
||||
?CND1: ICALL2 RT-ALARM-CHK,STACK
|
||||
SET 'GL-CLOCK-WAIT,TRUE-VALUE
|
||||
RETURN GL-CLOCK-WAIT
|
||||
|
||||
|
||||
.FUNCT RT-CLK-NTI-MSG,FMT,HRS,MIN,SEC,MSD,MER,AM-PM?
|
||||
ASSIGNED? 'FMT /?CND1
|
||||
SET 'FMT,7
|
||||
?CND1: GETB GL-TIME,K-HRS >HRS
|
||||
GETB GL-TIME,K-MIN >MIN
|
||||
GETB GL-TIME,K-SEC >SEC
|
||||
BTST FMT,4 \?CND3
|
||||
BTST FMT,8 \?CCL7
|
||||
SET 'MSD,STR?217
|
||||
JUMP ?CND5
|
||||
?CCL7: ZERO? HRS \?CCL9
|
||||
ADD HRS,12 >HRS
|
||||
SET 'MSD,STR?218
|
||||
SET 'AM-PM?,1
|
||||
JUMP ?CND5
|
||||
?CCL9: LESS? HRS,12 \?CCL11
|
||||
SET 'MSD,STR?218
|
||||
SET 'AM-PM?,1
|
||||
JUMP ?CND5
|
||||
?CCL11: EQUAL? HRS,12 \?CCL13
|
||||
SET 'MSD,STR?218
|
||||
SET 'AM-PM?,2
|
||||
JUMP ?CND5
|
||||
?CCL13: SUB HRS,12 >HRS
|
||||
SET 'MSD,STR?218
|
||||
SET 'AM-PM?,2
|
||||
?CND5: EQUAL? AM-PM?,1 \?CCL16
|
||||
BTST FMT,16 \?CCL19
|
||||
SET 'MER,STR?219
|
||||
JUMP ?CND14
|
||||
?CCL19: SET 'MER,STR?220
|
||||
JUMP ?CND14
|
||||
?CCL16: EQUAL? AM-PM?,2 \?CCL21
|
||||
BTST FMT,16 \?CCL24
|
||||
SET 'MER,STR?221
|
||||
JUMP ?CND14
|
||||
?CCL24: SET 'MER,STR?222
|
||||
JUMP ?CND14
|
||||
?CCL21: SET 'MER,STR?218
|
||||
?CND14: LESS? HRS,10 \?CND25
|
||||
PRINT MSD
|
||||
?CND25: PRINTN HRS
|
||||
?CND3: BTST FMT,2 \?CND27
|
||||
BTST FMT,4 \?CND29
|
||||
PRINTC 58
|
||||
?CND29: LESS? MIN,10 \?CND31
|
||||
PRINTC 48
|
||||
?CND31: PRINTN MIN
|
||||
?CND27: BTST FMT,1 \?CND33
|
||||
BTST FMT,4 /?CCL36
|
||||
BTST FMT,2 \?CND35
|
||||
?CCL36: PRINTC 58
|
||||
?CND35: LESS? SEC,10 \?CND39
|
||||
PRINTC 48
|
||||
?CND39: PRINTN SEC
|
||||
?CND33: BTST FMT,4 \FALSE
|
||||
PRINT MER
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-CLK-DOW-MSG,FMT,DOW,WDOW
|
||||
ASSIGNED? 'FMT /?CND1
|
||||
SET 'FMT,1
|
||||
?CND1: GETB GL-TIME,K-DAY
|
||||
SUB STACK,K-DOW-BASE
|
||||
MOD STACK,7 >DOW
|
||||
BTST FMT,1 \FALSE
|
||||
BTST FMT,4 \?CCL8
|
||||
ADD DOW,14
|
||||
GET GL-DAY-NAME,STACK >WDOW
|
||||
JUMP ?CND6
|
||||
?CCL8: BTST FMT,2 \?CCL10
|
||||
ADD DOW,7
|
||||
GET GL-DAY-NAME,STACK >WDOW
|
||||
JUMP ?CND6
|
||||
?CCL10: GET GL-DAY-NAME,DOW >WDOW
|
||||
?CND6: PRINT WDOW
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT RT-ALARM-SET?,RTN,R-PTR,T-PTR
|
||||
?PRG1: EQUAL? R-PTR,K-A-RSIZE /FALSE
|
||||
GET GL-A-ROUT,R-PTR
|
||||
EQUAL? RTN,STACK \?CCL7
|
||||
MUL R-PTR,K-A-TWDTH >T-PTR
|
||||
ADD GL-A-TIME,T-PTR
|
||||
ICALL RT-COPY-TIME,STACK,GL-TIME-PARM
|
||||
RTRUE
|
||||
?CCL7: INC 'R-PTR
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT RT-ALARM-SET-REL,RTN,TIME,R-PTR,T-PTR,N,?TMP3,?TMP2,?TMP1
|
||||
?PRG1: EQUAL? R-PTR,K-A-RSIZE \?CND3
|
||||
CRLF
|
||||
PRINTI "*** TOO MANY ALARMS (REL) ***"
|
||||
CRLF
|
||||
CRLF
|
||||
RFALSE
|
||||
?CND3: GET GL-A-ROUT,R-PTR
|
||||
ZERO? STACK \?CCL7
|
||||
PUT GL-A-ROUT,R-PTR,RTN
|
||||
MUL R-PTR,K-A-TWDTH >T-PTR
|
||||
ZERO? GL-ALARM-EXEC /?CCL10
|
||||
SET 'N,0
|
||||
?PRG11: ADD T-PTR,N >?TMP1
|
||||
GETB GL-TIME,N >?TMP2
|
||||
GETB TIME,N
|
||||
ADD ?TMP2,STACK
|
||||
PUTB GL-A-TIME,?TMP1,STACK
|
||||
IGRTR? 'N,3 /?CND8
|
||||
JUMP ?PRG11
|
||||
?CCL10: SET 'N,0
|
||||
?PRG15: ADD T-PTR,N >?TMP1
|
||||
GETB GL-TIME,N >?TMP3
|
||||
GETB TIME,N
|
||||
ADD ?TMP3,STACK >?TMP2
|
||||
GETB GL-TIME-UPDT-INC,N
|
||||
ADD ?TMP2,STACK
|
||||
PUTB GL-A-TIME,?TMP1,STACK
|
||||
IGRTR? 'N,3 \?PRG15
|
||||
?CND8: ADD GL-A-TIME,T-PTR
|
||||
ICALL2 RT-NORM-TIME,STACK
|
||||
RTRUE
|
||||
?CCL7: INC 'R-PTR
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT RT-ALARM-SET-ABS,RTN,TIME,R-PTR,T-PTR
|
||||
?PRG1: EQUAL? R-PTR,K-A-RSIZE \?CND3
|
||||
CRLF
|
||||
PRINTI "*** TOO MANY (ABS) ALARMS ***"
|
||||
CRLF
|
||||
CRLF
|
||||
RFALSE
|
||||
?CND3: GET GL-A-ROUT,R-PTR
|
||||
ZERO? STACK \?CCL7
|
||||
PUT GL-A-ROUT,R-PTR,RTN
|
||||
MUL R-PTR,K-A-TWDTH >T-PTR
|
||||
ADD GL-A-TIME,T-PTR
|
||||
COPYT TIME,STACK,K-A-TWDTH
|
||||
RTRUE
|
||||
?CCL7: INC 'R-PTR
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT RT-ALARM-CLR,RTN,R-PTR,T-PTR
|
||||
?PRG1: EQUAL? R-PTR,K-A-RSIZE /FALSE
|
||||
GET GL-A-ROUT,R-PTR
|
||||
EQUAL? RTN,STACK \?CND3
|
||||
PUT GL-A-ROUT,R-PTR,0
|
||||
MUL R-PTR,K-A-TWDTH >T-PTR
|
||||
ADD GL-A-TIME,T-PTR
|
||||
COPYT STACK,0,K-A-TWDTH
|
||||
?CND3: INC 'R-PTR
|
||||
JUMP ?PRG1
|
||||
|
||||
|
||||
.FUNCT RT-ALARM-CHK,PARM,VAL,RTN,R-PTR,R-CNT,T-PTR,HRS,MIN,SEC,DAY,T-TIME
|
||||
SET 'RTN,-1
|
||||
SET 'RUN-SMELL-ETHERIUM?,FALSE-VALUE
|
||||
ZERO? GL-ALARM-WAIT /?CCL3
|
||||
SET 'GL-ALARM-WAIT,FALSE-VALUE
|
||||
RFALSE
|
||||
?CCL3: GET GLOBAL-VARS-TABLE,0
|
||||
ZERO? STACK \FALSE
|
||||
ICALL RT-COPY-TIME,GL-TIME,GL-TEMP-TIME
|
||||
?PRG5: EQUAL? R-PTR,K-A-RSIZE \?CND7
|
||||
EQUAL? RTN,-1 \?CCL11
|
||||
ZERO? RUN-SMELL-ETHERIUM? \?REP6
|
||||
RETURN R-CNT
|
||||
?CCL11: SET 'R-PTR,RTN
|
||||
GET GL-A-ROUT,R-PTR >RTN
|
||||
MUL R-PTR,K-A-TWDTH >T-PTR
|
||||
PUT GL-A-ROUT,R-PTR,0
|
||||
ADD GL-A-TIME,T-PTR >T-TIME
|
||||
GETB T-TIME,K-SEC >SEC
|
||||
GETB T-TIME,K-MIN >MIN
|
||||
GETB T-TIME,K-HRS >HRS
|
||||
GETB T-TIME,K-DAY >DAY
|
||||
COPYT T-TIME,0,K-A-TWDTH
|
||||
FSET? CH-PLAYER,FL-ASLEEP /?CND14
|
||||
ICALL1 RT-UPDATE-STATUS-LINE
|
||||
?CND14: SET 'GL-ALARM-EXEC,TRUE-VALUE
|
||||
CALL RTN >VAL
|
||||
ZERO? RUN-SMELL-ETHERIUM? \?REP6
|
||||
SET 'GL-ALARM-EXEC,FALSE-VALUE
|
||||
ICALL RT-COPY-TIME,GL-TEMP-TIME,GL-TIME
|
||||
INC 'R-CNT
|
||||
ZERO? VAL /?CND18
|
||||
CALL RT-CLOCK-CMP,HRS,MIN,SEC,DAY
|
||||
EQUAL? STACK,-1 \?CND18
|
||||
EQUAL? PARM,1 \?CCL24
|
||||
PRINTI "[Press any key to continue.]"
|
||||
CRLF
|
||||
INPUT 1
|
||||
JUMP ?CND18
|
||||
?CCL24: EQUAL? PARM,2 \?CND18
|
||||
?PRG26: CRLF
|
||||
PRINTI "Do you want to continue waiting?"
|
||||
CRLF
|
||||
PRINTI "Please press Y or N > "
|
||||
INPUT 1 >VAL
|
||||
PRINTC VAL
|
||||
CRLF
|
||||
EQUAL? VAL,78,110 \?CCL30
|
||||
SET 'RTN,-1
|
||||
SET 'R-PTR,K-A-RSIZE
|
||||
ICALL RT-DO-CLOCK-SET,GL-TIME,HRS,MIN,SEC,DAY
|
||||
JUMP ?CND18
|
||||
?CCL30: EQUAL? VAL,89,121 \?PRG26
|
||||
?CND18: EQUAL? RTN,-1 /?PRG5
|
||||
SET 'RTN,-1
|
||||
SET 'R-PTR,0
|
||||
JUMP ?PRG5
|
||||
?CND7: GET GL-A-ROUT,R-PTR
|
||||
ZERO? STACK /?CND34
|
||||
MUL R-PTR,K-A-TWDTH >T-PTR
|
||||
ADD T-PTR,K-SEC
|
||||
GETB GL-A-TIME,STACK >SEC
|
||||
ADD T-PTR,K-MIN
|
||||
GETB GL-A-TIME,STACK >MIN
|
||||
ADD T-PTR,K-HRS
|
||||
GETB GL-A-TIME,STACK >HRS
|
||||
ADD T-PTR,K-DAY
|
||||
GETB GL-A-TIME,STACK >DAY
|
||||
ZERO? PARM /?PRD39
|
||||
CALL RT-CLOCK-CMP,HRS,MIN,SEC,DAY
|
||||
EQUAL? STACK,-1 /?CCL37
|
||||
?PRD39: ZERO? PARM \?CND34
|
||||
CALL RT-CLOCK-CMP,HRS,MIN,SEC,DAY
|
||||
EQUAL? STACK,-1,0 \?CND34
|
||||
?CCL37: ICALL RT-DO-CLOCK-SET,GL-TIME,HRS,MIN,SEC,DAY
|
||||
SET 'RTN,R-PTR
|
||||
?CND34: INC 'R-PTR
|
||||
JUMP ?PRG5
|
||||
?REP6: ZERO? RUN-SMELL-ETHERIUM? /FALSE
|
||||
ICALL1 RT-SMELL-ETHERIUM?
|
||||
RETURN R-CNT
|
||||
|
||||
.ENDI
|
447
sched.zil
Normal file
447
sched.zil
Normal file
|
@ -0,0 +1,447 @@
|
|||
; "clock constants"
|
||||
|
||||
; "offsets into time tables"
|
||||
|
||||
<CONSTANT K-SEC 0> ; "sec"
|
||||
<CONSTANT K-MIN 1> ; "min"
|
||||
<CONSTANT K-HRS 2> ; "hrs"
|
||||
<CONSTANT K-DAY 3> ; "day"
|
||||
<CONSTANT K-DOW-BASE 12> ; "Known to be Sunday (dow = 0)"
|
||||
|
||||
; "alarm constants"
|
||||
|
||||
<CONSTANT K-A-RSIZE 30> ; "size of alarm routine table in words"
|
||||
<CONSTANT K-A-TWDTH 4> ; "size of alarm time table entry in bytes"
|
||||
<CONSTANT K-A-TSIZE <* ,K-A-TWDTH 30>> ; "size of alarm time table in bytes"
|
||||
|
||||
|
||||
; "event constants"
|
||||
|
||||
; "clock globals"
|
||||
|
||||
<GLOBAL GL-CLOCK-WAIT:FLAG <>> ; "flag to inhibit clock update"
|
||||
<GLOBAL GL-CLOCK-STOP:FLAG <>> ; "flag to stop clock update"
|
||||
|
||||
<CONSTANT GL-TIME:TABLE ; "pri game time table"
|
||||
<TABLE (BYTE)
|
||||
0 ; "sec 00-59"
|
||||
0 ; "min 00-59"
|
||||
0 ; "hrs 00-23"
|
||||
0 ; "day 01-31">>
|
||||
|
||||
<CONSTANT GL-TEMP-TIME:TABLE <ITABLE ,K-A-TWDTH (BYTE) 0>>
|
||||
; "table to hold time temporarily"
|
||||
|
||||
<CONSTANT GL-TIME-PARM:TABLE <ITABLE ,K-A-TWDTH (BYTE) 0>>
|
||||
; "Parameter table to all time routines"
|
||||
|
||||
<CONSTANT GL-TIME-UPDT-INC:TABLE ; "next time inc is kept here"
|
||||
<TABLE (BYTE)
|
||||
0 ; "sec"
|
||||
0 ; "min"
|
||||
0 ; "hrs"
|
||||
0 ; "day">>
|
||||
|
||||
<CONSTANT GL-TIME-UPDT-DEF:TABLE ; "default time inc is kept here"
|
||||
<TABLE (BYTE)
|
||||
0 ; "sec"
|
||||
0 ; "min"
|
||||
0 ; "hrs"
|
||||
0 ; "day">>
|
||||
|
||||
<CONSTANT GL-DAY-NAME:TABLE ; "long and short day names"
|
||||
<PTABLE
|
||||
"Sunday" ; "offset of 0"
|
||||
"Monday"
|
||||
"Tuesday"
|
||||
"Wednesday"
|
||||
"Thursday"
|
||||
"Friday"
|
||||
"Saturday"
|
||||
"Sun" ; "offset of 7"
|
||||
"Mon"
|
||||
"Tue"
|
||||
"Wed"
|
||||
"Thu"
|
||||
"Fri"
|
||||
"Sat"
|
||||
"Sunday " ; "offset of 14"
|
||||
"Monday "
|
||||
"Tuesday "
|
||||
"Wednesday"
|
||||
"Thursday "
|
||||
"Friday "
|
||||
"Saturday "
|
||||
>
|
||||
>
|
||||
|
||||
; "alarm globals"
|
||||
|
||||
<GLOBAL GL-ALARM-WAIT:FLAG <>> ; "flag to inhibit alarm check"
|
||||
<GLOBAL GL-ALARM-STOP:FLAG <>> ; "flag to stop alarm check"
|
||||
<GLOBAL GL-ALARM-EXEC:FLAG <>> ; "flag to show an alarm is executing"
|
||||
|
||||
<CONSTANT GL-A-ROUT:TABLE <ITABLE ,K-A-RSIZE 0>> ; "table of routines"
|
||||
<CONSTANT GL-A-TIME:TABLE <ITABLE ,K-A-TSIZE (BYTE) 0>>
|
||||
; "table of times (6 words)"
|
||||
|
||||
; "event globals"
|
||||
|
||||
; "support routines use by clock/event/alarm"
|
||||
|
||||
; "RT-COPY-TIME"
|
||||
; "Copy time table 1 to time table 2"
|
||||
|
||||
<ROUTINE RT-COPY-TIME (TBL1 TBL2)
|
||||
<COPYT .TBL1 .TBL2 ,K-A-TWDTH>>
|
||||
|
||||
; "RT-NORM-TIME"
|
||||
|
||||
<ROUTINE RT-NORM-TIME (TIME-TABLE "AUX" TEMP M-LEN)
|
||||
; "normalize seconds"
|
||||
<SET TEMP <GETB .TIME-TABLE ,K-SEC>>
|
||||
<PUTB .TIME-TABLE ,K-SEC <MOD .TEMP 60>>
|
||||
; "This is the new minutes value"
|
||||
<SET TEMP <+ <GETB .TIME-TABLE ,K-MIN> </ .TEMP 60>>>
|
||||
; "normalize minutes"
|
||||
<PUTB .TIME-TABLE ,K-MIN <MOD .TEMP 60>>
|
||||
<SET TEMP <+ <GETB .TIME-TABLE ,K-HRS> </ .TEMP 60>>>
|
||||
; "normalize hours"
|
||||
<PUTB .TIME-TABLE ,K-HRS <MOD .TEMP 24>>
|
||||
; "Update day of month"
|
||||
<PUTB .TIME-TABLE ,K-DAY <+ <GETB .TIME-TABLE ,K-DAY>
|
||||
<SET TEMP </ .TEMP 24>>>>
|
||||
; "normalize day, month, and year (including leap years)"
|
||||
; "Given that the game takes place in the middle of June in 1887,
|
||||
this is a complete waste of time..."
|
||||
;<REPEAT ()
|
||||
<SET M-LEN <GETB ,GL-MONTH-LEN <GETB .TIME-TABLE ,K-MON>>>
|
||||
<COND (<NOT <EQUAL? <GETB .TIME-TABLE ,K-MON> 2>>
|
||||
T)
|
||||
(<ZERO? <MOD <GETB .TIME-TABLE ,K-YRS> 100>>
|
||||
T)
|
||||
(<ZERO? <MOD <GETB .TIME-TABLE ,K-YRS> 4>>
|
||||
<INC M-LEN>)>
|
||||
<SET TEMP <GETB .TIME-TABLE ,K-DAY>>
|
||||
<COND (<G? .TEMP .M-LEN>
|
||||
<PUTB .TIME-TABLE ,K-DAY <- .TEMP .M-LEN>>
|
||||
<PUTB .TIME-TABLE ,K-MON <+ <GETB .TIME-TABLE ,K-MON> 1>>
|
||||
<SET TEMP <GETB .TIME-TABLE ,K-MON>>
|
||||
<COND (<G? .TEMP 12>
|
||||
<PUTB .TIME-TABLE ,K-MON <- .TEMP 12>>
|
||||
<PUTB .TIME-TABLE ,K-YRS
|
||||
<+ <GETB .TIME-TABLE ,K-YRS> 1>>)>)
|
||||
(T <RETURN>)>>>
|
||||
|
||||
; "clock routines"
|
||||
|
||||
; "RT-CLOCK-INC-SET. Made a macro that calls RT-DO-CLOCK-SET"
|
||||
|
||||
<ROUTINE RT-DO-CLOCK-SET (TBL HRS MIN SEC
|
||||
"OPTIONAL" (DAY 0))
|
||||
<PUTB .TBL ,K-SEC .SEC>
|
||||
<PUTB .TBL ,K-MIN .MIN>
|
||||
<PUTB .TBL ,K-HRS .HRS>
|
||||
<PUTB .TBL ,K-DAY .DAY>
|
||||
.TBL>
|
||||
|
||||
; "RT-CLOCK-DEF-SET. Moved to MACROS"
|
||||
|
||||
; "RT-CLOCK-SET. MOVED TO MACROS"
|
||||
|
||||
; "RT-CLOCK-INC"
|
||||
|
||||
<ROUTINE RT-CLOCK-INC ()
|
||||
<COND (<MC-T? ,GL-CLOCK-WAIT>
|
||||
<SETG GL-CLOCK-WAIT <>>
|
||||
<RFALSE>)
|
||||
(<MC-T? ,GL-CLOCK-STOP>
|
||||
<RFALSE>)>
|
||||
; "add gl-time-updt-inc to gl-time"
|
||||
<REPEAT ((N 0))
|
||||
<PUTB ,GL-TIME .N
|
||||
<+ <GETB ,GL-TIME .N>
|
||||
<GETB ,GL-TIME-UPDT-INC .N>>>
|
||||
<COND (<G? <SET N <+ .N 1>>
|
||||
<- ,K-A-TWDTH 1>> <RETURN>)>>
|
||||
; "copy gl-time-updt-def into gl-time-updt-inc"
|
||||
<COPYT ,GL-TIME-UPDT-DEF ,GL-TIME-UPDT-INC ,K-A-TWDTH>
|
||||
; "normalize the time in gl-time"
|
||||
<RT-NORM-TIME ,GL-TIME>>
|
||||
|
||||
; "RT-PARM-SET MOVED TO MACROS"
|
||||
|
||||
; "RT-CLOCK-CMP"
|
||||
; "Returns -1 if arg time < current time."
|
||||
; "Returns 0 if arg time = current time."
|
||||
; "Returns 1 if arg time > current time."
|
||||
|
||||
<ROUTINE RT-CLOCK-CMP (HRS MIN SEC "OPTIONAL" (DAY 0)
|
||||
"AUX" TMP)
|
||||
<COND (<ZERO? .DAY>
|
||||
T)
|
||||
(<G? .DAY <SET TMP <GETB ,GL-TIME ,K-DAY>>>
|
||||
<RETURN 1>)
|
||||
(<L? .DAY .TMP>
|
||||
<RETURN -1>)>
|
||||
<COND (<G? .HRS <SET TMP <GETB ,GL-TIME ,K-HRS>>>
|
||||
<RETURN 1>)
|
||||
(<L? .HRS .TMP>
|
||||
<RETURN -1>)
|
||||
(<G? .MIN <SET TMP <GETB ,GL-TIME ,K-MIN>>>
|
||||
<RETURN 1>)
|
||||
(<L? .MIN .TMP>
|
||||
<RETURN -1>)
|
||||
(<G? .SEC <SET TMP <GETB ,GL-TIME ,K-SEC>>>
|
||||
<RETURN 1>)
|
||||
(<L? .SEC .TMP>
|
||||
<RETURN -1>)
|
||||
(T
|
||||
<RETURN 0>)>>
|
||||
|
||||
; "RT-CLOCK-JMP"
|
||||
|
||||
<ROUTINE RT-CLOCK-JMP (HRS MIN SEC "OPTIONAL" (DAY 0))
|
||||
<RT-CLOCK-INC-SET .HRS .MIN .SEC .DAY>
|
||||
<RT-CLOCK-INC>
|
||||
<RT-ALARM-CHK
|
||||
<COND (<MC-VERB? WAIT WAIT-FOR>
|
||||
2)
|
||||
(T 1)>>
|
||||
<SETG GL-CLOCK-WAIT T>>
|
||||
|
||||
; "RT-CLK-NTI-MSG"
|
||||
|
||||
<ROUTINE RT-CLK-NTI-MSG ("OPTIONAL" (FMT 7) "AUX" HRS MIN SEC MSD MER
|
||||
(AM-PM? 0))
|
||||
<SET HRS <GETB ,GL-TIME ,K-HRS>>
|
||||
<SET MIN <GETB ,GL-TIME ,K-MIN>>
|
||||
<SET SEC <GETB ,GL-TIME ,K-SEC>>
|
||||
<COND (<BAND .FMT ,K-NTI-HH>
|
||||
<COND (<BAND .FMT ,K-NTI-MT>
|
||||
<SET MSD "0">)
|
||||
(<EQUAL? .HRS 0>
|
||||
<SET HRS <+ .HRS 12>>
|
||||
<SET MSD " ">
|
||||
<SET AM-PM? 1>)
|
||||
(<L? .HRS 12>
|
||||
<SET MSD " ">
|
||||
<SET AM-PM? 1>)
|
||||
(<EQUAL? .HRS 12>
|
||||
<SET MSD " ">
|
||||
<SET AM-PM? 2>)
|
||||
(T
|
||||
<SET HRS <- .HRS 12>>
|
||||
<SET MSD " ">
|
||||
<SET AM-PM? 2>)>
|
||||
<COND (<==? .AM-PM? 1>
|
||||
<COND (<BAND .FMT ,K-NTI-SM>
|
||||
<SET MER " AM">)
|
||||
(T
|
||||
<SET MER " a.m.">)>)
|
||||
(<==? .AM-PM? 2>
|
||||
<COND (<BAND .FMT ,K-NTI-SM>
|
||||
<SET MER " PM">)
|
||||
(T
|
||||
<SET MER " p.m.">)>)
|
||||
(T
|
||||
<SET MER " ">)>
|
||||
<COND (<L? .HRS 10>
|
||||
<TELL .MSD>)>
|
||||
<TELL N .HRS>)>
|
||||
<COND (<BAND .FMT ,K-NTI-MM>
|
||||
<COND (<BAND .FMT ,K-NTI-HH>
|
||||
<TELL ":">)>
|
||||
<COND (<L? .MIN 10>
|
||||
<TELL "0">)>
|
||||
<TELL N .MIN>)>
|
||||
<COND (<BAND .FMT ,K-NTI-SS>
|
||||
<COND (<OR <BAND .FMT ,K-NTI-HH>
|
||||
<BAND .FMT ,K-NTI-MM>>
|
||||
<TELL ":">)>
|
||||
<COND (<L? .SEC 10>
|
||||
<TELL "0">)>
|
||||
<TELL N .SEC>)>
|
||||
<COND (<BAND .FMT ,K-NTI-HH>
|
||||
<TELL .MER>)>>
|
||||
|
||||
; "RT-CLK-DOW-MSG"
|
||||
|
||||
<ROUTINE RT-CLK-DOW-MSG ("OPTIONAL" (FMT 1) "AUX" DOW WDOW)
|
||||
<SET DOW <MOD <- <GETB ,GL-TIME ,K-DAY> ,K-DOW-BASE> 7>>
|
||||
<COND (<BAND .FMT ,K-DOW-DW>
|
||||
<COND (<BAND .FMT ,K-DOW-EN>
|
||||
<SET WDOW <GET ,GL-DAY-NAME <+ .DOW 14>>>)
|
||||
(<BAND .FMT ,K-DOW-SN>
|
||||
<SET WDOW <GET ,GL-DAY-NAME <+ .DOW 7>>>)
|
||||
(T
|
||||
<SET WDOW <GET ,GL-DAY-NAME .DOW>>)>
|
||||
<TELL .WDOW>)>>
|
||||
|
||||
; "alarm routines"
|
||||
|
||||
; "RT-ALARM-SET?"
|
||||
|
||||
<ROUTINE RT-ALARM-SET? (RTN "AUX" (R-PTR 0) T-PTR)
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||||
<RFALSE>)
|
||||
(<EQUAL? .RTN <GET ,GL-A-ROUT .R-PTR>>
|
||||
<SET T-PTR <* .R-PTR ,K-A-TWDTH>>
|
||||
<RT-COPY-TIME <REST ,GL-A-TIME .T-PTR> ,GL-TIME-PARM>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<INC R-PTR>)>>>
|
||||
|
||||
; "RT-ALARM-SET-REL"
|
||||
|
||||
<ROUTINE RT-ALARM-SET-REL (RTN TIME "AUX" (R-PTR 0) T-PTR)
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||||
<TELL CR "*** TOO MANY ALARMS (REL) ***" CR CR>
|
||||
<RFALSE>)>
|
||||
;<DEBUGGING? <COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||||
<TELL CR "*** TOO MANY ALARMS (REL) ***" CR CR>
|
||||
<RFALSE>)>>
|
||||
<COND (<ZERO? <GET ,GL-A-ROUT .R-PTR>>
|
||||
<PUT ,GL-A-ROUT .R-PTR .RTN>
|
||||
<SET T-PTR <* .R-PTR ,K-A-TWDTH>>
|
||||
<COND (<MC-T? ,GL-ALARM-EXEC>
|
||||
<REPEAT ((N 0))
|
||||
<PUTB ,GL-A-TIME <+ .T-PTR .N>
|
||||
<+ <GETB ,GL-TIME .N>
|
||||
<GETB .TIME .N>>>
|
||||
<COND (<G? <SET N <+ .N 1>>
|
||||
<- ,K-A-TWDTH 1>>
|
||||
<RETURN>)>>)
|
||||
(T
|
||||
<REPEAT ((N 0))
|
||||
<PUTB ,GL-A-TIME <+ .T-PTR .N>
|
||||
<+ <GETB ,GL-TIME .N>
|
||||
<GETB .TIME .N>
|
||||
<GETB ,GL-TIME-UPDT-INC .N>>>
|
||||
<COND (<G? <SET N <+ .N 1>>
|
||||
<- ,K-A-TWDTH 1>>
|
||||
<RETURN>)>>)>
|
||||
<RT-NORM-TIME <REST ,GL-A-TIME .T-PTR>>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<INC R-PTR>)>>>
|
||||
|
||||
; "RT-ALARM-SET-ABS"
|
||||
|
||||
<ROUTINE RT-ALARM-SET-ABS (RTN TIME "AUX" (R-PTR 0) T-PTR)
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||||
<TELL CR "*** TOO MANY (ABS) ALARMS ***" CR CR>
|
||||
<RFALSE>)>
|
||||
;<DEBUGGING? <COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||||
<TELL CR "*** TOO MANY (ABS) ALARMS ***" CR CR>
|
||||
<RFALSE>)>>
|
||||
<COND (<ZERO? <GET ,GL-A-ROUT .R-PTR>>
|
||||
<PUT ,GL-A-ROUT .R-PTR .RTN>
|
||||
<SET T-PTR <* .R-PTR ,K-A-TWDTH>>
|
||||
<COPYT .TIME <REST ,GL-A-TIME .T-PTR> ,K-A-TWDTH>
|
||||
<RTRUE>)
|
||||
(T
|
||||
<INC R-PTR>)>>>
|
||||
|
||||
; "RT-ALARM-CLR"
|
||||
|
||||
<ROUTINE RT-ALARM-CLR (RTN "AUX" (R-PTR 0) T-PTR)
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||||
<RFALSE>)
|
||||
(<EQUAL? .RTN <GET ,GL-A-ROUT .R-PTR>>
|
||||
<PUT ,GL-A-ROUT .R-PTR 0>
|
||||
<SET T-PTR <* .R-PTR ,K-A-TWDTH>>
|
||||
<COPYT <REST ,GL-A-TIME .T-PTR> 0 ,K-A-TWDTH>)>
|
||||
<INC R-PTR>>>
|
||||
|
||||
; "RT-ALARM-CHK"
|
||||
|
||||
<GLOBAL RUN-SMELL-ETHERIUM? <>>
|
||||
|
||||
<ROUTINE RT-ALARM-CHK ("OPTIONAL" (PARM 0)
|
||||
"AUX" VAL (RTN -1) (R-PTR 0) (R-CNT 0)
|
||||
T-PTR HRS MIN SEC DAY T-TIME)
|
||||
<SETG RUN-SMELL-ETHERIUM? <>>
|
||||
<COND (<MC-T? ,GL-ALARM-WAIT>
|
||||
<SETG GL-ALARM-WAIT <>>
|
||||
<RFALSE>)
|
||||
(<MC-T? ,GL-ALARM-STOP>
|
||||
<RFALSE>)>
|
||||
<RT-COPY-TIME ,GL-TIME ,GL-TEMP-TIME>
|
||||
<REPEAT ()
|
||||
<COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||||
<COND (<EQUAL? .RTN -1>
|
||||
<COND (,RUN-SMELL-ETHERIUM? <RETURN>)>
|
||||
<RETURN .R-CNT>)
|
||||
(T
|
||||
; "Time to run it"
|
||||
<SET R-PTR .RTN> ; "Get the offset stored in RTN"
|
||||
<SET RTN <GET ,GL-A-ROUT .R-PTR>>
|
||||
<SET T-PTR <* .R-PTR ,K-A-TWDTH>>
|
||||
<PUT ,GL-A-ROUT .R-PTR 0>
|
||||
<SET T-TIME <ZREST ,GL-A-TIME .T-PTR>>
|
||||
<SET SEC <GETB .T-TIME ,K-SEC>>
|
||||
<SET MIN <GETB .T-TIME ,K-MIN>>
|
||||
<SET HRS <GETB .T-TIME ,K-HRS>>
|
||||
<SET DAY <GETB .T-TIME ,K-DAY>>
|
||||
<COPYT .T-TIME 0 ,K-A-TWDTH>
|
||||
<COND (<MC-ISNOT? ,CH-PLAYER ,FL-ASLEEP>
|
||||
<RT-UPDATE-STATUS-LINE>)>
|
||||
<SETG GL-ALARM-EXEC T>
|
||||
<SET VAL <APPLY .RTN>>
|
||||
<COND (,RUN-SMELL-ETHERIUM? <RETURN>)>
|
||||
<SETG GL-ALARM-EXEC <>>
|
||||
<RT-COPY-TIME ,GL-TEMP-TIME ,GL-TIME>
|
||||
<INC R-CNT>
|
||||
; "If alarm time != new time, ask for key to cont."
|
||||
<COND (<AND <MC-T? .VAL>
|
||||
<EQUAL? <RT-CLOCK-CMP .HRS .MIN .SEC
|
||||
.DAY> -1>>
|
||||
<COND (<EQUAL? .PARM 1>
|
||||
<TELL "[Press any key to continue.]" CR>
|
||||
<INPUT 1>)
|
||||
(<EQUAL? .PARM 2>
|
||||
<REPEAT ()
|
||||
<TELL CR
|
||||
"Do you want to continue waiting?" CR
|
||||
"Please press Y or N > ">
|
||||
<SET VAL <INPUT 1>>
|
||||
<PRINTC .VAL>
|
||||
<CRLF>
|
||||
<COND
|
||||
(<EQUAL? .VAL !\N !\n>
|
||||
<SET RTN -1>
|
||||
<SET R-PTR ,K-A-RSIZE>
|
||||
<RT-CLOCK-SET .HRS .MIN .SEC
|
||||
.DAY>
|
||||
<RETURN>)
|
||||
(<EQUAL? .VAL !\Y !\y>
|
||||
<RETURN>)>>)>)>
|
||||
; "Reset and start loop again."
|
||||
<COND (<EQUAL? .RTN -1>
|
||||
<AGAIN>)>
|
||||
<SET RTN -1>
|
||||
<SET R-PTR 0>
|
||||
<AGAIN>)>)>
|
||||
<COND (<MC-T? <GET ,GL-A-ROUT .R-PTR>>
|
||||
<SET T-PTR <* .R-PTR ,K-A-TWDTH>>
|
||||
<SET SEC <GETB ,GL-A-TIME <+ .T-PTR ,K-SEC>>>
|
||||
<SET MIN <GETB ,GL-A-TIME <+ .T-PTR ,K-MIN>>>
|
||||
<SET HRS <GETB ,GL-A-TIME <+ .T-PTR ,K-HRS>>>
|
||||
<SET DAY <GETB ,GL-A-TIME <+ .T-PTR ,K-DAY>>>
|
||||
<COND (<OR <AND <MC-T? .PARM>
|
||||
<EQUAL? <RT-CLOCK-CMP .HRS .MIN .SEC
|
||||
.DAY> -1>>
|
||||
<AND <MC-F? .PARM>
|
||||
<EQUAL? <RT-CLOCK-CMP .HRS .MIN .SEC
|
||||
.DAY> -1 0>>>
|
||||
<RT-CLOCK-SET .HRS .MIN .SEC .DAY>
|
||||
<SET RTN .R-PTR>)>)>
|
||||
<INC R-PTR>>
|
||||
<COND (,RUN-SMELL-ETHERIUM?
|
||||
<RT-SMELL-ETHERIUM?>
|
||||
.R-CNT)>>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue