-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathdueling.zil
889 lines (820 loc) · 25.4 KB
/
dueling.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
"DUELING for
NORD AND BERT
(c) Copyright 1987 Infocom, Inc. All Rights Reserved."
<ROOM BEFORE-MANOR
(LOC ROOMS)
(DESC "Before the Manor")
;(FLAGS INDOORSBIT)
(GLOBAL MANOR DUELING)
(ACTION BEFORE-MANOR-F)>
<ROUTINE BEFORE-MANOR-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You're standing in front of a large but oddly shaped manor house. From
the outside, it looks as if its individual rooms have been haphazardly
constructed and are out of proportion with each other. This has a slight
disorienting effect.">)>>
<GLOBAL REAL-DUELING <>>
<OBJECT DUELING
(LOC LOCAL-GLOBALS)
(DESC "room")
(PICK-IT "Visit the Manor of Speaking")
(MAX-SCORE 7)
(SCENE-SCORE 0)
(SCENE-ROOM BEFORE-MANOR)
(SCENE-CUR 0)
(SYNONYM ;ROOM DECORATED DECORATION DOLDRUMS DOLDRUM KREMLIN
PHARMACY ATTIC RX INTERIOR YAWN)
(ADJECTIVE INTERIOR)
(FLAGS NDESCBIT SCENEBIT)
(GLOBAL MANOR)
(ACTION DUELING-F)>
<ROUTINE DUELING-F ("AUX" ROOM)
<COND (<OR <ADJ-USED ,DUELING ,W?INTERIOR>
<NOUN-USED ,DUELING ,W?DECORATED ,W?DECORATION ,W?INTERIOR>>
<SETG REAL-DUELING ,ID-ROOM>)
(<NOUN-USED ,DUELING ,W?DOLDRUM ,W?DOLDRUMS ,W?YAWN>
<SETG REAL-DUELING ,DOLDRUMS>)
(<NOUN-USED ,DUELING ,W?KREMLIN>
<SETG REAL-DUELING ,KREMLIN>)
(<NOUN-USED ,DUELING ,W?PHARMACY ,W?RX>
<SETG REAL-DUELING ,PHARMACY>)
(<NOUN-USED ,DUELING ,W?ATTIC>
<SETG REAL-DUELING ,ATTIC>)
;(T
<SETG REAL-DUELING ,ID-ROOM>)>
<COND (<OR <NOT ,REAL-DUELING>
<VERB? NO-VERB>
<AND <DONT-HANDLE ,DUELING>
<NOT <VERB? WALK-TO>>>>
<RFALSE>)
(<VERB? WALK-TO>
<COND (<EQUAL? ,HERE ,REAL-DUELING>
<TELL ,ARRIVED>)
(<EQUAL? ,REAL-DUELING ,ATTIC>
<COND (<FSET? ,ATTIC ,PHRASEBIT>
<SET ROOM ,KREMLIN>)
(T
<SET ROOM ,ID-ROOM>)>
<COND (<AND <EQUAL? ,HERE ,ID-ROOM>
<NOT <FSET? ,ATTIC ,PHRASEBIT>>>
<DO-WALK ,P?DOWN>)
(<AND <EQUAL? ,HERE ,KREMLIN>
<FSET? ,ATTIC ,PHRASEBIT>>
<DO-WALK ,P?UP>)
(T
<TELL
"You walk to the " D .ROOM ", and from there walk ">
<COND (<EQUAL? .ROOM ,ID-ROOM>
<TELL "down">)
(T
<TELL "up">)>
<TELL " the stairs..." CR CR>
<GOTO ,ATTIC>)>)
(<EQUAL? ,HERE ,ATTIC>
<COND (<FSET? ,ATTIC ,PHRASEBIT>
<SET ROOM ,KREMLIN>)
(T
<SET ROOM ,ID-ROOM>)>
<COND (<AND <EQUAL? ,REAL-DUELING ,ID-ROOM>
<NOT <FSET? ,ATTIC ,PHRASEBIT>>>
<DO-WALK ,P?UP>)
(<AND <EQUAL? ,REAL-DUELING ,KREMLIN>
<FSET? ,ATTIC ,PHRASEBIT>>
<DO-WALK ,P?DOWN>)
(T
<TELL "You walk ">
<COND (<EQUAL? .ROOM ,ID-ROOM>
<TELL "up">)
(T
<TELL "down">)>
<TELL
" the stairs to the " D .ROOM " and continue walking... " CR CR>
<GOTO ,REAL-DUELING>)>)
(T
<TELL "You go there..." CR CR>
<GOTO ,REAL-DUELING>)>)
(<NOT <EQUAL? ,HERE ,REAL-DUELING>>
<CANT-SEE <> "such room">)
;(T
<CHANGE-OBJECT ,DUELING ,GLOBAL-ROOM>
<RTRUE>)>>
<OBJECT MANOR
(LOC LOCAL-GLOBALS)
(DESC "manor")
(SYNONYM HOUSE MANOR SPEAKING)
(FLAGS NDESCBIT)
(ACTION MANOR-F)>
<ROUTINE MANOR-F ()
<COND (<VERB? EXAMINE>
<PERFORM ,V?LOOK>
<RTRUE>)
(<VERB? ENTER WALK-TO>
<COND (<EQUAL? ,HERE ,BEFORE-MANOR>
<V-WALK-AROUND>
<RTRUE>)
(T
<TELL ,LOOK-AROUND>)>)>>
<ROOM ID-ROOM
(LOC ROOMS)
(DESC "Interior Decorated")
(FLAGS INDOORSBIT)
(DOWN PER ATTIC-ENTER)
(GLOBAL MANOR DUELING STAIRS)
(ACTION ID-ROOM-F)>
;"rmungbit = have tried to leave room and stopped for Player to describe obj"
;<GLOBAL GETTING-INPUT <>>
<ROUTINE ID-ROOM-F (RARG)
<COND ;(<AND <EQUAL? .RARG ,M-BEG>
,GETTING-INPUT>
<COND (<L? <GETB ,P-LEXV ,P-LEXWORDS> 5>
<TELL
"Come on, not so tight-lipped! You can be more floral in your prose than
that." CR>)
(T
<SETG GETTING-INPUT <>>
<SAVE-INPUT ,FIRST-BUFFER>)>)
;(<AND <EQUAL? .RARG ,M-BEG>
<NOT <FSET? ,ID-ROOM ,RMUNGBIT>>
<VERB? WALK WALK-TO>>
<FSET ,ID-ROOM ,RMUNGBIT>
<SETG GETTING-INPUT T>
<SETG AWAITING-REPLY 2>
<QUEUE I-REPLY 2>
<TELL
"So, you're just going to walk away from my lovingly crafted description
of your opulent surroundings, just like ">
<ITALICIZE "that">
<TELL ", huh? Well! Do you think ">
<ITALICIZE "you">
<TELL " can do better?" CR>)
(<AND <EQUAL? .RARG ,M-BEG>
<VERB? THROW THROW-TO KICK KILL MUNG KNOCK-OFF>>
<TELL
"Shame shame shame on you, you ruffian! I tremble at the thought of having
you crash one of my dinner parties. I just won't allow that type of
behaviour!" CR>)
(<AND <EQUAL? .RARG ,M-ENTER>
<HELD? ,OLD-BOTTLE>
<VISIBLE? ,OLD-BOTTLE>
<NOT <FSET? ,OLD-BOTTLE ,SEENBIT>>>
<FSET ,OLD-BOTTLE ,SEENBIT>
<TELL
"Oh, my goodness, that's a rare antique bottle you're holding. Very
impressive indeed." CR CR>)
(<AND <EQUAL? .RARG ,M-ENTER>
<NOT <FSET? ,ID-ROOM ,TOUCHBIT>>>
<TELL
"The carpet! The carpet! Don't drag your feet on the carpet! It's a
priceless hand-loomed Persian!|
|
Whew! Okay, you're now standing on the bone-white Louis-XV-inspired tile.||">)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"This room, with its modern sensibility yet also palpable feeling for
the ancien regime, is unique in its elegant reflection of a confident,
personal sense of style. The lines are lean and classic, the color is
rich and distinctive.">
<COND (<AND <IN? ,LOUIS-CHAIR ,HERE>
<FSET? ,LOUIS-CHAIR ,DESC-IN-ROOMBIT>>
<TELL CR CR
"The Louis XIV chair is plump, tufted, aristocratic -- it's styled with equal
splashes of rococo and baroque. The piece definitely has charisma">
<COND (<OR <NOT <FIRST? ,LOUIS-CHAIR>>
<AND <IN? ,PROTAGONIST ,LOUIS-CHAIR>
<NOT <NEXT? ,PROTAGONIST>>>>
<TELL ".">)
(T
<TELL ". Sitting on the chair:">
<D-CONTENTS ,LOUIS-CHAIR 2>)>)>
<TELL "||
Against the far wall is an heroically proportioned, Mediterranean-crafted,
intricately inlaid, Pre-Raphaelite limestone mantelpiece, circa 1838.">
<COND (<IN? ,LACE ,MANTEL>
<REMOVE ,LACE>
<TELL CR CR
"Adorning the mantel is a resplendently virgin-ivory hand-embroidered,
filet-patterned lace tablecloth, circle 924 on your Reader Service Card">
<COND (;<G? <CCOUNT ,MANTEL> 1>
<FIRST? ,MANTEL>
<TELL ". Also on the mantel:">
<D-CONTENTS ,MANTEL 2>
<RTRUE>)
(T
<TELL ".">)>
<MOVE ,LACE ,MANTEL>)
(<FIRST? ,MANTEL>
<TELL " Resting on the mantel:">
<D-CONTENTS ,MANTEL 2>)>
<COND (<NOT <FSET? ,ATTIC ,PHRASEBIT>>
<TELL CR CR
"A marble staircase of grand proportions leads down.">)>
<RTRUE>)>>
<OBJECT LOUIS-CHAIR
(LOC ID-ROOM)
(DESC "plump, tufted, aristocratic Louis XIV chair")
(SYNONYM CHAIR)
(ADJECTIVE PLUMP TUFTED ARISTICRATIC LOUIS XIV)
(FLAGS TAKEBIT TRYTAKEBIT DESC-IN-ROOMBIT SURFACEBIT VEHBIT CONTBIT
OPENBIT SEARCHBIT)
(CAPACITY 30)
(SIZE 90)
(ACTION LOUIS-CHAIR-F)>
;"phrasebit = score for boarding it"
<ROUTINE LOUIS-CHAIR-F ("OPT" (RARG <>))
<COND (<AND <EQUAL? .RARG ,M-BEG>
<VERB? WALK WALK-TO>>
<NOT-GOING-ANYWHERE>)
(.RARG
<RFALSE>)
(<AND <VERB? TAKE>
<FSET? ,LOUIS-CHAIR ,TRYTAKEBIT>
<EQUAL? ,ORPHAN-FLAG ,LOUIS-CHAIR>>
<PERFORM ,V?NO-VERB ,LOUIS-CHAIR>
<CRLF>
<PERFORM ,V?TAKE ,LOUIS-CHAIR>
<RTRUE>)
(<AND <VERB? TAKE>
<FSET? ,LOUIS-CHAIR ,TRYTAKEBIT>>
<TELL
"This is not a rummage sale. No! I could never think of parting
with such a priceless antique." CR>)
(<VERB? STAND-ON>
<PERFORM ,V?BOARD ,PRSO>
<RTRUE>)
(<AND <VERB? BOARD>
<EQUAL? ,HERE ,KREMLIN>
<NOT <FSET? ,LOUIS-CHAIR ,PHRASEBIT>>>
<FSET ,LOUIS-CHAIR ,PHRASEBIT>
<UPDATE-SCORE>
<RFALSE>)
(<AND <VERB? TAKE>
<EQUAL? ,HERE ,ID-ROOM>
;<EQUAL? <ITAKE> T>
<NOT <EQUAL? <ITAKE <>> ,M-FATAL <>>>>
<FCLEAR ,LOUIS-CHAIR ,DESC-IN-ROOMBIT>
<TELL
"Go ahead, but I can't bear to look. [With the proper reverence, you make
a courtly bow in front of the priceless antique as you pick it up.]" CR>)>>
<OBJECT PILLOW
(LOC LOUIS-CHAIR)
(DESC "multihued textured pillow")
(SYNONYM PILLOW)
(ADJECTIVE MULTI-HUED TEXTURED)
(FLAGS TAKEBIT)
(ACTION PILLOW-F)>
<ROUTINE PILLOW-F ()
<COND (<VERB? EXAMINE>
<TELL
"The pillow, complementary to the Louis XIV, is multihued and textured,
displaying free-form squiggles, curlicues and brash brushstrokes with a
primitive look to them." CR>)>>
<OBJECT MANTEL ;"just like rest-table"
(LOC ID-ROOM)
(DESC "heroically proportioned mantel")
(SYNONYM MANTEL MANTELPIECE)
(ADJECTIVE HEROICALLY PROPORTIONED)
(FLAGS DESC-IN-ROOMBIT NO-D-CONT SURFACEBIT CONTBIT OPENBIT SEARCHBIT
VOWELBIT)
(CAPACITY 25)
;(ACTION MANTEL-F)>
;"even with no-d-cont should print contents when v-examine.
no-d-cont only for look in a room"
;<ROUTINE MANTEL-F ()
<COND (<AND <VERB? EXAMINE>
<FSET? ,ID-ROOM ,RMUNGBIT>>
<RESTORE-INPUT ,FIRST-BUFFER>
<RTRUE>)>>
<OBJECT LACE
(LOC MANTEL)
(DESC "lace tablecloth")
(SYNONYM TABLECLOTH)
(ADJECTIVE VIRGIN-IVORY IVORY HAND-EMBROIDERED LACE)
(FLAGS TAKEBIT)
;(ACTION LACE-F)>
;<ROUTINE LACE-F ()
<COND (<VERB? EXAMINE>
<TELL "ok" CR>)>>
<ROOM DOLDRUMS
(LOC ROOMS)
(DESC "Doldrums")
(FLAGS INDOORSBIT)
(GLOBAL MANOR DUELING)
(ACTION DOLDRUMS-F)>
<ROUTINE DOLDRUMS-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<COND (<FSET? ,DOLDRUMS ,TOUCHBIT>
<QUEUE I-DOLDRUMS 1>)
(T
<QUEUE I-DOLDRUMS 2>)>
<RFALSE>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"Go ahead, come on in and bore me.|
|
Walking into here is like driving across Nebraska. The place
is neither bright nor dim, neither cool nor warm, neither this way nor
that way. Even the air is unmoved by the experience of you entering the
doldrums.|
|
In the center of the room is a vast wasteland, which gradually blends into
a wide patch of long pale-green grass that spills over into yawning chasms.
Above the cliff hangs a shapeless cloud through which a line of sheep are
jumping, one after the next, in slow motion.|
|
All of the objects here have the aspect of salt-water taffy left out in
the sun too long.">
<COND (<NOT <FSET? ,CLOCK ,TOUCHBIT>>
<TELL
" Cobwebs enshroud a clock that has long since clocked out.">)>
<TELL "||
One wall appears to have been recently painted pea green. The weak smell
of paint lingers in the air.">)>>
<ROUTINE I-DOLDRUMS ()
<QUEUE I-DOLDRUMS -1>
<COND (<NOT <EQUAL? ,HERE ,DOLDRUMS>>
<DEQUEUE I-DOLDRUMS>
<RFALSE>)
(<FSET? ,GRASS ,SEENBIT>
<FCLEAR ,GRASS ,SEENBIT>
<TELL CR "The grass here continues to grow">)
(T
<FSET ,GRASS ,SEENBIT>
<TELL CR "The paint on the wall continues to dry">)>
<TELL ,PERIOD>>
<OBJECT WASTELAND
(LOC DOLDRUMS)
(DESC "vast wasteland")
(SYNONYM WASTELAND TV TELEVISION CHANNEL STATION)
(ADJECTIVE TV TELEVISION VAST)
(FLAGS DESC-IN-ROOMBIT LIGHTBIT ONBIT)
(ACTION WASTELAND-F)>
<ROUTINE WASTELAND-F ()
<COND (<VERB? EXAMINE>
<TELL
"The television set, which has been left droning on here, is now showing
a marathon of laundry detergent comercials." CR>)
(<VERB? OFF SET>
<TELL "It has no controls of any kind." CR>)>>
<OBJECT CLOUD
(LOC DOLDRUMS)
(DESC "cloud")
(SYNONYM CLOUD)
(ADJECTIVE SHAPELESS)
(FLAGS NDESCBIT)
;(ACTION CLOUD-F)>
;<ROUTINE CLOUD-F ()
<COND ()>>
<OBJECT GRASS
(LOC DOLDRUMS)
(DESC "grass")
(SYNONYM GRASS)
(ADJECTIVE PALE-GREEN GREEN LONG)
(FLAGS DESC-IN-ROOMBIT NOA)
;(ACTION WASTELAND-F)>
;"SEENBIT = in i-doldrums grass or paint"
<OBJECT CHASMS
(LOC DOLDRUMS)
(DESC "yawning chasms")
(SYNONYM CHASMS CHASM CLIFF CLIFFS)
(ADJECTIVE YAWNING)
(FLAGS DESC-IN-ROOMBIT NOA PLURALBIT ;NARTICLEBIT)
(ACTION CHASMS-F)>
<ROUTINE CHASMS-F ()
<COND (<VERB? BOARD LEAP LEAP-OFF ENTER>
<TELL
"Okay, here you are falling down off the cliffs and with all the
exhilaration you're showing you might as well be falling asleep. Your life
flashes before your eyes and that's a bigger yawn than the chasms. The abyss
is actually a continuum that loops back around whence you fell, and here
you are standing upright again." CR>)
(<AND <VERB? PUT THROW>
<PRSI? ,CHASMS>>
<MOVE ,PRSO ,HERE>
<TELL
"As you throw in" T ,PRSO ", it is swallowed by the darkness of the abyss,
only to reappear a second later at your feet." CR>)>>
<OBJECT PAINT
(LOC DOLDRUMS)
(DESC "paint")
(SYNONYM PAINT)
;(ADJECTIVE YAWNING)
(FLAGS NDESCBIT NARTICLEBIT)
;(ACTION PAINT-F)>
<OBJECT CLOCK
(LOC DOLDRUMS)
(DESC "clock")
(SYNONYM CLOCK TIMEPIECE WATCH TIME)
;(ADJECTIVE WINDING)
(FLAGS TAKEBIT CONTBIT SEARCHBIT OPENBIT DESC-IN-ROOMBIT)
(ACTION CLOCK-F)>
;"rmungbit = told in i-clock"
;"phrasebit = points for winding"
<ROUTINE CLOCK-F ()
<COND (<AND <VERB? TAKE>
;<EQUAL? <ITAKE> T>
<NOT <EQUAL? <ITAKE <>> ,M-FATAL <>>>>
<FCLEAR ,CLOCK ,DESC-IN-ROOMBIT>
<TELL "Taken." CR>)
;(<AND <VERB? PUT>
<PRSO? ,SAFE>>)
(<VERB? SET>
<COND (<NOT <FSET? ,CLOCK ,PHRASEBIT>>
<FSET ,CLOCK ,PHRASEBIT>
<UPDATE-SCORE>)>
<SETG CLOCK-N 0>
<QUEUE I-CLOCK -1>
<TELL "You wind the clock until the winding key stops." CR>)
(<AND <VERB? LISTEN>
<RUNNING? ,I-CLOCK>
<EQUAL? <META-LOC ,CLOCK> ,HERE>>
<RTRUE>)
(<VERB? READ EXAMINE>
<TELL
"The clock is faceless and without hands, but has a winding key
in its back." CR>)
(<VERB? OPEN>
<TELL "You can't." CR>)
(<VERB? CLOSE>
<TELL ,ALREADY-IS>)>>
<GLOBAL CLOCK-N 0>
<ROUTINE I-CLOCK ()
<SETG CLOCK-N <+ ,CLOCK-N 1>>
<COND (<G? ,CLOCK-N 10>
<COND (<EQUAL? <META-LOC ,CLOCK> ,HERE>
<TELL CR
"The clock gives off its last \"tick\" and stops." CR>)>
<DEQUEUE I-CLOCK>)
(<EQUAL? <META-LOC ,CLOCK> ,HERE>
<TELL CR "The clock ">
<COND (<OR <PROB 50>
<NOT <FSET? ,CLOCK ,RMUNGBIT>>>
<TELL
"continues sounding out a steady \"Tick... tick... tick.\"">)
(T
<TELL "keeps ticking off the time.">)>
<COND (<NOT <FSET? ,CLOCK ,RMUNGBIT>>
<FSET ,CLOCK ,RMUNGBIT>
<TELL
" If you couldn't see it was the clock making the noise, it would
sound rather ominous.">)>
<CRLF>)>
<RTRUE>>
<OBJECT CLOCK-KEY
(LOC CLOCK)
(DESC "winding key")
(SYNONYM KEY)
(ADJECTIVE WINDING CLOCK)
(FLAGS INTEGRALBIT)
(ACTION CLOCK-KEY-F)>
<ROUTINE CLOCK-KEY-F ()
<COND (<AND <VERB? MOVE SET OPEN>
<NOT ,PRSI>>
<PERFORM ,V?SET ,CLOCK>
<RTRUE>)>>
<ROOM KREMLIN
(LOC ROOMS)
(DESC "Kremlin")
(FLAGS INDOORSBIT)
(UP PER ATTIC-ENTER)
(GLOBAL MANOR DUELING STAIRS)
(ACTION KREMLIN-F)>
<GLOBAL KREMLIN-ENTER <>>
<ROUTINE KREMLIN-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<COND (<AND <RUNNING? ,I-CLOCK>
<NOT <FSET? ,MARX ,TOUCHBIT>>
<HELD? ,CLOCK>>
<SETG KREMLIN-ENTER T>
<HLIGHT ,H-BOLD>
<TELL D ,KREMLIN>
<HLIGHT ,H-NORMAL>
<CRLF> <CRLF>
<TELL
"\"Tick... tick.\" I hear bomb ticking! Counter-Revolutionary spy! Hold
on to our sable hats.">
<COND (<VISIBLE? ,CLOCK>
<TELL
" Oh, we can see is only inferior Capitalist clock">)
(T
<UPDATE-SCORE>
<FSET ,MARX ,TOUCHBIT>
<MOVE ,SAFE ,HERE>
<TELL
" My sturdy walls tremble with xenophobia of Western hegemony into Mother
Country. Poor Marx is jolted and falls indignantly to
the floor, revealing some kind of safe on the red wall where he had hung">)>
<TELL ,PERIOD ;CR>)>)
(<EQUAL? .RARG ,M-LOOK>
<COND (<NOT ,KREMLIN-ENTER>
<TELL
"\"Fellow traveller, welcome.\"" CR CR>)>
<TELL
"This room is painted entirely in bold, revolutionary red -- walls, floor,
and ceiling -- surrounding you symbolically with the inescapability of
the coming of the revolution.">
<COND (<FSET? ,MARX ,TOUCHBIT>
<TELL CR CR
"There's a safe built into the wall where the picture once hung.">)>
<COND (<FSET? ,ATTIC ,PHRASEBIT>
<TELL CR CR
"A staircase leads up from here.">)>
<RTRUE>)>>
<OBJECT MARX
(LOC KREMLIN)
(DESC "portrait of Karl Marx")
(FDESC
"Presiding over the room, hanging from a high red wall, the portrait of the
Grandfather of the Revolution, Karl Marx, looks down with furrowed brow upon
your capitalist hide.")
(SYNONYM FATHER MARX KARL PORTRAIT PICTURE)
(ADJECTIVE KARL)
(FLAGS TRYTAKEBIT)
(ACTION MARX-F)>
;"touchbit is set as he falls to floor"
<ROUTINE MARX-F ()
<COND (<AND <TOUCHING? ,MARX>
<NOT <FSET? ,MARX ,TOUCHBIT>>
<NOT <IN? ,PROTAGONIST ,LOUIS-CHAIR>>>
<CANT-REACH ,MARX>)
(<AND <VERB? MOVE REMOVE TAKE LOOK-BEHIND>
<NOT <FSET? ,MARX ,TOUCHBIT>>>
<TELL
"The portrait seems to adhere more closely to the wall. These proud red
walls shall never render up the hero of the revolution
to a carpetbagging, imperialistic capitalist seeking booty." CR>)
(<AND <VERB? TAKE>
<FSET? ,MARX ,TOUCHBIT>>
<TELL
"The hero has suffered indignity enough. Never he to be taken away as
capitalist booty!" CR>)>>
<OBJECT SAFE
;(LOC KREMLIN)
(DESC "safe")
(LDESC
"A safe has been revealed high on the wall where the portrait of the
Father of our Revolution has once proundly hung.")
(SYNONYM SAFE LOCK)
(ADJECTIVE UNIVERSIAL)
(FLAGS NDESCBIT CONTBIT SEARCHBIT LOCKEDBIT)
(ACTION SAFE-F)>
;"phrasebit = points for unlocking"
<ROUTINE SAFE-F ()
<COND (<AND <TOUCHING? ,SAFE>
<NOT <IN? ,PROTAGONIST ,LOUIS-CHAIR>>>
<CANT-REACH ,SAFE>)
(<AND <VERB? EXAMINE>
<NOT <FSET? ,SAFE ,OPENBIT>>>
<TELL
"In keeping with the spirit of international brotherhood and with the
lofty theme of the Lennon's song \"Imagine,\" the safe is kept closed
only by a very simple universal lock, which can be opened by any kind
of key." CR>)
(<AND <VERB? PUT>
<PRSI? ,SAFE>
<NOUN-USED ,SAFE ,W?LOCK>>
<COND (<PRSO? ,CLOCK ,CLOCK-KEY>
<PERFORM ,V?UNLOCK ,SAFE ,CLOCK-KEY>
<RTRUE>)
(T
<TELL "The lock's too small." CR>)>)
(<AND <VERB? UNLOCK OPEN>
<PRSI? ,CLOCK ,CLOCK-KEY>
<FSET? ,SAFE ,LOCKEDBIT>>
<COND (<NOT <FSET? ,SAFE ,PHRASEBIT>>
<FSET ,SAFE ,PHRASEBIT>
<UPDATE-SCORE>)>
<FCLEAR ,SAFE ,LOCKEDBIT>
<TELL
"By inserting the clock key into the safe and turning, the safe is unlocked."
CR>)
(<AND <VERB? UNLOCK OPEN>
<PRSI? ,CLOCK ,CLOCK-KEY>>
<SETG PRSI <>>
<V-UNLOCK>)
(<VERB? LOCK>
<COND (<FSET? ,SAFE ,LOCKEDBIT>
<TELL ,ALREADY-IS>)
(T
<FSET ,SAFE ,LOCKEDBIT>
<TELL "The safe ">
<COND (<FSET? ,SAFE ,OPENBIT>
<TELL "closes shut and ">)>
<FCLEAR ,SAFE ,OPENBIT>
<TELL "is now locked." CR>)>)>>
<OBJECT REVOLUTION
(LOC SAFE)
(DESC "revolution")
(SYNONYM REVOLUTION)
(FLAGS TAKEBIT)
(ACTION REVOLUTION-F)>
<ROUTINE REVOLUTION-F ()
<COND (<VERB? EXAMINE READ>
<TELL
"It reads, \"When you really need to turn around a situation, go ahead
and revolve it.\"" CR>)>>
<ROOM PHARMACY
(LOC ROOMS)
(DESC "Pharmacy")
(FLAGS INDOORSBIT)
(GLOBAL MANOR DUELING)
(ACTION PHARMACY-F)>
<ROUTINE PHARMACY-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Aaah... Choo! Oh, of course, in you come tracking your germs.|
|
Sniff... sniff.|
|
You're standing upon a rubberized non-slip bathroom mat. Handrails,
installed here as an extra precaution, run along the walls.||">
<COND (<FSET? ,CABINET ,OPENBIT>
<TELL
"The open medicine cabinet is cram packed full of a variety of medicines.">)
(T
<TELL
"You look a little peaked to yourself, reflected in the mirror of
the medicine cabinet.">)>)>>
<OBJECT BOX
(LOC PHARMACY)
(DESC "cardboard box")
(FDESC
"A cardboard box, about one-foot square and empty of its value pack of
medicines, sits on the floor.")
(SYNONYM BOX)
(ADJECTIVE CARDBOARD)
(FLAGS TAKEBIT CONTBIT OPENBIT SEARCHBIT)
(CAPACITY 10)
;(ACTION BOX-F)>
<OBJECT CABINET
(LOC PHARMACY)
(DESC "medicine cabinet")
(SYNONYM CHEST CABINET)
(ADJECTIVE MEDICINE)
(FLAGS CONTBIT SEARCHBIT NDESCBIT)
(CAPACITY 10)
(ACTION CABINET-F)>
<ROUTINE CABINET-F ()
<COND (<AND <VERB? OPEN>
<NOT <FSET? ,CABINET ,OPENBIT>>>
<FSET ,CABINET ,OPENBIT>
<TELL
"The cabinet creaks on its hinges, some would say from overuse.|
|
The cabinet is crowded to pharmaceutical proportions with a panoply of pills,
lozenges and elixirs -- hey, you can't be too careful, with what's going
around these days -- including some remedies for afflictions that, yes,
haven't even afflicted anyone yet. But it's better to be safe than sorry." CR>)
(<AND <VERB? SEARCH LOOK-INSIDE>
<FSET? ,CABINET ,OPENBIT>>
<PERFORM ,V?EXAMINE ,MEDICINES>
<RTRUE>)>>
<OBJECT MEDICINES
(LOC CABINET)
(DESC "variety of medicines")
(SYNONYM VARIETY MEDICINES MEDICINE ELIXIR ELIXIRS PILL PILLS LOSENGES
CURE CURES REMEDY REMEDIES NOSTRUM)
(ADJECTIVE RHEUMATOID)
(FLAGS DESC-IN-ROOMBIT TRYTAKEBIT) ;"desc-in-roombit so no redundancy"
(ACTION MEDICINES-F)>
<ROUTINE MEDICINES-F ()
<COND (<VERB? TAKE>
<TELL
"Oh, no, no, I couldn't survive without my medicines." CR>)
(<VERB? EXAMINE READ>
<TELL
"I collect varieties of medicines like some people collect wines.
You never know what'll ail you, and usually it's everything at once.
There are cures for catastrophic illness, remedies for ringworms, pills
for palpitations, and elixirs for everything else.">
<COND (<IN? ,OLD-BOTTLE ,CABINET>
<TELL CR CR
"Then there's one old, empty bottle that should've been thrown
out centuries ago.">)>
<CRLF>)
(<VERB? OPEN>
<TELL
"The \"childproof\" caps are enough to make it impossible." CR>)>>
<OBJECT OLD-BOTTLE
(LOC CABINET)
(DESC "old bottle")
(SYNONYM BOTTLE)
(ADJECTIVE OLD RARE GLASS ANTIQUE)
(FLAGS TAKEBIT VOWELBIT)
(ACTION OLD-BOTTLE-F)>
;"HEARDBIT = input was PUT BOTTLE ON MANTEL for V-YES question"
<ROUTINE OLD-BOTTLE-F ()
<COND (<AND <VERB? TAKE>
<NOT <FSET? ,OLD-BOTTLE ,TOUCHBIT>>
;<EQUAL? <ITAKE> T>
<NOT <EQUAL? <ITAKE <>> ,M-FATAL <>>>>
<TELL
"You can go ahead and have that old thing anyway. It was here before I
moved in." CR>)
(<AND <VERB? TAKE>
<IN? ,OLD-BOTTLE ,MANTEL>>
<TELL
"Hands off, Indian giver! That antique bottle is mine now." CR>)
(<AND <VERB? SHOW>
<PRSI? ,GLOBAL-ROOM ,DUELING>
<EQUAL? ,HERE ,ID-ROOM>>
<TELL
"Mmmm... Very handsome. Yes! I'd simply love to have it." CR>)
(<VERB? EXAMINE LOOK-INSIDE>
<TELL
"It's a small and delicately sculpted glass bottle, looking to be hundreds
of years old. The bottle is empty and has no lid." CR>)
(<VERB? THROW MUNG KILL KICK>
<REMOVE ,OLD-BOTTLE>
<TELL "The fragile bottle is smashed into smithereens." CR>)
(<AND <EQUAL? ,HERE ,ID-ROOM>
<OR <VERB? DROP>
<AND <VERB? PUT PUT-ON>
<EQUAL? ,PRSO ,OLD-BOTTLE>
;<NOT <EQUAL? ,PRSI? ,MANTEL>>>>>
<COND (<AND <VERB? PUT-ON>
<PRSI? ,MANTEL>>
<FSET ,OLD-BOTTLE ,HEARDBIT>
;<MOVE ,OLD-BOTTLE ,MANTEL>)>
<SETG AWAITING-REPLY 1>
<QUEUE I-REPLY 2>
<TELL
"Umm... Do you really think it makes the right statement there?" CR>)>>
<OBJECT MAT
(LOC PHARMACY)
(DESC "rubber mat")
(SYNONYM MAT)
(ADJECTIVE RUBBER RUBBERIZED NO-SLIP)
(FLAGS TRYTAKEBIT DESC-IN-ROOMBIT)
(ACTION MAT-F)>
<ROUTINE MAT-F ()
<COND (<VERB? TAKE>
<TELL
"Oh, oh, my back! The old discs are slipping again, and the strain is
taking its toll. I'm going to have to
rifle the cabinet again in search of that old rheumatoid nostrum. Forget
the mat. It'd be as dangerous as a ski slope to walk in here without
it on the floor." CR>)
(<VERB? SIT CLIMB-ON>
<WASTES>)>>
<ROOM ATTIC
(LOC ROOMS)
(DESC "Attic")
(UP PER ATTIC-EXIT)
(DOWN PER ATTIC-EXIT)
(FLAGS INDOORSBIT)
(GLOBAL MANOR DUELING STAIRS)
(ACTION ATTIC-F)>
;"ATTIC phrasebit = turned around to right-side-up"
<ROUTINE ATTIC-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"The attic is where the oxymoron is rumored to have been locked up
recently for years and years. There doesn't seem to be even a shred of
hard evidence, though, for such a secret rumor.">
<COND (<FSET? ,ATTIC ,PHRASEBIT>
<TELL
" But the attic, once upside-down, has been set right by your turning
it around.">)
(T
<TELL
" A funny thing though -- the place is upside-down: You're standing on
the ceiling with the floor above as the roof over your head.">)>
<TELL CR CR "A sturdy, rickety stairway leads ">
<COND (<FSET? ,ATTIC ,PHRASEBIT>
<TELL "down">)
(T
<TELL "up">)>
<TELL " from here.">)>>
<ROUTINE ATTIC-EXIT ()
<COND (<OR <AND <EQUAL? ,P-WALK-DIR ,P?DOWN>
<NOT <FSET? ,ATTIC ,PHRASEBIT>>>
<AND <EQUAL? ,P-WALK-DIR ,P?UP>
<FSET? ,ATTIC ,PHRASEBIT>>>
<TELL "But the stairs lead ">
<COND (<FSET? ,ATTIC ,PHRASEBIT>
<TELL "down">)
(T
<TELL "up">)>
<TELL ,PERIOD>
<RFALSE>)
(<EQUAL? ,P-WALK-DIR ,P?UP>
<RETURN ,ID-ROOM>)
(T
<RETURN ,KREMLIN>)>>
<ROUTINE ATTIC-ENTER ()
<COND (<AND <EQUAL? ,HERE ,ID-ROOM>
<FSET? ,ATTIC ,PHRASEBIT>>
<TELL "The " D ,STAIRS "s have seemed to vanish." CR>
<RFALSE>)
(<AND <EQUAL? ,HERE ,KREMLIN>
<NOT <FSET? ,ATTIC ,PHRASEBIT>>>
<CANT-SEE <> "stairs">
<RFALSE>)>
<TELL "You walk ">
<COND (<EQUAL? ,HERE ,ID-ROOM>
<TELL "down">)
(T
<TELL "up">)>
<TELL " the staircase." CR CR>
<RETURN ,ATTIC>>