-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathplaces.zil
3081 lines (2823 loc) · 84.7 KB
/
places.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
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
"PLACES for WITNESS
Copyright (C) 1983 Infocom, Inc. All rights reserved."
"Other possible generics: cabinet counter footprints hallway shelf"
"Directions"
<GLOBAL DIR-STRINGS
<PTABLE P?NORTH "north" P?SOUTH "south"
P?EAST "east" P?WEST "west"
P?NW "northwest" P?NE "northeast"
P?SW "southwest" P?SE "southeast"
P?DOWN "downstairs" P?UP "upstairs"
P?IN "in" P?OUT "out">>
<ROUTINE DIR-PRINT (DIR "AUX" (CNT 0))
#DECL ((DIR CNT) FIX)
<REPEAT ()
<COND (<==? <GET ,DIR-STRINGS .CNT> .DIR>
<COND (T ;<NOT <EQUAL? .DIR ,P?UP ,P?DOWN>>
<TELL "the ">)>
<PRINT <GET ,DIR-STRINGS <+ .CNT 1>>>
<RTRUE>)>
<SET CNT <+ .CNT 1>>>>
"The usual globals"
<OBJECT ROOMS>
<OBJECT GLOBAL-ROOM
(IN GLOBAL-OBJECTS)
(SYNONYM ROOM PLACE WALL WALLS)
(DESC "place" ;"room")
;(GENERIC WALL-F)
(ACTION GLOBAL-ROOM-F)>
<ROUTINE GLOBAL-ROOM-F ("AUX" TIM VAL)
<COND (<VERB? KNOCK>
<TELL "Knocking on the walls reveals nothing unusual." CR>)
(<VERB? SEARCH EXAMINE>
<COND (<==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>
<SET TIM 10>)
(<NOT <0? <GETP ,HERE ,P?CORRIDOR>>>
<SET TIM 3>)
(T <SET TIM <+ 2 <GETP ,HERE ,P?SIZE>>>)>
<TELL
"(You'd do better to examine or search one thing at a time. Searching a
whole room or area thoroughly would take hours. A cursory search would take
about " N .TIM " minutes, and it might not reveal much. Would you like
to do it anyway?)">
<COND (<YES?>
<COND (<==? ,M-FATAL <SET VAL <INT-WAIT .TIM>>>
<RTRUE>)
(.VAL
<TELL
"Your cursory search revealed nothing new." CR>)
(T
<TELL
"You didn't get a chance to finish looking over the place." CR>)>)
(T <TELL "Okeh." CR>)>)>>
;<ROUTINE WALL-F ()
<COND (<OUTSIDE? ,HERE> ,HOUSE) (T ,GLOBAL-ROOM)>>
<OBJECT WINDOW
(IN LOCAL-GLOBALS)
(DESC "window")
(SYNONYM WINDOW PANE PANES FRAME)
(FLAGS NDESCBIT WINDOWBIT LOCKED)
(GENERIC GENERIC-WINDOW-F ;LOCKED-F)
(ACTION WINDOW-F)>
<ROUTINE WINDOW-F ("AUX" (RM <WINDOW-ROOM ,HERE ,PRSO>) POP)
<COND (<VERB? BRUSH>
<TELL
"The window is clean enough without your interference." CR>)
(<VERB? EXAMINE>
<TELL
"The window is a simple wooden sash, locked tight against the cold.">
<COND (<NOT <OUTSIDE? ,HERE>>
<TELL
" There's some sort of electric relay on one edge, with white wires
attached.">)>
<CRLF>)
(<VERB? LOOK-INSIDE LOOK-OUTSIDE>
<COND (.RM
<TELL"The window is damp and foggy, but you can see">
<SET POP <POPULATION .RM>>
<COND (<0? .POP> T)
(<1? .POP> <TELL " someone in">)
(T <TELL " some people in">)>
<THE? .RM>
<TELL " " D .RM " "
<COND (<==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C>
"in")
(T "out")>
"side." CR>)
(T
<TELL "The window is too foggy to see through." CR>)>
<RTRUE>)
(<VERB? KNOCK>
<COND (<NOT <WINDOW-KNOCK .RM>>
<TELL "There's no answer." CR>)>)
(<VERB? MUNG>
<TELL "Vandalism is for private ">
<COND (<TANDY?> <TELL "eye">)
(T <TELL "dick">)>
<TELL "s, not famous police detectives!" CR>)
(<VERB? OPEN CLOSE LOCK UNLOCK>
<COND (<FSET? ,PRSO ,RMUNGBIT>
<TELL "It's really broken. ">)>
<TELL "You can't." CR>)>>
<ROUTINE GENERIC-WINDOW-F (OBJ)
<COND (<WINDOW-IN? ,HERE> <RFALSE>)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,WINDOW)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "window" " here!)" CR>
,NOT-HERE-OBJECT)>>
<ROUTINE WINDOW-KNOCK (RM)
<COND (<INHABITED? .RM>
<TELL "Someone looks up at you inquisitively." CR>)>>
<ROUTINE WINDOW-IN? (RM)
<OR <EQUAL? .RM ,FRONT-YARD ,KITCHEN ,BUTLER-ROOM>
<EQUAL? .RM ,OFFICE-PORCH ,OFFICE>
<EQUAL? .RM ,BACK-YARD ,MONICA-ROOM>
<EQUAL? .RM ,ROCK-GARDEN ,LINDER-ROOM ,TUB-ROOM>>
;<AND <0? <BAND 31 <GETP .RM ,P?CORRIDOR>>> ;"not HALL-n or outside"
<NOT <EQUAL? .RM ,BATHROOM ,TOILET-ROOM ,BUTLER-BATH>>
<NOT <EQUAL? .RM ,STORAGE-CLOSET ,LIVING-ROOM ,WORKSHOP>>>>
;<ROUTINE WINDOW-SHOP (RM STR "AUX" (P <POPULATION .RM>))
<COND (<0? .P> <CRLF> <RTRUE>)
(T <TELL "You can vaguely see ">)>
<COND (<1? .P>
<TELL "someone">)
(T
<PRINTN .P>
<TELL " people">)>
<TELL " inside the " .STR "." CR>>
<OBJECT SINK
(IN LOCAL-GLOBALS)
(DESC "sink")
(SYNONYM SINK BASIN FAUCET SPIGOT)
(FLAGS NDESCBIT FURNITURE)>
<OBJECT TOILET
(IN LOCAL-GLOBALS)
(DESC "toilet")
(SYNONYM TOILET)
(FLAGS NDESCBIT FURNITURE SURFACEBIT VEHBIT)
(ACTION TOILET-F)>
<ROUTINE TOILET-F ("OPTIONAL" (RARG 100))
<COND (<NOT <==? .RARG 100>> <RFALSE>)
(<VERB? EXAMINE LOOK-INSIDE>
<TELL
"You have stooped to a new low by snooping around toilet bowls." CR>)
;(<VERB? FLUSH>
<TELL "\"Whhoooossshhhhh!\"" CR>)>>
<OBJECT GENERIC-BATHROOM-DOOR
(IN GLOBAL-OBJECTS)
(DESC "bathroom door")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-BATH-DOOR-F (OBJ)
<COND (<EQUAL? ,HERE ,MONICA-ROOM> ,MONICA-BATH-DOOR)
(<EQUAL? ,HERE ,LINDER-ROOM> ,LINDER-BATH-DOOR)
(<EQUAL? ,HERE ,BUTLER-ROOM ,BUTLER-BATH> ,BUTLER-BATH-DOOR)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-BATHROOM-DOOR)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "bathroom door" " here!)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT GENERIC-BEDROOM
(IN GLOBAL-OBJECTS)
(DESC "bedroom")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-BEDROOM-F (OBJ)
<COND (<EQUAL? .OBJ ,HERE ,GLOBAL-HERE> ,GLOBAL-ROOM)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-BEDROOM)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "bedroom" " here!)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT GENERIC-BEDROOM-DOOR
(IN GLOBAL-OBJECTS)
(DESC "bedroom door")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-BEDROOM-DOOR-F (OBJ)
<COND (<EQUAL? ,HERE ,MONICA-ROOM ,HALL-2> ,MONICA-DOOR)
(<EQUAL? ,HERE ,LINDER-ROOM ,LIVING-ROOM> ,LINDER-DOOR)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-BEDROOM-DOOR)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "bedroom door" " here!)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT GENERIC-BACK-DOOR
(IN GLOBAL-OBJECTS)
(DESC "back door")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-BACK-DOOR-F (OBJ)
<COND (<AND <VERB? SHOOT>
<FSET? ,P-IT-OBJECT ,DOORBIT>
<FSET? ,P-IT-OBJECT ,LOCKED>>
,P-IT-OBJECT)
(<EQUAL? ,HERE ,OFFICE-PORCH ,OFFICE> ,OFFICE-BACK-DOOR)
(<EQUAL? ,HERE ,BACK-YARD ,MONICA-ROOM> ,MONICA-BACK-DOOR)
(<EQUAL? ,HERE ,ROCK-GARDEN ,LINDER-ROOM> ,LINDER-BACK-DOOR)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-BACK-DOOR)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "back door" " here!)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT GENERIC-BATHROOM
(IN GLOBAL-OBJECTS)
(DESC "bathroom")
(SYNONYM $GNRC)>
<ROUTINE GENERIC-BATHROOM-F (OBJ)
<COND (<EQUAL? .OBJ ,HERE ,GLOBAL-HERE> ,GLOBAL-ROOM)
(<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-BATHROOM)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "bathroom" " here!)" CR>
,NOT-HERE-OBJECT)>>
<ROUTINE NULL-F ("OPTIONAL" A1 A2)
<RFALSE>>
<ROUTINE DDESC (STR1 DOOR STR2)
#DECL ((STR1) <OR STRING ZSTRING> (DOOR) OBJECT
(STR2) <OR FALSE STRING ZSTRING>)
<TELL .STR1>
<COND (<FSET? .DOOR ,OPENBIT> <TELL "open">)
(T <TELL "closed">)>
<TELL .STR2 CR>>
<ROUTINE DOOR-ROOM (RM DR "AUX" (P 0) TBL)
#DECL ((RM DR) OBJECT (P) FIX)
<REPEAT ()
<COND (<OR <0? <SET P <NEXTP .RM .P>>>
<L? .P ,LOW-DIRECTION>>
<RFALSE>)
(<AND <==? ,DEXIT <PTSIZE <SET TBL <GETPT .RM .P>>>>
<==? .DR <GETB .TBL ,DEXITOBJ>>>
<RETURN <GETB .TBL ,REXIT>>)>>>
<ROUTINE FIND-FLAG (RM FLAG "OPTIONAL" (EXCLUDED <>) "AUX" (O <FIRST? .RM>))
<REPEAT ()
<COND (<NOT .O> <RETURN <>>)
(<AND <FSET? .O .FLAG> <NOT <==? .O .EXCLUDED>>>
<RETURN .O>)
(T <SET O <NEXT? .O>>)>>>
<OBJECT GLOBAL-HERE
(IN GLOBAL-OBJECTS)
(DESC "here")
(SYNONYM HERE)
(FLAGS NDESCBIT)
(ACTION GLOBAL-HERE-F)>
<ROUTINE GLOBAL-HERE-F ("AUX" (FLG <>) F HR)
<COND (<VERB? WHAT ASK-ABOUT>
<SET F <FIRST? ,HERE>>
<REPEAT ()
<COND (<NOT .F> <RETURN>)
(<AND <FSET? .F ,CONTBIT> <INHABITED? .F>>
<SET FLG T>
<SET HR ,HERE>
<SETG HERE .F>
<GLOBAL-HERE-F>
<SETG HERE .HR>)
(<AND <FSET? .F ,PERSON> <NOT <==? .F ,PLAYER>>>
<SET FLG T>
<DESCRIBE-OBJECT .F T 0>)>
<SET F <NEXT? .F>>>
<COND (<NOT .FLG> <TELL "There's nobody else here." CR>)>
<RTRUE>)>>
<ROUTINE LOCKED-F (OBJ)
<COND (<==? ,HERE ,FRONT-YARD>
<COND (<VERB? EXAMINE LOOK-INSIDE SEARCH SEARCH-OBJECT-FOR THROUGH>
,DINING-DOOR)
(<VERB? WALK-TO> ,FRONT-DOOR)
(T <RFALSE>)>)
(<AND <VERB? SHOOT>
<FSET? ,P-IT-OBJECT ,DOORBIT>
<FSET? ,P-IT-OBJECT ,LOCKED>>
,P-IT-OBJECT)>>
<ROUTINE META-LOC (OBJ)
<REPEAT ()
<COND (<NOT <LOC .OBJ>>
<RFALSE>)>
<COND (<EQUAL? <LOC .OBJ> ,LOCAL-GLOBALS ,GLOBAL-OBJECTS>
<RETURN <LOC .OBJ>>)>
<COND (<IN? .OBJ ,ROOMS>
<RETURN .OBJ>)
(ELSE
<SET OBJ <LOC .OBJ>>)>>>
<ROUTINE OUTSIDE? (RM)
<OR <==? .RM ,GARAGE>
<==? <GETP .RM ,P?LINE> ,OUTSIDE-LINE-C>>>
<ROUTINE PHONE-IN? (RM)
<EQUAL? .RM ,LIVING-ROOM ,OFFICE ,MONICA-ROOM>>
<ROUTINE WINDOW-ROOM (RM WINDOW "AUX" (P 0) L)
#DECL ((RM WINDOW) OBJECT (P L) FIX)
<COND (<==? .RM ,FRONT-YARD>
<COND (<==? .WINDOW ,KITCHEN-WINDOW> ,KITCHEN)
(<==? .WINDOW ,BUTLER-WINDOW> ,BUTLER-ROOM)>)
(<EQUAL? .RM ,KITCHEN ,BUTLER-ROOM> ,FRONT-YARD)
(<==? .RM ,OFFICE-PORCH> ,OFFICE)
(<==? .RM ,OFFICE> ,OFFICE-PORCH)
(<==? .RM ,BACK-YARD> ,MONICA-ROOM)
(<==? .RM ,MONICA-ROOM> ,BACK-YARD)
(<==? .RM ,ROCK-GARDEN>
<COND (<==? .WINDOW ,LINDER-WINDOW> ,LINDER-ROOM)
(<==? .WINDOW ,BATH-WINDOW> ,TUB-ROOM)>)
(<EQUAL? .RM ,LINDER-ROOM ,TUB-ROOM> ,ROCK-GARDEN)>>
"Grounds of Linder House"
<ROUTINE GROUND-SURFACE ()
<COND (<EQUAL? ,HERE ,FRONT-YARD ,ROCK-GARDEN>
"gravel")
(<EQUAL? ,HERE ,DRIVEWAY ,DRIVEWAY-ENTRANCE>
"peastone")
(<EQUAL? ,HERE ,FRONT-PORCH ,OFFICE-PORCH> "concrete")
(<EQUAL? ,HERE ,BACK-YARD> "grass")
(,GROUND-MUDDY "mud")
(T "dirt")>>
<ROOM FRONT-YARD
(IN ROOMS)
(DESC "front yard")
(FLAGS RLANDBIT ONBIT)
(LDESC
"You are in the front yard of the Linder property. Most of the space is
occupied by a kitchen garden full of vegetables and herbs. A wooden
fence surrounds the yard on the west and north sides. To the east is the
house, with a French door and two windows. To the south is a gate that
leads to the front porch.")
;(ADJECTIVE FRONT)
;(SYNONYM YARD)
(EAST TO DINING-ROOM IF DINING-DOOR IS OPEN)
(WEST "A wooden fence blocks your way.")
(NORTH "A wooden fence blocks your way.")
(SOUTH TO FRONT-PORCH IF FRONT-GATE IS OPEN)
(UP "You can't go that way.")
(DOWN "You can't go that way.") ;"just to establish properties"
(GLOBAL HOUSE DINING-DOOR KITCHEN-WINDOW BUTLER-WINDOW
FRONT-GATE FRONT-DOOR FENCE)
(LINE 4)
(STATION FRONT-YARD)>
<OBJECT KITCHEN-GARDEN
(IN FRONT-YARD)
(ADJECTIVE KITCHEN)
(SYNONYM GARDEN VEGETABLE HERB HERBS)
(DESC "kitchen garden")
(FLAGS NDESCBIT)>
<OBJECT FRONT-GATE
(IN LOCAL-GLOBALS)
(ADJECTIVE FRONT ;GARDEN)
(SYNONYM GATE)
(DESC "front gate")
(FLAGS DOORBIT)
;(ACTION HIDE-LOOK-DOOR-F)>
[
<ROOM FRONT-PORCH
(IN ROOMS)
(DESC "front porch")
(ACTION FRONT-PORCH-F)
;(ADJECTIVE FRONT)
;(SYNONYM PORCH ;STOOP)
(FLAGS RLANDBIT ONBIT ON-NOT-IN)
(IN TO ENTRY IF FRONT-DOOR IS OPEN)
(EAST TO ENTRY IF FRONT-DOOR IS OPEN)
(SOUTH TO DRIVEWAY)
(WEST "A wooden fence blocks your way.")
(NORTH TO FRONT-YARD IF FRONT-GATE IS OPEN)
(GLOBAL HOUSE FRONT-DOOR FRONT-GATE FENCE DRIVEWAY-OBJECT)
(LINE 4)
(STATION FRONT-PORCH)
(CORRIDOR 4)>
<ROUTINE FRONT-PORCH-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<DDESC
"The front porch is in an alcove, sheltered from the weather by the
walls and overhanging roof. A yellowish electric light hangs near
the " ,FRONT-DOOR " front door to the east, giving you a
dim view of the
driveway to the south and the front yard behind a gate to the north.">
<DDESC
"The gate is " ,FRONT-GATE
". A door bell glows at you, almost daring you to ring it.">
<THIS-IS-IT ,DOORBELL>)>>
<OBJECT DOORBELL
(DESC "door bell")
(ADJECTIVE DOOR)
(SYNONYM BELL DOORBELL)
(IN FRONT-PORCH)
(FLAGS NDESCBIT)
(ACTION DOORBELL-F)>
<ROUTINE DOORBELL-F ()
<COND (<VERB? PUSH RING>
<COND (<AND <NOT ,WELCOMED>
<FSET? ,CORPSE ,INVISIBLE>>
<WELCOME>)
(T <YOU-RANG>
<TELL "The door bell rings, loud and clear." CR>)>
<RTRUE>)>>
]
<ROOM DRIVEWAY
(IN ROOMS)
(DESC "driveway")
(LDESC
"The driveway, paved with peastone, runs from the entrance at the south
end in a curve to a two-car garage at the east end. North of you is the
front porch, the entrance to the house.")
;(ADJECTIVE DRIVE)
;(SYNONYM DRIVEWAY WAY)
(FLAGS RLANDBIT ONBIT ON-NOT-IN)
(NORTH TO FRONT-PORCH)
(SOUTH TO DRIVEWAY-ENTRANCE)
(EAST TO GARAGE)
(WEST "A wooden fence blocks your way.")
(GLOBAL HOUSE FRONT-DOOR FENCE DRIVEWAY-OBJECT)
(LINE 4)
(STATION DRIVEWAY)
(CORRIDOR 12)>
<OBJECT DRIVEWAY-OBJECT
(IN LOCAL-GLOBALS)
(DESC "driveway")
(LDESC
"The driveway, paved with peastone, runs from the entrance at the south
end in a curve to a two-car garage at the east end.")
(ADJECTIVE DRIVE)
(SYNONYM DRIVEWAY WAY)
(ACTION DRIVEWAY-F)>
<ROUTINE DRIVEWAY-F ("OPTIONAL" (ARG <>))
<COND (<AND <VERB? CLIMB-UP FOLLOW> <DOBJ? DRIVEWAY-OBJECT>>
<COND (<==? ,HERE ,DRIVEWAY-ENTRANCE>
<PERFORM ,V?WALK ,P?NORTH> <RTRUE>)
(<==? ,HERE ,GARAGE ,SIDE-YARD ;,OFFICE-PATH>
<PERFORM ,V?WALK ,P?WEST> <RTRUE>)
(T <TELL "It's not clear which direction you mean." CR>)>)>>
<ROOM DRIVEWAY-ENTRANCE
(IN ROOMS)
(DESC "driveway entrance")
(FDESC
"You are standing at the foot of the driveway, the entrance to the
Linder property. The entire lot is screened from the street and the
neighbors by a wooden fence, except on the east
side, which fronts on dense bamboo woods. The house looks like a mixture of
a California bungalow and East Asian influences. From here you can
see the driveway leading north and, beyond that, the front door.")
(LDESC
"This is the entrance to the driveway from the street, which lies to the
south. To the north is the driveway, and to the east is the side yard.")
;(ADJECTIVE DRIVEWAY ;DRIVE ;CAR ;AUTO ;STREET)
;(SYNONYM ENTRANCE ;GATE)
(FLAGS RLANDBIT ONBIT)
(NORTH TO DRIVEWAY)
(WEST "A wooden fence blocks your way.")
(EAST TO SIDE-YARD)
(SOUTH
"You can't leave the property yet. It would mean your job.")
(GLOBAL HOUSE WOODS FRONT-DOOR FENCE DRIVEWAY-OBJECT SIDE-FOOTPRINTS)
(LINE 4)
(STATION DRIVEWAY-ENTRANCE)
(CORRIDOR 6)>
<ROOM LIMBO
(IN ROOMS)
(DESC "limbo")
(FLAGS RLANDBIT ONBIT)
(CONTFCN NULL-F)
(NORTH TO DRIVEWAY-ENTRANCE)
(LINE 4)
(STATION DRIVEWAY-ENTRANCE)>
[
<ROOM SIDE-YARD
(IN ROOMS)
(ACTION SIDE-YARD-F)
(DESC "side yard")
;(ADJECTIVE SIDE ;LITTLE)
;(SYNONYM YARD)
(FLAGS RLANDBIT ONBIT)
(NORTH "You can't enter the house from here.")
(WEST TO DRIVEWAY-ENTRANCE)
(EAST TO OFFICE-PATH)
(SOUTH "A wooden fence blocks your way.")
(GLOBAL HOUSE FENCE DRIVEWAY-OBJECT SIDE-FOOTPRINTS)
(LINE 4)
(STATION SIDE-YARD)
(CORRIDOR 2)>
<ROUTINE SIDE-YARD-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<TELL
"This is a little-used side yard, hidden from the street by the fence.
The back yard lies to the east and the driveway to the west." CR>)
(<==? .RARG ,M-FLASH>
<COND (<AND <NOT <FSET? ,SIDE-FOOTPRINTS ,INVISIBLE>>
<NOT <FSET? ,SIDE-FOOTPRINTS ,TOUCHBIT>>>
<DESCRIBE-OBJECT ,SIDE-FOOTPRINTS T 0>
<FSET ,SIDE-FOOTPRINTS ,TOUCHBIT>)>)
(<AND <==? .RARG ,M-BEG>
<==? ,HERE ,SIDE-YARD>
,GROUND-MUDDY
<VERB? WALK FOLLOW>>
<SETG SIDE-FOOTPRINTS-CONFUSED T>
<RFALSE>)>>
<OBJECT SIDE-FOOTPRINTS
(IN LOCAL-GLOBALS ;SIDE-YARD)
(DESC "set of footprints")
(ADJECTIVE FOOT)
(SYNONYM FOOTPRINTS PRINTS SET)
(FLAGS INVISIBLE)
(GENERIC GENERIC-FOOTPRINTS-F)
(DESCFCN SIDE-FOOTPRINTS-F)
(ACTION SIDE-FOOTPRINTS-F)>
<GLOBAL SIDE-FOOTPRINTS-CONFUSED <>>
<ROUTINE SIDE-FOOTPRINTS-F ("OPTIONAL" (ARG <>))
<COND (<==? .ARG ,M-OBJDESC>
<COND (,SIDE-FOOTPRINTS-CONFUSED
<COND (<FSET? ,SIDE-FOOTPRINTS ,TOUCHBIT>
<TELL
"Fresh foot prints go here and there in the yard." CR>)
(T
<FSET ,SIDE-FOOTPRINTS ,TOUCHBIT>
<TELL
"You notice fresh foot prints going here and there in the yard."
CR>)>)
(T
<COND (<FSET? ,SIDE-FOOTPRINTS ,TOUCHBIT>
<TELL
"A fresh row of foot prints goes from the back yard to the driveway." CR>)
(T
<FSET ,SIDE-FOOTPRINTS ,TOUCHBIT>
<TELL
"You notice a fresh row of foot prints going from the back yard to the
driveway." CR>)>)>)
(<AND ,SIDE-FOOTPRINTS-CONFUSED <VERB? ANALYZE EXAMINE>>
<TELL "There are too many foot prints here now." CR>)
(<VERB? EXAMINE>
<TELL
"The prints are lined up in an even row, as if made by a careful walker." CR>)
(<VERB? ANALYZE>
<COND (<NOT <EQUAL? <LOC ,SIDE-FOOTPRINTS-CAST> ,LIMBO>>
<TELL "You already did that!" CR>)
(<OR ,FINGERPRINT-OBJ ,DUFFY-AT-CORONER>
<DO-FINGERPRINT>
<RTRUE>)
(T <MOVE ,SIDE-FOOTPRINTS-CAST ,PLAYER>
<ANAFOOT>)>)
(<VERB? FOLLOW>
<COND (<EQUAL? ,HERE ,DRIVEWAY-ENTRANCE>
<GOTO ,SIDE-YARD>)
(<EQUAL? ,HERE ,SIDE-YARD ,OFFICE-PATH>
<GOTO ,DRIVEWAY-ENTRANCE>)>
<RTRUE>)
(<AND <VERB? MAKE>
<DOBJ? GENERIC-CAST SIDE-FOOTPRINTS-CAST BACK-FOOTPRINTS-CAST>>
<PERFORM ,V?ANALYZE ,SIDE-FOOTPRINTS>
<RTRUE>)>>
<OBJECT SIDE-FOOTPRINTS-CAST
(DESC "side-yard cast")
(IN LIMBO)
(ADJECTIVE SIDE-YARD SIDE)
(SYNONYM CAST)
(SIZE 9)
(FLAGS TAKEBIT)
(GENERIC GENERIC-CAST-F)
(ACTION SIDE-FOOTPRINTS-CAST-F)>
<ROUTINE SIDE-FOOTPRINTS-CAST-F ()
<COND (<AND <VERB? COMPARE>
<OR <DOBJ? BACK-FOOTPRINTS BACK-FOOTPRINTS-CAST>
<IOBJ? BACK-FOOTPRINTS BACK-FOOTPRINTS-CAST>>>
<TELL "The two sets of foot prints don't seem to match up." CR>)>>
<ROUTINE ANAFOOT ()
<TELL
"Sgt. Duffy appears with his kit for casting with plaster of Paris.
He quickly makes a cast of the foot prints and hands it to you,
saying \"I hope you find this as useful as it is heavy.\"" CR>>
][
<ROOM OFFICE-PATH
(IN ROOMS)
(DESC "office path")
(LDESC
"You are on a path made of stepping stones, which leads from the back
gate at the south to Linder's office at the north. In the east you
can see a thick woods. To the west is the side yard.")
;(ADJECTIVE OFFICE STONE)
;(SYNONYM PATH)
(FLAGS RLANDBIT ONBIT ON-NOT-IN AN)
(NORTH TO OFFICE-PORCH)
(EAST "You would probably get lost in the woods.")
(WEST TO SIDE-YARD)
(SOUTH
"You can't leave the property yet. It would mean your job.")
(GLOBAL HOUSE WOODS ;DRIVEWAY-OBJECT SIDE-FOOTPRINTS)
(LINE 4)
(STATION OFFICE-PATH)
(CORRIDOR 3)>
<OBJECT WOODS
(IN LOCAL-GLOBALS)
(DESC "bamboo woods")
(ADJECTIVE DENSE THICK DARK BAMBOO)
(SYNONYM WOODS FOREST THICKET)
(TEXT
"Bamboo, thick and tall, screens the entire lot on the east side.")
;(ACTION LAKE-F)>
<OBJECT BACK-GATE
(IN OFFICE-PATH)
(ADJECTIVE BACK OFFICE)
(SYNONYM GATE)
(DESC "back gate")
(FLAGS DOORBIT NDESCBIT)
;(ACTION HIDE-LOOK-DOOR-F)>
][
<ROOM OFFICE-PORCH
(IN ROOMS)
(DESC "office porch")
(ACTION OFFICE-PORCH-F)
;(ADJECTIVE OFFICE BACK)
;(SYNONYM PORCH)
(FLAGS RLANDBIT ONBIT ON-NOT-IN AN)
(NORTH TO BACK-YARD)
(SOUTH TO OFFICE-PATH)
(EAST "You would probably get lost in the woods.")
(WEST TO OFFICE IF OFFICE-BACK-DOOR IS OPEN)
(IN TO OFFICE IF OFFICE-BACK-DOOR IS OPEN)
(GLOBAL HOUSE OFFICE-BACK-DOOR OFFICE-WINDOW LAWN WOODS
;PIECE-OF-WIRE ;PIECE-OF-PUTTY BROKEN-GLASS BACK-FOOTPRINTS)
(LINE 4)
(STATION OFFICE-PORCH)
(CORRIDOR 1)>
<ROUTINE OFFICE-PORCH-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-LOOK>
<TELL
"You are standing on a small concrete slab outside Linder's office. A sign
between the door and the window reads \"PACIFIC TRADE ASSOCIATES\". To the
north is a tidy lawn, extending east to the edge of the woods. A path of
stepping stones leads south to the back gate." CR>)
(<==? .RARG ,M-FLASH>
<COND (<AND <NOT <FSET? ,BACK-FOOTPRINTS ,INVISIBLE>>
<NOT <FSET? ,BACK-FOOTPRINTS ,TOUCHBIT>>>
<DESCRIBE-OBJECT ,BACK-FOOTPRINTS T 0>
<FSET ,BACK-FOOTPRINTS ,TOUCHBIT>)>)>>
<OBJECT BACK-FOOTPRINTS
(IN LOCAL-GLOBALS ;OFFICE-PORCH)
(DESC "set of footprints")
(ADJECTIVE FOOT)
(SYNONYM FOOTPRINTS PRINTS SET)
(FLAGS INVISIBLE)
(FDESC "You notice some fresh foot prints heading east.")
(LDESC "Fresh foot prints head east.")
(GENERIC GENERIC-FOOTPRINTS-F)
(ACTION BACK-FOOTPRINTS-F)>
"<GLOBAL BACK-FOOTPRINTS-CONFUSED <>>"
<ROUTINE BACK-FOOTPRINTS-F ()
<COND ;(<AND ,BACK-FOOTPRINTS-CONFUSED <VERB? ANALYZE EXAMINE>>
<TELL "There are too many foot prints here now." CR>)
(<VERB? EXAMINE>
<TELL
"The prints are uneven and widely spaced, as if made by someone running." CR>)
(<VERB? ANALYZE>
<COND (<NOT <EQUAL? <LOC ,BACK-FOOTPRINTS-CAST> ,LIMBO>>
<TELL "You already did that!" CR>)
(<OR ,FINGERPRINT-OBJ ,DUFFY-AT-CORONER>
<DO-FINGERPRINT>
<RTRUE>)
(T <MOVE ,BACK-FOOTPRINTS-CAST ,PLAYER>
<ANAFOOT>)>)
(<VERB? FOLLOW>
<TELL "You would probably get lost in the woods."
" Even with a path to follow." CR>)
(<AND <VERB? MAKE>
<DOBJ? GENERIC-CAST SIDE-FOOTPRINTS-CAST BACK-FOOTPRINTS-CAST>>
<PERFORM ,V?ANALYZE ,BACK-FOOTPRINTS>
<RTRUE>)>>
<ROUTINE GENERIC-FOOTPRINTS-F (OBJ)
<COND (<EQUAL? ,HERE ,OFFICE-PORCH> ,BACK-FOOTPRINTS)
(<EQUAL? ,HERE ,SIDE-YARD> ,SIDE-FOOTPRINTS)
(T
<SETG P-WON <>>
<TELL "(You can't see any " "foot prints" " here!)" CR>
,NOT-HERE-OBJECT)>>
<OBJECT BACK-FOOTPRINTS-CAST
(DESC "back-yard cast")
(IN LIMBO)
(ADJECTIVE BACK-YARD BACK)
(SYNONYM CAST)
(SIZE 9)
(FLAGS TAKEBIT)
(GENERIC GENERIC-CAST-F)
;(ACTION SIDE-FOOTPRINTS-F)>
<ROUTINE GENERIC-CAST-F (OBJ)
<COND (<VERB? ASK-ABOUT ASK-CONTEXT-ABOUT FIND TELL-ME WHAT>
,GENERIC-CAST)
(<VERB? MAKE> ,GENERIC-CAST)>>
<OBJECT GENERIC-CAST
(IN GLOBAL-OBJECTS)
(DESC "cast")
(SYNONYM $GNRC)>
]
<OBJECT OFFICE-WINDOW
(IN LOCAL-GLOBALS)
(DESC "office window")
(ADJECTIVE OFFICE)
(SYNONYM WINDOW PANE PANES FRAME)
(FLAGS WINDOWBIT AN)
(GENERIC GENERIC-WINDOW-F)
(ACTION OFFICE-WINDOW-F)>
<ROUTINE OFFICE-WINDOW-F ("AUX" (RM <WINDOW-ROOM ,HERE ,PRSO>))
<COND ;(<VERB? ASK-ABOUT> <RFALSE>)
(<VERB? EXAMINE>
<WINDOW-F>
<COND (<FSET? ,OFFICE-WINDOW ,RMUNGBIT>
<TELL
"All the panes of the window are cracked, and many are in pieces on the ">
<COND ;(<0? ,DIFFICULTY> <TELL "ground outside">)
;(<1? ,DIFFICULTY> <TELL "floor and ground">)
(T <TELL "floor.">)>
<COND (<==? ,HERE ,OFFICE>
<COND (<NOT <FSET? ,PIECE-OF-PUTTY ,TOUCHBIT>>
<TELL
" A chunk of putty dangles like a wax bean.">)>
<COND (<NOT <FSET? ,PIECE-OF-WIRE ,TOUCHBIT>>
<TELL
" Along one edge of the window you can see the end of a piece of green wire."
;"?etc.">)>)>
<CRLF>)
(<AND ;<==? ,P-ADVERB ,W?CAREFULLY>
<==? ,HERE ,OFFICE>
<NOT <FSET? ,PIECE-OF-WIRE ,TOUCHBIT>>>
<TELL
"There's also a piece of green wire running from the frame to the putty."
CR>)>
<RTRUE>)
(<GO-AWAY> <RTRUE>)
(<AND <VERB? LOOK-INSIDE LOOK-OUTSIDE>
.RM <FSET? ,OFFICE-WINDOW ,RMUNGBIT>>
<TELL "Through the broken window you can see">
<THE? .RM>
<TELL " " D .RM " "
<COND (<==? <GETP ,HERE ,P?LINE> ,OUTSIDE-LINE-C> "in")
(T "out")>
"side." CR>
<RTRUE>)
(<AND <VERB? THROUGH> .RM <FSET? ,OFFICE-WINDOW ,RMUNGBIT>>
<TELL "You would probably cut yourself on the broken glass." CR>)
(<DOBJ? OFFICE-WINDOW> <PERFORM ,PRSA ,WINDOW ,PRSI> <RTRUE>)
(<IOBJ? OFFICE-WINDOW> <PERFORM ,PRSA ,PRSO ,WINDOW> <RTRUE>)>>
<ROUTINE GO-AWAY ()
<COND (<AND <VERB? KNOCK>
<==? <META-LOC ,LINDER> ,OFFICE>
<NOT <IN? ,PLAYER ,OFFICE>>>
<TELL
"Someone peeks through the window at you, then disappears and"
" shouts \"Go away!\"" CR>)>>
<OBJECT PIECE-OF-WIRE
(IN OFFICE)
(DESC "green wire piece")
(ADJECTIVE GREEN WIRE)
(SYNONYM WIRE PIECE)
(FLAGS TRYTAKEBIT NDESCBIT)
(GENERIC GENERIC-WIRE-F)
(SIZE 1)
(ACTION PIECE-OF-WIRE-F)>
<ROUTINE PIECE-OF-WIRE-F ()
<COND (<AND <VERB? FOLLOW> <NOT <FSET? ,PRSO ,TOUCHBIT>>>
<TELL "The wire goes into the window frame and disappears." CR>)
(<AND <VERB? TAKE> <NOT ,SHOT-FIRED>>
<TELL "You can't." " It's stuck tight." CR>)>>
<OBJECT PIECE-OF-PUTTY
(IN OFFICE)
(DESC "chunk of putty")
(SYNONYM CHUNK PUTTY)
(FLAGS TRYTAKEBIT NDESCBIT)
(SIZE 1)
(ACTION PIECE-OF-PUTTY-F)>
<ROUTINE PIECE-OF-PUTTY-F ()
<COND (<AND <VERB? TAKE> <NOT ,SHOT-FIRED>>
<TELL "You can't." " It's stuck tight." CR>)>>
<OBJECT OFFICE-BACK-DOOR
(IN LOCAL-GLOBALS)
(ADJECTIVE BACK OUTSIDE)
(SYNONYM DOOR LOCK)
(DESC "back door")
(FLAGS LOCKED DOORBIT)
(GENERIC GENERIC-BACK-DOOR-F ;LOCKED-F)
(ACTION OFFICE-BACK-DOOR-F)>
<ROUTINE OFFICE-BACK-DOOR-F ()
<COND (<GO-AWAY> <RTRUE>)
(<AND <VERB? GIVE SGIVE> ;"GIVE NOTE BACK"
<OR <DOBJ? THREAT-NOTE> <IOBJ? THREAT-NOTE>>>
<COND (<LOC ,LINDER>
<PERFORM ,V?GIVE ,THREAT-NOTE ,LINDER>
<RTRUE>)
(T <TELL "It's too late to give Linder anything." CR>)>)>>
<ROOM BACK-YARD
(IN ROOMS)
(DESC "back yard")
;(ADJECTIVE BACK)
;(SYNONYM YARD)
(LDESC
"You are on a neatly manicured lawn, east of Monica's bedroom. The lawn
extends east to the edge of the woods. From here you can go to a rock
garden in the north or the entrance to Linder's office in the south.
There's a door into the house, and a window.")
(FLAGS RLANDBIT ONBIT)
(NORTH TO ROCK-GARDEN)
(SOUTH TO OFFICE-PORCH)
(EAST "You would probably get lost in the woods.")
(WEST TO MONICA-ROOM IF MONICA-BACK-DOOR IS OPEN)
(GLOBAL HOUSE MONICA-BACK-DOOR WINDOW LAWN WOODS)
(LINE 4)
(STATION BACK-YARD)
(CORRIDOR 1)>
<OBJECT LAWN
(IN LOCAL-GLOBALS)
(DESC "lawn")
(SYNONYM LAWN GRASS)
(ADJECTIVE GREEN)
(ACTION LAWN-F)>
<ROUTINE LAWN-F ()
<COND (<VERB? EXAMINE>
<TELL "The lawn is well manicured." CR>)>>
<OBJECT MONICA-BACK-DOOR
(IN LOCAL-GLOBALS)
(ADJECTIVE BACK OUTSIDE)
(SYNONYM DOOR LOCK)
(DESC "back door")
(FLAGS LOCKED DOORBIT)
(GENERIC GENERIC-BACK-DOOR-F ;LOCKED-F)
;(ACTION BACK-DOOR-F)>
<ROOM ROCK-GARDEN
(IN ROOMS)
(DESC "rock garden")
;(ADJECTIVE ROCK JAPANESE BACK)
;(SYNONYM GARDEN)
(LDESC
"This is a rock garden in the Japanese style, east of Linder's bedroom.
A few smooth round boulders lie partly buried in a bed of gravel,
which is carefully raked to be reminiscent of flowing water.
A sequence of smaller rocks forms a zig-zag path from the bedroom door to
the south edge of the garden, where the lawn begins.
There's a door into the house, and a couple of windows.")
(FLAGS RLANDBIT ONBIT)
(NORTH "A wooden fence blocks your way.")
(EAST "You would probably get lost in the woods.")
(SOUTH TO BACK-YARD)
(WEST TO LINDER-ROOM IF LINDER-BACK-DOOR IS OPEN)
(GLOBAL HOUSE LINDER-BACK-DOOR LINDER-WINDOW BATH-WINDOW
LAWN WOODS FENCE)
(LINE 4)
(STATION ROCK-GARDEN)
(CORRIDOR 1)>
<OBJECT ROCKS
(IN ROCK-GARDEN ;LOCAL-GLOBALS)
(DESC "rocks")
(ADJECTIVE SMOOTH ROUND)
(SYNONYM ROCKS ROCK BOULDER)
(FLAGS NDESCBIT CONTBIT SURFACEBIT OPENBIT)
(CAPACITY 150)
;(ACTION ROSE-F)>
;"<OBJECT GLOBAL-ROCKS
(IN GLOBAL-OBJECTS)
(DESC 'rocks')
(ADJECTIVE ROCK)
(SYNONYM ROCKS GARDEN ROCK)>"
"? <OBJECT BENCH ...>"
<OBJECT LINDER-BACK-DOOR
(IN LOCAL-GLOBALS)
(SYNONYM DOOR LOCK)
(ADJECTIVE BACK OUTSIDE)
(DESC "back door")
(FLAGS LOCKED DOORBIT)
(GENERIC GENERIC-BACK-DOOR-F ;LOCKED-F)
;(ACTION BACK-DOOR-F)>
"Inside the house"
<ROOM MONICA-ROOM
(IN ROOMS)
(DESC "Monica's bedroom")
;(ADJECTIVE MONICA BED HER)
;(SYNONYM BEDROOM ROOM)
(GENERIC GENERIC-BEDROOM-F)
(ACTION MONICA-ROOM-F)
(FLAGS RLANDBIT ONBIT)
(EAST TO BACK-YARD IF MONICA-BACK-DOOR IS OPEN)
(OUT TO BACK-YARD IF MONICA-BACK-DOOR IS OPEN)
(WEST TO HALL-2 IF MONICA-DOOR IS OPEN)
(NORTH TO BATHROOM IF MONICA-BATH-DOOR IS OPEN)
(GLOBAL MONICA-DOOR MONICA-BACK-DOOR MONICA-BATH-DOOR WINDOW
BED MIRROR TELEPHONE CLOSET)
(PSEUDO "CHAIR" RANDOM-PSEUDO)
(LINE 3)
(STATION MONICA-ROOM)>
<ROUTINE MONICA-ROOM-F ("OPTIONAL" (RARG <>))
<COND (<==? .RARG ,M-ENTER> <I-PROMPT-2>)
(<==? .RARG ,M-LOOK>
<TELL
"On one side is a modern-style bed, with piles of well-thumbed detective
stories stacked on the table beside it. Opposite the bed is a long
dressing table that seems to serve also as desk and workbench. In the
corner sits a small table for a portable phonograph and records, and a
book case with more books and pulps. Movie posters cover the walls. A
handsome door with cedar veneer leads north, and a door and window face
outside." CR>)>>
<OBJECT MONICA-TABLE
(IN MONICA-ROOM)
(ADJECTIVE DRESSING WORK)
(SYNONYM TABLE DESK BENCH)
(DESC "dressing table")
(FLAGS NDESCBIT CONTBIT SURFACEBIT OPENBIT)
(CAPACITY 50)
(ACTION MONICA-TABLE-F)>
<ROUTINE MONICA-TABLE-F ()
<COND (<VERB? EXAMINE LOOK-INSIDE LOOK-ON SEARCH>
<COND (<AND <IN? ,MEDICAL-REPORT ,MONICA-ROOM>
<==? ,P-ADVERB ,W?CAREFULLY>>
<FCLEAR ,TUMOR ,INVISIBLE>
<FCLEAR ,MEDICAL-REPORT ,INVISIBLE>
<THIS-IS-IT ,MEDICAL-REPORT>
<TELL
"Among make-up, letters, and tools, you find a medical report." CR>)
(T <TELL
"This table is pretty messy. Anyone but Monica would have a tough time
finding anything on it." CR>)>)>>
<OBJECT MONICA-TABLE-STUFF