-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathplaces2.zil
901 lines (860 loc) · 32.5 KB
/
places2.zil
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
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>)>>