-
Notifications
You must be signed in to change notification settings - Fork 18
/
phobos.zil
1491 lines (1393 loc) · 45.2 KB
/
phobos.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
"PHOBOS for
LEATHER GODDESSES OF PHOBOS
(c) Copyright 1986 Infocom, Inc. All Rights Reserved."
;"NOTE: my calculations indicate that the surface gravity of Phobos is
approximately .175 cm/sec/sec, or about 1/5000th the surface gravity of Earth."
<OBJECT CELL-OBJECT
(LOC LOCAL-GLOBALS)
(DESC "cell")
(SYNONYM CELL)
(ADJECTIVE PRISON OTHER)
(ACTION CELL-OBJECT-F)>
<ROUTINE CELL-OBJECT-F ()
<COND (<VERB? ENTER BOARD WALK-TO>
<COND (<OR <ADJ-USED ,W?OTHER>
<ADJ-USED ,W?SMALL>>
<COND (<EQUAL? ,HERE ,OTHER-CELL>
<TELL ,LOOK-AROUND>)
(<EQUAL? ,HERE ,END-OF-HALLWAY>
<DO-WALK ,P?SOUTH>)
(T
<TELL ,CANT-FROM-HERE>)>)
(<EQUAL? ,HERE ,CELL>
<TELL ,LOOK-AROUND>)
(<EQUAL? ,HERE ,END-OF-HALLWAY>
<DO-WALK ,P?NORTH>)
(T
<TELL ,CANT-FROM-HERE>)>)
(<VERB? EXIT LEAVE DISEMBARK>
<COND (<OR <ADJ-USED ,W?OTHER>
<ADJ-USED ,W?SMALL>>
<COND (<EQUAL? ,HERE ,OTHER-CELL>
<DO-WALK ,P?NORTH>)
(T
<TELL ,LOOK-AROUND>)>)
(<EQUAL? ,HERE ,CELL>
<DO-WALK ,P?SOUTH>)
(<EQUAL? ,HERE ,OTHER-CELL>
<DO-WALK ,P?NORTH>)
(T
<TELL ,LOOK-AROUND>)>)
(<AND <VERB? EXAMINE>
<NOT <EQUAL? ,HERE ,END-OF-HALLWAY>>>
<V-LOOK>)
(<VERB? LOOK-INSIDE OPEN CLOSE>
<COND (<EQUAL? ,HERE ,END-OF-HALLWAY>
<COND (<OR <ADJ-USED ,W?OTHER>
<ADJ-USED ,W?SMALL>>
<PERFORM-PRSA ,NARROW-CELL-DOOR>)
(T
<PERFORM-PRSA ,WIDE-CELL-DOOR>)>)
(<VERB? LOOK-INSIDE>
<V-LOOK>)
(<EQUAL? ,HERE ,CELL>
<PERFORM-PRSA ,WIDE-CELL-DOOR>)
(T
<PERFORM-PRSA ,NARROW-CELL-DOOR>)>
<RTRUE>)
(<AND <VERB? PUT>
<PRSI? ,CELL-OBJECT>>
<COND (<EQUAL? ,HERE ,END-OF-HALLWAY>
<TELL ,CANT-FROM-HERE>)
(T
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)>)
(<AND <NOT <EQUAL? ,HERE ,END-OF-HALLWAY>>
<PRSO? ,CELL-OBJECT>>
<PERFORM-PRSA ,GLOBAL-ROOM ,PRSI>
<RTRUE>)>>
<ROOM CELL
(LOC ROOMS)
(DESC "Cell")
(SOUTH TO END-OF-HALLWAY IF WIDE-CELL-DOOR IS OPEN)
(OUT TO END-OF-HALLWAY IF WIDE-CELL-DOOR IS OPEN)
(UP PER HOLE-ENTER-F)
(FLAGS ONBIT RLANDBIT INDOORSBIT)
(GLOBAL WIDE-CELL-DOOR HOLE CELL-OBJECT)
(HOLE-DESTINATION MAIN-HALL-OF-PALACE)
(ACTION CELL-F)>
<ROUTINE CELL-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"You are in a large cell with a soft, cushiony floor. A wide door (">
<COND (<FSET? ,WIDE-CELL-DOOR ,OPENBIT>
<TELL "now open">)
(<FSET? ,WIDE-CELL-DOOR ,TOUCHBIT>
<TELL "now closed">)
(T
<TELL "closed, naturally">)>
<TELL ") forms the southern wall of the cell">
<COND (,HOLE-OPEN
<TELL
". A " D ,HOLE " is lying on the ground amidst some rubble">)>
<TELL ".">)
(<AND <EQUAL? .RARG ,M-END>
<NOT ,TRAY-DELIVERED>>
<SETG TRAY-DELIVERED T>
<MOVE ,TRAY ,HERE>
<TELL
" Someone thrusts a tray into your cell. A " D ,CHOCOLATE " on the tray"
,LOOKS-UNAPPETIZING>)
(<AND <EQUAL? .RARG ,M-END>
<IN? ,SIDEKICK ,HERE>
<NOT ,CELL-GRIPE>>
<SETG CELL-GRIPE T>
<TELL
" \"What a great cell!\" says " D ,SIDEKICK ", looking around. \"Why
didn't I get a cell like this? Maybe I shouldn't have kicked that guard ">
<COND (<EQUAL? ,NAUGHTY-LEVEL 1>
<TELL "below the waist ">)
(<EQUAL? ,NAUGHTY-LEVEL 2>
<TELL "in the nuts ">)>
<TELL "when I first got here...\"" CR>)>>
<ROUTINE HOLE-ENTER-F ()
<COND (,HOLE-OPEN
<TELL ,YOU-CANT "reach the hole in the ceiling." CR>)
(T
<TELL ,CANT-GO>)>
<RFALSE>>
<GLOBAL CELL-GRIPE <>>
<GLOBAL TRAY-DELIVERED <>>
<OBJECT BLANKET
(LOC CELL)
(DESC "blanket")
(NO-T-DESC "blanke")
(SYNONYM BLANKET)
(FLAGS TAKEBIT BURNBIT)
(ACTION BLANKET-F)>
<ROUTINE BLANKET-F ()
<COND (<FSET? ,BLANKET ,UNTEEDBIT>
<RFALSE>)
(<VERB? MEASURE>
<TELL "Small." CR>)
(<OR <VERB? WEAR>
<AND <VERB? WRAP>
<PRSI? ,ME>>>
<TELL
"It's too small; your jailors must have meant it to be used as a pillow." CR>)
(<VERB? BOARD>
<WASTES>)
(<VERB? TIE>
<TELL "The material of the blanket is too thick to knot." CR>)
(<AND <VERB? REMOVE TAKE>
<IN? ,BLANKET ,BABY>>
<PERFORM ,V?REMOVE ,BABY>
<RTRUE>)
(<AND <VERB? PUT>
<PRSI? ,BASKET>>
<COND (<IN? ,BLANKET ,BABY>
<PERFORM-PRSA ,BABY ,BASKET>
<RTRUE>)
(<IN? ,BABY ,BASKET>
<MOVE ,BLANKET ,BASKET>
<MOVE ,BABY ,PROTAGONIST>
<PERFORM-PRSA ,BABY ,BASKET>
<RTRUE>)>)
(<AND <VERB? DROP PUT THROW>
<PRSO? ,BLANKET>
<IN? ,BLANKET ,BABY>>
<DO-FIRST "unwrap the baby">)
(<AND <VERB? LOOK-INSIDE>
<IN? ,BLANKET ,BABY>>
<PERFORM ,V?ALARM ,BABY>
<RTRUE>)
(<AND <VERB? PUT-ON>
<PRSO? ,BLANKET>
<NOT <FSET? ,PRSI ,SURFACEBIT>>>
<WASTES>)>>
<OBJECT PAINTING
(LOC CELL)
(DESC "painting")
(FDESC "Hanging on the wall is a painting of a pussy cat.")
(NO-T-DESC "paining")
(SYNONYM PAINTING PICTURE CAT PAINING)
(ADJECTIVE PUSSY ART)
(FLAGS TAKEBIT BURNBIT)
(ACTION PAINTING-F)>
<ROUTINE PAINTING-F ()
<COND (<AND <VERB? EXAMINE>
<NOT <FSET? ,PAINTING ,UNTEEDBIT>>>
<SETG AWAITING-REPLY 2>
<QUEUE I-REPLY 2>
<TELL "It's a good likeness of a pussy, but is it art?" CR>)>>
<OBJECT TRAY
(DESC "tray")
(NO-T-DESC "ray")
(SYNONYM TRAY RAY)
(FLAGS TAKEBIT SURFACEBIT CONTBIT OPENBIT SEARCHBIT)
(CAPACITY 20)
(ACTION TRAY-F)>
<ROUTINE TRAY-F ()
<COND (<AND <VERB? EXAMINE>
<FSET? ,TRAY ,UNTEEDBIT>>
<TELL
"It looks a little like Ray whatsisname from second grade." CR>)>>
<OBJECT CHOCOLATE
(LOC TRAY)
(SDESC "hunk of brown food")
(NO-T-DESC "hunk of chocolae")
(SYNONYM FOOD HUNK CHOCOLATE CANDY)
(ADJECTIVE BROWN LUSCIOUS MILK CREAMY)
(FLAGS TAKEBIT)
(ACTION CHOCOLATE-F)>
<GLOBAL CHOCOLATE-IDENTIFIED <>>
<GLOBAL SUGAR-RUSH <>>
<CONSTANT HUMAN-ATE-CHOCOLATE 1>
<CONSTANT GORILLA-ATE-CHOCOLATE 2>
<ROUTINE CHOCOLATE-F ()
<COND (<FSET? ,CHOCOLATE ,UNTEEDBIT>
<RFALSE>)
(<VERB? EAT>
<COND (<NOT <ULTIMATELY-IN? ,CHOCOLATE>>
<TELL ,YNH " it!" CR>
<RTRUE>)>
<REMOVE ,CHOCOLATE>
<QUEUE I-UNRUSH 6>
<COND (,GONE-APE
<SETG SUGAR-RUSH ,GORILLA-ATE-CHOCOLATE>)
(T
<SETG SUGAR-RUSH ,HUMAN-ATE-CHOCOLATE>)>
<TELL "Mmmm! ">
<COND (,CHOCOLATE-IDENTIFIED
<TELL "G">)
(T
<TELL "It's a piece of really g">)>
<TELL
"ood chocolate! You feel yourself getting a sugar rush." CR>)
(<VERB? EXAMINE>
<TELL "The " D ,CHOCOLATE ,LOOKS-UNAPPETIZING>)
(<VERB? TASTE>
<SETG CHOCOLATE-IDENTIFIED T>
<PUTP ,CHOCOLATE ,P?SDESC "hunk of chocolate">
<RFALSE> ;"It tastes just like...")
(<AND <VERB? SMELL>
<NOT <FSET? ,CHOCOLATE ,SMELLEDBIT>>>
<SETG CHOCOLATE-IDENTIFIED T>
<FSET ,CHOCOLATE ,SMELLEDBIT>
<PUTP ,CHOCOLATE ,P?SDESC "hunk of chocolate">
<SCRATCH-N-SNIFF 2>
<TELL "Luscious, creamy milk chocolate!" CR>)>>
<ROUTINE I-UNRUSH ()
<COND (<OR <AND ,GONE-APE
<EQUAL? ,SUGAR-RUSH ,GORILLA-ATE-CHOCOLATE>>
<AND <NOT ,GONE-APE>
<EQUAL? ,SUGAR-RUSH ,HUMAN-ATE-CHOCOLATE>>>
<SETG SUGAR-RUSH <>>
<TELL " You feel the sugar rush ebb." CR>)
(T
<SETG SUGAR-RUSH <>>
<RFALSE>)>>
<OBJECT WIDE-CELL-DOOR
(LOC LOCAL-GLOBALS)
(DESC "wide cell door")
(SYNONYM DOOR)
(ADJECTIVE NORTH WIDE CELL)
(FLAGS DOORBIT)>
<ROOM OTHER-CELL
(LOC ROOMS)
(DESC "Other Cell")
(NORTH TO END-OF-HALLWAY IF NARROW-CELL-DOOR IS OPEN)
(OUT TO END-OF-HALLWAY IF NARROW-CELL-DOOR IS OPEN)
(FLAGS RLANDBIT ONBIT INDOORSBIT)
(GLOBAL NARROW-CELL-DOOR CELL-OBJECT)
(ACTION OTHER-CELL-F)>
<ROUTINE OTHER-CELL-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT <FSET? ,OTHER-CELL ,TOUCHBIT>>>
<THIS-IS-IT ,SIDEKICK>
<QUEUE I-BLUEPRINT 19>
<COND (<EQUAL? ,VERBOSITY 0>
<RFALSE>)>
<TELL "As you enter, a ">
<COND (<NOT ,MALE>
<TELL "wo">)>
<TELL
"man sitting limply in the shadows stiffens and rises to ">
<HIS-HER>
<TELL
" feet. \"A human! They got you too? I've been here a week. When you opened the
door, I figured it was a guard! Was it unlocked? I never thought of trying it.
By the way, my name's " D ,SIDEKICK ". From Alaska. I'm not too bright, but I'm
strong as an ox, and I'm great with my hands. Maybe we can lick these Leather
Goddesses together.\"" CR CR>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"You are in a very tiny room with a rock-hard floor. A " 'NARROW-CELL-DOOR
" to the north is ">
<OPEN-CLOSED ,NARROW-CELL-DOOR>
<TELL ".">)>>
<OBJECT NARROW-CELL-DOOR
(LOC LOCAL-GLOBALS)
(DESC "narrow cell door")
(SYNONYM DOOR)
(ADJECTIVE SOUTH NARROW CELL)
(FLAGS DOORBIT)
(ACTION NARROW-CELL-DOOR-F)>
<ROUTINE NARROW-CELL-DOOR-F ()
<COND (<AND <VERB? KNOCK>
<IN? ,SIDEKICK ,OTHER-CELL>>
<TELL
"A muffled voice responds, \"Beat it, you alien fruitcake freako
mutant weirdo scum!\"" CR>)>>
<OBJECT SIDEKICK
(LOC OTHER-CELL)
(SDESC "")
(DESCFCN SIDEKICK-F)
(SYNONYM TIFFANY TIFF TRENT BODY)
(ADJECTIVE TRENT\'S TIFFANY\'S TIFF\'S)
(FLAGS NARTICLEBIT ACTORBIT CONTBIT OPENBIT SEARCHBIT)
(GENERIC GENERIC-SIDEKICK-F)
(ACTION SIDEKICK-F)>
<ROUTINE SIDEKICK-F ("OPTIONAL" (OARG <>))
<COND (.OARG
<COND (<EQUAL? .OARG ,M-OBJDESC?>
<RTRUE>)>
<TELL " " D ,SIDEKICK " is here, ">
<SIDEKICK-DESC>
<TELL ".">)
(<EQUAL? ,SIDEKICK ,WINNER>
<COND (<VERB? WHAT>
<PERFORM ,V?TELL-ABOUT ,ME ,PRSO>
<RTRUE>)
(<AND <VERB? READ>
<PRSO? ,SCRAP-OF-PAPER>>
<PERFORM ,V?TELL-ABOUT ,ME ,SCRAP-OF-PAPER>
<RTRUE>)
(<AND <VERB? TELL-ABOUT>
<PRSO? ,ME>>
<COND (<AND <PRSI? ,ODD-MACHINE>
<NOT <IN? ,ODD-MACHINE ,SALESMAN>>>
<TELL
"\"Hmmm, tee remover. For cleaning up golf courses?\"" CR>)
(<PRSI? ,SCRAP-OF-PAPER>
<TELL
"\"I dunno what it means; I doodled it one night in my sleep!\"" CR>)
(<AND <PRSI? ,MATCHBOOK>
<NOT <QUEUED? ,I-BLUEPRINT>>>
<SCRAPE-UP-THESE-ITEMS>)
(<PRSI? ,LGOP>
<TELL
"\"No doubt some gang of interplanetary floozies who get their jollies
from enslaving defenseless planets. We'll stop 'em!\"" CR>)
(T
<TELL
D ,SIDEKICK " shrugs. \"What do I know? I'm from Alaska,\" ">
<HE-SHE>
<TELL
" says, in a burst of insecurity that will no doubt ease in a quarter century
or so when Alaska becomes a state." CR>)>)
(<VERB? WALK>
<TELL "\"After you!\"" CR>)
(<AND <VERB? FOLLOW>
<PRSO? ,ME>>
<TELL "\"Lead on!\"" CR>)
(<VERB? HELLO>
<TELL "\"Hi!\"" CR>)
(<AND <VERB? DISEMBARK ENTER EXIT>
<PRSO? ,WINDOW>
<EQUAL? ,HERE ,BEDROOM>>
<COND (,SIDEKICK-TRIP-FLAG
<TELL "\"Not again!\"" CR>)
(<QUEUED? ,I-SIDEKICK-OUT-WINDOW>
<TELL "\"Gimme a second to get ready!\"" CR>)
(T
<TELL "\"I'm dumb, but not that dumb!\"" CR>)>)
(<AND <VERB? KISS>
<PRSO? ,FROG>>
<TELL "\"I'd sooner kiss a pig!\"" CR>)
(<AND <VERB? RAISE>
<PRSO? ,ME>
<EQUAL? <LOC ,PROTAGONIST> ,TREE-HOLE ,CLOSET>>
<SETG WINNER ,PROTAGONIST>
<PERFORM ,V?CLIMB-ON ,SIDEKICK>
<SETG WINNER ,SIDEKICK>
<RTRUE>)
(<AND <VERB? TAKE>
<PRSO? ,HEADLIGHT>
<FSET? ,HEADLIGHT ,TRYTAKEBIT>>
<SETG WINNER ,PROTAGONIST>
<PERFORM ,V?SHOW ,HEADLIGHT ,SIDEKICK>
<SETG WINNER ,SIDEKICK>
<RTRUE>)
(<AND <VERB? GIVE>
<PRSI? ,ME>>
<SETG WINNER ,PROTAGONIST>
<PERFORM ,V?ASK-FOR ,SIDEKICK ,PRSO>
<SETG WINNER ,SIDEKICK>
<RTRUE>)
(<VERB? SGIVE>
<RFALSE>)
(<AND <VERB? MAKE>
<PRSO? ,ANTI-LGOP-MACHINE>>
<TELL "\"Don't crowd me.\"" CR>)
(T
<TELL D ,SIDEKICK " is ">
<SIDEKICK-DESC>
<TELL " and fails to notice that you've spoken." CR>
<STOP>)>)
(<WRONG-SEX-WORD ,SIDEKICK ,W?TRENT ,W?TIFFANY>
<STOP>)
(<WRONG-SEX-WORD ,SIDEKICK ,W?TRENT ,W?TIFF>
<STOP>)
(<VERB? EXAMINE>
<TELL D ,SIDEKICK " is about your age">
<COND (<NOT <EQUAL? ,NAUGHTY-LEVEL 0>>
<TELL
" and has a body worthy of envy: tall and well-built, with wide shoulders, ">
<COND (,MALE
<TELL "massive pectorals, and thick">)
(T
<TELL "a generous bosom, slim waist, and long">)>
<TELL
", tawny legs. The only minus seems to be slightly oversized feet, but even
oversized feet are a plus if you're into toe-sucking">)>
<TELL ".">
<COND (<FIRST? ,SIDEKICK>
<TELL " ">
<RFALSE>)
(T
<CRLF>)>)
(<AND <VERB? ASK-FOR>
<PRSO? ,SIDEKICK>>
<COND (<ULTIMATELY-IN? ,PRSI ,SIDEKICK>
<MOVE ,PRSI ,PROTAGONIST>
<TELL "\"What's mine is yours!\"" CR>)
(T
<TELL "\"I haven't got" A ,PRSI "!\"" CR>)>)
(<VERB? FOLLOW>
<COND (<EQUAL? ,FOLLOW-FLAG 1>
<PERFORM ,V?CLIMB-DOWN ,SHEET>
<RTRUE>)
(<EQUAL? ,FOLLOW-FLAG 2>
<TELL ,DONT-WANT-TO>)
(<EQUAL? ,FOLLOW-FLAG 3>
<PERFORM ,V?ENTER ,CANAL-OBJECT>
<RTRUE>)>)
(<VERB? UNTIE>
<PERFORM-PRSA ,SIDEKICKS-BODY>
<RTRUE>)
(<AND <VERB? TIE>
<PRSI? ,FIRST-SLAB ,SECOND-SLAB>>
<PERFORM-PRSA ,SIDEKICKS-BODY>
<RTRUE>)
(<VERB? CLIMB-ON BOARD STAND-ON>
<COND (<OR <IN? ,PROTAGONIST ,TREE-HOLE>
<AND <EQUAL? ,HERE ,CLOSET>
<FIRST? ,SHELF>>>
<TELL "Using " D ,SIDEKICK "'s shoulders, you ">
<COND (<IN? ,PROTAGONIST ,TREE-HOLE>
<MOVE ,PROTAGONIST ,HERE>
<MOVE ,SIDEKICK ,HERE>
<SETG OHERE <>>
<TELL
"climb out of the hole and help " D ,SIDEKICK " out">)
(T
<ROB ,SHELF ,PROTAGONIST>
<TELL "get everything from the shelf">)>
<TELL ,PERIOD-CR>)
(T
<WASTES>)>)
(<AND <VERB? PUSH>
<PRSI? ,TREE-HOLE>>
<TELL D ,SIDEKICK
" grabs wildly at you, pulling both of you into the hole">
<COND (<FSET? ,TRELLIS ,MUNGBIT>
<COND (,LEAVES-PLACED
<MOVE ,LEAVES ,TREE-HOLE>)>
<REMOVE ,TRELLIS>
<UNDO-TRAP>
<TELL " with a crash of splintering wood">)>
<TELL ". ">
<COND (<IN? ,FLYTRAP ,TREE-HOLE>
<PERFORM ,V?ENTER ,TREE-HOLE>
<RTRUE>)
(T
<MOVE ,PROTAGONIST ,TREE-HOLE>
<MOVE ,SIDEKICK ,TREE-HOLE>
<SETG OHERE <>>
<COND (<IN? ,TRELLIS ,PROTAGONIST>
<MOVE ,TRELLIS ,HERE>)>
<TELL
"\"Brilliant move, bozo,\" says " D ,SIDEKICK ,PERIOD-CR>)>)
(<AND <VERB? GIVE>
<EQUAL? ,HERE ,PLAZA>>
<COND (<AND <PRSO? <GET ,PARTS-LIST <- ,PLAZA-COUNTER 1>>>
<NOT <FSET? ,PRSO ,UNTEEDBIT>>>
<REMOVE ,PRSO>
<SETG RIGHT-PART T>
<TELL
D ,SIDEKICK " grabs" T ,PRSO " and quickly incorporates it into ">
<HIS-HER>
<TELL " contraption." CR>)
(T
<TELL
D ,SIDEKICK " gives" T ,PRSO " the barest glance. \"No good! It has to be a">
<PRINT-PART>
<TELL "!\"" CR>)>
<RFATAL>)
(<AND <VERB? GIVE>
<INTBL? ,PRSO ,PARTS-LIST 8>
<NOT <FSET? ,PRSO ,UNTEEDBIT>>>
<EAGERLY-ACCEPTS>
<TELL ,PERIOD-CR>)
(<VERB? SHOW>
<COND (<AND <PRSO? ,HEADLIGHT>
<FSET? ,HEADLIGHT ,TRYTAKEBIT>>
<TELL "\"Can't reach it from here!\"" CR>)
(<PRSO? ,SCRAP-OF-PAPER>
<PERFORM ,V?ASK-ABOUT ,SIDEKICK ,SCRAP-OF-PAPER>
<RTRUE>)
(<AND <INTBL? ,PRSO ,PARTS-LIST 8>
<NOT <FSET? ,PRSO ,UNTEEDBIT>>>
<TELL
"\"Hey, wow!\" says " D ,SIDEKICK ", clearly impressed by your discovery
of" TR ,PRSO>)>)>>
<ROUTINE SIDEKICK-DESC ()
<COND (<G? ,PLAZA-COUNTER 0>
<TELL "busy with" T ,ANTI-LGOP-MACHINE>)
(<EQUAL? ,HERE ,BOUDOIR>
<TELL "lying on another couch">)
(<PROB 33>
<TELL "alertly surveying your surroundings">)
(<AND <PROB 50>
<NOT ,SIDEKICKS-BODY-TIED-TO-SLAB>>
<TELL "doing some quick limbering exercises">)
(T
<TELL "counting on ">
<HIS-HER>
<TELL " fingers and mumbling to ">
<HIM-HER>
<TELL "self">)>>
<ROUTINE GENERIC-SIDEKICK-F ()
<COND (<OR <EQUAL? <GET ,P-NAMW 0> ,W?BODY>
<EQUAL? <GET ,P-NAMW 1> ,W?BODY>>
;"confusion is between 2 bodies in Lab"
<RFALSE>)
(T
<RETURN ,SIDEKICK>)>>
<GLOBAL SIDEKICK-EXPLODED 0> ;"1 = blown up, 2 = reconstituted"
<GLOBAL SIDEKICK-TRIP-FLAG <>>
<GLOBAL SIDEKICK-DROWNED <>>
<GLOBAL SIDEKICK-EATEN <>>
<ROUTINE MEMORIAM ()
<TELL
", " 'EYES " fill with tears. You hang " 'HEAD " in sorrow for a moment to
honor your brave, loyal companion who gave ">
<HIS-HER>
<TELL
" life that humanity might be safe from the terrible scourge of "
'LGOP ,PERIOD-CR>>
<OBJECT SCRAP-OF-PAPER
(LOC OTHER-CELL)
(DESC "scrap of paper")
(FDESC
"A crumpled paper lies discarded in the corner. There seems to be some
writing on it.")
(SYNONYM SCRAP PAPER)
(ADJECTIVE DISCARDED CRUMPLED)
(FLAGS TAKEBIT BURNBIT READBIT)
(SIZE 2)
(ACTION SCRAP-OF-PAPER-F)>
<ROUTINE SCRAP-OF-PAPER-F ()
<COND (<VERB? READ>
<TELL
"There's a seemingly meaningless matrix of letters on the paper:" CR>
<PUT 0 8 <BOR <GET 0 8> 2>> ;"turns on fixed spacing for Mac"
<TELL
;"after removing all the letters from all the words on the parts list, the
remaining letters spell HISSING FRIGHTENS FLY TRAPS"
" HESOHREBBUR|
ILSSSIPNGEF|
RGIUGHTHDEN|
SNKOOBENOHP|
FALYTMERATP|
SHEADLIGHTO|
SLLABNOTTOC|">
<PUT 0 8 <BAND <GET 0 8> -3>> ;"turns off fixed spacing"
<RTRUE>)>>
<GLOBAL HOLE-OPEN <>>
<ROOM CRAMPED-SPACE
(LOC ROOMS)
(DESC "Cramped Space")
(DOWN TO CELL IF HOLE-OPEN)
(FLAGS INDOORSBIT)
(ACTION CRAMPED-SPACE-F)
;(THINGS <PSEUDO (<> HOLE CRAMPED-SPACE-HOLE-F)>)>
<OBJECT CRAMPED-SPACE-HOLE
(LOC CRAMPED-SPACE)
(DESC "hole")
(SYNONYM HOLE)
(FLAGS NDESCBIT)
(ACTION CRAMPED-SPACE-HOLE-F)>
<ROUTINE CRAMPED-SPACE-F (RARG)
<COND (<AND <EQUAL? .RARG ,M-ENTER>
<NOT ,HOLE-OPEN>>
<QUEUE I-CRAMPED-SPACE 2>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"You are in a dark space, too tiny to move around in. The">
<COND (,HOLE-OPEN
<TELL " only exit is a hole in the floor.">)
(T
<TELL "re are no visible exits.">)>)>>
<ROUTINE I-CRAMPED-SPACE ()
<TELL " Suddenly, part of the floor collapses, and you">
<AND-SIDEKICK>
<TELL " tumble through the resulting hole" ,ELLIPSIS>
<GOTO ,CELL T>
<COND (<IN? ,SIDEKICK ,CRAMPED-SPACE>
<MOVE ,SIDEKICK ,HERE>)>
<SETG HOLE-OPEN T>
<FCLEAR ,CRAMPED-SPACE ,TOUCHBIT>
<TELL
" Among the new rubble, you notice" A ,HOLE ", attached to a piece
of (what used to be) the floor of the cramped space." CR>
<CELL-F ,M-END>
<RTRUE>>
<ROUTINE CRAMPED-SPACE-HOLE-F ()
<COND (<NOT ,HOLE-OPEN>
<CANT-SEE ,CRAMPED-SPACE-HOLE>)
(<VERB? CLIMB-DOWN STAND-ON ENTER BOARD>
<DO-WALK ,P?DOWN>)>>
<ROOM END-OF-HALLWAY
(LOC ROOMS)
(DESC "End of Hallway")
(WEST PER EXAMINATION-ROOM-F)
(EAST PER OTHER-END-OF-HALLWAY-F)
(NORTH TO CELL IF WIDE-CELL-DOOR IS OPEN)
(SOUTH TO OTHER-CELL IF NARROW-CELL-DOOR IS OPEN)
(UP TO OBSERVATION-ROOM)
(DOWN TO BASEMENT)
(FLAGS RLANDBIT ONBIT INDOORSBIT)
(GLOBAL SIGN WIDE-CELL-DOOR NARROW-CELL-DOOR EXAM-ROOM-DOOR
CELL-OBJECT STAIRS)
(ACTION END-OF-HALLWAY-F)>
<ROUTINE END-OF-HALLWAY-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL "A " 'WIDE-CELL-DOOR " lies ">
<OPEN-CLOSED ,WIDE-CELL-DOOR>
<TELL " to the north, and" A ,NARROW-CELL-DOOR " lies ">
<OPEN-CLOSED ,NARROW-CELL-DOOR>
<TELL
" to the south. The hallway ends at a gleaming " 'EXAM-ROOM-DOOR " to the west,
and continues east. Something, possibly this very sentence, tells you that it
would be dangerous to travel east or west" ,SIGN-AND-STAIRS>)>>
<OBJECT EXAM-ROOM-DOOR
(LOC LOCAL-GLOBALS)
(DESC "metal door")
(SYNONYM DOOR)
(ADJECTIVE WEST GLEAMING METAL)
(FLAGS NDESCBIT DOORBIT)>
<GLOBAL SEEN-EXAMINATION-ROOM <>>
<ROUTINE EXAMINATION-ROOM-DESC ("OPTIONAL" (VIEWING <>))
<TELL "A number of hideous experiments fill th">
<COND (.VIEWING
<TELL "e">)
(T
<TELL "is">)>
<TELL " room. Their obvious purpose: studies of the human anatomy">
<COND (<NOT <EQUAL? ,NAUGHTY-LEVEL 1>>
<TELL
", especially those parts rarely referred to in the New York Times">)>
<TELL
". A pathetic-looking human is the current subject; however, even an author as
fond of lascivious detail as this one would hesitate to describe it ">
<COND (<EQUAL? ,NAUGHTY-LEVEL 2>
<TELL
"even in LEWD mode, except to mention that it involves a lot of lubricants,
some plastic tubing, and a yak." CR>)
(T
<TELL "to someone who's merely in ">
<COND (<EQUAL? ,NAUGHTY-LEVEL 0>
<TELL "TAME">)
(T
<TELL "SUGGESTIVE">)>
<TELL " mode." CR>)>>
<ROUTINE EXAMINATION-ROOM-F ()
<COND (<FSET? ,EXAM-ROOM-DOOR ,OPENBIT>
<TELL "\"Examination\" Room| ">
<COND (,SEEN-EXAMINATION-ROOM
<TELL
"The experiments look even more horrible from here than from
the Observation Room window." CR>)
(T
<EXAMINATION-ROOM-DESC>)>
<TELL
" Before you've really gotten as sick as you know you could get, one of the">
<LECKBANDI>)
(T
<THIS-IS-IT ,EXAM-ROOM-DOOR>
<DO-FIRST "open" ,EXAM-ROOM-DOOR>
<RFALSE>)>>
<ROUTINE OTHER-END-OF-HALLWAY-F ()
<TELL
"Other End of Hallway|
Before you can even begin to wonder what happened to the middle of the
hallway, a guard patrol erupts from the shadows. A">
<LECKBANDI>>
<ROUTINE LECKBANDI ()
<JIGS-UP
" tall, neatly dressed Leckbandi tucks you under its arm. (The Leckbandi, who
evolved in the asteroid belt, all work exclusively as security guards. This
is odd, since there's not a single thing in the entire asteroid belt worth
stealing.)|
Consulting a wrist computer, the Leckbandi punches in notable features of
your appearance: size, number of heads, lack of feathers, and so forth.
Eventually, the tiny screen flashes: \"IDENTIFICATION COMPLETED: Prisoner,
human, escaped. DISPOSITION: Death, painful, immediate.\" The Leckbandi, who,
like all Leckbandis, prides itself on its ability to follow the orders of
wrist computers, immediately and painfully kills you.">>
<ROOM BASEMENT
(LOC ROOMS)
(DESC "Basement")
(LDESC
"This is a moist cellar. Soft light trickles down the stairway.")
(UP TO END-OF-HALLWAY)
(OUT TO END-OF-HALLWAY)
(FLAGS ONBIT RLANDBIT INDOORSBIT)
(GLOBAL STAIRS LIGHT)
;(THINGS <PSEUDO (<> LIGHT UNIMPORTANT-THING-F)>)>
<OBJECT LIGHT
(LOC LOCAL-GLOBALS)
(DESC "light")
(SYNONYM LIGHT)
(ADJECTIVE SOFT)
(FLAGS NDESCBIT TRANSBIT)
(ACTION UNIMPORTANT-THING-F)>
<ROOM OBSERVATION-ROOM
(LOC ROOMS)
(DESC "Observation Room")
(NORTH TO CLOSET)
(WEST SORRY
"You discover that the window makes a pleasant \"boing\" noise
when a human nose is pushed into it at approximately walking speed.")
(IN TO CLOSET)
(DOWN TO END-OF-HALLWAY)
(UP TO ROOF)
(FLAGS ONBIT RLANDBIT INDOORSBIT)
(GLOBAL WINDOW SIGN STAIRS CLOSET-OBJECT)
(ACTION OBSERVATION-ROOM-F)
;(THINGS <PSEUDO (SMALL CLOSET CLOSET-OBJECT-F)>)>
<OBJECT CLOSET-OBJECT
(LOC LOCAL-GLOBALS)
(DESC "small closet")
(SYNONYM CLOSET)
(ADJECTIVE SMALL)
(FLAGS NDESCBIT)
(ACTION CLOSET-OBJECT-F)>
<ROUTINE OBSERVATION-ROOM-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Calvin Coolidge once described windows as \"rectangles of glass.\" If so,
he may have been thinking about the window which fills the western wall of
this room. A tiny closet lies to the north" ,SIGN-AND-STAIRS>)>>
<ROOM CLOSET
(LOC ROOMS)
(DESC "Closet")
(SOUTH PER CLOSET-EXIT-F)
(OUT PER CLOSET-EXIT-F)
(FLAGS RLANDBIT INDOORSBIT)
(GLOBAL HOLE ODOR CLOSET-OBJECT)
(HOLE-DESTINATION JUNGLE)
(ODOR "mothballs")
(ODOR-NUMBER 3)
(ACTION CLOSET-F)
;(THINGS <PSEUDO (SMALL CLOSET CLOSET-OBJECT-F)>)>
<ROUTINE CLOSET-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"This room is barely large enough to turn around in. Just to prove
it, you turn around. As you do, you spot" A ,HOLE ", about two feet across,
seemingly painted on the floor in the corner. A shelf protrudes from one
wall, very close to the ceiling. The closet is open to the south.">
<COND (<NOT <FSET? ,NOSE ,MUNGBIT>>
<TELL " A strong odor ">
<COND (<FSET? ,HERE ,SMELLEDBIT>
<TELL "of " 'MOTHBALLS " ">)>
<TELL "pervades the closet.">)>
<RTRUE>)
(<EQUAL? .RARG ,M-SMELL>
<TELL
"Apparently this section of Phobos has a significant moth problem.">)>>
<ROUTINE CLOSET-EXIT-F ()
<TELL "Ah! Coming out of the closet, I see" ,ELLIPSIS>
,OBSERVATION-ROOM>
<ROUTINE CLOSET-OBJECT-F ()
<COND (<VERB? ENTER WALK-TO BOARD>
<COND (<EQUAL? ,HERE ,CLOSET>
<TELL ,LOOK-AROUND>)
(<EQUAL? ,HERE ,OBSERVATION-ROOM>
<DO-WALK ,P?NORTH>)>)
(<VERB? EXIT LEAVE DISEMBARK>
<COND (<EQUAL? ,HERE ,CLOSET>
<DO-WALK ,P?SOUTH>)
(T
<TELL ,LOOK-AROUND>)>)
(<VERB? OPEN CLOSE>
<TELL "No door." CR>)
(<AND <VERB? SMELL>
<EQUAL? ,HERE ,CLOSET>>
<PERFORM-PRSA ,ODOR>
<RTRUE>)
(<VERB? SEARCH>
<TELL ,NOTHING-NEW>)
(<VERB? LOOK-INSIDE>
<COND (<EQUAL? ,HERE ,CLOSET>
<V-LOOK>)
(T
<TELL ,ONLY-BLACKNESS>)>)>>
<OBJECT SHELF
(LOC CLOSET)
(DESC "shelf")
(SYNONYM SHELF LEDGE)
(FLAGS SURFACEBIT SEARCHBIT CONTBIT OPENBIT NDESCBIT)
(CAPACITY 40)
(ACTION SHELF-F)>
<ROUTINE SHELF-F ()
<COND (<AND <VERB? PUT-ON PUT>
<PRSI? ,SHELF>
<NOT <IN? ,PROTAGONIST ,STOOL>>>
<CANT-REACH ,SHELF>)>>
<OBJECT BASKET
(LOC SHELF)
(DESC "wicker basket")
(NO-T-DESC "wicker baske")
(SYNONYM BASKET BASKE)
(ADJECTIVE WICKER)
(CAPACITY 40) ;"shouldn't be able to hold more than baby and blanket"
(FLAGS CONTBIT SEARCHBIT OPENBIT TAKEBIT BURNBIT)
(ACTION BASKET-F)>
<ROUTINE BASKET-F ()
<COND (<FSET? ,BASKET ,UNTEEDBIT>
<RFALSE>)
(<VERB? EXAMINE>
<TELL
"The basket is oval-shaped. A handle spans the narrow part." CR>)
(<VERB? MEASURE>
<TELL "The basket is about fifteen by thirty inches." CR>)
(<VERB? CLOSE>
<NO-LID>)
(<AND <VERB? PUT PUT-NEAR> ;"for PUT BASKET IN FRONT OF DOOR"
<PRSI? ,ORPHANAGE-DOOR>>
<PERFORM ,V?PUT-ON ,BASKET ,FRONT-STOOP>
<RTRUE>)
(<TAKE-BABY-FROM-STOOP ,BASKET>
<RTRUE>)>>
<ROUTINE TAKE-BABY-FROM-STOOP (OBJ)
<COND (<AND <VERB? TAKE>
<PRSO? .OBJ>
<QUEUED? ,I-ORPHANAGE>
<L? <CCOUNT ,PROTAGONIST> 11>>
<DEQUEUE I-ORPHANAGE>
<RFALSE>)>>
<OBJECT MOTHBALLS
(LOC CLOSET)
(DESC "mothballs")
(SYNONYM MOTHBALL MOTHBALLS BALL BALLS)
(ADJECTIVE MOTH)
(FLAGS NARTICLEBIT NDESCBIT)
(ACTION MOTHBALLS-F)>
<ROUTINE MOTHBALLS-F ()
<COND (<EQUAL? ,HERE ,CLOSET>
<TELL
,YOU-CANT-SEE-ANY 'MOTHBALLS " here. It must be some imitation mothball air
mist." CR>)>>
<ROOM ROOF
(LOC ROOMS)
(DESC "Roof")
(DOWN TO OBSERVATION-ROOM)
(IN TO OBSERVATION-ROOM)
(FLAGS RLANDBIT ONBIT)
(GLOBAL STAIRS HOLE)
(HOLE-DESTINATION MARTIAN-DESERT)
(ACTION ROOF-F)
;(THINGS <PSEUDO (<> ROOF ROOF-OBJECT-F)>)>
<OBJECT ROOF-OBJECT
(LOC ROOF)
(DESC "roof")
(SYNONYM ROOF)
(FLAGS NDESCBIT)
(ACTION ROOF-OBJECT-F)>
<ROUTINE ROOF-F (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Your view extends to the horizon, which on tiny Phobos usually means a few
hundred feet. Thrusting up into sight beyond the horizon are"
,PLEASURE-PALACE-DESC 'LGOP ". On a wide plain between here and the palace,
powerful warships are poised for the imminent invasion of Earth.|
Mars dominates the view, a dull red orb spanning a quarter of the sky.
Bright blue canals lace the surface, and white caps of ice are visible at
both poles.|
A stairway leads down into the building. Near the edge, seemingly painted
onto the roof, is" A ,HOLE ". You might be able to jump to the ground, but
frankly we advise against it.">)>>
;"NOTE: The above description of Mars spanning nearly a quarter of the Phobos'
sky is based on the following calculation: The radius of Mars is 3400km, and
the distance between Mars and Phobos is 9380km. These two dimensions form an
angle at the point of a viewer on Phobos between the center of Mars and one
edge of Mars. The tangent of this angle is 3400 divided by 9380 (.3625), so
the angle is approximately 20 degrees. The full width of Mars, edge to edge,
would be twice this, or 40 degrees. One quarter of the sky is 45 degrees."
<ROUTINE ROOF-OBJECT-F ()
<COND (<OR <VERB? LEAP-OFF DISEMBARK>
<AND <VERB? TAKE-OFF>
<EQUAL? ,P-PRSA-WORD ,W?GET>>>
<SETG PRSO <>>
<V-LEAP>)
(<VERB? EXAMINE>
<V-LOOK>)
(<VERB? SEARCH>
<TELL ,NOTHING-NEW>)>>
;"end game"
<ROUTINE I-BLUEPRINT ()
<COND (<AND <VISIBLE? ,SIDEKICK>
<LIT? ,HERE>
<NOT <EQUAL? <LOC ,SIDEKICK> ,SECOND-SLAB ,STALLION>>
<NOT <QUEUED? ,I-SIDEKICK-OUT-WINDOW>>>
<MOVE ,MATCHBOOK ,PROTAGONIST>
<TELL
" " D ,SIDEKICK " trots over to you. \"I've got a plan to bring these
Leather Goddess jokers to their knees,\" ">
<HE-SHE>
<TELL " says, flipping you a " 'MATCHBOOK ". ">
<COVER-FILLED-WITH-NOTES>
<SCRAPE-UP-THESE-ITEMS>)
(T
<QUEUE I-BLUEPRINT 3>
<RFALSE>)>>