forked from historicalsource/hitchhikersguide
-
Notifications
You must be signed in to change notification settings - Fork 0
/
earth.zil
2454 lines (2317 loc) · 74.6 KB
/
earth.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
"EARTH for
THE HITCHHIKER'S GUIDE TO THE GALAXY
(c) Copyright 1984 Infocom, Inc. All Rights Reserved."
<OBJECT HOME
(IN LOCAL-GLOBALS)
(DESC "your home")
(SYNONYM HOME)
(ADJECTIVE MY YOUR)
(FLAGS NARTICLEBIT)
(ACTION HOME-F)>
<ROUTINE HOME-F ()
<COND (<AND ,HOUSE-DEMOLISHED
<VERB? ENJOY>>
<TELL
,ZEN " You can't enjoy a " D ,RUBBLE " properly till it's at least a hundred
years old. Also, you are haunted by the tragic vision of your favourite teapot
lying shattered among the dust.|
There is also the matter of all your clothes." CR>)
(<VERB? THROUGH WALK-TO BOARD>
<COND (<EQUAL? ,HERE ,FRONT-OF-HOUSE ,FRONT-PORCH>
<DO-WALK ,P?NORTH>)
(<EQUAL? ,HERE ,BEDROOM>
<TELL ,LOOK-AROUND CR>)
(T
<V-WALK-AROUND>)>)
(<VERB? LEAVE EXIT DISEMBARK>
<COND (<EQUAL? ,HERE ,FRONT-PORCH>
<DO-WALK ,P?SOUTH>)
(<EQUAL? ,HERE ,BEDROOM>
<V-WALK-AROUND>)
(T
<TELL ,LOOK-AROUND CR>)>)
(<AND <VERB? LIE-DOWN>
<EQUAL? ,HERE ,FRONT-OF-HOUSE>
,IN-FRONT-FLAG>
<PERFORM ,V?LIE-DOWN ,GROUND>
<RTRUE>)
(<AND <VERB? EXAMINE>
,HOUSE-DEMOLISHED>
<TELL "It is now a " D ,RUBBLE "." CR>)
(<EQUAL? ,IDENTITY-FLAG ,FORD> ;"since DESC is YOUR HOME"
<UNIMPORTANT-THING-F>)>>
<OBJECT HOUSE
(IN LOCAL-GLOBALS)
(DESC "it")
(SYNONYM HOUSE)
(ADJECTIVE MY YOUR)
(FLAGS NARTICLEBIT)
(ACTION HOUSE-F)>
<ROUTINE HOUSE-F ()
<COND (<PRSO? ,HOUSE>
<PERFORM ,PRSA ,HOME ,PRSI>
<RTRUE>)
(T
<PERFORM ,PRSA ,PRSO ,HOME>
<RTRUE>)>>
<OBJECT RUBBLE
(IN LOCAL-GLOBALS)
(DESC "pile of rubble")
(SYNONYM PILE RUBBLE DEBRIS)
(FLAGS NDESCBIT)
(ACTION HOME-F)>
<ROUTINE I-HOUSEWRECK ()
<COND (<EQUAL? ,HERE ,BEDROOM ,FRONT-PORCH>
<TELL CR
"Astoundingly, a " D ,BULLDOZER " pokes through your wall. However, you have
no time for surprise because the ceiling is collapsing on you as">
<BETTER-LUCK>)
(T
<RFALSE>)>>
<ROUTINE BETTER-LUCK ()
<TELL
" your home is unexpectedly demolished to make way for a new bypass. You are
seriously injured in the process, but on your way to the hospital">
<MAKE-WAY-FOR>
<CRLF>
<COND (<NOT <FSET? ,BEDROOM ,ONBIT>>
<TELL "Next time, try turning on the light." CR>)
(<AND <NOT <FSET? ,GOWN ,OPENBIT>>
,HEADACHE>
<TELL
"Too bad you never found an aspirin for your hangover." CR>)
(T
<TELL "Better luck next life." CR>)>
<FINISH>>
<GLOBAL HOUSE-DEMOLISHED <>>
<GLOBAL HEADACHE T>
<GLOBAL SLEEVE-TIED <>>
<OBJECT HANGOVER
(IN GLOBAL-OBJECTS)
(DESC "splitting headache")
(SYNONYM HEADAC HANGOV THROBB)
(ADJECTIVE SPLITT BIG BLINDI)
(ACTION HANGOVER-F)>
<ROUTINE HANGOVER-F ()
<COND (<AND <VERB? ASK-ABOUT>
<PRSI? ,HANGOVER>>
<RFALSE>)
(<AND <NOT ,HEADACHE>
<NOT <EQUAL? ,IDENTITY-FLAG ,ZAPHOD>>>
<TELL "You can't feel any">
<COND (<EQUAL? ,HANGOVER ,PRSO>
<PRSO-PRINT>)
(T
<PRSI-PRINT>)>
<TELL " here." CR>)
(<VERB? EXAMINE>
<V-DIAGNOSE>)
(<VERB? GIVE THROW DROP>
<V-COUNT>)>>
<ROOM BEDROOM
(IN ROOMS)
(SYNONYM TRAVEL)
(ADJECTIVE TIME)
(DESC "Bedroom")
(SOUTH PER BEDROOM-EXIT-F)
(OUT PER BEDROOM-EXIT-F)
(DOWN PER BEDROOM-EXIT-F)
(FLAGS RLANDBIT)
(GLOBAL HOUSE HOME GLOBAL-BED BULLDOZER WINDOW STAIRS
BEDROOM-DOOR THIRD-PLANET)
(PSEUDO "WATER" UNIMPORTANT-THING-F "BEDROO" GLOBAL-ROOM-F)
(ACTION BEDROOM-F)>
<ROUTINE BEDROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"The bedroom is a mess.|
It is a small bedroom with a faded carpet and old wallpaper. There is a
washbasin, a chair">
<COND (<FSET? ,GOWN ,NDESCBIT>
<TELL " with a tatty dressing gown slung over it">)>
<TELL
", and a window with the curtains drawn. Near the exit leading south is a
phone." CR>)>>
<ROUTINE BEDROOM-EXIT-F ()
<COND (<NOT <FSET? ,BEDROOM-DOOR ,OPENBIT>>
<TELL "The door is closed." CR>
<SETG P-IT-OBJECT ,BEDROOM-DOOR>
<RFALSE>)
(,HEADACHE
<TELL
"You miss the doorway by a good eighteen inches. The wall jostles you
rather rudely." CR>
<RFALSE>)
(<FSET? ,BULLDOZER ,INVISIBLE>
<TELL "You make your way down to the front porch." CR CR>)
(T
<TELL "You rush down the stairs in panic." CR CR>)>
<FCLEAR ,LIGHT ,LIGHTBIT>
,FRONT-PORCH>
<OBJECT PHONE
(IN BEDROOM)
(DESC "telephone")
(SYNONYM PHONE TELEPH RECEIV)
(FLAGS NDESCBIT TAKEBIT TRYTAKEBIT)
(ACTION PHONE-F)>
<ROUTINE PHONE-F ()
<COND (<VERB? TAKE>
<COND (<FSET? ,PHONE ,TOUCHBIT>
<PERFORM ,V?CALL ,DAIS>
<RTRUE>)
(T
<FSET ,PHONE ,TOUCHBIT>
<TELL "You pick up the receiver." ,DIALLING-TONE>
<COND (<FSET? ,TOOTHBRUSH ,TOUCHBIT>
<TWO-TREES>)>
<CRLF>)>)
(<VERB? REPLY>
<TELL "It isn't ringing." CR>)>>
<OBJECT BEDROOM-DOOR
(IN LOCAL-GLOBALS)
(DESC "door")
(SYNONYM DOOR)
(FLAGS DOORBIT OPENBIT NDESCBIT)>
<OBJECT GLOBAL-BED
(IN LOCAL-GLOBALS)
(DESC "bed")
(SYNONYM BED)
(FLAGS VEHBIT)
(ACTION GLOBAL-BED-F)>
<ROUTINE GLOBAL-BED-F ()
<COND (<EQUAL? ,GLOBAL-BED ,PRSO>
<PERFORM ,PRSA ,BED ,PRSI>
<RTRUE>)
(T
<PERFORM ,PRSA ,PRSO ,BED>
<RTRUE>)>>
<OBJECT BED
(IN BEDROOM)
(DESC "bed")
(SYNONYM BED)
(FLAGS VEHBIT CONTBIT SURFACEBIT SEARCHBIT OPENBIT NDESCBIT)
(ACTION BED-F)>
<ROUTINE BED-F ("OPTIONAL" (RARG <>))
<COND (<EQUAL? .RARG ,M-BEG>
<COND (<AND <VERB? TAKE>
<FSET? ,PRSO ,TAKEBIT>
<NOT <IN? ,PRSO ,BED>>
<NOT <HELD? ,PRSO>>>
<TELL "You can't reach it from the bed.">
<COND (,HEADACHE
<TELL " The effort almost kills you.">)>
<CRLF>)
(<AND <VERB? OPEN LOOK-INSIDE>
<PRSO? ,CURTAINS>>
<PERFORM ,V?TAKE ,PHONE>
<SETG P-IT-OBJECT ,CURTAINS>
<RTRUE>)
(<AND <VERB? OPEN CLOSE>
<PRSO? ,BEDROOM-DOOR>>
<PERFORM ,V?TAKE ,PHONE>
<SETG P-IT-OBJECT ,BEDROOM-DOOR>
<RTRUE>)
(<VERB? WALK>
<OUT-OF-FIRST ,BED>)>)
(.RARG
<RFALSE>)
(<AND <VERB? DISEMBARK>
,HEADACHE
<EQUAL? <LOC ,PROTAGONIST> ,BED>>
<MOVE ,PROTAGONIST ,HERE>
<SETG LYING-DOWN <>>
<TELL
"Very difficult, but you manage it. The room is still spinning.
It dips and sways a little." CR>)
(<VERB? LOOK-UNDER>
<MOVE ,STUFF-UNDER-BED ,HERE>
<TELL
"There's nothing there. Well, there are a few soiled handkerchiefs, a book you
thought you'd lost, a couple of foreign coins, and something else which can't
be fully described in a family game, but nothing you'd actually want." CR>)
(<AND <VERB? OPEN CLOSE>
<PRSO? ,BED>>
<TELL-ME-HOW>)>>
<OBJECT STUFF-UNDER-BED
(IN LOCAL-GLOBALS) ;"for purposes of MOBY-FIND"
(DESC "it")
(SYNONYM BOOK COIN HANDKE COINS)
(ADJECTIVE SOILED FOREIG)
(FLAGS NDESCBIT NARTICLEBIT)
(ACTION UNIMPORTANT-THING-F)>
<OBJECT CURTAINS
(IN BEDROOM)
(DESC "your curtains")
(SYNONYM CURTAI SHADE SHADES)
(ADJECTIVE YOUR)
(FLAGS NDESCBIT NARTICLEBIT)
(ACTION CURTAINS-F)>
<ROUTINE CURTAINS-F ()
<COND (<VERB? OPEN LOOK-INSIDE>
<FCLEAR ,BULLDOZER ,INVISIBLE>
<TELL
"As you part " D ,CURTAINS " you see that i" ,NICE-DAY ", and a large yellow "
D ,BULLDOZER " is advancing on " D ,HOME "." CR>)>>
<OBJECT GOWN
(IN BEDROOM)
(DESC "your gown")
(LDESC "Your gown is here.")
(SYNONYM GOWN POCKET ROBE LOOP)
(ADJECTIVE MY YOUR DRESSI TATTY FADED BATTER)
(FLAGS
WEARBIT TRYTAKEBIT TAKEBIT CONTBIT NDESCBIT NARTICLEBIT SEARCHBIT)
(SIZE 15)
(CAPACITY 14)
(ACTION GOWN-F)>
<ROUTINE GOWN-F ()
<COND (<AND <VERB? OPEN CLOSE>
<NOT <FSET? ,GOWN ,WORNBIT>>>
<TELL
"It's hard to open or close the pocket unless you're wearing the gown." CR>)
(<VERB? EXAMINE>
<TELL "The dressing gown is faded and battered, and is
clearly a garment which has seen better decades. It has a pocket which is ">
<COND (<FSET? ,GOWN ,OPENBIT>
<TELL "open">)
(T
<TELL "closed">)>
<COND (,GOWN-HUNG
<TELL ". It is hanging from a " D ,HOOK ".">)
(T
<TELL ", and a small loop at the back of the collar.">)>
<COND (,SLEEVE-TIED
<TELL " The sleeves are tied closed.">)>
<CRLF>)
(<AND <VERB? TAKE>
<EQUAL? ,GOWN ,PRSO>
,HEADACHE>
<FCLEAR ,GOWN ,TRYTAKEBIT>
<FCLEAR ,GOWN ,NDESCBIT>
<MOVE ,GOWN ,PROTAGONIST>
<TELL
"Luckily, this is large enough for you to get hold of. You notice something
in the pocket." CR>)
(<AND <VERB? WEAR>
,SLEEVE-TIED>
<TELL "You'll have to untie the sleeve first." CR>)
(<VERB? TIE UNTIE>
<PERFORM ,PRSA ,SLEEVES>
<RTRUE>)>>
<OBJECT SLEEVES
(IN GLOBAL-OBJECTS)
(DESC "sleeve")
(SYNONYM SLEEVE)
(ACTION SLEEVES-F)>
<ROUTINE SLEEVES-F ()
<COND (<NOT <VISIBLE? ,GOWN>>
<CANT-SEE ,SLEEVES>)
(<VERB? WEAR TAKE>
<PERFORM ,PRSA ,GOWN>
<RTRUE>)
(<VERB? TIE CLOSE>
<SETG PRSO ,GOWN>
<COND (<IDROP>
<RTRUE>)
(,SLEEVE-TIED
<TELL "It is." CR>)
(T
<SETG SLEEVE-TIED T>
<TELL "The sleeves are now tied closed." CR>)>)
(<VERB? UNTIE OPEN>
<COND (,SLEEVE-TIED
<SETG SLEEVE-TIED <>>
<TELL "Untied." CR>)
(T
<TELL "It isn't tied!" CR>)>)>>
<ROUTINE TWO-TREES ()
<SETG AWAITING-REPLY 9>
<ENABLE <QUEUE I-REPLY 2>>
<TELL
" Shouldn't you be taking more interest in events in the world around you?
While you've got it...?">>
<OBJECT THING
(IN GOWN)
(DESC "thing your aunt gave you which you don't know what it is")
(SYNONYM THING GIFT)
(ADJECTIVE AUNT\'S)
(FLAGS TAKEBIT CONTBIT SEARCHBIT OPENBIT)
(SIZE 6)
(CAPACITY 90)
(ACTION THING-F)>
<ROUTINE THING-F ()
<COND (<VERB? EXAMINE>
<TELL
"Apart from a label on the bottom saying \"Made in Ibiza\" it furnishes you
with no clue as to its purpose, if indeed it has one. You are surprised to see
it because you thought you'd thrown it away. Like most gifts from your aunt,"
,GET-RID CR>)
(<AND <VERB? DROP>
<NOT <EQUAL? ,HERE ,MAZE ,ACCESS-SPACE>>>
<MOVE ,THING ,HERE>
<TELL
"It falls to the ground with a light \"thunk.\" It doesn't do anything
else at all." CR>)
(<VERB? CLOSE>
<TELL
"Come to think of it, you vaguely remember an instruction booklet with
directions for that. You never read it and lost it months ago." CR>)>>
<ROUTINE I-THING ()
<ENABLE <QUEUE I-THING <+ 4 <RANDOM 4>>>>
<COND (<OR <NOT <EQUAL? ,IDENTITY-FLAG ,ARTHUR>>
<AND <EQUAL? ,HERE ,ENGINE-ROOM>
<L? ,LOOK-COUNTER 3>>
<EQUAL? ,HERE ,DARK ,ACCESS-SPACE ,MAZE>
<VISIBLE? ,THING>
<HELD? ,THING ,PROTAGONIST>
<IN? ,FLEET ,HERE>>
<RFALSE>)>
<COND (<PROB 40>
<MOVE ,THING ,HERE>)
(<AND <FSET? ,GOWN ,WORNBIT>
<FSET? ,GOWN ,OPENBIT>
<PROB 65>>
<MOVE ,THING ,GOWN>)
(T
<MOVE ,THING ,PROTAGONIST>)>
<RFALSE>>
<OBJECT POCKET-FLUFF
(IN GOWN)
(DESC "pocket fluff")
(SYNONYM FLUFF LINT)
(ADJECTIVE POCKET)
(FLAGS TAKEBIT NARTICLEBIT)
(SIZE 1)
(GENERIC POCKET-FLUFF)>
<OBJECT TABLET
(IN GOWN)
(DESC "buffered analgesic")
(SYNONYM ANALGE TABLET ASPIRI PILL)
(ADJECTIVE LARGE BUFFER)
(FLAGS TAKEBIT EATBIT)
(SIZE 2)
(ACTION TABLET-F)>
<ROUTINE TABLET-F ()
<COND (<VERB? EAT TAKE DRINK> ;"SWALLOW is synonym of DRINK"
<MOVE ,TABLET ,LOCAL-GLOBALS>
<FCLEAR ,SCREWDRIVER ,TRYTAKEBIT>
<FCLEAR ,TOOTHBRUSH ,TRYTAKEBIT>
<SETG HEADACHE <>>
<SETG SCORE <+ ,SCORE 10>>
<TELL
"You swallow the tablet. After a few seconds the room begins to calm
down and behave in an orderly manner. Your terrible headache goes." CR>)>>
<OBJECT SINK
(IN BEDROOM)
(DESC "it")
(SYNONYM BASIN WASHBA SINK)
(ADJECTIVE WASH)
(FLAGS NDESCBIT NARTICLEBIT)
(ACTION UNIMPORTANT-THING-F)>
<OBJECT BEDROOM-FURNISHINGS
(IN BEDROOM)
(DESC "it")
(SYNONYM CARPET WALLPA PAPER CHAIR)
(ADJECTIVE WALL FADED OLD)
(FLAGS NDESCBIT NARTICLEBIT)
(ACTION UNIMPORTANT-THING-F)>
<ROOM FRONT-PORCH
(IN ROOMS)
(SYNONYM BEAM BEAMS)
(ADJECTIVE MATTER TRANSF)
(DESC "Front Porch")
(LDESC
"This is the enclosed front porch of your home. Your front garden lies to
the south, and you can re-enter your home to the north.")
(UP TO BEDROOM)
(NORTH TO BEDROOM)
(SOUTH PER CLOTHES-EXIT-F)
(OUT PER CLOTHES-EXIT-F)
(FLAGS RLANDBIT ONBIT)
(PSEUDO "DOORMA" UNIMPORTANT-THING-F "MAT" UNIMPORTANT-THING-F)
(GLOBAL HOUSE HOME STAIRS THIRD-PLANET BEDROOM-DOOR)>
<ROUTINE CLOTHES-EXIT-F ()
<COND (<FSET? ,GOWN ,WORNBIT>
,FRONT-OF-HOUSE)
(T
<SETG AWAITING-REPLY 10>
<ENABLE <QUEUE I-REPLY 2>>
<TELL ,ARRESTED CR>
<RFALSE>)>>
<OBJECT MAIL
(IN FRONT-PORCH)
(DESC "loose pile of junk mail")
(FDESC "On the doormat is a pile of junk mail.")
(SYNONYM ORDER MAIL PILE LETTER)
(ADJECTIVE DEMOLI JUNK MY OFFICI LOOSE)
(FLAGS TAKEBIT READBIT TRYTAKEBIT)
(SIZE 4)
(TEXT
"There are many pieces of mail. Most are from some computer company called
Infocom which wants you to buy their games. Hidden underneath is an official
letter from the local council, dated some two years ago and inexplicably not
delivered till now, explaining that a demolition order has been served on your
home. The date of demolition is today's date.")
(ACTION MAIL-F)>
<ROUTINE MAIL-F ()
<COND (<AND <VERB? TAKE>
<NOT <FSET? ,MAIL ,TOUCHBIT>>>
<FSET ,MAIL ,TOUCHBIT>
<FCLEAR ,MAIL ,TRYTAKEBIT>
<MOVE ,MAIL ,PROTAGONIST>
<TELL "You gather up the pile of mail." CR>)
(<VERB? OPEN>
<PERFORM ,V?READ ,MAIL>
<RTRUE>)>>
<ROOM FRONT-OF-HOUSE
(IN ROOMS)
(SYNONYM WOONBE)
(ADJECTIVE GALAXI)
(DESC "Front of House")
(NORTH PER HOUSE-ENTER-F)
(SOUTH TO COUNTRY-LANE)
(NE TO BACK-OF-HOUSE)
(NW TO BACK-OF-HOUSE)
(FLAGS RLANDBIT ONBIT OUTSIDEBIT)
(GLOBAL HOUSE HOME BULLDOZER CONVERSATION THIRD-PLANET RUBBLE)
(PSEUDO "TREE" TREE-PSEUDO)
(ACTION FRONT-OF-HOUSE-F)>
<ROUTINE HOUSE-ENTER-F ()
<COND (,HOUSE-DEMOLISHED
<TELL "You can't enter a " D ,RUBBLE "." CR>
<RFALSE>)
(<EQUAL? ,IDENTITY-FLAG ,FORD>
<COND (<NOT <VERB? THROUGH>>
<TELL "Enter the house? ">)>
<PRIVATE "Arthur">
<RFALSE>)
(<NOT ,PROSSER-LYING>
<TELL "The " D ,BULLDOZER>
<JIGS-UP
", which you may have noticed outside, just pushed your home down
on top of you.">
<RFALSE>)
(T
<ENABLE <QUEUE I-HOUSEWRECK 5>>
,FRONT-PORCH)>>
<ROUTINE FRONT-OF-HOUSE-F (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<FCLEAR ,BULLDOZER ,INVISIBLE>
<COND (<IN? ,DOG ,COUNTRY-LANE>
<COND (<NOT ,DOG-FED>
<I-DOG>)>
<ENABLE <QUEUE I-VOGONS 3>>
<TELL "You reach the site of what was ">
<COND (<EQUAL? ,IDENTITY-FLAG ,FORD>
<TELL "Arthur's">)
(T
<TELL "your">)>
<TELL
" home. It is now a " D ,RUBBLE ". " D ,PROSSER " looks sheepishly
triumphant, a trick few people can do, as it requires a lot of
technically complex deltoid muscle work." CR CR>)
(<AND <NOT <EQUAL? ,IDENTITY-FLAG ,FORD>>
<NOT ,PROSSER-LYING>>
<ENABLE <QUEUE I-BULLDOZER -1>>
<RFALSE>)>)
(<EQUAL? .RARG ,M-LOOK>
<COND (<AND <EQUAL? ,IDENTITY-FLAG ,FORD>
<NOT <FSET? ,FRONT-OF-HOUSE ,NDESCBIT>>>
<FSET ,BEER ,NDESCBIT>
<SETG DRUNK-LEVEL 0>
<FSET ,ARTHUR ,NDESCBIT>
<FSET ,FRONT-OF-HOUSE ,NDESCBIT>
<TELL
"Before you is the house of your friend, " D ,ARTHUR ", who is lying in front
of a " D ,BULLDOZER "; you have no idea why. You have no idea about most things
about Arthur, even why you regard him as a friend, but you do, and must
therefore return his towel before you leave.">)
(T
<COND (,HOUSE-DEMOLISHED
<TELL "There is a huge " D ,RUBBLE>)
(<EQUAL? ,IDENTITY-FLAG ,FORD>
<TELL "Arthur's house is">)
(T
<TELL "You can enter your home">)>
<TELL
" to the north. A path leads around it to the northeast and northwest,
and a country lane is visible to the south.">)>
<COND (<AND <NOT <FSET? ,FRONT-OF-HOUSE ,NDESCBIT>>
<EQUAL? ,IDENTITY-FLAG ,ARTHUR>>
<FSET ,FRONT-OF-HOUSE ,NDESCBIT>
<TELL
" All that lies between your home and the huge yellow " D ,BULLDOZER " bearing
down on it is a few yards of mud.">)>
<CRLF> <CRLF>)
(<AND <EQUAL? .RARG ,M-END>
<EQUAL? ,IDENTITY-FLAG ,FORD>
<FSET? ,ARTHUR ,NDESCBIT>>
<FCLEAR ,ARTHUR ,NDESCBIT>
<RFALSE>)>>
<OBJECT ROSES
(IN FRONT-OF-HOUSE)
(DESC "it")
(SYNONYM ROSE ROSES ROSEBE BED)
(ADJECTIVE ROSE)
(FLAGS NDESCBIT NARTICLEBIT)
(ACTION UNIMPORTANT-THING-F)>
<GLOBAL BULLDOZER-COUNTER 0>
<ROUTINE I-BULLDOZER ()
<COND (<OR ,LYING-DOWN
,HOUSE-DEMOLISHED>
<DISABLE <INT I-BULLDOZER>>
<RFALSE>)>
<FSET ,PROSSER ,TOUCHBIT>
<SETG BULLDOZER-COUNTER <+ ,BULLDOZER-COUNTER 1>>
<COND (<G? ,BULLDOZER-COUNTER 4>
<DISABLE <INT I-BULLDOZER>>
<TELL ,BULLDOZER-PILES CR>
<BRICK-DEATH>)
(<EQUAL? ,HERE ,FRONT-OF-HOUSE>
<TELL
"The " D ,BULLDOZER " rumbles slowly toward your home." CR>)
(T
<RFALSE>)>>
<ROUTINE BRICK-DEATH ()
<TELL CR
"Your home collapses in a cloud of dust, and a stray flying brick hits you
squarely on the back of the head. You try to think of some suitable last words,
but what with the confusion of the moment and the spinning of your head, you
are unable to compose anything pithy and expire in silence.">
<REPEAT ()
<CRLF> <CRLF>
<PRINTI ">">
<READ ,P-INBUF ,P-LEXV>
<SETG DEAD-COUNTER <+ ,DEAD-COUNTER 1>>
<COND (<EQUAL? ,DEAD-COUNTER 1 2>
<TELL "You keep out of this, you're dead">
<COND (<EQUAL? ,DEAD-COUNTER 1>
<TELL ". An ambulance arrives.">)
(T
<TELL
" and should be concentrating on developing a good firm rigor mortis. You
are put in the ambulance, which drives away.">)>)
(<EQUAL? ,DEAD-COUNTER 3>
<TELL
"For a dead person you are talking too much.
As the ambulance reaches the mortuary">
<MAKE-WAY-FOR>
<FINISH>)>>>
<GLOBAL DEAD-COUNTER 0>
<OBJECT BULLDOZER-DRIVER
(IN FRONT-OF-HOUSE)
(DESC "bulldozer driver")
(SYNONYM DRIVER)
(ADJECTIVE BULLDO DOZER)
(FLAGS NDESCBIT ACTORBIT)
(ACTION BULLDOZER-DRIVER-F)>
<ROUTINE BULLDOZER-DRIVER-F ()
<COND (<VERB? TELL HELLO>
<TELL "The " D ,BULLDOZER-DRIVER
", perusing a booklet of union rules, ignores you." CR>
<FUCKING-CLEAR>)>>
<OBJECT BULLDOZER
(IN LOCAL-GLOBALS)
(DESC "bulldozer")
(SYNONYM BULLDO DOZER)
(ADJECTIVE LARGE YELLOW BULL HUGE)
(FLAGS NDESCBIT INVISIBLE)
(ACTION BULLDOZER-F)>
<ROUTINE BULLDOZER-F ()
<COND (<VERB? EXAMINE>
<TELL
"It's one of those really big " D ,BULLDOZER "s that can actually crush other "
D ,BULLDOZER "s, let alone houses." CR>)
(<AND <NOT <EQUAL? ,HERE ,FRONT-OF-HOUSE>>
<VERB? RUB PUSH MOVE TAKE KICK BLOCK WALK-AROUND>>
<TELL "The " D ,BULLDOZER " isn't here." CR>)
(<VERB? LIE-DOWN>
<PERFORM ,V?BLOCK ,BULLDOZER>
<RTRUE>)
(<AND <VERB? BLOCK>
<EQUAL? ,IDENTITY-FLAG ,ARTHUR>>
<COND (,HOUSE-DEMOLISHED
<TELL "Too late now." CR>)
(,LYING-DOWN
<PERFORM ,V?LIE-DOWN ,GROUND>
<RTRUE>)
(,PROSSER-LYING
<TELL "Prosser's doing that for you." CR>)
(T
<SETG LYING-DOWN T>
<ENABLE <QUEUE I-PROSSER 2>>
<TELL
"You lie down in the path of the advancing " D ,BULLDOZER ". Prosser yells
at you to for crissake move!!!" CR>)>)
(<VERB? WALK-AROUND>
<COND (<EQUAL? ,IDENTITY-FLAG ,ARTHUR>
<V-DIG>)
(<NOT ,TOWEL-OFFERED>
<TELL
"Didn't you come here for a purpose? Something about a towel?" CR>)
(,GONE-AROUND
<TELL "You already did. It's not a merry-go-round." CR>)
(T
<SETG GONE-AROUND T>
<TELL
"You walk around the " D ,BULLDOZER ". Prosser is standing here, looking cross
and frustrated. Realising that you are a friend of Arthur's he starts to talk
at you. He says that this sort of protest is all very well, but what Mr. Dent
must realise is that he's had plenty of time to make a formal protest at the
proper time and place, and that spending months going through the appropriate
official channels, filling in the appropriate official forms, and going to the
appropriate official public hearings is the right way of going about it, and
lying around whimsically in the mud is not. He says that he personally hates
mud and despises the sort of people who lie in it." CR>)>)
(<AND <VERB? LISTEN>
<RUNNING? ,I-PROSSER>>
<TELL "\"Rumble...rumble...\"" CR>)>>
<GLOBAL PROSSER-COUNTER 0>
<GLOBAL PROSSER-LYING <>>
<GLOBAL GONE-AROUND <>>
<ROUTINE I-PROSSER ()
<COND (<NOT ,LYING-DOWN>
<DISABLE <INT I-PROSSER>>
<I-BULLDOZER>
<RTRUE>)>
<ENABLE <QUEUE I-PROSSER -1>>
<SETG PROSSER-COUNTER <+ ,PROSSER-COUNTER 1>>
<CRLF>
<COND (<EQUAL? ,PROSSER-COUNTER 1>
<TELL
"The " D ,BULLDOZER " thunders toward you. The ground is shaking beneath you
as you lie in the mud." CR>)
(<EQUAL? ,PROSSER-COUNTER 2>
<TELL
"The noise of the giant " D ,BULLDOZER " is now so violently loud that you
can't even hear Prosser yelling to warn you that you will be killed if you
don't get the hell out of the way. You just see him gesticulating wildly." CR>)
(<EQUAL? ,PROSSER-COUNTER 3>
<DISABLE <INT I-PROSSER>>
<ENABLE <QUEUE I-FORD -1>>
<MOVE ,FORD ,HERE>
<SETG P-IT-OBJECT ,TOWEL>
<TELL
"With a terrible grinding of gears the " D ,BULLDOZER" comes to an abrupt halt
just in front of you. It shakes, shudders, and emits noxious substances all
over your rose bed. Prosser is incoherent with rage.|
|
Moments later, your friend " D ,FORD " arrives. He hardly seems to notice
your predicament, but keeps glancing nervously at the sky. He says \"Hello,
Arthur,\" takes a towel from his battered leather satchel, and offers it to
you." CR>)>>
<OBJECT PROSSER
(IN FRONT-OF-HOUSE)
(DESC "Mr. Prosser")
(DESCFCN PROSSER-DESCFCN)
(SYNONYM PROSSE FOREMA CREW)
(ADJECTIVE WRECKI MR MISTER)
(FLAGS NARTICLEBIT ACTORBIT CONTBIT OPENBIT)
(ACTION PROSSER-F)>
<ROUTINE PROSSER-DESCFCN ("OPTIONAL" X)
<COND (<AND <EQUAL? ,IDENTITY-FLAG ,FORD>
<NOT <FSET? ,PROSSER ,TOUCHBIT>>>
<FSET ,PROSSER ,TOUCHBIT>
<TELL
"Nearby stands an impatient man. There seems to be a bit of an atmosphere.">)
(T
<TELL D ,PROSSER ", from the local council, is ">
<COND (,PROSSER-LYING
<TELL "lying in front">)
(,GONE-AROUND
<TELL "standing at the side">)
(T
<TELL ,ON-OTHER-SIDE>)>
<TELL
" of the " D ,BULLDOZER ". He seems to be wearing a " D ,DIGITAL-WATCH ".">
<COND (<NOT <FSET? ,PROSSER ,TOUCHBIT>>
<FSET ,PROSSER ,TOUCHBIT>
<TELL
" He looks startled to see you emerge, and yells at you to get out of
the way.">)>)>
<CRLF>>
<ROUTINE PROSSER-F ()
<COND (<EQUAL? ,PROSSER ,WINNER>
<COND (<IN? ,FLEET ,HERE>
<TELL
"Prosser is too preoccupied with recent events to give your remarks much
consideration. He is running off and saying a number of things about his
mother in a high voice." CR>
<FUCKING-CLEAR>)
(<AND <VERB? TELL-ABOUT>
<PRSO? ,ME>>
<SETG WINNER ,PROTAGONIST>
<PERFORM ,V?ASK-ABOUT ,PROSSER ,PRSI>
<SETG WINNER ,PROSSER>
<RTRUE>)
(<VERB? HELLO>
<SETG WINNER ,PROTAGONIST>
<PERFORM ,V?HELLO ,PROSSER>
<SETG WINNER ,PROSSER>
<RTRUE>)
(<AND <VERB? WHAT>
<PRSO? ,OBJECT-OF-GAME>>
<SETG WINNER ,PROTAGONIST>
<PERFORM ,V?ASK-ABOUT ,PROSSER ,OBJECT-OF-GAME>
<SETG WINNER ,PROSSER>
<RTRUE>)
(<OR <AND <VERB? WHAT>
<PRSO? ,TIME>>
<AND <VERB? TELL-TIME>
<PRSO? ,ME>
<PRSI? ,TIME>>
<AND <VERB? WHAT-TIME>
<PRSO? ,TIME>>>
<SETG WINNER ,PROTAGONIST>
<PERFORM ,V?ASK-FOR ,PROSSER ,TIME>
<SETG WINNER ,PROSSER>
<RTRUE>)
(<AND <VERB? WHAT>
<PRSO? ,OBJECT-OF-GAME>>
<SETG WINNER ,PROTAGONIST>
<PERFORM ,V?ASK-ABOUT ,PROSSER ,PRSO>
<SETG WINNER ,PROSSER>
<RTRUE>)
(<EQUAL? ,IDENTITY-FLAG ,FORD>
<COND (<OR <AND <VERB? LIE-DOWN>
<PRSO? ,BULLDOZER>
,IN-FRONT-FLAG>
<AND <VERB? LIE-DOWN>
<PRSO? ,GROUND ,ROOMS>
<NOT ,HOUSE-DEMOLISHED>>
<AND <VERB? REPLACE>
<PRSO? ,ARTHUR>
<NOT ,HOUSE-DEMOLISHED>>>
<COND (,PROSSER-LYING
<TELL "He's already lying there!" CR>
<RTRUE>)>
<SETG PROSSER-LYING T>
<ENABLE <QUEUE I-ARTHUR -1>>
<TELL
"Prosser blinks in astonishment. \"You mean, go and lie in the mud in his
place...?\" You explain that Arthur will only move if someone else takes over
for him. Prosser shakes his head in such a manner as to suggest that he is very
weary of the world, and you tactfully forebear from mentioning that it won't be
troubling him much longer. Reluctantly, he follows you back toward Arthur.|
|
You rapidly conclude the business. Prosser lies in the mud. Arthur, bewildered,
nevertheless stands up and appears ready to follow you to the Pub." CR>)
(T
<STAND-ASIDE>
<FUCKING-CLEAR>)>)
(<AND <VERB? WHAT-ABOUT>
<PRSO? ,HOUSE ,HOME>
,HOUSE-DEMOLISHED>
<TELL
"Prosser explains the local planning regulations and says, by way of
reassurance, that you will probably be rehoused within a couple of years." CR>)
(<AND <VERB? BLOCK>
<PRSO? ,BULLDOZER>
<RUNNING? ,I-BULLDOZER>>
<V-PROTEST>)
(T
<STAND-ASIDE>
<FUCKING-CLEAR>)>)
(<AND <NOT ,GONE-AROUND>
<EQUAL? ,IDENTITY-FLAG ,FORD>
<VERB? TELL HELLO ASK-FOR ASK-ABOUT TELL-ABOUT>
<PRSO? ,PROSSER>
<NOT <IN? ,FLEET ,HERE>>>
<TELL "Prosser can't hear you from here." CR>
<FUCKING-CLEAR>)
(<VERB? GIVE SHOW>
<COND (<PRSO? ,THING>
<TELL
"He is much impressed and says, \"You must have the same aunt I have.\"" CR>)
(<PRSO? ,TOWEL>
<SETG TOWEL-MUDDY T>
<TELL
"Prosser thanks you, wipes the mud off his boots, and hands it back." CR>)
(<PRSO? ,GUIDE>
<TELL
"Prosser takes a quick look at " D ,GUIDE ", says he doesn't read that kind of
rubbish, and hands it back." CR>)
(<PRSO? ,SATCHEL>
<TELL
"Prosser says he wouldn't be seen dead with that kind of thing slung over his
shoulder." CR>)>)
(<AND <VERB? WALK-TO>
<EQUAL? ,HERE ,FRONT-OF-HOUSE>>
<COND (<AND <EQUAL? ,IDENTITY-FLAG ,FORD>
<NOT ,GONE-AROUND>>
<PERFORM ,V?WALK-AROUND ,BULLDOZER>
<RTRUE>)
(T
<TELL
"You're already as close as any reasonable person would want to get." CR>)>)
(<AND <VERB? KILL KICK>
,LYING-DOWN>
<TELL ,WHILE-LYING CR>)
(<AND <VERB? KILL>
<PRSO? ,PROSSER>
,HOUSE-DEMOLISHED>
<TELL
"You muck up all his fancy facial work. This is the last moment of
satisfaction you will experience for some time." CR>)
(<AND <VERB? KILL KICK>
<PRSO? ,PROSSER>>
<TELL
"He dodges, insisting that this is incorrect procedure." CR>)
(<AND <VERB? THROW>
<PRSI? ,PROSSER>>
<MOVE ,PRSO ,HERE>
<PERFORM ,V?KILL ,PROSSER>
<RTRUE>)
(<VERB? EXAMINE>
<PROSSER-DESCFCN>)
(<AND <VERB? LISTEN>
<NOT <FSET? ,CONVERSATION ,INVISIBLE>>>
<PERFORM ,V?LISTEN ,CONVERSATION>
<RTRUE>)
(<AND <VERB? ASK-ABOUT>
<PRSI? ,OBJECT-OF-GAME>>
<TELL
"Prosser pulls a booklet out of his back pocket. \"My game manual says that the
goal is getting this here house knocked down.\"" CR>)
(<AND <VERB? ASK-ABOUT>
<PRSI? ,DIGITAL-WATCH>>
<PERFORM ,V?ASK-FOR ,PROSSER ,TIME>
<RTRUE>)
(<AND <VERB? ASK-FOR>
<PRSI? ,TIME>>
<TELL
"Prosser shakes the " D ,DIGITAL-WATCH ". \"Hasn't worked for months. I keep
wearing it only because I think " D ,DIGITAL-WATCH "es are neat.\"" CR>)>>
<ROUTINE STAND-ASIDE ()
<COND (,PROSSER-LYING
<TELL "\"Leave me alone,\" Prosser whimpers miserably." CR>
<RTRUE>)>
<TELL "\"Please step aside as I need to be able to ">
<COND (,HOUSE-DEMOLISHED
<TELL "clear this " D ,RUBBLE " away.\"" CR>)
(T
<TELL "knock ">
<COND (<EQUAL? ,IDENTITY-FLAG ,ARTHUR>
<TELL "your">)
(T
<TELL "that">)>
<TELL " house down.\"" CR>)>>
<OBJECT DIGITAL-WATCH
(IN PROSSER)
(DESC "digital watch")
(SYNONYM WATCH WATCHE)
(ADJECTIVE DIGITA)
(FLAGS NDESCBIT TRYTAKEBIT)
(ACTION DIGITAL-WATCH-F)>
<ROUTINE DIGITAL-WATCH-F ()
<COND (<VERB? TAKE READ>
<PRIVATE "Prosser">)>>
<OBJECT TIME
(IN GLOBAL-OBJECTS)
(DESC "time")
(SYNONYM TIME)>
<OBJECT FORD
(IN LOCAL-GLOBALS) ;"just for the purpose of MOBY-FIND"
(DESC "Ford Prefect")
(DESCFCN FORD-DESCFCN)
(SYNONYM FORD PREFEC)
(ADJECTIVE FORD)
(FLAGS ACTORBIT CONTBIT SEARCHBIT OPENBIT NARTICLEBIT)
(ACTION FORD-F)>
<ROUTINE FORD-DESCFCN ("OPTIONAL" X)
<COND (,FORD-SLEEPING
<TELL "Ford is in the corner, snoring loudly." CR>)
(T
<TELL D ,FORD " is here." CR>)>>
<ROUTINE FORD-F ()
<COND (<EQUAL? ,IDENTITY-FLAG ,FORD>
<COND (<EQUAL? ,FORD ,PRSO>
<PERFORM ,PRSA ,ME ,PRSI>
<RTRUE>)
(T
<PERFORM ,PRSA ,PRSO ,ME>
<RTRUE>)>)