-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathfog.zil
1569 lines (1471 loc) · 52.6 KB
/
fog.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
"FOG for
JOURNEY
(c) Copyright 1988, 1989 Infocom, Inc. All Rights Reserved."
<BEGIN-SEGMENT CASTLE>
<ROOM FOG-CAMP
(TRAVEL-COMMANDS PROCEED-COMMAND NUL-COMMAND NUL-COMMAND)
(ENTER
<EXECUTE () <FCLEAR ,PRAXIX ,LIT>>)
(ACTION
<ACOND ()
(SCOUT:REMOVE
<TELL ACT
" tried to scout out the area, but the heavy mist made his task all
but impossible." CR CR>
<COND (<EQUAL? ,ACTOR ,HURTH>
<TELL
"\"I cannot say what lies ahead,\" he announced, \"though I have found
some heavy tracks in the mud which I fear to be orc footprints. We must be
careful, and move quietly!\"">)
(T
<TELL
"\"It's not good,\" he said, \"There are footprints in the mud just ahead,
and I doubt their owners are friendly.\"">)>)
(PROCEED
<TELL
"Early the next morning, we started again. The air was heavy with mist,
and it was difficult to see just a few paces before us. We had been moving
silently for an hour when " D ,LEADER " became alarmed." CR CR>
<TELL
"Gathering together, we soon learned that Praxix was missing from our
ranks. \"Praxix! Praxix!\" we called, but there was no reply, only the
sounds of the forest." CR CR>
<TELL
"\"Praxix! Praxix!\" The words fell only upon the deaf ears of the forest.">
<DIVIDER>
<MAKE-SUBGROUP ,PRAXIX>
<MOVE-TO ,TREE-FORK>)>)>
<COMMAND ASK-TREE O-ASK-TREE ()
<TELL-TALE ,ACTION-OBJECT>
<RTRUE>>
<ROUTINE O-ASK-TREE ()
<FIND-OBJECTS ,ASK-TREE-OBJECTS>>
<OBJECT ASK-TREE-OBJECTS>
<OBJECT ASK-TREE-LOCATION
(LOC ASK-TREE-OBJECTS)
(SDESC "location")
(KBD %<ASCII !\L>)
(TEXT
<EXECUTE ()
<TELL
"\"Where am I?\" Praxix asked, thinking it might help. It didn't." CR CR>
<TELL
"\"You're here with me,\" the tree replied." CR CR>
<TELL
"\"And where would that be?\" Praxix tried." CR CR>
<TELL
"\"In the forest?\" the tree replied uncertainly, trying his best to be
helpful." CR CR>
<TELL
"Praxix slumped to the ground, rubbing his head. This was shaping up to
be a miserable day, he thought. Best to leave this leaf-laden philosopher
and try to find the others.">>)>
<OBJECT ASK-TREE-PATHS
(LOC ASK-TREE-OBJECTS)
(SDESC "paths")
(KBD %<ASCII !\P>)
(TEXT
<EXECUTE ()
<FSET ,ASK-TREE-PATHS ,SEEN>
<TRAVEL-COMMANDS ,HERE
,MILKY-WAY-COMMAND
,ROAD-TO-RUIN-COMMAND
,GARDEN-PATH-COMMAND>
<UPDATE-REMOVE ,ACTION-OBJECT>
<TELL
"Hoping at least to get some useful information from this root-bound
nuisance, Praxix asked, \"Do you know where these paths lead?\"" CR CR>
<TELL
"\"Why, of course; on the left is the Milky Way, right in front of you is
the road to ruin, and here on the right is the garden path,\" the tree replied
matter-of-factly." CR CR>
<TELL
"\"I don't suppose you have a preference,\" Praxix asked with little
hope." CR CR>
<TELL
"\"No, I've never felt the need for one,\" the tree responded, \"I'm not
going much of anywhere.\" And with that, he shook a few branches to indicate
the limits of his movement.">>)>
<COMMAND (ROAD-TO-RUIN RUIN)>
<COMMAND MILKY-WAY>
<COMMAND (GARDEN-PATH GARDEN)>
<ROOM TREE-FORK
(TRAVEL-COMMANDS LEFT-COMMAND CENTER-COMMAND RIGHT-COMMAND)
(ENTER
<EXECUTE ()
<COND (<NOT <QSET? ,HERE ,SEEN>>
<TELL
"\"Praxix! Praxix!\" the voice cried out. \"Wake up!\"" CR CR>
<GRAPHIC ,G-TALKING-TREE>
<TELL
"Praxix rose slowly and took stock of his situation. After separating
from the group, he had wandered aimlessly through the dense fog for the
better part of the morning before stopping to indulge in the tasty, red
berries that blanketed the ground beneath him. And then, he fell into
a deep, yet restless, sleep." CR CR>
<TELL
"Now, someone was calling him, but who? He swung around, but found himself
alone. His head ached, and he wished for nothing more than to be left in
peace until the pain subsided." CR CR>
<TELL
"\"Praxix! Don't you have anything better to do,\" the voice continued,
\"than to sleep the day away?\"" CR CR>
<TELL
"Praxix swung around again and faced a modest-sized oak tree as it was just
finishing the preceding question. \"You know my name?\" he asked, startled
more by the personal reference than the fact that he was being addressed in
whatever fashion by the local flora." CR CR>
<TELL
"\"Why, of course!\" the tree replied enthusiastically. \"All trees sing your
praises.\"" CR CR>
<TELL
"\"They do?\" Praxix responded coyly, for he was not above flattery." CR CR>
<TELL
"\"Oh, my, yes! We know how you helped old Tully when his house caught fire.
And then there was the poor Helspar widow, how you helped her...\"" CR CR>
<TELL
"\"Yes, yes, I see,\" Praxix interrupted, not wishing to pursue the matter
further. But he did not see, at least very clearly, and his head throbbed
in much the same way that he expected the Tremor spell would cause if cast
upon his cranium.">
<TRAVEL-COMMANDS ,PRAXIX
,CAST-COMMAND
,ASK-TREE-COMMAND
,EXAMINE-COMMAND>)>>)
(EXIT FIXUP-PRAXIX-COMMANDS)
(ACTION
<ACOND ()
(<OR <ACTION? LEFT> <ACTION? MILKY-WAY>>
<COND (<IN? ,TALKING-TREE ,HERE>
<LEAVE-TREE "left">)
(T
<TELL
"This time he took the leftmost path. ">)>
<TELL ,PATH-TO-MILL>
<MOVE-TO ,MILL>)
(<OR <ACTION? CENTER> <ACTION? ROAD-TO-RUIN>>
<COND (<IN? ,TALKING-TREE ,HERE>
<LEAVE-TREE "center">)
(T
<TELL
"This time he took the center path. ">)>
<TELL
"Although the path twisted its way through the forest, it had been a more
important thoroughfare long ago, as evidenced by the crumbling stonework lying
by the wayside. ">
<TELL ,MOAT-DESC>
<MOVE-TO ,OUTSIDE-MOAT>)
(RIGHT:REMOVE
<GUARDED-PATH>)
(GARDEN-PATH:REMOVE
<GUARDED-PATH>)>)>
<CONSTANT PATH-TO-MILL
"The path snaked and wound its way toward the west, ending at the
side of a river, which Praxix assumed to be the very same that
we had followed from the underground caverns. The remains of an
old building stood here, crumbling; inside, a badly rusted
mechanism sat. Praxix imagined it would be used for the grinding
of grain.">
<CONSTANT MOAT-DESC
"Soon the forest
gave way to a clearing, in the middle of which stood the ruins of a moated
castle. What little remained of the bridge hung tentatively over the
water, making any crossing a speculative affair.">
<OBJECT MILL-MACHINERY
(SDESC "mechanism")
(8DESC "machine")
(KBD %<ASCII !\M>)
(LOC MILL)
(EXBITS PRAXIXBIT)
(FLAGS DONT-TAKE)
(ACTION
<ACOND ()
(EXAMINE:REMOVE
<FSET ,MILL-MACHINERY ,EXAMINED>
<FSET ,HERE ,NEAR-DARK>
<TELL
"Badly rusted from many years of disuse, the mill machinery stood as it
had for countless years. Praxix attempted to turn the great water wheel,
but it had rusted to the point of inoperability. He did, however, notice
a small passageway leading down from the machinery into a darker area below.">
<ADD-TRAVEL-COMMAND ,HERE ,DOWN-COMMAND>)>)>
<ROUTINE MILL-TO-ASTRIX ()
<HINT ,HINT-CASTLE>
<COND (<AND <FSET? ,MILL ,SEEN>
<NOT <FSET? ,XFER-1 ,SOLVED>>>
<HINT ,HINT-MILL>)>
;"We're still in subgroup..."
<RESTORE-TAG-OBJECTS>
<TELL
"Knowing the Sunset Mountain to be generally north and east of his
position, Praxix slowly made his way to Astrix' tower." CR CR>
<TELL
"The rest of us, having lost hope of reuniting with Praxix, also made
our way back, arriving the next day. But while we were glad to have
seen Praxix alive, we had failed at our quest for the Stones.">
<PART-TWO-ENDING>>
<ROOM MILL
(TRAVEL-COMMANDS PROCEED-COMMAND NUL-COMMAND NUL-COMMAND)
(GRAPHIC G-MILL)
(ENTER FSET-SEEN)
(CLOCK
<EXECUTE ()
<COND (<AND <FSET? ,PRAXIX ,LIT>
<FSET? ,MILL-MACHINERY ,EXAMINED>>
<FORCE-TRAVEL-COMMAND ,HERE ,DOWN-COMMAND>)>>)
(ACTION
<ACOND ("AUX" TMP)
(DOWN
<COND (<NOT <FSET? ,PRAXIX ,LIT>>
<REMOVE-TRAVEL-COMMAND>
<TELL
"It took only a few steps for Praxix to realize that the path leading inside
the mill mechanism was dark and potentially dangerous. Rather than risk injury,
he returned to the open air.">)
(T
<COND (<NOT ,SUBGROUP-MODE>
<TELL
"Praxix insisted in exploring the mechanism himself, and we soon wished that
he hadn't." CR CR>
<MAKE-SUBGROUP ,PRAXIX>)>
<TELL
"At first, it appeared that the passage was merely some maintenance path with
access to the internal working parts of the mill mechanism. However, the path
soon reached a set of stone steps that led down beneath ground level, ending
at the junction of two paths." CR CR>
<TELL
"But no sooner had Praxix started to think about where to proceed next, the
ground collapsed beneath the steps, and the resulting avalanche of stone
completely buried his only known route to the outside.">
<MOVE-TO ,XFER-JCN>
<SET TMP <+ <PARTY-PCM ,PRAXIX> 1>>
<SETG TAG-SWAP-CHR <GET ,PARTY .TMP>>
<PUT ,PARTY <PARTY-PCM ,TAG> ,TAG-SWAP-CHR>
<PUT ,PARTY .TMP ,TAG>
<FSET ,TAG ,SHADOW>
;<SAVE-TAG-OBJECTS>
<SCENE ,MILL-SCENE>)>)
(PROCEED
<LEAVE-MILL-AREA>)>)>
<OBJECT MILL-SCENE
(ACTION
<ACOND ()
(INVENTORY
<TELL
"Praxix took stock of his possessions finding ">
<COND (<NOT <LIST-CONTENTS ,INVENTORY>>
<TELL "only">)
(T
<TELL " and">)>
<TELL " his magical paraphenalia - his staff and pouch of powders.">
<UPDATE-FSET ,HERE ,INVENTORIED>)
(DROP
<COND (<EQUAL? ,HERE ,XFER-1-ANTE ,XFER-2-ANTE ,XFER-3-ANTE>
<UPDATE-MOVE ,ACTION-OBJECT
<COND (<EQUAL? ,HERE ,XFER-1-ANTE>
,XFER-1)
(<EQUAL? ,HERE ,XFER-2-ANTE>
,XFER-2)
(T
,XFER-3)>>
<TELL
"Thinking it might be helpful, Praxix dropped the " AO " over the railing and
down to the bottom of the pit, where it landed ">
<COND (<EQUAL? ,HERE ,XFER-1-ANTE>
<TELL "almost immediately.">)
(T
<TELL "more than a couple of seconds later.">
<TELL CR CR
"\"An awfully long way down,\" he said, gazing absently into the abyss.">)>)
(T
<TELL
"Praxix thought to drop the " AO ", but felt it imprudent to do so.">)>)>)>
<GLOBAL TAG-SWAP-CHR <>>
<ROUTINE LEAVE-MILL-AREA ()
<COND (,REJOINED
;"Have already rejoined with group..."
<CLEAR-SUBGROUP>
<COND (,A-B-FLAG
<CASTLE-MILL-TO-ASTRIX>)
(T
<CASTLE-MILL-TO-CAVERNS>)>)
(<FSET? ,CASTLE-BRIDGE ,SEEN>
<MILL-TO-ASTRIX>)
(T
<TELL
"Leaving the vicinity of the mill, Praxix re-entered the forest, taking a
more easterly course. ">
<TELL ,MOAT-DESC>
<MOVE-TO ,OUTSIDE-MOAT>)>>
<ROUTINE LEAVE-TREE (STR)
<TELL
"Happily ridding himself of this garrulous tree, Praxix strode off
upon the " .STR " path. What little fog remained had now cleared, and the same
could be said for the cottony feeling in his mouth and head." CR CR>>
<ROUTINE GUARDED-PATH ()
<COND (<IN? ,TALKING-TREE ,HERE>
<GRAPHIC ,G-FOREST>
<UPDATE-REMOVE ,TALKING-TREE>
<APPLY <GETP ,HERE ,P?EXIT>>
<LEAVE-TREE "right">)>
<TELL
"Before long, he approached a heavily guarded area, an armed compound of some
kind. It took only a moment to realize that this was orc territory, and that
he was in great danger. Carefully retracing his steps, he found his way
back to the fork; the talking tree was gone.">>
<OBJECT MOAT-BRIDGE
(SDESC "bridge")
(FLAGS DONT-TAKE)
(ACTION
<ACOND ()
(EXAMINE:REMOVE
<TELL
"Praxix' eye passed along the course of the bridge. Once supported by
huge stone pillars which rose high into the air, the roadway was now
barely suspended above the water, its wooden planking rotted nearly to
non-existence.">)>)>
<OBJECT MOAT-WATER
(SDESC "water")
(FLAGS DONT-TAKE)
(ACTION
<ACOND ()
(EXAMINE:REMOVE
<TELL
"Looking down at the moat itself was none too pleasant; the water had a
dark greenish cast, and strange red weeds covered much of the surface.
Every so often, large bubbles of air surfaced, from what source Praxix
could only imagine.">)>)>
<ROOM OUTSIDE-MOAT
(TRAVEL-COMMANDS CROSS-COMMAND NUL-COMMAND NUL-COMMAND)
(GRAPHIC G-MOAT)
(ENTER
<EXECUTE ()
<UPDATE-MOVE ,MOAT-BRIDGE ,HERE>
<UPDATE-MOVE ,MOAT-WATER ,HERE>>)
(ACTION
<ACOND ()
(CROSS
<TELL
"Praxix decided to explore the castle; gingerly, he made his way
across the bridge, the boards creaking and groaning with each step he
took. Halfway across, the board beneath his feet gave way, and he
was nearly over the side when his arm caught hold of a supporting brace.
Pulling himself to his feet, he realized that getting to the castle and
back again would be chancy at best.">
<MOVE-TO ,CASTLE-BRIDGE>)>)>
<ROOM CASTLE-BRIDGE
(TRAVEL-COMMANDS PROCEED-COMMAND BACK-COMMAND NUL-COMMAND)
(FLAGS DONT-CAST)
(ENTER FSET-SEEN)
(ACTION
<ACOND ()
(PROCEED
<TELL
"Resolved to go on, Praxix took greater care in crossing the final
half of the bridge, arriving with no further incident to himself.
The bridge was another matter; having had just about enough from
the long ages, it crumbled and sank into the moat, leaving behind a
single large pier standing (or, rather, leaning) near the moat's midpoint." CR CR>
<TELL
"What remained of an ancient castle lay before him and he walked eagerly
into what would have been the courtyard. Of the four towers which had guarded
this fortress, only one stood, and that only barely; the others lay
in piles of broken stone and mortar.">
<MOVE-TO ,CASTLE-COURTYARD>)
(BACK
<TELL
"Not wishing to chance being trapped on the castle grounds, Praxix returned
to the safety of the near shore. ">
<COND (<FSET? ,MILL ,SEEN>
<MILL-TO-ASTRIX>)
(T
<TELL
"Following the only path nearby, he re-entered the forest and was soon
at the edge of the river he presumed to be the same we had followed in
leaving the lower levels of the caverns. At the river's edge stood the
crumbling remains of an old mill building.">
<MOVE-TO ,MILL>)>)>)>
<COMMAND TOWER>
<OBJECT CASTLE-COURTYARD-RUINS
(SDESC "ruins")
(LOC CASTLE-COURTYARD)
(ACTION
<ACOND ()
(EXAMINE:REMOVE
<TELL
"Praxix made a complete circle gazing at the remains of this castle.
Besides the fragments of three towers and the ghostly spectre of the
fourth, little remained to tell the tale of the castle's past.">)>)>
<ROOM CASTLE-COURTYARD
(TRAVEL-COMMANDS TOWER-COMMAND MOAT-COMMAND NUL-COMMAND)
(CAST-LIMIT 3)
(GRAPHIC G-COURTYARD)
(ENTER
<EXECUTE ()
<FSET ,HERE ,SEEN>
<COND (<AND <OR <FSET? ,CASTLE-TOWER ,SEEN>
,PRAXIX-SIGNAL>
<OR <FSET? ,CASTLE-TROVE ,SEEN>
<AND <NOT <IN-PARTY? ,UMBER>>
<FSET? ,CASTLE-DUNGEON ,SEEN>>>>
<COND (,PRAXIX-SIGNAL
<TELL CR CR>
<PRAXIX-WAITS-FOR-PARTY>)
(T
<REMOVE-TRAVEL-COMMAND ,HERE
,TOWER-COMMAND>
<COND (<EQUAL? <GET <GETPT ,HERE
,P?TRAVEL-COMMANDS>
0>
,NUL-COMMAND>
<TELL CR CR
"And so it was that Praxix became stranded on this man-made island,
with no means of escape and no help in sight.">
<COND (<AND
<NOT <CHECK-ESSENCES ,FAR-VISION-SPELL>>
<NOT <CHECK-ESSENCES ,LIGHTNING-SPELL>>
<NOT <CHECK-ESSENCES ,RAIN-SPELL>>>
<HINT ,HINT-SIGNAL>
<DIVIDER>
<TELL
"The rest of us, having lost hope of reuniting with Praxix, slowly made
our way back to Astrix. Sadly, we never saw Praxix again.">
<PART-TWO-ENDING>)>)>)>)>>)
(ACTION
<ACOND ()
(<SENDING-SIGNAL?>
<PRAXIX-SENDS-SIGNAL>)
(TOWER
<TELL
"Walking into the base of the tower, he saw two staircases, one rising
to the battlements above, the other descending beneath the ground into
darkness.">
<MOVE-TO ,CASTLE-BASE>)
(MOAT
<TELL
"Heading back toward the moat, Praxix surveyed the damage. Hardly a piece
of the collapsed bridge remained above the surface; there would be no
crossing here. And as for the water, it looked no more appetizing than when
he first cast his eyes upon it.">
<TRAVEL-COMMANDS ,HERE ,TOWER-COMMAND>
<UPDATE-MOVE ,MOAT-WATER ,INSIDE-MOAT>
<MOVE-TO ,INSIDE-MOAT>)>)>
<ROUTINE SENDING-SIGNAL? ()
<COND (<AND <ACTION? CAST>
<OR <OBJECT? FAR-VISION-SPELL>
<OBJECT? LIGHTNING-SPELL>
<OBJECT? RAIN-SPELL>>
<NOT ,PRAXIX-SIGNAL>>
<RTRUE>)
(T
<RFALSE>)>>
<COMMAND MOAT>
<ROOM INSIDE-MOAT
(TRAVEL-COMMANDS COURTYARD-COMMAND SWIM-COMMAND NUL-COMMAND)
(CAST-LIMIT 3)
(GRAPHIC G-COURTYARD)
(ACTION
<ACOND ()
(<AND <ACTION? CAST>
<OR <OBJECT? WIND-SPELL>
<OBJECT? LEVITATE-SPELL>>
<NOT <QSET? ,HERE ,ENCHANTED>>>
<UNUSE-ESSENCES>
<TELL
"Praxix considered using some combination of elevation and wind to get him
across the moat, but first he did some figuring. And the figuring told him
that he was an odds-on favorite to land inside of the moat rather than beyond
it. Praxix was not by nature a betting man, and it occurred to him that
this would be a poor time to start." CR CR>
<TELL
"\"I could use a good length of rope,\" he said to a bird which had
just perched nearby. \"If the others were here, I wouldn't have this
problem, would I?\"">)
(<SENDING-SIGNAL?>
<PRAXIX-SENDS-SIGNAL>)
(COURTYARD
<TELL
"There was little for Praxix to do here than wonder how he had gotten
himself into this predicament, so he returned to the courtyard.">
<MOVE-TO ,CASTLE-COURTYARD>)
(SWIM:REMOVE
<TELL
"It occurred to Praxix to swim across the moat, but he decided to test the
waters first. So, removing his shoe, he dipped an unwilling toe into the
moat. The first sensation he felt was warmth; then, an odd tingling
feeling gripped him. The water's surface rippled disturbingly, and Praxix
swore he felt something pincer-like grab at his toe just as he pulled
it from the water. Needless to say, Praxix gave up any thought of
subjecting other body parts to the moat."> )>)>
<COMMAND COURTYARD>
<ROOM CASTLE-BASE
(TRAVEL-COMMANDS UP-COMMAND DOWN-COMMAND COURTYARD-COMMAND)
(ENTER
<EXECUTE ()
<COND (<OR <NOT <FSET? ,CASTLE-TOWER ,SEEN>>
<NOT <FSET? ,CASTLE-DUNGEON ,SEEN>>>
<REMOVE-PARTY-COMMAND ,COURTYARD-COMMAND>)>>)
(GRAPHIC G-COURTYARD)
(ACTION
<ACOND ()
(UP
<COND (<FSET? ,CASTLE-TOWER ,SEEN>
<REMOVE-TRAVEL-COMMAND>)>
<TELL "Praxix">
<COND (<IN-PARTY? ,UMBER>
<TELL ", with Umber in tow,">)>
<TELL
" climbed the crumbling stairs and was soon atop the tower.">
<MOVE-TO ,CASTLE-TOWER>)
(DOWN
<CASTLE-DUNGEON-MOVE>)
(COURTYARD
<TELL
"From there, it was a short walk back to the courtyard.">
<MOVE-TO ,CASTLE-COURTYARD>)>)>
<ROUTINE CASTLE-DUNGEON-MOVE ()
<TELL
"Climbing down the darkened stairway, Praxix">
<COND (<IN-PARTY? ,UMBER> <TELL " and Umber">)>
<TELL " soon reached the level
below, a dungeon of crumbling prison cells. The oppressive
moisture and the passage of time had taken a heavy toll on the
wooden prison doors, which stood open in ghostly silence.">
<MOVE-TO ,CASTLE-DUNGEON>>
; <GLOBAL UMBER-ARRIVED-FLAG <>>
<ROOM CASTLE-TOWER
(TRAVEL-COMMANDS DOWN-COMMAND NUL-COMMAND NUL-COMMAND)
(CAST-LIMIT 3)
(ENTER
<EXECUTE ()
<COND (<NOT <QSET? ,HERE ,SEEN>>
<GRAPHIC ,G-UMBER>
<TELL
" Much to his surprise, he was not alone, for a man was already there,
leaning over a battlement and staring toward the distant horizon. As
Praxix approached, the man turned and greeted him with unrestrained
enthusiasm, as though he were a dear friend long absent and presumed
dead." CR CR>
<TELL
"\"Ah, Praxix, my friend! We meet again!\" he said." CR CR>
<TELL
"Praxix approached this too cheerful young man of whom he had no particular
recollection. \"Does this mean we have met before?\" he asked." CR CR>
<TELL
"\"Yes we have, though you were somewhat - what's the word -
confused?\" he replied, and leaned forward towards Praxix' mouth,
sniffing." CR CR>
<TELL
"\"Indeed?\" said Praxix, eyebrows raised." CR CR>
<TELL
"\"No. I think I meant to say 'incoherent.' ">
<COND (,ASK-TREE-PATHS
<TELL
"First, you told all sorts of odd stories about yourself, and then you asked
some questions. Told you about these ruins, as a matter of fact.">)
(T
<TELL
"You told me all sorts of stories about yourself, then ran off.">)>
<TELL
" I don't mean to be getting personal, seeing as how we've
just barely met, but I'd be staying away from those berries if I were
you. At least early in the day.\"" CR CR>
<TELL
"\"Ah, yes. I do remember,\" Praxix admitted, turning the faintest shade
of red. There was no talking tree, he realized; only a vivid
hallucination brought upon, apparently, by the berries he had indulged
in earlier in the day." CR CR>
<TELL
"\"I don't know about you, but I could use a little company. May I join
you?\" the man asked.">
<OPTION ,PRAXIX ,ACCEPT-COMMAND ,DECLINE-COMMAND>)
(T
<GRAPHIC ,G-UMBER> ;"Sigh")>>)
(ACTION
<ACOND ("AUX" (CNT 0) CHR)
(DOWN
<COND (<OR <FSET? ,CASTLE-TROVE ,SEEN>
<AND <FSET? ,CASTLE-DUNGEON ,SEEN>
<NOT <IN-PARTY? ,UMBER>>>>
<MOVE-TO ,CASTLE-BASE
"Finding nothing more of interest there, Praxix again descended the
stairs, coming to the base of the tower.">)
(T
<CASTLE-DUNGEON-MOVE>)>)
(ACCEPT
<TELL
"There was no apparent harm in this, so Praxix assented." CR CR>
<PARTY-CHANGE ,TAG ,UMBER>
<FSET ,UMBER ,SUBGROUP>
<SETG UPDATE-FLAG T>
<TELL
"\"Name's Umber,\" the man said by way of belated introduction, \"and
I'm pleased to meet you.\" He put out his hand, and smiled broadly, reminding
Praxix of the used merchandise sellers whom he despised so deeply." CR CR>
<TELL
"\"What have I done?\" Praxix asked the heavens with upraised hands.
\"Trapped up here with... with...\" He paused, choosing his words with care.
\"With my party out there,\" he said, moving his hands across the broad
expanse of forest that lay before him." CR CR>
<TELL
"\"Don't they know you're here?\" Umber asked, once again smiling." CR CR>
<TELL
"A brilliant thought crossed Praxix' mind, then left as quickly as it had
entered. \"No, we were separated in the fog this morning.\"" CR CR>
<TELL
"\"Ah. Did I hear you say 'trapped'?\" Umber asked, smile waning." CR CR>
<TELL
"\"Yes, trapped. The bridge collapsed as I crossed it. So unless you're
up for a swim in the moat...,\" was Praxix' reply, and it left Umber at
a loss for words and smiles.">
<END-OPTION>)
(DECLINE
<HINT ,HINT-UMBER>
<TELL
"\"I'm sorry, but I think not,\" Praxix replied as graciously as
possible." CR CR>
<TELL
"\"Well, then. Perhaps we shall meet again!\" the young man replied,
and walked out of sight." CR CR>
<TELL
"\"And perhaps not,\" Praxix said, with a wave of his hand. He heaved
a sigh of relief, and pondered what he should do next.">
<END-OPTION>)
(<SENDING-SIGNAL?>
<PRAXIX-SENDS-SIGNAL>)>)>
<ROUTINE PRAXIX-SENDS-SIGNAL ("AUX" CHR CNT)
<TELL "And there, standing ">
<COND (<EQUAL? ,HERE ,CASTLE-COURTYARD>
<TELL "in the middle of the courtyard">)
(<EQUAL? ,HERE ,INSIDE-MOAT>
<TELL "at the edge of the moat">)
(T
<TELL "on top of that high tower">)>
<TELL ", Praxix removed his pouch
of magical essences and cast the \"" AO "\" spell." CR CR>
<COND (<OBJECT? FAR-VISION-SPELL>
<TELL
"The ball of flame shot out toward the horizon.">)
(<OBJECT? LIGHTNING-SPELL>
<FSET ,LIGHTNING-SPELL ,SEEN>
<TELL
"Dark clouds gathered round the castle, and soon bolts of lightning were
hitting the darkened earth.">)
(T
<TELL
"Clouds gathered from nowhere, heavily laden with moisture. And then, the
rain started to fall, a heavy, soaking rain.">)>
<TELL " Praxix ">
<COND (<EQUAL? ,HERE ,CASTLE-COURTYARD ,INSIDE-MOAT>
<TELL "watched, impassively">)
(T
<TELL
"leaned over the edge of the turret, and stared off into the forest">)>
<TELL ", wondering whether there was anyone there to notice.">
<SETG PRAXIX-SIGNAL ,ACTION-OBJECT>
<SETG PRAXIX-SIGNAL-ROOM ,HERE>
;"Make subgroup of the rest..."
<SETG SUBGROUP-MODE T>
<SETG UPDATE-FLAG T>
<RESTORE-TAG-OBJECTS>
<REPEAT ()
<COND (<G? <SET CNT <+ .CNT 1>> ,PARTY-MAX>
<RETURN>)
(<EQUAL? <SET CHR <GET ,PARTY .CNT>> ,PRAXIX>
<FCLEAR .CHR ,SUBGROUP>)
(T
<FSET .CHR ,SUBGROUP>)>>
<MOVE-TO ,GROUP-FOREST>>
<GLOBAL PRAXIX-SIGNAL <>>
<GLOBAL PRAXIX-SIGNAL-ROOM <>>
<ROOM CASTLE-TROVE
(TRAVEL-COMMANDS BACK-COMMAND NUL-COMMAND NUL-COMMAND)
(GRAPHIC G-TROVE)
(ENTER FSET-SEEN)
(CAST-LIMIT 2)
(ACTION
<ACOND ()
(BACK
<TRAVEL-COMMANDS ,CASTLE-BASE ,UP-COMMAND ,COURTYARD-COMMAND>
<COND (<NOT <IN? ,SIXTH-STONE ,PRAXIX>>
<TELL
"Declining the offer to take some of the stones, ">)>
<TELL "Praxix suggested he had
seen enough; the two then ascended the stairs, arriving back at the
base of the turret.">
<COND (,PRAXIX-SIGNAL
<TELL
" They then took the few short steps back to the courtyard.">
<MOVE-TO ,CASTLE-COURTYARD>)
(T
<MOVE-TO ,CASTLE-BASE>)>)
(<AND <ACTION? USE-MIX>
<EQUAL? ,MIXTURE ,SPECIAL-VISION-SPELL>
<OBJECT? STONE-PILE>>
<MOVE ,SIXTH-STONE ,PRAXIX>
<UPDATE-REMOVE ,STONE-PILE>
<GRAPHIC <> ,G-TROVE-STONE ,TOP-RIGHT>
<TELL
"Praxix cast his mixture at the pile of stones, and for
an instant, it appeared that nothing would happen. And then, slowly, from
the middle of the pile, a dim glow appeared, strengthening with each
passing moment. Praxix scrambled onto the pile, shovelling stones away with
his bare hands until the source of light was revealed. It was a small black
stone, perfectly round, and glowing with a powerful dark light." CR CR>
<TELL
"\"The Earth Stone,\" he said, under his breath, taking the black stone
and placing it inside his cloak." CR CR>
<TELL
"\"Pardon me,\" Umber said, \"but did you just say 'Erstin'? I once knew
a man with that name, but I wouldn't think he'd be an acquaintance of
yours.\"" CR CR>
<TELL
"\"Yes, of course,\" Praxix mumbled, without knowing why. But it had the desirable
effect of ending the conversation, as Umber could find nothing beyond a befuddled
\"Ah\" to reply.">
<MIXTURE-CAST>)>)>
<OBJECT STONE-PILE
(LOC CASTLE-TROVE)
(SDESC "stones")
(FLAGS DONT-TAKE)
(ACTION
<ACOND ()
(EXAMINE:CLEAR
<TELL
"There were thousands upon thousands of stones in the chest, of all
colors, shapes, and sizes. A profitable business for Umber, to be
sure." CR CR>
<TELL
"\"Not too valuable, I would say,\" Umber said, picking up a few more
of the stones. \"But don't let the townsfolk know it!\"">)>)>
<OBJECT CASTLE-DUNGEON-CELLS
(LOC CASTLE-DUNGEON)
(FLAGS DONT-TAKE)
(SDESC "cells")
(ACTION
<ACOND ()
(EXAMINE:REMOVE
<TELL
"Praxix went through each of the cells in the dungeon, finding only rusted
chains and manacles. Perhaps there had been prisoners here in days long past,
but their remains would long since have turned to dust.">)>)>
<ROOM CASTLE-DUNGEON
(TRAVEL-COMMANDS UP-COMMAND NUL-COMMAND NUL-COMMAND)
(GRAPHIC G-DUNGEON)
(ENTER
<EXECUTE ()
<FSET ,HERE ,SEEN>
<COND (<AND <IN-PARTY? ,UMBER>
<NOT <QSET? ,HERE ,SCOUTED>>>
<TELL CR CR
"The dungeons were dark and damp, but Umber was as cheerful as ever.
\"There are many secrets in these dungeons,\" he said. \"If you
give me your word you will tell no one, I will show you my favorite.\"" CR CR>
<TELL
"Praxix agreed, and Umber led him to the farthest of the dungeon cells.
Then, he removed one of the blocks in the cell wall, and reached for an
unseen lever that was hidden behind. As he did so, the entire wall slid
aside, revealing a large chamber." CR CR>
<TELL
"The chamber was bare, save the rusted manacles hanging from the walls,
but in the center sat a large chest, brimming with precious stones." CR CR>
<TELL
"\"I see you have been here before,\" Praxix said, with the slightest
hint of sarcasm." CR CR>
<TELL
"\"Many times,\" Umber responded, \"I make my living selling
these stones. I figure it's safer to leave the bulk of them here so
that folks back in town don't get too suspicious. Every week or so, I
come here and pick up a few dozen.\"">
<MOVE-TO ,CASTLE-TROVE>)>>)
(ACTION
<ACOND ()
(UP
<TELL
"Disappointed at having found nothing of interest, Praxix climbed the
crumbling stairs and was soon ">
<COND (<NOT <FSET? ,CASTLE-TOWER ,SEEN>>
<TELL "atop the tower.">
<MOVE-TO ,CASTLE-TOWER>)
(T
<TELL "back at ground level.">
<MOVE-TO ,CASTLE-BASE>)>)>)>
<OBJECT TALKING-TREE
(LOC TREE-FORK)
(SDESC "talking tree")
(8DESC "tree")
(KBD %<ASCII !\T>)
(FLAGS DONT-TAKE)
(ACTION
<ACOND ()
(EXAMINE:REMOVE
<TELL ACT
" examined the talking tree skeptically, walking around it as an art expert
would a hideous piece of sculpture, but finally arrived at the
inescapable conclusion that this was indeed a talking tree, about seven
feet in height, neatly trimmed, and covered in wide, oddly shaped leaves.">)>)>
<END-SEGMENT>
<BEGIN-SEGMENT MILL>
;"New mill puzzle..."
<COMMAND (CONTROL-ROOM CONTROLS)>
<ROOM XFER-JCN
(TRAVEL-COMMANDS LEFT-COMMAND RIGHT-COMMAND BACK-COMMAND)
(FLAGS UNDERGROUND)
(GRAPHIC G-XFER-JCN)
(ENTER FSET-SEEN)
(ACTION
<ACOND ()
(BACK:REMOVE
<TELL
"It was no use; no matter how Praxix tried, he could not move enough debris to
make his escape possible.">)
(LEFT
<FIRST-XFER-ANTE>
<MOVE-TO ,XFER-1-ANTE>)
(<OR <ACTION? RIGHT>
<ACTION? CONTROL-ROOM>>
<TELL
"A narrow doorway led Praxix into a small, closetlike chamber. On one wall, a
large glass window overlooked a shallow pit. Otherwise, the room was bare
except for a strange device mounted against another of the walls.">
<MOVE-TO ,XFER-MASTER>
<CHANGE-TRAVEL-COMMAND ,XFER-JCN
,RIGHT-COMMAND
,CONTROL-ROOM-COMMAND>
<RTRUE>)>)>
<ROUTINE FIRST-XFER-ANTE ()
<TELL
"The passage led onward and around a corner until it reached a protective railing,
over or under which a shallow pit could be entered. Looking back, he could see ">
<COND (<FSET? ,XFER-MASTER ,SEEN>
<TELL "the window of the control room.">)
(T
<TELL "a large plate window behind which it was impossible to see.">)>
<TELL
" Before him, the passage continued out of sight into the darkness.">
<COND (<NOT <QSET? ,XFER-1-ANTE ,SEEN>>
<TELL
" Everything here was drab and nondescript; the walls and floor of the passage
were covered in countless layers of dust and grime. It had clearly been ages since
these halls had been visited.">)>>
<COMMAND (BACK-TO-PITS BACK-PITS)>
<ROOM XFER-MASTER
(TRAVEL-COMMANDS BACK-COMMAND NUL-COMMAND NUL-COMMAND NUL-COMMAND)
(FLAGS UNDERGROUND)
(REFRESH COMPLETE-DIAL-GRAPHICS)
(ENTER
<EXECUTE ()
<FSET ,HERE ,SEEN>
<COND (<NOT <FSET? ,XFER-CONTROLS ,SEEN>>
<GRAPHIC ,G-XFER-MASTER>)
(T
;"This sequence should show the dial with settings..."
<COMPLETE-DIAL-GRAPHICS>)>>)
(ACTION
<ACOND ()
(<OR <ACTION? BACK>
<ACTION? BACK-TO-PITS>>
<COND (<NOT <QSET? ,HERE ,BLACK-MIX>>
<TELL
"Praxix then left this control room, or whatever it was, and reached the base
of the crumbled stairs. Seeing no way of getting through in that direction, he
started down the other path." CR CR>
<CHANGE-TRAVEL-COMMAND ,HERE
,BACK-COMMAND
,BACK-TO-PITS-COMMAND
T>
<FIRST-XFER-ANTE>)
(T
<TELL
"It took only a few moments for Praxix to pass the rubble of the stairs and continue
onward to the railing above the shallow pit.">)>
<MOVE-TO ,XFER-1-ANTE>)>)>
<ROUTINE COMPLETE-DIAL-GRAPHICS ()
<SETG CURRENT-GRAPHIC <>>
<GRAPHIC ,G-XFER-CONTROLS>
<DIAL-GRAPHICS>>
<ROUTINE DIAL-GRAPHICS ()
<GRAPHIC <>
<GETP <GET ,RUNE-TBL ,LEFT-DIAL> ,P?GRAPHIC>
,TOP-LEFT>
<GRAPHIC <>
<GETP <GET ,RUNE-TBL ,RIGHT-DIAL> ,P?GRAPHIC>
,TOP-RIGHT>>
<GLOBAL LEFT-DIAL 4>
<GLOBAL RIGHT-DIAL 5>
<GLOBAL BUTTON-PUSHED <>>
<GLOBAL XFER-TBL
<LTABLE XFER-1 XFER-2 XFER-3 NXFER-1 NXFER-2 NXFER-3>>
<CONSTANT PRAXIX-NO-DIAL
"Slowly, Praxix twisted the dial on the right, but ended up leaving it
pointing to the ">
<COMMAND RIGHT-DIAL O-DIAL ()
<COND (<EQUAL? ,RIGHT-DIAL <GETP ,ACTION-OBJECT ,P?TEMP>>
<TELL ,PRAXIX-NO-DIAL>
<TELL AO " rune.">)
(T
<SETG RIGHT-DIAL <GETP ,ACTION-OBJECT ,P?TEMP>>
<TELL-DIAL "right">)>>
<COMMAND LEFT-DIAL O-DIAL ()
<COND (<EQUAL? ,LEFT-DIAL <GETP ,ACTION-OBJECT ,P?TEMP>>
<TELL ,PRAXIX-NO-DIAL>
<TELL AO " rune.">)
(T
<SETG LEFT-DIAL <GETP ,ACTION-OBJECT ,P?TEMP>>
<TELL-DIAL "left">)>>
<ROUTINE TELL-DIAL (STR)
<SETG FIDDLED-WITH-DEVICE T>
<TELL
"Slowly, Praxix twisted the dial on the " .STR " until its pointer was aimed
directly at the ">
<TELL D ,ACTION-OBJECT " rune.">
;"Redraw the pictures..."
<COMPLETE-DIAL-GRAPHICS>
<RTRUE>>
<COMMAND WAIT <> ()
<TELL
"As Praxix waited, the droning noise grew ever louder.">
<SETG I-BUTTON-PUSH-FLAG 100>
<RTRUE>>
<GLOBAL FIDDLED-WITH-DEVICE <>>
<COMMAND (PUSH-BUTTON PUSH-BUT'N) <> ()
<CHANGE-TRAVEL-COMMAND ,HERE
,PUSH-BUTTON-COMMAND
,WAIT-COMMAND>
<SETG BUTTON-PUSHED T>
<SETG FIDDLED-WITH-DEVICE T>
<QUEUE I-BUTTON-PUSH -1>
<TELL