-
Notifications
You must be signed in to change notification settings - Fork 8
/
actions.zil
4260 lines (3920 loc) · 149 KB
/
actions.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
"1ACTIONS for
Zork I: The Great Underground Empire
(c) Copyright 1983 Infocom, Inc. All Rights Reserved.
-- GERMAN EDITION"
<ROUTINE WEST-HOUSE (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Du stehst auf freiem Feld westlich von einem wei%sen Haus, dessen Haust%ur mit Brettern vernagelt ist.">
<COND (,WON-FLAG
<TELL
" Ein Geheimpfad f%uhrt nach S%udwesten in den Wald.">)>
<CRLF>)>>
<ROUTINE EAST-HOUSE (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Du bist hinter dem wei%sen Haus. Nach Osten f%uhrt in Pfad in den Wald. An einem Ende der Hauswand befindet sich ein kleines Fenster, das">
<COND (<FSET? ,KITCHEN-WINDOW ,OPENBIT>
<TELL " offen ist.">)
(T <TELL " einen Spalt offen steht.">)>
<CRLF>)>>
<ROUTINE OPEN-CLOSE (OBJ STROPN STRCLS)
<COND (<VERB? OPEN>
<COND (<FSET? .OBJ ,OPENBIT>
<TELL <PICK-ONE ,DUMMY>>)
(T
<TELL .STROPN>
<FSET .OBJ ,OPENBIT>)>
<CRLF>)
(<VERB? CLOSE>
<COND (<FSET? .OBJ ,OPENBIT>
<TELL .STRCLS>
<FCLEAR .OBJ ,OPENBIT>
T)
(T <TELL <PICK-ONE ,DUMMY>>)>
<CRLF>)>>
<ROUTINE BOARD-F ()
<COND (<VERB? TAKE EXAMINE>
<TELL "Die Bretter sind fest angenagelt." CR>)>>
<ROUTINE TEETH-F ()
<COND (<AND <VERB? BRUSH>
<EQUAL? ,PRSO ,TEETH>>
<COND (<AND <EQUAL? ,PRSI ,PUTTY>
<IN? ,PRSI ,WINNER>>
<JIGS-UP
"Na ja, du scheinst deine Z%ahne mit irgendwelchem Klebstoff geputzt zu haben. Die nat%urliche Folge davon ist ein zusammengeklebter Mund (mit der Nase), und du stirbst an Atemversagen.">)
(<NOT ,PRSI>
<TELL
"Zahnpflege ist h%ochst empfehlenswert, aber es ist nicht klar, mit was du sie putzen willst." CR>)
(T
<TELL
"Eine charmante Idee, aber mit " EIN-DAT ,PRSI "?" CR>)>)>>
;"JOKE OF 'TAKE NOTHING FOR GRANITE' WON'T WORK IN GERMAN"
;<ROUTINE GRANITE-WALL-F ()
<COND (<EQUAL? ,HERE ,NORTH-TEMPLE>
<COND (<VERB? FIND>
<TELL "Die Westwand ist hier aus hartem Stein." CR>)
(<VERB? TAKE RAISE LOWER>
<TELL "Es ist harter Stein." CR>)>)
(<EQUAL? ,HERE ,TREASURE-ROOM>
<COND (<VERB? FIND>
<TELL "The east wall is solid granite here." CR>)
(<VERB? TAKE RAISE LOWER>
<TELL "It's solid granite." CR>)>)
(<EQUAL? ,HERE ,SLIDE-ROOM>
<COND (<VERB? FIND READ>
<TELL "It only SAYS %>Granite Wall%<." CR>)
(T <TELL "The wall isn't granite." CR>)>)
(T
<TELL "There is no granite wall here." CR>)>>
<ROUTINE SONGBIRD-F ()
<COND (<VERB? FIND TAKE>
<TELL "Der Singvogel ist nicht hier, aber er ist wahrscheinlich in der N%ahe." CR>)
(<VERB? LISTEN>
<TELL "Jetzt kannst du den Singvogel nicht h%oren." CR>)
(<VERB? FOLLOW>
<TELL "Man kann ihm nicht folgen." CR>)
(T
<TELL "Hier kannst du keinen Singvogel sehen." CR>)>>
<ROUTINE WHITE-HOUSE-F ()
<COND (<EQUAL? ,HERE ,KITCHEN ,LIVING-ROOM ,ATTIC>
<COND (<VERB? FIND>
<TELL "Warum gehst du nicht auf die Suche nach deinem Verstand." CR>)
(<VERB? WALK-AROUND>
<GO-NEXT ,IN-HOUSE-AROUND>
T)>)
(<NOT <OR <EQUAL? ,HERE ,EAST-OF-HOUSE ,WEST-OF-HOUSE>
<EQUAL? ,HERE ,NORTH-OF-HOUSE ,SOUTH-OF-HOUSE>>>
<COND (<VERB? FIND>
<COND (<EQUAL? ,HERE ,CLEARING>
<TELL "Es scheint im Westen zu sein." CR>)
(T
<TELL "Vor einer Minute war es noch hier..." CR>)>)
(T <TELL "Du bist nicht beim Haus." CR>)>)
(<VERB? FIND>
<TELL
"Es steht doch gleich hier! Bist du blind, oder was?" CR>)
(<VERB? WALK-AROUND>
<GO-NEXT ,HOUSE-AROUND>
T)
(<VERB? EXAMINE>
<TELL
"Das Haus ist ein sch%ones altes Herrenhaus, das wei%s verputzt ist. Man sieht, da%s die Besitzer enorm reich gewesen sein mu%sten." CR>)
(<VERB? THROUGH OPEN>
<COND (<EQUAL? ,HERE ,EAST-OF-HOUSE>
<COND (<FSET? ,KITCHEN-WINDOW ,OPENBIT>
<GOTO ,KITCHEN>)
(T
<TELL "Das Fenster ist geschlossen." CR>
<THIS-IS-IT ,KITCHEN-WINDOW>)>)
(T
<TELL "Es ist nicht offensichtlich, wie du von hier reinkommst." CR>)>)
(<VERB? BURN>
<TELL "Das kann doch nicht dein Ernst sein." CR>)>>
;"0 -> no next, 1 -> success, 2 -> failed move"
<ROUTINE GO-NEXT (TBL "AUX" VAL)
<COND (<SET VAL <LKP ,HERE .TBL>>
<COND (<NOT <GOTO .VAL>> 2)
(T 1)>)>>
<ROUTINE FOREST-F ()
<COND (<VERB? WALK-AROUND>
<COND (<OR <EQUAL? ,HERE
,WEST-OF-HOUSE ,NORTH-OF-HOUSE
,SOUTH-OF-HOUSE>
<EQUAL? ,HERE ,EAST-OF-HOUSE>>
<TELL "Du bist noch nicht einmal im Wald." CR>)>
<GO-NEXT ,FOREST-AROUND>)
(<VERB? DISEMBARK>
<TELL "Du mu%st eine Richtung angeben." CR>)
(<VERB? FIND>
<TELL "Du kannst den Wald vor lauter B%aumen nicht sehen." CR>)
(<VERB? LISTEN>
<TELL "Die Tannen und Fichten scheinen zu murmeln."
CR>)>>
<ROUTINE MOUNTAIN-RANGE-F ()
<COND (<VERB? CLIMB-UP CLIMB-DOWN CLIMB-FOO>
<TELL
"Willst du mir nicht glauben? Die Berge sind nicht un%uberwindlich." CR>)>>
<ROUTINE WATER-F ("AUX" AV W PI?)
<COND (<VERB? SGIVE> <RFALSE>)
(<VERB? THROUGH BOARD>
<TELL <PICK-ONE ,SWIMYUKS> CR>
<RTRUE>)
(<VERB? FILL> ;"fill bottle with water =>"
<SET W ,PRSI> ;"put water in bottle"
<SETG PRSA ,V?PUT>
<SETG PRSI ,PRSO>
<SETG PRSO .W>
<SET PI? <>>)
(<OR <EQUAL? ,PRSO ,GLOBAL-WATER>
<EQUAL? ,PRSO ,WATER>>
<SET W ,PRSO>
<SET PI? <>>)
(ELSE
<SET W ,PRSI>
<COND (.W <SET PI? T>)>)>
<COND (<EQUAL? .W ,GLOBAL-WATER>
<SET W ,WATER>
<COND (<VERB? TAKE PUT> <REMOVE-CAREFULLY .W>)>)>
<COND (.PI? <SETG PRSI .W>)
(T <SETG PRSO .W>)>
<SET AV <LOC ,WINNER>>
<COND (<NOT <FSET? .AV ,VEHBIT>> <SET AV <>>)>
<COND (<AND <VERB? TAKE PUT> <NOT .PI?>>
<COND (<AND .AV
<OR <EQUAL? .AV ,PRSI>
<AND <NOT ,PRSI>
<NOT <IN? .W .AV>>>>>
<TELL
"Es gibt jetzt eine Pf%utze am Boden von " DER-DAT .AV "." CR>
<REMOVE-CAREFULLY ,PRSO>
<MOVE ,PRSO .AV>)
(<AND ,PRSI <NOT <EQUAL? ,PRSI ,BOTTLE>>>
;<TELL "The water leaks out of " DER-DAT ,PRSI
" and evaporates immediately." CR>
<TELL "Das Wasser rinnt aus " DER-DAT ,PRSI " und verdampft sofort.">
<REMOVE-CAREFULLY .W>)
(<IN? ,BOTTLE ,WINNER>
<COND (<NOT <FSET? ,BOTTLE ,OPENBIT>>
<TELL "Die Flasche ist zu." CR>
<THIS-IS-IT ,BOTTLE>)
(<NOT <FIRST? ,BOTTLE>>
<MOVE ,WATER ,BOTTLE>
<TELL "Die Flasche ist jetzt voll Wasser." CR>)
(T
<TELL "Das Wasser rinnt dir durch die Finger." CR>
<RTRUE>)>)
(<AND <IN? ,PRSO ,BOTTLE>
<VERB? TAKE>
<NOT ,PRSI>>
<TELL
"Es ist in der Flasche. Vielleicht solltest du das statt dessen nehmen." CR>)
(T
<TELL "Das Wasser rinnt dir durch die Finger." CR>)>)
(.PI?
<COND (<AND <VERB? PUT>
<GLOBAL-IN? ,RIVER ,HERE>>
<PERFORM ,V?PUT ,PRSO ,RIVER>)
(ELSE
<TELL "Nice try." CR>)>
<RTRUE>)
(<VERB? DROP GIVE>
<COND (<AND <VERB? DROP>
<IN? ,WATER ,BOTTLE>
<NOT <FSET? ,BOTTLE ,OPENBIT>>>
<TELL "Die Flasche ist zu." CR>
<RTRUE>)>
<REMOVE-CAREFULLY ,WATER>
<COND (.AV
<TELL
"Es gibt jetzt eine Pf%utze am Boden von " DER-DAT .AV "." CR>
<MOVE ,WATER .AV>)
(T
<TELL
"Das Wasser ist auf dem Boden versch%uttet und verdampft sofort." CR>
<REMOVE-CAREFULLY ,WATER>)>)
(<VERB? THROW>
<TELL
"Das Wasser spritzt auf die W%ande und verdampft sofort." CR>
<REMOVE-CAREFULLY ,WATER>)>>
<GLOBAL KITCHEN-WINDOW-FLAG <>>
<ROUTINE KITCHEN-WINDOW-F ()
<COND (<VERB? OPEN CLOSE>
<SETG KITCHEN-WINDOW-FLAG T>
<OPEN-CLOSE ,KITCHEN-WINDOW
"Mit gro%ser Anstrengung %offnest du das Fenster weit genug, um einzusteigen."
"The window closes (more easily than it opened).">)
(<AND <VERB? EXAMINE>
<NOT ,KITCHEN-WINDOW-FLAG>>
<TELL
"Das Fenster ist einen Spalt offen, aber nicht genug, um Eintritt zu
gew%ahren. " CR>)
(<VERB? WALK BOARD THROUGH>
<COND (<EQUAL? ,HERE ,KITCHEN>
<DO-WALK ,P?OST>)
(T
<DO-WALK ,P?WEST>)>
<RTRUE>)
(<VERB? LOOK-INSIDE>
<COND (<EQUAL? ,HERE ,KITCHEN>
<TELL "Du kannst einen Kahlschlag sehen, der nach dem Wald f%uhrt." CR>)
(T
<TELL "Du kannst einen Raum sehen, der aussieht wie eine K%uche." CR>)>)>>
<ROUTINE GHOSTS-F ()
<COND (<VERB? TELL>
<TELL "Die Geister johlen laut und beachten dich nicht." CR>
<SETG P-CONT <>>)
(<VERB? EXORCISE>
<TELL "Nur das Zeremoniell hinterl%a%st einen Eindruck." CR>)
(<AND <VERB? ATTACK MUNG> <EQUAL? ,PRSO ,GHOSTS>>
<TELL "Wie kannst du einen Geist mit f%ur Menschen bestimmten Waffen angreifen?" CR>)
(T
<TELL "Es scheint dir unm%oglich mit diesen Geistern zu kommunizieren." CR>)>>
<GLOBAL CAGE-TOP T>
<ROUTINE BASKET-F ()
<COND (<OR <VERB? RAISE>
<AND <VERB? MOVE>
<NOT ,CAGE-TOP>>>
<COND (<AND ,CAGE-TOP
<NOT <VERB? MOVE>>>
<TELL <PICK-ONE ,DUMMY> CR>)
(T
<MOVE ,RAISED-BASKET ,SHAFT-ROOM>
<MOVE ,LOWERED-BASKET ,LOWER-SHAFT>
<SETG CAGE-TOP T>
<THIS-IS-IT ,RAISED-BASKET>
<TELL
"Der Korb ist zum oberen Ende des Schachts hinaufgezogen." CR>)>)
(<OR <VERB? LOWER>
<AND <VERB? MOVE>
,CAGE-TOP>>
<COND (<AND <NOT ,CAGE-TOP>
<NOT <VERB? MOVE>>>
<TELL <PICK-ONE ,DUMMY> CR>)
(T
<MOVE ,RAISED-BASKET ,LOWER-SHAFT>
<MOVE ,LOWERED-BASKET ,SHAFT-ROOM>
<THIS-IS-IT ,LOWERED-BASKET>
<TELL
"Der Korb ist zum unteren Ende des Schacht hinabgelassen." CR>
<SETG CAGE-TOP <>>
<COND (<AND ,LIT <NOT <SETG LIT <LIT? ,HERE>>>>
<TELL "Es ist jetzt stockdunkel." CR>)>
T)>)
(<OR <EQUAL? ,PRSO ,LOWERED-BASKET>
<EQUAL? ,PRSI ,LOWERED-BASKET>>
<TELL "Der Korb ist am anderen Ende der Kette." CR>)
(<AND <VERB? TAKE>
<EQUAL? ,PRSO ,RAISED-BASKET ,LOWERED-BASKET>>
<TELL "Der K%afig ist fest an der Kette angebracht." CR>)>>
<ROUTINE BAT-F ()
<COND (<VERB? TELL>
<FWEEP 6>
<SETG P-CONT <>>)
(<VERB? TAKE ATTACK MUNG>
<COND (<EQUAL? <LOC ,GARLIC> ,WINNER ,HERE>
<TELL "Die kannst du nicht erreichen, die h%angt von der Decke." CR>)
(T <FLY-ME>)>)>>
<ROUTINE FLY-ME ()
<FWEEP 4>
<TELL
"Die Fledermaus ergreift dich am Kragen und hebt dich hoch....." CR CR>
<GOTO <PICK-ONE ,BAT-DROPS> <>>
<COND (<NOT <EQUAL? ,HERE ,ENTRANCE-TO-HADES>>
<V-FIRST-LOOK>)>
T>
<ROUTINE FWEEP (N)
<REPEAT ()
<COND (<L? <SET N <- .N 1>> 1> <RETURN>)
(T <TELL " Huiiiiii!" CR>)>>
<CRLF>>
<GLOBAL BAT-DROPS
<LTABLE 0
MINE-1
MINE-2
MINE-3
MINE-4
LADDER-TOP
LADDER-BOTTOM
SQUEEKY-ROOM
MINE-ENTRANCE>>
<ROUTINE BELL-F ()
<COND (<VERB? RING>
<COND (<AND <EQUAL? ,HERE ,LLD-ROOM>
<NOT ,LLD-FLAG>>
<RFALSE>)
(T
<TELL "Bim, bam." CR>)>)>>
<ROUTINE HOT-BELL-F ()
<COND (<VERB? TAKE>
<TELL "Die Glocke ist sehr hei%s und kann nicht angefa%st werden." CR>)
(<OR <VERB? RUB> <AND <VERB? RING> ,PRSI>>
<COND (<AND <VERB? RUB>
<NOT ,PRSI>>
<SETG PRSI ,HANDS>)>
<COND (<FSET? ,PRSI ,BURNBIT>
<TELL
DER-NOM-CAP ,PRSI " f%angt Feuer und verbrennt." CR>
<REMOVE-CAREFULLY ,PRSI>)
(<EQUAL? ,PRSI ,HANDS>
<TELL "Die Glocke ist zu hei%s zum Anfassen." CR>)
(T
<TELL "Die Hitze, die die Glocke ausstr%omt ist zu stark." CR>)>)
(<VERB? POUR-ON>
<REMOVE-CAREFULLY ,PRSO>
<TELL "Das Wasser k%uhlt die Glocke und verdampft." CR>
;<QUEUE I-XBH 0>
<ENABLE <QUEUE I-XBH 0>>
<I-XBH>)
(<VERB? RING>
<TELL "Die Glocke ist zu hei%s, um dranzufassen." CR>)>>
<ROUTINE BOARDED-WINDOW-FCN ()
<COND (<VERB? OPEN>
<TELL
"Die Fenster sind vernagelt und lassen sich nicht %offnen." CR>)
(<VERB? MUNG>
<TELL "Du kannst die Fenster nicht zerschlagen, um sie zu %offnen." CR>)>>
<ROUTINE NAILS-PSEUDO ()
<COND (<VERB? TAKE>
<TELL
"Die N%agel, die tief in der T%ur eingebettet sind, k%onnen nicht entfernt werden." CR>)>>
<ROUTINE CRACK-FCN ()
<COND (<VERB? THROUGH>
<TELL "Du kannst durch diese Spalte nicht durch." CR>)>>
<ROUTINE KITCHEN-FCN (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Du bist in der K%uche des wei%sen Hauses. Ein Tisch mu%s vor Kurzem zur Bereitung einer Mahlzeit benutzt worden sein. Ein Durchgang f%uhrt nach Westen, und man kann eine dunkle Treppe sehen, die nach oben f%uhrt. Ein dunkler Kamin f%uhrt nach unten. Nach Osten ist ein kleines Fenster, das">
<COND (<FSET? ,KITCHEN-WINDOW ,OPENBIT>
<TELL " offen ist." CR>)
(T
<TELL " einen Spalt offen steht." CR>)>)
(<==? .RARG ,M-BEG>
<COND (<AND <VERB? CLIMB-UP> <EQUAL? ,PRSO ,STAIRS>>
<DO-WALK ,P?RAUF>)
(<AND <VERB? CLIMB-UP> <EQUAL? ,PRSO ,STAIRS>>
<TELL "Es gibt keine Treppe nach unten." CR>)>)>>
<ROUTINE STONE-BARROW-FCN (RARG)
<COND (<AND <EQUAL? .RARG ,M-BEG>
<OR <VERB? ENTER>
<AND <VERB? WALK>
<EQUAL? ,PRSO ,P?WEST ,P?HINEIN>>
<AND <VERB? THROUGH>
<EQUAL? ,PRSO ,BARROW>>>>
<TELL
"In dem H%ugelgrab|
Wenn du das H%ugelgrab betrittst, schlie%st sich die T%ur f%ur immer hinter dir. Um dich herum ist es finster, aber vor dir ist eine enorme %Offnung, die hell erleuchtet ist. Durch ihr Mitte flie%st ein breiter Strom. %Uber den Strom spannt sich eine h%olzerne Fu%sg%angerbr%ucke. In der Luft schwebt ein gro%ses Schild. Darauf steht: Ihr alle, die ihr vor dieser Br%ucke steht, habt ein gro%ses und beschwerliches Abenteuer hinter euch, das eure Intelligenz und euren Mut gepr%uft hat. Ihr habt den ersten Teil der drei Zorkspiele geschafft. Diejenigen, die %uber diese Br%ucke schreiten m%ussen bereit sein ein noch gr%o%seres Abenteuer zu erleben, das eure Leistung und Tapferkeit ernstlich pr%ufen wird!">
;<COND (<EQUAL? <BAND <GETB 0 1> 8> 0>)>
;<TELL "the first part of the ZORK trilogy. Those who pass over this bridge must be prepared to undertake an even greater adventure that will severely test your skill and bravery!|
|
The ZORK trilogy continues with %>ZORK II: The Wizard of Frobozz%< and
is completed in %>ZORK III: The Dungeon Master.%<" CR>
;(T
<TELL "ZORK: The Great Underground Empire.|" CR>)
<CRLF> <CRLF>
;"The ZORK trilogy continues with %>ZORK II: The Wizard of Frobozz%< and is completed in %>ZORK III: The Dungeon Master.%<"
<TELL "Das dreiteilige ZORKspiel geht weiter mit
%>ZORK II: Der Hexenmeister von Frobozz%< und endet mit %>ZORK III: Der
Kerkermeister%<.">
<FINISH>)>>
<ROUTINE BARROW-DOOR-FCN ()
<COND (<VERB? OPEN CLOSE>
<TELL "Die T%ur ist zu schwer." CR>)>>
<ROUTINE BARROW-FCN ()
<COND (<VERB? THROUGH>
<DO-WALK ,P?WEST>)>>
<ROUTINE TROPHY-CASE-FCN ()
<COND (<AND <VERB? TAKE> <EQUAL? ,PRSO ,TROPHY-CASE>>
<TELL
"Der Troph%aenschrank ist unverr%uckbar an der Wand befestigt." CR>)>>
<GLOBAL RUG-MOVED <>>
<ROUTINE LIVING-ROOM-FCN (RARG "AUX" RUG? TC)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Du bist im Wohnzimmer. Da sind eine T%ur nach Osten">
<COND (,MAGIC-FLAG
<TELL
". Nach Westen gibt es eine zyklopenf%ormige %Offnung in einer alten T%ur dar%uber gibt es einige uralte Runen, ">)
(T
<TELL
", eine vernagelte Holzt%ur mit fremden Runen, ">)>
<TELL "ein Troph%aenschrank, ">
<SET RUG? ,RUG-MOVED>
<COND (<AND .RUG? <FSET? ,TRAP-DOOR ,OPENBIT>>
<TELL
"und ein Teppich liegt neben einer Fallt%ur.">)
(.RUG?
<TELL
"und eine geschlossene Fallt%ur bei deinen F%ussen.">)
(<FSET? ,TRAP-DOOR ,OPENBIT>
<TELL "und eine offene Fallt%ur bei deinen F%ussen.">)
(T
<TELL"und ein Perserteppich in der Mitte.">)>
<CRLF>
T)
(<EQUAL? .RARG ,M-END>
<COND (<OR <VERB? TAKE>
<AND <VERB? PUT>
<EQUAL? ,PRSI ,TROPHY-CASE>>>
<COND (<IN? ,PRSO ,TROPHY-CASE>
<TOUCH-ALL ,PRSO>)>
<SETG SCORE <+ ,BASE-SCORE <OTVAL-FROB>>>
<SCORE-UPD 0>
<RFALSE>)>)>>
<ROUTINE TOUCH-ALL (OBJ "AUX" F)
<SET F <FIRST? .OBJ>>
<REPEAT ()
<COND (<NOT .F> <RETURN>)
(T
<FSET .F ,TOUCHBIT>
<COND (<FIRST? .F> <TOUCH-ALL .F>)>)>
<SET F <NEXT? .F>>>>
<ROUTINE OTVAL-FROB ("OPTIONAL" (O ,TROPHY-CASE) "AUX" F (SCORE 0))
<SET F <FIRST? .O>>
<REPEAT ()
<COND (<NOT .F> <RETURN .SCORE>)>
<SET SCORE <+ .SCORE <GETP .F ,P?TVALUE>>>
<COND (<FIRST? .F> <OTVAL-FROB .F>)>
<SET F <NEXT? .F>>>>
<ROUTINE TRAP-DOOR-FCN ()
<COND (<VERB? RAISE>
<PERFORM ,V?OPEN ,TRAP-DOOR>
<RTRUE>)
(<AND <VERB? OPEN CLOSE>
<EQUAL? ,HERE ,LIVING-ROOM>>
<OPEN-CLOSE ,PRSO
"Die T%ur %offnet sich m%uhsam, und bringt eine bauf%allige Treppe zum Vorschein, die nach unten in die Dunkelheit f%uhrt."
"The door swings shut and closes.">)
(<AND <VERB? LOOK-UNDER> <EQUAL? ,HERE LIVING-ROOM>>
<COND (<FSET? ,TRAP-DOOR ,OPENBIT>
<TELL
"Du siehst eine wackelige Treppe, die in die Dunkelheit f%uhrt." CR>)
(T <TELL "Sie ist geschlossen." CR>)>)
(<EQUAL? ,HERE ,CELLAR>
<COND (<AND <VERB? OPEN UNLOCK>
<NOT <FSET? ,TRAP-DOOR ,OPENBIT>>>
<TELL
"Die T%ur ist von oben abgeschlossen." CR>)
(<AND <VERB? CLOSE> <NOT <FSET? ,TRAP-DOOR ,OPENBIT>>>
<FCLEAR ,TRAP-DOOR ,TOUCHBIT>
<FCLEAR ,TRAP-DOOR ,OPENBIT>
<TELL "Die T%ur geht zu und und verschlie%st sich." CR>)
(<VERB? OPEN CLOSE>
<TELL <PICK-ONE ,DUMMY> CR>)>)>>
<ROUTINE CELLAR-FCN (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Du bist in einem dunklen und muffigen Keller mit einem schmalen Durchgang nach Norden und einem niedrigen Tunnel nach S%uden. Im Westen ist das Ende einer steilen Metallrampe, die nicht erklimmbar ist." CR>)
(<EQUAL? .RARG ,M-ENTER>
<COND (<AND <FSET? ,TRAP-DOOR ,OPENBIT>
<NOT <FSET? ,TRAP-DOOR ,TOUCHBIT>>>
<FCLEAR ,TRAP-DOOR ,OPENBIT>
<FSET ,TRAP-DOOR ,TOUCHBIT>
<TELL
"Die Fallt%ur kracht zu, und du h%orst, da%s jemand sie verriegelt." CR CR>)>)>>
<ROUTINE CHIMNEY-F ()
<COND (<VERB? EXAMINE>
<TELL "Der Kamin geht nach ">
<COND (<==? ,HERE ,KITCHEN>
<TELL "unten">)
(T <TELL "oben">)>
<TELL " und sieht erklimmbar aus." CR>)>>
<ROUTINE UP-CHIMNEY-FUNCTION ("AUX" F)
<COND (<NOT <SET F <FIRST? ,WINNER>>>
<TELL "Mit leeren H%anden nach oben gehen ist keine gute Idee." CR>
<RFALSE>)
(<AND <OR <NOT <SET F <NEXT? .F>>>
<NOT <NEXT? .F>>>
<IN? ,LAMP ,WINNER>>
<COND (<NOT <FSET? ,TRAP-DOOR ,OPENBIT>>
<FCLEAR ,TRAP-DOOR ,TOUCHBIT>)>
<RETURN ,KITCHEN>)
(T
<TELL "Mit dem, was du da schleppst, kannst du da nicht hinauf." CR>
<RFALSE>)>>
<ROUTINE TRAP-DOOR-EXIT ()
<COND (,RUG-MOVED
<COND (<FSET? ,TRAP-DOOR ,OPENBIT>
<RETURN ,CELLAR>)
(T
<TELL "Die Fallt%ur ist geschlossen." CR>
<THIS-IS-IT ,TRAP-DOOR>
<RFALSE>)>)
(T
<TELL "You can't go that way." CR>
<RFALSE>)>>
<ROUTINE RUG-FCN ()
<COND (<VERB? RAISE>
<TELL "Der Teppich ist zu schwer, um ihn aufzuheben">
<COND (,RUG-MOVED
<TELL "." CR>)
(T
<TELL
", aber beim Versuchen hast du gemerkt, da%s darunter eine Unebenheit
ist." CR>)>)
(<VERB? MOVE PUSH>
<COND (,RUG-MOVED
<TELL
"Nachdem du vorher den Teppich weggezogen hast, findest du es jetzt unm%oglich ihn zur%uckzuziehen." CR>)
(T
<TELL
"Mit gr%o%ster Anstrengung ist der Teppich aus dem Weg gezerrt. Die staubige Oberfl%ache einer geschlossenen Fallt%ure kommt zum Vorschein." CR>
<FCLEAR ,TRAP-DOOR ,INVISIBLE>
<THIS-IS-IT ,TRAP-DOOR>
<SETG RUG-MOVED T>)>)
(<VERB? TAKE>
<TELL
"Der Teppich ist %au%serst schwer und man kann ihn nicht tragen." CR>)
(<AND <VERB? LOOK-UNDER>
<NOT ,RUG-MOVED>
<NOT <FSET? ,TRAP-DOOR ,OPENBIT>>>
<TELL
"Unter dem Teppich ist eine geschlossene Fallt%ur. Wenn du den Teppich losl%a%st, ist die Fallt%ur wieder versteckt." CR>)
(<VERB? CLIMB-ON>
<COND (<AND <NOT ,RUG-MOVED>
<NOT <FSET? ,TRAP-DOOR ,OPENBIT>>>
<TELL
"W%ahrend du da sitzt bemerkst du eine Unebenheit darunter. Um nicht unbequem zu sitzen, stehst du wieder auf." CR>)
(ELSE
<TELL "Ich nehme an, da%s du denkst, es w%are ein fliegender Teppich?" CR>)>)>>
"SUBTITLE TROLL"
<ROUTINE AXE-F ()
<COND (,TROLL-FLAG <>)
(T <WEAPON-FUNCTION ,AXE ,TROLL>)>>
<ROUTINE STILETTO-FUNCTION ()
<WEAPON-FUNCTION ,STILETTO ,THIEF>>
<ROUTINE WEAPON-FUNCTION (W V)
<COND (<NOT <IN? .V ,HERE>> <RFALSE>)
(<VERB? TAKE>
<COND (<IN? .W .V>
;<TELL
DER-NOM-CAP .V " schwingt " DER-ACC .V " au%ser Reichweite." CR>)
(T
<TELL
DER-NOM-CAP .W " scheint gl%uhend hei%s. Du kannst es nicht in der Hand halten." CR>)>
T)>>
<ROUTINE TROLL-FCN ("OPTIONAL" (MODE <>))
<COND (<VERB? TELL>
<SETG P-CONT <>>
<TELL "Der Troll ist nicht der ideale Gespr%achspartner." CR>)
(<EQUAL? .MODE ,F-BUSY?>
<COND (<IN? ,AXE ,TROLL> <>)
(<AND <IN? ,AXE ,HERE> <PROB 75 90>>
<FSET ,AXE ,NDESCBIT>
<FCLEAR ,AXE ,WEAPONBIT>
<MOVE ,AXE ,TROLL>
<PUTP ,TROLL ,P?LDESC
"Ein widerlicher Troll, der eine blutige Axt schwingt, blockiert alle Ausg%ange aus dem Zimmer.">
<AND <IN? ,TROLL ,HERE>
<TELL
"Der Troll holt sich seine Waffe zur%uck. Er ist b%ose und besch%amt. Er scheint sich mit dir an binden zu wollen." CR>>
T)
(<IN? ,TROLL ,HERE>
<PUTP ,TROLL ,P?LDESC
"Ein unsinnig vor sich hin murmelnder Troll ist hier.">
<TELL
"Der jetzt entwaffnete Troll kriecht vor Furcht in die Ecke und bittet mit heiserer Trollstimme um sein Leben." CR>
T)>)
(<EQUAL? .MODE ,F-DEAD>
<COND (<IN? ,AXE ,TROLL>
<MOVE ,AXE ,HERE>
<FCLEAR ,AXE ,NDESCBIT>
<FSET ,AXE ,WEAPONBIT>)>
<SETG TROLL-FLAG T>)
(<EQUAL? .MODE ,F-UNCONSCIOUS>
<FCLEAR ,TROLL ,FIGHTBIT>
<COND (<IN? ,AXE ,TROLL>
<MOVE ,AXE ,HERE>
<FCLEAR ,AXE ,NDESCBIT>
<FSET ,AXE ,WEAPONBIT>)>
<PUTP ,TROLL ,P?LDESC
"Ein bewu%stloser Troll liegt auf der Erde. All Durchg%ange aus dem Zimmer sind ge%offnet.">
<SETG TROLL-FLAG T>)
(<EQUAL? .MODE ,F-CONSCIOUS>
<COND (<IN? ,TROLL ,HERE>
<FSET ,TROLL ,FIGHTBIT>
<TELL
"Der Troll r%uhrt sich und nimmt schnell eine Kampfstellung ein." CR>)>
<COND (<IN? ,AXE ,TROLL>
<PUTP ,TROLL ,P?LDESC
"Ein widerlicher Troll, der eine blutige Axt schwingt, blockiert alle Ausg%ange aus dem Zimmer.">)
(<IN? ,AXE ,TROLL-ROOM>
<FSET ,AXE ,NDESCBIT>
<FCLEAR ,AXE ,WEAPONBIT>
<MOVE ,AXE ,TROLL>
<PUTP ,TROLL ,P?LDESC
"Ein widerlicher Troll, der eine blutige Axt schwingt, blockiert alle Ausg%ange aus dem Zimmer.">)
(T
<PUTP ,TROLL ,P?LDESC "Ein Troll ist hier.">)>
<SETG TROLL-FLAG <>>)
(<EQUAL? .MODE ,F-FIRST?>
<COND (<PROB 33>
<FSET ,TROLL ,FIGHTBIT>
<SETG P-CONT <>>
T)>)
(<NOT .MODE>
<COND (<VERB? EXAMINE>
<TELL <GETP ,TROLL ,P?LDESC> CR>)
(<OR <AND <VERB? THROW GIVE>
,PRSO
<EQUAL? ,PRSI ,TROLL>>
<VERB? TAKE MOVE MUNG>>
<AWAKEN ,TROLL>
<COND (<VERB? THROW GIVE>
<COND (<AND <EQUAL? ,PRSO ,AXE>
<IN? ,AXE ,WINNER>>
<TELL
"Der Troll kratzt sich verwirrt am Kopf, dann nimmt er die Axt auf." CR>
<FSET ,TROLL ,FIGHTBIT>
<MOVE ,AXE ,TROLL>
<RTRUE>)
(<EQUAL? ,PRSO ,TROLL ,AXE>
;<TELL
"You would have to get the " DER-ACC ,PRSO " first, and that seems unlikely." CR>
<TELL "Du m%u%stest " DER-ACC ,PRSO " zuerst holen, aber das scheint unm%oglich.">
<RTRUE>)>
<COND (<VERB? THROW>
<TELL
"Der Troll, der ungemein sportlich ist, f%angt " DER-ACC ,PRSO>)
(T
<TELL
"Der Troll, der keinen gro%sen Stolz hat, akzeptiert das Geschenk">)>
<COND (<AND <PROB 20>
<EQUAL? ,PRSO ,KNIFE ,SWORD ,AXE>>
<REMOVE-CAREFULLY ,PRSO>
<TELL
" und fri%st " PRONOUN-ACC ,PRSO " mit Appetit. Armer Troll, er stirbt an einer inneren Blutung und sein Gerippe verschwindet in einem b%osen schwarzen Nebel." CR>
<REMOVE-CAREFULLY ,TROLL>
<APPLY <GETP ,TROLL ,P?ACTION> ,F-DEAD>
<SETG TROLL-FLAG T>)
(<EQUAL? ,PRSO ,KNIFE ,SWORD ,AXE>
<MOVE ,PRSO ,HERE>
;<TELL
" and, being for the moment sated, throws" PRONOUN-ACC ,PRSO " back.
Fortunately, the
troll has poor control, and the " DER-NOM ,PRSO " falls to the floor. He does
not look pleased." CR>
<TELL
" und da er momentan ges%attigt ist, wirft er " DER-ACC ,PRSO " zur%uck. Gott sei Dank hat der Troll kein Wurftalent und " DER-ACC ,PRSO " f%allt auf die Erde. Er sieht nicht sehr gl%ucklich aus." CR>
<FSET ,TROLL ,FIGHTBIT>)
(T
;<TELL
" and not having the most discriminating tastes, gleefully eats it." CR>
<TELL " und da er kein gro%ser Feinschmecker ist, fri%st er es gierig." CR>
<REMOVE-CAREFULLY ,PRSO>)>)
(<VERB? TAKE MOVE>
<TELL
"Der Troll spuckt dir ins Gesicht, zischt in einem recht primitiven Dialekt:
%>N%achstes Mal mehr Gl%uck.%<" CR>)
(<VERB? MUNG>
<TELL
"Der Troll lacht %uber deine hilflose Geste." CR>)>)
(<VERB? LISTEN>
<TELL
"Hier und da sagt der Troll mit seiner heiseren Trollstimme etwas, das wohl beleidigend ist." CR>)
(<AND ,TROLL-FLAG <VERB? HELLO>>
<TELL "Leider kann der Troll dich nicht h%oren." CR>)>)>>
"SUBTITLE GRATING/MAZE"
;<GLOBAL LEAVES-GONE <>> ;"no longer used?"
<GLOBAL GRATE-REVEALED <>>
<GLOBAL GRUNLOCK <>>
<ROUTINE LEAVES-APPEAR ()
<COND (<AND <NOT <FSET? ,GRATE ,OPENBIT>>
<NOT ,GRATE-REVEALED>>
<COND (<VERB? MOVE TAKE>
<TELL
"Beim St%obern im Bl%atterhaufen kommt ein Gitter zum Vorschein." CR>)
(T <TELL
"Als die Bl%atter aus dem Weg sind, zeigt sich ein Gitter." CR>)>
<FCLEAR ,GRATE ,INVISIBLE>
<SETG GRATE-REVEALED T>)>
<>>
<ROUTINE LEAF-PILE ()
<COND (<VERB? COUNT>
<TELL "Es gibt hier 69.105 Bl%atter." CR>)
(<VERB? BURN>
<LEAVES-APPEAR>
<REMOVE-CAREFULLY ,PRSO>
<COND (<IN? ,PRSO ,HERE>
<TELL "Die Bl%atter brennen." CR>)
(T
<JIGS-UP
"Die Bl%atter stehen in Flammen, und du mit.">)>)
(<VERB? CUT>
<TELL "Du stocherst in den Bl%attern herum und machst eine beachtliche Schweinerei." CR>
<LEAVES-APPEAR>
<RTRUE>)
(<VERB? MOVE TAKE>
<COND (<VERB? MOVE>
<TELL "Geschafft." CR>)>
<COND (,GRATE-REVEALED <RFALSE>)>
<LEAVES-APPEAR>
<COND (<VERB? TAKE> <RFALSE>)
(T <RTRUE>)>)
(<AND <VERB? LOOK-UNDER>
<NOT ,GRATE-REVEALED>>
<TELL
"Unter dem Bl%atterhaufen ist ein Gitter. Wenn du die Bl%atter fallen l%a%st, ist das Gitter wieder versteckt." CR>)>>
<ROUTINE CLEARING-FCN (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<COND (<NOT ,GRATE-REVEALED>
<FSET ,GRATE ,INVISIBLE>)>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"Du stehst auf einer Lichtung, und ein Wald umgibt dich von allen Seiten. Ein Pfad f%uhrt nach S%uden.">
<COND (<FSET? ,GRATE ,OPENBIT>
<CRLF>
<TELL
"Da befindet sich ein offenes Gitter, das in die Dunkelheit hinabf%uhrt.">)
(,GRATE-REVEALED
<CRLF>
<TELL
"Da ist ein Gitter, das Fest im Boden befestigt ist.">)>
<CRLF>)>>
<ROUTINE MAZE-11-FCN (RARG)
<COND (<EQUAL? .RARG ,M-ENTER>
<FCLEAR ,GRATE ,INVISIBLE>)
(<EQUAL? .RARG ,M-LOOK>
<TELL
"Du bist in einem kleinen Zimmer bei dem Irrgarten. Es gibt hier in der N%ahe kleine verwirrende G%ange." CR>
<COND (<FSET? ,GRATE ,OPENBIT>
<TELL
"%Uber dir ist ein offenes Gitter, durch das Sonnenlicht hereinflutet.">)
(,GRUNLOCK
<TELL "%Uber dir ist ein Gitter.">)
(T
<TELL
"%Uber dir ist ein Gitter, das mit einem Schlo%s, das aus einem Totenkopf und Gebeinen gemacht ist, verschlossen ist.">)>
<CRLF>)>>
<ROUTINE GRATE-FUNCTION ()
<COND (<AND <VERB? OPEN> <EQUAL? ,PRSI ,KEYS>>
<PERFORM ,V?UNLOCK ,GRATE ,KEYS>
<RTRUE>)
(<VERB? LOCK>
<COND (<EQUAL? ,HERE ,GRATING-ROOM>
<COND (,GRUNLOCK
<TELL "Das Gitter wird verschlossen." CR>)
(T
<TELL "Das Gitter ist schon verschlossen." CR>)>)
(<EQUAL? ,HERE ,GRATING-CLEARING>
<TELL "Du kannst es von innen nicht verschlie%sen." CR>)>)
(<AND <VERB? UNLOCK> <EQUAL? ,PRSO ,GRATE>>
<COND (<AND <EQUAL? ,HERE ,GRATING-ROOM> <EQUAL? ,PRSI ,KEYS>>
<COND (,GRUNLOCK
<TELL "Das Gitter ist schon aufgeschlo%sen." CR>)
(T
<TELL "Das Gitter wird aufgeschlo%sen." CR>)>
<SETG GRUNLOCK T>)
(<AND <EQUAL? ,HERE ,GRATING-CLEARING>
<EQUAL? ,PRSI ,KEYS>>
<TELL "Du kannst das Schlo%s von hier aus nicht erreichen." CR>)
(<AND <EQUAL? ,HERE ,GRATING-ROOM>
<EQUAL? ,PRSI ,HANDS>> ;"performed from v-unlock"
<TELL "You can't unlock it with your hands." CR>)
(T
<TELL
"Du kannst das Gitter nicht mit " DER-DAT ,PRSI " aufschlie%sen?" CR>)>)
(<VERB? PICK>
<TELL "Du kannst das Schlo%s nicht knacken." CR>)
(<VERB? OPEN CLOSE>
<COND (,GRUNLOCK
<OPEN-CLOSE ,GRATE
<COND (<EQUAL? ,HERE ,CLEARING>
"Das Gitter ist zu %offnen.")
(T
"Das Gitter %offnet sich und bringt B%aume %uber dir zum Vorschein.")>
"Das Gitter ist geschlo%sen.">
<COND (<FSET? ,GRATE ,OPENBIT>
<COND (<AND <NOT <EQUAL? ,HERE ,CLEARING>>
<NOT ,GRATE-REVEALED>>
<TELL
"Ein Haufen Bl%atter f%allt auf deinen Kopf und auf die Erde." CR>
<SETG GRATE-REVEALED T>
<MOVE ,LEAVES ,HERE>)>
<FSET ,GRATING-ROOM ,ONBIT>)
(T <FCLEAR ,GRATING-ROOM ,ONBIT>)>)
(T <TELL "Das Gitter ist verschlo%sen." CR>)>)
(<AND <VERB? PUT> <EQUAL? ,PRSI ,GRATE>>
<COND (<G? <GETP ,PRSO ,P?SIZE> 20>
<TELL PRONOUN-NOM-CAP ,PRSO " pa%st nicht durch das Gitter." CR>)
(T
<MOVE ,PRSO ,GRATING-ROOM>
<TELL
DER-NOM-CAP ,PRSO " verschwindet durch das Gitter in die Dunkelheit, die darunter herrscht." CR>)>)>>
<ROUTINE MAZE-DIODES ()
<TELL
"Wenn dieser Tunnel das n%achste Zimmer erreicht, kannst du ihn nicht mehr
als R%uckweg benutzen." CR CR>
<COND (<EQUAL? ,HERE ,MAZE-2> ,MAZE-4)
(<EQUAL? ,HERE ,MAZE-7> ,DEAD-END-1)
(<EQUAL? ,HERE ,MAZE-9> ,MAZE-11)
(<EQUAL? ,HERE ,MAZE-12> ,MAZE-5)>>
<ROUTINE RUSTY-KNIFE-FCN ()
<COND (<VERB? TAKE>
<AND <IN? ,SWORD ,WINNER>
<TELL
"Als du das rostige Messer anfa%st, blitzt dein Schwert kurz mit einem einem blendenden blauen Licht auf." CR>>
<>)
(<OR <AND <EQUAL? ,PRSI ,RUSTY-KNIFE>
<VERB? ATTACK>>
<AND <VERB? SWING>
<EQUAL? ,PRSO ,RUSTY-KNIFE>
,PRSI>>
<REMOVE-CAREFULLY ,RUSTY-KNIFE>
<JIGS-UP
"Als das Messer sich seinem Opfer n%ahert, wird dein Gehirn von einem Willen %uberw%altigt, den du nicht meisterst. Langsam dreht sich deine Hand bis die rostige Schneide 2 cm von deinem Hals entfernt ist. Das Messer scheint zu singen, als es auf brutalste Weise deinen Hals durchschneidet.">)>>
<ROUTINE KNIFE-F ()
<COND (<VERB? TAKE>
<FCLEAR ,ATTIC-TABLE ,NDESCBIT>
<RFALSE>)>>
<ROUTINE SKELETON ()
<COND (<VERB? TAKE RUB MOVE PUSH RAISE LOWER ATTACK KICK KISS>
<TELL
"Ein Geist erscheint in dem Zimmer und ist entsetzt %uber deine Sch%andung der Leiche eines Abenteuererkollegen. Er verflucht deine Wertsachen, und verbannt sie in das Land der lebendigen Toten. Der Geist verschwindet unter einem Schwall von ordin%aren Ausdr%ucken. " CR>
<ROB ,HERE ,LAND-OF-LIVING-DEAD 100>
<ROB ,ADVENTURER ,LAND-OF-LIVING-DEAD>
T)>>
<ROUTINE TORCH-OBJECT ()
<COND (<VERB? EXAMINE>
<TELL "Die Fackel brennt." CR>)
(<AND <VERB? POUR-ON>
<EQUAL? ,PRSI ,TORCH>>
<TELL "Das Wasser verdampft bevor es mit der Fackel in Ber%uhrung kommt." CR>)
(<AND <VERB? LAMP-OFF> <FSET? ,PRSO ,ONBIT>>
<TELL
"Du verbrennst dir beinahe die Hand, als du versuchst, die Flamme zu
l%oschen." CR>)>>
"SUBTITLE MIRROR, MIRROR, ON THE WALL"
<ROUTINE MIRROR-ROOM (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Du bist in einem viereckigen Zimmer mit hohen Decken. An der S%udwand ist ein riesiger Spiegel, der die ganze Wand einnimmt. Es gibt Ausg%ange an den anderen drei Seiten des Zimmers." CR>
<COND (,MIRROR-MUNG
<TELL
"Leider ging der Spiegel durch deine Bl%odheit kaputt." CR>)>)>>
<GLOBAL MIRROR-MUNG <>>
<GLOBAL LUCKY T>
<ROUTINE MIRROR-MIRROR ("AUX" RM2 L1 L2 N)
<SET RM2 ,MIRROR-ROOM-2>
<COND (<AND <NOT ,MIRROR-MUNG> <VERB? RUB>>
<COND (<AND ,PRSI <NOT <EQUAL? ,PRSI ,HANDS>>>
<TELL
"Du f%uhlst ein leichtes Kribbeln, das von " DER-ACC ,PRSI " ausgeht." CR>
<RTRUE>)>
<COND (<EQUAL? ,HERE .RM2>
<SET RM2 ,MIRROR-ROOM-1>)>
<SET L1 <FIRST? ,HERE>>
<SET L2 <FIRST? .RM2>>
<REPEAT ()
<COND (<NOT .L1> <RETURN>)>
<SET N <NEXT? .L1>>
<MOVE .L1 .RM2>
<SET L1 .N>>
<REPEAT ()
<COND (<NOT .L2> <RETURN>)>
<SET N <NEXT? .L2>>
<MOVE .L2 ,HERE>
<SET L2 .N>>
<GOTO .RM2 <>>
<TELL
"Ein Grollen ert%ont aus der Tiefe, so da%s der Raum bebt." CR>)
(<VERB? LOOK-INSIDE EXAMINE>
<COND (,MIRROR-MUNG
<TELL "Der Spiegel ist in viele Scherben zerbrochen.">)
(T
<TELL
"Eine h%a%sliche Person starrt aus dem Spiegel zur%uck.">)>
<CRLF>)
(<VERB? TAKE>
<TELL
"Der Spiegel ist mehrmals so gro%s wie du. Gib's auf!" CR>)
(<VERB? MUNG THROW ATTACK>
<COND (,MIRROR-MUNG
<TELL
"Hast du denn nicht schon genug Schaden angerichtet?" CR>)
(T
<SETG MIRROR-MUNG T>
<SETG LUCKY <>>
<TELL
"Du hast den Spiegel zerbrochen. Ich hoffe, du hast sieben Jahre Gl%uck zur Hand." CR>)>)>>
"SUBTITLE THE DOME"
<ROUTINE TORCH-ROOM-FCN (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>
<TELL
"Dies ist ein gro%ser Raum, in dessen Mitte sich ein kleiner Schacht befindet,
der durch den Fu%sboden in die Dunkelheit verschwindet. Nach Westen und Norden gibt es Ausg%ange von diesem Zimmer. %Uber dem Schacht hat man ein Metallgeh%ause gebaut, an dem eine schwere, eiserne Kette befestigt ist. An dem anderen Ende der Kette h%angt ein Korb." CR>
<COND (,DOME-FLAG
<TELL
"Ein Seil h%angt von dem Gel%ander runter und endet 3 Meter %uber deinem Kopf. " CR>)>)>>
<ROUTINE DOME-ROOM-FCN (RARG)
<COND (<EQUAL? .RARG ,M-LOOK>