Final Revision
authorhistoricalsource <historicalsoftware@textfiles.com>
Sun, 14 Apr 2019 02:43:52 +0000 (22:43 -0400)
committerhistoricalsource <historicalsoftware@textfiles.com>
Sun, 14 Apr 2019 02:43:52 +0000 (22:43 -0400)
71 files changed:
README.md [new file with mode: 0644]
actions.zabstr [new file with mode: 0644]
actions.zap [new file with mode: 0644]
actions.zil [new file with mode: 0644]
chunk.script [new file with mode: 0644]
clock.zabstr [new file with mode: 0644]
clock.zap [new file with mode: 0644]
clock.zil [new file with mode: 0644]
combat.log [new file with mode: 0644]
dungeon.zabstr [new file with mode: 0644]
dungeon.zap [new file with mode: 0644]
dungeon.zil [new file with mode: 0644]
file.zil [new file with mode: 0644]
flush.cmd [new file with mode: 0644]
g.actions [new file with mode: 0644]
g.deaths [new file with mode: 0644]
g.fight [new file with mode: 0644]
g.full [new file with mode: 0644]
g.things [new file with mode: 0644]
gender.script [new file with mode: 0644]
german.chars [new file with mode: 0644]
german.hex [new file with mode: 0644]
globals.zabstr [new file with mode: 0644]
globals.zap [new file with mode: 0644]
globals.zil [new file with mode: 0644]
hints.zabstr [new file with mode: 0644]
hints.zap [new file with mode: 0644]
hints.zil [new file with mode: 0644]
loop.zabstr [new file with mode: 0644]
loop.zap [new file with mode: 0644]
loop.zil [new file with mode: 0644]
old-hints.zil [new file with mode: 0644]
parser.cmp [new file with mode: 0644]
parser.zabstr [new file with mode: 0644]
parser.zap [new file with mode: 0644]
parser.zil [new file with mode: 0644]
pre-umlaut-dungeon.zil [new file with mode: 0644]
pre-umlaut-syntax.zil [new file with mode: 0644]
rmode.init [new file with mode: 0644]
script.actions [new file with mode: 0644]
script.deaths [new file with mode: 0644]
script.defaults [new file with mode: 0644]
script.fight [new file with mode: 0644]
script.full [new file with mode: 0644]
script.globals [new file with mode: 0644]
script.input [new file with mode: 0644]
script.parser [new file with mode: 0644]
script.things [new file with mode: 0644]
syntax.zil [new file with mode: 0644]
tells.zabstr [new file with mode: 0644]
tells.zap [new file with mode: 0644]
tells.zil [new file with mode: 0644]
verbs.zabstr [new file with mode: 0644]
verbs.zap [new file with mode: 0644]
verbs.zil [new file with mode: 0644]
zap [new file with mode: 0644]
zork1.chars [new file with mode: 0644]
zork1.chart [new file with mode: 0644]
zork1.errors [new file with mode: 0644]
zork1.lowcore [new file with mode: 0644]
zork1.record [new file with mode: 0644]
zork1.serial [new file with mode: 0644]
zork1.syms [new file with mode: 0644]
zork1.zap [new file with mode: 0644]
zork1.zil [new file with mode: 0644]
zork1.zip [new file with mode: 0644]
zork1dat.zap [new file with mode: 0644]
zork1freq.xzap [new file with mode: 0644]
zork1pur.zap [new file with mode: 0644]
zork1str.zap [new file with mode: 0644]
zstring.c [new file with mode: 0644]

diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..49869fd
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# zork-german
diff --git a/actions.zabstr b/actions.zabstr
new file mode 100644 (file)
index 0000000..6683363
--- /dev/null
@@ -0,0 +1,431 @@
+
+<DEFINE-ROUTINE WEST-HOUSE> 
+<DEFINE-ROUTINE EAST-HOUSE> 
+<DEFINE-ROUTINE OPEN-CLOSE> 
+<DEFINE-ROUTINE BOARD-F> 
+<DEFINE-ROUTINE TEETH-F> 
+<DEFINE-ROUTINE SONGBIRD-F> 
+<DEFINE-ROUTINE WHITE-HOUSE-F> 
+<DEFINE-ROUTINE GO-NEXT> 
+<DEFINE-ROUTINE FOREST-F> 
+<DEFINE-ROUTINE MOUNTAIN-RANGE-F> 
+<DEFINE-ROUTINE WATER-F> 
+<GLOBAL KITCHEN-WINDOW-FLAG <>> 
+<DEFINE-ROUTINE KITCHEN-WINDOW-F> 
+<DEFINE-ROUTINE GHOSTS-F> 
+<GLOBAL CAGE-TOP T> 
+<DEFINE-ROUTINE BASKET-F> 
+<DEFINE-ROUTINE BAT-F> 
+<DEFINE-ROUTINE FLY-ME> 
+<DEFINE-ROUTINE FWEEP> 
+<GLOBAL BAT-DROPS <LTABLE 0 MINE-1 MINE-2 MINE-3 MINE-4 LADDER-TOP
+LADDER-BOTTOM SQUEEKY-ROOM MINE-ENTRANCE>> 
+<DEFINE-ROUTINE BELL-F> 
+<DEFINE-ROUTINE HOT-BELL-F> 
+<DEFINE-ROUTINE BOARDED-WINDOW-FCN> 
+<DEFINE-ROUTINE NAILS-PSEUDO> 
+<DEFINE-ROUTINE CRACK-FCN> 
+<DEFINE-ROUTINE KITCHEN-FCN> 
+<DEFINE-ROUTINE STONE-BARROW-FCN> 
+<DEFINE-ROUTINE BARROW-DOOR-FCN> 
+<DEFINE-ROUTINE BARROW-FCN> 
+<DEFINE-ROUTINE TROPHY-CASE-FCN> 
+<GLOBAL RUG-MOVED <>> 
+<DEFINE-ROUTINE LIVING-ROOM-FCN> 
+<DEFINE-ROUTINE TOUCH-ALL> 
+<DEFINE-ROUTINE OTVAL-FROB> 
+<DEFINE-ROUTINE TRAP-DOOR-FCN> 
+<DEFINE-ROUTINE CELLAR-FCN> 
+<DEFINE-ROUTINE CHIMNEY-F> 
+<DEFINE-ROUTINE UP-CHIMNEY-FUNCTION> 
+<DEFINE-ROUTINE TRAP-DOOR-EXIT> 
+<DEFINE-ROUTINE RUG-FCN> 
+<DEFINE-ROUTINE AXE-F> 
+<DEFINE-ROUTINE STILETTO-FUNCTION> 
+<DEFINE-ROUTINE WEAPON-FUNCTION> 
+<DEFINE-ROUTINE TROLL-FCN> 
+<GLOBAL GRATE-REVEALED <>> 
+<GLOBAL GRUNLOCK <>> 
+<DEFINE-ROUTINE LEAVES-APPEAR> 
+<DEFINE-ROUTINE LEAF-PILE> 
+<DEFINE-ROUTINE CLEARING-FCN> 
+<DEFINE-ROUTINE MAZE-11-FCN> 
+<DEFINE-ROUTINE GRATE-FUNCTION> 
+<DEFINE-ROUTINE MAZE-DIODES> 
+<DEFINE-ROUTINE RUSTY-KNIFE-FCN> 
+<DEFINE-ROUTINE KNIFE-F> 
+<DEFINE-ROUTINE SKELETON> 
+<DEFINE-ROUTINE TORCH-OBJECT> 
+<DEFINE-ROUTINE MIRROR-ROOM> 
+<GLOBAL MIRROR-MUNG <>> 
+<GLOBAL LUCKY T> 
+<DEFINE-ROUTINE MIRROR-MIRROR> 
+<DEFINE-ROUTINE TORCH-ROOM-FCN> 
+<DEFINE-ROUTINE DOME-ROOM-FCN> 
+<DEFINE-ROUTINE LLD-ROOM> 
+<GLOBAL XB <>> 
+<GLOBAL XC <>> 
+<DEFINE-ROUTINE I-XB> 
+<DEFINE-ROUTINE I-XC> 
+<DEFINE-ROUTINE I-XBH> 
+<GLOBAL GATE-FLAG <>> 
+<GLOBAL GATES-OPEN <>> 
+<DEFINE-ROUTINE DAM-ROOM-FCN> 
+<DEFINE-ROUTINE BOLT-F> 
+<DEFINE-ROUTINE BUBBLE-F> 
+<DEFINE-ROUTINE INTEGRAL-PART> 
+<DEFINE-ROUTINE I-RFILL> 
+<GLOBAL LOUD-RUNS <LTABLE 0 DAMP-CAVE ROUND-ROOM DEEP-CANYON>> 
+<DEFINE-ROUTINE I-REMPTY> 
+<GLOBAL DROWNINGS <TABLE (PURE) "bis an deine Kn%ochel." "bis an dein Kinn."
+"bis an deine Knie." "bis an deine H%uften." "bis an deine Taille."
+"bis an deine Brust." "bis an deinen Hals." "%uber deinen Kopf."
+"hoch in deiner Lunge.">> 
+<GLOBAL WATER-LEVEL 0> 
+<GDECL (WATER-LEVEL) FIX> 
+<DEFINE-ROUTINE BUTTON-F> 
+<DEFINE-ROUTINE TOOL-CHEST-FCN> 
+<DEFINE-ROUTINE I-MAINT-ROOM> 
+<DEFINE-ROUTINE LEAK-FUNCTION> 
+<DEFINE-ROUTINE FIX-MAINT-LEAK> 
+<DEFINE-ROUTINE PUTTY-FCN> 
+<DEFINE-ROUTINE TUBE-FUNCTION> 
+<DEFINE-ROUTINE DAM-FUNCTION> 
+<DEFINE-ROUTINE WITH-TELL> 
+<DEFINE-ROUTINE RESERVOIR-SOUTH-FCN> 
+<DEFINE-ROUTINE RESERVOIR-FCN> 
+<DEFINE-ROUTINE RESERVOIR-NORTH-FCN> 
+<DEFINE-ROUTINE BOTTLE-FUNCTION> 
+<GLOBAL CYCLOWRATH 0> 
+<DEFINE-ROUTINE CYCLOPS-FCN> 
+<DEFINE-ROUTINE I-CYCLOPS> 
+<DEFINE-ROUTINE CYCLOPS-ROOM-FCN> 
+<GLOBAL CYCLOMAD <TABLE (PURE) "Der Zyklop scheint irgendwie ver%argert."
+"Der Zyklop scheint immer %argerlicher zu werden."
+"Der Zyklop wandert durch das Zimmer, als ob er nach etwas sucht."
+"Der Zyklop hat nach Salz und Pfeffer gesucht. Es besteht kein Zweifel, da%s er sich seine bevorstehende Mahlzeit damit w%urzen will."
+"Der Zyklop kommt dir auf eine sehr unangenehme Weise n%aher und n%aher."
+"F%ur dich bestehen hier zwei M%oglichkeiten: 1. Abhauen. 2. Zur Mahlzeit werden."
+>> 
+<GLOBAL LOUD-FLAG <>> 
+<DEFINE-ROUTINE LOUD-ROOM-FCN> 
+<DEFINE-ROUTINE DEEP-CANYON-F> 
+<GLOBAL EGG-SOLVE <>> 
+<GLOBAL THIEF-HERE <>> 
+<DEFINE-ROUTINE THIEF-VS-ADVENTURER> 
+<DEFINE-ROUTINE STOLE-LIGHT?> 
+<DEFINE-ROUTINE HACK-TREASURES> 
+<DEFINE-ROUTINE DEPOSIT-BOOTY> 
+<DEFINE-ROUTINE ROB-MAZE> 
+<GLOBAL THIEF-ENGROSSED <>> 
+<DEFINE-ROUTINE ROBBER-FUNCTION> 
+<GLOBAL ROBBER-C-DESC
+"Da steht ein verd%achtig au%sehender Kerl, der eine T%ute h%alt, gegen die Wand gelehnt. Er ist mit einem Stilett bewaffnet."
+> 
+<GLOBAL ROBBER-U-DESC
+"Da liegt ein verd%achtig au%sehender Kerl bewu%stlos auf der Erde."> 
+<DEFINE-ROUTINE LARGE-BAG-F> 
+<DEFINE-ROUTINE MOVE-ALL> 
+<DEFINE-ROUTINE CHALICE-FCN> 
+<DEFINE-ROUTINE TREASURE-ROOM-FCN> 
+<DEFINE-ROUTINE THIEF-IN-TREASURE> 
+<DEFINE-ROUTINE FRONT-DOOR-FCN> 
+<DEFINE-ROUTINE BODY-FUNCTION> 
+<DEFINE-ROUTINE BLACK-BOOK> 
+<DEFINE-ROUTINE PAINTING-FCN> 
+<GLOBAL LAMP-TABLE <TABLE (PURE) 100 "The lamp appears a bit dimmer." 70
+"The lamp is definitely dimmer now." 15 "The lamp is nearly out." 0>> 
+<DEFINE-ROUTINE LANTERN> 
+<DEFINE-ROUTINE MAILBOX-F> 
+<GLOBAL MATCH-COUNT 6> 
+<DEFINE-ROUTINE MATCH-FUNCTION> 
+<DEFINE-ROUTINE I-MATCH> 
+<DEFINE-ROUTINE I-LANTERN> 
+<DEFINE-ROUTINE I-CANDLES> 
+<DEFINE-ROUTINE LIGHT-INT> 
+<DEFINE-ROUTINE MIN> 
+<DEFINE-ROUTINE CANDLES-FCN> 
+<GLOBAL CANDLE-TABLE <TABLE (PURE) 20 "The candles grow shorter." 10
+"The candles are becoming quite short." 5 "The candles won't last long now." 0>
+> 
+<DEFINE-ROUTINE CAVE2-ROOM> 
+<DEFINE-ROUTINE SWORD-FCN> 
+<DEFINE-ROUTINE BOOM-ROOM> 
+<DEFINE-ROUTINE BAT-D> 
+<DEFINE-ROUTINE BATS-ROOM> 
+<DEFINE-ROUTINE MACHINE-ROOM-FCN> 
+<DEFINE-ROUTINE MACHINE-F> 
+<DEFINE-ROUTINE MSWITCH-FUNCTION> 
+<DEFINE-ROUTINE GUNK-FUNCTION> 
+<DEFINE-ROUTINE NO-OBJS> 
+<DEFINE-ROUTINE SOUTH-TEMPLE-FCN> 
+<GLOBAL LIGHT-SHAFT 13> 
+<GDECL (LIGHT-SHAFT) FIX> 
+<DEFINE-ROUTINE WHITE-CLIFFS-FUNCTION> 
+<DEFINE-ROUTINE SCEPTRE-FUNCTION> 
+<DEFINE-ROUTINE FALLS-ROOM> 
+<DEFINE-ROUTINE RAINBOW-FCN> 
+<DEFINE-ROUTINE DBOAT-FUNCTION> 
+<DEFINE-ROUTINE FIX-BOAT> 
+<DEFINE-ROUTINE RIVER-FUNCTION> 
+<GLOBAL RIVER-SPEEDS <LTABLE (PURE) RIVER-1 4 RIVER-2 4 RIVER-3 3 RIVER-4 2
+RIVER-5 1>> 
+<GLOBAL RIVER-NEXT <LTABLE (PURE) RIVER-1 RIVER-2 RIVER-3 RIVER-4 RIVER-5>> 
+<GLOBAL RIVER-LAUNCH <LTABLE (PURE) DAM-BASE RIVER-1 WHITE-CLIFFS-NORTH RIVER-3
+WHITE-CLIFFS-SOUTH RIVER-4 SHORE RIVER-5 SANDY-BEACH RIVER-4 RESERVOIR-SOUTH
+RESERVOIR RESERVOIR-NORTH RESERVOIR STREAM-VIEW IN-STREAM>> 
+<DEFINE-ROUTINE I-RIVER> 
+<DEFINE-ROUTINE RBOAT-FUNCTION> 
+<DEFINE-ROUTINE IBOAT-FUNCTION> 
+<GLOBAL BUOY-FLAG T> 
+<DEFINE-ROUTINE RIVR4-ROOM> 
+<GLOBAL BEACH-DIG -1> 
+<GDECL (BEACH-DIG) FIX> 
+<DEFINE-ROUTINE SAND-FUNCTION> 
+<GLOBAL BDIGS <TABLE (PURE) "Du scheinst hier ein Loch zu graben."
+"Das Loch wird immer tiefer, aber sonst nichts."
+"Du bist auf allen Seiten von Sand umgeben.">> 
+<DEFINE-ROUTINE TREE-ROOM> 
+<DEFINE-ROUTINE EGG-OBJECT> 
+<DEFINE-ROUTINE BAD-EGG> 
+<GLOBAL SING-SONG <>> 
+<DEFINE-ROUTINE CANARY-OBJECT> 
+<DEFINE-ROUTINE FOREST-ROOM?> 
+<DEFINE-ROUTINE I-FOREST-ROOM> 
+<DEFINE-ROUTINE FOREST-ROOM> 
+<DEFINE-ROUTINE WCLIF-OBJECT> 
+<DEFINE-ROUTINE CLIFF-OBJECT> 
+<DEFINE-ROUTINE ROPE-FUNCTION> 
+<DEFINE-ROUTINE UNTIE-FROM> 
+<DEFINE-ROUTINE SLIDE-FUNCTION> 
+<DEFINE-ROUTINE SLIDER> 
+<DEFINE-ROUTINE SANDWICH-BAG-FCN> 
+<DEFINE-ROUTINE DEAD-FUNCTION> 
+<DEFINE-ROUTINE LAKE-PSEUDO> 
+<DEFINE-ROUTINE STREAM-PSEUDO> 
+<DEFINE-ROUTINE CHASM-PSEUDO> 
+<DEFINE-ROUTINE DOME-PSEUDO> 
+<DEFINE-ROUTINE GATE-PSEUDO> 
+<DEFINE-ROUTINE DOOR-PSEUDO> 
+<DEFINE-ROUTINE PAINT-PSEUDO> 
+<DEFINE-ROUTINE GAS-PSEUDO> 
+<CONSTANT F-BUSY? 1> 
+<CONSTANT F-DEAD 2> 
+<CONSTANT F-UNCONSCIOUS 3> 
+<CONSTANT F-CONSCIOUS 4> 
+<CONSTANT F-FIRST? 5> 
+<CONSTANT MISSED 1> 
+<CONSTANT UNCONSCIOUS 2> 
+<CONSTANT KILLED 3> 
+<CONSTANT LIGHT-WOUND 4> 
+<CONSTANT SERIOUS-WOUND 5> 
+<CONSTANT STAGGER 6> 
+<CONSTANT LOSE-WEAPON 7> 
+<CONSTANT HESITATE 8> 
+<CONSTANT SITTING-DUCK 9> 
+<GLOBAL DEF1 <TABLE (PURE) MISSED MISSED MISSED MISSED STAGGER STAGGER
+UNCONSCIOUS UNCONSCIOUS KILLED KILLED KILLED KILLED KILLED>> 
+<GLOBAL DEF2A <TABLE (PURE) MISSED MISSED MISSED MISSED MISSED STAGGER STAGGER
+LIGHT-WOUND LIGHT-WOUND UNCONSCIOUS>> 
+<GLOBAL DEF2B <TABLE (PURE) MISSED MISSED MISSED STAGGER STAGGER LIGHT-WOUND
+LIGHT-WOUND LIGHT-WOUND UNCONSCIOUS KILLED KILLED KILLED>> 
+<GLOBAL DEF3A <TABLE (PURE) MISSED MISSED MISSED MISSED MISSED STAGGER STAGGER
+LIGHT-WOUND LIGHT-WOUND SERIOUS-WOUND SERIOUS-WOUND>> 
+<GLOBAL DEF3B <TABLE (PURE) MISSED MISSED MISSED STAGGER STAGGER LIGHT-WOUND
+LIGHT-WOUND LIGHT-WOUND SERIOUS-WOUND SERIOUS-WOUND SERIOUS-WOUND>> 
+<GLOBAL DEF3C <TABLE (PURE) MISSED STAGGER STAGGER LIGHT-WOUND LIGHT-WOUND
+LIGHT-WOUND LIGHT-WOUND SERIOUS-WOUND SERIOUS-WOUND SERIOUS-WOUND>> 
+<GLOBAL DEF1-RES <TABLE DEF1 0 0>> 
+<GLOBAL DEF2-RES <TABLE DEF2A DEF2B 0 0>> 
+<GLOBAL DEF3-RES <TABLE DEF3A 0 DEF3B 0 DEF3C>> 
+<CONSTANT STRENGTH-MAX 7> 
+<CONSTANT STRENGTH-MIN 2> 
+<CONSTANT CURE-WAIT 30> 
+<DEFINE-ROUTINE DO-FIGHT> 
+<DEFINE-ROUTINE REMARK> 
+<DEFINE-ROUTINE FIGHT-STRENGTH> 
+<DEFINE-ROUTINE VILLAIN-STRENGTH> 
+<DEFINE-ROUTINE FIND-WEAPON> 
+<DEFINE-ROUTINE VILLAIN-BLOW> 
+<DEFINE-ROUTINE HERO-BLOW> 
+<DEFINE-ROUTINE WINNER-RESULT> 
+<DEFINE-ROUTINE VILLAIN-RESULT> 
+<DEFINE-ROUTINE WINNING?> 
+<DEFINE-ROUTINE I-CURE> 
+<CONSTANT WEP-ACC 2> 
+<CONSTANT WEP-ACC-CAP 3> 
+<CONSTANT WEP-NOM 4> 
+<CONSTANT WEP-NOM-CAP 5> 
+<CONSTANT DER-WEP-ACC 6> 
+<CONSTANT WEP-DAT 7> 
+<CONSTANT DEF-NOM 8> 
+<CONSTANT DEF-NOM-CAP 9> 
+<CONSTANT DEF-ACC 10> 
+<CONSTANT DEF-DAT-CAP 11> 
+<GLOBAL HERO-MELEE <TABLE (PURE) <LTABLE (PURE) <LTABLE (PURE) WEP-NOM-CAP
+" verpa%st " DEF-ACC " um 2cm."> <LTABLE (PURE)
+"Ein guter Hieb, aber er verpa%st " DEF-ACC " um einen Kilometer."> <LTABLE (
+PURE) "Du greifst an, aber " DEF-NOM " springt leichtf%u%sig zur Seite."> <
+LTABLE (PURE) "Kling! Klang! Bumm! " DEF-NOM-CAP " pariert den Schlag."> <
+LTABLE (PURE) "Ein schneller Schlag, aber " DEF-NOM " ist auf der Hut."> <
+LTABLE (PURE) "Ein guter Schlag, aber er ist zu langsam, " DEF-NOM
+" weicht aus.">> <LTABLE (PURE) <LTABLE (PURE) WEP-NOM-CAP
+" braust nieder, sendet " DEF-ACC " ins Land der Tr%aume."> <LTABLE (PURE)
+DEF-NOM-CAP " ist bewu%stlos geschlagen."> <LTABLE (PURE)
+"Ein f%urchterlicher Waffenaustausch und " DEF-NOM " ist k.o."> <LTABLE (PURE)
+"Das Heft von " WEP-DAT " haut " DEF-ACC " um."> <LTABLE (PURE) DEF-NOM-CAP
+" ist k.o. geschlagen.">> <LTABLE (PURE) <LTABLE (PURE) DEF-NOM-CAP
+" bei%st ins Gras, als " WEP-NOM " seinen Kopf abschl%agt."> <LTABLE (PURE)
+"Der t%odliche Schlag trifft " DEF-ACC " direkt ins Herz. Er stirbt."> <LTABLE
+(PURE) DEF-NOM-CAP " erleidet einen t%odlichen Schlag und f%allt tot zur Erde."
+>> <LTABLE (PURE) <LTABLE (PURE) DEF-NOM-CAP
+" ist am Arm verletzt. Blut beginnt herabzurinseln."> <LTABLE (PURE)
+WEP-NOM-CAP " ritzt " DEF-ACC " am Handgelenk, aber es ist nicht ernst."> <
+LTABLE (PURE) "Dein Hieb sitzt, aber er war nur mit der flachen Seite von
+dem Schwert."> <LTABLE (PURE) "Der Schlag trifft " DEF-ACC
+" und hinterl%a%st eine leichte Wunde in seinem Arm.">> <LTABLE (PURE) <LTABLE
+(PURE) DEF-NOM-CAP " bekommt eine tiefe Wunde in der Seite."> <LTABLE (PURE)
+"Ein grausiger Schlag in den Schenkel! " DEF-NOM-CAP
+" ist momentan wie festgenagelt, aber er kann weiterk%ampfen!"> <LTABLE (PURE)
+"Schwupp! Dein Schlag f%allt! Dieser hat eine Arterie getroffen, das k%onnte gef%ahrlich sein!"
+> <LTABLE (PURE)
+"Schwupp! Dein Schlag hat getroffen! Dies k%onnte gef%ahrlich sein.">> <LTABLE
+(PURE) <LTABLE (PURE) DEF-DAT-CAP
+" hat es den Atem verschlagen, und er f%allt auf die Knie."> <LTABLE (PURE)
+DEF-NOM-CAP " ist f%ur einen Moment verwirrt und kann nicht zur%uckschlagen.">
+<LTABLE (PURE) "Die Macht deines Hiebes wirft " DEF-ACC
+" zur%uck, er ist benommen."> <LTABLE (PURE) DEF-NOM-CAP
+" ist verwirrt und kann nicht zur%uckschlagen."> <LTABLE (PURE)
+"Die Geschwindigkeit deines Sto%ses schl%agt " DEF-ACC " zur%uck.">> <LTABLE (
+PURE) <LTABLE (PURE) DEF-DAT-CAP " wird " WEP-NOM
+" aus der Hand geschlagen, damit ist er unbewaffnet."> <LTABLE (PURE)
+DEF-NOM-CAP " ist durch ein kluges T%auschungsman%over entwaffnet.">>>> 
+<GLOBAL CYCLOPS-MELEE <TABLE (PURE) <LTABLE (PURE) <LTABLE (PURE)
+"Der Zyklop schafft es nicht, aber die Nachwelle schmei%st dich beinahe um."> <
+LTABLE (PURE) "Der Zyklop greift dich an, aber er rennt gegen die Wand.">> <
+LTABLE (PURE) <LTABLE (PURE) "Der Zyklop sendet dich bewu%stlos zu Boden.">> <
+LTABLE (PURE) <LTABLE (PURE)
+"Der Zyklop bricht dir mit einem ungeheuren Hieb das Genick.">> <LTABLE (PURE)
+<LTABLE (PURE) "Ein schneller Schlag, aber er hat dich nur gestreift."> <LTABLE
+(PURE) "Ein dich streifender Faustschlag von dem Zyklopen.">> <LTABLE (PURE) <
+LTABLE (PURE) "Das Ungeheuer trifft dich mit seiner enormen Faust in der Brust und bricht dir einige Rippen."
+> <LTABLE (PURE)
+"Der Zyklop nimmt dir mit einem schnellen Schlag beinahe den Atem.">> <LTABLE (
+PURE) <LTABLE (PURE)
+"Der Zyklop landet einen Schlag, der dir den Atem momentan nimmt."> <LTABLE (
+PURE) "Deiner Waffen nicht achtend wird der Zyklop dich gegen die Wand des Raumes."
+>> <LTABLE (PURE) <LTABLE (PURE)
+"Der Zyklop nimmt pl%otzlich deine Waffe, bei%st hinein und schmei%st sie v%ar%achtlich auf die Erde."
+> <LTABLE (PURE)
+"Das Ungeheuer ergreift dein Handgelenk, quetscht seine Finger darum, und du l%a%st vor Schmerz "
+WEP-ACC " fallen.">> <LTABLE (PURE) <LTABLE (PURE)
+"Der Zyklop scheint nicht entscheiden zu k%onnen, ob er sein Abendessen kochen oder backen soll."
+>> <LTABLE (PURE) <LTABLE (PURE)
+"Der Zyklop, der h%ochst unsportlich ist, wird sein bewu%stloses Opfer los.">>>
+> 
+<GLOBAL TROLL-MELEE <TABLE (PURE) <LTABLE (PURE) <LTABLE (PURE)
+"Der Troll schwingt die Axt, aber er trifft nicht."> <LTABLE (PURE)
+"Die Axt des Trolls geht haarscharf an deinem Ohr vorbei."> <LTABLE (PURE)
+"Die Axt fegt vorbei, als du zur Seite springst."> <LTABLE (PURE)
+"Die Axt schmettert so hart gegen den Stein, da%s Funken spr%uhen.">> <LTABLE (
+PURE) <LTABLE (PURE)
+"Die flache Seite der Axt des Trolls trifft dich leicht am Kopf, und du wirst bewu%stlos."
+>> <LTABLE (PURE) <LTABLE (PURE) "Der Troll schneidet elegant deinen Kopf ab.">
+<LTABLE (PURE) "Die Axt des Trolls teilt dich in zwei gleiche Teile, von oben bis unten."
+> <LTABLE (PURE) "Die Axt des Trolls haut dir den Kopf ab.">> <LTABLE (PURE) <
+LTABLE (PURE) "Die Axt trifft dich direkt in die Seite. Au!"> <LTABLE (PURE)
+"Die Fl%ache der Axt des Trolls entfernt die Haut an deinem Unterarm."> <LTABLE
+(PURE) "Die Schw%unge des Trolls hauen dich beinahe um, w%ahrend du sie kaum rechtzeitig parieren kannst."
+> <LTABLE (PURE)
+"Der Troll schwingt seine Axt, trifft deinen Arm als du ausweichst.">> <LTABLE
+(PURE) <LTABLE (PURE)
+"Der Troll greift an, und seine Axt verletzt dich an deinem Schwertarm."> <
+LTABLE (PURE) "Ein Axthiebt hinterl%a%st eine tiefe Wunde in deinem Bein."> <
+LTABLE (PURE) "Die Axt des Trolls schwingt herunter, schl%agt dir die Schulter blutig."
+>> <LTABLE (PURE) <LTABLE (PURE)
+"Der Troll trifft dich mit einem schnellen Schlag, und du bist momentan au%ser Gefecht gesetzt."
+> <LTABLE (PURE)
+"Der Troll trifft, aber die Schneide wird von deiner R%ustung abgelenkt, trifft dich aber direkt in den Kopf."
+> <LTABLE (PURE) "Du stolperst unter einem Hagel von Axtstreichen zur%uck."> <
+LTABLE (PURE) "Der m%achtige Schlag des Trolls bringt dich auf die Kniee.">> <
+LTABLE (PURE) <LTABLE (PURE) "Die Axt trifft dein Schwert, und haut dich um.">
+<LTABLE (PURE) "Der Troll schwingt, du parierst, aber die Gewalt seines Streiches schl%agt dir "
+DER-WEP-ACC " aus der Hand."> <LTABLE (PURE)
+"Die Axt schl%agt dir die Waffe aus der Hand. Sie f%allt zu Boden.">> <LTABLE (
+PURE) <LTABLE (PURE) "Der Troll z%ogert, betastet seine Axt."> <LTABLE (PURE)
+"Der Troll kratzt sich nachdenklich am Kopf. Ob du wohl magische Kr%afte hast, wundert er sich?"
+>> <LTABLE (PURE) <LTABLE (PURE)
+"Der Troll meistert seine Furcht und t%otet dich.">>>> 
+<GLOBAL THIEF-MELEE <TABLE (PURE) <LTABLE (PURE) <LTABLE (PURE)
+"Der Dieb sticht elegant mit dem Stilett und trifft nicht."> <LTABLE (PURE)
+"Du vermeidest das Stilett, als der Dieb tief sticht."> <LTABLE (PURE)
+"Du parierst einen blitzartigen Sto%s, und der Dieb bedient dich mit einem grimmigen Kopfnicken."
+> <LTABLE (PURE)
+"Der Dieb versucht, deine Abwehrstellung heimt%uckisch zu durchbrechen, aber du windest dich aus seiner Richtung."
+>> <LTABLE (PURE) <LTABLE (PURE)
+"Indem er die Richtung seines Sto%ses %andert, trifft dich der Dieb mit dem Heft des Stiletts, du wirst bewu%stlos."
+> <LTABLE (PURE) "Der Dieb haut dich k.o.">> <LTABLE (PURE) <LTABLE (PURE)
+"Dein Leben endet, als der Dieb die Schneide in dein Herz senkt."> <LTABLE (
+PURE) "Der Dieb kommt von der Seite, macht ein T%auschungsman%over und setzt die Schneide zwischen deine Rippen."
+> <LTABLE (PURE)
+"Der Dieb verbeugt sich formell, hebt das Stilett und mit einem h%a%slichen Grinsen beendet er den Kampf und dein Leben."
+>> <LTABLE (PURE) <LTABLE (PURE)
+"Ein schneller Hieb streift deinen linken Arm, und Blut rinnt deinen Arm herunter."
+> <LTABLE (PURE)
+"Blut beginnt zu flie%sen, als der Dieb sein Stilett %uber deinen Arm recht.">
+<LTABLE (PURE) "Das Stilett zuckt schneller, als Du denken kannst, und Blut flie%st von deinem Bein."
+> <LTABLE (PURE)
+"Der Dieb kommt langsam n%aher, schl%agt zu wie eine Schlange und l%a%st dich verwundet liegen."
+>> <LTABLE (PURE) <LTABLE (PURE)
+"Der Dieb schl%agt zu wie eine Schlange! Die empfangene Wunde ist ernst!"> <
+LTABLE (PURE) "Der Dieb versetzt dir einen tiefen Stich in den Oberarm."> <
+LTABLE (PURE) "Das Stilett ber%uhrt deine Stirn, und das herabrinnende Blut macht dich blind."
+> <LTABLE (PURE)
+"Der Dieb trifft dich am Handgelenk und pl%otzlich wird dein Schwertgriff schl%upfrig von dem Blut."
+>> <LTABLE (PURE) <LTABLE (PURE)
+"Der Griff von seinem Stilett kracht auf deinen Sch%adel, und du wankst zur%uck."
+> <LTABLE (PURE)
+"Der Dieb rammt das Heft seines Messers in deinen Bauch und du verlierst den Atem."
+> <LTABLE (PURE) "Der Dieb greift dich an, und du f%allst verzweifelt zur%uck."
+>> <LTABLE (PURE) <LTABLE (PURE)
+"Ein langer theatralischer Stich. Du parierst ihn auf " WEP-DAT
+", aber der Dieb dreht sein Messer, und " WEP-NOM " fliegt dir aus der Hand.">
+<LTABLE (PURE) "Der Dieb dreht dir " DER-WEP-ACC
+" elegant aus der Hand, und es f%allt auf die Erde."> <LTABLE (PURE)
+"Du parierst einen Tiefschlag und " WEP-NOM " schl%upft dir aus der Hand.">> <
+LTABLE (PURE) <LTABLE (PURE)
+"Der Dieb, ein Mann aus guter Gesellschaft, stoppt f%ur eine Minute, um zu %uberlegen, ob es in Ordnung ist, dein Leben zu beenden."
+> <LTABLE (PURE) "Es am%usiert den Dieb, deine Taschen zu durchsuchen."> <
+LTABLE (PURE) "Der Dieb besch%aftigt sich damit, deinen Rucksack zu durchw%uhlen."
+>> <LTABLE (PURE) <LTABLE (PURE)
+"F%ur einen Moment vergi%st der Dieb seine gute Kinderstube, er schneidet dir den Hals ab."
+> <LTABLE (PURE)
+"Der Dieb, ein Pragmatiker, sieht in dir eine Bedrohung seines Lebens.">>>> 
+<CONSTANT V-VILLAIN 0> 
+<CONSTANT V-BEST 1> 
+<CONSTANT V-BEST-ADV 2> 
+<CONSTANT V-PROB 3> 
+<CONSTANT V-MSGS 4> 
+<GLOBAL VILLAINS <LTABLE <TABLE TROLL SWORD 1 0 TROLL-MELEE> <TABLE THIEF KNIFE
+1 0 THIEF-MELEE> <TABLE CYCLOPS <> 0 0 CYCLOPS-MELEE>>> 
+<DEFINE-ROUTINE I-FIGHT> 
+<DEFINE-ROUTINE AWAKEN> 
+<DEFINE-ROUTINE I-SWORD> 
+<DEFINE-ROUTINE INFESTED?> 
+<DEFINE-ROUTINE I-THIEF> 
+<DEFINE-ROUTINE DROP-JUNK> 
+<DEFINE-ROUTINE RECOVER-STILETTO> 
+<DEFINE-ROUTINE STEAL-JUNK> 
+<DEFINE-ROUTINE ROB> 
+<DEFINE-ROUTINE V-DIAGNOSE> 
+<DEFINE-ROUTINE V-SCORE> 
+<DEFINE-ROUTINE JIGS-UP> 
+<DEFINE-ROUTINE RANDOMIZE-OBJECTS> 
+<DEFINE-ROUTINE KILL-INTERRUPTS> 
+<DEFINE-ROUTINE BAG-OF-COINS-F> 
+<DEFINE-ROUTINE TRUNK-F> 
+<DEFINE-ROUTINE STUPID-CONTAINER> 
+<DEFINE-ROUTINE DUMB-CONTAINER> 
+<DEFINE-ROUTINE GARLIC-F> 
+<DEFINE-ROUTINE CHAIN-PSEUDO> 
+<DEFINE-ROUTINE TROLL-ROOM-F> 
\ No newline at end of file
diff --git a/actions.zap b/actions.zap
new file mode 100644 (file)
index 0000000..bd47285
--- /dev/null
@@ -0,0 +1,4013 @@
+
+
+       .FUNCT  WEST-HOUSE:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "Du stehst auf freiem Feld westlich von einem wei%sen Haus, dessen Haust%ur mit Brettern vernagelt ist."
+       ZERO?   WON-FLAG /?CND4
+       PRINTR  " Ein Geheimpfad f%uhrt nach S%udwesten in den Wald."
+?CND4: CRLF    
+       RTRUE   
+
+
+       .FUNCT  EAST-HOUSE:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "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"
+       FSET?   KITCHEN-WINDOW,OPENBIT \?CCL6
+       PRINTR  " offen ist."
+?CCL6: PRINTR  " einen Spalt offen steht."
+
+
+       .FUNCT  OPEN-CLOSE:ANY:3:3,OBJ,STROPN,STRCLS
+       EQUAL?  PRSA,V?OPEN \?CCL3
+       FSET?   OBJ,OPENBIT \?CCL6
+       CALL2   PICK-ONE,DUMMY
+       PRINT   STACK
+       JUMP    ?CND4
+?CCL6: PRINT   STROPN
+       FSET    OBJ,OPENBIT
+?CND4: CRLF    
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?CLOSE \FALSE
+       FSET?   OBJ,OPENBIT \?CCL11
+       PRINT   STRCLS
+       FCLEAR  OBJ,OPENBIT
+       JUMP    ?CND9
+?CCL11:        CALL2   PICK-ONE,DUMMY
+       PRINT   STACK
+?CND9: CRLF    
+       RTRUE   
+
+
+       .FUNCT  BOARD-F:ANY:0:0
+       EQUAL?  PRSA,V?EXAMINE,V?TAKE \FALSE
+       PRINTR  "Die Bretter sind fest angenagelt."
+
+
+       .FUNCT  TEETH-F:ANY:0:0
+       EQUAL?  PRSA,V?BRUSH \FALSE
+       EQUAL?  PRSO,TEETH \FALSE
+       EQUAL?  PRSI,PUTTY \?CCL8
+       IN?     PRSI,WINNER \?CCL8
+       CALL2   JIGS-UP,STR?227
+       RSTACK  
+?CCL8: ZERO?   PRSI \?CCL12
+       PRINTR  "Zahnpflege ist h%ochst empfehlenswert, aber es ist nicht klar, mit was du sie putzen willst."
+?CCL12:        PRINTI  "Eine charmante Idee, aber mit "
+       ICALL2  EIN-DAT-PRINT,PRSI
+       PRINTR  "?"
+
+
+       .FUNCT  SONGBIRD-F:ANY:0:0
+       EQUAL?  PRSA,V?TAKE,V?FIND \?CCL3
+       PRINTR  "Der Singvogel ist nicht hier, aber er ist wahrscheinlich in der N%ahe."
+?CCL3: EQUAL?  PRSA,V?LISTEN \?CCL5
+       PRINTR  "Jetzt kannst du den Singvogel nicht h%oren."
+?CCL5: EQUAL?  PRSA,V?FOLLOW \?CCL7
+       PRINTR  "Man kann ihm nicht folgen."
+?CCL7: PRINTR  "Hier kannst du keinen Singvogel sehen."
+
+
+       .FUNCT  WHITE-HOUSE-F:ANY:0:0
+       EQUAL?  HERE,KITCHEN,LIVING-ROOM,ATTIC \?CCL3
+       EQUAL?  PRSA,V?FIND \?CCL6
+       PRINTR  "Warum gehst du nicht auf die Suche nach deinem Verstand."
+?CCL6: EQUAL?  PRSA,V?WALK-AROUND \FALSE
+       ICALL2  GO-NEXT,IN-HOUSE-AROUND
+       RTRUE   
+?CCL3: EQUAL?  HERE,EAST-OF-HOUSE,WEST-OF-HOUSE /?CCL10
+       EQUAL?  HERE,NORTH-OF-HOUSE,SOUTH-OF-HOUSE /?CCL10
+       EQUAL?  PRSA,V?FIND \?CCL15
+       EQUAL?  HERE,CLEARING \?CCL18
+       PRINTR  "Es scheint im Westen zu sein."
+?CCL18:        PRINTR  "Vor einer Minute war es noch hier..."
+?CCL15:        PRINTR  "Du bist nicht beim Haus."
+?CCL10:        EQUAL?  PRSA,V?FIND \?CCL20
+       PRINTR  "Es steht doch gleich hier! Bist du blind, oder was?"
+?CCL20:        EQUAL?  PRSA,V?WALK-AROUND \?CCL22
+       ICALL2  GO-NEXT,HOUSE-AROUND
+       RTRUE   
+?CCL22:        EQUAL?  PRSA,V?EXAMINE \?CCL24
+       PRINTR  "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."
+?CCL24:        EQUAL?  PRSA,V?OPEN,V?THROUGH \?CCL26
+       EQUAL?  HERE,EAST-OF-HOUSE \?CCL29
+       FSET?   KITCHEN-WINDOW,OPENBIT \?CCL32
+       CALL2   GOTO,KITCHEN
+       RSTACK  
+?CCL32:        PRINTI  "Das Fenster ist geschlossen."
+       CRLF    
+       CALL2   THIS-IS-IT,KITCHEN-WINDOW
+       RSTACK  
+?CCL29:        PRINTR  "Es ist nicht offensichtlich, wie du von hier reinkommst."
+?CCL26:        EQUAL?  PRSA,V?BURN \FALSE
+       PRINTR  "Das kann doch nicht dein Ernst sein."
+
+
+       .FUNCT  GO-NEXT:ANY:1:1,TBL,VAL
+       CALL    LKP,HERE,TBL >VAL
+       ZERO?   VAL /FALSE
+       CALL2   GOTO,VAL
+       ZERO?   STACK \TRUE
+       RETURN  2
+
+
+       .FUNCT  FOREST-F:ANY:0:0
+       EQUAL?  PRSA,V?WALK-AROUND \?CCL3
+       EQUAL?  HERE,WEST-OF-HOUSE,NORTH-OF-HOUSE,SOUTH-OF-HOUSE /?CCL5
+       EQUAL?  HERE,EAST-OF-HOUSE \?CND4
+?CCL5: PRINTI  "Du bist noch nicht einmal im Wald."
+       CRLF    
+?CND4: CALL2   GO-NEXT,FOREST-AROUND
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?DISEMBARK \?CCL9
+       PRINTR  "Du mu%st eine Richtung angeben."
+?CCL9: EQUAL?  PRSA,V?FIND \?CCL11
+       PRINTR  "Du kannst den Wald vor lauter B%aumen nicht sehen."
+?CCL11:        EQUAL?  PRSA,V?LISTEN \FALSE
+       PRINTR  "Die Tannen und Fichten scheinen zu murmeln."
+
+
+       .FUNCT  MOUNTAIN-RANGE-F:ANY:0:0
+       EQUAL?  PRSA,V?CLIMB-FOO,V?CLIMB-DOWN,V?CLIMB-UP \FALSE
+       PRINTR  "Willst du mir nicht glauben? Die Berge sind nicht un%uberwindlich."
+
+
+       .FUNCT  WATER-F:ANY:0:0,AV,W,PI?
+       EQUAL?  PRSA,V?SGIVE /FALSE
+       EQUAL?  PRSA,V?BOARD,V?THROUGH \?CCL5
+       CALL2   PICK-ONE,SWIMYUKS
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+?CCL5: EQUAL?  PRSA,V?FILL \?CCL7
+       SET     'W,PRSI
+       SET     'PRSA,V?PUT
+       SET     'PRSI,PRSO
+       SET     'PRSO,W
+       SET     'PI?,FALSE-VALUE
+       JUMP    ?CND1
+?CCL7: EQUAL?  PRSO,GLOBAL-WATER /?CTR8
+       EQUAL?  PRSO,WATER \?CCL9
+?CTR8: SET     'W,PRSO
+       SET     'PI?,FALSE-VALUE
+       JUMP    ?CND1
+?CCL9: SET     'W,PRSI
+       ZERO?   W /?CND1
+       SET     'PI?,TRUE-VALUE
+?CND1: EQUAL?  W,GLOBAL-WATER \?CND14
+       SET     'W,WATER
+       EQUAL?  PRSA,V?PUT,V?TAKE \?CND14
+       ICALL2  REMOVE-CAREFULLY,W
+?CND14:        ZERO?   PI? /?CCL20
+       SET     'PRSI,W
+       JUMP    ?CND18
+?CCL20:        SET     'PRSO,W
+?CND18:        LOC     WINNER >AV
+       FSET?   AV,VEHBIT /?CND21
+       SET     'AV,FALSE-VALUE
+?CND21:        EQUAL?  PRSA,V?PUT,V?TAKE \?CCL25
+       ZERO?   PI? \?CCL25
+       ZERO?   AV /?CCL30
+       EQUAL?  AV,PRSI /?CTR29
+       ZERO?   PRSI \?CCL30
+       IN?     W,AV /?CCL30
+?CTR29:        PRINTI  "Es gibt jetzt eine Pf%utze am Boden von "
+       ICALL2  DER-DAT-PRINT,AV
+       PRINTC  46
+       CRLF    
+       ICALL2  REMOVE-CAREFULLY,PRSO
+       MOVE    PRSO,AV
+       RTRUE   
+?CCL30:        ZERO?   PRSI /?CCL38
+       EQUAL?  PRSI,BOTTLE /?CCL38
+       PRINTI  "Das Wasser rinnt aus "
+       ICALL2  DER-DAT-PRINT,PRSI
+       PRINTI  " und verdampft sofort."
+       CALL2   REMOVE-CAREFULLY,W
+       RSTACK  
+?CCL38:        IN?     BOTTLE,WINNER \?CCL42
+       FSET?   BOTTLE,OPENBIT /?CCL45
+       PRINTI  "Die Flasche ist zu."
+       CRLF    
+       CALL2   THIS-IS-IT,BOTTLE
+       RSTACK  
+?CCL45:        FIRST?  BOTTLE /?CCL47
+       MOVE    WATER,BOTTLE
+       PRINTR  "Die Flasche ist jetzt voll Wasser."
+?CCL47:        PRINTR  "Das Wasser rinnt dir durch die Finger."
+?CCL42:        IN?     PRSO,BOTTLE \?CCL49
+       EQUAL?  PRSA,V?TAKE \?CCL49
+       ZERO?   PRSI \?CCL49
+       PRINTR  "Es ist in der Flasche. Vielleicht solltest du das statt dessen nehmen."
+?CCL49:        PRINTR  "Das Wasser rinnt dir durch die Finger."
+?CCL25:        ZERO?   PI? /?CCL54
+       EQUAL?  PRSA,V?PUT \?CCL57
+       CALL    GLOBAL-IN?,RIVER,HERE
+       ZERO?   STACK /?CCL57
+       ICALL   PERFORM,V?PUT,PRSO,RIVER
+       RTRUE   
+?CCL57:        PRINTR  "Nice try."
+?CCL54:        EQUAL?  PRSA,V?GIVE,V?DROP \?CCL61
+       EQUAL?  PRSA,V?DROP \?CND62
+       IN?     WATER,BOTTLE \?CND62
+       FSET?   BOTTLE,OPENBIT /?CND62
+       PRINTR  "Die Flasche ist zu."
+?CND62:        ICALL2  REMOVE-CAREFULLY,WATER
+       ZERO?   AV /?CCL69
+       PRINTI  "Es gibt jetzt eine Pf%utze am Boden von "
+       ICALL2  DER-DAT-PRINT,AV
+       PRINTC  46
+       CRLF    
+       MOVE    WATER,AV
+       RTRUE   
+?CCL69:        PRINTI  "Das Wasser ist auf dem Boden versch%uttet und verdampft sofort."
+       CRLF    
+       CALL2   REMOVE-CAREFULLY,WATER
+       RSTACK  
+?CCL61:        EQUAL?  PRSA,V?THROW \FALSE
+       PRINTI  "Das Wasser spritzt auf die W%ande und verdampft sofort."
+       CRLF    
+       CALL2   REMOVE-CAREFULLY,WATER
+       RSTACK  
+
+
+       .FUNCT  KITCHEN-WINDOW-F:ANY:0:0
+       EQUAL?  PRSA,V?CLOSE,V?OPEN \?CCL3
+       SET     'KITCHEN-WINDOW-FLAG,TRUE-VALUE
+       CALL    OPEN-CLOSE,KITCHEN-WINDOW,STR?228,STR?229
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?EXAMINE \?CCL5
+       ZERO?   KITCHEN-WINDOW-FLAG \?CCL5
+       PRINTR  "Das Fenster ist einen Spalt offen, aber nicht genug, um Eintritt zu gew%ahren. "
+?CCL5: EQUAL?  PRSA,V?THROUGH,V?BOARD,V?WALK \?CCL9
+       EQUAL?  HERE,KITCHEN \?CCL12
+       ICALL2  DO-WALK,P?OST
+       RTRUE   
+?CCL12:        ICALL2  DO-WALK,P?WEST
+       RTRUE   
+?CCL9: EQUAL?  PRSA,V?LOOK-INSIDE \FALSE
+       EQUAL?  HERE,KITCHEN \?CCL17
+       PRINTR  "Du kannst einen Kahlschlag sehen, der nach dem Wald f%uhrt."
+?CCL17:        PRINTR  "Du kannst einen Raum sehen, der aussieht wie eine K%uche."
+
+
+       .FUNCT  GHOSTS-F:ANY:0:0
+       EQUAL?  PRSA,V?TELL \?CCL3
+       PRINTI  "Die Geister johlen laut und beachten dich nicht."
+       CRLF    
+       SET     'P-CONT,FALSE-VALUE
+       RETURN  P-CONT
+?CCL3: EQUAL?  PRSA,V?EXORCISE \?CCL5
+       PRINTR  "Nur das Zeremoniell hinterl%a%st einen Eindruck."
+?CCL5: EQUAL?  PRSA,V?MUNG,V?ATTACK \?CCL7
+       EQUAL?  PRSO,GHOSTS \?CCL7
+       PRINTR  "Wie kannst du einen Geist mit f%ur Menschen bestimmten Waffen angreifen?"
+?CCL7: PRINTR  "Es scheint dir unm%oglich mit diesen Geistern zu kommunizieren."
+
+
+       .FUNCT  BASKET-F:ANY:0:0
+       EQUAL?  PRSA,V?RAISE /?CTR2
+       EQUAL?  PRSA,V?MOVE \?CCL3
+       ZERO?   CAGE-TOP \?CCL3
+?CTR2: ZERO?   CAGE-TOP /?CCL10
+       EQUAL?  PRSA,V?MOVE /?CCL10
+       CALL2   PICK-ONE,DUMMY
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+?CCL10:        MOVE    RAISED-BASKET,SHAFT-ROOM
+       MOVE    LOWERED-BASKET,LOWER-SHAFT
+       SET     'CAGE-TOP,TRUE-VALUE
+       ICALL2  THIS-IS-IT,RAISED-BASKET
+       PRINTR  "Der Korb ist zum oberen Ende des Schachts hinaufgezogen."
+?CCL3: EQUAL?  PRSA,V?LOWER /?CTR13
+       EQUAL?  PRSA,V?MOVE \?CCL14
+       ZERO?   CAGE-TOP /?CCL14
+?CTR13:        ZERO?   CAGE-TOP \?CCL21
+       EQUAL?  PRSA,V?MOVE /?CCL21
+       CALL2   PICK-ONE,DUMMY
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+?CCL21:        MOVE    RAISED-BASKET,LOWER-SHAFT
+       MOVE    LOWERED-BASKET,SHAFT-ROOM
+       ICALL2  THIS-IS-IT,LOWERED-BASKET
+       PRINTI  "Der Korb ist zum unteren Ende des Schacht hinabgelassen."
+       CRLF    
+       SET     'CAGE-TOP,FALSE-VALUE
+       ZERO?   LIT /TRUE
+       CALL2   LIT?,HERE >LIT
+       ZERO?   LIT \TRUE
+       PRINTR  "Es ist jetzt stockdunkel."
+?CCL14:        EQUAL?  PRSO,LOWERED-BASKET /?CTR28
+       EQUAL?  PRSI,LOWERED-BASKET \?CCL29
+?CTR28:        PRINTR  "Der Korb ist am anderen Ende der Kette."
+?CCL29:        EQUAL?  PRSA,V?TAKE \FALSE
+       EQUAL?  PRSO,RAISED-BASKET,LOWERED-BASKET \FALSE
+       PRINTR  "Der K%afig ist fest an der Kette angebracht."
+
+
+       .FUNCT  BAT-F:ANY:0:0
+       EQUAL?  PRSA,V?TELL \?CCL3
+       ICALL2  FWEEP,6
+       SET     'P-CONT,FALSE-VALUE
+       RETURN  P-CONT
+?CCL3: EQUAL?  PRSA,V?MUNG,V?ATTACK,V?TAKE \FALSE
+       LOC     GARLIC
+       EQUAL?  STACK,WINNER,HERE \?CCL8
+       PRINTR  "Die kannst du nicht erreichen, die h%angt von der Decke."
+?CCL8: CALL1   FLY-ME
+       RSTACK  
+
+
+       .FUNCT  FLY-ME:ANY:0:0
+       ICALL2  FWEEP,4
+       PRINTI  "Die Fledermaus ergreift dich am Kragen und hebt dich hoch....."
+       CRLF    
+       CRLF    
+       CALL2   PICK-ONE,BAT-DROPS
+       ICALL   GOTO,STACK,FALSE-VALUE
+       EQUAL?  HERE,ENTRANCE-TO-HADES /TRUE
+       ICALL1  V-FIRST-LOOK
+       RTRUE   
+
+
+       .FUNCT  FWEEP:ANY:1:1,N
+?PRG1: DLESS?  'N,1 /?REP2
+       PRINTI  "    Huiiiiii!"
+       CRLF    
+       JUMP    ?PRG1
+?REP2: CRLF    
+       RTRUE   
+
+
+       .FUNCT  BELL-F:ANY:0:0
+       EQUAL?  PRSA,V?RING \FALSE
+       EQUAL?  HERE,LLD-ROOM \?CCL6
+       ZERO?   LLD-FLAG /FALSE
+?CCL6: PRINTR  "Bim, bam."
+
+
+       .FUNCT  HOT-BELL-F:ANY:0:0
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       PRINTR  "Die Glocke ist sehr hei%s und kann nicht angefa%st werden."
+?CCL3: EQUAL?  PRSA,V?RUB /?CTR4
+       EQUAL?  PRSA,V?RING \?CCL5
+       ZERO?   PRSI /?CCL5
+?CTR4: EQUAL?  PRSA,V?RUB \?CND10
+       ZERO?   PRSI \?CND10
+       SET     'PRSI,HANDS
+?CND10:        FSET?   PRSI,BURNBIT \?CCL16
+       ICALL2  DER-NOM-CAP-PRINT,PRSI
+       PRINTI  " f%angt Feuer und verbrennt."
+       CRLF    
+       CALL2   REMOVE-CAREFULLY,PRSI
+       RSTACK  
+?CCL16:        EQUAL?  PRSI,HANDS \?CCL18
+       PRINTR  "Die Glocke ist zu hei%s zum Anfassen."
+?CCL18:        PRINTR  "Die Hitze, die die Glocke ausstr%omt ist zu stark."
+?CCL5: EQUAL?  PRSA,V?POUR-ON \?CCL20
+       ICALL2  REMOVE-CAREFULLY,PRSO
+       PRINTI  "Das Wasser k%uhlt die Glocke und verdampft."
+       CRLF    
+       CALL    QUEUE,I-XBH,0
+       PUT     STACK,0,1
+       CALL1   I-XBH
+       RSTACK  
+?CCL20:        EQUAL?  PRSA,V?RING \FALSE
+       PRINTR  "Die Glocke ist zu hei%s, um dranzufassen."
+
+
+       .FUNCT  BOARDED-WINDOW-FCN:ANY:0:0
+       EQUAL?  PRSA,V?OPEN \?CCL3
+       PRINTR  "Die Fenster sind vernagelt und lassen sich nicht %offnen."
+?CCL3: EQUAL?  PRSA,V?MUNG \FALSE
+       PRINTR  "Du kannst die Fenster nicht zerschlagen, um sie zu %offnen."
+
+
+       .FUNCT  NAILS-PSEUDO:ANY:0:0
+       EQUAL?  PRSA,V?TAKE \FALSE
+       PRINTR  "Die N%agel, die tief in der T%ur eingebettet sind, k%onnen nicht entfernt werden."
+
+
+       .FUNCT  CRACK-FCN:ANY:0:0
+       EQUAL?  PRSA,V?THROUGH \FALSE
+       PRINTR  "Du kannst durch diese Spalte nicht durch."
+
+
+       .FUNCT  KITCHEN-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \?CCL3
+       PRINTI  "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"
+       FSET?   KITCHEN-WINDOW,OPENBIT \?CCL6
+       PRINTR  " offen ist."
+?CCL6: PRINTR  " einen Spalt offen steht."
+?CCL3: EQUAL?  RARG,M-BEG \FALSE
+       EQUAL?  PRSA,V?CLIMB-UP \?CCL11
+       EQUAL?  PRSO,STAIRS \?CCL11
+       CALL2   DO-WALK,P?RAUF
+       RSTACK  
+?CCL11:        EQUAL?  PRSA,V?CLIMB-UP \FALSE
+       EQUAL?  PRSO,STAIRS \FALSE
+       PRINTR  "Es gibt keine Treppe nach unten."
+
+
+       .FUNCT  STONE-BARROW-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-BEG \FALSE
+       EQUAL?  PRSA,V?ENTER /?CCL3
+       EQUAL?  PRSA,V?WALK \?PRD8
+       EQUAL?  PRSO,P?WEST,P?HINEIN /?CCL3
+?PRD8: EQUAL?  PRSA,V?THROUGH \FALSE
+       EQUAL?  PRSO,BARROW \FALSE
+?CCL3: PRINTI  "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!"
+       CRLF    
+       CRLF    
+       PRINTI  "Das dreiteilige ZORKspiel geht weiter mit %>ZORK II: Der Hexenmeister von Frobozz%< und endet mit %>ZORK III: Der Kerkermeister%<."
+       CALL1   FINISH
+       RSTACK  
+
+
+       .FUNCT  BARROW-DOOR-FCN:ANY:0:0
+       EQUAL?  PRSA,V?CLOSE,V?OPEN \FALSE
+       PRINTR  "Die T%ur ist zu schwer."
+
+
+       .FUNCT  BARROW-FCN:ANY:0:0
+       EQUAL?  PRSA,V?THROUGH \FALSE
+       CALL2   DO-WALK,P?WEST
+       RSTACK  
+
+
+       .FUNCT  TROPHY-CASE-FCN:ANY:0:0
+       EQUAL?  PRSA,V?TAKE \FALSE
+       EQUAL?  PRSO,TROPHY-CASE \FALSE
+       PRINTR  "Der Troph%aenschrank ist unverr%uckbar an der Wand befestigt."
+
+
+       .FUNCT  LIVING-ROOM-FCN:ANY:1:1,RARG,RUG?,TC
+       EQUAL?  RARG,M-LOOK \?CCL3
+       PRINTI  "Du bist im Wohnzimmer. Da sind eine T%ur nach Osten"
+       ZERO?   MAGIC-FLAG /?CCL6
+       PRINTI  ". Nach Westen gibt es eine zyklopenf%ormige %Offnung in einer alten T%ur dar%uber gibt es einige uralte Runen, "
+       JUMP    ?CND4
+?CCL6: PRINTI  ", eine vernagelte Holzt%ur mit fremden Runen, "
+?CND4: PRINTI  "ein Troph%aenschrank, "
+       SET     'RUG?,RUG-MOVED
+       ZERO?   RUG? /?CCL9
+       FSET?   TRAP-DOOR,OPENBIT \?CCL9
+       PRINTR  "und ein Teppich liegt neben einer Fallt%ur."
+?CCL9: ZERO?   RUG? /?CCL13
+       PRINTR  "und eine geschlossene Fallt%ur bei deinen F%ussen."
+?CCL13:        FSET?   TRAP-DOOR,OPENBIT \?CCL15
+       PRINTR  "und eine offene Fallt%ur bei deinen F%ussen."
+?CCL15:        PRINTR  "und ein Perserteppich in der Mitte."
+?CCL3: EQUAL?  RARG,M-END \FALSE
+       EQUAL?  PRSA,V?TAKE /?CCL20
+       EQUAL?  PRSA,V?PUT \FALSE
+       EQUAL?  PRSI,TROPHY-CASE \FALSE
+?CCL20:        IN?     PRSO,TROPHY-CASE \?CND25
+       ICALL2  TOUCH-ALL,PRSO
+?CND25:        CALL1   OTVAL-FROB
+       ADD     BASE-SCORE,STACK >SCORE
+       ICALL2  SCORE-UPD,0
+       RFALSE  
+
+
+       .FUNCT  TOUCH-ALL:ANY:1:1,OBJ,F
+       FIRST?  OBJ >F /?PRG2
+?PRG2: ZERO?   F /TRUE
+       FSET    F,TOUCHBIT
+       FIRST?  F \?CND4
+       ICALL2  TOUCH-ALL,F
+?CND4: NEXT?   F >F /?PRG2
+       JUMP    ?PRG2
+
+
+       .FUNCT  OTVAL-FROB:ANY:0:1,O,F,SCORE
+       ASSIGNED?       'O /?CND1
+       SET     'O,TROPHY-CASE
+?CND1: FIRST?  O >F /?PRG4
+?PRG4: ZERO?   F \?CND6
+       RETURN  SCORE
+?CND6: GETP    F,P?TVALUE
+       ADD     SCORE,STACK >SCORE
+       FIRST?  F \?CND8
+       ICALL2  OTVAL-FROB,F
+?CND8: NEXT?   F >F /?PRG4
+       JUMP    ?PRG4
+
+
+       .FUNCT  TRAP-DOOR-FCN:ANY:0:0
+       EQUAL?  PRSA,V?RAISE \?CCL3
+       ICALL   PERFORM,V?OPEN,TRAP-DOOR
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?CLOSE,V?OPEN \?CCL5
+       EQUAL?  HERE,LIVING-ROOM \?CCL5
+       CALL    OPEN-CLOSE,PRSO,STR?230,STR?231
+       RSTACK  
+?CCL5: EQUAL?  PRSA,V?LOOK-UNDER \?CCL9
+       EQUAL?  HERE,LIVING-ROOM \?CCL9
+       FSET?   TRAP-DOOR,OPENBIT \?CCL14
+       PRINTR  "Du siehst eine wackelige Treppe, die in die Dunkelheit f%uhrt."
+?CCL14:        PRINTR  "Sie ist geschlossen."
+?CCL9: EQUAL?  HERE,CELLAR \FALSE
+       EQUAL?  PRSA,V?UNLOCK,V?OPEN \?CCL19
+       FSET?   TRAP-DOOR,OPENBIT /?CCL19
+       PRINTR  "Die T%ur ist von oben abgeschlossen."
+?CCL19:        EQUAL?  PRSA,V?CLOSE \?CCL23
+       FSET?   TRAP-DOOR,OPENBIT /?CCL23
+       FCLEAR  TRAP-DOOR,TOUCHBIT
+       FCLEAR  TRAP-DOOR,OPENBIT
+       PRINTR  "Die T%ur geht zu und und verschlie%st sich."
+?CCL23:        EQUAL?  PRSA,V?CLOSE,V?OPEN \FALSE
+       CALL2   PICK-ONE,DUMMY
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  CELLAR-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \?CCL3
+       PRINTR  "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."
+?CCL3: EQUAL?  RARG,M-ENTER \FALSE
+       FSET?   TRAP-DOOR,OPENBIT \FALSE
+       FSET?   TRAP-DOOR,TOUCHBIT /FALSE
+       FCLEAR  TRAP-DOOR,OPENBIT
+       FSET    TRAP-DOOR,TOUCHBIT
+       PRINTI  "Die Fallt%ur kracht zu, und du h%orst, da%s jemand sie verriegelt."
+       CRLF    
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  CHIMNEY-F:ANY:0:0
+       EQUAL?  PRSA,V?EXAMINE \FALSE
+       PRINTI  "Der Kamin geht nach "
+       EQUAL?  HERE,KITCHEN \?CCL6
+       PRINTI  "unten"
+       JUMP    ?CND4
+?CCL6: PRINTI  "oben"
+?CND4: PRINTR  " und sieht erklimmbar aus."
+
+
+       .FUNCT  UP-CHIMNEY-FUNCTION:ANY:0:0,F
+       FIRST?  WINNER >F /?CCL3
+       PRINTI  "Mit leeren H%anden nach oben gehen ist keine gute Idee."
+       CRLF    
+       RFALSE  
+?CCL3: NEXT?   F >F \?PRD7
+       NEXT?   F /?CCL5
+?PRD7: IN?     LAMP,WINNER \?CCL5
+       FSET?   TRAP-DOOR,OPENBIT /?CND10
+       FCLEAR  TRAP-DOOR,TOUCHBIT
+?CND10:        RETURN  KITCHEN
+?CCL5: PRINTI  "Mit dem, was du da schleppst, kannst du da nicht hinauf."
+       CRLF    
+       RFALSE  
+
+
+       .FUNCT  TRAP-DOOR-EXIT:ANY:0:0
+       ZERO?   RUG-MOVED /?CCL3
+       FSET?   TRAP-DOOR,OPENBIT \?CCL6
+       RETURN  CELLAR
+?CCL6: PRINTI  "Die Fallt%ur ist geschlossen."
+       CRLF    
+       ICALL2  THIS-IS-IT,TRAP-DOOR
+       RFALSE  
+?CCL3: PRINTI  "You can't go that way."
+       CRLF    
+       RFALSE  
+
+
+       .FUNCT  RUG-FCN:ANY:0:0
+       EQUAL?  PRSA,V?RAISE \?CCL3
+       PRINTI  "Der Teppich ist zu schwer, um ihn aufzuheben"
+       ZERO?   RUG-MOVED /?CCL6
+       PRINTR  "."
+?CCL6: PRINTR  ", aber beim Versuchen hast du gemerkt, da%s darunter eine Unebenheit ist."
+?CCL3: EQUAL?  PRSA,V?PUSH,V?MOVE \?CCL8
+       ZERO?   RUG-MOVED /?CCL11
+       PRINTR  "Nachdem du vorher den Teppich weggezogen hast, findest du es jetzt unm%oglich ihn zur%uckzuziehen."
+?CCL11:        PRINTI  "Mit gr%o%ster Anstrengung ist der Teppich aus dem Weg gezerrt. Die staubige Oberfl%ache einer geschlossenen Fallt%ure kommt zum Vorschein."
+       CRLF    
+       FCLEAR  TRAP-DOOR,INVISIBLE
+       ICALL2  THIS-IS-IT,TRAP-DOOR
+       SET     'RUG-MOVED,TRUE-VALUE
+       RETURN  RUG-MOVED
+?CCL8: EQUAL?  PRSA,V?TAKE \?CCL13
+       PRINTR  "Der Teppich ist %au%serst schwer und man kann ihn nicht tragen."
+?CCL13:        EQUAL?  PRSA,V?LOOK-UNDER \?CCL15
+       ZERO?   RUG-MOVED \?CCL15
+       FSET?   TRAP-DOOR,OPENBIT /?CCL15
+       PRINTR  "Unter dem Teppich ist eine geschlossene Fallt%ur. Wenn du den Teppich losl%a%st, ist die Fallt%ur wieder versteckt."
+?CCL15:        EQUAL?  PRSA,V?CLIMB-ON \FALSE
+       ZERO?   RUG-MOVED \?CCL23
+       FSET?   TRAP-DOOR,OPENBIT /?CCL23
+       PRINTR  "W%ahrend du da sitzt bemerkst du eine Unebenheit darunter. Um nicht unbequem zu sitzen, stehst du wieder auf."
+?CCL23:        PRINTR  "Ich nehme an, da%s du denkst, es w%are ein fliegender Teppich?"
+
+
+       .FUNCT  AXE-F:ANY:0:0
+       ZERO?   TROLL-FLAG \FALSE
+       CALL    WEAPON-FUNCTION,AXE,TROLL
+       RSTACK  
+
+
+       .FUNCT  STILETTO-FUNCTION:ANY:0:0
+       CALL    WEAPON-FUNCTION,STILETTO,THIEF
+       RSTACK  
+
+
+       .FUNCT  WEAPON-FUNCTION:ANY:2:2,W,V
+       IN?     V,HERE \FALSE
+       EQUAL?  PRSA,V?TAKE \FALSE
+       IN?     W,V /TRUE
+       ICALL2  DER-NOM-CAP-PRINT,W
+       PRINTR  " scheint gl%uhend hei%s. Du kannst es nicht in der Hand halten."
+
+
+       .FUNCT  TROLL-FCN:ANY:0:1,MODE
+       EQUAL?  PRSA,V?TELL \?CCL3
+       SET     'P-CONT,FALSE-VALUE
+       PRINTR  "Der Troll ist nicht der ideale Gespr%achspartner."
+?CCL3: EQUAL?  MODE,F-BUSY? \?CCL5
+       IN?     AXE,TROLL /FALSE
+       IN?     AXE,HERE \?CCL10
+       CALL2   ZPROB,75
+       ZERO?   STACK /?CCL10
+       FSET    AXE,NDESCBIT
+       FCLEAR  AXE,WEAPONBIT
+       MOVE    AXE,TROLL
+       PUTP    TROLL,P?LDESC,STR?73
+       IN?     TROLL,HERE \TRUE
+       PRINTR  "Der Troll holt sich seine Waffe zur%uck. Er ist b%ose und besch%amt. Er scheint sich mit dir an binden zu wollen."
+?CCL10:        IN?     TROLL,HERE \FALSE
+       PUTP    TROLL,P?LDESC,STR?232
+       PRINTR  "Der jetzt entwaffnete Troll kriecht vor Furcht in die Ecke und bittet mit heiserer Trollstimme um sein Leben."
+?CCL5: EQUAL?  MODE,F-DEAD \?CCL19
+       IN?     AXE,TROLL \?CND20
+       MOVE    AXE,HERE
+       FCLEAR  AXE,NDESCBIT
+       FSET    AXE,WEAPONBIT
+?CND20:        SET     'TROLL-FLAG,TRUE-VALUE
+       RETURN  TROLL-FLAG
+?CCL19:        EQUAL?  MODE,F-UNCONSCIOUS \?CCL23
+       FCLEAR  TROLL,FIGHTBIT
+       IN?     AXE,TROLL \?CND24
+       MOVE    AXE,HERE
+       FCLEAR  AXE,NDESCBIT
+       FSET    AXE,WEAPONBIT
+?CND24:        PUTP    TROLL,P?LDESC,STR?233
+       SET     'TROLL-FLAG,TRUE-VALUE
+       RETURN  TROLL-FLAG
+?CCL23:        EQUAL?  MODE,F-CONSCIOUS \?CCL27
+       IN?     TROLL,HERE \?CND28
+       FSET    TROLL,FIGHTBIT
+       PRINTI  "Der Troll r%uhrt sich und nimmt schnell eine Kampfstellung ein."
+       CRLF    
+?CND28:        IN?     AXE,TROLL \?CCL32
+       PUTP    TROLL,P?LDESC,STR?73
+       JUMP    ?CND30
+?CCL32:        IN?     AXE,TROLL-ROOM \?CCL34
+       FSET    AXE,NDESCBIT
+       FCLEAR  AXE,WEAPONBIT
+       MOVE    AXE,TROLL
+       PUTP    TROLL,P?LDESC,STR?73
+       JUMP    ?CND30
+?CCL34:        PUTP    TROLL,P?LDESC,STR?234
+?CND30:        SET     'TROLL-FLAG,FALSE-VALUE
+       RETURN  TROLL-FLAG
+?CCL27:        EQUAL?  MODE,F-FIRST? \?CCL36
+       RANDOM  100
+       GRTR?   33,STACK \FALSE
+       FSET    TROLL,FIGHTBIT
+       SET     'P-CONT,FALSE-VALUE
+       RTRUE   
+?CCL36:        ZERO?   MODE \FALSE
+       EQUAL?  PRSA,V?EXAMINE \?CCL44
+       GETP    TROLL,P?LDESC
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+?CCL44:        EQUAL?  PRSA,V?GIVE,V?THROW \?PRD48
+       ZERO?   PRSO /?PRD48
+       EQUAL?  PRSI,TROLL /?CTR45
+?PRD48:        EQUAL?  PRSA,V?MUNG,V?MOVE,V?TAKE \?CCL46
+?CTR45:        ICALL2  AWAKEN,TROLL
+       EQUAL?  PRSA,V?GIVE,V?THROW \?CCL54
+       EQUAL?  PRSO,AXE \?CCL57
+       IN?     AXE,WINNER \?CCL57
+       PRINTI  "Der Troll kratzt sich verwirrt am Kopf, dann nimmt er die Axt auf."
+       CRLF    
+       FSET    TROLL,FIGHTBIT
+       MOVE    AXE,TROLL
+       RTRUE   
+?CCL57:        EQUAL?  PRSO,TROLL,AXE \?CND55
+       PRINTI  "Du m%u%stest "
+       ICALL2  DER-ACC-PRINT,PRSO
+       PRINTI  " zuerst holen, aber das scheint unm%oglich."
+       RTRUE   
+?CND55:        EQUAL?  PRSA,V?THROW \?CCL63
+       PRINTI  "Der Troll, der ungemein sportlich ist, f%angt "
+       ICALL2  DER-ACC-PRINT,PRSO
+       JUMP    ?CND61
+?CCL63:        PRINTI  "Der Troll, der keinen gro%sen Stolz hat, akzeptiert das Geschenk"
+?CND61:        RANDOM  100
+       GRTR?   20,STACK \?CCL66
+       EQUAL?  PRSO,KNIFE,SWORD,AXE \?CCL66
+       ICALL2  REMOVE-CAREFULLY,PRSO
+       PRINTI  " und fri%st "
+       ICALL2  PRONOUN-ACC-PRINT,PRSO
+       PRINTI  " mit Appetit. Armer Troll, er stirbt an einer inneren Blutung und sein Gerippe verschwindet in einem b%osen schwarzen Nebel."
+       CRLF    
+       ICALL2  REMOVE-CAREFULLY,TROLL
+       GETP    TROLL,P?ACTION
+       ICALL   STACK,F-DEAD
+       SET     'TROLL-FLAG,TRUE-VALUE
+       RETURN  TROLL-FLAG
+?CCL66:        EQUAL?  PRSO,KNIFE,SWORD,AXE \?CCL70
+       MOVE    PRSO,HERE
+       PRINTI  " und da er momentan ges%attigt ist, wirft er "
+       ICALL2  DER-ACC-PRINT,PRSO
+       PRINTI  " zur%uck. Gott sei Dank hat der Troll kein Wurftalent und "
+       ICALL2  DER-ACC-PRINT,PRSO
+       PRINTI  " f%allt auf die Erde. Er sieht nicht sehr gl%ucklich aus."
+       CRLF    
+       FSET    TROLL,FIGHTBIT
+       RTRUE   
+?CCL70:        PRINTI  " und da er kein gro%ser Feinschmecker ist, fri%st er es gierig."
+       CRLF    
+       CALL2   REMOVE-CAREFULLY,PRSO
+       RSTACK  
+?CCL54:        EQUAL?  PRSA,V?MOVE,V?TAKE \?CCL72
+       PRINTR  "Der Troll spuckt dir ins Gesicht, zischt in einem recht primitiven Dialekt: %>N%achstes Mal mehr Gl%uck.%<"
+?CCL72:        EQUAL?  PRSA,V?MUNG \FALSE
+       PRINTR  "Der Troll lacht %uber deine hilflose Geste."
+?CCL46:        EQUAL?  PRSA,V?LISTEN \?CCL76
+       PRINTR  "Hier und da sagt der Troll mit seiner heiseren Trollstimme etwas, das wohl beleidigend ist."
+?CCL76:        ZERO?   TROLL-FLAG /FALSE
+       EQUAL?  PRSA,V?HELLO \FALSE
+       PRINTR  "Leider kann der Troll dich nicht h%oren."
+
+
+       .FUNCT  LEAVES-APPEAR:ANY:0:0
+       FSET?   GRATE,OPENBIT /FALSE
+       ZERO?   GRATE-REVEALED \FALSE
+       EQUAL?  PRSA,V?TAKE,V?MOVE \?CCL7
+       PRINTI  "Beim St%obern im Bl%atterhaufen kommt ein Gitter zum Vorschein."
+       CRLF    
+       JUMP    ?CND5
+?CCL7: PRINTI  "Als die Bl%atter aus dem Weg sind, zeigt sich ein Gitter."
+       CRLF    
+?CND5: FCLEAR  GRATE,INVISIBLE
+       SET     'GRATE-REVEALED,TRUE-VALUE
+       RFALSE  
+
+
+       .FUNCT  LEAF-PILE:ANY:0:0
+       EQUAL?  PRSA,V?COUNT \?CCL3
+       PRINTR  "Es gibt hier 69.105 Bl%atter."
+?CCL3: EQUAL?  PRSA,V?BURN \?CCL5
+       ICALL1  LEAVES-APPEAR
+       ICALL2  REMOVE-CAREFULLY,PRSO
+       IN?     PRSO,HERE \?CCL8
+       PRINTR  "Die Bl%atter brennen."
+?CCL8: CALL2   JIGS-UP,STR?235
+       RSTACK  
+?CCL5: EQUAL?  PRSA,V?CUT \?CCL10
+       PRINTI  "Du stocherst in den Bl%attern herum und machst eine beachtliche Schweinerei."
+       CRLF    
+       ICALL1  LEAVES-APPEAR
+       RTRUE   
+?CCL10:        EQUAL?  PRSA,V?TAKE,V?MOVE \?CCL12
+       EQUAL?  PRSA,V?MOVE \?CND13
+       PRINTI  "Geschafft."
+       CRLF    
+?CND13:        ZERO?   GRATE-REVEALED \FALSE
+       ICALL1  LEAVES-APPEAR
+       EQUAL?  PRSA,V?TAKE /FALSE
+       RTRUE   
+?CCL12:        EQUAL?  PRSA,V?LOOK-UNDER \FALSE
+       ZERO?   GRATE-REVEALED \FALSE
+       PRINTR  "Unter dem Bl%atterhaufen ist ein Gitter. Wenn du die Bl%atter fallen l%a%st, ist das Gitter wieder versteckt."
+
+
+       .FUNCT  CLEARING-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-ENTER \?CCL3
+       ZERO?   GRATE-REVEALED \FALSE
+       FSET    GRATE,INVISIBLE
+       RTRUE   
+?CCL3: EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "Du stehst auf einer Lichtung, und ein Wald umgibt dich von allen Seiten. Ein Pfad f%uhrt nach S%uden."
+       FSET?   GRATE,OPENBIT \?CCL11
+       CRLF    
+       PRINTR  "Da befindet sich ein offenes Gitter, das in die Dunkelheit hinabf%uhrt."
+?CCL11:        ZERO?   GRATE-REVEALED /?CND9
+       CRLF    
+       PRINTR  "Da ist ein Gitter, das Fest im Boden befestigt ist."
+?CND9: CRLF    
+       RTRUE   
+
+
+       .FUNCT  MAZE-11-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-ENTER \?CCL3
+       FCLEAR  GRATE,INVISIBLE
+       RTRUE   
+?CCL3: EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "Du bist in einem kleinen Zimmer bei dem Irrgarten. Es gibt hier in der N%ahe kleine verwirrende G%ange."
+       CRLF    
+       FSET?   GRATE,OPENBIT \?CCL8
+       PRINTR  "%Uber dir ist ein offenes Gitter, durch das Sonnenlicht hereinflutet."
+?CCL8: ZERO?   GRUNLOCK /?CCL10
+       PRINTR  "%Uber dir ist ein Gitter."
+?CCL10:        PRINTR  "%Uber dir ist ein Gitter, das mit einem Schlo%s, das aus einem Totenkopf und Gebeinen gemacht ist, verschlossen ist."
+
+
+       .FUNCT  GRATE-FUNCTION:ANY:0:0
+       EQUAL?  PRSA,V?OPEN \?CCL3
+       EQUAL?  PRSI,KEYS \?CCL3
+       ICALL   PERFORM,V?UNLOCK,GRATE,KEYS
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?LOCK \?CCL7
+       EQUAL?  HERE,GRATING-ROOM \?CCL10
+       ZERO?   GRUNLOCK /?CCL13
+       PRINTR  "Das Gitter wird verschlossen."
+?CCL13:        PRINTR  "Das Gitter ist schon verschlossen."
+?CCL10:        EQUAL?  HERE,GRATING-CLEARING \FALSE
+       PRINTR  "Du kannst es von innen nicht verschlie%sen."
+?CCL7: EQUAL?  PRSA,V?UNLOCK \?CCL17
+       EQUAL?  PRSO,GRATE \?CCL17
+       EQUAL?  HERE,GRATING-ROOM \?CCL22
+       EQUAL?  PRSI,KEYS \?CCL22
+       ZERO?   GRUNLOCK /?CCL27
+       PRINTI  "Das Gitter ist schon aufgeschlo%sen."
+       CRLF    
+       JUMP    ?CND25
+?CCL27:        PRINTI  "Das Gitter wird aufgeschlo%sen."
+       CRLF    
+?CND25:        SET     'GRUNLOCK,TRUE-VALUE
+       RETURN  GRUNLOCK
+?CCL22:        EQUAL?  HERE,GRATING-CLEARING \?CCL29
+       EQUAL?  PRSI,KEYS \?CCL29
+       PRINTR  "Du kannst das Schlo%s von hier aus nicht erreichen."
+?CCL29:        EQUAL?  HERE,GRATING-ROOM \?CCL33
+       EQUAL?  PRSI,HANDS \?CCL33
+       PRINTR  "You can't unlock it with your hands."
+?CCL33:        PRINTI  "Du kannst das Gitter nicht mit "
+       ICALL2  DER-DAT-PRINT,PRSI
+       PRINTR  " aufschlie%sen?"
+?CCL17:        EQUAL?  PRSA,V?PICK \?CCL37
+       PRINTR  "Du kannst das Schlo%s nicht knacken."
+?CCL37:        EQUAL?  PRSA,V?CLOSE,V?OPEN \?CCL39
+       ZERO?   GRUNLOCK /?CCL42
+       EQUAL?  HERE,CLEARING \?CCL45
+       PUSH    STR?237
+       JUMP    ?CND43
+?CCL45:        PUSH    STR?238
+?CND43:        ICALL   OPEN-CLOSE,GRATE,STACK,STR?236
+       FSET?   GRATE,OPENBIT \?CCL48
+       EQUAL?  HERE,CLEARING /?CND49
+       ZERO?   GRATE-REVEALED \?CND49
+       PRINTI  "Ein Haufen Bl%atter f%allt auf deinen Kopf und auf die Erde."
+       CRLF    
+       SET     'GRATE-REVEALED,TRUE-VALUE
+       MOVE    LEAVES,HERE
+?CND49:        FSET    GRATING-ROOM,ONBIT
+       RTRUE   
+?CCL48:        FCLEAR  GRATING-ROOM,ONBIT
+       RTRUE   
+?CCL42:        PRINTR  "Das Gitter ist verschlo%sen."
+?CCL39:        EQUAL?  PRSA,V?PUT \FALSE
+       EQUAL?  PRSI,GRATE \FALSE
+       GETP    PRSO,P?SIZE
+       GRTR?   STACK,20 \?CCL59
+       ICALL2  PRONOUN-NOM-CAP-PRINT,PRSO
+       PRINTR  " pa%st nicht durch das Gitter."
+?CCL59:        MOVE    PRSO,GRATING-ROOM
+       ICALL2  DER-NOM-CAP-PRINT,PRSO
+       PRINTR  " verschwindet durch das Gitter in die Dunkelheit, die darunter herrscht."
+
+
+       .FUNCT  MAZE-DIODES:ANY:0:0
+       PRINTI  "Wenn dieser Tunnel das n%achste Zimmer erreicht, kannst du ihn nicht mehr als R%uckweg benutzen."
+       CRLF    
+       CRLF    
+       EQUAL?  HERE,MAZE-2 \?CCL3
+       RETURN  MAZE-4
+?CCL3: EQUAL?  HERE,MAZE-7 \?CCL5
+       RETURN  DEAD-END-1
+?CCL5: EQUAL?  HERE,MAZE-9 \?CCL7
+       RETURN  MAZE-11
+?CCL7: EQUAL?  HERE,MAZE-12 \FALSE
+       RETURN  MAZE-5
+
+
+       .FUNCT  RUSTY-KNIFE-FCN:ANY:0:0
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       IN?     SWORD,WINNER \FALSE
+       PRINTI  "Als du das rostige Messer anfa%st, blitzt dein Schwert kurz mit einem einem blendenden blauen Licht auf."
+       CRLF    
+       RFALSE  
+?CCL3: EQUAL?  PRSI,RUSTY-KNIFE \?PRD10
+       EQUAL?  PRSA,V?ATTACK /?CCL8
+?PRD10:        EQUAL?  PRSA,V?SWING \FALSE
+       EQUAL?  PRSO,RUSTY-KNIFE \FALSE
+       ZERO?   PRSI /FALSE
+?CCL8: ICALL2  REMOVE-CAREFULLY,RUSTY-KNIFE
+       CALL2   JIGS-UP,STR?239
+       RSTACK  
+
+
+       .FUNCT  KNIFE-F:ANY:0:0
+       EQUAL?  PRSA,V?TAKE \FALSE
+       FCLEAR  ATTIC-TABLE,NDESCBIT
+       RFALSE  
+
+
+       .FUNCT  SKELETON:ANY:0:0
+       EQUAL?  PRSA,V?MOVE,V?RUB,V?TAKE /?CCL3
+       EQUAL?  PRSA,V?LOWER,V?RAISE,V?PUSH /?CCL3
+       EQUAL?  PRSA,V?KISS,V?KICK,V?ATTACK \FALSE
+?CCL3: PRINTI  "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. "
+       CRLF    
+       ICALL   ROB,HERE,LAND-OF-LIVING-DEAD,100
+       ICALL   ROB,ADVENTURER,LAND-OF-LIVING-DEAD
+       RTRUE   
+
+
+       .FUNCT  TORCH-OBJECT:ANY:0:0
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       PRINTR  "Die Fackel brennt."
+?CCL3: EQUAL?  PRSA,V?POUR-ON \?CCL5
+       EQUAL?  PRSI,TORCH \?CCL5
+       PRINTR  "Das Wasser verdampft bevor es mit der Fackel in Ber%uhrung kommt."
+?CCL5: EQUAL?  PRSA,V?LAMP-OFF \FALSE
+       FSET?   PRSO,ONBIT \FALSE
+       PRINTR  "Du verbrennst dir beinahe die Hand, als du versuchst, die Flamme zu l%oschen."
+
+
+       .FUNCT  MIRROR-ROOM:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "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."
+       CRLF    
+       ZERO?   MIRROR-MUNG /FALSE
+       PRINTR  "Leider ging der Spiegel durch deine Bl%odheit kaputt."
+
+
+       .FUNCT  MIRROR-MIRROR:ANY:0:0,RM2,L1,L2,N
+       SET     'RM2,MIRROR-ROOM-2
+       ZERO?   MIRROR-MUNG \?CCL3
+       EQUAL?  PRSA,V?RUB \?CCL3
+       ZERO?   PRSI /?CND6
+       EQUAL?  PRSI,HANDS /?CND6
+       PRINTI  "Du f%uhlst ein leichtes Kribbeln, das von "
+       ICALL2  DER-ACC-PRINT,PRSI
+       PRINTR  " ausgeht."
+?CND6: EQUAL?  HERE,RM2 \?CND10
+       SET     'RM2,MIRROR-ROOM-1
+?CND10:        FIRST?  HERE >L1 /?BOGUS12
+?BOGUS12:      FIRST?  RM2 >L2 /?PRG14
+?PRG14:        ZERO?   L1 /?PRG19
+       NEXT?   L1 >N /?BOGUS18
+?BOGUS18:      MOVE    L1,RM2
+       SET     'L1,N
+       JUMP    ?PRG14
+?PRG19:        ZERO?   L2 /?REP20
+       NEXT?   L2 >N /?BOGUS23
+?BOGUS23:      MOVE    L2,HERE
+       SET     'L2,N
+       JUMP    ?PRG19
+?REP20:        ICALL   GOTO,RM2,FALSE-VALUE
+       PRINTR  "Ein Grollen ert%ont aus der Tiefe, so da%s der Raum bebt."
+?CCL3: EQUAL?  PRSA,V?EXAMINE,V?LOOK-INSIDE \?CCL25
+       ZERO?   MIRROR-MUNG /?CCL28
+       PRINTR  "Der Spiegel ist in viele Scherben zerbrochen."
+?CCL28:        PRINTR  "Eine h%a%sliche Person starrt aus dem Spiegel zur%uck."
+?CCL25:        EQUAL?  PRSA,V?TAKE \?CCL30
+       PRINTR  "Der Spiegel ist mehrmals so gro%s wie du. Gib's auf!"
+?CCL30:        EQUAL?  PRSA,V?ATTACK,V?THROW,V?MUNG \FALSE
+       ZERO?   MIRROR-MUNG /?CCL35
+       PRINTR  "Hast du denn nicht schon genug Schaden angerichtet?"
+?CCL35:        SET     'MIRROR-MUNG,TRUE-VALUE
+       SET     'LUCKY,FALSE-VALUE
+       PRINTR  "Du hast den Spiegel zerbrochen. Ich hoffe, du hast sieben Jahre Gl%uck zur Hand."
+
+
+       .FUNCT  TORCH-ROOM-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "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."
+       CRLF    
+       ZERO?   DOME-FLAG /FALSE
+       PRINTR  "Ein Seil h%angt von dem Gel%ander runter und endet 3 Meter %uber deinem Kopf. "
+
+
+       .FUNCT  DOME-ROOM-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \?CCL3
+       PRINTI  "Du bist am Rand einer gro%sen Kuppel, die die Decke der Raumes darunter formt. Ein h%olzernes Gel%ander, das die Kuppel umgibt, besch%utzt dich vor dem Absturz in einen steilen Abgrund."
+       CRLF    
+       ZERO?   DOME-FLAG /FALSE
+       PRINTR  "Von dem Gel%ander h%angt ein Seil, das etwa 3 Meter %uber dem Boden endet."
+?CCL3: EQUAL?  RARG,M-ENTER \FALSE
+       ZERO?   DEAD /?CCL11
+       PRINTI  "Wenn du die Kuppel betrittst, f%uhlst du einen starken Sog, wie von einem Wind, der dich %uber das Gel%ander und nach unten rei%st."
+       CRLF    
+       MOVE    WINNER,TORCH-ROOM
+       SET     'OHERE,FALSE-VALUE
+       SET     'HERE,TORCH-ROOM
+       RTRUE   
+?CCL11:        EQUAL?  PRSA,V?LEAP \FALSE
+       CALL2   JIGS-UP,STR?240
+       RSTACK  
+
+
+       .FUNCT  LLD-ROOM:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \?CCL3
+       PRINTI  "Du bist au%serhalb eines riesigen Tores mit der Aufschrift:
+
+   Gebt auf jegliche Hoffnung Ihr,
+       die Ihr hier eintretet!
+
+Das Tor ist ge%offnet. Gro%se Trostlosigkeit und ein Haufen von zerquetschten K%orpern breitet sich vor dir aus. Tausende von Stimmen, die von einem schrecklichen Schicksal klagen, ert%onen."
+       CRLF    
+       ZERO?   LLD-FLAG \FALSE
+       ZERO?   DEAD \FALSE
+       PRINTR  "Der Eintritt durch das Tor ist von b%osen Geistern versperrt, die bei deinem Versuch Eintritt zu gewinnen, nur grinsen."
+?CCL3: EQUAL?  RARG,M-BEG \?CCL10
+       EQUAL?  PRSA,V?EXORCISE \?CCL13
+       ZERO?   LLD-FLAG \FALSE
+       IN?     BELL,WINNER \?CCL19
+       IN?     BOOK,WINNER \?CCL19
+       IN?     CANDLES,WINNER \?CCL19
+       PRINTR  "Du mu%st diese Zeremonie durchf%uhren."
+?CCL19:        PRINTR  "F%ur eine Austreibung bist du nicht vorbereitet."
+?CCL13:        ZERO?   LLD-FLAG \?CCL24
+       EQUAL?  PRSA,V?RING \?CCL24
+       EQUAL?  PRSO,BELL \?CCL24
+       SET     'XB,TRUE-VALUE
+       ICALL2  REMOVE-CAREFULLY,BELL
+       ICALL2  THIS-IS-IT,HOT-BELL
+       MOVE    HOT-BELL,HERE
+       PRINTI  "Die Glocke wird pl%otzlich gl%uhend hei%s und f%allt zu Boden. Die Geister, als w%aren sie versteinert, h%oren mit dem Gejammer auf und drehen sich dir zu. Auf ihren fahlen Gesichtern formt sich der Ausdruck einer langvergessenen Furcht."
+       CRLF    
+       IN?     CANDLES,WINNER \?CND28
+       PRINTI  "In deiner Verwirrung fallen die Kerzen auf den Boden (und sie sind aus)."
+       CRLF    
+       MOVE    CANDLES,HERE
+       FCLEAR  CANDLES,ONBIT
+       CALL2   INT,I-CANDLES
+       PUT     STACK,0,0
+?CND28:        CALL    QUEUE,I-XB,6
+       PUT     STACK,0,1
+       CALL    QUEUE,I-XBH,20
+       PUT     STACK,0,1
+       RTRUE   
+?CCL24:        ZERO?   XC /FALSE
+       EQUAL?  PRSA,V?READ \FALSE
+       EQUAL?  PRSO,BOOK \FALSE
+       ZERO?   LLD-FLAG \FALSE
+       PRINTI  "Jedes Wort des Gebetes hallt in einem ohrenbet%aubenden Durcheinander durch den Saal. Als die letzten Worte verhallen, spricht eine laute und befehlende Stimme: %>Weg mit Euch, Ihr Biester!%< Ein herzzerrei%sender Schrei f%ullt die H%ohle, und die Geister, eine h%ohere Macht versp%uren fliehen durch die W%ande."
+       CRLF    
+       ICALL2  REMOVE-CAREFULLY,GHOSTS
+       SET     'LLD-FLAG,TRUE-VALUE
+       CALL2   INT,I-XC
+       PUT     STACK,0,0
+       RTRUE   
+?CCL10:        EQUAL?  RARG,M-END \FALSE
+       ZERO?   XB /FALSE
+       IN?     CANDLES,WINNER \FALSE
+       FSET?   CANDLES,ONBIT \FALSE
+       ZERO?   XC \FALSE
+       SET     'XC,TRUE-VALUE
+       PRINTI  "Die Flammen flackern wild und scheinen zu tanzen. Die Erde unter dir zittert, und deine Knie drohen aufzugeben. Die Geister verzweifeln an deiner %uberirdischen Kraft."
+       CRLF    
+       CALL2   INT,I-XB
+       PUT     STACK,0,0
+       CALL    QUEUE,I-XC,3
+       PUT     STACK,0,1
+       RTRUE   
+
+
+       .FUNCT  I-XB:ANY:0:0
+       ZERO?   XC \?PEN1
+       EQUAL?  HERE,ENTRANCE-TO-HADES \?PEN1
+       PRINTI  "Der Bann dieser Zeremonie ist gebrochen, und die Geister, die zwar am%usiert, aber doch von deinem tolpatschigen Versuch gest%ort sind, nehmen ihr schreckliches Geheule wieder auf."
+       CRLF    
+?PEN1: SET     'XB,FALSE-VALUE
+       RETURN  XB
+
+
+       .FUNCT  I-XC:ANY:0:0
+       SET     'XC,FALSE-VALUE
+       CALL1   I-XB
+       RSTACK  
+
+
+       .FUNCT  I-XBH:ANY:0:0
+       ICALL2  REMOVE-CAREFULLY,HOT-BELL
+       MOVE    BELL,ENTRANCE-TO-HADES
+       EQUAL?  HERE,ENTRANCE-TO-HADES \FALSE
+       PRINTR  "Die Glocke scheint sich abgek%uhlt zu haben."
+
+
+       .FUNCT  DAM-ROOM-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "Du stehst oben auf dem Hochwasserschutzdamm Nr.3. Er war wohl zu seiner Zeit eine gro%se Sehensw%urdigkeit. Es gibt hier Pfade nach Norden, S%uden und Westen und eine steile Abk%urzung. "
+       CRLF    
+       ZERO?   LOW-TIDE /?CCL6
+       ZERO?   GATES-OPEN /?CCL6
+       PRINTI  "Der Wasserstand hinter dem Damm ist niedrig. Die Schleusentore sind ge%offnet worden. Das Wasser braust durch den Damm flu%sabw%arts."
+       CRLF    
+       JUMP    ?CND4
+?CCL6: ZERO?   GATES-OPEN /?CCL10
+       PRINTI  "Die Schleusentore sind ge%offnet. Wasser braust durch den Damm. Der Wasserstand hinter dem Damm ist immer noch hoch."
+       CRLF    
+       JUMP    ?CND4
+?CCL10:        ZERO?   LOW-TIDE /?CCL12
+       PRINTI  "Die Schleusentore sind geschlo%sen. Der Wasserstand in dem Reservoir ist niedrig, aber er steigt schnell."
+       CRLF    
+       JUMP    ?CND4
+?CCL12:        PRINTI  "Die Schleusentore des Dammes sind geschlo%sen. Hinter dem Damm kann man ein gro%ses Reservoir sehen. Wasser flie%st wild %uber den seit langem unbenutzten Damm."
+       CRLF    
+?CND4: PRINTI  "Es gibt hier eine Schalttafel, auf der eine gro%se Metallschraube angebracht ist. Direkt %uber der Schraube ist eine kleine gr%une Plastikblase"
+       ZERO?   GATE-FLAG /?CND13
+       PRINTI  ", die klar aufleuchtet"
+?CND13:        PRINTR  "."
+
+
+       .FUNCT  BOLT-F:ANY:0:0
+       EQUAL?  PRSA,V?TURN \?CCL3
+       EQUAL?  PRSI,WRENCH \?CCL6
+       ZERO?   GATE-FLAG /?CCL9
+       FCLEAR  RESERVOIR-SOUTH,TOUCHBIT
+       ZERO?   GATES-OPEN /?CCL12
+       SET     'GATES-OPEN,FALSE-VALUE
+       FCLEAR  LOUD-ROOM,TOUCHBIT
+       PRINTI  "Die Schleusentore schlie%sen sich, und Wasser sammelt sich hinter dem Damm an."
+       CRLF    
+       CALL    QUEUE,I-RFILL,8
+       PUT     STACK,0,1
+       CALL    QUEUE,I-REMPTY,0
+       PUT     STACK,0,1
+       RTRUE   
+?CCL12:        SET     'GATES-OPEN,TRUE-VALUE
+       PRINTI  "Die Schleusentore %offnen sich, und Wasser str%omt durch den Damm."
+       CRLF    
+       CALL    QUEUE,I-REMPTY,8
+       PUT     STACK,0,1
+       CALL    QUEUE,I-RFILL,0
+       PUT     STACK,0,1
+       RTRUE   
+?CCL9: PRINTR  "The bolt won't turn with your best effort."
+?CCL6: PRINTI  "Die Schraube l%a%st sich mit "
+       ICALL2  DER-ACC-PRINT,PRSI
+       PRINTR  " nicht drehen."
+?CCL3: EQUAL?  PRSA,V?TAKE \?CCL14
+       CALL1   INTEGRAL-PART
+       RSTACK  
+?CCL14:        EQUAL?  PRSA,V?OIL \FALSE
+       PRINTR  "O nein! Es sieht so aus, als ob die Tube nicht %Ol, sondern Klebstoff enthalten hat. Die Schraube wird dadurch nicht einfacher."
+
+
+       .FUNCT  BUBBLE-F:ANY:0:0
+       EQUAL?  PRSA,V?TAKE \FALSE
+       CALL1   INTEGRAL-PART
+       RSTACK  
+
+
+       .FUNCT  INTEGRAL-PART:ANY:0:0
+       PRINTR  "Es ist ein wichtiger Bestandteil der Schalttafel."
+
+
+       .FUNCT  I-RFILL:ANY:0:0
+       FSET    RESERVOIR,NONLANDBIT
+       FCLEAR  RESERVOIR,RLANDBIT
+       FCLEAR  DEEP-CANYON,TOUCHBIT
+       FCLEAR  LOUD-ROOM,TOUCHBIT
+       IN?     TRUNK,RESERVOIR \?PEN1
+       FSET    TRUNK,INVISIBLE
+?PEN1: SET     'LOW-TIDE,FALSE-VALUE
+       EQUAL?  HERE,RESERVOIR \?CCL5
+       LOC     WINNER
+       FSET?   STACK,VEHBIT \?CCL8
+       PRINTR  "Das Boot hebt sich leicht aus dem Schlamm und treibt auf dem Wasser des Reservoirs."
+?CCL8: ICALL2  JIGS-UP,STR?241
+       RTRUE   
+?CCL5: EQUAL?  HERE,DEEP-CANYON \?CCL10
+       PRINTR  "Ein Ger%ausch, wie das von flie%sendem Wasser, kann von unten geh%ort werden."
+?CCL10:        EQUAL?  HERE,LOUD-ROOM \?CCL12
+       PRINTI  "Pl%otzlich f%ullt ein alarmierend lautes Gebr%ull den Raum. Voller Furcht kriechst du davon."
+       CRLF    
+       CALL2   PICK-ONE,LOUD-RUNS
+       ICALL2  GOTO,STACK
+       RTRUE   
+?CCL12:        EQUAL?  HERE,RESERVOIR-NORTH,RESERVOIR-SOUTH \TRUE
+       PRINTR  "Du merkst, da%s der Wasserstand so hoch ist, da%s man nicht mehr zu Fu%s weiterkommt."
+
+
+       .FUNCT  I-REMPTY:ANY:0:0
+       FSET    RESERVOIR,RLANDBIT
+       FCLEAR  RESERVOIR,NONLANDBIT
+       FCLEAR  DEEP-CANYON,TOUCHBIT
+       FCLEAR  LOUD-ROOM,TOUCHBIT
+       FCLEAR  TRUNK,INVISIBLE
+       SET     'LOW-TIDE,TRUE-VALUE
+       EQUAL?  HERE,RESERVOIR \?CCL3
+       LOC     WINNER
+       FSET?   STACK,VEHBIT \?CCL3
+       PRINTR  "Der Wasserstand hat sich so weit gemindert, da%s das Boot nicht mehr weiter schwimmen kann. Es sinkt in den Schlamm."
+?CCL3: EQUAL?  HERE,DEEP-CANYON \?CCL7
+       PRINTR  "Das Get%ose von dem brausenden Wasser ist jetzt ruhiger."
+?CCL7: EQUAL?  HERE,RESERVOIR-NORTH,RESERVOIR-SOUTH \TRUE
+       PRINTR  "Der Wasserstand ist hier recht niedrig, und du k%onntest hier leicht auf die andere Seite kommen."
+
+
+       .FUNCT  BUTTON-F:ANY:0:0
+       EQUAL?  PRSA,V?READ \?CCL3
+       PRINTR  "Das kommt dir alles Spanisch vor."
+?CCL3: EQUAL?  PRSA,V?PUSH \FALSE
+       EQUAL?  PRSO,BLUE-BUTTON \?CCL8
+       ZERO?   WATER-LEVEL \?CCL11
+       FCLEAR  LEAK,INVISIBLE
+       PRINTI  "Da ist ein grollendes Ger%ausch, und ein Strom von Wasser scheint von der Ostwand in das Zimmer hereinzubrechen (scheinbar ein Rohr bruch)."
+       CRLF    
+       SET     'WATER-LEVEL,1
+       CALL    QUEUE,I-MAINT-ROOM,-1
+       PUT     STACK,0,1
+       RTRUE   
+?CCL11:        PRINTR  "Der blaue Knopf scheint, blockiert zu sein."
+?CCL8: EQUAL?  PRSO,RED-BUTTON \?CCL13
+       PRINTI  "Die Lichter im Raum gehen "
+       FSET?   HERE,ONBIT \?CCL16
+       FCLEAR  HERE,ONBIT
+       PRINTR  "aus."
+?CCL16:        FSET    HERE,ONBIT
+       PRINTR  "an."
+?CCL13:        EQUAL?  PRSO,BROWN-BUTTON \?CCL18
+       FCLEAR  DAM-ROOM,TOUCHBIT
+       SET     'GATE-FLAG,FALSE-VALUE
+       PRINTR  "Klick."
+?CCL18:        EQUAL?  PRSO,YELLOW-BUTTON \FALSE
+       FCLEAR  DAM-ROOM,TOUCHBIT
+       SET     'GATE-FLAG,TRUE-VALUE
+       PRINTR  "Klick."
+
+
+       .FUNCT  TOOL-CHEST-FCN:ANY:0:0
+       EQUAL?  PRSA,V?EXAMINE \?CCL3
+       PRINTR  "Die Werkzeugk%asten sind alle leer."
+?CCL3: EQUAL?  PRSA,V?PUT,V?OPEN,V?TAKE \?CCL5
+       ICALL2  REMOVE-CAREFULLY,TOOL-CHEST
+       PRINTR  "Die K%asten sind so rostig und verrottet, das sie zerfallen, wenn du sie anfa%st."
+?CCL5: EQUAL?  PRSA,V?OPEN \FALSE
+       PRINTR  "Die Werkzeugk%asten sind schon offen."
+
+
+       .FUNCT  I-MAINT-ROOM:ANY:0:0,HERE?
+       EQUAL?  HERE,MAINTENANCE-ROOM /?PRD1
+       PUSH    0
+       JUMP    ?PRD2
+?PRD1: PUSH    1
+?PRD2: SET     'HERE?,STACK
+       ZERO?   HERE? /?CND3
+       PRINTI  "The water level here is now "
+       DIV     WATER-LEVEL,2
+       GET     DROWNINGS,STACK
+       PRINT   STACK
+       CRLF    
+?CND3: INC     'WATER-LEVEL
+       LESS?   WATER-LEVEL,14 /?CCL7
+       ICALL   MUNG-ROOM,MAINTENANCE-ROOM,STR?251
+       CALL    QUEUE,I-MAINT-ROOM,0
+       PUT     STACK,0,1
+       ZERO?   HERE? /TRUE
+       ICALL2  JIGS-UP,STR?252
+       RTRUE   
+?CCL7: IN?     WINNER,INFLATED-BOAT \TRUE
+       EQUAL?  HERE,MAINTENANCE-ROOM,DAM-ROOM,DAM-LOBBY \TRUE
+       ICALL2  JIGS-UP,STR?253
+       RTRUE   
+
+
+       .FUNCT  LEAK-FUNCTION:ANY:0:0
+       GRTR?   WATER-LEVEL,0 \FALSE
+       EQUAL?  PRSA,V?PUT-ON,V?PUT \?CCL6
+       EQUAL?  PRSO,PUTTY \?CCL6
+       CALL1   FIX-MAINT-LEAK
+       RSTACK  
+?CCL6: EQUAL?  PRSA,V?PLUG \FALSE
+       EQUAL?  PRSI,PUTTY \?CCL13
+       CALL1   FIX-MAINT-LEAK
+       RSTACK  
+?CCL13:        CALL2   WITH-TELL,PRSI
+       RSTACK  
+
+
+       .FUNCT  FIX-MAINT-LEAK:ANY:0:0
+       SET     'WATER-LEVEL,-1
+       CALL    QUEUE,I-MAINT-ROOM,0
+       PUT     STACK,0,1
+       PRINTR  "Durch ein Wunder der Zorkschen Technologie ist es dir gelungen, das Leck im Damm zu beheben."
+
+
+       .FUNCT  PUTTY-FCN:ANY:0:0
+       EQUAL?  PRSA,V?OIL \?PRD5
+       EQUAL?  PRSI,PUTTY /?CCL3
+?PRD5: EQUAL?  PRSA,V?PUT \FALSE
+       EQUAL?  PRSO,PUTTY \FALSE
+?CCL3: PRINTR  "Das Allzweckschmierzeug dient nicht als Schmier%ol."
+
+
+       .FUNCT  TUBE-FUNCTION:ANY:0:0
+       EQUAL?  PRSA,V?PUT \?CCL3
+       EQUAL?  PRSI,TUBE \?CCL3
+       PRINTR  "Die Tube nimmt einfach nichts auf."
+?CCL3: EQUAL?  PRSA,V?SQUEEZE \FALSE
+       FSET?   PRSO,OPENBIT \?CCL10
+       IN?     PUTTY,PRSO \?CCL10
+       MOVE    PUTTY,WINNER
+       PRINTR  "Das widerliche Zeug quillt %uber deine ganze Hand."
+?CCL10:        FSET?   PRSO,OPENBIT \?CCL14
+       PRINTR  "Die Tube ist scheinbar leer."
+?CCL14:        PRINTR  "Die Tube ist zu."
+
+
+       .FUNCT  DAM-FUNCTION:ANY:0:0
+       EQUAL?  PRSA,V?CLOSE,V?OPEN \?CCL3
+       PRINTR  "Das klingt annehmbar, aber so geht es nicht."
+?CCL3: EQUAL?  PRSA,V?PLUG \FALSE
+       EQUAL?  PRSI,HANDS \?CCL8
+       PRINTR  "Bist du der kleine Gernegro%s, ja? Zu dumm, das ist ein gro%ser Damm."
+?CCL8: PRINTI  "Mit "
+       ICALL2  EIN-DAT-PRINT,PRSI
+       PRINTR  "? Wei%st du wie gro%s der Damm ist? Du k%onntest h%ochstens ein winziges Leck damit stopfen."
+
+
+       .FUNCT  WITH-TELL:ANY:1:1,OBJ
+       PRINTI  "With "
+       ICALL2  EIN-DAT-PRINT,OBJ
+       PRINTR  "?"
+
+
+       .FUNCT  RESERVOIR-SOUTH-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       ZERO?   LOW-TIDE /?CCL6
+       ZERO?   GATES-OPEN /?CCL6
+       PRINTI  "Du bist in einem l%anglichen Zimmer. Nach Norden lag fr%uher ein See. Aber, nachdem der Wasserstand gemindert wurde, gibt es hier blo%s einen breiten Bach, der durch die Mitte des Raumes flie%st."
+       JUMP    ?CND4
+?CCL6: ZERO?   GATES-OPEN /?CCL10
+       PRINTI  "Du bist in einem l%anglichen Zimmer. Nach Norden liegt ein gro%ser See. Er ist zu tief, ihn zu %uberqueren. Du merkst aber, da%s der Wassterstand sich rapide senkt. Es wird nicht lange dauern, bis du den See %uberqueren kannst."
+       JUMP    ?CND4
+?CCL10:        ZERO?   LOW-TIDE /?CCL12
+       PRINTI  "Du bist in einem l%anglichen Zimmer. Nach Norden gibt es eine weite Fl%ache, die fr%uher ein Reservoir war, aber jetzt nur noch ein Flu%s ist. Du bemerkst aber, da%s der Wasserstand des Flu%ses sich rapide hebt, und da%s es bald unm%oglich sein wird, ihn zu %uberqueren."
+       JUMP    ?CND4
+?CCL12:        PRINTI  "Du bist in einem l%anglichen Raum am S%udufer eines gro%sen Sees, der viel zu tief und zu breit zum %Uberqueren ist."
+?CND4: CRLF    
+       PRINTR  "Den Bach entlang f%uhrt ein Pfad nach Osten oder Westen, ein steiler Pfad, nach S%udwesten den Rand einer Spalte entlang und ein Pfad f%uhrt in eine Schlucht nach S%udosten."
+
+
+       .FUNCT  RESERVOIR-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-END \?CCL3
+       LOC     WINNER
+       FSET?   STACK,VEHBIT /?CCL3
+       ZERO?   GATES-OPEN \?CCL3
+       ZERO?   LOW-TIDE /?CCL3
+       PRINTR  "Du bemerkst, da%s der Wasserstand sich hier rapide hebt. Die Str%omungen werden auch st%arker. Hier zu bleiben, erscheint recht gef%ahrlich."
+?CCL3: EQUAL?  RARG,M-LOOK \FALSE
+       ZERO?   LOW-TIDE /?CCL12
+       PRINTI  "Du stehst da, wo einmal ein gro%ser See war, aber der ist jetzt ein gro%ser Schlammhaufen. Es gibt hier %>Ufer%< nach Norden und S%uden."
+       CRLF    
+       CRLF    
+       RTRUE   
+?CCL12:        PRINTR  "Du bist auf dem See. Nach Norden und S%uden kann man Str%ande sehen. Flu%saufw%arts flie%st ein kleiner Flu%s durch eine enge Rinne in den Felsen in den See hinein. Flu%sabw%arts kann man den Damm sehen."
+
+
+       .FUNCT  RESERVOIR-NORTH-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       ZERO?   LOW-TIDE /?CCL6
+       ZERO?   GATES-OPEN /?CCL6
+       PRINTI  "Du bist in einem grottenartigen Raum. Sein S%udteil war einmal ein See. Aber, mit dem geminderten Wasserstand, gibt es hier nur noch einen breiten Bach, der hier durchflie%st."
+       JUMP    ?CND4
+?CCL6: ZERO?   GATES-OPEN /?CCL10
+       PRINTI  "Du bist in einer weiten grottenartigen Gegend. Nach S%uden ist ein gro%ser See, dessen Wasserstand rapide zu fallen scheint."
+       JUMP    ?CND4
+?CCL10:        ZERO?   LOW-TIDE /?CCL12
+       PRINTI  "Du bist in einer grottenartigen Gegend. Nach S%uden ist ein sehr breiter Strom. Der Wasserstand des Stroms steigt rapide, und es scheint, da%s es bald unm%oglich sein wird auf die andere Seite zu kommen."
+       JUMP    ?CND4
+?CCL12:        PRINTI  "Du bist in einem grottenartigen Raum auf der Nordseite eines gro%sen Sees."
+?CND4: CRLF    
+       PRINTR  "Eine schleimige Treppe f%uhrt aus Raum nach Norden."
+
+
+       .FUNCT  BOTTLE-FUNCTION:ANY:0:0,E?
+       EQUAL?  PRSA,V?THROW \?CCL3
+       EQUAL?  PRSO,BOTTLE \?CCL3
+       ICALL2  REMOVE-CAREFULLY,PRSO
+       SET     'E?,TRUE-VALUE
+       PRINTI  "Die Flasche trifft die Wand und zerschellt."
+       CRLF    
+       JUMP    ?CND1
+?CCL3: EQUAL?  PRSA,V?MUNG \?CCL7
+       SET     'E?,TRUE-VALUE
+       ICALL2  REMOVE-CAREFULLY,PRSO
+       PRINTI  "Eine brilliante Aktion, die die Flasche zerst%ort."
+       CRLF    
+       JUMP    ?CND1
+?CCL7: EQUAL?  PRSA,V?SHAKE \?CND1
+       FSET?   PRSO,OPENBIT \?CND1
+       IN?     WATER,PRSO \?CND1
+       SET     'E?,TRUE-VALUE
+?CND1: ZERO?   E? /?CCL15
+       IN?     WATER,PRSO \?CCL15
+       PRINTI  "Das Wasser spritzt auf den Boden und verdampft."
+       CRLF    
+       ICALL2  REMOVE-CAREFULLY,WATER
+       RTRUE   
+?CCL15:        ZERO?   E? \TRUE
+       RFALSE  
+
+
+       .FUNCT  CYCLOPS-FCN:ANY:0:0,COUNT
+       SET     'COUNT,CYCLOWRATH
+       EQUAL?  WINNER,CYCLOPS \?CCL3
+       ZERO?   CYCLOPS-FLAG /?CCL6
+       PRINTR  "Es hat keinen Sinn mit ihm zu sprechen. Er schl%aft fest."
+?CCL6: EQUAL?  PRSA,V?ODYSSEUS \?CCL8
+       SET     'WINNER,ADVENTURER
+       ICALL2  PERFORM,V?ODYSSEUS
+       RTRUE   
+?CCL8: PRINTR  "Der Zyklop zieht das Essen der Unterhaltung vor."
+?CCL3: ZERO?   CYCLOPS-FLAG /?CCL10
+       EQUAL?  PRSA,V?EXAMINE \?CCL13
+       PRINTR  "Der Zyklop schl%aft wie ein Engel, wenn auch ein h%a%slicher."
+?CCL13:        EQUAL?  PRSA,V?ATTACK,V?KICK,V?ALARM /?CCL15
+       EQUAL?  PRSA,V?MUNG,V?BURN \FALSE
+?CCL15:        PRINTI  "Der Zyklop g%ahnt und starrt das Ding an, das ihn aufgeweckt hat."
+       CRLF    
+       SET     'CYCLOPS-FLAG,FALSE-VALUE
+       FSET    CYCLOPS,FIGHTBIT
+       LESS?   COUNT,0 \?CCL20
+       SUB     0,COUNT >CYCLOWRATH
+       RETURN  CYCLOWRATH
+?CCL20:        SET     'CYCLOWRATH,COUNT
+       RETURN  CYCLOWRATH
+?CCL10:        EQUAL?  PRSA,V?EXAMINE \?CCL22
+       PRINTR  "Der hungrige Zyklop steht am Fu%s der Treppe."
+?CCL22:        EQUAL?  PRSA,V?GIVE \?CCL24
+       EQUAL?  PRSI,CYCLOPS \?CCL24
+       EQUAL?  PRSO,LUNCH \?CCL29
+       LESS?   COUNT,0 /?CND30
+       ICALL2  REMOVE-CAREFULLY,LUNCH
+       PRINTI  "Der Zyklop sagt: %>Ei, ei. Ich liebe scharfe Pepperoni! Aber, oooh, ich k%onnte erst mal was zu Trinken brauchen. Vielleicht k%onnte ich das Blut von 'diesem Ding' trinken%<. Aus dem listigen Aufleuchten seiner Augen kannst du schlie%sen, da%s du gemeint bist."
+       CRLF    
+       SUB     0,COUNT
+       CALL    MIN,-1,STACK >CYCLOWRATH
+?CND30:        CALL    QUEUE,I-CYCLOPS,-1
+       PUT     STACK,0,1
+       RTRUE   
+?CCL29:        EQUAL?  PRSO,WATER /?CTR32
+       EQUAL?  PRSO,BOTTLE \?CCL33
+       IN?     WATER,BOTTLE \?CCL33
+?CTR32:        LESS?   COUNT,0 \?CCL40
+       ICALL2  REMOVE-CAREFULLY,WATER
+       MOVE    BOTTLE,HERE
+       FSET    BOTTLE,OPENBIT
+       FCLEAR  CYCLOPS,FIGHTBIT
+       PRINTI  "Der Zyklop nimmt die Flasche, pr%uft ihren Inhalt und trinkt das Wasser. Einen Augenblick sp%ater %offnet er seinen Mund zu einem G%ahnen, mit dem er dich beinahe verschluckt, dann schl%aft er fest ein. (Was hast du ihm denn blo%s in das Wasser geschmuggelt?)"
+       CRLF    
+       SET     'CYCLOPS-FLAG,TRUE-VALUE
+       RETURN  CYCLOPS-FLAG
+?CCL40:        PRINTR  "Scheinbar ist der Zyklop nicht durstig und lehnt dein gro%sz%ugiges Angebot ab."
+?CCL33:        EQUAL?  PRSO,GARLIC \?CCL42
+       PRINTR  "Vielleicht ist der Zyklop hungrig, aber auch er kennt seine Grenzen."
+?CCL42:        PRINTR  "Der Zyklop ist nicht so dumm, da%s er DAS essen w%urde!"
+?CCL24:        EQUAL?  PRSA,V?MUNG,V?ATTACK,V?THROW \?CCL44
+       CALL    QUEUE,I-CYCLOPS,-1
+       PUT     STACK,0,1
+       EQUAL?  PRSA,V?MUNG \?CCL47
+       PRINTR  "%>Meinst du, da%s ich so dumm bin, wie mein Vater war?%< sagt er, als er dir ausweicht."
+?CCL47:        PRINTI  "Der Zyklop zuckt die Achseln und beachtet deinen armseligen Versuch nicht weiter."
+       CRLF    
+       EQUAL?  PRSA,V?THROW \TRUE
+       MOVE    PRSO,HERE
+       RTRUE   
+?CCL44:        EQUAL?  PRSA,V?TAKE \?CCL51
+       PRINTR  "Es gef%allt dem Zyklopen nicht, da%s du ihn angreifst."
+?CCL51:        EQUAL?  PRSA,V?TIE \?CCL53
+       PRINTR  "Du kannst den Zyklopen nicht fesseln, obwohl er gefesselt zu sein scheint."
+?CCL53:        EQUAL?  PRSA,V?LISTEN \FALSE
+       PRINTR  "Du kannst seinen Magen knurren h%oren."
+
+
+       .FUNCT  I-CYCLOPS:ANY:0:0
+       ZERO?   CYCLOPS-FLAG \TRUE
+       ZERO?   DEAD \TRUE
+       EQUAL?  HERE,CYCLOPS-ROOM /?CCL7
+       CALL2   INT,I-CYCLOPS
+       PUT     STACK,0,0
+       RTRUE   
+?CCL7: LESS?   CYCLOWRATH,0 \?CCL13
+       SUB     0,CYCLOWRATH
+       JUMP    ?CND11
+?CCL13:        PUSH    CYCLOWRATH
+?CND11:        GRTR?   STACK,5 \?CCL10
+       CALL2   INT,I-CYCLOPS
+       PUT     STACK,0,0
+       CALL2   JIGS-UP,STR?254
+       RSTACK  
+?CCL10:        LESS?   CYCLOWRATH,0 \?CCL16
+       DEC     'CYCLOWRATH
+       JUMP    ?CND14
+?CCL16:        INC     'CYCLOWRATH
+?CND14:        ZERO?   CYCLOPS-FLAG \FALSE
+       LESS?   CYCLOWRATH,0 \?CCL22
+       SUB     0,CYCLOWRATH
+       JUMP    ?CND20
+?CCL22:        PUSH    CYCLOWRATH
+?CND20:        SUB     STACK,1
+       GET     CYCLOMAD,STACK
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  CYCLOPS-ROOM-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \?CCL3
+       PRINTI  "Dieser Raum hat einen Ausgang nach Nordwesten, und eine Treppe f%uhrt nach oben."
+       CRLF    
+       ZERO?   CYCLOPS-FLAG /?CCL6
+       ZERO?   MAGIC-FLAG \?CCL6
+       PRINTR  "Der Zyklop schl%aft selig am Fu%se der Treppe."
+?CCL6: ZERO?   MAGIC-FLAG /?CCL10
+       PRINTR  "Die Ostwand, die fr%uher ganz war, zeigt jetzt eine zyklopenf%ormige %Offnung."
+?CCL10:        ZERO?   CYCLOWRATH \?CCL12
+       PRINTR  "Ein Zyklop, der aussieht, als w%are er bereit, G%aule zu verschlingen (viel eher als nur Abenteurer), blockiert die Treppe. Von seinem Gesundheitszustand und den Blutspuren an den W%anden, kannst du schlie%sen, da%s er nicht sehr freundlich ist, obwohle er Menschen liebt."
+?CCL12:        GRTR?   CYCLOWRATH,0 \?CCL14
+       PRINTR  "Der Zyklop steht in der Ecke und beobachtet dich scharf. Ich glaube nicht, da%s er dich mag. Er sieht sogar f%ur einen Zyklopen ausgesprochen hungrig aus."
+?CCL14:        LESS?   CYCLOWRATH,0 \FALSE
+       PRINTR  "Der Zyklop scheint, nachdem er die scharfen Pepperoni gefressen hat, nach Atem zu ringen. Seine flammenrote Zunge h%angt aus seinem menschengro%sen Maul."
+?CCL3: EQUAL?  RARG,M-ENTER \FALSE
+       ZERO?   CYCLOWRATH /TRUE
+       CALL2   INT,I-CYCLOPS
+       PUT     STACK,0,1
+       RTRUE   
+
+
+       .FUNCT  LOUD-ROOM-FCN:ANY:1:1,RARG,WRD
+       EQUAL?  RARG,M-LOOK \?CCL3
+       PRINTI  "Dies ist ein riesiges Zimmer, in dem man die Decke nicht von unten erkennen kann. Hier ist ein enger Durchgang von Osten nach Westen und eine Steintreppe f%uhrt nach oben."
+       ZERO?   LOUD-FLAG \?CTR5
+       ZERO?   GATES-OPEN \?CCL6
+       ZERO?   LOW-TIDE /?CCL6
+?CTR5: PRINTR  " Der Raum ist in seiner Stille unheimlich."
+?CCL6: PRINTR  " Der Raum ist mit ohrenbet%aubendem L%arm gef%ullt. Das Get%ose scheint, von allen W%anden widerzuhallen. Es ist unm%oglich, hier auch nur zu denken."
+?CCL3: EQUAL?  RARG,M-END \?CCL12
+       ZERO?   GATES-OPEN /?CCL12
+       ZERO?   LOW-TIDE \?CCL12
+       PRINTI  "Es ist unertr%aglich laut hier. Eine ohrenbet%aubendes Gebr%ull kommt von allen Seiten auf dich zu. Dein Kopf dr%ohnt ununterbrochen. Mit gr%o%ster Anstrengung verl%a%st du den Raum."
+       CRLF    
+       CRLF    
+       CALL2   PICK-ONE,LOUD-RUNS
+       ICALL2  GOTO,STACK
+       RFALSE  
+?CCL12:        EQUAL?  RARG,M-ENTER \FALSE
+       ZERO?   LOUD-FLAG \FALSE
+       ZERO?   GATES-OPEN \?CCL20
+       ZERO?   LOW-TIDE \FALSE
+?CCL20:        ZERO?   GATES-OPEN /?CCL26
+       ZERO?   LOW-TIDE /FALSE
+?CCL26:        ICALL1  V-FIRST-LOOK
+       ZERO?   P-CONT /?PRG31
+       PRINTI  "Deine anderen Befehle sind in dem Gebr%ull verloren gegangen."
+       CRLF    
+       SET     'P-CONT,FALSE-VALUE
+?PRG31:        ZERO?   SUPER-BRIEF \?CND33
+       CRLF    
+?CND33:        PRINTC  62
+       PUTB    P-INBUF,1,0
+       READ    P-INBUF,P-LEXV
+       GETB    P-LEXV,P-LEXWORDS
+       ZERO?   STACK \?CND35
+       PRINTI  "Bitte?"
+       CRLF    
+       JUMP    ?PRG31
+?CND35:        GET     P-LEXV,1 >WRD
+       EQUAL?  WRD,W?LAUF,W?GEH,W?REN /?CTR38
+       EQUAL?  WRD,W?LAUFE,W?GEHE,W?RENE \?CCL39
+?CTR38:        GET     P-LEXV,3 >WRD
+       JUMP    ?CND37
+?CCL39:        EQUAL?  WRD,W?SAG \?CND37
+       GET     P-LEXV,5 >WRD
+?CND37:        EQUAL?  WRD,W?SAVE \?CCL45
+       ICALL1  V-SAVE
+       JUMP    ?PRG31
+?CCL45:        EQUAL?  WRD,W?WIEDERHERSTELLUNG \?CCL47
+       ICALL1  V-RESTORE
+       JUMP    ?PRG31
+?CCL47:        EQUAL?  WRD,W?AUFHOEREN,W?AUFH%OREN \?CCL49
+       ICALL1  V-QUIT
+       JUMP    ?PRG31
+?CCL49:        EQUAL?  WRD,W?W,W?WEST,W?WESTEN \?CCL51
+       CALL2   GOTO,ROUND-ROOM
+       RSTACK  
+?CCL51:        EQUAL?  WRD,W?O,W?OSTEN,W?OST \?CCL53
+       CALL2   GOTO,DAMP-CAVE
+       RSTACK  
+?CCL53:        EQUAL?  WRD,W?RAUF,W?RA \?CCL55
+       CALL2   GOTO,DEEP-CANYON
+       RSTACK  
+?CCL55:        EQUAL?  WRD,W?ECHO \?CCL57
+       SET     'LOUD-FLAG,TRUE-VALUE
+       FCLEAR  BAR,SACREDBIT
+       PRINTI  "Die Akustik in dem Raum %andert sich ein bi%schen."
+       CRLF    
+       ZERO?   SUPER-BRIEF \TRUE
+       CRLF    
+       RTRUE   
+?CCL57:        ICALL1  V-ECHO
+       JUMP    ?PRG31
+
+
+       .FUNCT  DEEP-CANYON-F:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "Du bist am S%udrand einer tiefen Schlucht. Durchg%ange f%uhren nach Osten, Nordwesten und S%udwesten. Eine Treppe f%uhrt nach unten."
+       ZERO?   GATES-OPEN /?CCL6
+       ZERO?   LOW-TIDE \?CCL6
+       PRINTR  " Du kannst ein lautes Get%ose, wie das Brausen von Wasser von unten h%oren."
+?CCL6: ZERO?   GATES-OPEN \?CCL10
+       ZERO?   LOW-TIDE /?CCL10
+       CRLF    
+       RTRUE   
+?CCL10:        PRINTR  "Du kannst von unten herauf das Rauschen von Wasser h%oren."
+
+
+       .FUNCT  THIEF-VS-ADVENTURER:ANY:1:1,HERE?,ROBBED?,WINNER-ROBBED?
+       ZERO?   DEAD \?CCL2
+       EQUAL?  HERE,TREASURE-ROOM /FALSE
+?CCL2: ZERO?   THIEF-HERE \?CCL6
+       ZERO?   DEAD \?CCL9
+       ZERO?   HERE? \?CCL9
+       RANDOM  100
+       GRTR?   30,STACK \?CCL9
+       IN?     STILETTO,THIEF \FALSE
+       FCLEAR  THIEF,INVISIBLE
+       PRINTI  "Jemand, der einen gro%sen Sack tr%agt, lehnt hier gegen eine Wand. Er spricht kein Wort, aber es besteht kein Zweifel, da%s er sich nur %uber seine eigene Leiche von dem Sack trennen wird."
+       CRLF    
+       SET     'THIEF-HERE,TRUE-VALUE
+       RTRUE   
+?CCL9: ZERO?   HERE? /?CCL16
+       FSET?   THIEF,FIGHTBIT \?CCL16
+       CALL2   WINNING?,THIEF
+       ZERO?   STACK \?CCL16
+       PRINTI  "Dein Gegner, der entscheidet, da%s Bescheidenheit auch eine Zier ist, entscheidet diesen kleinen Zwischenfall abzubrechen. Mit einem besch%amten Kopfnicken tritt er zur%uck ins Dunkel und verschwindet."
+       CRLF    
+       FSET    THIEF,INVISIBLE
+       FCLEAR  THIEF,FIGHTBIT
+       ICALL1  RECOVER-STILETTO
+       RTRUE   
+?CCL16:        ZERO?   HERE? /?CCL21
+       FSET?   THIEF,FIGHTBIT \?CCL21
+       RANDOM  100
+       GRTR?   90,STACK /FALSE
+?CCL21:        ZERO?   HERE? /?CCL26
+       RANDOM  100
+       GRTR?   30,STACK \?CCL26
+       PRINTI  "Der, der den gro%sen Sack tr%agt, ist gerade abgehauen. Er hatte die Nase voll. Gott sei Dank hat er nichts mitgenommen."
+       CRLF    
+       FSET    THIEF,INVISIBLE
+       ICALL1  RECOVER-STILETTO
+       RTRUE   
+?CCL26:        RANDOM  100
+       GRTR?   70,STACK /FALSE
+       ZERO?   DEAD \FALSE
+       CALL    ROB,HERE,THIEF,100
+       ZERO?   STACK /?CCL34
+       SET     'ROBBED?,HERE
+       JUMP    ?CND32
+?CCL34:        CALL    ROB,WINNER,THIEF
+       ZERO?   STACK /?CND32
+       SET     'ROBBED?,PLAYER
+?CND32:        SET     'THIEF-HERE,TRUE-VALUE
+       ZERO?   ROBBED? /?CCL38
+       ZERO?   HERE? \?CCL38
+       PRINTI  "Ein %ubelau%sehender Typ mit einem gro%sen Sack ist gerade durchs Zimmer gelatscht. Auf dem Weg hat er ganz ruhig ein paar Wertgegenst%ande "
+       EQUAL?  ROBBED?,HERE \?CCL43
+       PRINTI  "aus dem Zimmer"
+       JUMP    ?CND41
+?CCL43:        PRINTI  "aus deinem Besitz"
+?CND41:        PRINTI  " mitgehen lassen, dabei hat er etwas gemurmelt wie ....%>Diene deinem N%achsten bevor...%<"
+       CRLF    
+       ICALL1  STOLE-LIGHT?
+       RFALSE  
+?CCL38:        ZERO?   HERE? /?CCL45
+       ICALL1  RECOVER-STILETTO
+       ZERO?   ROBBED? /?CCL48
+       PRINTI  "Der Dieb ist gerade abgehauen, nat%urlich trug er immer noch seinen gro%sen Sack. "
+       EQUAL?  ROBBED?,PLAYER \?CCL51
+       PRINTI  "Du hast es vielleicht nicht bemerkt, aber er hat dich restlos ausgeraubt."
+       JUMP    ?CND49
+?CCL51:        PRINTI  "Du hast vielleicht nicht gemerkt, da%s er die Wertsachen im Zimmer abgestaubt hat."
+?CND49:        CRLF    
+       ICALL1  STOLE-LIGHT?
+       JUMP    ?CND46
+?CCL48:        PRINTI  "Der Dieb, der nichts Wertvolles finden konnte, ist ver%argert abgehauen."
+       CRLF    
+?CND46:        FSET    THIEF,INVISIBLE
+       SET     'HERE?,FALSE-VALUE
+       RTRUE   
+?CCL45:        PRINTR  "Ein hagerer, hungrigau%sehender Herr latschte hier gerade durch. Er trug einen gro%sen Sack. Als er nichts Wertvolles finden konnte, zog er ver%argert ab."
+?CCL6: ZERO?   HERE? /FALSE
+       RANDOM  100
+       GRTR?   30,STACK \FALSE
+       CALL    ROB,HERE,THIEF,100
+       ZERO?   STACK /?CCL58
+       SET     'ROBBED?,HERE
+       JUMP    ?CND56
+?CCL58:        CALL    ROB,WINNER,THIEF
+       ZERO?   STACK /?CND56
+       SET     'ROBBED?,PLAYER
+?CND56:        ZERO?   ROBBED? /?CCL62
+       PRINTI  "Der Dieb ist gerade abgehauen, nat%urlich trug er immer noch seinen gro%sen Sack. "
+       EQUAL?  ROBBED?,PLAYER \?CCL65
+       PRINTI  "Du hast es vielleicht nicht bemerkt, aber er hat dich restlos ausgeraubt."
+       JUMP    ?CND63
+?CCL65:        PRINTI  "Du hast vielleicht nicht gemerkt, da%s er die Wertsachen im Zimmer abgestaubt hat."
+?CND63:        CRLF    
+       ICALL1  STOLE-LIGHT?
+       JUMP    ?CND60
+?CCL62:        PRINTI  "Der Dieb, der nichts Wertvolles finden konnte, zog w%utend ab."
+       CRLF    
+?CND60:        FSET    THIEF,INVISIBLE
+       SET     'HERE?,FALSE-VALUE
+       ICALL1  RECOVER-STILETTO
+       RFALSE  
+
+
+       .FUNCT  STOLE-LIGHT?:ANY:0:0,OLD-LIT
+       SET     'OLD-LIT,LIT
+       CALL2   LIT?,HERE >LIT
+       ZERO?   LIT \TRUE
+       ZERO?   OLD-LIT /TRUE
+       PRINTR  "Der Dieb hat dich offensichtlich im Dunkeln gelassen."
+
+
+       .FUNCT  HACK-TREASURES:ANY:0:0,X
+       ICALL1  RECOVER-STILETTO
+       FSET    THIEF,INVISIBLE
+       FIRST?  TREASURE-ROOM >X /?PRG2
+?PRG2: ZERO?   X /TRUE
+       FCLEAR  X,INVISIBLE
+       NEXT?   X >X /?PRG2
+       JUMP    ?PRG2
+
+
+       .FUNCT  DEPOSIT-BOOTY:ANY:1:1,RM,X,N,FLG
+       FIRST?  THIEF >X /?PRG2
+?PRG2: ZERO?   X \?CND4
+       RETURN  FLG
+?CND4: NEXT?   X >N /?BOGUS6
+?BOGUS6:       EQUAL?  X,STILETTO,LARGE-BAG /?CND7
+       GETP    X,P?TVALUE
+       GRTR?   STACK,0 \?CND7
+       MOVE    X,RM
+       SET     'FLG,TRUE-VALUE
+       EQUAL?  X,EGG \?CND7
+       SET     'EGG-SOLVE,TRUE-VALUE
+       FSET    EGG,OPENBIT
+?CND7: SET     'X,N
+       JUMP    ?PRG2
+
+
+       .FUNCT  ROB-MAZE:ANY:1:1,RM,X,N
+       FIRST?  RM >X /?PRG2
+?PRG2: ZERO?   X /FALSE
+       NEXT?   X >N /?BOGUS6
+?BOGUS6:       FSET?   X,TAKEBIT \?CND7
+       FSET?   X,INVISIBLE /?CND7
+       RANDOM  100
+       GRTR?   40,STACK \?CND7
+       PRINTI  "Irgendwo in der Ferne h%orst du jemanden sagen %>Meine G%ute, was "
+       ICALL2  DER-NOM-PRINT,X
+       PRINTI  " hier wohl tut?%<"
+       CRLF    
+       CALL2   ZPROB,60
+       ZERO?   STACK /TRUE
+       MOVE    X,THIEF
+       FSET    X,TOUCHBIT
+       FSET    X,INVISIBLE
+       RTRUE   
+?CND7: SET     'X,N
+       JUMP    ?PRG2
+
+
+       .FUNCT  ROBBER-FUNCTION:ANY:0:1,MODE,FLG,X,N
+       EQUAL?  PRSA,V?TELL \?CCL3
+       PRINTI  "Der Dieb ist einer von den Starken und Schweigsamen."
+       CRLF    
+       SET     'P-CONT,FALSE-VALUE
+       RETURN  P-CONT
+?CCL3: ZERO?   MODE \?CCL5
+       EQUAL?  PRSA,V?HELLO \?CCL8
+       GETP    THIEF,P?LDESC
+       EQUAL?  STACK,ROBBER-U-DESC \?CCL8
+       PRINTR  "Der Dieb, der momentan behindert ist, ist nicht in der Lage, deinen Gru%s mit der ihm angeborenen H%oflichkeit zu erwidern."
+?CCL8: EQUAL?  PRSO,KNIFE \?CCL12
+       EQUAL?  PRSA,V?THROW \?CCL12
+       FSET?   THIEF,FIGHTBIT /?CCL12
+       MOVE    PRSO,HERE
+       CALL2   ZPROB,10
+       ZERO?   STACK /?CCL18
+       PRINTI  "Du mu%st dem R%auber Angst eingejagt haben, obwohl du ihn nicht getroffen hast. Er flieht"
+       REMOVE  LARGE-BAG
+       SET     'X,FALSE-VALUE
+       IN?     STILETTO,THIEF \?CND19
+       REMOVE  STILETTO
+       SET     'X,TRUE-VALUE
+?CND19:        FIRST?  THIEF \?CCL23
+       ICALL   MOVE-ALL,THIEF,HERE
+       PRINTI  ", aber der Inhalt seines Sackes f%allt auf den Boden."
+       JUMP    ?CND21
+?CCL23:        PRINTC  46
+?CND21:        MOVE    LARGE-BAG,THIEF
+       ZERO?   X /?CND24
+       MOVE    STILETTO,THIEF
+?CND24:        CRLF    
+       FSET    THIEF,INVISIBLE
+       RTRUE   
+?CCL18:        PRINTI  "Du hast nicht getroffen. Der Dieb macht keine Anstalten das Messer zu nehmen, obwohl es eine sch%one Zugabe zu der Sammlung in seinem Sack w%are. Er scheint, %uber deinen Versuch ver%argert zu sein."
+       CRLF    
+       FSET    THIEF,FIGHTBIT
+       RTRUE   
+?CCL12:        EQUAL?  PRSA,V?GIVE,V?THROW \?CCL27
+       ZERO?   PRSO /?CCL27
+       EQUAL?  PRSO,THIEF /?CCL27
+       EQUAL?  PRSI,THIEF \?CCL27
+       GETP    THIEF,P?STRENGTH
+       LESS?   STACK,0 \?CND32
+       GETP    THIEF,P?STRENGTH
+       SUB     0,STACK
+       PUTP    THIEF,P?STRENGTH,STACK
+       CALL2   INT,I-THIEF
+       PUT     STACK,0,1
+       ICALL1  RECOVER-STILETTO
+       PUTP    THIEF,P?LDESC,ROBBER-C-DESC
+       PRINTI  "Dein Opfer kommt pl%otzlich zu sich."
+       CRLF    
+?CND32:        MOVE    PRSO,THIEF
+       GETP    PRSO,P?TVALUE
+       GRTR?   STACK,0 \?CCL36
+       SET     'THIEF-ENGROSSED,TRUE-VALUE
+       PRINTI  "Der Dieb ist erstaunt %uber deine Gro%sz%ugigkeit, die er nicht erwartetet hat, aber er nimmt "
+       ICALL2  DER-ACC-PRINT,PRSO
+       PRINTR  " an, und nimmt sich Zeit, seine Sch%onheit zu bewundern."
+?CCL36:        PRINTI  "Der Dieb steckt "
+       ICALL2  DER-ACC-PRINT,PRSO
+       PRINTI  " in seinen Sack und dankt dir h%oflich."
+       RTRUE   
+?CCL27:        EQUAL?  PRSA,V?TAKE \?CCL38
+       PRINTR  "Was willst du mit ihm machen, wenn du ihn hast?"
+?CCL38:        EQUAL?  PRSA,V?LOOK-INSIDE,V?EXAMINE \?CCL40
+       PRINTR  "Der Dieb ist ein schleimiger Geselle mit Eidechsenaugen, die hin und her %augeln. Mit unmi%sverst%andlicher Arroganz schleppt er einen gro%sen Sack mit sich herum. Au%serdem hat er ein gef%ahrlich au%sehendes Stilett, dessen Spitze bedrohlich gegen dich gerichtet ist. An deiner Stelle w%are ich auf der Hut."
+?CCL40:        EQUAL?  PRSA,V?LISTEN \FALSE
+       PRINTR  "Der Dieb schweigt, denn ihr seid einander ja noch nicht offiziell vorgestellt worden."
+?CCL5: EQUAL?  MODE,F-BUSY? \?CCL44
+       IN?     STILETTO,THIEF /FALSE
+       LOC     THIEF
+       IN?     STILETTO,STACK \FALSE
+       MOVE    STILETTO,THIEF
+       FSET    STILETTO,NDESCBIT
+       IN?     THIEF,HERE \TRUE
+       PRINTR  "Der R%auber, von dieser Wendung der Dinge etwas %uberrascht, holt sich sein Stillett leichtf%u%sig zur%uck."
+?CCL44:        EQUAL?  MODE,F-DEAD \?CCL53
+       MOVE    STILETTO,HERE
+       FCLEAR  STILETTO,NDESCBIT
+       CALL2   DEPOSIT-BOOTY,HERE >X
+       EQUAL?  HERE,TREASURE-ROOM \?CCL56
+       FIRST?  HERE >X /?PRG58
+?PRG58:        ZERO?   X \?CCL62
+       PRINTI  "Jetzt kannst du dir den Kelch ohne Gefahr nehmen."
+       CRLF    
+       JUMP    ?CND54
+?CCL62:        EQUAL?  X,CHALICE,THIEF,ADVENTURER /?CND60
+       FCLEAR  X,INVISIBLE
+       ZERO?   FLG \?CND64
+       SET     'FLG,TRUE-VALUE
+       PRINTI  "Als der Dieb stirbt, schwindet seine Zauberkraft, und seine Sch%atze werden wieder sichtbar:"
+       CRLF    
+?CND64:        PRINTC  32
+       ICALL2  EIN-NOM-CAP-PRINT,X
+       FIRST?  X \?CND66
+       CALL2   SEE-INSIDE?,X
+       ZERO?   STACK /?CND66
+       PRINTI  ", mit "
+       ICALL2  PRINT-CONTENTS,X
+?CND66:        CRLF    
+?CND60:        NEXT?   X >X /?PRG58
+       JUMP    ?PRG58
+?CCL56:        ZERO?   X /?CND54
+       PRINTI  "Seine Beute bleibt zur%uck."
+       CRLF    
+?CND54:        CALL2   INT,I-THIEF
+       PUT     STACK,0,0
+       RTRUE   
+?CCL53:        EQUAL?  MODE,F-FIRST? \?CCL73
+       ZERO?   THIEF-HERE /FALSE
+       FSET?   THIEF,INVISIBLE /FALSE
+       RANDOM  100
+       GRTR?   20,STACK \FALSE
+       FSET    THIEF,FIGHTBIT
+       SET     'P-CONT,FALSE-VALUE
+       RTRUE   
+?CCL73:        EQUAL?  MODE,F-UNCONSCIOUS \?CCL81
+       CALL2   INT,I-THIEF
+       PUT     STACK,0,0
+       FCLEAR  THIEF,FIGHTBIT
+       MOVE    STILETTO,HERE
+       FCLEAR  STILETTO,NDESCBIT
+       PUTP    THIEF,P?LDESC,ROBBER-U-DESC
+       RTRUE   
+?CCL81:        EQUAL?  MODE,F-CONSCIOUS \FALSE
+       LOC     THIEF
+       EQUAL?  STACK,HERE \?CND84
+       FSET    THIEF,FIGHTBIT
+       PRINTI  "Der R%auber kommt zu sich. F%ur eine Weile t%auscht er weiterhin Bewu%stlosigkeit vor, dann als er die passende Gelegenheit findet, kriecht er weg von dir."
+       CRLF    
+?CND84:        CALL2   INT,I-THIEF
+       PUT     STACK,0,1
+       PUTP    THIEF,P?LDESC,ROBBER-C-DESC
+       CALL1   RECOVER-STILETTO
+       RSTACK  
+
+
+       .FUNCT  LARGE-BAG-F:ANY:0:0
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       GETP    THIEF,P?LDESC
+       EQUAL?  STACK,ROBBER-U-DESC \?CCL6
+       PRINTR  "Zu deinem Nachteil ist der R%auber auf dem Sack zusammengebrochen. Wenn du jetztversuchtest, den Sack wegzunehmen, w%urdest du ihn wecken."
+?CCL6: PRINTR  "Der Sack wird auch %uber seine Leiche genommen."
+?CCL3: EQUAL?  PRSA,V?PUT \?CCL8
+       EQUAL?  PRSI,LARGE-BAG \?CCL8
+       PRINTR  "Das w%are ein toller Trick."
+?CCL8: EQUAL?  PRSA,V?CLOSE,V?OPEN \?CCL12
+       PRINTR  "Nahe genug heranzukommen, w%are ein toller Trick."
+?CCL12:        EQUAL?  PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE
+       PRINTR  "Der Sack liegt unter dem Dieb, daher kann man nicht sagen, was darin ist, wenn %uberhaupt was drin ist."
+
+
+       .FUNCT  MOVE-ALL:ANY:2:2,FROM,TO,X,N
+       FIRST?  FROM >X \FALSE
+?PRG4: ZERO?   X /TRUE
+       NEXT?   X >N /?BOGUS8
+?BOGUS8:       FCLEAR  X,INVISIBLE
+       MOVE    X,TO
+       SET     'X,N
+       JUMP    ?PRG4
+
+
+       .FUNCT  CHALICE-FCN:ANY:0:0
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       IN?     PRSO,TREASURE-ROOM \FALSE
+       IN?     THIEF,TREASURE-ROOM \FALSE
+       FSET?   THIEF,FIGHTBIT \FALSE
+       FSET?   THIEF,INVISIBLE /FALSE
+       GETP    THIEF,P?LDESC
+       EQUAL?  STACK,ROBBER-U-DESC /FALSE
+       PRINTR  "Du w%urdest von hinten erstochen."
+?CCL3: EQUAL?  PRSA,V?PUT \?CCL13
+       EQUAL?  PRSI,CHALICE \?CCL13
+       PRINTR  "Das gelingt dir nicht. Es ist kein guter Kelch, nicht wahr?"
+?CCL13:        CALL1   DUMB-CONTAINER
+       RSTACK  
+
+
+       .FUNCT  TREASURE-ROOM-FCN:ANY:1:1,RARG,TL
+       EQUAL?  RARG,M-ENTER \FALSE
+       CALL2   INT,I-THIEF
+       GET     STACK,C-ENABLED?
+       EQUAL?  STACK,1 \FALSE
+       ZERO?   DEAD \FALSE
+       IN?     THIEF,HERE /?CND7
+       PRINTI  "Du h%orst einen Schreckensschrei, als du in das Versteck des R%aubers einbrichst. Als du einen Durchgang benutzt, der dir unbekannt ist, verteidigt er sich sofort."
+       CRLF    
+       MOVE    THIEF,HERE
+?CND7: FSET    THIEF,FIGHTBIT
+       FCLEAR  THIEF,INVISIBLE
+       CALL1   THIEF-IN-TREASURE
+       RSTACK  
+
+
+       .FUNCT  THIEF-IN-TREASURE:ANY:0:0,F,N
+       FIRST?  HERE >F /?BOGUS1
+?BOGUS1:       ZERO?   F /?PRG6
+       NEXT?   F \?PRG6
+       PRINTI  "Der Dieb f%uhrt einige mysteri%ose Gesten aus, und die Sch%atze im Zimmer verschwinden."
+       CRLF    
+       CRLF    
+?PRG6: ZERO?   F /TRUE
+       EQUAL?  F,CHALICE,THIEF /?CND8
+       FSET    F,INVISIBLE
+?CND8: NEXT?   F >F /?PRG6
+       JUMP    ?PRG6
+
+
+       .FUNCT  FRONT-DOOR-FCN:ANY:0:0
+       EQUAL?  PRSA,V?OPEN \?CCL3
+       PRINTR  "Die T%ur kann nicht ge%offnet werden."
+?CCL3: EQUAL?  PRSA,V?BURN \?CCL5
+       PRINTR  "Du kannst die T%ur nicht verbrennen."
+?CCL5: EQUAL?  PRSA,V?MUNG \?CCL7
+       PRINTR  "Du kannst die T%ur nicht besch%adigen."
+?CCL7: EQUAL?  PRSA,V?LOOK-BEHIND \FALSE
+       PRINTR  "Sie l%a%st sich nicht %offnen."
+
+
+       .FUNCT  BODY-FUNCTION:ANY:0:0
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       PRINTR  "Eine magische Kraft hindert dich am Mitnehmen der Leichen."
+?CCL3: EQUAL?  PRSA,V?BURN,V?MUNG \FALSE
+       CALL2   JIGS-UP,STR?263
+       RSTACK  
+
+
+       .FUNCT  BLACK-BOOK:ANY:0:0
+       EQUAL?  PRSA,V?OPEN \?CCL3
+       PRINTR  "Das Buch ist schon auf Seite 569 augfgeschlagen."
+?CCL3: EQUAL?  PRSA,V?CLOSE \?CCL5
+       PRINTR  "Trotz aller Kraftanwendung kannst du das Buch nicht schlie%sen."
+?CCL5: EQUAL?  PRSA,V?TURN /?CTR6
+       EQUAL?  PRSA,V?READ-PAGE \?CCL7
+       EQUAL?  PRSI,INTNUM \?CCL7
+       EQUAL?  P-NUMBER,569 /?CCL7
+?CTR6: PRINTI  "Au%ser der Seite 569 gibt es nur noch eine Seite mit lesbarem Druck darauf. Fast alles ist unleserlich, aber das Thema scheint die Bannung des B%osen zu sein. Scheinbar sind gewi%se Ger%ausche, Lichter und Gebete in dieser Beziehung von Nutzen."
+       RTRUE   
+?CCL7: EQUAL?  PRSA,V?BURN \FALSE
+       ICALL2  REMOVE-CAREFULLY,PRSO
+       CALL2   JIGS-UP,STR?264
+       RSTACK  
+
+
+       .FUNCT  PAINTING-FCN:ANY:0:0
+       EQUAL?  PRSA,V?MUNG \FALSE
+       PUTP    PRSO,P?TVALUE,0
+       PUTP    PRSO,P?LDESC,STR?265
+       PRINTR  "Gratuliere! Im Gegensatz zu den anderen Verbrechern, die lediglich die Meisterwerke des K%unstlers gestohlen haben, hast du eines zerst%ort."
+
+
+       .FUNCT  LANTERN:ANY:0:0
+       EQUAL?  PRSA,V?THROW \?CCL3
+       PRINTI  "Die Leuchte liegt am Fu%sboden zerschmettert, und das Licht ist aus."
+       CRLF    
+       CALL2   INT,I-LANTERN
+       PUT     STACK,0,0
+       ICALL2  REMOVE-CAREFULLY,LAMP
+       MOVE    BROKEN-LAMP,HERE
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?LAMP-ON \?CCL5
+       FSET?   LAMP,RMUNGBIT \?CCL8
+       PRINTR  "Eine ausgebrannte Leuchte l%a%st sich nicht anz%unden."
+?CCL8: CALL2   INT,I-LANTERN
+       PUT     STACK,0,1
+       RFALSE  
+?CCL5: EQUAL?  PRSA,V?LAMP-OFF \?CCL10
+       FSET?   LAMP,RMUNGBIT \?CCL13
+       PRINTR  "Die Leuchte ist schon ausgebrannt."
+?CCL13:        CALL2   INT,I-LANTERN
+       PUT     STACK,0,0
+       RFALSE  
+?CCL10:        EQUAL?  PRSA,V?EXAMINE \FALSE
+       FSET?   LAMP,RMUNGBIT \?CCL18
+       PRINTR  "Die Leuchte ist ausgebrannt."
+?CCL18:        FSET?   LAMP,ONBIT \?CCL20
+       PRINTR  "Die Leuchte ist an."
+?CCL20:        PRINTR  "Die Leuchte ist nicht an."
+
+
+       .FUNCT  MAILBOX-F:ANY:0:0
+       EQUAL?  PRSA,V?TAKE \FALSE
+       EQUAL?  PRSO,MAILBOX \FALSE
+       PRINTR  "Er ist fest angebracht."
+
+
+       .FUNCT  MATCH-FUNCTION:ANY:0:0,CNT
+       EQUAL?  PRSA,V?BURN,V?LAMP-ON \?CCL3
+       EQUAL?  PRSO,MATCH \?CCL3
+       GRTR?   MATCH-COUNT,0 \?CND6
+       DEC     'MATCH-COUNT
+?CND6: GRTR?   MATCH-COUNT,0 /?CCL10
+       PRINTR  "Leider sind dir die Streichh%olzer ausgegangen."
+?CCL10:        EQUAL?  HERE,LOWER-SHAFT,TIMBER-ROOM \?CCL12
+       PRINTR  "Dieser Raum ist zugig, und das Streichholz geht sofort aus."
+?CCL12:        FSET    MATCH,FLAMEBIT
+       FSET    MATCH,ONBIT
+       CALL    QUEUE,I-MATCH,2
+       PUT     STACK,0,1
+       PRINTI  "Eines der Streichh%olzer beginnt zu brennen."
+       CRLF    
+       ZERO?   LIT \TRUE
+       SET     'LIT,TRUE-VALUE
+       ICALL1  V-LOOK
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?LAMP-OFF \?CCL16
+       FSET?   MATCH,FLAMEBIT \?CCL16
+       PRINTI  "Das Streichholz ist aus."
+       CRLF    
+       FCLEAR  MATCH,FLAMEBIT
+       FCLEAR  MATCH,ONBIT
+       CALL2   LIT?,HERE >LIT
+       ZERO?   LIT \?CND19
+       PRINTI  "Es ist stockdunkel hier!"
+       CRLF    
+?CND19:        CALL    QUEUE,I-MATCH,0
+       PUT     STACK,0,1
+       RTRUE   
+?CCL16:        EQUAL?  PRSA,V?OPEN,V?COUNT \?CCL22
+       PRINTI  "Du hast "
+       SUB     MATCH-COUNT,1 >CNT
+       GRTR?   CNT,0 /?CCL25
+       PRINTI  "keine"
+       JUMP    ?CND23
+?CCL25:        PRINTN  CNT
+?CND23:        PRINTR  " Streichh%olzer."
+?CCL22:        EQUAL?  PRSA,V?EXAMINE \FALSE
+       FSET?   MATCH,ONBIT \?CCL30
+       PRINTR  "Das Streichholz brennt."
+?CCL30:        PRINTR  "The matchbook isn't very interesting, except for what's written on it."
+
+
+       .FUNCT  I-MATCH:ANY:0:0
+       PRINTI  "Das Streichholz ist ausgegangen."
+       CRLF    
+       FCLEAR  MATCH,FLAMEBIT
+       FCLEAR  MATCH,ONBIT
+       CALL2   LIT?,HERE >LIT
+       RTRUE   
+
+
+       .FUNCT  I-LANTERN:ANY:0:0,TICK,TBL
+       VALUE   'LAMP-TABLE >TBL
+       GET     TBL,0 >TICK
+       CALL    QUEUE,I-LANTERN,TICK
+       PUT     STACK,0,1
+       ICALL   LIGHT-INT,LAMP,TBL,TICK
+       ZERO?   TICK /FALSE
+       ADD     TBL,4 >LAMP-TABLE
+       RETURN  LAMP-TABLE
+
+
+       .FUNCT  I-CANDLES:ANY:0:0,TICK,TBL
+       VALUE   'CANDLE-TABLE >TBL
+       FSET    CANDLES,TOUCHBIT
+       GET     TBL,0 >TICK
+       CALL    QUEUE,I-CANDLES,TICK
+       PUT     STACK,0,1
+       ICALL   LIGHT-INT,CANDLES,TBL,TICK
+       ZERO?   TICK /FALSE
+       ADD     TBL,4 >CANDLE-TABLE
+       RETURN  CANDLE-TABLE
+
+
+       .FUNCT  LIGHT-INT:ANY:3:3,OBJ,TBL,TICK
+       ZERO?   TICK \?CND1
+       FCLEAR  OBJ,ONBIT
+       FSET    OBJ,RMUNGBIT
+?CND1: CALL2   HELD?,OBJ
+       ZERO?   STACK \?CCL5
+       IN?     OBJ,HERE \FALSE
+?CCL5: ZERO?   TICK \?CCL10
+       PRINTI  "Du brauchst mehr Licht, als nur "
+       ICALL2  DER-NOM-PRINT,OBJ
+       PRINTR  "."
+?CCL10:        GET     TBL,1
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  MIN:ANY:2:2,N1,N2
+       LESS?   N1,N2 \?CCL3
+       RETURN  N1
+?CCL3: RETURN  N2
+
+
+       .FUNCT  CANDLES-FCN:ANY:0:0
+       FSET?   CANDLES,TOUCHBIT /?CND1
+       CALL2   INT,I-CANDLES
+       PUT     STACK,0,1
+?CND1: EQUAL?  CANDLES,PRSI /FALSE
+       EQUAL?  PRSA,V?BURN,V?LAMP-ON \?CCL8
+       FSET?   CANDLES,RMUNGBIT \?CCL11
+       PRINTR  "O je, von den Kerzen ist nicht mehr viel %ubrig. Bestimmt nicht genug zum Brennen."
+?CCL11:        ZERO?   PRSI \?CCL13
+       FSET?   MATCH,FLAMEBIT \?CCL16
+       PRINTI  "(mit dem Streichholz)"
+       CRLF    
+       ICALL   PERFORM,V?LAMP-ON,CANDLES,MATCH
+       RTRUE   
+?CCL16:        PRINTI  "Du solltest sagen, mit was man sie anzuenden soll."
+       CRLF    
+       RETURN  2
+?CCL13:        EQUAL?  PRSI,MATCH \?CCL20
+       FSET?   MATCH,ONBIT \?CCL20
+       FSET?   CANDLES,ONBIT \?CCL25
+       PRINTR  "Die Kerzen sind schon angezuendet."
+?CCL25:        FSET    CANDLES,ONBIT
+       PRINTI  "Die Kerzen sind angezuendet."
+       CRLF    
+       CALL2   INT,I-CANDLES
+       PUT     STACK,0,1
+       RTRUE   
+?CCL20:        EQUAL?  PRSI,TORCH \?CCL27
+       FSET?   CANDLES,ONBIT \?CCL30
+       PRINTR  "Du bemerkst noch rechtzeitig, da%s die Kerzen schon angezuendet sind."
+?CCL30:        PRINTI  "Die Hitze die von der Fackel ausgeht, ist so stark, da%s die Kerzen schmelzen."
+       CRLF    
+       CALL2   REMOVE-CAREFULLY,CANDLES
+       RSTACK  
+?CCL27:        PRINTR  "Du mu%st sie mit etwas anzuenden, das brennt, verstehst du."
+?CCL8: EQUAL?  PRSA,V?COUNT \?CCL32
+       PRINTR  "Mal sehen wieviele Dinge in einem Paar sind? Nicht verraten.Ich schaff das schon alleine."
+?CCL32:        EQUAL?  PRSA,V?LAMP-OFF \?CCL34
+       CALL2   INT,I-CANDLES
+       PUT     STACK,0,0
+       FSET?   CANDLES,ONBIT \?CCL37
+       PRINTI  "Die Flamme ist aus."
+       FCLEAR  CANDLES,ONBIT
+       FSET    CANDLES,TOUCHBIT
+       CALL2   LIT?,HERE >LIT
+       ZERO?   LIT \?CND38
+       PRINTR  " Es ist wirklich dunkel hier drin..."
+?CND38:        CRLF    
+       RTRUE   
+?CCL37:        PRINTR  "Die Kerzen sind nicht an."
+?CCL34:        EQUAL?  PRSA,V?PUT \?CCL41
+       FSET?   PRSI,BURNBIT \?CCL41
+       PRINTR  "Das w%are ungklug."
+?CCL41:        EQUAL?  PRSA,V?EXAMINE \FALSE
+       FSET?   CANDLES,ONBIT \?CCL48
+       PRINTR  "Die Kerzen brennen."
+?CCL48:        PRINTR  "Die Kerzen sind nicht an."
+
+
+       .FUNCT  CAVE2-ROOM:ANY:1:1,RARG
+       EQUAL?  RARG,M-END \FALSE
+       IN?     CANDLES,WINNER \FALSE
+       CALL2   ZPROB,50
+       ZERO?   STACK /FALSE
+       FSET?   CANDLES,ONBIT \FALSE
+       CALL2   INT,I-CANDLES
+       PUT     STACK,0,0
+       FCLEAR  CANDLES,ONBIT
+       PRINTI  "Ein Windsto%s bl%ast die Kerzen aus!"
+       CRLF    
+       CALL2   LIT?,HERE >LIT
+       ZERO?   LIT \FALSE
+       PRINTR  "Jetzt ist es restlos dunkel."
+
+
+       .FUNCT  SWORD-FCN:ANY:0:0,G
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       EQUAL?  WINNER,ADVENTURER \?CCL3
+       CALL    QUEUE,I-SWORD,-1
+       PUT     STACK,0,1
+       RFALSE  
+?CCL3: EQUAL?  PRSA,V?EXAMINE \FALSE
+       GETP    SWORD,P?TVALUE >G
+       EQUAL?  G,1 \?CCL10
+       PRINTR  "Dein Schwert leuchtet mit einem schwachen blauen Schimmer."
+?CCL10:        EQUAL?  G,2 \FALSE
+       PRINTR  "Dein Schwert leuchtet jetzt ganz hell."
+
+
+       .FUNCT  BOOM-ROOM:ANY:1:1,RARG,DUMMY?,FLAME
+       EQUAL?  RARG,M-END \FALSE
+       EQUAL?  RARG,M-END \?CND4
+       EQUAL?  PRSA,V?BURN,V?LAMP-ON \?CND4
+       EQUAL?  PRSO,CANDLES,TORCH,MATCH \?CND4
+       SET     'DUMMY?,TRUE-VALUE
+?CND4: CALL2   HELD?,CANDLES
+       ZERO?   STACK /?PRD13
+       FSET?   CANDLES,ONBIT /?CCL11
+?PRD13:        CALL2   HELD?,TORCH
+       ZERO?   STACK /?PRD16
+       FSET?   TORCH,ONBIT /?CCL11
+?PRD16:        CALL2   HELD?,MATCH
+       ZERO?   STACK /FALSE
+       FSET?   MATCH,ONBIT \FALSE
+?CCL11:        ZERO?   DUMMY? /?CCL23
+       PRINTI  "Wie traurig f%ur einen ehrgeizigen Abenteurer, da%s er "
+       ICALL2  EIN-ACC-PRINT,PRSO
+       PRINTI  " in einem Raum anzuendet, der nach Gas riecht. Gl%ucklicherweise gibt es Gerechtigkeit auf dieser Welt."
+       CRLF    
+       JUMP    ?CND21
+?CCL23:        PRINTI  "Ach du lieber Himmel. Es scheint, als ob der Geruch der von diesem Zimmer kommt, Kohlenoxyd ist. Ich h%atte mir zweimal %uberlegt, ob ich hier einen brennenden Gegenstand hineintrage."
+       CRLF    
+?CND21:        CALL2   JIGS-UP,STR?272
+       RSTACK  
+
+
+       .FUNCT  BAT-D:ANY:0:1,FOO
+       LOC     GARLIC
+       EQUAL?  STACK,WINNER,HERE \?CCL3
+       PRINTR  "In der Ecke des Zimmers h%angt eine gro%se Vampirfledermaus an der Decke, die offensichtlich nicht alle f%unf auf der Latte hat und sich die Nase zuh%alt."
+?CCL3: PRINTR  "Eine gro%se Vampirfledermaus h%angt von der Decke, rauscht auf dich nieder."
+
+
+       .FUNCT  BATS-ROOM:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \?CCL3
+       PRINTR  "Du bist in einem kleinen Zimmer, das nur eine T%ur nach Osten und S%uden hat."
+?CCL3: EQUAL?  RARG,M-ENTER \FALSE
+       ZERO?   DEAD \FALSE
+       LOC     GARLIC
+       EQUAL?  STACK,WINNER,HERE /FALSE
+       ICALL1  V-LOOK
+       CRLF    
+       CALL1   FLY-ME
+       RSTACK  
+
+
+       .FUNCT  MACHINE-ROOM-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "Dies ist ein gro%ser kalter Raum, dessen einziger Ausgang nach Norden f%uhrt. In einer Ecke steht eine Maschine, die an einen W%aschetrockner erinnert. Vorne ist ein Schalter, der mit EIN beschriftet ist. Der Schalter scheint nicht, f%ur Menschenh%ande gebaut zu sein (au%ser, wenn die Finger 1/2cm mal 1cm w%aren). Vorne an der Maschine ist eine gro%se Klappe, die "
+       FSET?   MACHINE,OPENBIT \?CCL6
+       PRINTI  "ge%offnet"
+       JUMP    ?CND4
+?CCL6: PRINTI  "geschlossen"
+?CND4: PRINTR  " ist."
+
+
+       .FUNCT  MACHINE-F:ANY:0:0
+       EQUAL?  PRSA,V?TAKE \?CCL3
+       EQUAL?  PRSO,MACHINE \?CCL3
+       PRINTR  "Das ist viel zu gro%s zum Tragen."
+?CCL3: EQUAL?  PRSA,V?OPEN \?CCL7
+       FSET?   MACHINE,OPENBIT \?CCL10
+       CALL2   PICK-ONE,DUMMY
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+?CCL10:        FIRST?  MACHINE \?CCL12
+       PRINTI  "Der Deckel %offnet sich, bringt "
+       ICALL2  PRINT-CONTENTS,MACHINE
+       PRINTI  " zum Vorschein."
+       CRLF    
+       FSET    MACHINE,OPENBIT
+       RTRUE   
+?CCL12:        PRINTI  "Der Deckel %offnet sich."
+       CRLF    
+       FSET    MACHINE,OPENBIT
+       RTRUE   
+?CCL7: EQUAL?  PRSA,V?CLOSE \?CCL14
+       FSET?   MACHINE,OPENBIT \?CCL17
+       PRINTI  "Der Deckel schlie%st sich."
+       CRLF    
+       FCLEAR  MACHINE,OPENBIT
+       RTRUE   
+?CCL17:        CALL2   PICK-ONE,DUMMY
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+?CCL14:        EQUAL?  PRSA,V?LAMP-ON \FALSE
+       ZERO?   PRSI \?CCL22
+       PRINTR  "Es ist nicht klar, wie man sie mit den nackten H%anden aufmacht."
+?CCL22:        ICALL   PERFORM,V?TURN,MACHINE-SWITCH,PRSI
+       RTRUE   
+
+
+       .FUNCT  MSWITCH-FUNCTION:ANY:0:0,O
+       EQUAL?  PRSA,V?TURN \FALSE
+       EQUAL?  PRSI,SCREWDRIVER \?CCL6
+       FSET?   MACHINE,OPENBIT \?CCL9
+       PRINTR  "Die Maschine scheint sich nicht r%uhren zu wollen."
+?CCL9: PRINTI  "Die Maschine wird lebendig (im %ubertragenen Sinne), indem sich faszinierende Lichter und haarstr%aubende Ger%ausche ergeben. Nach ein paar Sekunden h%ort der Zauber auf."
+       CRLF    
+       IN?     COAL,MACHINE \?PRG13
+       ICALL2  REMOVE-CAREFULLY,COAL
+       MOVE    DIAMOND,MACHINE
+       RTRUE   
+?PRG13:        FIRST?  MACHINE >O \?REP14
+       ICALL2  REMOVE-CAREFULLY,O
+       JUMP    ?PRG13
+?REP14:        MOVE    GUNK,MACHINE
+       RTRUE   
+?CCL6: PRINTI  "Es scheint, da%s "
+       ICALL2  EIN-NOM-PRINT,PRSI
+       PRINTI  " nicht ausreicht."
+       RTRUE   
+
+
+       .FUNCT  GUNK-FUNCTION:ANY:0:0
+       ICALL2  REMOVE-CAREFULLY,GUNK
+       PRINTR  "Die Schlacke war por%os und zerkr%umelt bei der Ber%uhrung zu Staub."
+
+
+       .FUNCT  NO-OBJS:ANY:1:1,RARG,F
+       EQUAL?  RARG,M-BEG \FALSE
+       FIRST?  WINNER >F /?BOGUS4
+?BOGUS4:       SET     'EMPTY-HANDED,TRUE-VALUE
+?PRG5: ZERO?   F /?REP6
+       CALL2   WEIGHT,F
+       GRTR?   STACK,4 \?CND7
+       SET     'EMPTY-HANDED,FALSE-VALUE
+?REP6: EQUAL?  HERE,LOWER-SHAFT \FALSE
+       ZERO?   LIT /FALSE
+       ICALL2  SCORE-UPD,LIGHT-SHAFT
+       SET     'LIGHT-SHAFT,0
+       RFALSE  
+?CND7: NEXT?   F >F /?PRG5
+       JUMP    ?PRG5
+
+
+       .FUNCT  SOUTH-TEMPLE-FCN:ANY:1:1,RARG
+       EQUAL?  RARG,M-BEG \FALSE
+       IN?     COFFIN,WINNER /?PRD5
+       SET     'COFFIN-CURE,1
+       RFALSE  
+?PRD5: SET     'COFFIN-CURE,0
+       RFALSE  
+
+
+       .FUNCT  WHITE-CLIFFS-FUNCTION:ANY:1:1,RARG
+       EQUAL?  RARG,M-END \FALSE
+       IN?     INFLATED-BOAT,WINNER \?CCL6
+       SET     'DEFLATE,FALSE-VALUE
+       RETURN  DEFLATE
+?CCL6: SET     'DEFLATE,TRUE-VALUE
+       RETURN  DEFLATE
+
+
+       .FUNCT  SCEPTRE-FUNCTION:ANY:0:0
+       EQUAL?  PRSA,V?RAISE,V?WAVE \FALSE
+       EQUAL?  HERE,ARAGAIN-FALLS /?CTR5
+       EQUAL?  HERE,END-OF-RAINBOW \?CCL6
+?CTR5: ZERO?   RAINBOW-FLAG \?CCL11
+       FCLEAR  POT-OF-GOLD,INVISIBLE
+       PRINTI  "Pl%otzlich wird der Regenbogen zu einer Art Stra%se und erscheint begehbar (Treppen mit Gel%ander erwecken diesen Eindruck)."
+       CRLF    
+       EQUAL?  HERE,END-OF-RAINBOW \?CND12
+       IN?     POT-OF-GOLD,END-OF-RAINBOW \?CND12
+       PRINTI  "Ein glitzernder goldener Topf erscheint am Ende des Regenbogens."
+       CRLF    
+?CND12:        SET     'RAINBOW-FLAG,TRUE-VALUE
+       RETURN  RAINBOW-FLAG
+?CCL11:        ICALL   ROB,ON-RAINBOW,WALL
+       PRINTI  "Der Regenbogen scheint seine Ungew%ohnlichkeit verloren zu haben."
+       CRLF    
+       SET     'RAINBOW-FLAG,FALSE-VALUE
+       RTRUE   
+?CCL6: EQUAL?  HERE,ON-RAINBOW \?CCL17
+       SET     'RAINBOW-FLAG,FALSE-VALUE
+       CALL2   JIGS-UP,STR?273
+       RSTACK  
+?CCL17:        PRINTR  "Eine verwirrende Farbenpracht strahlt kurz von dem Zepter aus."
+
+
+       .FUNCT  FALLS-ROOM:ANY:1:1,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "Du bist oben auf den Wiedermal F%allen. Ein gigantischer Wasserfall mit einem Abgrund von 15 Metern. Der einzige Pfad hier ist am Nordende."
+       CRLF    
+       ZERO?   RAINBOW-FLAG /?CCL6
+       PRINTR  "Ein voller Regenbogen steht %uber den F%allen."
+?CCL6: PRINTR  "Ein wundervoller Regenbogen kann %uber den F%allen und nach Westen gesehen werden."
+
+
+       .FUNCT  RAINBOW-FCN:ANY:0:0
+       EQUAL?  PRSA,V?THROUGH,V?CROSS \?CCL3
+       EQUAL?  HERE,CANYON-VIEW \?CND4
+       PRINTR  "Von hier aus?!?"
+?CND4: ZERO?   RAINBOW-FLAG /?CCL8
+       EQUAL?  HERE,ARAGAIN-FALLS \?CCL11
+       CALL2   GOTO,END-OF-RAINBOW
+       RSTACK  
+?CCL11:        EQUAL?  HERE,END-OF-RAINBOW \?CCL13
+       CALL2   GOTO,ARAGAIN-FALLS
+       RSTACK  
+?CCL13:        PRINTR  "Du mu%st sagen, in welcher Richtung..."
+?CCL8: PRINTR  "Kannst du auf Wasserd%ampfen wandeln?"
+?CCL3: EQUAL?  PRSA,V?LOOK-UNDER \FALSE
+       PRINTR  "Der Gletsch flie%st unter dem Regenbogen."
+
+
+       .FUNCT  DBOAT-FUNCTION:ANY:0:0
+       EQUAL?  PRSA,V?PUT-ON,V?PUT \?CCL3
+       EQUAL?  PRSO,PUTTY \?CCL3
+       CALL1   FIX-BOAT
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?FILL,V?INFLATE \?CCL7
+       PRINTR  "Unm%oglich. Irgends%o ein Schwachkopf hat es durchl%ochert."
+?CCL7: EQUAL?  PRSA,V?PLUG \FALSE
+       EQUAL?  PRSI,PUTTY \?CCL12
+       CALL1   FIX-BOAT
+       RSTACK  
+?CCL12:        CALL2   WITH-TELL,PRSI
+       RSTACK  
+
+
+       .FUNCT  FIX-BOAT:ANY:0:0
+       PRINTI  "Gro%sartig. Das Boot ist repariert."
+       CRLF    
+       LOC     PUNCTURED-BOAT
+       MOVE    INFLATABLE-BOAT,STACK
+       CALL2   REMOVE-CAREFULLY,PUNCTURED-BOAT
+       RSTACK  
+
+
+       .FUNCT  RIVER-FUNCTION:ANY:0:0
+       EQUAL?  PRSA,V?PUT \?CCL3
+       EQUAL?  PRSI,RIVER \FALSE
+       EQUAL?  PRSO,ME \?CCL9
+       CALL2   JIGS-UP,STR?274
+       RSTACK  
+?CCL9: EQUAL?  PRSO,INFLATED-BOAT \?CCL11
+       PRINTR  "Du solltest in das Boot steigen, dann absto%sen."
+?CCL11:        FSET?   PRSO,BURNBIT \?CCL13
+       ICALL2  REMOVE-CAREFULLY,PRSO
+       ICALL2  DER-NOM-CAP-PRINT,PRSO
+       PRINTI  " schwimmt f%ur einen Moment, dann sinkt "
+       ICALL2  PRONOUN-NOM-PRINT,PRSO
+       PRINTR  "."
+?CCL13:        ICALL2  REMOVE-CAREFULLY,PRSO
+       ICALL2  DER-NOM-CAP-PRINT,PRSO
+       PRINTI  " platscht ins Wasser, und gluck-gluck weg ist "
+       ICALL2  PRONOUN-NOM-PRINT,PRSO
+       PRINTR  "."
+?CCL3: EQUAL?  PRSA,V?THROUGH,V?LEAP \FALSE
+       PRINTR  "Eine Orientierung vor dem Sprung zeigt, da%s der Flu%s breit und gef%ahrlich ist, rei%sende Schnellen und halbverdeckte Felsten hat. Du entscheidest, vom Schwimmen abzusehen."
+
+
+       .FUNCT  I-RIVER:ANY:0:0,RM
+       EQUAL?  HERE,RIVER-1,RIVER-2,RIVER-3 /?CCL3
+       EQUAL?  HERE,RIVER-4,RIVER-5 /?CCL3
+       CALL2   INT,I-RIVER
+       PUT     STACK,0,0
+       RTRUE   
+?CCL3: CALL    LKP,HERE,RIVER-NEXT >RM
+       ZERO?   RM /?CCL7
+       PRINTI  "Die Str%omung tr%agt dich flu%sabw%arts."
+       CRLF    
+       CRLF    
+       ICALL2  GOTO,RM
+       CALL    LKP,HERE,RIVER-SPEEDS
+       CALL    QUEUE,I-RIVER,STACK
+       PUT     STACK,0,1
+       RTRUE   
+?CCL7: CALL2   JIGS-UP,STR?275
+       RSTACK  
+
+
+       .FUNCT  RBOAT-FUNCTION:ANY:0:1,RARG,TMP
+       EQUAL?  RARG,M-ENTER,M-END,M-LOOK /FALSE
+       EQUAL?  RARG,M-BEG \?CCL5
+       EQUAL?  PRSA,V?WALK \?CCL8
+       EQUAL?  PRSO,P?LANDEN,P?OST,P?WEST /FALSE
+       EQUAL?  HERE,RESERVOIR \?CCL13
+       EQUAL?  PRSO,P?NORD,P?SUED /FALSE
+?CCL13:        EQUAL?  HERE,IN-STREAM \?CCL17
+       EQUAL?  PRSO,P?SUED /FALSE
+?CCL17:        PRINTR  "Lies die Anweisungen f%ur das Boot."
+?CCL8: EQUAL?  PRSA,V?LAUNCH \?CCL21
+       EQUAL?  HERE,RIVER-1,RIVER-2,RIVER-3 /?CTR23
+       EQUAL?  HERE,RIVER-4,RESERVOIR,IN-STREAM \?CCL24
+?CTR23:        PRINTI  "Du bist schon im "
+       EQUAL?  HERE,RESERVOIR \?CCL29
+       PRINTI  "Reservoir"
+       JUMP    ?CND27
+?CCL29:        EQUAL?  HERE,IN-STREAM \?CCL31
+       PRINTI  "Strom"
+       JUMP    ?CND27
+?CCL31:        PRINTI  "Flu%s"
+?CND27:        PRINTR  ", oder hast du das vergessen?"
+?CCL24:        CALL2   GO-NEXT,RIVER-LAUNCH >TMP
+       EQUAL?  TMP,1 \?CCL33
+       CALL    LKP,HERE,RIVER-SPEEDS
+       CALL    QUEUE,I-RIVER,STACK
+       PUT     STACK,0,1
+       RTRUE   
+?CCL33:        EQUAL?  TMP,2 /TRUE
+       PRINTR  "Hier kannst du das Boot nicht ins Wasser lassen."
+?CCL21:        EQUAL?  PRSA,V?DROP \?PRD39
+       FSET?   PRSO,WEAPONBIT /?CTR36
+?PRD39:        EQUAL?  PRSA,V?PUT \?PRD42
+       FSET?   PRSO,WEAPONBIT \?PRD42
+       EQUAL?  PRSI,INFLATED-BOAT /?CTR36
+?PRD42:        EQUAL?  PRSA,V?MUNG,V?ATTACK \?CCL37
+       FSET?   PRSI,WEAPONBIT \?CCL37
+?CTR36:        ICALL2  REMOVE-CAREFULLY,INFLATED-BOAT
+       MOVE    PUNCTURED-BOAT,HERE
+       ICALL   ROB,INFLATED-BOAT,HERE
+       MOVE    WINNER,HERE
+       SET     'OHERE,FALSE-VALUE
+       PRINTI  "Es scheint, als ob "
+       EQUAL?  PRSA,V?PUT,V?DROP \?CCL50
+       ICALL2  DER-NOM-PRINT,PRSO
+       JUMP    ?CND48
+?CCL50:        ICALL2  DER-NOM-PRINT,PRSI
+?CND48:        PRINTI  " dem Boot nicht bekommen ist, wie man von dem lauten hissenden Ger%ausch, das ihm entweicht, schlie%sen kann. Mit einem armseligen letzten Puff, geht die Luft aus dem Boot und du erleidest Schiffbruch."
+       CRLF    
+       FSET?   HERE,NONLANDBIT \TRUE
+       CRLF    
+       EQUAL?  HERE,RESERVOIR,IN-STREAM \?CCL55
+       ICALL2  JIGS-UP,STR?276
+       RTRUE   
+?CCL55:        ICALL2  JIGS-UP,STR?277
+       RTRUE   
+?CCL37:        EQUAL?  PRSA,V?LAUNCH \FALSE
+       PRINTR  "Du bist nicht im Boot!"
+?CCL5: EQUAL?  PRSA,V?BOARD \?CCL59
+       IN?     SCEPTRE,WINNER /?CCL62
+       IN?     KNIFE,WINNER /?CCL62
+       IN?     SWORD,WINNER /?CCL62
+       IN?     RUSTY-KNIFE,WINNER /?CCL62
+       IN?     AXE,WINNER /?CCL62
+       IN?     STILETTO,WINNER \FALSE
+?CCL62:        PRINTI  "Ei, ei! Etwas Scharfes scheint weggerutscht zu sein, und hat das Boot durchl%ochert. Die Luft entweicht unter Zischen, Murmeln und Fluchen aus dem Boot."
+       CRLF    
+       ICALL2  REMOVE-CAREFULLY,INFLATED-BOAT
+       MOVE    PUNCTURED-BOAT,HERE
+       ICALL2  THIS-IS-IT,PUNCTURED-BOAT
+       RTRUE   
+?CCL59:        EQUAL?  PRSA,V?FILL,V?INFLATE \?CCL70
+       PRINTR  "Wenn man es weiter aufpumpt, w%urde es wahrscheinlich platzen."
+?CCL70:        EQUAL?  PRSA,V?DEFLATE \FALSE
+       LOC     WINNER
+       EQUAL?  STACK,INFLATED-BOAT \?CCL75
+       PRINTR  "Du kannst die Luft nicht aus dem Boot lassen, w%ahrend du drin sitzt."
+?CCL75:        IN?     INFLATED-BOAT,HERE /?CCL77
+       PRINTR  "Das Boot mu%s an Land sein, um die Luft rauszulassen."
+?CCL77:        PRINTI  "Die Luft kommt aus dem Boot."
+       CRLF    
+       SET     'DEFLATE,TRUE-VALUE
+       ICALL2  REMOVE-CAREFULLY,INFLATED-BOAT
+       MOVE    INFLATABLE-BOAT,HERE
+       CALL2   THIS-IS-IT,INFLATABLE-BOAT
+       RSTACK  
+
+
+       .FUNCT  IBOAT-FUNCTION:ANY:0:0
+       EQUAL?  PRSA,V?FILL,V?INFLATE \FALSE
+       IN?     INFLATABLE-BOAT,HERE /?CCL6
+       PRINTR  "Das Boot mu%s an Land sein, um aufgeblasen zu werden."
+?CCL6: EQUAL?  PRSI,PUMP \?CCL8
+       PRINTI  "Das Boot nimmt Luft auf und erscheint seet%uchtig."
+       CRLF    
+       FSET?   BOAT-LABEL,TOUCHBIT /?CND9
+       PRINTI  "Ein beiges Schildchen liegt im Boot."
+       CRLF    
+?CND9: SET     'DEFLATE,FALSE-VALUE
+       ICALL2  REMOVE-CAREFULLY,INFLATABLE-BOAT
+       MOVE    INFLATED-BOAT,HERE
+       CALL2   THIS-IS-IT,INFLATED-BOAT
+       RSTACK  
+?CCL8: EQUAL?  PRSI,LUNGS \?CCL12
+       PRINTR  "Deine Lunge schafft es nicht, das Boot aufzublasen."
+?CCL12:        PRINTI  "Mit "
+       ICALL2  EIN-DAT-PRINT,PRSI
+       PRINTR  "? Du beliebst zu scherzen?!"
+
+
+       .FUNCT  RIVR4-ROOM:ANY:1:1,RARG
+       EQUAL?  RARG,M-END \FALSE
+       IN?     BUOY,WINNER \FALSE
+       ZERO?   BUOY-FLAG /FALSE
+       PRINTI  "Die Boje f%uhlt sich irgendwie komisch an."
+       CRLF    
+       SET     'BUOY-FLAG,FALSE-VALUE
+       RETURN  BUOY-FLAG
+
+
+       .FUNCT  SAND-FUNCTION:ANY:0:0
+       EQUAL?  PRSA,V?DIG \FALSE
+       EQUAL?  PRSI,SHOVEL \FALSE
+       IGRTR?  'BEACH-DIG,3 \?CCL8
+       SET     'BEACH-DIG,-1
+       IN?     SCARAB,HERE \?PEN9
+       FSET    SCARAB,INVISIBLE
+?PEN9: CALL2   JIGS-UP,STR?278
+       RSTACK  
+?CCL8: EQUAL?  BEACH-DIG,3 \?CCL12
+       FSET?   SCARAB,INVISIBLE \FALSE
+       PRINTI  "Du siehst hier einen Skarab%aus im Sand."
+       CRLF    
+       ICALL2  THIS-IS-IT,SCARAB
+       FCLEAR  SCARAB,INVISIBLE
+       RTRUE   
+?CCL12:        GET     BDIGS,BEACH-DIG
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  TREE-ROOM:ANY:1:1,RARG,F
+       EQUAL?  RARG,M-LOOK \?CCL3
+       PRINTI  "Du bist ungef%ahr 3 Meter %uber dem Boden umgeben von gro%sen %Asten. Du kannst den n%achsten Zweig %uber dir unm%oglich erreichen."
+       CRLF    
+       FIRST?  PATH >F \FALSE
+       NEXT?   F \FALSE
+       PRINTI  "Unter dir auf der Erde siehst du:"
+       ICALL2  PRINT-CONTENTS,PATH
+       PRINTR  "."
+?CCL3: EQUAL?  RARG,M-BEG \?CCL10
+       EQUAL?  PRSA,V?CLIMB-DOWN \?CCL13
+       EQUAL?  PRSO,TREE,ROOMS \?CCL13
+       CALL2   DO-WALK,P?RUNTER
+       RSTACK  
+?CCL13:        EQUAL?  PRSA,V?CLIMB-FOO,V?CLIMB-UP \?CCL17
+       EQUAL?  PRSO,TREE \?CCL17
+       CALL2   DO-WALK,P?RAUF
+       RSTACK  
+?CCL17:        EQUAL?  PRSA,V?DROP \FALSE
+       CALL1   IDROP
+       ZERO?   STACK /TRUE
+       EQUAL?  PRSO,NEST \?CCL26
+       IN?     EGG,NEST \?CCL26
+       PRINTI  "Das Nest f%allt auf die Erde, und das Ei f%allt heraus. Es ist ernstlich besch%adigt."
+       CRLF    
+       ICALL2  REMOVE-CAREFULLY,EGG
+       MOVE    BROKEN-EGG,PATH
+       RTRUE   
+?CCL26:        EQUAL?  PRSO,EGG \?CCL30
+       PRINTI  "Das Ei f%allt auf die Erde und springt auf. Es ist ernstlich besch%adigt."
+       MOVE    EGG,PATH
+       ICALL1  BAD-EGG
+       CRLF    
+       RTRUE   
+?CCL30:        EQUAL?  PRSO,WINNER,TREE /?CCL32
+       MOVE    PRSO,PATH
+       ICALL2  DER-NOM-CAP-PRINT,PRSO
+       PRINTR  " f%allt auf die Erde."
+?CCL32:        EQUAL?  PRSA,V?LEAP \FALSE
+       CALL2   JIGS-UP,STR?282
+       RSTACK  
+?CCL10:        EQUAL?  RARG,M-ENTER \FALSE
+       CALL    QUEUE,I-FOREST-ROOM,-1
+       PUT     STACK,0,1
+       RTRUE   
+
+
+       .FUNCT  EGG-OBJECT:ANY:0:0
+       EQUAL?  PRSA,V?MUNG,V?OPEN \?CCL3
+       EQUAL?  PRSO,EGG \?CCL3
+       FSET?   PRSO,OPENBIT \?CCL8
+       PRINTR  "Das Ei ist schon offen."
+?CCL8: ZERO?   PRSI \?CCL10
+       PRINTR  "Du hast weder das Werkzeug noch das Geschick."
+?CCL10:        EQUAL?  PRSI,HANDS \?CCL12
+       PRINTR  "Ich bezweifle, da%s du das tun kannst, ohne es ernstlich zu besch%adigen."
+?CCL12:        FSET?   PRSI,WEAPONBIT /?CTR13
+       FSET?   PRSI,TOOLBIT /?CTR13
+       EQUAL?  PRSA,V?MUNG \?CCL14
+?CTR13:        PRINTI  "Das Ei ist jetzt offen, aber die Tollpatschigkeit deines Versuches hat seinen %asthetischen Wert stark vermindert."
+       ICALL1  BAD-EGG
+       CRLF    
+       RTRUE   
+?CCL14:        FSET?   PRSO,FIGHTBIT \?CCL19
+       PRINTI  "Und erst die Idee, "
+       ICALL2  DER-ACC-PRINT,PRSO
+       PRINTI  " zu benutzen... Du %ubertriffst dich geradzu an originellen Einf%allen."
+       RTRUE   
+?CCL19:        PRINTI  "Die Idee "
+       ICALL2  DER-ACC-PRINT,PRSO
+       PRINTI  " zu benutzen ist wirklich sehr originell."
+       CRLF    
+       FSET    PRSO,FIGHTBIT
+       RTRUE   
+?CCL3: EQUAL?  PRSA,V?HATCH,V?CLIMB-ON \?CCL21
+       PRINTI  "Du f%uhlst ein Krachen unter deinen F%u%sen, und beim Nachsehen entdeckst du, da%s das Ei offen daliegt und schweren Schaden gelitten hat."
+       ICALL1  BAD-EGG
+       CRLF    
+       RTRUE   
+?CCL21:        EQUAL?  PRSA,V?THROW,V?MUNG,V?OPEN \FALSE
+       EQUAL?  PRSA,V?THROW \?CND24
+       MOVE    PRSO,HERE
+?CND24:        PRINTI  "Es ist dir zwar gelungen, das Ei zu %offnen, aber du hast es mit deinen rauhen Methoden besch%adigt."
+       ICALL1  BAD-EGG
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  BAD-EGG:ANY:0:0,L
+       IN?     CANARY,EGG \?CCL3
+       PRINTC  32
+       GETP    BROKEN-CANARY,P?FDESC
+       PRINT   STACK
+       JUMP    ?CND1
+?CCL3: ICALL2  REMOVE-CAREFULLY,BROKEN-CANARY
+?CND1: LOC     EGG
+       MOVE    BROKEN-EGG,STACK
+       ICALL2  REMOVE-CAREFULLY,EGG
+       RTRUE   
+
+
+       .FUNCT  CANARY-OBJECT:ANY:0:0
+       EQUAL?  PRSA,V?WIND \FALSE
+       EQUAL?  PRSO,CANARY \?CCL6
+       ZERO?   SING-SONG \?CCL9
+       CALL1   FOREST-ROOM?
+       ZERO?   STACK /?CCL9
+       PRINTI  "Der Kanarienvogel schmettert eine Arie, aus einer l%angstvergessenen Oper. Er singt falsch. Aus dem Gr%unen fliegt ein lieblicher Singvogel. Er l%a%st sich auf einem Zweig direkt %uber deinem Kopf nieder und %offnet den Schnabel, um zu singen. Als er das tut, f%allt eine sch%one goldene Flitterkugel aus dem Schnabel, trifft deinen Kopf und landet glitzernd im Gras."
+       CRLF    
+       SET     'SING-SONG,TRUE-VALUE
+       EQUAL?  HERE,UP-A-TREE \?CCL14
+       PUSH    PATH
+       JUMP    ?CND12
+?CCL14:        PUSH    HERE
+?CND12:        MOVE    BAUBLE,STACK
+       RTRUE   
+?CCL9: PRINTR  "Der Kanarienvogel zwitschert f%ur eine kurze Zeit munter, wenn auch etwas blechern."
+?CCL6: PRINTR  "Aus dem Innern des Kanarienvogels l%a%st sich ein unangenehmes mahlendes Ger%ausch vernehmen."
+
+
+       .FUNCT  FOREST-ROOM?:ANY:0:0
+       EQUAL?  HERE,FOREST-1,FOREST-2,FOREST-3 /TRUE
+       EQUAL?  HERE,PATH,UP-A-TREE /TRUE
+       RFALSE  
+
+
+       .FUNCT  I-FOREST-ROOM:ANY:0:0
+       CALL1   FOREST-ROOM?
+       ZERO?   STACK \?CCL3
+       CALL2   INT,I-FOREST-ROOM
+       PUT     STACK,0,0
+       RFALSE  
+?CCL3: RANDOM  100
+       GRTR?   15,STACK \FALSE
+       PRINTR  "In der Ferne h%orst du das Zwitschern eines Singvogels."
+
+
+       .FUNCT  FOREST-ROOM:ANY:1:1,RARG
+       EQUAL?  RARG,M-ENTER \?CCL3
+       CALL    QUEUE,I-FOREST-ROOM,-1
+       PUT     STACK,0,1
+       RTRUE   
+?CCL3: EQUAL?  RARG,M-BEG \FALSE
+       EQUAL?  PRSA,V?CLIMB-UP,V?CLIMB-FOO \FALSE
+       EQUAL?  PRSO,TREE \FALSE
+       CALL2   DO-WALK,P?RAUF
+       RSTACK  
+
+
+       .FUNCT  WCLIF-OBJECT:ANY:0:0
+       EQUAL?  PRSA,V?CLIMB-FOO,V?CLIMB-DOWN,V?CLIMB-UP \FALSE
+       PRINTR  "Der Felsvorsprung ist zu steil zum Erklettern."
+
+
+       .FUNCT  CLIFF-OBJECT:ANY:0:0
+       EQUAL?  PRSA,V?LEAP /?CTR2
+       EQUAL?  PRSA,V?PUT \?CCL3
+       EQUAL?  PRSO,ME \?CCL3
+?CTR2: PRINTR  "Das w%are sehr gewagt. Vielleicht sogar t%odlich."
+?CCL3: EQUAL?  PRSI,CLIMBABLE-CLIFF \FALSE
+       EQUAL?  PRSA,V?THROW-OFF,V?PUT \FALSE
+       ICALL2  DER-NOM-CAP-PRINT,PRSO
+       PRINTI  " rollt in den Flu%s und gluck-gluck weg ist es."
+       CRLF    
+       CALL2   REMOVE-CAREFULLY,PRSO
+       RSTACK  
+
+
+       .FUNCT  ROPE-FUNCTION:ANY:0:0,RLOC
+       EQUAL?  HERE,DOME-ROOM /?CCL3
+       SET     'DOME-FLAG,FALSE-VALUE
+       EQUAL?  PRSA,V?TIE \FALSE
+       PRINTR  "Daran kannst du das Seil nicht binden."
+?CCL3: EQUAL?  PRSA,V?TIE \?CCL8
+       EQUAL?  PRSI,RAILING \FALSE
+       ZERO?   DOME-FLAG /?CCL14
+       PRINTR  "Das Seil ist schon darangebunden."
+?CCL14:        PRINTI  "Das Seil f%allt %uber die Seite und reicht bis zu 3 Metern %uber dem Boden."
+       CRLF    
+       SET     'DOME-FLAG,TRUE-VALUE
+       FSET    ROPE,NDESCBIT
+       LOC     ROPE >RLOC
+       ZERO?   RLOC /?CCL16
+       IN?     RLOC,ROOMS /TRUE
+?CCL16:        MOVE    ROPE,HERE
+       RTRUE   
+?CCL8: EQUAL?  PRSA,V?CLIMB-DOWN \?CCL20
+       EQUAL?  PRSO,ROPE,ROOMS \?CCL20
+       ZERO?   DOME-FLAG /?CCL20
+       CALL2   DO-WALK,P?RUNTER
+       RSTACK  
+?CCL20:        EQUAL?  PRSA,V?TIE-UP \?CCL25
+       EQUAL?  ROPE,PRSI \?CCL25
+       FSET?   PRSO,ACTORBIT \?CCL30
+       GETP    PRSO,P?STRENGTH
+       LESS?   STACK,0 \?CCL33
+       PRINTI  "Dein Versuch "
+       ICALL2  DER-ACC-PRINT,PRSO
+       PRINTI  " zu fesseln, weckt ihn auf."
+       CALL2   AWAKEN,PRSO
+       RSTACK  
+?CCL33:        ICALL2  DER-NOM-CAP-PRINT,PRSO
+       PRINTR  " wehrt sich, und du kannst ihn nicht fesseln."
+?CCL30:        PRINTI  "Warum w%urdest du "
+       ICALL2  DER-ACC-PRINT,PRSO
+       PRINTR  " fesseln?"
+?CCL25:        EQUAL?  PRSA,V?UNTIE \?CCL35
+       ZERO?   DOME-FLAG /?CCL38
+       SET     'DOME-FLAG,FALSE-VALUE
+       FCLEAR  ROPE,NDESCBIT
+       PRINTR  "Das Seil ist jetzt aufgebunden."
+?CCL38:        PRINTR  "Es ist an nichts gebunden."
+?CCL35:        EQUAL?  PRSA,V?DROP \?CCL40
+       EQUAL?  HERE,DOME-ROOM \?CCL40
+       ZERO?   DOME-FLAG \?CCL40
+       MOVE    ROPE,TORCH-ROOM
+       PRINTR  "Das Seil f%allt sanft nach unten auf die Erde."
+?CCL40:        EQUAL?  PRSA,V?TAKE \FALSE
+       ZERO?   DOME-FLAG /FALSE
+       PRINTR  "Das Seil ist an das Gel%ander gebunden."
+
+
+       .FUNCT  UNTIE-FROM:ANY:0:0
+       EQUAL?  PRSO,ROPE \?CCL3
+       ZERO?   DOME-FLAG /?CCL3
+       EQUAL?  PRSI,RAILING \?CCL3
+       CALL    PERFORM,V?UNTIE,PRSO
+       RSTACK  
+?CCL3: PRINTR  "Es ist nicht daran gebunden."
+
+
+       .FUNCT  SLIDE-FUNCTION:ANY:0:0
+       EQUAL?  PRSA,V?CLIMB-DOWN,V?CLIMB-UP,V?THROUGH /?CTR2
+       EQUAL?  PRSA,V?CLIMB-FOO /?CTR2
+       EQUAL?  PRSA,V?PUT \?CCL3
+       EQUAL?  PRSO,ME \?CCL3
+?CTR2: EQUAL?  HERE,CELLAR \?CCL11
+       ICALL2  DO-WALK,P?WEST
+       RTRUE   
+?CCL11:        PRINTI  "Das Seil ist an das Gel%ander gebunden..."
+       CRLF    
+       CALL2   GOTO,CELLAR
+       RSTACK  
+?CCL3: EQUAL?  PRSA,V?PUT \FALSE
+       CALL2   SLIDER,PRSO
+       RSTACK  
+
+
+       .FUNCT  SLIDER:ANY:1:1,OBJ
+       FSET?   OBJ,TAKEBIT \?CCL3
+       ICALL2  DER-NOM-CAP-PRINT,OBJ
+       PRINTI  " f%allt auf die Rutschbahn und ist weg."
+       CRLF    
+       EQUAL?  OBJ,WATER \?CCL6
+       CALL2   REMOVE-CAREFULLY,OBJ
+       RSTACK  
+?CCL6: MOVE    OBJ,CELLAR
+       RTRUE   
+?CCL3: CALL2   PICK-ONE,YUKS
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  SANDWICH-BAG-FCN:ANY:0:0
+       EQUAL?  PRSA,V?SMELL \FALSE
+       IN?     LUNCH,PRSO \FALSE
+       PRINTR  "Es riecht nach scharfen Pepperoni."
+
+
+       .FUNCT  DEAD-FUNCTION:ANY:0:1,FOO,M
+       EQUAL?  PRSA,V?WALK \?CCL3
+       EQUAL?  HERE,TIMBER-ROOM \FALSE
+       EQUAL?  PRSO,P?WEST \FALSE
+       PRINTR  "In Deinem Zustand kannst du hier nicht rein."
+?CCL3: EQUAL?  PRSA,V?SUPER-BRIEF,V?VERBOSE,V?BRIEF /FALSE
+       EQUAL?  PRSA,V?RESTORE,V?SAVE,V?VERSION /FALSE
+       EQUAL?  PRSA,V?RESTART,V?QUIT /FALSE
+       EQUAL?  PRSA,V?ALARM,V?MUNG,V?ATTACK /?CTR14
+       EQUAL?  PRSA,V?SWING \?CCL15
+?CTR14:        PRINTR  "In deinem Zustand sind deine Angriffe sinnlos."
+?CCL15:        EQUAL?  PRSA,V?EAT,V?CLOSE,V?OPEN /?CTR18
+       EQUAL?  PRSA,V?DEFLATE,V?INFLATE,V?DRINK /?CTR18
+       EQUAL?  PRSA,V?TIE,V?BURN,V?TURN /?CTR18
+       EQUAL?  PRSA,V?RUB,V?UNTIE \?CCL19
+?CTR18:        PRINTR  "Sogar das %ubersteigt deine F%ahigkeiten."
+?CCL19:        EQUAL?  PRSA,V?WAIT \?CCL25
+       PRINTR  "Warum nicht.? Du hast eine ganze Ewigkeit."
+?CCL25:        EQUAL?  PRSA,V?LAMP-ON \?CCL27
+       PRINTR  "Du brauchst kein Licht, das dir den Weg leuchtet."
+?CCL27:        EQUAL?  PRSA,V?SCORE \?CCL29
+       PRINTR  "Du bist tot! Wie kannst du da an den Stand des Spieles denken?"
+?CCL29:        EQUAL?  PRSA,V?RUB,V?TAKE \?CCL31
+       PRINTR  "Deine Hand geht durch das Ding direkt hindurch."
+?CCL31:        EQUAL?  PRSA,V?INVENTORY,V?THROW,V?DROP \?CCL33
+       PRINTR  "Du besitzt garnichts."
+?CCL33:        EQUAL?  PRSA,V?DIAGNOSE \?CCL35
+       PRINTR  "Du bist tot."
+?CCL35:        EQUAL?  PRSA,V?LOOK \?CCL37
+       PRINTI  "Der Raum sieht fremd und unirdisch aus"
+       FIRST?  HERE /?CCL40
+       PRINTC  46
+       JUMP    ?CND38
+?CCL40:        PRINTI  " und die Dinge erscheinen unwirklich."
+?CND38:        CRLF    
+       FSET?   HERE,ONBIT /?CND41
+       PRINTI  "Obwohl es hier keine Lichtquelle gibt, erscheint der Raum doch einigermassen beleuchtet."
+       CRLF    
+?CND41:        CRLF    
+       RFALSE  
+?CCL37:        EQUAL?  PRSA,V?PRAY \?CCL44
+       EQUAL?  HERE,SOUTH-TEMPLE \?CCL47
+       FCLEAR  LAMP,INVISIBLE
+       PUTP    WINNER,P?ACTION,0
+       SET     'ALWAYS-LIT,FALSE-VALUE
+       SET     'DEAD,FALSE-VALUE
+       IN?     TROLL,TROLL-ROOM \?CND48
+       SET     'TROLL-FLAG,FALSE-VALUE
+?CND48:        PRINTI  "Aus der Ferne ert%ont der Schall einer einsamen Trompete. Der Raum wird sehr hell und du f%uhlst dich k%orperlos. In einem Moment weicht die Helligkeit, und du f%uhlst dich, als ob du dich von einem langen Schlaf im Walde erhebst. Aus der Ferne h%orst du den schwachen Gesang eines Singvogels und das Rauschen des Waldes."
+       CRLF    
+       CRLF    
+       CALL2   GOTO,FOREST-1
+       RSTACK  
+?CCL47:        PRINTR  "Deine Gebete werden nicht erh%ort."
+?CCL44:        PRINTI  "Sogar das kannst du nicht."
+       CRLF    
+       SET     'P-CONT,FALSE-VALUE
+       RETURN  2
+
+
+       .FUNCT  LAKE-PSEUDO:ANY:0:0
+       ZERO?   LOW-TIDE /?CCL3
+       PRINTR  "Von dem See ist nicht viel %ubrig..."
+?CCL3: EQUAL?  PRSA,V?CROSS \?CCL5
+       PRINTR  "Er ist zu breit zum %Uberqueren."
+?CCL5: EQUAL?  PRSA,V?THROUGH \FALSE
+       PRINTR  "Du kannst in diesem See nicht schwimmen."
+
+
+       .FUNCT  STREAM-PSEUDO:ANY:0:0
+       EQUAL?  PRSA,V?THROUGH,V?SWIM \?CCL3
+       PRINTR  "Du kannst in dem Flu%s nicht schwimmen."
+?CCL3: EQUAL?  PRSA,V?CROSS \FALSE
+       PRINTR  "Die andere Seite ist eine abrupte Felswand."
+
+
+       .FUNCT  CHASM-PSEUDO:ANY:0:0
+       EQUAL?  PRSA,V?LEAP /?CTR2
+       EQUAL?  PRSA,V?PUT \?CCL3
+       EQUAL?  PRSO,ME \?CCL3
+?CTR2: PRINTR  "Du siehst dich um, bevor du springst, und erkennst, da%s du nie %uberleben w%urdest."
+?CCL3: EQUAL?  PRSA,V?CROSS \?CCL9
+       PRINTR  "Es ist zu weit zum Springen, und es gibt keine Br%ucke."
+?CCL9: EQUAL?  PRSA,V?THROW-OFF,V?PUT \FALSE
+       EQUAL?  PRSI,CHASM \FALSE
+       ICALL2  DER-NOM-CAP-PRINT,PRSO
+       PRINTI  " f%allt au%ser Sichtweite in die Spalte."
+       CRLF    
+       CALL2   REMOVE-CAREFULLY,PRSO
+       RSTACK  
+
+
+       .FUNCT  DOME-PSEUDO:ANY:0:0
+       EQUAL?  PRSA,V?KISS \FALSE
+       PRINTR  "Nein."
+
+
+       .FUNCT  GATE-PSEUDO:ANY:0:0
+       EQUAL?  PRSA,V?THROUGH \?CCL3
+       ICALL2  DO-WALK,P?HINEIN
+       RTRUE   
+?CCL3: PRINTR  "Das Tor ist von einer unsichtbaren Kraft gesch%utzt. Deine Z%ahne schmerzen, wenn du es ber%uhrst."
+
+
+       .FUNCT  DOOR-PSEUDO:ANY:0:0
+       EQUAL?  PRSA,V?CLOSE,V?OPEN \?CCL3
+       PRINTR  "Die T%ur gibt nicht nach."
+?CCL3: EQUAL?  PRSA,V?THROUGH \FALSE
+       CALL2   DO-WALK,P?SUED
+       RSTACK  
+
+
+       .FUNCT  PAINT-PSEUDO:ANY:0:0
+       EQUAL?  PRSA,V?MUNG \FALSE
+       PRINTR  "Ein bi%schen Farbe splittert weg, zeigt mehr Farbe."
+
+
+       .FUNCT  GAS-PSEUDO:ANY:0:0
+       EQUAL?  PRSA,V?SMELL \FALSE
+       PRINTR  "Es riecht hier nach Kohlenoxyd."
+
+
+       .FUNCT  DO-FIGHT:ANY:1:1,LEN,CNT,RES,O,OO,OUT
+?PRG1: SET     'CNT,0
+?PRG3: INC     'CNT
+       EQUAL?  CNT,LEN \?CND5
+       SET     'RES,TRUE-VALUE
+       RTRUE   
+?CND5: GET     VILLAINS,CNT >OO
+       GET     OO,V-VILLAIN >O
+       FSET?   O,FIGHTBIT \?PRG3
+       GETP    O,P?ACTION
+       CALL    STACK,F-BUSY?
+       ZERO?   STACK \?PRG3
+       CALL    VILLAIN-BLOW,OO,OUT >RES
+       ZERO?   RES \?CCL11
+       SET     'RES,FALSE-VALUE
+       ZERO?   RES /TRUE
+       ZERO?   OUT /TRUE
+       DEC     'OUT
+       ZERO?   OUT \?PRG1
+       RTRUE   
+?CCL11:        EQUAL?  RES,UNCONSCIOUS \?PRG3
+       RANDOM  3
+       ADD     1,STACK >OUT
+       JUMP    ?PRG3
+
+
+       .FUNCT  REMARK:ANY:3:3,REMARK,D,W,LEN,CNT,STR
+       GET     REMARK,0 >LEN
+?PRG1: IGRTR?  'CNT,LEN /?REP2
+       GET     REMARK,CNT >STR
+       EQUAL?  STR,WEP-NOM,WEP-NOM-CAP,WEP-ACC /?CTR6
+       EQUAL?  STR,WEP-ACC-CAP,WEP-DAT,DER-WEP-ACC \?CCL7
+?CTR6: EQUAL?  STR,WEP-NOM \?CCL12
+       PRINTI  "dein"
+       FSET?   W,DERBIT /?CND10
+       PRINTC  101
+       JUMP    ?CND10
+?CCL12:        EQUAL?  STR,WEP-NOM-CAP \?CCL17
+       PRINTI  "Dein"
+       FSET?   W,DERBIT /?CND10
+       FSET?   W,DASBIT /?CND10
+       PRINTC  101
+       JUMP    ?CND10
+?CCL17:        EQUAL?  STR,WEP-ACC \?CCL23
+       PRINTI  "dein"
+       FSET?   W,DERBIT \?CCL26
+       PRINTI  "en"
+       JUMP    ?CND10
+?CCL26:        FSET?   W,DASBIT /?CND10
+       PRINTC  101
+       JUMP    ?CND10
+?CCL23:        EQUAL?  STR,WEP-ACC-CAP \?CCL29
+       PRINTI  "Dein"
+       FSET?   W,DERBIT \?CCL32
+       PRINTI  "en"
+       JUMP    ?CND10
+?CCL32:        FSET?   W,DASBIT /?CND10
+       PRINTC  101
+       JUMP    ?CND10
+?CCL29:        EQUAL?  STR,WEP-DAT \?CCL35
+       PRINTI  "dein"
+       FSET?   W,DERBIT /?CTR37
+       FSET?   W,DASBIT \?CCL38
+?CTR37:        PRINTI  "em"
+       JUMP    ?CND10
+?CCL38:        PRINTI  "er"
+       JUMP    ?CND10
+?CCL35:        EQUAL?  STR,DER-WEP-ACC \?CND10
+       ICALL2  DER-ACC-PRINT,W
+?CND10:        EQUAL?  STR,DER-WEP-ACC /?PRG1
+       PRINTC  32
+       ICALL   DPRINT,W,FALSE-VALUE
+       JUMP    ?PRG1
+?CCL7: EQUAL?  STR,DEF-NOM,DEF-NOM-CAP,DEF-ACC /?CTR44
+       EQUAL?  STR,DEF-DAT-CAP \?CCL45
+?CTR44:        EQUAL?  STR,DEF-NOM \?CCL50
+       PRINTI  "der"
+       JUMP    ?CND48
+?CCL50:        EQUAL?  STR,DEF-NOM-CAP \?CCL52
+       PRINTI  "Der"
+       JUMP    ?CND48
+?CCL52:        EQUAL?  STR,DEF-ACC \?CCL54
+       PRINTI  "den"
+       JUMP    ?CND48
+?CCL54:        EQUAL?  STR,DEF-DAT-CAP \?CND48
+       PRINTI  "Dem"
+?CND48:        PRINTC  32
+       ICALL   DPRINT,D,FALSE-VALUE
+       JUMP    ?PRG1
+?CCL45:        PRINT   STR
+       JUMP    ?PRG1
+?REP2: CRLF    
+       RTRUE   
+
+
+       .FUNCT  FIGHT-STRENGTH:ANY:0:1,ADJUST?,S
+       ASSIGNED?       'ADJUST? /?CND1
+       SET     'ADJUST?,TRUE-VALUE
+?CND1: DIV     SCORE-MAX,5
+       DIV     SCORE,STACK
+       ADD     STRENGTH-MIN,STACK >S
+       ZERO?   ADJUST? /?CCL5
+       GETP    WINNER,P?STRENGTH
+       ADD     S,STACK
+       RSTACK  
+?CCL5: RETURN  S
+
+
+       .FUNCT  VILLAIN-STRENGTH:ANY:1:1,OO,VILLAIN,OD,TMP
+       GET     OO,V-VILLAIN >VILLAIN
+       GETP    VILLAIN,P?STRENGTH >OD
+       LESS?   OD,0 /?CND1
+       EQUAL?  VILLAIN,THIEF \?CND3
+       ZERO?   THIEF-ENGROSSED /?CND3
+       GRTR?   OD,2 \?CND7
+       SET     'OD,2
+?CND7: SET     'THIEF-ENGROSSED,FALSE-VALUE
+?CND3: ZERO?   PRSI \?PRD12
+       RETURN  OD
+?PRD12:        FSET?   PRSI,WEAPONBIT /?PRD13
+       RETURN  OD
+?PRD13:        GET     OO,V-BEST
+       EQUAL?  STACK,PRSI /?CCL10
+       RETURN  OD
+?CCL10:        GET     OO,V-BEST-ADV
+       SUB     OD,STACK >TMP
+       LESS?   TMP,1 \?CND14
+       SET     'TMP,1
+?CND14:        SET     'OD,TMP
+?CND1: RETURN  OD
+
+
+       .FUNCT  FIND-WEAPON:ANY:1:1,O,W
+       FIRST?  O >W /?BOGUS1
+?BOGUS1:       ZERO?   W /FALSE
+?PRG4: EQUAL?  W,STILETTO,AXE,SWORD /?CTR7
+       EQUAL?  W,KNIFE,RUSTY-KNIFE \?CCL8
+?CTR7: RETURN  W
+?CCL8: NEXT?   W >W /?PRG4
+       RFALSE  
+
+
+       .FUNCT  VILLAIN-BLOW:ANY:2:2,OO,OUT?,VILLAIN,REMARKS,DWEAPON,ATT,DEF,OA,OD,TBL,RES,NWEAPON
+       GET     OO,V-VILLAIN >VILLAIN
+       GET     OO,V-MSGS >REMARKS
+       FCLEAR  WINNER,STAGGERED
+       FSET?   VILLAIN,STAGGERED \?CND1
+       ICALL2  DER-NOM-CAP-PRINT,VILLAIN
+       PRINTI  " gewinnt langsam die Kontrolle %uber seine F%u%se."
+       CRLF    
+       FCLEAR  VILLAIN,STAGGERED
+       RTRUE   
+?CND1: CALL2   VILLAIN-STRENGTH,OO >ATT
+       SET     'OA,ATT
+       CALL1   FIGHT-STRENGTH >DEF
+       GRTR?   DEF,0 \TRUE
+       CALL2   FIGHT-STRENGTH,FALSE-VALUE >OD
+       CALL2   FIND-WEAPON,WINNER >DWEAPON
+       LESS?   DEF,0 \?CCL7
+       SET     'RES,KILLED
+       JUMP    ?CND5
+?CCL7: EQUAL?  DEF,1 \?CCL10
+       GRTR?   ATT,2 \?CND11
+       SET     'ATT,3
+?CND11:        SUB     ATT,1
+       GET     DEF1-RES,STACK >TBL
+       JUMP    ?CND8
+?CCL10:        EQUAL?  DEF,2 \?CCL14
+       GRTR?   ATT,3 \?CND15
+       SET     'ATT,4
+?CND15:        SUB     ATT,1
+       GET     DEF2-RES,STACK >TBL
+       JUMP    ?CND8
+?CCL14:        GRTR?   DEF,2 \?CND8
+       SUB     ATT,DEF >ATT
+       LESS?   ATT,-1 \?CCL20
+       SET     'ATT,-2
+       JUMP    ?CND18
+?CCL20:        GRTR?   ATT,1 \?CND18
+       SET     'ATT,2
+?CND18:        ADD     ATT,2
+       GET     DEF3-RES,STACK >TBL
+?CND8: RANDOM  9
+       SUB     STACK,1
+       GET     TBL,STACK >RES
+       ZERO?   OUT? /?CND22
+       EQUAL?  RES,STAGGER \?CCL26
+       SET     'RES,HESITATE
+       JUMP    ?CND22
+?CCL26:        SET     'RES,SITTING-DUCK
+?CND22:        EQUAL?  RES,STAGGER \?CND27
+       ZERO?   DWEAPON /?CND27
+       CALL2   ZPROB,25
+       ZERO?   STACK /?CND27
+       SET     'RES,LOSE-WEAPON
+?CND27:        SUB     RES,1
+       GET     REMARKS,STACK
+       CALL2   RANDOM-ELEMENT,STACK
+       ICALL   REMARK,STACK,WINNER,DWEAPON
+?CND5: EQUAL?  RES,MISSED /?CND32
+       EQUAL?  RES,HESITATE /?CND32
+       EQUAL?  RES,UNCONSCIOUS /?CND32
+       EQUAL?  RES,KILLED /?CTR37
+       EQUAL?  RES,SITTING-DUCK \?CCL38
+?CTR37:        SET     'DEF,0
+       JUMP    ?CND32
+?CCL38:        EQUAL?  RES,LIGHT-WOUND \?CCL42
+       DLESS?  'DEF,0 \?CND43
+       SET     'DEF,0
+?CND43:        GRTR?   LOAD-ALLOWED,50 \?CND32
+       SUB     LOAD-ALLOWED,10 >LOAD-ALLOWED
+       JUMP    ?CND32
+?CCL42:        EQUAL?  RES,SERIOUS-WOUND \?CCL48
+       SUB     DEF,2 >DEF
+       LESS?   DEF,0 \?CND49
+       SET     'DEF,0
+?CND49:        GRTR?   LOAD-ALLOWED,50 \?CND32
+       SUB     LOAD-ALLOWED,20 >LOAD-ALLOWED
+       JUMP    ?CND32
+?CCL48:        EQUAL?  RES,STAGGER \?CCL54
+       FSET    WINNER,STAGGERED
+       JUMP    ?CND32
+?CCL54:        MOVE    DWEAPON,HERE
+       CALL2   FIND-WEAPON,WINNER >NWEAPON
+       ZERO?   NWEAPON /?CND32
+       PRINTI  "Gl%ucklicherweise hast du noch "
+       ICALL2  EIN-ACC-PRINT,NWEAPON
+       PRINTC  46
+       CRLF    
+?CND32:        CALL    WINNER-RESULT,DEF,RES,OD
+       RSTACK  
+
+
+       .FUNCT  HERO-BLOW:ANY:0:0,OO,VILLAIN,OUT?,DWEAPON,ATT,DEF,CNT,OA,OD,TBL,RES,NWEAPON,LEN
+       GET     VILLAINS,0 >LEN
+?PRG1: INC     'CNT
+       EQUAL?  CNT,LEN /?REP2
+       GET     VILLAINS,CNT >OO
+       GET     OO,V-VILLAIN
+       EQUAL?  STACK,PRSO \?PRG1
+?REP2: FSET    PRSO,FIGHTBIT
+       FSET?   WINNER,STAGGERED \?CND7
+       PRINTI  "Du erholst dich immer noch von dem letzten Hieb, so da%s dein Angriff keine Wirkung hat."
+       CRLF    
+       FCLEAR  WINNER,STAGGERED
+       RTRUE   
+?CND7: CALL1   FIGHT-STRENGTH >ATT
+       LESS?   ATT,1 \?CND9
+       SET     'ATT,1
+?CND9: SET     'OA,ATT
+       GET     OO,V-VILLAIN >VILLAIN
+       CALL2   VILLAIN-STRENGTH,OO >DEF
+       SET     'OD,DEF
+       ZERO?   OD \?CND11
+       EQUAL?  PRSO,WINNER \?CND13
+       CALL2   JIGS-UP,STR?283
+       RSTACK  
+?CND13:        ICALL2  DER-ACC-CAP-PRINT,VILLAIN
+       PRINTR  " angreifen ist sinnlos."
+?CND11:        CALL2   FIND-WEAPON,VILLAIN >DWEAPON
+       ZERO?   DWEAPON /?CTR16
+       LESS?   DEF,0 \?CCL17
+?CTR16:        ICALL2  DER-NOM-CAP-PRINT,VILLAIN
+       PRINTI  ", wer "
+       LESS?   DEF,0 \?CCL22
+       PRINTI  "bewu%stlos"
+       JUMP    ?CND20
+?CCL22:        PRINTI  "unbewaffnet"
+?CND20:        PRINTI  " ist, kann sich nicht wehren. "
+       ICALL2  PRONOUN-NOM-CAP-PRINT,VILLAIN
+       PRINTI  " stirbt."
+       CRLF    
+       SET     'RES,KILLED
+       JUMP    ?CND15
+?CCL17:        EQUAL?  DEF,1 \?CCL25
+       GRTR?   ATT,2 \?CND26
+       SET     'ATT,3
+?CND26:        SUB     ATT,1
+       GET     DEF1-RES,STACK >TBL
+       JUMP    ?CND23
+?CCL25:        EQUAL?  DEF,2 \?CCL29
+       GRTR?   ATT,3 \?CND30
+       SET     'ATT,4
+?CND30:        SUB     ATT,1
+       GET     DEF2-RES,STACK >TBL
+       JUMP    ?CND23
+?CCL29:        GRTR?   DEF,2 \?CND23
+       SUB     ATT,DEF >ATT
+       LESS?   ATT,-1 \?CCL35
+       SET     'ATT,-2
+       JUMP    ?CND33
+?CCL35:        GRTR?   ATT,1 \?CND33
+       SET     'ATT,2
+?CND33:        ADD     ATT,2
+       GET     DEF3-RES,STACK >TBL
+?CND23:        RANDOM  9
+       SUB     STACK,1
+       GET     TBL,STACK >RES
+       ZERO?   OUT? /?CND37
+       EQUAL?  RES,STAGGER \?CCL41
+       SET     'RES,HESITATE
+       JUMP    ?CND37
+?CCL41:        SET     'RES,SITTING-DUCK
+?CND37:        EQUAL?  RES,STAGGER \?CND42
+       ZERO?   DWEAPON /?CND42
+       RANDOM  100
+       GRTR?   25,STACK \?CND42
+       SET     'RES,LOSE-WEAPON
+?CND42:        SUB     RES,1
+       GET     HERO-MELEE,STACK
+       CALL2   RANDOM-ELEMENT,STACK
+       ICALL   REMARK,STACK,PRSO,PRSI
+?CND15:        EQUAL?  RES,MISSED /?CND47
+       EQUAL?  RES,HESITATE /?CND47
+       EQUAL?  RES,UNCONSCIOUS \?CCL52
+       SUB     0,DEF >DEF
+       JUMP    ?CND47
+?CCL52:        EQUAL?  RES,KILLED /?CTR53
+       EQUAL?  RES,SITTING-DUCK \?CCL54
+?CTR53:        SET     'DEF,0
+       JUMP    ?CND47
+?CCL54:        EQUAL?  RES,LIGHT-WOUND \?CCL58
+       DLESS?  'DEF,0 \?CND47
+       SET     'DEF,0
+       JUMP    ?CND47
+?CCL58:        EQUAL?  RES,SERIOUS-WOUND \?CCL62
+       SUB     DEF,2 >DEF
+       LESS?   DEF,0 \?CND47
+       SET     'DEF,0
+       JUMP    ?CND47
+?CCL62:        EQUAL?  RES,STAGGER \?CCL66
+       FSET    PRSO,STAGGERED
+       JUMP    ?CND47
+?CCL66:        FCLEAR  DWEAPON,NDESCBIT
+       FSET    DWEAPON,WEAPONBIT
+       MOVE    DWEAPON,HERE
+       ICALL2  THIS-IS-IT,DWEAPON
+?CND47:        CALL    VILLAIN-RESULT,PRSO,DEF,RES
+       RSTACK  
+
+
+       .FUNCT  WINNER-RESULT:ANY:3:3,DEF,RES,OD
+       ZERO?   DEF \?CCL3
+       PUSH    -10000
+       JUMP    ?CND1
+?CCL3: SUB     DEF,OD
+?CND1: PUTP    WINNER,P?STRENGTH,STACK
+       SUB     DEF,OD
+       LESS?   STACK,0 \?CND4
+       CALL    QUEUE,I-CURE,CURE-WAIT
+       PUT     STACK,0,1
+?CND4: CALL1   FIGHT-STRENGTH
+       GRTR?   STACK,0 /?CCL8
+       CALL2   FIGHT-STRENGTH,FALSE-VALUE
+       SUB     0,STACK
+       ADD     1,STACK
+       PUTP    WINNER,P?STRENGTH,STACK
+       ICALL2  JIGS-UP,STR?284
+       RFALSE  
+?CCL8: RETURN  RES
+
+
+       .FUNCT  VILLAIN-RESULT:ANY:3:3,VILLAIN,DEF,RES
+       PUTP    VILLAIN,P?STRENGTH,DEF
+       ZERO?   DEF \?CCL3
+       FCLEAR  VILLAIN,FIGHTBIT
+       PRINTI  "Fast gleichzeitig mit dem letzten Atemzug des "
+       ICALL   DPRINT,VILLAIN,FALSE-VALUE
+       EQUAL?  VILLAIN,THIEF \?CCL6
+       PRINTI  "es"
+       JUMP    ?CND4
+?CCL6: PRINTC  115
+?CND4: PRINTI  " verh%ullt ihn eine Wolke aus gespenstigem schwarzem Nebel, und wenn der Nebel sich hebt, ist die Leiche verschwunden."
+       CRLF    
+       ICALL2  REMOVE-CAREFULLY,VILLAIN
+       GETP    VILLAIN,P?ACTION
+       ICALL   STACK,F-DEAD
+       RETURN  RES
+?CCL3: EQUAL?  RES,UNCONSCIOUS \?CCL8
+       GETP    VILLAIN,P?ACTION
+       ICALL   STACK,F-UNCONSCIOUS
+       RETURN  RES
+?CCL8: RETURN  RES
+
+
+       .FUNCT  WINNING?:ANY:1:1,V,VS,PS
+       GETP    V,P?STRENGTH >VS
+       CALL1   FIGHT-STRENGTH
+       SUB     VS,STACK >PS
+       GRTR?   PS,3 \?CCL3
+       RANDOM  100
+       GRTR?   90,STACK /TRUE
+       RFALSE  
+?CCL3: GRTR?   PS,0 \?CCL7
+       RANDOM  100
+       GRTR?   75,STACK /TRUE
+       RFALSE  
+?CCL7: ZERO?   PS \?CCL11
+       RANDOM  100
+       GRTR?   50,STACK /TRUE
+       RFALSE  
+?CCL11:        GRTR?   VS,1 \?CCL15
+       RANDOM  100
+       GRTR?   25,STACK /TRUE
+       RFALSE  
+?CCL15:        RANDOM  100
+       GRTR?   10,STACK /TRUE
+       RFALSE  
+
+
+       .FUNCT  I-CURE:ANY:0:0,S
+       GETP    WINNER,P?STRENGTH >S
+       GRTR?   S,0 \?CCL3
+       SET     'S,0
+       PUTP    WINNER,P?STRENGTH,S
+       JUMP    ?CND1
+?CCL3: LESS?   S,0 \?CND1
+       INC     'S
+       PUTP    WINNER,P?STRENGTH,S
+?CND1: LESS?   S,0 \?CCL7
+       LESS?   LOAD-ALLOWED,LOAD-MAX \?CND8
+       ADD     LOAD-ALLOWED,10 >LOAD-ALLOWED
+?CND8: CALL    QUEUE,I-CURE,CURE-WAIT
+       PUT     STACK,0,1
+       RTRUE   
+?CCL7: SET     'LOAD-ALLOWED,LOAD-MAX
+       CALL2   INT,I-CURE
+       PUT     STACK,0,0
+       RTRUE   
+
+
+       .FUNCT  I-FIGHT:ANY:0:0,FIGHT?,LEN,CNT,OO,O,P
+       GET     VILLAINS,0 >LEN
+       ZERO?   DEAD \FALSE
+       SET     'CNT,0
+?PRG3: INC     'CNT
+       EQUAL?  CNT,LEN /?REP4
+       GET     VILLAINS,CNT >OO
+       GET     OO,V-VILLAIN >O
+       IN?     O,HERE \?CCL9
+       FSET?   O,INVISIBLE /?CCL9
+       EQUAL?  O,THIEF \?CCL14
+       ZERO?   THIEF-ENGROSSED /?CCL14
+       SET     'THIEF-ENGROSSED,FALSE-VALUE
+       JUMP    ?PRG3
+?CCL14:        GETP    O,P?STRENGTH
+       LESS?   STACK,0 \?CCL18
+       GET     OO,V-PROB >P
+       ZERO?   P /?CCL21
+       RANDOM  100
+       GRTR?   P,STACK \?CCL21
+       PUT     OO,V-PROB,0
+       ICALL2  AWAKEN,O
+       JUMP    ?PRG3
+?CCL21:        ADD     P,25
+       PUT     OO,V-PROB,STACK
+       JUMP    ?PRG3
+?CCL18:        FSET?   O,FIGHTBIT /?CCL24
+       GETP    O,P?ACTION
+       CALL    STACK,F-FIRST?
+       ZERO?   STACK /?PRG3
+?CCL24:        SET     'FIGHT?,TRUE-VALUE
+       JUMP    ?PRG3
+?CCL9: FSET?   O,FIGHTBIT \?CND27
+       GETP    O,P?ACTION
+       ICALL   STACK,F-BUSY?
+?CND27:        EQUAL?  O,THIEF \?CND29
+       SET     'THIEF-ENGROSSED,FALSE-VALUE
+?CND29:        FCLEAR  WINNER,STAGGERED
+       FCLEAR  O,STAGGERED
+       FCLEAR  O,FIGHTBIT
+       ICALL2  AWAKEN,O
+       JUMP    ?PRG3
+?REP4: ZERO?   FIGHT? /FALSE
+       CALL2   DO-FIGHT,LEN
+       RSTACK  
+
+
+       .FUNCT  AWAKEN:ANY:1:1,O,S
+       GETP    O,P?STRENGTH >S
+       LESS?   S,0 \TRUE
+       SUB     0,S
+       PUTP    O,P?STRENGTH,STACK
+       GETP    O,P?ACTION
+       ICALL   STACK,F-CONSCIOUS
+       RTRUE   
+
+
+       .FUNCT  I-SWORD:ANY:0:0,DEM,G,NG,P,T,L
+       CALL2   INT,I-SWORD >DEM
+       GETP    SWORD,P?TVALUE >G
+       IN?     SWORD,ADVENTURER \?CCL3
+       CALL2   INFESTED?,HERE
+       ZERO?   STACK /?CCL6
+       SET     'NG,2
+       JUMP    ?CND4
+?CCL6: SET     'P,0
+?PRG7: NEXTP   HERE,P >P
+       ZERO?   P /?CND4
+       LESS?   P,LOW-DIRECTION /?PRG7
+       GETPT   HERE,P >T
+       PTSIZE  T >L
+       EQUAL?  L,UEXIT,CEXIT,DEXIT \?PRG7
+       GET     T,0
+       CALL2   INFESTED?,STACK
+       ZERO?   STACK /?PRG7
+       SET     'NG,1
+?CND4: EQUAL?  NG,G /FALSE
+       EQUAL?  NG,2 \?CCL21
+       PRINTI  "Dein Schwert hat hell zu leuchten begonen."
+       CRLF    
+       JUMP    ?CND17
+?CCL21:        EQUAL?  NG,1 \?CCL23
+       PRINTI  "Dein Schwert leuchtet mit einem schwachen blauen Schimmer."
+       CRLF    
+       JUMP    ?CND17
+?CCL23:        ZERO?   NG \?CND17
+       PRINTI  "Dein Schwert leuchtet nicht mehr."
+       CRLF    
+?CND17:        PUTP    SWORD,P?TVALUE,NG
+       RTRUE   
+?CCL3: PUT     DEM,C-ENABLED?,0
+       RFALSE  
+
+
+       .FUNCT  INFESTED?:ANY:1:1,R,F
+       FIRST?  R >F /?PRG2
+?PRG2: ZERO?   F /FALSE
+       FSET?   F,ACTORBIT \?CCL8
+       FSET?   F,INVISIBLE \TRUE
+?CCL8: NEXT?   F >F /?PRG2
+       RFALSE  
+
+
+       .FUNCT  I-THIEF:ANY:0:0,RM,ROBJ,HERE?,ONCE,FLG
+       LOC     THIEF >RM
+?PRG1: FSET?   THIEF,INVISIBLE /?PRD6
+       SET     'HERE?,1
+       JUMP    ?PEN5
+?PRD6: SET     'HERE?,0
+?PEN5: ZERO?   HERE? /?CND3
+       LOC     THIEF >RM
+?CND3: EQUAL?  RM,TREASURE-ROOM \?CCL10
+       EQUAL?  RM,HERE /?CCL10
+       ZERO?   HERE? /?CND13
+       ICALL1  HACK-TREASURES
+       SET     'HERE?,FALSE-VALUE
+?CND13:        ICALL2  DEPOSIT-BOOTY,TREASURE-ROOM
+       JUMP    ?CND8
+?CCL10:        EQUAL?  RM,HERE \?CCL16
+       FSET?   RM,ONBIT /?CCL16
+       IN?     TROLL,HERE /?CCL16
+       CALL2   THIEF-VS-ADVENTURER,HERE?
+       ZERO?   STACK \TRUE
+       FSET?   THIEF,INVISIBLE \?CND8
+       SET     'HERE?,FALSE-VALUE
+       JUMP    ?CND8
+?CCL16:        IN?     THIEF,RM \?CND24
+       FSET?   THIEF,INVISIBLE /?CND24
+       FSET    THIEF,INVISIBLE
+       SET     'HERE?,FALSE-VALUE
+?CND24:        FSET?   RM,TOUCHBIT \?CND8
+       ICALL   ROB,RM,THIEF,75
+       CALL2   IN-MAZE?,RM
+       ZERO?   STACK /?CCL32
+       CALL2   IN-MAZE?,HERE
+       ZERO?   STACK /?CCL32
+       CALL2   ROB-MAZE,RM >FLG
+       JUMP    ?CND8
+?CCL32:        CALL2   STEAL-JUNK,RM >FLG
+?CND8: ZERO?   ONCE /?PRT39
+       SET     'ONCE,0
+       JUMP    ?PRE41
+?PRT39:        SET     'ONCE,1
+?PRE41:        ZERO?   ONCE /?REP2
+       ZERO?   HERE? \?REP2
+       ICALL1  RECOVER-STILETTO
+?PRG42:        ZERO?   RM /?CCL45
+       NEXT?   RM >RM /?CND44
+?CCL45:        FIRST?  ROOMS >RM /?CND44
+?CND44:        FSET?   RM,SACREDBIT /?PRG42
+       FSET?   RM,RLANDBIT \?PRG42
+       MOVE    THIEF,RM
+       FCLEAR  THIEF,FIGHTBIT
+       FSET    THIEF,INVISIBLE
+       SET     'THIEF-HERE,FALSE-VALUE
+       JUMP    ?PRG1
+?REP2: EQUAL?  RM,TREASURE-ROOM /?CND53
+       ICALL2  DROP-JUNK,RM
+?CND53:        RETURN  FLG
+
+
+       .FUNCT  DROP-JUNK:ANY:1:1,RM,X,N,FLG
+       FIRST?  THIEF >X /?PRG2
+?PRG2: ZERO?   X \?CND4
+       RETURN  FLG
+?CND4: NEXT?   X >N /?BOGUS6
+?BOGUS6:       EQUAL?  X,STILETTO,LARGE-BAG /?CND7
+       GETP    X,P?TVALUE
+       ZERO?   STACK \?CND7
+       CALL2   ZPROB,30
+       ZERO?   STACK /?CND7
+       FCLEAR  X,INVISIBLE
+       MOVE    X,RM
+       ZERO?   FLG \?CND7
+       EQUAL?  RM,HERE \?CND7
+       PRINTI  "Der R%auber, der seinen Sack durchsucht, l%a%st ein paar Dinge, die er f%ur wertlos h%alt, fallen."
+       CRLF    
+       SET     'FLG,TRUE-VALUE
+?CND7: SET     'X,N
+       JUMP    ?PRG2
+
+
+       .FUNCT  RECOVER-STILETTO:ANY:0:0
+       LOC     THIEF
+       IN?     STILETTO,STACK \FALSE
+       FSET    STILETTO,NDESCBIT
+       MOVE    STILETTO,THIEF
+       RTRUE   
+
+
+       .FUNCT  STEAL-JUNK:ANY:1:1,RM,X,N
+       FIRST?  RM >X /?PRG2
+?PRG2: ZERO?   X /FALSE
+       NEXT?   X >N /?BOGUS6
+?BOGUS6:       GETP    X,P?TVALUE
+       ZERO?   STACK \?CND7
+       FSET?   X,TAKEBIT \?CND7
+       FSET?   X,SACREDBIT /?CND7
+       FSET?   X,INVISIBLE /?CND7
+       EQUAL?  X,STILETTO /?CCL8
+       CALL2   ZPROB,10
+       ZERO?   STACK /?CND7
+?CCL8: MOVE    X,THIEF
+       FSET    X,TOUCHBIT
+       FSET    X,INVISIBLE
+       EQUAL?  X,ROPE \?CND16
+       SET     'DOME-FLAG,FALSE-VALUE
+?CND16:        EQUAL?  RM,HERE \FALSE
+       PRINTI  "Pl%otzlich bemerkst du, da%s "
+       ICALL2  DER-NOM-PRINT,X
+       PRINTR  " verschwunden ist."
+?CND7: SET     'X,N
+       JUMP    ?PRG2
+
+
+       .FUNCT  ROB:ANY:2:3,WHAT,WHERE,PROB,N,X,ROBBED?
+       FIRST?  WHAT >X /?PRG2
+?PRG2: ZERO?   X \?CND4
+       RETURN  ROBBED?
+?CND4: NEXT?   X >N /?BOGUS6
+?BOGUS6:       FSET?   X,INVISIBLE /?CND7
+       FSET?   X,SACREDBIT /?CND7
+       GETP    X,P?TVALUE
+       GRTR?   STACK,0 \?CND7
+       ZERO?   PROB /?CCL8
+       RANDOM  100
+       GRTR?   PROB,STACK \?CND7
+?CCL8: MOVE    X,WHERE
+       FSET    X,TOUCHBIT
+       EQUAL?  WHERE,THIEF \?CND15
+       FSET    X,INVISIBLE
+?CND15:        SET     'ROBBED?,TRUE-VALUE
+?CND7: SET     'X,N
+       JUMP    ?PRG2
+
+
+       .FUNCT  V-DIAGNOSE:ANY:0:0,MS:FIX,WD:FIX,RS:FIX,?TMP1
+       CALL2   FIGHT-STRENGTH,FALSE-VALUE >MS
+       GETP    WINNER,P?STRENGTH >WD
+       ADD     MS,WD >RS
+       CALL2   INT,I-CURE
+       GET     STACK,C-ENABLED?
+       ZERO?   STACK \?CCL3
+       SET     'WD,0
+       JUMP    ?CND1
+?CCL3: SUB     0,WD >WD
+?CND1: ZERO?   WD \?CCL6
+       PRINTI  "Du bist kerngesund."
+       JUMP    ?CND4
+?CCL6: PRINTI  "Du hast "
+       EQUAL?  WD,1 \?CCL9
+       PRINTI  "eine leichte Verletzung,"
+       JUMP    ?CND4
+?CCL9: EQUAL?  WD,2 \?CCL11
+       PRINTI  "eine ernste Verletzung,"
+       JUMP    ?CND4
+?CCL11:        EQUAL?  WD,3 \?CCL13
+       PRINTI  "mehrere Verletzungen,"
+       JUMP    ?CND4
+?CCL13:        GRTR?   WD,3 \?CND4
+       PRINTI  "ernste Verletzungen,"
+?CND4: ZERO?   WD /?CND15
+       PRINTI  " die nach "
+       SUB     WD,1
+       MUL     CURE-WAIT,STACK >?TMP1
+       CALL2   INT,I-CURE
+       GET     STACK,C-TICK
+       ADD     ?TMP1,STACK
+       PRINTN  STACK
+       PRINTI  " Z%ugen geheilt sein werden."
+?CND15:        CRLF    
+       PRINTI  "Du kannst "
+       ZERO?   RS \?CCL19
+       PRINTI  "bald den Tod erwarten."
+       JUMP    ?CND17
+?CCL19:        EQUAL?  RS,1 \?CCL21
+       PRINTI  "von einer weiteren leichten Verletzung get%otet werden."
+       JUMP    ?CND17
+?CCL21:        EQUAL?  RS,2 \?CCL23
+       PRINTI  "von einer schweren Verletzung get%otet werden."
+       JUMP    ?CND17
+?CCL23:        EQUAL?  RS,3 \?CCL25
+       PRINTI  "eine schwere Verletzung %uberleben"
+       JUMP    ?CND17
+?CCL25:        GRTR?   RS,3 \?CND17
+       PRINTI  "mehrere Verletzungen %uberleben."
+?CND17:        CRLF    
+       ZERO?   DEATHS /FALSE
+       PRINTI  "Du bist "
+       EQUAL?  DEATHS,1 \?CCL32
+       PRINTI  "einmal"
+       JUMP    ?CND30
+?CCL32:        PRINTI  "zweimal"
+?CND30:        PRINTR  " get%otet worden."
+
+
+       .FUNCT  V-SCORE:ANY:0:1,ASK?:ATOM
+       ASSIGNED?       'ASK? /?CND1
+       SET     'ASK?,TRUE-VALUE
+?CND1: PRINTI  "Dein Spielstand ist "
+       PRINTN  SCORE
+       PRINTI  " (aus 350 Gesamtpunkten), in "
+       PRINTN  MOVES
+       EQUAL?  MOVES,1 \?CCL5
+       PRINTI  " Z%uge."
+       JUMP    ?CND3
+?CCL5: PRINTI  " Z%ugen."
+?CND3: CRLF    
+       PRINTI  "Damit bist du ein "
+       EQUAL?  SCORE,350 \?CCL8
+       PRINTI  "Meisterabenteurer"
+       JUMP    ?CND6
+?CCL8: GRTR?   SCORE,330 \?CCL10
+       PRINTI  "Hexenmeister"
+       JUMP    ?CND6
+?CCL10:        GRTR?   SCORE,300 \?CCL12
+       PRINTI  "Meister"
+       JUMP    ?CND6
+?CCL12:        GRTR?   SCORE,200 \?CCL14
+       PRINTI  "Abenteurer"
+       JUMP    ?CND6
+?CCL14:        GRTR?   SCORE,100 \?CCL16
+       PRINTI  "Jungabenteurer"
+       JUMP    ?CND6
+?CCL16:        GRTR?   SCORE,50 \?CCL18
+       PRINTI  "Anf%angerabenteurer"
+       JUMP    ?CND6
+?CCL18:        GRTR?   SCORE,25 \?CCL20
+       PRINTI  "Amateurabenteurer"
+       JUMP    ?CND6
+?CCL20:        PRINTI  "Anf%anger"
+?CND6: PRINTC  46
+       CRLF    
+       RETURN  SCORE
+
+
+       .FUNCT  JIGS-UP:ANY:1:2,DESC,PLAYER?
+       SET     'WINNER,ADVENTURER
+       ZERO?   DEAD /?CND1
+       PRINTI  "
+Nur eine au%sergew%ohnliche Person kann get%otet werden, nachdem sie schon tot ist.Leider k%onnen nur au%sergew%ohnliche talentierte Leute damit fertig werden. Mir fehlt dieses Talent. Schade."
+       CRLF    
+       ICALL1  FINISH
+?CND1: PRINT   DESC
+       CRLF    
+       ZERO?   LUCKY \?PRG5
+       PRINTI  "Pech gehabt, was?"
+       CRLF    
+?PRG5: ICALL2  SCORE-UPD,-10
+       PRINTI  " 
+    ****  Du bist tot  **** 
+
+"
+       LOC     WINNER
+       FSET?   STACK,VEHBIT \?CND7
+       SET     'OHERE,FALSE-VALUE
+       MOVE    WINNER,HERE
+?CND7: LESS?   DEATHS,2 /?CCL11
+       PRINTI  "Du bist eindeutig ein lebensm%uder Narr. Wir verbieten Psychopaten den Eintritt zur H%ohle, da sie die anderen Abenteurer gef%ahrden. Deine leiblichen %Uberreste werden dem Land der lebendigen Toten %ubergeben, wo deine Mitabenteurer sich an ihnen erg%otzen k%onnen."
+       CRLF    
+       CALL1   FINISH
+       RSTACK  
+?CCL11:        INC     'DEATHS
+       MOVE    WINNER,HERE
+       SET     'OHERE,FALSE-VALUE
+       FSET?   SOUTH-TEMPLE,TOUCHBIT \?CCL14
+       PRINTI  "W%ahrend du deinen letzten Atemzug tust, f%uhlst du dich all deiner B%urden entledigt. Dieses Gef%uhl verl%a%st dich, als du dich vor den Toren der H%olle befindest, wo die Geister dich anheulen und dir den Eintritt verwehren. Deine Sinne sind getr%ubt. Die Dinge in dem Kerker scheinen nicht wahrnehmbar, farblos, sogar unrealistisch."
+       CRLF    
+       CRLF    
+       SET     'DEAD,TRUE-VALUE
+       SET     'TROLL-FLAG,TRUE-VALUE
+       SET     'ALWAYS-LIT,TRUE-VALUE
+       PUTP    WINNER,P?ACTION,DEAD-FUNCTION
+       ICALL2  GOTO,ENTRANCE-TO-HADES
+       JUMP    ?CND12
+?CCL14:        PRINTI  "Na, la%s uns noch mal sehen...
+Na ja, wir sollten Dir vielleicht noch eine Chance geben.  Wir k%onnen es f%ur dich nicht alles in Ordnung bringen, aber man kann ja nicht alles haben."
+       CRLF    
+       CRLF    
+       ICALL2  GOTO,FOREST-1
+?CND12:        FCLEAR  TRAP-DOOR,TOUCHBIT
+       SET     'P-CONT,FALSE-VALUE
+       ICALL1  RANDOMIZE-OBJECTS
+       ICALL1  KILL-INTERRUPTS
+       RETURN  2
+
+
+       .FUNCT  RANDOMIZE-OBJECTS:ANY:0:0,R,F,N,L
+       IN?     LAMP,WINNER \?CND1
+       MOVE    LAMP,LIVING-ROOM
+?CND1: IN?     COFFIN,WINNER \?CND3
+       MOVE    COFFIN,EGYPT-ROOM
+?CND3: PUTP    SWORD,P?TVALUE,0
+       FIRST?  WINNER >N /?BOGUS5
+?BOGUS5:       GET     ABOVE-GROUND,0 >L
+?PRG6: SET     'F,N
+       ZERO?   F /TRUE
+       NEXT?   F >N /?BOGUS10
+?BOGUS10:      GETP    F,P?TVALUE
+       GRTR?   STACK,0 \?CCL13
+?PRG14:        ZERO?   R \?CND16
+       FIRST?  ROOMS >R /?CND16
+?CND16:        FSET?   R,RLANDBIT \?CCL21
+       FSET?   R,ONBIT /?CCL21
+       RANDOM  100
+       GRTR?   50,STACK \?CCL21
+       MOVE    F,R
+       JUMP    ?PRG6
+?CCL21:        NEXT?   R >R /?PRG14
+       JUMP    ?PRG14
+?CCL13:        RANDOM  L
+       GET     ABOVE-GROUND,STACK
+       MOVE    F,STACK
+       JUMP    ?PRG6
+
+
+       .FUNCT  KILL-INTERRUPTS:ANY:0:0
+       CALL2   INT,I-XB
+       PUT     STACK,0,0
+       CALL2   INT,I-XC
+       PUT     STACK,0,0
+       CALL2   INT,I-CYCLOPS
+       PUT     STACK,0,0
+       CALL2   INT,I-LANTERN
+       PUT     STACK,0,0
+       CALL2   INT,I-CANDLES
+       PUT     STACK,0,0
+       CALL2   INT,I-SWORD
+       PUT     STACK,0,0
+       CALL2   INT,I-FOREST-ROOM
+       PUT     STACK,0,0
+       CALL2   INT,I-MATCH
+       PUT     STACK,0,0
+       FCLEAR  MATCH,ONBIT
+       RTRUE   
+
+
+       .FUNCT  BAG-OF-COINS-F:ANY:0:0
+       CALL    STUPID-CONTAINER,BAG-OF-COINS,STR?405
+       RSTACK  
+
+
+       .FUNCT  TRUNK-F:ANY:0:0
+       CALL    STUPID-CONTAINER,TRUNK,STR?406
+       RSTACK  
+
+
+       .FUNCT  STUPID-CONTAINER:ANY:2:2,OBJ,STR
+       EQUAL?  PRSA,V?CLOSE,V?OPEN \?CCL3
+       PRINTI  "Die "
+       PRINT   STR
+       PRINTR  " befinden sich darin in Sicherheit. Es besteht kein Grund dazu, das zu tun."
+?CCL3: EQUAL?  PRSA,V?EXAMINE,V?LOOK-INSIDE \?CCL5
+       PRINTI  "Da sind viele "
+       PRINT   STR
+       PRINTR  " darin."
+?CCL5: EQUAL?  PRSA,V?PUT \FALSE
+       EQUAL?  PRSI,OBJ \FALSE
+       PRINTI  "Sei nicht albern. Dann w%are es ja nicht mehr "
+       ICALL2  EIN-NOM-PRINT,OBJ
+       PRINTR  "."
+
+
+       .FUNCT  DUMB-CONTAINER:ANY:0:0
+       EQUAL?  PRSA,V?LOOK-INSIDE,V?CLOSE,V?OPEN \?CCL3
+       PRINTR  "Das geht nicht."
+?CCL3: EQUAL?  PRSA,V?EXAMINE \FALSE
+       PRINTI  "Es sieht eigentlich wie "
+       ICALL2  EIN-ACC-PRINT,PRSO
+       PRINTR  " aus."
+
+
+       .FUNCT  GARLIC-F:ANY:0:0
+       EQUAL?  PRSA,V?EAT \FALSE
+       ICALL2  REMOVE-CAREFULLY,PRSO
+       PRINTR  "Zur H%olle! Auf diese Weise kannst du zwar keine Freunde gewinnen, aber hier ist sowieso niemand besonders freundlich. Also schluck's."
+
+
+       .FUNCT  CHAIN-PSEUDO:ANY:0:0
+       EQUAL?  PRSA,V?MOVE,V?TAKE \?CCL3
+       PRINTR  "Die Kette l%ost sich nicht."
+?CCL3: EQUAL?  PRSA,V?LOWER,V?RAISE \?CCL5
+       PRINTR  "Vielleicht solltest du das mit dem Korb machen."
+?CCL5: EQUAL?  PRSA,V?EXAMINE \FALSE
+       PRINTR  "Die Kette h%alt einen Korb innerhalb eines Schachtes."
+
+
+       .FUNCT  TROLL-ROOM-F:ANY:1:1,RARG
+       EQUAL?  RARG,M-ENTER \FALSE
+       IN?     TROLL,HERE \FALSE
+       CALL2   THIS-IS-IT,TROLL
+       RSTACK  
+
+       .ENDI
diff --git a/actions.zil b/actions.zil
new file mode 100644 (file)
index 0000000..e6b29d2
--- /dev/null
@@ -0,0 +1,4260 @@
+"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>
+               <TELL
+"Du bist am Rand einer gro%sen Kuppel, die die Decke der Raumes darunter formt. Ein h%olzernes Gel%ander, das die Kuppel umgibt, besch%utzt dich vor dem Absturz in einen steilen Abgrund." CR>
+               <COND (,DOME-FLAG
+                      <TELL
+"Von dem Gel%ander h%angt ein Seil, das etwa 3 Meter %uber dem Boden endet." CR>)>)
+              (<EQUAL? .RARG ,M-ENTER>
+               <COND (,DEAD
+                      <TELL
+"Wenn du die Kuppel betrittst, f%uhlst du einen starken Sog, wie von einem Wind, der dich %uber das Gel%ander und nach unten rei%st." CR>
+                      <MOVE ,WINNER ,TORCH-ROOM>
+                      <SETG OHERE <>>
+                      <SETG HERE ,TORCH-ROOM>
+                      <RTRUE>)
+                     (<VERB? LEAP>
+                      <JIGS-UP
+"Wie tragisch! Der Sprung, den du gerade gewagt hast, hat dich umgebracht.">)>)>>
+
+;<GLOBAL EGYPT-FLAG <>>        ;"no longer used?"
+
+"SUBTITLE LAND OF THE DEAD"
+
+<ROUTINE LLD-ROOM (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"Du bist au%serhalb eines riesigen Tores mit der Aufschrift:|
+|
+   Gebt auf jegliche Hoffnung Ihr,|
+       die Ihr hier eintretet!|
+|
+Das Tor ist ge%offnet. Gro%se Trostlosigkeit und ein Haufen von zerquetschten K%orpern breitet sich vor dir aus. Tausende von Stimmen, die von einem schrecklichen Schicksal klagen, ert%onen." CR>
+               <COND (<AND <NOT ,LLD-FLAG> <NOT ,DEAD>>
+                      <TELL
+"Der Eintritt durch das Tor ist von b%osen Geistern versperrt, die bei deinem Versuch Eintritt zu gewinnen, nur grinsen." CR>)>)
+              (<EQUAL? .RARG ,M-BEG>
+               <COND (<VERB? EXORCISE>
+                      <COND (<NOT ,LLD-FLAG>
+                             <COND (<AND <IN? ,BELL ,WINNER>
+                                         <IN? ,BOOK ,WINNER>
+                                         <IN? ,CANDLES ,WINNER>>
+                                    <TELL
+"Du mu%st diese Zeremonie durchf%uhren." CR>)
+                                   (T
+                                    <TELL
+"F%ur eine Austreibung bist du nicht vorbereitet." CR>)>)>)
+                     (<AND <NOT ,LLD-FLAG>
+                           <VERB? RING>
+                           <EQUAL? ,PRSO ,BELL>>
+                      <SETG XB T>
+                      <REMOVE-CAREFULLY ,BELL>
+                      <THIS-IS-IT ,HOT-BELL>
+                      <MOVE ,HOT-BELL ,HERE>
+                      <TELL
+"Die Glocke wird pl%otzlich gl%uhend hei%s und f%allt zu Boden. Die Geister, als w%aren sie versteinert, h%oren mit dem Gejammer auf und drehen sich dir zu. Auf ihren fahlen Gesichtern formt sich der Ausdruck einer langvergessenen Furcht." CR>
+                      <COND (<IN? ,CANDLES ,WINNER>
+                             <TELL
+"In deiner Verwirrung fallen die Kerzen auf den Boden (und sie sind aus)." CR>
+                             <MOVE ,CANDLES ,HERE>
+                             <FCLEAR ,CANDLES ,ONBIT>
+                             <DISABLE <INT I-CANDLES>>)>
+                      <ENABLE <QUEUE I-XB 6>>
+                      <ENABLE <QUEUE I-XBH 20>>)
+                     (<AND ,XC
+                           <VERB? READ>
+                           <EQUAL? ,PRSO ,BOOK>
+                           <NOT ,LLD-FLAG>>
+                      <TELL
+"Jedes Wort des Gebetes hallt in einem ohrenbet%aubenden Durcheinander durch den Saal. Als die letzten Worte verhallen, spricht eine laute und befehlende Stimme: %>Weg mit Euch, Ihr Biester!%< Ein herzzerrei%sender Schrei f%ullt die H%ohle, und die Geister, eine h%ohere Macht versp%uren fliehen durch die W%ande." CR>
+                      <REMOVE-CAREFULLY ,GHOSTS>
+                      <SETG LLD-FLAG T>
+                      <DISABLE <INT I-XC>>)>)
+              (<EQUAL? .RARG ,M-END>
+               <COND (<AND ,XB
+                           <IN? ,CANDLES ,WINNER>
+                           <FSET? ,CANDLES ,ONBIT>
+                           <NOT ,XC>>
+                      <SETG XC T>
+                      <TELL
+"Die Flammen flackern wild und scheinen zu tanzen. Die Erde unter dir zittert, und deine Knie drohen aufzugeben. Die Geister verzweifeln an deiner %uberirdischen Kraft." CR>
+                      <DISABLE <INT I-XB>>
+                      <ENABLE <QUEUE I-XC 3>>)>)>>
+
+<GLOBAL XB <>>
+
+<GLOBAL XC <>>
+
+<ROUTINE I-XB ()
+        <OR ,XC
+            <AND <EQUAL? ,HERE ,ENTRANCE-TO-HADES>
+                 <TELL
+"Der Bann dieser Zeremonie ist gebrochen, und die Geister, die zwar am%usiert, aber doch von deinem tolpatschigen Versuch gest%ort sind, nehmen ihr schreckliches Geheule wieder auf." CR>>>
+        <SETG XB <>>>
+
+<ROUTINE I-XC ()
+        <SETG XC <>>
+        <I-XB>>
+
+<ROUTINE I-XBH ()
+        <REMOVE-CAREFULLY ,HOT-BELL>
+        <MOVE ,BELL ,ENTRANCE-TO-HADES>
+        <COND (<EQUAL? ,HERE ,ENTRANCE-TO-HADES>
+               <TELL "Die Glocke scheint sich abgek%uhlt zu haben." CR>)>>
+
+
+"SUBTITLE FLOOD CONTROL DAM #3"
+
+<GLOBAL GATE-FLAG <>>
+<GLOBAL GATES-OPEN <>>
+
+<ROUTINE DAM-ROOM-FCN (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"Du stehst oben auf dem Hochwasserschutzdamm Nr.3. Er war wohl zu seiner Zeit eine gro%se Sehensw%urdigkeit. Es gibt hier Pfade nach Norden, S%uden und Westen und eine steile Abk%urzung. " CR>
+               <COND (<AND ,LOW-TIDE ,GATES-OPEN>
+                      <TELL
+"Der Wasserstand hinter dem Damm ist niedrig. Die Schleusentore sind ge%offnet worden. Das Wasser braust durch den Damm flu%sabw%arts." CR>)
+                     (,GATES-OPEN
+                      <TELL
+"Die Schleusentore sind ge%offnet. Wasser braust durch den Damm. Der Wasserstand hinter dem Damm ist immer noch hoch." CR>)
+                     (,LOW-TIDE
+                      <TELL
+"Die Schleusentore sind geschlo%sen. Der Wasserstand in dem Reservoir ist niedrig, aber er steigt schnell." CR>)
+                     (T
+                      <TELL
+"Die Schleusentore des Dammes sind geschlo%sen. Hinter dem Damm kann man ein gro%ses Reservoir sehen. Wasser flie%st wild %uber den seit langem unbenutzten Damm." CR>)>
+               <TELL "Es gibt hier eine Schalttafel, auf der eine gro%se Metallschraube angebracht ist. Direkt %uber der Schraube ist eine kleine gr%une Plastikblase">
+               <COND (,GATE-FLAG
+                      <TELL ", die klar aufleuchtet">)>
+               <TELL "." CR>)>>
+
+<ROUTINE BOLT-F ()
+       <COND (<VERB? TURN>
+              <COND (<EQUAL? ,PRSI ,WRENCH>
+                     <COND (,GATE-FLAG
+                            <FCLEAR ,RESERVOIR-SOUTH ,TOUCHBIT>
+                            <COND (,GATES-OPEN
+                                   <SETG GATES-OPEN <>>
+                                   <FCLEAR ,LOUD-ROOM ,TOUCHBIT>
+                                   <TELL
+"Die Schleusentore schlie%sen sich, und Wasser sammelt sich hinter dem Damm an." CR>
+                                   <ENABLE <QUEUE I-RFILL 8>>
+                                   ;<QUEUE I-REMPTY 0>
+                                   <ENABLE <QUEUE I-REMPTY 0>>
+                                   T)
+                                  (T
+                                   <SETG GATES-OPEN T>
+                                   <TELL
+"Die Schleusentore %offnen sich, und Wasser str%omt durch den Damm." CR>
+                                   <ENABLE <QUEUE I-REMPTY 8>>
+                                   ;<QUEUE I-RFILL 0>
+                                   <ENABLE <QUEUE I-RFILL 0>>
+                                   T)>)
+                           (T <TELL
+"The bolt won't turn with your best effort." CR>)>)
+                    (ELSE
+                     <TELL
+"Die Schraube l%a%st sich mit " DER-ACC ,PRSI " nicht drehen." CR>)>)
+             (<VERB? TAKE>
+              <INTEGRAL-PART>)
+             (<VERB? OIL>
+              <TELL
+"O nein! Es sieht so aus, als ob die Tube nicht %Ol, sondern Klebstoff enthalten hat. Die Schraube wird dadurch nicht einfacher." CR>)>>
+
+<ROUTINE BUBBLE-F ()
+        <COND (<VERB? TAKE>
+               <INTEGRAL-PART>)>>
+
+<ROUTINE INTEGRAL-PART ()
+        <TELL "Es ist ein wichtiger Bestandteil der Schalttafel." CR>>
+
+<ROUTINE I-RFILL ()
+        <FSET ,RESERVOIR ,NONLANDBIT>
+        <FCLEAR ,RESERVOIR ,RLANDBIT>
+        ;"next two from jeff"
+        ;<FSET ,IN-STREAM ,NONLANDBIT>
+        ;<FCLEAR ,IN-STREAM ,RLANDBIT>
+        <FCLEAR ,DEEP-CANYON ,TOUCHBIT>
+        <FCLEAR ,LOUD-ROOM ,TOUCHBIT>
+        <AND <IN? ,TRUNK ,RESERVOIR>
+             <FSET ,TRUNK ,INVISIBLE>>
+        <SETG LOW-TIDE <>>
+        <COND (<EQUAL? ,HERE ,RESERVOIR>
+               <COND (<FSET? <LOC ,WINNER> ,VEHBIT>
+                      <TELL
+"Das Boot hebt sich leicht aus dem Schlamm und treibt auf dem Wasser des Reservoirs." CR>)
+                     (T
+                      <JIGS-UP
+"Du wirst von dem steigenden Flu%s in die H%ohe gehoben! Du versuchst, zu schwimmen, aber die Str%omung ist zu stark. Du ger%atst n%aher und n%aher an die %uberw%altigende Masse des Hochwasserschutzdammes #3. Der Damm winkt dir zu. Das Get%ose des Wassers macht dich fast taub, aber du bleibst bei Bewu%stsein, als du %uber den Damm st%urzt und deinem sicheren Tode zwischen den Steinen auf seinem Grund entgegen siehst.">)>)
+              (<EQUAL? ,HERE ,DEEP-CANYON>
+               <TELL
+"Ein Ger%ausch, wie das von flie%sendem Wasser, kann von unten geh%ort werden." CR>)
+              (<EQUAL? ,HERE ,LOUD-ROOM>
+               <TELL
+"Pl%otzlich f%ullt ein alarmierend lautes Gebr%ull den Raum. Voller Furcht kriechst du davon." CR>
+               <GOTO <PICK-ONE ,LOUD-RUNS>>)
+              (<EQUAL? ,HERE ,RESERVOIR-NORTH ,RESERVOIR-SOUTH>
+               <TELL
+"Du merkst, da%s der Wasserstand so hoch ist, da%s man nicht mehr zu Fu%s weiterkommt." CR>)>
+        T>
+
+<GLOBAL LOUD-RUNS <LTABLE 0 DAMP-CAVE ROUND-ROOM DEEP-CANYON>>
+
+<ROUTINE I-REMPTY ()
+        <FSET ,RESERVOIR ,RLANDBIT>
+        <FCLEAR ,RESERVOIR ,NONLANDBIT>
+        ;"next two from jeff"
+        ;<FSET ,IN-STREAM ,RLANDBIT>
+        ;<FCLEAR ,IN-STREAM ,NONLANDBIT>
+        <FCLEAR ,DEEP-CANYON ,TOUCHBIT>
+        <FCLEAR ,LOUD-ROOM ,TOUCHBIT>
+        <FCLEAR ,TRUNK ,INVISIBLE>
+        <SETG LOW-TIDE T>
+        <COND (<AND <EQUAL? ,HERE ,RESERVOIR>
+                    <FSET? <LOC ,WINNER> ,VEHBIT>>
+               <TELL
+"Der Wasserstand hat sich so weit gemindert, da%s das Boot nicht mehr weiter schwimmen kann. Es sinkt in den Schlamm." CR>)
+              (<EQUAL? ,HERE ,DEEP-CANYON>
+               <TELL
+"Das Get%ose von dem brausenden Wasser ist jetzt ruhiger." CR>)
+              (<EQUAL? ,HERE ,RESERVOIR-NORTH ,RESERVOIR-SOUTH>
+               <TELL
+"Der Wasserstand ist hier recht niedrig, und du k%onntest hier leicht auf die andere Seite kommen." CR>)>
+        T>
+
+;<GLOBAL DROWNINGS
+      <TABLE (PURE) "up to your ankles."
+       "up to your shin."
+       "up to your knees."
+       "up to your hips."
+       "up to your waist."
+       "up to your chest."
+       "up to your neck."
+       "over your head."
+       "high in your lungs.">>
+
+<GLOBAL DROWNINGS
+       <TABLE (PURE) "bis an deine Kn%ochel."
+"bis an dein Kinn."
+"bis an deine Knie."
+"bis an deine H%uften."
+"bis an deine Taille."
+"bis an deine Brust."
+"bis an deinen Hals."
+"%uber deinen Kopf."
+"hoch in deiner Lunge.">>
+
+<GLOBAL WATER-LEVEL 0>
+<GDECL (WATER-LEVEL) FIX>
+
+<ROUTINE BUTTON-F ()
+        <COND (<VERB? READ>
+               <TELL "Das kommt dir alles Spanisch vor." CR>)
+              (<VERB? PUSH>
+               <COND (<EQUAL? ,PRSO ,BLUE-BUTTON>
+                      <COND (<0? ,WATER-LEVEL>
+                             <FCLEAR ,LEAK ,INVISIBLE>
+                             <TELL
+"Da ist ein grollendes Ger%ausch, und ein Strom von Wasser scheint von der Ostwand in das Zimmer hereinzubrechen (scheinbar ein Rohr bruch)." CR>
+                             <SETG WATER-LEVEL 1>
+                             <ENABLE <QUEUE I-MAINT-ROOM -1>>
+                             T)
+                            (T
+                             <TELL
+"Der blaue Knopf scheint, blockiert zu sein." CR>)>)
+                     (<EQUAL? ,PRSO ,RED-BUTTON>
+                      <TELL "Die Lichter im Raum gehen ">
+                      <COND (<FSET? ,HERE ,ONBIT>
+                             <FCLEAR ,HERE ,ONBIT>
+                             <TELL "aus." CR>)
+                            (T
+                             <FSET ,HERE ,ONBIT>
+                             <TELL "an." CR>)>)
+                     (<EQUAL? ,PRSO ,BROWN-BUTTON>
+                      <FCLEAR ,DAM-ROOM ,TOUCHBIT>
+                      <SETG GATE-FLAG <>>
+                      <TELL "Klick." CR>)
+                     (<EQUAL? ,PRSO ,YELLOW-BUTTON>
+                      <FCLEAR ,DAM-ROOM ,TOUCHBIT>
+                      <SETG GATE-FLAG T>
+                      <TELL "Klick." CR>)>)>>
+
+<ROUTINE TOOL-CHEST-FCN ()
+        <COND (<VERB? EXAMINE>
+               <TELL "Die Werkzeugk%asten sind alle leer." CR>)
+              (<VERB? TAKE OPEN PUT>
+               <REMOVE-CAREFULLY ,TOOL-CHEST>
+<TELL "Die K%asten sind so rostig und verrottet, das sie zerfallen, wenn du sie anfa%st." CR>)
+              (<VERB? OPEN>
+               <TELL "Die Werkzeugk%asten sind schon offen." CR>)>>
+
+<ROUTINE I-MAINT-ROOM ("AUX" HERE?)
+        <SET HERE? <EQUAL? ,HERE ,MAINTENANCE-ROOM>>
+        <COND (.HERE? <TELL "The water level here is now "> <TELL <GET
+               ,DROWNINGS </ ,WATER-LEVEL 2>>> <CRLF>)>
+        <SETG WATER-LEVEL <+ 1 ,WATER-LEVEL>>
+        <COND (<NOT <L? ,WATER-LEVEL 14>>
+               <MUNG-ROOM ,MAINTENANCE-ROOM
+"Der Raum ist voll Wasser und kann nicht betreten werden.">
+               ;<QUEUE I-MAINT-ROOM 0>
+               <ENABLE <QUEUE I-MAINT-ROOM 0>>
+               <COND (.HERE?
+                    <JIGS-UP
+"Leider hast du dich ertr%ankt.">)>)
+              (<AND <IN? ,WINNER ,INFLATED-BOAT>
+                    <EQUAL? ,HERE ,MAINTENANCE-ROOM ,DAM-ROOM ,DAM-LOBBY>>
+               <JIGS-UP
+"Das steigende Wasser tr%agt das Boot %uber den Damm, flu%sabw%arts und %uber die F%alle. Sowas Dummes.">)>
+        <RTRUE>>
+
+<ROUTINE LEAK-FUNCTION ()
+       <COND (<G? ,WATER-LEVEL 0>
+              <COND (<AND <VERB? PUT PUT-ON>
+                          <EQUAL? ,PRSO ,PUTTY>>
+                     <FIX-MAINT-LEAK>)
+                    (<VERB? PLUG>
+                     <COND (<EQUAL? ,PRSI ,PUTTY>
+                            <FIX-MAINT-LEAK>)
+                           (T <WITH-TELL ,PRSI>)>)>)>>
+
+<ROUTINE FIX-MAINT-LEAK ()
+        <SETG WATER-LEVEL -1>
+        ;<QUEUE I-MAINT-ROOM 0>
+        <ENABLE <QUEUE I-MAINT-ROOM 0>>
+        <TELL
+"Durch ein Wunder der Zorkschen Technologie ist es dir gelungen, das Leck im Damm zu beheben." CR>>
+
+<ROUTINE PUTTY-FCN ()
+        <COND (<OR <AND <VERB? OIL>
+                        <EQUAL? ,PRSI ,PUTTY>>
+                   <AND <VERB? PUT>
+                        <EQUAL? ,PRSO ,PUTTY>>>
+               <TELL "Das Allzweckschmierzeug dient nicht als Schmier%ol." CR>)>>
+
+<ROUTINE TUBE-FUNCTION ()
+        <COND (<AND <VERB? PUT>
+                    <EQUAL? ,PRSI ,TUBE>>
+               <TELL "Die Tube nimmt einfach nichts auf." CR>)
+              (<VERB? SQUEEZE>
+               <COND (<AND <FSET? ,PRSO ,OPENBIT>
+                           <IN? ,PUTTY ,PRSO>>
+                      <MOVE ,PUTTY ,WINNER>
+                      <TELL "Das widerliche Zeug quillt %uber deine ganze Hand." CR>)
+                     (<FSET? ,PRSO ,OPENBIT>
+                      <TELL "Die Tube ist scheinbar leer." CR>)
+                     (T
+                      <TELL "Die Tube ist zu." CR>)>)>>
+
+<ROUTINE DAM-FUNCTION ()
+        <COND (<VERB? OPEN CLOSE>
+               <TELL "Das klingt annehmbar, aber so geht es nicht." CR>)
+              (<VERB? PLUG>
+               <COND (<EQUAL? ,PRSI ,HANDS>
+                      <TELL
+"Bist du der kleine Gernegro%s, ja? Zu dumm, das ist ein gro%ser Damm." CR>)
+                     (T
+                      <TELL
+"Mit " EIN-DAT ,PRSI "? Wei%st du wie gro%s der Damm ist? Du k%onntest h%ochstens ein winziges Leck damit stopfen." CR>)>)>>
+
+<ROUTINE WITH-TELL (OBJ)
+        <TELL "With " EIN-DAT  .OBJ "?" CR>>
+
+<ROUTINE RESERVOIR-SOUTH-FCN (RARG)
+       <COND (<EQUAL? .RARG ,M-LOOK>
+              <COND (<AND ,LOW-TIDE ,GATES-OPEN>
+                     <TELL
+"Du bist in einem l%anglichen Zimmer. Nach Norden lag fr%uher ein See. Aber, nachdem der Wasserstand gemindert wurde, gibt es hier blo%s einen breiten Bach, der durch die Mitte des Raumes flie%st.">)
+                    (,GATES-OPEN
+                     <TELL
+"Du bist in einem l%anglichen Zimmer. Nach Norden liegt ein gro%ser See. Er ist zu tief, ihn zu %uberqueren. Du merkst aber, da%s der Wassterstand sich rapide senkt. Es wird nicht lange dauern, bis du den See %uberqueren kannst.">)
+                    (,LOW-TIDE
+                     <TELL
+"Du bist in einem l%anglichen Zimmer. Nach Norden gibt es eine weite Fl%ache, die fr%uher ein Reservoir war, aber jetzt nur noch ein Flu%s ist. Du bemerkst aber, da%s der Wasserstand des Flu%ses sich rapide hebt, und da%s es bald unm%oglich sein wird, ihn zu %uberqueren.">)
+                    (T
+                     <TELL
+"Du bist in einem l%anglichen Raum am S%udufer eines gro%sen Sees, der viel zu tief und zu breit zum %Uberqueren ist.">)>
+              <CRLF>
+              <TELL
+"Den Bach entlang f%uhrt ein Pfad nach Osten oder Westen, ein steiler Pfad, nach S%udwesten den Rand einer Spalte entlang und ein Pfad f%uhrt in eine Schlucht nach S%udosten." CR>)>>
+
+<ROUTINE RESERVOIR-FCN (RARG)
+       <COND (<AND <EQUAL? .RARG ,M-END>
+                   <NOT <FSET? <LOC ,WINNER> ,VEHBIT>>
+                   <NOT ,GATES-OPEN>
+                   ,LOW-TIDE>
+              <TELL
+"Du bemerkst, da%s der Wasserstand sich hier rapide hebt. Die Str%omungen werden auch st%arker. Hier zu bleiben, erscheint recht gef%ahrlich." CR>)
+             (<EQUAL? .RARG ,M-LOOK>
+              <COND (,LOW-TIDE
+                     <TELL
+"Du stehst da, wo einmal ein gro%ser See war, aber der ist jetzt ein gro%ser Schlammhaufen. Es gibt hier %>Ufer%< nach Norden und S%uden." CR>)
+                    (T
+                     <TELL
+"Du bist auf dem See. Nach Norden und S%uden kann man Str%ande sehen. Flu%saufw%arts flie%st ein kleiner Flu%s durch eine enge Rinne in den Felsen in den See hinein. Flu%sabw%arts kann man den Damm sehen.">)>
+              <CRLF>)>>
+
+<ROUTINE RESERVOIR-NORTH-FCN (RARG)
+       <COND (<EQUAL? .RARG ,M-LOOK>
+              <COND (<AND ,LOW-TIDE ,GATES-OPEN>
+                     <TELL
+"Du bist in einem grottenartigen Raum. Sein S%udteil war einmal ein See.
+Aber, mit dem geminderten Wasserstand, gibt es hier nur noch einen breiten Bach, der hier durchflie%st.">)
+                    (,GATES-OPEN
+                     <TELL
+"Du bist in einer weiten grottenartigen Gegend. Nach S%uden ist ein gro%ser See, dessen Wasserstand rapide zu fallen scheint.">)
+                    (,LOW-TIDE
+                     <TELL
+"Du bist in einer grottenartigen Gegend. Nach S%uden ist ein sehr breiter Strom. Der Wasserstand des Stroms steigt rapide, und es scheint, da%s es bald unm%oglich sein wird auf die andere Seite zu kommen.">)
+                    (T
+                     <TELL
+"Du bist in einem grottenartigen Raum auf der Nordseite eines gro%sen Sees.">)>
+              <CRLF>
+              <TELL
+"Eine schleimige Treppe f%uhrt aus Raum nach Norden." CR>)>>
+
+
+<ROUTINE BOTTLE-FUNCTION ("AUX" (E? <>))
+  <COND (<AND <VERB? THROW> <==? ,PRSO ,BOTTLE>>
+        <REMOVE-CAREFULLY ,PRSO>
+        <SET E? T>
+        ;<TELL "The bottle hits the far wall and shatters." CR>
+        <TELL "Die Flasche trifft die Wand und zerschellt." CR>)
+       (<VERB? MUNG>
+        <SET E? T>
+        <REMOVE-CAREFULLY ,PRSO>
+        ;<TELL "A brilliant maneuver destroys the bottle." CR>
+        <TELL "Eine brilliante Aktion, die die Flasche zerst%ort." CR>)
+       (<VERB? SHAKE>
+        <COND (<AND <FSET? ,PRSO ,OPENBIT> <IN? ,WATER ,PRSO>>
+               <SET E? T>)>)>
+  <COND (<AND .E? <IN? ,WATER ,PRSO>>
+        <TELL "Das Wasser spritzt auf den Boden und verdampft." CR>
+        <REMOVE-CAREFULLY ,WATER>
+        T)
+       (.E? <RTRUE>)>>
+
+
+"SUBTITLE CYCLOPS"
+
+<GLOBAL CYCLOWRATH 0>
+
+<ROUTINE CYCLOPS-FCN ("AUX" COUNT)
+       <SET COUNT ,CYCLOWRATH>
+       <COND (<EQUAL? ,WINNER ,CYCLOPS>
+              <COND (,CYCLOPS-FLAG
+                     <TELL "Es hat keinen Sinn mit ihm zu sprechen. Er schl%aft fest." CR>)
+                    (<VERB? ODYSSEUS>
+                     <SETG WINNER ,ADVENTURER>
+                     <PERFORM ,V?ODYSSEUS>
+                     <RTRUE>)
+                    (ELSE
+                     <TELL
+"Der Zyklop zieht das Essen der Unterhaltung vor." CR>)>)
+             (,CYCLOPS-FLAG
+              <COND (<VERB? EXAMINE>
+                     <TELL
+"Der Zyklop schl%aft wie ein Engel, wenn auch ein h%a%slicher." CR>)
+                    (<VERB? ALARM KICK ATTACK BURN MUNG>
+                     <TELL
+"Der Zyklop g%ahnt und starrt das Ding an, das ihn aufgeweckt hat." CR>
+                     <SETG CYCLOPS-FLAG <>>
+                     <FSET ,CYCLOPS ,FIGHTBIT>
+                     <COND (<L? .COUNT 0>
+                            <SETG CYCLOWRATH <- .COUNT>>)
+                           (T
+                            <SETG CYCLOWRATH .COUNT>)>)>)
+             (<VERB? EXAMINE>
+              <TELL
+"Der hungrige Zyklop steht am Fu%s der Treppe." CR>)
+             (<AND <VERB? GIVE> <EQUAL? ,PRSI ,CYCLOPS>>
+              <COND (<EQUAL? ,PRSO ,LUNCH>
+                     <COND (<NOT <L? .COUNT 0>>
+                            <REMOVE-CAREFULLY ,LUNCH>
+                            <TELL
+"Der Zyklop sagt: %>Ei, ei. Ich liebe scharfe Pepperoni! Aber, oooh, ich k%onnte erst mal was zu Trinken brauchen. Vielleicht k%onnte ich das Blut von 'diesem Ding' trinken%<. Aus dem listigen Aufleuchten seiner Augen kannst du schlie%sen, da%s du gemeint bist." CR>
+                            <SETG CYCLOWRATH <MIN -1 <- .COUNT>>>)>
+                     <ENABLE <QUEUE I-CYCLOPS -1>>)
+                    (<OR <EQUAL? ,PRSO ,WATER>
+                         <AND <EQUAL? ,PRSO ,BOTTLE>
+                              <IN? ,WATER ,BOTTLE>>>
+                     <COND (<L? .COUNT 0>
+                            <REMOVE-CAREFULLY ,WATER>
+                            <MOVE ,BOTTLE ,HERE>
+                            <FSET ,BOTTLE ,OPENBIT>
+                            <FCLEAR ,CYCLOPS ,FIGHTBIT>
+                            <TELL
+"Der Zyklop nimmt die Flasche, pr%uft ihren Inhalt und trinkt das Wasser. Einen Augenblick sp%ater %offnet er seinen Mund zu einem G%ahnen, mit dem er dich beinahe verschluckt, dann schl%aft er fest ein. (Was hast du ihm denn blo%s in das Wasser geschmuggelt?)" CR>
+                            <SETG CYCLOPS-FLAG T>)
+                           (T
+                            <TELL
+"Scheinbar ist der Zyklop nicht durstig und lehnt dein gro%sz%ugiges Angebot ab." CR>)>)
+                    (<EQUAL? ,PRSO ,GARLIC>
+                     <TELL
+"Vielleicht ist der Zyklop hungrig, aber auch er kennt seine Grenzen." CR>)
+                    (T
+                     <TELL
+"Der Zyklop ist nicht so dumm, da%s er DAS essen w%urde!" CR>)>)
+             (<VERB? THROW ATTACK MUNG>
+              <ENABLE <QUEUE I-CYCLOPS -1>>
+              <COND (<VERB? MUNG>
+                     <TELL
+"%>Meinst du, da%s ich so dumm bin, wie mein Vater war?%< sagt er, als er dir ausweicht." CR>)
+                    (T
+                     <TELL
+"Der Zyklop zuckt die Achseln und beachtet deinen armseligen Versuch nicht weiter." CR>
+                     <COND (<VERB? THROW>
+                            <MOVE ,PRSO ,HERE>)>
+                     <RTRUE>)>)
+             (<VERB? TAKE>
+              <TELL
+"Es gef%allt dem Zyklopen nicht, da%s du ihn angreifst." CR>)
+             (<VERB? TIE>
+              <TELL
+"Du kannst den Zyklopen nicht fesseln, obwohl er gefesselt zu sein scheint." CR>)
+             (<VERB? LISTEN>
+              <TELL
+"Du kannst seinen Magen knurren h%oren." CR>)>>
+
+<ROUTINE I-CYCLOPS ()
+        <COND (<OR ,CYCLOPS-FLAG ,DEAD> <RTRUE>)
+              (<NOT <EQUAL? ,HERE ,CYCLOPS-ROOM>>
+               <DISABLE <INT I-CYCLOPS>>)
+              (T
+               <COND (<G? <ABS ,CYCLOWRATH> 5>
+                      <DISABLE <INT I-CYCLOPS>>
+                      <JIGS-UP
+"Der Zyklop, der deiner listigen Spielchen %uberdr%ussig ist, zerquetscht dich zwischen seinen Fingern. W%ahrend ihm das Wasser im Mund zusammenl%auft, sagt er: %>Das schmeckt wie bei Muttern. Mmmh.%<|
+|
+Es ist angenehm, gesch%atzt zu werden.">)
+                     (T
+                      <COND (<L? ,CYCLOWRATH 0>
+                             <SETG CYCLOWRATH <- ,CYCLOWRATH 1>>)
+                            (T
+                             <SETG CYCLOWRATH <+ ,CYCLOWRATH 1>>)>
+                      <COND (<NOT ,CYCLOPS-FLAG>
+                             <TELL <NTH ,CYCLOMAD <- <ABS ,CYCLOWRATH> 1>>
+                                   CR>)>)>)>>
+
+<ROUTINE CYCLOPS-ROOM-FCN (RARG)
+       <COND (<EQUAL? .RARG ,M-LOOK>
+              <TELL
+"Dieser Raum hat einen Ausgang nach Nordwesten, und eine Treppe f%uhrt
+nach oben." CR>
+              <COND (<AND ,CYCLOPS-FLAG <NOT ,MAGIC-FLAG>>
+                     <TELL
+"Der Zyklop schl%aft selig am Fu%se der Treppe." CR>)
+                    (,MAGIC-FLAG
+                     <TELL
+"Die Ostwand, die fr%uher ganz war, zeigt jetzt eine zyklopenf%ormige %Offnung." CR>)
+                    (<0? ,CYCLOWRATH>
+                     <TELL
+"Ein Zyklop, der aussieht, als w%are er bereit, G%aule zu verschlingen (viel eher als nur Abenteurer), blockiert die Treppe. Von seinem Gesundheitszustand und den Blutspuren an den W%anden, kannst du schlie%sen, da%s er nicht sehr freundlich ist, obwohle er Menschen liebt." CR>)
+                    (<G? ,CYCLOWRATH 0>
+                     <TELL
+"Der Zyklop steht in der Ecke und beobachtet dich scharf. Ich glaube nicht, da%s er dich mag. Er sieht sogar f%ur einen Zyklopen ausgesprochen hungrig aus." CR>)
+                    (<L? ,CYCLOWRATH 0>
+                     <TELL
+"Der Zyklop scheint, nachdem er die scharfen Pepperoni gefressen hat, nach Atem zu ringen. Seine flammenrote Zunge h%angt aus seinem menschengro%sen Maul." CR>)>)
+             (<EQUAL? .RARG ,M-ENTER>
+              <OR <0? ,CYCLOWRATH> <ENABLE <INT I-CYCLOPS>>>)>>
+
+<GLOBAL CYCLOMAD
+       <TABLE (PURE)
+"Der Zyklop scheint irgendwie ver%argert."
+"Der Zyklop scheint immer %argerlicher zu werden."
+"Der Zyklop wandert durch das Zimmer, als ob er nach etwas sucht."
+"Der Zyklop hat nach Salz und Pfeffer gesucht. Es besteht kein Zweifel, da%s er sich seine bevorstehende Mahlzeit damit w%urzen will."
+"Der Zyklop kommt dir auf eine sehr unangenehme Weise n%aher und n%aher."
+"F%ur dich bestehen hier zwei M%oglichkeiten: 1. Abhauen. 2. Zur Mahlzeit werden.">>
+
+"SUBTITLE LOUD LOUD LOUD"
+
+<GLOBAL LOUD-FLAG <>>
+
+<ROUTINE LOUD-ROOM-FCN (RARG "AUX" WRD)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"Dies ist ein riesiges Zimmer, in dem man die Decke nicht von unten erkennen kann. Hier ist ein enger Durchgang von Osten nach Westen und eine Steintreppe f%uhrt nach oben.">
+               <COND (<OR ,LOUD-FLAG
+                          <AND <NOT ,GATES-OPEN> ,LOW-TIDE>>
+                      <TELL " Der Raum ist in seiner Stille unheimlich.">)
+                     (T
+                      <TELL " Der Raum ist mit ohrenbet%aubendem L%arm gef%ullt. Das Get%ose scheint, von allen W%anden widerzuhallen. Es ist unm%oglich, hier auch nur zu denken.">)>
+               <CRLF>)
+              (<AND <EQUAL? .RARG ,M-END> ,GATES-OPEN <NOT ,LOW-TIDE>>
+               <TELL
+"Es ist unertr%aglich laut hier. Eine ohrenbet%aubendes Gebr%ull kommt von allen Seiten auf dich zu. Dein Kopf dr%ohnt ununterbrochen. Mit gr%o%ster Anstrengung verl%a%st du den Raum." CR CR>
+               <GOTO <PICK-ONE ,LOUD-RUNS>>
+               <RFALSE>)               
+              (<EQUAL? .RARG ,M-ENTER>
+               <COND (<OR ,LOUD-FLAG
+                          <AND <NOT ,GATES-OPEN> ,LOW-TIDE>>
+                      <RFALSE>)
+                     (<AND ,GATES-OPEN <NOT ,LOW-TIDE>>
+                      <RFALSE>)
+                     (T
+                      <V-FIRST-LOOK>
+                      <COND (,P-CONT
+                             <TELL
+"Deine anderen Befehle sind in dem Gebr%ull verloren gegangen." CR>
+                             <SETG P-CONT <>>)>
+                      <REPEAT ()
+                              <COND (<NOT ,SUPER-BRIEF> <CRLF>)>
+                              <TELL ">">
+                              <PUTB ,P-INBUF 1 0>
+                              <READ ,P-INBUF ,P-LEXV>
+                              <COND (<0? <GETB ,P-LEXV ,P-LEXWORDS>>
+                                     <TELL "Bitte?" CR>
+                                     <AGAIN>)>
+                              <SET WRD <GET ,P-LEXV 1>>
+                              <COND (<EQUAL? .WRD ,W?LAUF ,W?GEH ,W?REN
+                                                  ,W?LAUFE ,W?GEHE ,W?RENE>
+                                     <SET WRD <GET ,P-LEXV 3>>)
+                                    (<EQUAL? .WRD ,W?SAG>
+                                     <SET WRD <GET ,P-LEXV 5>>)>
+                              <COND (<EQUAL? .WRD ,W?SAVE>
+                                     <V-SAVE>)
+                                    (<EQUAL? .WRD ,W?WIEDERHERSTELLUNG>
+                                     <V-RESTORE>)
+                                    (<EQUAL? .WRD ,W?AUFHOEREN ,W?AUFH\%OREN>
+                                     <V-QUIT>)
+                                    (<EQUAL? .WRD ,W?W ,W?WEST ,W?WESTEN>
+                                     <RETURN <GOTO ,ROUND-ROOM>>)
+                                    (<EQUAL? .WRD ,W?O ,W?OSTEN ,W?OST>
+                                     <RETURN <GOTO ,DAMP-CAVE>>)
+                                    (<EQUAL? .WRD ,W?RAUF ,W?RA>
+                                     <RETURN <GOTO ,DEEP-CANYON>>)
+                                    (<EQUAL? .WRD ,W?ECHO>
+                                     <SETG LOUD-FLAG T>
+                                     <FCLEAR ,BAR ,SACREDBIT>
+                                     <TELL
+"Die Akustik in dem Raum %andert sich ein bi%schen." CR>
+                                     <COND (<NOT ,SUPER-BRIEF> <CRLF>)>
+                                     <RETURN>)
+                                    ;(,DEAD <CRLF>)
+                                    (T
+                                     <V-ECHO>)>>)>)>>
+
+<ROUTINE DEEP-CANYON-F (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"Du bist am S%udrand einer tiefen Schlucht. Durchg%ange f%uhren nach Osten, Nordwesten und S%udwesten. Eine Treppe f%uhrt nach unten."> 
+               <COND (<AND ,GATES-OPEN <NOT ,LOW-TIDE>>
+                      <TELL
+" Du kannst ein lautes Get%ose, wie das Brausen von Wasser von unten h%oren.">)
+                     (<AND <NOT ,GATES-OPEN> ,LOW-TIDE>
+                      <CRLF>
+                      <RTRUE>)
+                     (T
+                      <TELL
+"Du kannst von unten herauf das Rauschen von Wasser h%oren.">)>
+               <CRLF>)>>
+
+
+<GLOBAL EGG-SOLVE <>>
+
+
+<GLOBAL THIEF-HERE <>>
+
+;"I-THIEF moved to DEMONS"
+
+"SUBTITLE THINGS THIEF MIGHT DO"
+
+"INTERACTION WITH ADVENTURER -- RETURNS T IF THIEF FINISHED."
+
+<ROUTINE THIEF-VS-ADVENTURER (HERE? "AUX" ROBBED? (WINNER-ROBBED? <>))
+  <COND (<AND <NOT ,DEAD> <EQUAL? ,HERE ,TREASURE-ROOM>>)
+        (<NOT ,THIEF-HERE>
+         <COND (<AND <NOT ,DEAD> <NOT .HERE?> <PROB 30>>
+               <COND (<IN? ,STILETTO ,THIEF>
+                      <FCLEAR ,THIEF ,INVISIBLE>
+                      <TELL
+"Jemand, der einen gro%sen Sack tr%agt, lehnt hier gegen eine Wand.
+Er spricht kein Wort, aber es besteht kein Zweifel, da%s er sich nur %uber seine eigene Leiche von dem Sack trennen wird." CR>
+                      <SETG THIEF-HERE T>
+                      <RTRUE>)
+                     ;(<IN? ,STILETTO ,WINNER>
+                      <MOVE ,STILETTO ,THIEF>
+                      <FSET ,STILETTO ,NDESCBIT>
+                      <FCLEAR ,THIEF ,INVISIBLE>
+                      <TELL
+"You feel a light finger-touch, and turning, notice a grinning figure
+holding a large bag in one hand and a stiletto in the other.">
+                      <SETG THIEF-HERE T>
+                      <RTRUE>)>)
+              (<AND .HERE?
+                    <FSET? ,THIEF ,FIGHTBIT>
+                    <NOT <WINNING? ,THIEF>>>
+               <TELL
+"Dein Gegner, der entscheidet, da%s Bescheidenheit auch eine Zier ist, entscheidet diesen kleinen Zwischenfall abzubrechen. Mit einem besch%amten Kopfnicken tritt er zur%uck ins Dunkel und verschwindet." CR>
+               <FSET ,THIEF ,INVISIBLE>
+               <FCLEAR ,THIEF ,FIGHTBIT>
+               <RECOVER-STILETTO>
+               <RTRUE>)
+              (<AND .HERE? <FSET? ,THIEF ,FIGHTBIT> <PROB 90>>
+               <RFALSE>)
+              (<AND .HERE? <PROB 30>>
+               <TELL
+"Der, der den gro%sen Sack tr%agt, ist gerade abgehauen. Er hatte die Nase voll. Gott sei Dank hat er nichts mitgenommen." CR>
+               <FSET ,THIEF ,INVISIBLE>
+               <RECOVER-STILETTO>
+               <RTRUE>)
+              (<PROB 70> <RFALSE>)
+              (<NOT ,DEAD>
+               <COND (<ROB ,HERE ,THIEF 100>
+                      <SET ROBBED? ,HERE>)
+                     (<ROB ,WINNER ,THIEF>
+                      <SET ROBBED? ,PLAYER>)>
+               <SETG THIEF-HERE T>
+               <COND (<AND .ROBBED? <NOT .HERE?>>
+                      <TELL
+"Ein %ubelau%sehender Typ mit einem gro%sen Sack ist gerade durchs Zimmer gelatscht. Auf dem Weg hat er ganz ruhig ein paar Wertgegenst%ande "> 
+                      <COND (<EQUAL? .ROBBED? ,HERE>
+                             <TELL "aus dem Zimmer">)
+                            (ELSE
+                             <TELL "aus deinem Besitz">)>
+                      <TELL " mitgehen lassen, dabei hat er etwas gemurmelt wie ....%>Diene deinem N%achsten bevor...%<" CR>
+                      <STOLE-LIGHT?>)
+                     (.HERE?
+                      <RECOVER-STILETTO>
+                      <COND (.ROBBED?
+                             <TELL
+"Der Dieb ist gerade abgehauen, nat%urlich trug er immer noch seinen gro%sen Sack. "> 
+                             <COND (<EQUAL? .ROBBED? ,PLAYER>
+                                    <TELL
+"Du hast es vielleicht nicht bemerkt, aber er hat dich restlos ausgeraubt.">)
+                                   (T
+                                    <TELL
+"Du hast vielleicht nicht gemerkt, da%s er die Wertsachen im Zimmer abgestaubt hat.">)>
+                             <CRLF>
+                             <STOLE-LIGHT?>)
+                            (T
+                             <TELL
+"Der Dieb, der nichts Wertvolles finden konnte, ist ver%argert abgehauen." CR>)>
+                      <FSET ,THIEF ,INVISIBLE>
+                      <SET HERE? <>>
+                      <RTRUE>)
+                     (T
+                      <TELL "Ein hagerer, hungrigau%sehender Herr latschte hier gerade durch. Er trug einen gro%sen Sack. Als er nichts Wertvolles finden konnte, zog er ver%argert ab." CR>
+                      <RTRUE>)>)>)
+       (T
+        <COND (.HERE?                  ;"Here, already announced."
+               <COND (<PROB 30>
+                      <COND (<ROB ,HERE ,THIEF 100>
+                             <SET ROBBED? ,HERE>)
+                            (<ROB ,WINNER ,THIEF>
+                             <SET ROBBED? ,PLAYER>)>
+                      <COND (.ROBBED?
+                             <TELL
+"Der Dieb ist gerade abgehauen, nat%urlich trug er immer noch seinen gro%sen Sack. ">
+                             <COND (<EQUAL? .ROBBED? ,PLAYER>
+                                    <TELL
+"Du hast es vielleicht nicht bemerkt, aber er hat dich restlos ausgeraubt.">)
+                                   (T
+                                    <TELL
+"Du hast vielleicht nicht gemerkt, da%s er die Wertsachen im Zimmer abgestaubt hat.">)>
+                             <CRLF>
+                             <STOLE-LIGHT?>)
+                            (T
+                             <TELL
+"Der Dieb, der nichts Wertvolles finden konnte, zog w%utend ab." CR>)>
+                      <FSET ,THIEF ,INVISIBLE>
+                      <SET HERE? <>>
+                      <RECOVER-STILETTO>)>)>)>
+       <RFALSE>>
+
+<ROUTINE STOLE-LIGHT? ("AUX" OLD-LIT)
+        <SET OLD-LIT ,LIT>
+        <SETG LIT <LIT? ,HERE>>
+        <COND (<AND <NOT ,LIT> .OLD-LIT>
+               <TELL "Der Dieb hat dich offensichtlich im Dunkeln gelassen." CR>)>
+        <RTRUE>>
+
+"SNARF STILETTO IF DROPPED IT"
+
+;"RECOVER-STILETTO moved to DEMONS"
+
+"PUT HIS BOOTY IN TREASURE ROOM"
+
+<ROUTINE HACK-TREASURES ("AUX" X)
+        <RECOVER-STILETTO>
+        <FSET ,THIEF ,INVISIBLE>
+        <SET X <FIRST? ,TREASURE-ROOM>>
+        <REPEAT ()
+                <COND (<NOT .X> <RETURN>)
+                      (T <FCLEAR .X ,INVISIBLE>)>
+                <SET X <NEXT? .X>>>>
+
+<ROUTINE DEPOSIT-BOOTY (RM "AUX" X N (FLG <>))
+        <SET X <FIRST? ,THIEF>>
+        <REPEAT ()
+                <COND (<NOT .X> <RETURN .FLG>)>
+                <SET N <NEXT? .X>>
+                <COND (<EQUAL? .X ,STILETTO ,LARGE-BAG>)
+                      (<G? <GETP .X ,P?TVALUE> 0>
+                       <MOVE .X .RM>
+                       <SET FLG T>
+                       <COND (<EQUAL? .X ,EGG>
+                              <SETG EGG-SOLVE T>
+                              <FSET ,EGG ,OPENBIT>)>)>
+                <SET X .N>>>
+
+"TAKE ALL OF THE VALUABLES SOMEWHERE AND PUT THEM SOMEWHERE ELSE"
+
+"MOVED TO DEMONS"
+
+"ROB MAZE"
+
+<ROUTINE ROB-MAZE (RM "AUX" X N)
+        <SET X <FIRST? .RM>>
+        <REPEAT ()
+                <COND (<NOT .X> <RFALSE>)>
+                <SET N <NEXT? .X>>
+                <COND (<AND <FSET? .X ,TAKEBIT>
+                            <NOT <FSET? .X ,INVISIBLE>>
+                            <PROB 40>>
+                       ;<TELL
+"You hear, off in the distance, someone saying %>My, I wonder what
+this fine " DER-NOM .X " is doing here.%<" CR>
+                       <TELL "Irgendwo in der Ferne h%orst du jemanden sagen %>Meine G%ute, was " DER-NOM .X " hier wohl tut?%<" CR>
+                       <COND (<PROB 60 80>
+                              <MOVE .X ,THIEF>
+                              <FSET .X ,TOUCHBIT>
+                              <FSET .X ,INVISIBLE>)>
+                       <RETURN>)>
+                <SET X .N>>>
+
+"STEAL SOME JUNK - moved to DEMONS"
+
+"DROP SOME JUNK - moved to DEMONS"
+
+"ROBBER-FUNCTION -- more prosaic thiefly occupations"
+
+<GLOBAL THIEF-ENGROSSED <>>
+
+<ROUTINE ROBBER-FUNCTION ("OPTIONAL" (MODE <>) "AUX" (FLG <>) X N)
+        <COND (<VERB? TELL>
+               <TELL "Der Dieb ist einer von den Starken und Schweigsamen." CR>
+               <SETG P-CONT <>>)
+              (<NOT .MODE>
+               <COND (<AND <VERB? HELLO>
+                           <EQUAL? <GETP ,THIEF ,P?LDESC> ,ROBBER-U-DESC>>
+                      <TELL
+"Der Dieb, der momentan behindert ist, ist nicht in der Lage, deinen Gru%s mit der ihm angeborenen H%oflichkeit zu erwidern." CR>)
+                     (<AND <EQUAL? ,PRSO ,KNIFE>
+                           <VERB? THROW>
+                           <NOT <FSET? ,THIEF ,FIGHTBIT>>>
+                      <MOVE ,PRSO ,HERE>
+                      <COND (<PROB 10 0>
+                             <TELL
+"Du mu%st dem R%auber Angst eingejagt haben, obwohl du ihn nicht getroffen hast. Er flieht">
+                             <REMOVE ,LARGE-BAG>
+                             <SET X <>>
+                             <COND (<IN? ,STILETTO ,THIEF>
+                                    <REMOVE ,STILETTO>
+                                    <SET X T>)>
+                             <COND (<FIRST? ,THIEF>
+                                    <MOVE-ALL ,THIEF ,HERE>
+                                    <TELL
+", aber der Inhalt seines Sackes f%allt auf den Boden.">)
+                                   (T
+                                    <TELL ".">)>
+                             <MOVE ,LARGE-BAG ,THIEF>
+                             <COND (.X <MOVE ,STILETTO ,THIEF>)>
+                             <CRLF>
+                             <FSET ,THIEF ,INVISIBLE>)
+                            (T
+                             <TELL
+"Du hast nicht getroffen. Der Dieb macht keine Anstalten das Messer zu nehmen, obwohl es eine sch%one Zugabe zu der Sammlung in seinem Sack w%are. Er scheint, %uber deinen Versuch ver%argert zu sein." CR>
+                             <FSET ,THIEF ,FIGHTBIT>)>)
+                     (<AND <VERB? THROW GIVE>
+                           ,PRSO
+                           <NOT <EQUAL? ,PRSO ,THIEF>>
+                           <EQUAL? ,PRSI ,THIEF>>
+                      <COND (<L? <GETP ,THIEF ,P?STRENGTH> 0>
+                             <PUTP ,THIEF
+                                   ,P?STRENGTH
+                                   <- <GETP ,THIEF ,P?STRENGTH>>>
+                             <ENABLE <INT I-THIEF>>
+                             <RECOVER-STILETTO>
+                             <PUTP ,THIEF ,P?LDESC ,ROBBER-C-DESC>
+                             <TELL
+"Dein Opfer kommt pl%otzlich zu sich." CR>)>
+                      <MOVE ,PRSO ,THIEF>
+                      <COND ;(<EQUAL? ,PRSO ,STILETTO>
+                             <TELL
+"The thief takes his stiletto and salutes you with a small nod of
+his head." CR>)
+                            (<G? <GETP ,PRSO ,P?TVALUE> 0>
+                             <SETG THIEF-ENGROSSED T>
+                             ;<TELL
+"The thief is taken aback by your unexpected generosity, but accepts
+the " DER-ACC ,PRSO " and stops to admire its beauty." CR>
+                             <TELL 
+"Der Dieb ist erstaunt %uber deine Gro%sz%ugigkeit, die er nicht erwartetet
+hat, aber er nimmt " DER-ACC ,PRSO " an, und nimmt sich Zeit, seine Sch%onheit zu bewundern." CR>)
+                            (T
+                             <TELL "Der Dieb steckt " DER-ACC ,PRSO " in seinen Sack und dankt dir h%oflich.">)>)
+                     (<VERB? TAKE>
+                      <TELL
+"Was willst du mit ihm machen, wenn du ihn hast?" CR>)
+                     (<VERB? EXAMINE LOOK-INSIDE>
+                      <TELL
+"Der Dieb ist ein schleimiger Geselle mit Eidechsenaugen, die hin und her %augeln. Mit unmi%sverst%andlicher Arroganz schleppt er einen gro%sen Sack mit sich herum. Au%serdem hat er ein gef%ahrlich au%sehendes Stilett, dessen Spitze bedrohlich gegen dich gerichtet ist. An deiner Stelle w%are ich auf der Hut." CR>)
+                     (<VERB? LISTEN>
+                      <TELL
+"Der Dieb schweigt, denn ihr seid einander ja noch nicht offiziell vorgestellt worden." CR>)>)
+              (<EQUAL? .MODE ,F-BUSY?>
+               <COND (<IN? ,STILETTO ,THIEF> <>)
+                     (<IN? ,STILETTO <LOC ,THIEF>>
+                      <MOVE ,STILETTO ,THIEF>
+                      <FSET ,STILETTO ,NDESCBIT>
+                      <COND (<IN? ,THIEF ,HERE>
+                             <TELL
+"Der R%auber, von dieser Wendung der Dinge etwas %uberrascht, holt sich sein Stillett leichtf%u%sig zur%uck." CR>)>
+                      T)>)
+              (<EQUAL? .MODE ,F-DEAD>
+               <MOVE ,STILETTO ,HERE>
+               <FCLEAR ,STILETTO ,NDESCBIT>
+               <SET X <DEPOSIT-BOOTY ,HERE>>
+               <COND (<EQUAL? ,HERE ,TREASURE-ROOM>
+                      <SET X <FIRST? ,HERE>>
+                      <REPEAT ()
+                              <COND
+                               (<NOT .X>
+                                <TELL "Jetzt kannst du dir den Kelch ohne Gefahr nehmen." CR>
+                                <RETURN>)
+                               (<NOT <EQUAL? .X ,CHALICE ,THIEF ,ADVENTURER>>
+                                <FCLEAR .X ,INVISIBLE>
+                                <COND (<NOT .FLG>
+                                       <SET FLG T>
+                                       <TELL
+"Als der Dieb stirbt, schwindet seine Zauberkraft, und seine Sch%atze werden wieder sichtbar:" CR>)>
+                                <TELL " " EIN-NOM-CAP .X>
+                                <COND (<AND <FIRST? .X>
+                                            <SEE-INSIDE? .X>>
+                                       <TELL ", mit ">
+                                       <PRINT-CONTENTS .X>)>
+                                <CRLF>)>
+                              <SET X <NEXT? .X>>>)
+                     (.X
+                      <TELL "Seine Beute bleibt zur%uck." CR>)>
+               <DISABLE <INT I-THIEF>>)
+              (<EQUAL? .MODE ,F-FIRST?>
+               <COND (<AND ,THIEF-HERE
+                           <NOT <FSET? ,THIEF ,INVISIBLE>>
+                           <PROB 20>>
+                      <FSET ,THIEF ,FIGHTBIT>
+                      <SETG P-CONT <>>
+                      T)>)
+              (<EQUAL? .MODE ,F-UNCONSCIOUS>
+               <DISABLE <INT I-THIEF>>
+               <FCLEAR ,THIEF ,FIGHTBIT>
+               <MOVE ,STILETTO ,HERE>
+               <FCLEAR ,STILETTO ,NDESCBIT>
+               <PUTP ,THIEF ,P?LDESC ,ROBBER-U-DESC>)
+              (<EQUAL? .MODE ,F-CONSCIOUS>
+               <COND (<EQUAL? <LOC ,THIEF> ,HERE>
+                      <FSET ,THIEF ,FIGHTBIT>
+                      <TELL
+"Der R%auber kommt zu sich. F%ur eine Weile t%auscht er weiterhin Bewu%stlosigkeit vor, dann als er die passende Gelegenheit findet, kriecht er weg von dir." CR>)>
+               <ENABLE <INT I-THIEF>>
+               <PUTP ,THIEF ,P?LDESC ,ROBBER-C-DESC>
+               <RECOVER-STILETTO>)>>
+
+<GLOBAL ROBBER-C-DESC
+"Da steht ein verd%achtig au%sehender Kerl, der eine T%ute h%alt, gegen die Wand gelehnt. Er ist mit einem Stilett bewaffnet.">
+
+<GLOBAL ROBBER-U-DESC
+"Da liegt ein verd%achtig au%sehender Kerl bewu%stlos auf der Erde.">
+
+<ROUTINE LARGE-BAG-F ()
+        <COND (<VERB? TAKE>
+               <COND (<EQUAL? <GETP ,THIEF ,P?LDESC> ,ROBBER-U-DESC>
+                      <TELL
+"Zu deinem Nachteil ist der R%auber auf dem Sack zusammengebrochen. Wenn du jetztversuchtest, den Sack wegzunehmen, w%urdest du ihn wecken." CR>)
+                     (T
+                      <TELL
+"Der Sack wird auch %uber seine Leiche genommen." CR>)>)
+              (<AND <VERB? PUT>
+                    <EQUAL? ,PRSI ,LARGE-BAG>>
+               <TELL "Das w%are ein toller Trick." CR>)
+              (<VERB? OPEN CLOSE>
+               <TELL
+"Nahe genug heranzukommen, w%are ein toller Trick." CR>)
+              (<VERB? EXAMINE LOOK-INSIDE>
+               <TELL
+"Der Sack liegt unter dem Dieb, daher kann man nicht sagen, was darin ist, wenn %uberhaupt was drin ist." CR>)>>
+
+<ROUTINE MOVE-ALL (FROM TO "AUX" X N)
+        <COND (<SET X <FIRST? .FROM>>
+               <REPEAT ()
+                       <COND (<NOT .X> <RETURN>)>
+                       <SET N <NEXT? .X>>
+                       <FCLEAR .X ,INVISIBLE>
+                       <MOVE .X .TO>
+                       <SET X .N>>)>>
+
+<ROUTINE CHALICE-FCN ()
+        <COND (<VERB? TAKE>
+               <COND (<AND <IN? ,PRSO ,TREASURE-ROOM>
+                           <IN? ,THIEF ,TREASURE-ROOM>
+                           <FSET? ,THIEF ,FIGHTBIT>
+                           <NOT <FSET? ,THIEF ,INVISIBLE>>
+                           <NOT <EQUAL? <GETP ,THIEF ,P?LDESC>
+                                        ,ROBBER-U-DESC>>>
+                      <TELL
+"Du w%urdest von hinten erstochen." CR>)>)
+              (<AND <VERB? PUT> <EQUAL? ,PRSI ,CHALICE>>
+               <TELL
+"Das gelingt dir nicht. Es ist kein guter Kelch, nicht wahr?" CR>)
+              (T <DUMB-CONTAINER>)>>
+
+<ROUTINE TREASURE-ROOM-FCN (RARG "AUX" TL)
+        <COND (<AND <EQUAL? .RARG ,M-ENTER>
+                    <1? <GET <INT I-THIEF> ,C-ENABLED?>>
+                    <NOT ,DEAD>>
+               <COND (<NOT <IN? ,THIEF ,HERE>>
+                      <TELL
+"Du h%orst einen Schreckensschrei, als du in das Versteck des R%aubers einbrichst. Als du einen Durchgang benutzt, der dir unbekannt ist,
+verteidigt er sich sofort." CR>
+                      <MOVE ,THIEF ,HERE>)>
+               <FSET ,THIEF ,FIGHTBIT>
+               <FCLEAR ,THIEF ,INVISIBLE>
+               <THIEF-IN-TREASURE>)>>
+
+<ROUTINE THIEF-IN-TREASURE ("AUX" F N)
+        <SET F <FIRST? ,HERE>>
+        <COND (<AND .F <NEXT? .F>>
+               <TELL
+"Der Dieb f%uhrt einige mysteri%ose Gesten aus, und die Sch%atze im Zimmer verschwinden." CR CR>)>
+        <REPEAT ()
+                <COND (<NOT .F> <RETURN>)
+                      (<NOT <EQUAL? .F ,CHALICE ,THIEF>>
+                       <FSET .F ,INVISIBLE>)>
+                <SET F <NEXT? .F>>>>
+
+<ROUTINE FRONT-DOOR-FCN ()
+        <COND (<VERB? OPEN>
+               <TELL "Die T%ur kann nicht ge%offnet werden." CR>)
+              (<VERB? BURN>
+               <TELL
+                "Du kannst die T%ur nicht verbrennen." CR>)
+              (<VERB? MUNG>
+               <TELL "Du kannst die T%ur nicht besch%adigen." CR>)
+              (<VERB? LOOK-BEHIND>
+               <TELL "Sie l%a%st sich nicht %offnen." CR>)>>
+
+"SUBTITLE RANDOM FUNCTIONS"
+
+<ROUTINE BODY-FUNCTION ()
+        <COND (<VERB? TAKE>
+               <TELL 
+"Eine magische Kraft hindert dich am Mitnehmen der Leichen." CR>)
+              (<VERB? MUNG BURN>
+               <JIGS-UP
+"Die Stimme des Kerkermeisters dr%ohnt aus dem Dunkel: %>Deine Nichtachtung wird dir dein Leben kosten%<, und er steckt deinen Kopf auf einen spitzen
+Stock.">)>>
+
+<ROUTINE BLACK-BOOK ()
+        <COND (<VERB? OPEN>
+               <TELL "Das Buch ist schon auf Seite 569 augfgeschlagen." CR>)
+              (<VERB? CLOSE>
+               <TELL "Trotz aller Kraftanwendung kannst du das Buch nicht schlie%sen." CR>)
+              (<OR <VERB? TURN>
+                   <AND <VERB? READ-PAGE>
+                        <EQUAL? ,PRSI ,INTNUM>
+                        <NOT <EQUAL? ,P-NUMBER 569>>>>
+               ;<TELL
+"Beside page 569, there is only one other page with any legible printing on
+it. Most of it is unreadable, but the subject seems to be the banishment of
+evil. Apparently, certain noises, lights, and prayers are efficacious in this
+regard." CR>
+               <TELL "Au%ser der Seite 569 gibt es nur noch eine Seite mit lesbarem Druck darauf. Fast alles ist unleserlich, aber das Thema scheint die Bannung des B%osen zu sein. Scheinbar sind gewi%se Ger%ausche, Lichter und Gebete in dieser Beziehung von Nutzen.">)
+              (<VERB? BURN>
+               <REMOVE-CAREFULLY ,PRSO>
+               <JIGS-UP
+"Eine donnernde Stimme sagt: %>Falsch gedacht, Schwachkopf!%<, und du bemerkst, da%s du dich in eine Staubma%se verwandelt hast. Wie, kann ich mir einfach nicht vorstellen.">)>>
+
+<ROUTINE PAINTING-FCN ()
+        <COND (<VERB? MUNG>
+               <PUTP ,PRSO ,P?TVALUE 0>
+               <PUTP ,PRSO ,P?LDESC "Heir ist eine wertlose Leinwand.">
+               <TELL
+"Gratuliere! Im Gegensatz zu den anderen Verbrechern, die lediglich die Meisterwerke des K%unstlers gestohlen haben, hast du eines zerst%ort." CR>)>>
+
+
+"SUBTITLE LET THERE BE LIGHT SOURCES"
+
+<GLOBAL LAMP-TABLE
+       <TABLE (PURE)
+              100
+              "The lamp appears a bit dimmer."
+              70
+              "The lamp is definitely dimmer now."
+              15   
+              "The lamp is nearly out."
+              0>>
+"Die Leuchte scheint ein wenig schw%acher."
+"Die Leuchte ist jetzt unbedingt schw%acher."
+"Die Leuchte ist fast aus."
+
+<ROUTINE LANTERN ()
+        <COND (<VERB? THROW>
+               <TELL
+"Die Leuchte liegt am Fu%sboden zerschmettert, und das Licht ist aus." CR>
+               <DISABLE <INT I-LANTERN>>
+               <REMOVE-CAREFULLY ,LAMP>
+               <MOVE ,BROKEN-LAMP ,HERE>)
+              (<VERB? LAMP-ON>
+               <COND (<FSET? ,LAMP ,RMUNGBIT>
+                      <TELL 
+"Eine ausgebrannte Leuchte l%a%st sich nicht anz%unden." CR>)
+                     (T
+                      <ENABLE <INT I-LANTERN>>
+                      <>)>)
+              (<VERB? LAMP-OFF>
+               <COND (<FSET? ,LAMP ,RMUNGBIT>
+                      <TELL "Die Leuchte ist schon ausgebrannt." CR>)
+                     (T
+                      <DISABLE <INT I-LANTERN>>
+                      <>)>)
+              (<VERB? EXAMINE>
+               <COND (<FSET? ,LAMP ,RMUNGBIT>
+                      <TELL "Die Leuchte ist ausgebrannt.">)
+                     (<FSET? ,LAMP ,ONBIT>
+                      <TELL "Die Leuchte ist an.">)
+                     (T
+                      <TELL "Die Leuchte ist nicht an.">)>
+               <CRLF>)>>
+
+<ROUTINE MAILBOX-F ()
+        <COND (<AND <VERB? TAKE> <EQUAL? ,PRSO ,MAILBOX>>
+               <TELL "Er ist fest angebracht." CR>)>>
+
+<GLOBAL MATCH-COUNT 6>
+
+<ROUTINE MATCH-FUNCTION ("AUX" CNT)
+        <COND (<AND <VERB? LAMP-ON BURN> <EQUAL? ,PRSO ,MATCH>>
+               <COND (<G? ,MATCH-COUNT 0>
+                      <SETG MATCH-COUNT <- ,MATCH-COUNT 1>>)>
+               <COND (<NOT <G? ,MATCH-COUNT 0>>
+                      <TELL
+                       "Leider sind dir die Streichh%olzer ausgegangen." CR>)
+                     (<EQUAL? ,HERE ,LOWER-SHAFT ,TIMBER-ROOM>
+                      <TELL
+"Dieser Raum ist zugig, und das Streichholz geht sofort aus." CR>)
+                     (T
+                      <FSET ,MATCH ,FLAMEBIT>
+                      <FSET ,MATCH ,ONBIT>
+                      <ENABLE <QUEUE I-MATCH 2>>
+                      <TELL "Eines der Streichh%olzer beginnt zu brennen." CR>
+                      <COND (<NOT ,LIT>
+                             <SETG LIT T>
+                             <V-LOOK>)>
+                      <RTRUE>)>)
+              (<AND <VERB? LAMP-OFF> <FSET? ,MATCH ,FLAMEBIT>>
+               <TELL "Das Streichholz ist aus." CR>
+               <FCLEAR ,MATCH ,FLAMEBIT>
+               <FCLEAR ,MATCH ,ONBIT>
+               <SETG LIT <LIT? ,HERE>>
+               <COND (<NOT ,LIT> <TELL "Es ist stockdunkel hier!" CR>)>
+               ;<QUEUE I-MATCH 0>
+               <ENABLE <QUEUE I-MATCH 0>>
+               <RTRUE>)
+              (<VERB? COUNT OPEN>
+               <TELL "Du hast ">
+               <SET CNT <- ,MATCH-COUNT 1>>
+               <COND (<NOT <G? .CNT 0>> <TELL "keine">)
+                     (T <TELL N .CNT>)>
+               <TELL " Streichh%olzer." CR>
+               ;<COND (<NOT <1? .CNT>> <TELL "es.">) (T <TELL ".">)>
+               ;<CRLF>)
+              (<VERB? EXAMINE>
+               <COND (<FSET? ,MATCH ,ONBIT>
+                      <TELL "Das Streichholz brennt.">)
+                     (T
+                      <TELL
+"The matchbook isn't very interesting, except for what's written on it.">)>
+               <CRLF>)>>
+
+<ROUTINE I-MATCH ()
+        <TELL "Das Streichholz ist ausgegangen." CR>
+        <FCLEAR ,MATCH ,FLAMEBIT>
+        <FCLEAR ,MATCH ,ONBIT>
+        <SETG LIT <LIT? ,HERE>>
+        <RTRUE>>
+
+<ROUTINE I-LANTERN ("AUX" TICK (TBL <VALUE LAMP-TABLE>))
+        <ENABLE <QUEUE I-LANTERN <SET TICK <GET .TBL 0>>>>
+        <LIGHT-INT ,LAMP .TBL .TICK>
+        <COND (<NOT <0? .TICK>>
+               <SETG LAMP-TABLE <REST .TBL 4>>)>>
+
+<ROUTINE I-CANDLES ("AUX" TICK (TBL <VALUE CANDLE-TABLE>))
+        <FSET ,CANDLES ,TOUCHBIT>
+        <ENABLE <QUEUE I-CANDLES <SET TICK <GET .TBL 0>>>>
+        <LIGHT-INT ,CANDLES .TBL .TICK>
+        <COND (<NOT <0? .TICK>>
+               <SETG CANDLE-TABLE <REST .TBL 4>>)>>
+
+<ROUTINE LIGHT-INT (OBJ TBL TICK)
+        <COND (<0? .TICK>
+               <FCLEAR .OBJ ,ONBIT>
+               <FSET .OBJ ,RMUNGBIT>)>
+        <COND (<OR <HELD? .OBJ> <IN? .OBJ ,HERE>>
+               <COND (<0? .TICK>
+                      <TELL
+"Du brauchst mehr Licht, als nur " DER-NOM .OBJ "." CR>)
+                     (T
+                      <TELL <GET .TBL 1> CR>)>)>>
+
+<ROUTINE MIN (N1 N2)
+        <COND (<L? .N1 .N2> .N1)
+              (T .N2)>>
+
+<ROUTINE CANDLES-FCN ()
+        <COND (<NOT <FSET? ,CANDLES ,TOUCHBIT>>
+               <ENABLE <INT I-CANDLES>>)>
+        <COND (<EQUAL? ,CANDLES ,PRSI> <RFALSE>)
+              (T
+               <COND (<VERB? LAMP-ON BURN>
+                      <COND (<FSET? ,CANDLES ,RMUNGBIT>
+                             <TELL
+"O je, von den Kerzen ist nicht mehr viel %ubrig. Bestimmt nicht genug zum Brennen." CR>)
+                            (<NOT ,PRSI>
+                             <COND (<FSET? ,MATCH ,FLAMEBIT>
+                                    <TELL "(mit dem Streichholz)" CR>
+                                    <PERFORM ,V?LAMP-ON ,CANDLES ,MATCH>
+                                    <RTRUE>)
+                                   (T
+                                    <TELL
+"Du solltest sagen, mit was man sie anzuenden soll." CR>
+                                    <RFATAL>)>)
+                            (<AND <EQUAL? ,PRSI ,MATCH>
+                                  <FSET? ,MATCH ,ONBIT>>
+                             <COND (<FSET? ,CANDLES ,ONBIT>
+                                    <TELL 
+"Die Kerzen sind schon angezuendet." CR>)
+                                   (T
+                                    <FSET ,CANDLES ,ONBIT>
+                                    <TELL "Die Kerzen sind angezuendet." CR>
+                                    <ENABLE <INT I-CANDLES>>)>)
+                            (<EQUAL? ,PRSI ,TORCH>
+                             <COND (<FSET? ,CANDLES ,ONBIT>
+                                    <TELL
+"Du bemerkst noch rechtzeitig, da%s die Kerzen schon angezuendet sind." CR>)
+                                   (T
+                                    <TELL
+"Die Hitze die von der Fackel ausgeht, ist so stark, da%s die Kerzen schmelzen." CR>
+                                    <REMOVE-CAREFULLY ,CANDLES>)>)
+                            (T
+                             <TELL
+"Du mu%st sie mit etwas anzuenden, das brennt, verstehst du." CR>)>)
+                     (<VERB? COUNT>
+                      <TELL
+"Mal sehen wieviele Dinge in einem Paar sind? Nicht verraten.Ich schaff das schon alleine." CR>)
+                     (<VERB? LAMP-OFF>
+                      <DISABLE <INT I-CANDLES>>
+                      <COND (<FSET? ,CANDLES ,ONBIT>
+                             <TELL "Die Flamme ist aus.">
+                             <FCLEAR ,CANDLES ,ONBIT>
+                             <FSET ,CANDLES ,TOUCHBIT>
+                             <SETG LIT <LIT? ,HERE>>
+                             <COND (<NOT ,LIT>
+                                    <TELL 
+" Es ist wirklich dunkel hier drin...">)>
+                             <CRLF>
+                             <RTRUE>)
+                            (T <TELL "Die Kerzen sind nicht an." CR>)>)
+                     (<AND <VERB? PUT> <FSET? ,PRSI ,BURNBIT>>
+                      <TELL "Das w%are ungklug." CR>)
+                     (<VERB? EXAMINE>
+                      <COND (<FSET? ,CANDLES ,ONBIT>
+                             <TELL "Die Kerzen brennen.">)
+                            (T <TELL "Die Kerzen sind nicht an.">)>
+                      <CRLF>)>)>>
+
+<GLOBAL CANDLE-TABLE
+       <TABLE (PURE)
+              20
+              "The candles grow shorter."
+              10
+              "The candles are becoming quite short."
+              5
+              "The candles won't last long now."
+              0>>
+"Die Kerzen werden k%urzer."
+"Die Kerzen werden sehr kurz."
+"Die Kerzen k%onnen nicht mehr lang brennen."
+
+<ROUTINE CAVE2-ROOM (RARG)
+  <COND (<EQUAL? .RARG ,M-END>
+        <COND (<AND <IN? ,CANDLES ,WINNER>
+                    <PROB 50 80>
+                    <FSET? ,CANDLES ,ONBIT>>
+               <DISABLE <INT I-CANDLES>>
+               <FCLEAR ,CANDLES ,ONBIT>
+               <TELL
+"Ein Windsto%s bl%ast die Kerzen aus!" CR>
+               <COND (<NOT <SETG LIT <LIT? ,HERE>>>
+                      <TELL "Jetzt ist es restlos dunkel." CR>)>)>)>>
+
+"SUBTITLE ASSORTED WEAPONS"
+
+<ROUTINE SWORD-FCN ("AUX" G)
+        <COND (<AND <VERB? TAKE> <EQUAL? ,WINNER ,ADVENTURER>>
+               <ENABLE <QUEUE I-SWORD -1>>
+               <>)
+              (<VERB? EXAMINE>
+               <COND (<EQUAL? <SET G <GETP ,SWORD ,P?TVALUE>> 1>
+                      <TELL
+"Dein Schwert leuchtet mit einem schwachen blauen Schimmer." CR>)
+                     (<EQUAL? .G 2>
+                      <TELL
+"Dein Schwert leuchtet jetzt ganz hell." CR>)>)>>
+
+"SUBTITLE COAL MINE"
+
+<ROUTINE BOOM-ROOM (RARG "AUX" (DUMMY? <>) FLAME)
+         <COND (<EQUAL? .RARG ,M-END>
+               <COND (<AND <EQUAL? .RARG ,M-END>
+                           <VERB? LAMP-ON BURN>
+                           <EQUAL? ,PRSO ,CANDLES ,TORCH ,MATCH>>
+                      <SET DUMMY? T>)>
+               <COND (<OR <AND <HELD? ,CANDLES>
+                               <FSET? ,CANDLES ,ONBIT>>
+                          <AND <HELD? ,TORCH>
+                               <FSET? ,TORCH ,ONBIT>>
+                          <AND <HELD? ,MATCH>
+                               <FSET? ,MATCH ,ONBIT>>>
+                      <COND (.DUMMY?
+                             <TELL
+"Wie traurig f%ur einen ehrgeizigen Abenteurer, da%s er " EIN-ACC ,PRSO " in einem Raum anzuendet, der nach Gas riecht. Gl%ucklicherweise gibt es Gerechtigkeit auf dieser Welt." CR>)
+                            (T
+                             <TELL
+"Ach du lieber Himmel. Es scheint, als ob der Geruch der von diesem Zimmer kommt, Kohlenoxyd ist. Ich h%atte mir zweimal %uberlegt, ob ich hier einen brennenden Gegenstand hineintrage." CR>)>
+                      <JIGS-UP "|
+      ** Bum, bum, bum **">)>)>> 
+
+<ROUTINE BAT-D ("OPTIONAL" FOO)
+        <COND (<EQUAL? <LOC ,GARLIC> ,WINNER ,HERE>
+               <TELL
+"In der Ecke des Zimmers h%angt eine gro%se Vampirfledermaus an der Decke, die offensichtlich nicht alle f%unf auf der Latte hat und sich die Nase zuh%alt."
+CR>)
+              (T
+               <TELL
+"Eine gro%se Vampirfledermaus h%angt von der Decke, rauscht auf dich nieder." CR>)>>
+
+<ROUTINE BATS-ROOM (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"Du bist in einem kleinen Zimmer, das nur eine T%ur nach Osten und S%uden
+hat." CR>)
+              (<AND <EQUAL? .RARG ,M-ENTER> <NOT ,DEAD>>
+               <COND (<NOT <EQUAL? <LOC ,GARLIC> ,WINNER ,HERE>>
+                      <V-LOOK>
+                      <CRLF>
+                      <FLY-ME>)>)>>
+
+<ROUTINE MACHINE-ROOM-FCN (RARG)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"Dies ist ein gro%ser kalter Raum, dessen einziger Ausgang nach Norden f%uhrt. In einer Ecke steht eine Maschine, die an einen W%aschetrockner erinnert. Vorne ist ein Schalter, der mit EIN beschriftet ist. Der Schalter scheint nicht, f%ur Menschenh%ande gebaut zu sein (au%ser, wenn die Finger 1/2cm mal 1cm w%aren). Vorne an der Maschine ist eine gro%se Klappe, die ">
+               <COND (<FSET? ,MACHINE ,OPENBIT>
+                      <TELL "ge%offnet">)
+                     (T <TELL  "geschlossen">)>
+               <TELL " ist." CR>)>>
+<ROUTINE MACHINE-F ()
+        <COND (<AND <VERB? TAKE> <EQUAL? ,PRSO ,MACHINE>>
+               <TELL "Das ist viel zu gro%s zum Tragen." CR>)
+              (<VERB? OPEN>
+               <COND (<FSET? ,MACHINE ,OPENBIT>
+                      <TELL <PICK-ONE ,DUMMY> CR>)
+                     (<FIRST? ,MACHINE>
+                      <TELL "Der Deckel %offnet sich, bringt "> 
+                      <PRINT-CONTENTS ,MACHINE>
+                      <TELL " zum Vorschein." CR>
+                      <FSET ,MACHINE ,OPENBIT>)
+                     (T
+                      <TELL "Der Deckel %offnet sich." CR>
+                      <FSET ,MACHINE ,OPENBIT>)>)
+              (<VERB? CLOSE>
+               <COND (<FSET? ,MACHINE ,OPENBIT>
+                      <TELL "Der Deckel schlie%st sich." CR>
+                      <FCLEAR ,MACHINE ,OPENBIT>
+                      T)
+                     (T
+                      <TELL <PICK-ONE ,DUMMY> CR>)>)
+              (<VERB? LAMP-ON>
+               <COND (<NOT ,PRSI>
+                      <TELL
+"Es ist nicht klar, wie man sie mit den nackten H%anden aufmacht." CR>)
+                     (T
+                      <PERFORM ,V?TURN ,MACHINE-SWITCH ,PRSI>
+                      <RTRUE>)>)>>
+
+<ROUTINE MSWITCH-FUNCTION ("AUX" O)
+        <COND (<VERB? TURN>
+               <COND (<EQUAL? ,PRSI ,SCREWDRIVER>
+                      <COND (<FSET? ,MACHINE ,OPENBIT>
+                             <TELL
+"Die Maschine scheint sich nicht r%uhren zu wollen." CR>)
+                            (T <TELL
+"Die Maschine wird lebendig (im %ubertragenen Sinne), indem sich faszinierende Lichter und haarstr%aubende Ger%ausche ergeben. Nach ein paar Sekunden h%ort der Zauber auf." CR>
+                             <COND (<IN? ,COAL ,MACHINE>
+                                    <REMOVE-CAREFULLY ,COAL>
+                                    <MOVE ,DIAMOND ,MACHINE>)
+                                   (T
+                                    <REPEAT ()
+                                            <COND (<SET O <FIRST? ,MACHINE>>
+                                                   <REMOVE-CAREFULLY .O>)
+                                                  (T <RETURN>)>>
+                                    <MOVE ,GUNK ,MACHINE>)>)>)
+                     (T
+                      ;<TELL 
+"It seems that " EIN-NOM ,PRSI " won't do." CR>
+                      <TELL 
+"Es scheint, da%s " EIN-NOM ,PRSI " nicht ausreicht.">)>)>>
+
+<ROUTINE GUNK-FUNCTION ()
+        <REMOVE-CAREFULLY ,GUNK>
+        <TELL
+"Die Schlacke war por%os und zerkr%umelt bei der Ber%uhrung zu Staub." CR>>
+
+<ROUTINE NO-OBJS (RARG "AUX" F)
+        <COND (<EQUAL? .RARG ,M-BEG>
+               <SET F <FIRST? ,WINNER>>
+               <SETG EMPTY-HANDED T>
+               <REPEAT ()
+                       <COND (<NOT .F> <RETURN>)
+                             (<G? <WEIGHT .F> 4>
+                              <SETG EMPTY-HANDED <>>
+                              <RETURN>)>
+                       <SET F <NEXT? .F>>>
+               <COND (<AND <EQUAL? ,HERE ,LOWER-SHAFT> ,LIT>
+                      <SCORE-UPD ,LIGHT-SHAFT>
+                      <SETG LIGHT-SHAFT 0>)>
+               <RFALSE>)>>
+
+<ROUTINE SOUTH-TEMPLE-FCN (RARG)
+        <COND (<EQUAL? .RARG ,M-BEG>
+               <SETG COFFIN-CURE <NOT <IN? ,COFFIN ,WINNER>>>
+               <RFALSE>)>>
+
+<GLOBAL LIGHT-SHAFT 13>
+<GDECL (LIGHT-SHAFT) FIX>
+
+
+<ROUTINE WHITE-CLIFFS-FUNCTION (RARG)
+        <COND (<EQUAL? .RARG ,M-END>
+               <COND (<IN? ,INFLATED-BOAT ,WINNER>
+                      <SETG DEFLATE <>>)
+                     (T
+                      <SETG DEFLATE T>)>)>>
+
+<ROUTINE SCEPTRE-FUNCTION ()
+        <COND (<VERB? WAVE RAISE>
+               <COND (<OR <EQUAL? ,HERE ,ARAGAIN-FALLS>
+                          <EQUAL? ,HERE ,END-OF-RAINBOW>>
+                      <COND (<NOT ,RAINBOW-FLAG>
+                             <FCLEAR ,POT-OF-GOLD ,INVISIBLE>
+                             <TELL
+"Pl%otzlich wird der Regenbogen zu einer Art Stra%se und erscheint begehbar
+(Treppen mit Gel%ander erwecken diesen Eindruck)." CR>
+                             <COND (<AND <EQUAL? ,HERE ,END-OF-RAINBOW>
+                                         <IN? ,POT-OF-GOLD ,END-OF-RAINBOW>>
+                                    <TELL
+"Ein glitzernder goldener Topf erscheint am Ende des Regenbogens." CR>)>
+                             <SETG RAINBOW-FLAG T>)
+                            (T
+                             <ROB ,ON-RAINBOW ,WALL>
+                             <TELL
+"Der Regenbogen scheint seine Ungew%ohnlichkeit verloren zu haben." CR>
+                             <SETG RAINBOW-FLAG <>>
+                             <RTRUE>)>)
+                     (<EQUAL? ,HERE ,ON-RAINBOW>
+                      <SETG RAINBOW-FLAG <>>
+                      <JIGS-UP
+"Die Tragf%ahigkeit des Regenbogens l%a%st sehr zu w%unschen %ubrig, was dich schwebend in der Luft h%angen l%a%st. Du bist nur von Wasserdampf gest%utzt. Auf Wiedersehen.">)
+                     (T
+                      <TELL
+"Eine verwirrende Farbenpracht strahlt kurz von dem Zepter aus." CR>)>)>>
+
+<ROUTINE FALLS-ROOM (RARG)
+    <COND (<EQUAL? .RARG ,M-LOOK>
+          <TELL
+"Du bist oben auf den Wiedermal F%allen. Ein gigantischer Wasserfall mit einem Abgrund von 15 Metern. Der einzige Pfad hier ist am Nordende." CR>
+          <COND (,RAINBOW-FLAG
+                 <TELL
+"Ein voller Regenbogen steht %uber den F%allen.">)
+                (T
+                 <TELL
+"Ein wundervoller Regenbogen kann %uber den F%allen und nach Westen gesehen werden.">)>
+          <CRLF>)>>
+
+<ROUTINE RAINBOW-FCN ()
+        <COND (<VERB? CROSS THROUGH>
+               <COND (<EQUAL? ,HERE ,CANYON-VIEW>
+                      <TELL "Von hier aus?!?" CR>
+                      <RTRUE>)>
+               <COND (,RAINBOW-FLAG
+                      <COND (<EQUAL? ,HERE ,ARAGAIN-FALLS>
+                             <GOTO ,END-OF-RAINBOW>)
+                            (<EQUAL? ,HERE ,END-OF-RAINBOW>
+                             <GOTO ,ARAGAIN-FALLS>)
+                            (T
+                             <TELL "Du mu%st sagen, in welcher Richtung..." CR>)>)
+                     (T
+                      <TELL "Kannst du auf Wasserd%ampfen wandeln?"
+                            CR>)>)
+              (<VERB? LOOK-UNDER>
+               <TELL "Der Gletsch flie%st unter dem Regenbogen." CR>)>>
+
+<ROUTINE DBOAT-FUNCTION ("AUX")
+        <COND (<AND <VERB? PUT PUT-ON>
+                    <EQUAL? ,PRSO ,PUTTY>>
+               <FIX-BOAT>)
+              (<VERB? INFLATE FILL>
+               <TELL
+"Unm%oglich. Irgends%o ein Schwachkopf hat es durchl%ochert." CR>)
+              (<VERB? PLUG>
+               <COND (<EQUAL? ,PRSI ,PUTTY>
+                      <FIX-BOAT>)
+                     (T <WITH-TELL ,PRSI>)>)>>
+
+<ROUTINE FIX-BOAT ()
+        <TELL "Gro%sartig. Das Boot ist repariert." CR>
+        <MOVE ,INFLATABLE-BOAT <LOC ,PUNCTURED-BOAT>>
+        <REMOVE-CAREFULLY ,PUNCTURED-BOAT>>
+
+<ROUTINE RIVER-FUNCTION ()
+        <COND (<VERB? PUT>
+               <COND (<EQUAL? ,PRSI ,RIVER>
+                      <COND (<EQUAL? ,PRSO ,ME>
+                             <JIGS-UP
+"Du planschst f%ur eine Weile wild im Wasser rum, um dich gegen die Str%omung zu halten, dann ertrinkst du.">)
+                            (<EQUAL? ,PRSO ,INFLATED-BOAT>
+                             <TELL
+"Du solltest in das Boot steigen, dann absto%sen." CR>)
+                            (<FSET? ,PRSO ,BURNBIT>
+                             <REMOVE-CAREFULLY ,PRSO>
+                             <TELL
+DER-NOM-CAP ,PRSO " schwimmt f%ur einen Moment, dann sinkt " PRONOUN-NOM ,PRSO 
+"." CR>)
+                            (T
+                             <REMOVE-CAREFULLY ,PRSO>
+                             <TELL
+DER-NOM-CAP ,PRSO " platscht ins Wasser, und gluck-gluck weg ist "
+PRONOUN-NOM ,PRSO "." CR>)>)>)
+              (<VERB? LEAP THROUGH>
+               <TELL
+"Eine Orientierung vor dem Sprung zeigt, da%s der Flu%s breit und gef%ahrlich ist, rei%sende Schnellen und halbverdeckte Felsten hat. Du entscheidest, vom Schwimmen abzusehen." CR>)>>
+
+<GLOBAL RIVER-SPEEDS
+       <LTABLE (PURE) RIVER-1 4 RIVER-2 4 RIVER-3 3 RIVER-4 2 RIVER-5 1>>
+
+<GLOBAL RIVER-NEXT
+       <LTABLE (PURE) RIVER-1 RIVER-2 RIVER-3 RIVER-4 RIVER-5>>
+
+<GLOBAL RIVER-LAUNCH
+       <LTABLE (PURE) DAM-BASE RIVER-1
+               WHITE-CLIFFS-NORTH RIVER-3
+               WHITE-CLIFFS-SOUTH RIVER-4
+               SHORE RIVER-5
+               SANDY-BEACH RIVER-4
+               RESERVOIR-SOUTH RESERVOIR
+               RESERVOIR-NORTH RESERVOIR
+               STREAM-VIEW IN-STREAM>>
+
+<ROUTINE I-RIVER ("AUX" RM)
+        <COND (<AND <NOT <EQUAL? ,HERE ,RIVER-1 ,RIVER-2 ,RIVER-3>>
+                    <NOT <EQUAL? ,HERE ,RIVER-4 ,RIVER-5>>>
+               <DISABLE <INT I-RIVER>>)
+              (<SET RM <LKP ,HERE ,RIVER-NEXT>>
+               <TELL "Die Str%omung tr%agt dich flu%sabw%arts." CR CR>
+               <GOTO .RM>
+               <ENABLE <QUEUE I-RIVER <LKP ,HERE ,RIVER-SPEEDS>>>)
+              (T
+               <JIGS-UP
+"Leider gew%ahrt das Zauberboot keinen Schutz gegen Steine und Felsbl%ocke,
+auf die man unten am Wasserfall trifft. Auch gegen diesen nicht.">)>>
+
+<ROUTINE RBOAT-FUNCTION ("OPTIONAL" (RARG <>) "AUX" TMP)
+    <COND (<EQUAL? .RARG ,M-ENTER ,M-END ,M-LOOK> <>)  
+         (<EQUAL? .RARG ,M-BEG>
+          <COND (<VERB? WALK>
+                 <COND (<EQUAL? ,PRSO ,P?LANDEN ,P?OST ,P?WEST>
+                        <RFALSE>)
+                       (<AND <EQUAL? ,HERE ,RESERVOIR>
+                             <EQUAL? ,PRSO ,P?NORD ,P?SUED>>
+                        <RFALSE>)
+                       (<AND <EQUAL? ,HERE ,IN-STREAM>
+                             <EQUAL? ,PRSO ,P?SUED>>
+                        <RFALSE>)
+                       (T
+                        <TELL
+"Lies die Anweisungen f%ur das Boot." CR>
+                        <RTRUE>)>)
+                (<VERB? LAUNCH>
+                 <COND (<OR <EQUAL? ,HERE ,RIVER-1 ,RIVER-2 ,RIVER-3>
+                            <EQUAL? ,HERE ,RIVER-4 ,RESERVOIR ,IN-STREAM>>
+                        <TELL "Du bist schon im "> 
+                        <COND (<EQUAL? ,HERE ,RESERVOIR>
+                               <TELL "Reservoir">)
+                              (<EQUAL? ,HERE ,IN-STREAM>
+                               <TELL "Strom">)
+                              (T <TELL "Flu%s">)>
+                        <TELL ", oder hast du das vergessen?" CR>)
+                       (<EQUAL? <SET TMP <GO-NEXT ,RIVER-LAUNCH>> 1>
+                        <ENABLE <QUEUE I-RIVER <LKP ,HERE ,RIVER-SPEEDS>>>
+                        <RTRUE>)
+                       (<NOT <EQUAL? .TMP 2>>
+                        <TELL 
+"Hier kannst du das Boot nicht ins Wasser lassen." CR>
+                        <RTRUE>)
+                       (T <RTRUE>)>)
+                (<OR <AND <VERB? DROP>
+                          <FSET? ,PRSO ,WEAPONBIT>>
+                     <AND <VERB? PUT>
+                          <FSET? ,PRSO ,WEAPONBIT>
+                          <EQUAL? ,PRSI ,INFLATED-BOAT>>
+                     <AND <VERB? ATTACK MUNG>
+                          <FSET? ,PRSI ,WEAPONBIT>>>
+                 <REMOVE-CAREFULLY ,INFLATED-BOAT>
+                 <MOVE ,PUNCTURED-BOAT ,HERE>
+                 <ROB ,INFLATED-BOAT ,HERE>
+                 <MOVE ,WINNER ,HERE>
+                 <SETG OHERE <>>
+                 <TELL
+"Es scheint, als ob ">
+                 <COND (<VERB? DROP PUT> <TELL DER-NOM ,PRSO>)
+                       (T <TELL DER-NOM ,PRSI>)>
+                 <TELL " dem Boot nicht bekommen ist, wie man von dem lauten hissenden Ger%ausch, das ihm entweicht, schlie%sen kann. Mit einem armseligen letzten Puff, geht die Luft aus dem Boot und du erleidest Schiffbruch." CR>
+                 <COND (<FSET? ,HERE ,NONLANDBIT>
+                        <CRLF>
+                        <COND (<==? ,HERE ,RESERVOIR ,IN-STREAM>
+                               <JIGS-UP
+"Ein weiteres armseliges Ausblasen, diesmal kommt es aus dir
+best%atigt dein Ertrinken.">)
+                              (T
+                               <JIGS-UP
+"Mit anderen Worten, gegen die t%odlichen Str%omungen des Gletsch k%ampfen. Du h%alst dich eine Weile %uber Wasser, aber dann wirst du %uber einen Wasserfall in gef%ahrliche Felsen gezogen. Auuuuu!">)>)>
+                 <RTRUE>)
+                (<VERB? LAUNCH>
+                  <TELL "Du bist nicht im Boot!" CR>)>)
+         (<VERB? BOARD>
+          <COND (<OR <IN? ,SCEPTRE ,WINNER>
+                     <IN? ,KNIFE ,WINNER>
+                     <IN? ,SWORD ,WINNER>
+                     <IN? ,RUSTY-KNIFE ,WINNER>
+                     <IN? ,AXE ,WINNER>
+                     <IN? ,STILETTO ,WINNER>>
+                 <TELL
+"Ei, ei! Etwas Scharfes scheint weggerutscht zu sein, und hat das Boot durchl%ochert. Die Luft entweicht unter Zischen, Murmeln und Fluchen aus dem Boot." CR>
+                 <REMOVE-CAREFULLY ,INFLATED-BOAT>
+                 <MOVE ,PUNCTURED-BOAT ,HERE>
+                 <THIS-IS-IT ,PUNCTURED-BOAT>
+                 T)>)
+         (<VERB? INFLATE FILL>
+          <TELL "Wenn man es weiter aufpumpt, w%urde es wahrscheinlich platzen." CR>)
+         (<VERB? DEFLATE>
+          <COND (<EQUAL? <LOC ,WINNER> ,INFLATED-BOAT>
+                 <TELL
+"Du kannst die Luft nicht aus dem Boot lassen, w%ahrend du drin sitzt." CR>)
+                (<NOT <IN? ,INFLATED-BOAT ,HERE>>
+                 <TELL
+"Das Boot mu%s an Land sein, um die Luft rauszulassen." CR>)
+                (T <TELL
+"Die Luft kommt aus dem Boot." CR>
+                 <SETG DEFLATE T>
+                 <REMOVE-CAREFULLY ,INFLATED-BOAT>
+                 <MOVE ,INFLATABLE-BOAT ,HERE>
+                 <THIS-IS-IT ,INFLATABLE-BOAT>)>)>>
+
+;<ROUTINE BREATHE ()
+        <PERFORM ,V?INFLATE ,PRSO ,LUNGS>
+        <RTRUE>>
+
+<ROUTINE IBOAT-FUNCTION ()
+        <COND (<VERB? INFLATE FILL>
+               <COND (<NOT <IN? ,INFLATABLE-BOAT ,HERE>>
+                      <TELL
+"Das Boot mu%s an Land sein, um aufgeblasen zu werden." CR>)
+                     (<EQUAL? ,PRSI ,PUMP>
+                      <TELL
+"Das Boot nimmt Luft auf und erscheint seet%uchtig." CR>
+                      <COND (<NOT <FSET? ,BOAT-LABEL ,TOUCHBIT>>
+                             <TELL
+"Ein beiges Schildchen liegt im Boot." CR>)>
+                      <SETG DEFLATE <>>
+                      <REMOVE-CAREFULLY ,INFLATABLE-BOAT>
+                      <MOVE ,INFLATED-BOAT ,HERE>
+                      <THIS-IS-IT ,INFLATED-BOAT>)
+                     (<EQUAL? ,PRSI ,LUNGS>
+                      <TELL
+"Deine Lunge schafft es nicht, das Boot aufzublasen." CR>)
+                     (T
+                      <TELL
+"Mit " EIN-DAT ,PRSI "? Du beliebst zu scherzen?!" CR>)>)>>
+
+<GLOBAL BUOY-FLAG T>
+
+<ROUTINE RIVR4-ROOM (RARG)
+        <COND (<EQUAL? .RARG ,M-END>
+               <COND (<AND <IN? ,BUOY ,WINNER> ,BUOY-FLAG>
+                      <TELL
+"Die Boje f%uhlt sich irgendwie komisch an." CR>
+                      <SETG BUOY-FLAG <>>)>)>>
+
+<GLOBAL BEACH-DIG -1>
+
+<GDECL (BEACH-DIG) FIX>
+
+<ROUTINE SAND-FUNCTION ()
+        <COND (<AND <VERB? DIG> <==? ,PRSI ,SHOVEL>>
+               <SETG BEACH-DIG <+ 1 ,BEACH-DIG>>
+               <COND (<G? ,BEACH-DIG 3>
+                      <SETG BEACH-DIG -1>
+                      <AND <IN? ,SCARAB ,HERE> <FSET ,SCARAB ,INVISIBLE>>
+                      <JIGS-UP "Das Loch bricht zusammen, du erstickst.">)
+                     (<EQUAL? ,BEACH-DIG 3>
+                      <COND (<FSET? ,SCARAB ,INVISIBLE>
+                             <TELL
+"Du siehst hier einen Skarab%aus im Sand." CR>
+                             <THIS-IS-IT ,SCARAB>
+                             <FCLEAR ,SCARAB ,INVISIBLE>)>)
+                     (T
+                      <TELL <GET ,BDIGS ,BEACH-DIG> CR>)>)>>
+
+<GLOBAL BDIGS
+       <TABLE (PURE) "Du scheinst hier ein Loch zu graben."
+              "Das Loch wird immer tiefer, aber sonst nichts."
+              "Du bist auf allen Seiten von Sand umgeben.">>
+
+
+"SUBTITLE TOITY POIPLE BOIDS A CHOIPIN' AN' A BOIPIN' ... "
+
+<ROUTINE TREE-ROOM (RARG "AUX" F)
+        <COND (<EQUAL? .RARG ,M-LOOK>
+               <TELL
+"Du bist ungef%ahr 3 Meter %uber dem Boden umgeben von gro%sen %Asten. Du kannst den n%achsten Zweig %uber dir unm%oglich erreichen." CR>
+               <COND (<AND <SET F <FIRST? ,PATH>>
+                           <NEXT? .F>>
+                      <TELL "Unter dir auf der Erde siehst du:">
+                      <PRINT-CONTENTS ,PATH>
+                      <TELL "." CR>)>)
+              (<EQUAL? .RARG ,M-BEG>
+               <COND (<AND <VERB? CLIMB-DOWN> <EQUAL? ,PRSO ,TREE ,ROOMS>>
+                      <DO-WALK ,P?RUNTER>)
+                     (<AND <VERB? CLIMB-UP CLIMB-FOO>
+                           <EQUAL? ,PRSO ,TREE>>
+                      <DO-WALK ,P?RAUF>)
+                     (<VERB? DROP>
+                      <COND (<NOT <IDROP>> <RTRUE>)
+                            (<AND <EQUAL? ,PRSO ,NEST> <IN? ,EGG ,NEST>>
+                             <TELL
+"Das Nest f%allt auf die Erde, und das Ei f%allt heraus. Es ist ernstlich besch%adigt." CR>
+                             <REMOVE-CAREFULLY ,EGG>
+                             <MOVE ,BROKEN-EGG ,PATH>)
+                            (<EQUAL? ,PRSO ,EGG>
+                             <TELL
+"Das Ei f%allt auf die Erde und springt auf. Es ist ernstlich besch%adigt.">
+                             <MOVE ,EGG ,PATH>
+                             <BAD-EGG>
+                             <CRLF>)
+                            (<NOT <EQUAL? ,PRSO ,WINNER ,TREE>>
+                             <MOVE ,PRSO ,PATH>
+                             <TELL
+DER-NOM-CAP ,PRSO " f%allt auf die Erde." CR>)
+                            (<VERB? LEAP>
+                             <JIGS-UP
+                               "Das war wohl ein wenig zu weit unten.">)>)>)
+              (<EQUAL? .RARG ,M-ENTER> <ENABLE <QUEUE I-FOREST-ROOM -1>>)>>
+
+<ROUTINE EGG-OBJECT ()
+        <COND (<AND <VERB? OPEN MUNG> <EQUAL? ,PRSO ,EGG>>
+               <COND (<FSET? ,PRSO ,OPENBIT>
+                      <TELL "Das Ei ist schon offen." CR>)
+                     (<NOT ,PRSI>
+                      <TELL
+"Du hast weder das Werkzeug noch das Geschick." CR>)
+                     (<EQUAL? ,PRSI ,HANDS>
+                      <TELL "Ich bezweifle, da%s du das tun kannst, ohne es ernstlich zu besch%adigen." CR>)
+                     (<OR <FSET? ,PRSI ,WEAPONBIT>
+                          <FSET? ,PRSI ,TOOLBIT>
+                          <VERB? MUNG>>
+                      <TELL
+"Das Ei ist jetzt offen, aber die Tollpatschigkeit deines Versuches hat seinen %asthetischen Wert stark vermindert.">
+                      <BAD-EGG>
+                      <CRLF>)
+                     (<FSET? ,PRSO ,FIGHTBIT>
+                      <TELL "Und erst die Idee, " DER-ACC ,PRSO " zu benutzen... Du %ubertriffst dich geradzu an originellen Einf%allen.">)
+                     (T
+                      <TELL 
+"Die Idee " DER-ACC ,PRSO " zu benutzen ist wirklich sehr originell." CR>
+                      <FSET ,PRSO ,FIGHTBIT>)>)
+              (<VERB? CLIMB-ON HATCH>
+               <TELL
+"Du f%uhlst ein Krachen unter deinen F%u%sen, und beim Nachsehen entdeckst du, da%s das Ei offen daliegt und schweren Schaden gelitten hat.">
+               <BAD-EGG>
+               <CRLF>)
+              (<VERB? OPEN MUNG THROW>
+               <COND (<VERB? THROW> <MOVE ,PRSO ,HERE>)>
+               <TELL
+"Es ist dir zwar gelungen, das Ei zu %offnen, aber du hast es mit deinen rauhen Methoden besch%adigt.">
+               <BAD-EGG>
+               <CRLF>)>>
+
+<ROUTINE BAD-EGG ("AUX" L)
+        <COND (<IN? ,CANARY ,EGG>
+               <TELL " " <GETP ,BROKEN-CANARY ,P?FDESC>>)
+              (T <REMOVE-CAREFULLY ,BROKEN-CANARY>)>
+        <MOVE ,BROKEN-EGG <LOC ,EGG>>
+        <REMOVE-CAREFULLY ,EGG>
+        <RTRUE>>
+
+<GLOBAL SING-SONG <>>
+
+<ROUTINE CANARY-OBJECT ()
+        <COND (<VERB? WIND>
+               <COND (<EQUAL? ,PRSO ,CANARY>
+            &