! ----------------------------------------------------------------------------
!  Advent 020823      A classic and one of the standard Inform 6 example games
!
!
!                                      Adapted to Inform 5: 17.5.94 to 24.5.94
!                 Modernised to Inform 5.5 and library 5/12 or later: 20.12.95
!                    Modernised to Inform 6 and library 6/1 or later: 11.11.96
!                     A few bugs removed and companion text rewritten: 9.12.96
!                                 Some very minor bugs indeed removed: 24.2.97
!                                                      And another two: 4.9.97
!                                                   Dutch translation: 23.8.02
! ----------------------------------------------------------------------------

! Constant TEST_VERSION;
! Constant DEBUG;
Constant Story "AVONTUUR";
Constant Headline
          "^Het Interactieve Origineel^
            Door Will Crowther (1973) en Don Woods (1977)^
            In drie stappen gereconstrueerd door:^
            Donald Ekman, David M. Baggett (1993) en Graham Nelson (1994)^
            In het Nederlands vertaald door Yuri Robbers (2002)^
            Oorspronkelijke titel: Adventure^
            [In memoriam Stephen Bishop (1820?-1857): GN]^^";

Serial "020822";
Release 8;

Constant MAX_CARRIED = 7;
Constant MAX_SCORE = 350;
Constant MAX_TREASURES = 15;
Constant AMUSING_PROVIDED;

Include "Parser";
Include "VerbLib";

Attribute nodwarf;
Attribute treasure_found;
Attribute multitude;

Global caves_closed;
Global canyon_from;
Global treasures_found;
Global deaths;
Global dark_warning;
Global feefie_count;

! ----------------------------------------------------------------------------
!   Rules for treasures, which will be scattered all over the game
! ----------------------------------------------------------------------------

Class Treasure
with depositpoints 10,
     after
     [; Take: if (location==Inside_Building)
                   score=score-self.depositpoints;
              score=score+5;
              if (noun hasnt treasure_found)
              {   give noun treasure_found; treasures_found++;
                  score=score+2;
              }
              "Meegenomen!";
        Insert: score=score-5;
              ! (in case put inside the wicker cage)
        Drop: score=score-5;
              if (location==Inside_Building)
              {   score=score+self.depositpoints;
                  "Veilig weggeborgen.";
              }
     ];

! ----------------------------------------------------------------------------
!   The outside world
! ----------------------------------------------------------------------------

Class AboveGround
 has  light nodwarf;

AboveGround At_End_Of_Road "Aan het Eind van de Weg"
 with description "Je staat aan het einde van een weg voor een klein
                   stenen gebouwtje. Om je heen is bos. Een beekje
                   stroomt uit het gebouw naar beneden door een geul.",
      w_to At_Hill_In_Road, u_to At_Hill_In_Road, e_to Inside_Building,
      d_to In_A_Valley, s_to In_A_Valley, n_to In_Forest_1,
      in_to Inside_Building,
      name "geul" "weg" "straat" "pad";

Object "bronhuis"
 with name "bron" "huis" "steen" "gebouw" "klein" "bron" "gebouwtje" "bronhuis",
      description "Het is een klein stenen gebouwtje. Het lijkt wel
           een bronhuis",
      found_in  At_End_Of_Road  At_Hill_In_Road  Inside_Building
 has  scenery neuter;

Object Stream "stroom"
 with name "stroom" "water" "beek" "rivier" "meer"
           "klein" "vallend" "plonzend" "kabbelend" "stromend" "reservoir",
      found_in At_End_Of_Road  In_A_Valley  At_Slit_In_Streambed
               In_Pit  In_Cavern_With_Waterfall
               At_Reservoir
               Inside_Building,
      before
      [; Drink:
                "Je hebt een slokje beekwater genomen. Het
                 smaakt sterk naar minderalen, maar is niet vies. Het is
                 buitengewoon koud.";
         Take: if (bottle notin player)
                   "Je hebt niets om het water in te doen.";
               <<Fill bottle>>;
         Insert: if (second == bottle) <<Fill bottle>>;
                   "Je hebt niets om het water in te doen.";
         Receive: if (noun == ming_vase)
               {   remove ming_vase; move shards to location;
                   score=score-5;
                   "De plotselinge temperatuurverandering was teveel
                    voor het delicate porselein: het is versplinterd.";
               }
               if (noun == bottle) <<Fill bottle>>;
               remove noun; if (noun ofclass Treasure) score=score-5;
               print_ret (The) noun, " spoelt mee met de stroom.";
      ],
 has  scenery male;

Object "weg"
 with name "weg" "straat" "pad" "zand",
      description "De weg is van zand, niet van gele baksteen.",
      found_in  At_End_Of_Road  At_Hill_In_Road  In_Forest_2
 has  scenery male;

Object "bos"
 with name     "bos" "boom" "bomen" "eik" "esdoorn" "groep" "den" "spar"
               "struik" "berk" "es" "zaailingen" "struikjes" "bladeren"
               "bes" "besjes" "bessenstruiken" "hardhout" "sparretjes",
      description
               "De bomen in dit bos zijn grote hardhouten eiken en
               esdoorns, met af en toe een groep dennen of sparren.
               Er is behoorlijk wat kreupelhout, grotendeels
               bestaande uit zaailingen van de berk en de es, plus
               wat verspreide struikjes van diverse soorten. Deze
               tijd van het jaar is het zicht beperkt vanwege de vele
               bladeren, maar wandelen is geen probleem, zolang je,
               waar nodig, even om de sparretjes en bessenstruiken
               heenloopt.",
      found_in At_End_Of_Road  At_Hill_In_Road  In_A_Valley
               In_Forest_1  In_Forest_2
 has  scenery multitude pluralname neuter;


AboveGround At_Hill_In_Road "Op een Heuvel op de Weg"
 with description "Je bent een heuvel opgewandeld, nog steeds in het
               bos. De weg leidt aan de andere kant weer naar
           beneden. In de verte ontwaar je een gebouwtje.",
      e_to At_End_Of_Road,
      n_to At_End_Of_Road,
      d_to At_End_Of_Road,
      s_to In_Forest_1,
      name "geul" "weg" "straat" "pad";

Object -> "heuvel"
 with description "Gewoon een doorsnee heuvel.",
      name "heuvel" "bult" "helling"
 has  scenery male;

Object -> "andere kant van de heuvel"
 with article "de",
      description "Waarom ga je niet gewoon zelf even kijken?",
      name "kant" "andere" "van" "zijde"
 has  scenery male;


AboveGround Inside_Building "In het Gebouw"
 with description "Je bent binnenin een gebouw: een bronhuis voor
            een grote waterbron.",
      cant_go "De beek stroomt naar buiten door een paar
           rioolbuizen van dertig centimeter breed. De enige uitgang
           is west.",
      before
      [; Enter: if (noun==Spring or SewerPipes)
            "De beek stroomt naar buiten door een paar rioolbuizen
          van dertig centimeter breed. Het zou verstandig zijn de
          uitgang te gebruiken.";
         Xyzzy: if (In_Debris_Room hasnt visited) rfalse;
                PlayerTo(In_Debris_Room); rtrue;
         Plugh: if (At_Y2 hasnt visited) rfalse;
                PlayerTo(At_Y2); rtrue;
      ],
      w_to At_End_Of_Road, out_to At_End_Of_Road,
      in_to "De buizen zijn te nauw.";

Object -> Spring "bron"
 with name "bron" "grote",
      description "De beek stroomt naar buiten door een paar
           rioolbuizen van dertig centimeter breed."
 has  scenery male;

Object -> SewerPipes "paar rioolbuizen van dertig centimeter breed"
 with name "buizen" "pijpen" "dertig" "cm" "centimeter" "diameter"
           "riool" "rioolbuizen",
      description "Te nauw. De enige uitgang is in het westen."
 has  scenery male;

Object -> set_of_keys "sleutelbos"
 with description "Gewoon een doodnormale sleutelbos.",
      initial "Er ligt hier een sleutelbos op de grond.",
      before
      [;  Count: "Een stuk of twaalf sleutels.";
      ],
      name "sleutels" "sleutel" "sleutelbos" "stel" "bos" "set",
      has male;


Object -> tasty_food "smakelijk voedsel"
 with description "Dat ziet er lekker uit!", article "wat",
      initial "Hier ligt wat smakelijk voedsel.",
      name "voedsel" "rantsoen" "rantsoenen" "buik"
           "lekker" "smakelijk" "lekker" "fijn",
      after
      [; Eat: "Heerlijk!"; ],
 has  edible neuter;


Object -> brass_lantern "koperen lantaarn"
 with name "lamp" "koplamp" "hoofdlamp" "lantaarn" "licht" "blinkend"
           "brons" "koper" "blinkende" "bronzen" "koperen",
      when_off "Op de grond ligt een blinkend gepoetste koperen lantaarn.",
      when_on  "Je lamp is hier, helder brandend.",

      power_remaining 330,
      replace_batteries
      [;  if (fresh_batteries in player or location)
          {   remove fresh_batteries; give fresh_batteries general;
              move old_batteries to location;
              self.power_remaining = 2500;
              "Ik ben maar even zo vrij de batterijen te vervangen.";
          }
      ],

      daemon
      [ t; if (self hasnt on) { StopDaemon(self); rtrue; }
        t = --(self.power_remaining);

        if (t==0) give self ~on ~light;

        if (self in player || self in location)
        {   if (t==0)
            {
                print "De batterijen van je lantaarn zijn leeg.";
                if (fresh_batteries notin player && location hasnt light)
                {   deadflag=3;
                    " Je kunt geen grotten onderzoeken zonder
                    lantaarn, dus laten we er maar mee ophouden
                    voor vandaag.";
                }
                else self.replace_batteries();
                new_line; rtrue;
            }
            if (t==30)
            {   print "Je lamp begint zwakker te branden.";
                if (fresh_batteries has general)
                    " Je hebt ook geen nieuwe batterijen meer. Je
                    kunt je maar beter klaarmaken om naar huis te
                    gaan, nu het nog kan.";
                if (fresh_batteries in VendingMachine
                    && Dead_End_14 has visited)
                    " Je kunt je maar beter klaarmaken om naar huis
                    te gaan nu het nog kan, tenzij je nog nieuwe
                    batterijen kunt vinden. Als ik het me goed
                    herinner staat er een automaat in het
                    doolhof. Zorg dan wel dat je wat muntgeld bij je
                    hebt.";
                if (fresh_batteries notin
                    VendingMachine or player or location)
                     " Ik zou maar gauw teruggaan voor die batterijen
                    als ik jou was.";
                new_line; rtrue;
            }
        }
      ],
      before
      [; Examine: print "Een blinkend gepoetste koperen lamp";
               if (self hasnt on)
                   ". Hij brandt momenteel niet.";
               if (self.power_remaining < 30)
                   ", flauwtjes brandend.";
               ", helder brandend.";
         Burn: <<SwitchOn self>>;
         Rub:  "Het opwrijven van de elektrische lamp opwrijven geeft
               je niet bijzonder veel voldoening. In ieder geval gebeurt
               er niets spannends.";
          SwitchOn: if (self.power_remaining <= 0)
               "Helaas lijkt het erop dat de batterijen leeg zijn.";
         Receive:
               if (noun == old_batteries)
                   "Die batterijen zijn leeg; daar heb je niets meer aan.";
               if (noun == fresh_batteries)
               {   self.replace_batteries(); rtrue; }
               "Het enige wat je met enige kans op succes in de lamp
                kunt stoppen zijn nieuwe batterijen.";
      ],
      after
      [; SwitchOn: give self light; StartDaemon(self);
         SwitchOff: give self ~light;
      ],
 has  switchable male;


Object -> bottle "kleine fles"
 with name "fles" "kruik" "klein" "kleine",
      initial "Er ligt hier een kleine fles.",
      before
      [; LetGo:
            if (noun in bottle)
                "Dat heb je al in je bezit (in de fles).";
        Receive:
            if (noun == stream or Oil) <<Fill self>>;
            else "De fles kan alleen vloeistoffen bevatten.";
        Fill:
            if (child(bottle) ~= nothing)
              "De fles is al vol.";
            if (stream in location || Spring in location)
            {   move water_in_the_bottle to bottle;
                "De fles is nu gevuld met water.";
            }
            if (Oil in location)
            {   move oil_in_the_bottle to bottle;
                "De fles is nu gevuld met olie.";
            }
            "Er is hier niets waarmee je de fles kunt vullen.";
        Empty: if (child(bottle) == nothing) "De fles is al leeg!";
            remove child(bottle);
            "Je fles is nu leeg en de grond is nat.";
      ],
 has  container open male;

Object water_in_the_bottle "water"
 with name "gebotteld" "water" "h2o", article "wat",
      before
      [; Drink:  remove water_in_the_bottle; <<Drink Stream>>;
      ],
      description "Ziet eruit als doodgewoon water, als je het mij
           vraagt.",
 has neuter;

Object oil_in_the_bottle "olie"
 with name "oil" "gebotteld" "smeermiddel" "vet", article "wat",
      before
      [; Drink:  <<Drink Oil>>;
      ],
      description "Ziet eruit als doodnormale olie, volgens mij.",
 has neuter;


AboveGround In_Forest_1 "In het Bos"
 with description "Je bent in een redelijk open bos, met een vallei aan
           een kant.",
      e_to In_A_Valley,
      d_to In_A_Valley,
      n_to In_Forest_1,
      w_to In_Forest_1,
      s_to In_Forest_1,
      initial [; if (random(2)==1) PlayerTo(In_Forest_2,1); ];

AboveGround In_Forest_2 "In het Bos"
 with description "Je bent in een redelijk open bos, vlakbij een
           vallei en een weg.",
      n_to At_End_Of_Road,
      e_to In_A_Valley,
      w_to In_A_Valley,
      d_to In_A_Valley,
      s_to In_Forest_1;


AboveGround In_A_Valley "In een Vallei"
 with description
               "Je bent in een vallei in het bos, en naast je stroomt
           een beekje klaterend door z'n rotsachtige bedding.",
      n_to At_End_Of_Road,
      e_to In_Forest_1,
      w_to In_Forest_1,
      u_to In_Forest_1,
      s_to At_Slit_In_Streambed,
      d_to At_Slit_In_Streambed, name "vallei";

Object -> "bedding"
 with name "bed" "bedding" "rots" "klein" "rotsachtig" "rotsachtige"
           "kaal" "droog"
 has  scenery neuter;


AboveGround At_Slit_In_Streambed "Bij een Gleuf in de Bedding"
 with description "Bij je voeten dondert al het water van de beek
           naar beneden, een vijf centimeter brede gleuf in. Verder
           stroomafwaarts bestaat de bedding slechts uit kale rotsen.",
      n_to In_A_Valley,
      e_to In_Forest_1,
      w_to In_Forest_1,
      s_to Outside_Grate,
      d_to "Je past niet door een vijf centimeter brede gleuf!",
      in_to "Je past niet door een vijf centimeter brede gleuf!";

Object -> "vijf centimeter brede gleuf"
 with name "gleuf" "opening" "vijf" "cm" "centimeter" "5",
      description
         "Gewoon een vijf centimeter brede gleuf waar de beek
           doorheen stroomt.",
      before
      [;  Enter: "Je past niet door een vijf centimeter brede gleuf!";
      ],
 has  scenery;


AboveGround Outside_Grate "Buiten het Rooster"
 with description
               "Je bevindt je in een 6 meter diepe kuil bedekt met
               niets anders dan kiezels en zand. In het zand zie je een
               stevig stalen rooster, gevat in beton. Een droge
               rivierbedding leidt de kuil in.",
      e_to In_Forest_1,
      w_to In_Forest_1,
      s_to In_Forest_1,
      n_to At_Slit_In_Streambed,
      d_to
      [; if (Grate hasnt locked && Grate hasnt open)
         {   print "(eerst het rooster openend)^"; give Grate open; }
         return Grate;
      ];

Object -> "6 meter diepe kuil"
 with description "Je staat erin.",
      name "kuil" "depressie" "zand" "kiezels" "zes" "m" "meter"
           "kaal" "6",
 has  scenery male;

Object -> Grate "stalen rooster"
 with name "rooster" "slot" "doorgang" "gril" "traliewerk" "hekwerk"
           "hek" "tralie" "tralies" "metaal" "sterk" "stevig" "staal",
      description "Het ziet eruit zoals een rooster gevat in beton er
           meestal uitziet.",
      with_key set_of_keys,
      door_dir
      [; if (location==Below_The_Grate) return u_to; return d_to;
      ],
      door_to
      [; if (location==Below_The_Grate) return Outside_Grate;
         return Below_The_Grate;
      ],
      describe
      [; if (self has open) "^Het rooster staat open.";
         if (self hasnt locked) "^Het rooster zit dicht, maar is niet
                                 op slot.";
         rtrue;
      ],
      found_in  Below_The_Grate  Outside_Grate
 has  static door openable lockable locked neuter;

! ----------------------------------------------------------------------------
!   Facilis descensus Averno...
! ----------------------------------------------------------------------------

Object Below_The_Grate "Onder het Rooster"
 with description
           "Je bevindt je in een kamertje onder een rooster van
           zo'n 90 bij 90 centimeter dat naar de oppervlakte leidt.
           Via een lage gang vol keien kun je naar het westen
           kruipen, dieper de aarde in.",
      w_to In_Cobble_Crawl,
      u_to Grate
 has  light;


Object "keien"
 with description "Het zijn gewoon normale keien.",
      name "kei" "keien" "rots" "rotsen" "stenen" "steen" "kiezel" "kiezels",
      found_in  In_Cobble_Crawl  In_Debris_Room  Below_The_Grate
 has  scenery multitude pluralname male;

Object In_Cobble_Crawl "In de Kruipgang met Keien"
 with description
           "Je kruipt over de keien door een lage gang. Er is een
           flauw licht aan het oostelijke uiteinde van de gang.",
      e_to Below_The_Grate,
      w_to In_Debris_Room
 has  light;

Object -> wicker_cage "tenen kooitje"
 with description "Het is een klein tenen kooitje.",
      initial "Iemand heeft hier een klein tenen kooitje achtergelaten.",
      name "kooi" "kooitje" "klein" "kleine" "tenen" "rieten" "rotan",
      after
      [; Open: if (little_bird notin self) rfalse;
               print "(het kleine vogeltje vrijlatend)^";
               <<Release little_bird>>;
      ],
 has  container open openable transparent neuter;


Object In_Debris_Room "In de Puinkamer"
 with description
           "Je bent in een kamer gevuld met allerlei puin dat vanaf
           de oppervlakte hierheen gespoeld is. Een lage maar brede
           gang vol keien raakt hier verstopt met modder en puin,
           maar een moeilijk begaanbaar ravijn leidt omhoog en naar
           het westen.^^
           Een boodschap op de muur zegt: ~Magisch woord XYZZY~.",
      e_to In_Cobble_Crawl,
      u_to In_Awkward_Sloping_E_W_Canyon,
      w_to In_Awkward_Sloping_E_W_Canyon,
      before
      [; Xyzzy: PlayerTo(Inside_Building); rtrue;
      ],
 has  nodwarf;

Object -> "puin"
 with description "Yuck.",
      name "puin" "rommel" "modder"
 has  scenery neuter;

Object -> "boodschap"
 with description "De boodschap zegt ~Magisch woord XYZZY~.",
      name "boodschap" "tekst"
 has  scenery;

Object -> black_rod "zwarte staf met een roestige ster aan een uiteinde"
 with description "Het is een negentig centimeter lange staf met een
           roestige ster aan een uiteinde.",
      initial "Er ligt een zwarte staf van een centimeter of negentig
           lang met een roestige ster aan een uiteinde niet ver bij
           je voeten vandaan.",
      name "staf" "ster" "zwart" "roestige" "ster" "negentig"
           "centimeter" "90" "cm" "ijzer" "ijzeren" "roestig",
      before
      [; Wave:
          if (location==West_Side_Of_Fissure or On_East_Bank_Of_Fissure)
          {   if (caves_closed) "Vreemd. Er gebeurt niets.";
              if (CrystalBridge notin nothing)
              {   remove CrystalBridge; give CrystalBridge absent;
                  West_Side_Of_Fissure.e_to = 0;
                  On_East_Bank_Of_Fissure.w_to = 0;
                  "De kristallen brug is verdwenen!";
              }
              else
              {   move CrystalBridge to location; give CrystalBridge ~absent;
                  West_Side_Of_Fissure.e_to = CrystalBridge;
                  On_East_Bank_Of_Fissure.w_to = CrystalBridge;
                  "Een kristallen brug overspant de breuk nu.";
              }
          }
          "Er gebeurt niets.";
      ];


Object In_Awkward_Sloping_E_W_Canyon "Hellend Oost/West Ravijn"
 with description
              "Je klautert door een moeilijk begaanbaar Oost/West
           lopend ravijn.",
      d_to In_Debris_Room,
      e_to In_Debris_Room,
      u_to In_Bird_Chamber,
      w_to In_Bird_Chamber
 has  nodwarf;

! ----------------------------------------------------------------------------
!   The little bird in its natural habitat
! ----------------------------------------------------------------------------

Object In_Bird_Chamber "Oranje Rivier Kamer"
 with description
               "Je bevindt je in een schitterende kamer van negen
           meter hoog. De muren zijn bevroren rivieren van oranje
           steen. Via een gevaarlijk ravijn in het oosten en een
           goed uitziende doorgang in het westen kun je deze kamer
           weer verlaten.",
      e_to In_Awkward_Sloping_E_W_Canyon,
      w_to At_Top_Of_Small_Pit
 has  nodwarf;

Object -> little_bird "klein vogeltje"
 with name "vrolijk" "vrolijke" "bedroefd" "bedroefde" "klein"
           "kleine" "vogel" "vogeltje",
      initial "Een vrolijk klein vogeltje zit hier te zingen.",
      before
      [; Examine:
             if (self in wicker_cage)
                 "Het kleine vogeltje ziet er bedroefd uit in het kooitje.";
            "Het vogeltje zit hier vrolijk te zingen.";
         Insert: if (second==wicker_cage) <<Catch self>>;
             else
                 "Stop dat arme vogeltje toch niet in ", (the) second, "!";
         Drop, Remove:
             if (self in wicker_cage)
             {   print "(Het vogeltje vliegt het kooitje uit zodra je
                     het open doet.)^^";
                 <<Release self>>;
             }
         Take, Catch:
           if (self in wicker_cage)
               "Je hebt het kleine vogeltje al. Als je hem uit het
               kooitje haalt, zal hij waarschijnlijk van je
               wegvliegen.";
           if (wicker_cage notin player)
               "Je kunt het vogeltje wel vangen, maar niet met je meedragen.";
           if (black_rod in player)
            "Het vogeltje was niet bang toen je binnenkwam, maar als
               je nadert wordt hij bang, en je kunt hem niet
               vangen.";
           move self to wicker_cage; give wicker_cage ~open;
           "Je vangt het vogeltje in de tenen kooi.";

         Release:
           if (self notin wicker_cage) "Het vogeltje zit helemaal
               niet in de kooi!";
           give wicker_cage open;
           move self to location;

           if (Snake in location)
           {   remove Snake;
               "Het kleine vogeltje valt de groene slang aan, en in
               een verbazingwekkende strijd op leven en dood maakt de
               slang dat hij wegkomt.";
           }

           if (Dragon in location)
           {   remove self;
               "Het kleine vogeltje valt de groene draak aan, en in
               een verbazingwekkende strijd op leven en dood verkoolt
               het in de vurige adem van de draak. De as dwarrelt
               langzaam weg op de tocht.";
           }

           "Het kleine vogeltje vliegt de vrijheid tegemoet.";
      ],

      life
      [; Give: "Hij heeft geen honger (hij smacht slechts naar de
               fjorden). Bovendien, ik verwacht eerlijk gezegd dat
               hij veel liever vogelzaad zou hebben.";
        Order, Ask, Answer: "Tjiep! Sjirp!";
        Attack:
            if (self in wicker_cage)
               "Och, laat dat arme kleine vogeltje toch gewoon met rust.";
            remove self;
           "Het kleine vogeltje is nu dood. Het lijkje verdwijnt.";
      ],
 has  animate neuter;


Object At_Top_Of_Small_Pit "Bovenaan een Kleine Schacht"
 with description
               "Aan je voeten zie je een kleine schacht flarden witte
           mist uitademen. Een westwaartse gang eindigt hier, en
           slechts een kleine scheur leidt nog verder in die
           richting.^^
           Ruwe stenen traptreden leiden naar beneden, de schacht
           in.",
      e_to In_Bird_Chamber,
      w_to "De scheur is veel te nauw voor jou om je er doorheen te
           wurmen.",
      d_to
      [; if (large_gold_nugget in player)
         {   deadflag=1;
             "Je ligt op de bodem van de schacht met een gebroken nek.";
         }
         return In_Hall_Of_Mists;
      ],
      before
      [; Enter: if (noun==PitCrack)
             "De scheur is veel te nauw voor jou om je er doorheen te
          wurmen.";
      ],
 has  nodwarf;


Object -> "kleine schacht"
 with description "De schacht ademt flarden witte mist.",
      name "schacht" "klein" "kleine"
 has  scenery male;

Object -> PitCrack "scheur"
 with description
          "De scheur is heel nauw -- veel te nauw voor jou om er
           doorheen te kunnen kruipen.",
      name "scheur" "klein" "kleine"
 has  scenery male;

Object "mist"
 with description
               "Mist is een witte damp, meestal water, die van tijd
           tot tijd waargenomen kan worden in grotten. In principe
           kun je zoiets overal tegenkomen, maar vaak is het een
           teken dat er een diepe schacht naar beneden leidt, naar
           water.",
      name "mist" "damp" "flard" "flarden" "wit" "witte",
      found_in  At_Top_Of_Small_Pit In_Hall_Of_Mists
                On_East_Bank_Of_Fissure  At_Window_On_Pit_1
                At_West_End_Of_Hall_Of_Mists In_Misty_Cavern
                In_Mirror_Canyon  At_Reservoir At_Window_On_Pit_2
                On_Sw_Side_Of_Chasm
 has  scenery male;

! ----------------------------------------------------------------------------
!   The caves open up: The Hall of Mists
! ----------------------------------------------------------------------------

Object In_Hall_Of_Mists "In de Zaal van Mist"
 with initial
      [;  if (self has general) rfalse;
          score=score+25; give self general;
      ],
      description
               "Je staat aan @'e@'en uiteinde van een enorme zaal
           die zich verder dan je kunt zien naar het westen
           uitstrekt. Aan beide kanten zie je openingen opzij.
           Vlakbij leidt een stenen trap naar beneden. De zaal is
           gevuld met flarden witte mist, die langzaam heen en weer
           drijven, bijna zoals levende wezens dat zouden doen. Een
           koude wind blaast omhoog vanuit het trapgat. Er is een
           doorgang bovenin het gewelf achter je.^^ Ruwe stenen
           traptreden leiden omhoog naar het gewelf.",
      s_to In_Nugget_Of_Gold_Room,
      w_to On_East_Bank_Of_Fissure,
      d_to In_Hall_Of_Mt_King,
      n_to In_Hall_Of_Mt_King,
      u_to
      [;  if (large_gold_nugget in player) "Je kunt niet naar het
               gewelf toeklimmen.";
          return At_Top_Of_Small_Pit;
      ];

Object -> "brede stenen trap"
 with description "De trap leid naar beneden.",
      name "trap" "trede" "treden" "tredes" "traptrede" "traptreden"
           "traptredes" "breed" "brede" "steen" "stenen"
 has  scenery male;

Object -> "ruwe stenen traptreden"
 with description "De ruwe stenen traptreden leiden omhoog naar het gewelf.",
      name "trap" "trede" "treden" "tredes" "traptrede" "traptreden"
           "traptredes" "ruw" "ruwe" "steen" "stenen"
 has  scenery multitude pluralname;

Object -> "gewelf"
 with name "gewelf",
      before
      [; Examine: if (large_gold_nugget in player)
               "Ik betwijfel of je wel omhoog kunt klimmen met wat
          je bij je hebt.";
                "Het lijkt erop dat je er wel naar toe moet kunnen klimmen.";
        Climb: MovePlayer(u_obj); rtrue;
      ],
 has  scenery neuter;


Object In_Nugget_Of_Gold_Room "Lage Kamer"
 with description
               "Dit is een lage kamer met een ruw in de muur
           gebeitelde boodschap:^^
           ~Je krijgt het toch de trap niet op~.",
      n_to In_Hall_Of_Mists;

Object -> "boodschap"
 with description "De boodschap zegt: ~Je krijgt het toch de trap
           niet op~.",
      name "boodschap" "bericht" "ruw" "gebeiteld"
 has  scenery male;

Treasure -> large_gold_nugget "grote goudklomp"
 with description "Het is een enorme schitterende goudklomp!",
      initial "Er ligt hier een enorme goudklomp te schitteren!",
      name "goud" "klomp" "goudklomp" "groot" "grote" "enorm"
           "enorme" "zwaar" "zware";


Class  FissureRoom
 with before
      [;
         Jump: if (CrystalBridge hasnt absent)
               "Met alle respect, maar zou je niet liever de brug
             nemen dan eroverheen te springen?";
               deadflag=1;
               "Je hebt het niet gehaald.";
      ],
      d_to "De kloof is te angstaanjagend!";


FissureRoom On_East_Bank_Of_Fissure "Aan de Oostkant van de Kloof"
 with description
               "Je staat aan de oostkant van een kloof die dwars door
           de zaal heensnijdt. De mist is hier behoorlijk dicht, en
           de kloof is te breed om eroverheen te springen.",
      e_to In_Hall_Of_Mists, w_to "De kloof is te breed.";

FissureRoom West_Side_Of_Fissure "Westzijde van de Kloof"
 with description
               "Je staat aan de westelijke zijde van de kloof in de
           zaal van mist.",
      w_to At_West_End_Of_Hall_Of_Mists,
      e_to "De kloof is te breed.",
      n_to At_West_End_Of_Hall_Of_Mists,
      before
      [;   Go: if (location==West_Side_Of_Fissure && noun==n_obj)
               print "Je bent door een zeer lage gang gekropen,
                      parallel aan en ten noorden van de zaal
                      van mist.^";
      ];

Treasure -> "diamanten"
 with article "een aantal",
      description "Ze zien eruit alsof ze van de beste kwaliteit zijn!",
      initial "Er ligt hier een aantal diamanten!",
      name "diamant" "diamanten" "aantal" "beste" "van" "best" "kwaliteit"
 has  multitude pluralname male;


Object CrystalBridge "kristallen brug"
 with initial "Een kristallen brug overbrugt nu de kloof.",
      description "Hij overbrugt de kloof, zodat je eroverheen kunt.",
      door_dir
      [;  if (location==West_Side_Of_Fissure) return e_to; return w_to;
      ],
      door_to
      [;  if (location==West_Side_Of_Fissure) return On_East_Bank_Of_Fissure;
          return West_Side_Of_Fissure;
      ],
      name "kristal" "kristallen" "brug" "overbrugging" "kristalbrug",
      found_in  On_East_Bank_Of_Fissure  West_Side_Of_Fissure
 has  static door open absent male;

Object "kloof"
 with name "breed" "brede" "kloof",
      description "Die kloof ziet er veel te breed uit om eroverheen
           te springen.",
      found_in  On_East_Bank_Of_Fissure  West_Side_Of_Fissure
 has  scenery male;


Object At_West_End_Of_Hall_Of_Mists "Aan het Westelijke Uiteinde van de
           Zaal van Mist"
 with description
               "Je bent aan het westelijke uiteinde van de zaal van
           mist aangeland. A lage, brede kruipgang gaat verder naar
           het westen, en een andere leidt naar het
           noorden. Zuidwaarts zie je een kleine doorgang, zo'n
           @'e@'en meter tachtig boven de grond.",
      s_to Alike_Maze_1,
      u_to Alike_Maze_1,
      e_to West_Side_Of_Fissure,
      w_to At_East_End_Of_Long_Hall,
      n_to West_Side_Of_Fissure,
      before
      [; Go: if (noun==n_obj)
               print "Je bent door een zeer lage gang gekropen,
                      parallel aan en ten noorden van de zaal
                      van mist.^";
      ];

! ----------------------------------------------------------------------------
!   Long Hall to the west of the Hall of Mists
! ----------------------------------------------------------------------------

Object At_East_End_Of_Long_Hall "Aan de Oostkant van een Lange Zaal"
 with description
               "Je bent aan de oostkant van een enorm lange zaal, zo
           te zien zonder zijkamers. Naar het oosten helt een lage,
           brede kruipgang omhoog, en naar het noorden helt een rond,
           zestig centimeter breed, gat naar beneden.",
      e_to At_West_End_Of_Hall_Of_Mists,
      u_to At_West_End_Of_Hall_Of_Mists,
      w_to At_West_End_Of_Long_Hall,
      n_to Crossover,
      d_to Crossover;

Object At_West_End_Of_Long_Hall "Aan de Westkant van een Lange Zaal"
 with description
               "Je bevindt je aan het westelijke einde van een zeer
           lange zaal zonder bijzondere kenmerken. De zaal mondt uit
           in een smalle noord/zuid-gang.",
      e_to At_East_End_Of_Long_Hall,
      s_to Different_Maze_1,
      n_to Crossover;

Object Crossover "N/Z en O/W Kruispunt"
 with description
               "Je bevindt je op een kruispunt van een hoge
           noord/zuid- en een lage oost/west-doorgang.",
      w_to At_East_End_Of_Long_Hall,
      n_to Dead_End_7,
      e_to In_West_Side_Chamber,
      s_to At_West_End_Of_Long_Hall;

Object -> "kruispunt"
 with description "Je weet op dit punt netzoveel als ik.",
      name "kruispunt" "kruising" "kruis"
 has  scenery neuter;

! ----------------------------------------------------------------------------
!   Many Dead Ends will be needed for the maze below, so define a class:
! ----------------------------------------------------------------------------

Class  DeadEndRoom
 with short_name "Doodlopend punt",
      description "Je bent op een doodlopend punt beland.",
      cant_go "Je zult terug moeten in de richting waar je vandaan kwam.";

DeadEndRoom Dead_End_7
 with s_to Crossover,
      out_to Crossover;

! ----------------------------------------------------------------------------
!   The Hall of the Mountain King and side chambers
! ----------------------------------------------------------------------------

Object In_Hall_Of_Mt_King "Zaal van de Bergkoning"
 with description
               "Je staat in de zaal van de bergkoning, en in alle
           richtingen leiden gangen.",
      cant_go "Hmm... misschien toch niet in alle richtingen.",
      u_to In_Hall_Of_Mists,
      e_to In_Hall_Of_Mists,
      n_to Low_N_S_Passage,
      s_to In_South_Side_Chamber,
      w_to In_West_Side_Chamber,
      sw_to In_Secret_E_W_Canyon,
      before
      [; Go: if (Snake in self
                 && (noun == n_obj or s_obj or w_obj
                     || (noun == sw_obj && random(100) <= 35)))
                 "Je kunt niet langs de slang komen.";
      ];

Object -> Snake "slang"
 with description "Met hem zou ik me vooral niet inlaten, als ik jou was.",
      initial "Een enorme groene slang blokkeert je weg!",
      name "slang" "cobra" "python" "enorm" "enorme" "fel" "groen"
           "agressief" "giftig" "giftige" "groot" "grote"
           "moordenaar" "felle" "groene" "agressieve",
      life
      [; Order, Ask, Answer: "Siss!";
        ThrowAt: if (noun==axe) <<Attack self>>;
                 <<Give noun self>>;
        Give: if (noun==little_bird)
              {   remove little_bird;
                  "De slang heeft je arme vogeltje verorberd.";
              }
              "Er is hier niets dat hij lust (behalve jijzelf misschien).";
        Attack: "De slang aanvallen lukt niet, en is erg
          gevaarlijk.";
      ],
      before
      [; Take: deadflag=1; "In plaats daarvan pakt hij jou. Glrp!";
      ],
 has  animate female;


Object Low_N_S_Passage "Lage N/Z-doorgang"
 with description
               "Je staat in een lage noord/zuid-gang, vlakbij een gat
           in de grond. Het gat leidt neerwaarts naar een
           oost/west-doorgang.",
      s_to In_Hall_Of_Mt_King,
      d_to In_Dirty_Passage,
      n_to At_Y2;

Treasure -> "staven zilver"
 with description "Ze zijn waarschijnlijk een fortuin waard!",
      initial "Er liggen hier enige staven zilver!",
      article "enige",
      name "zilver" "zilveren" "staaf" "staven" "zilverstaaf"
           "zilverstaven" "fortuin",
 has multitude pluralname male;


Object In_South_Side_Chamber "In de Kamer aan de Zuidkant"
 with description
              "Je bent in de kamer aan de zuidkant.",
      n_to In_Hall_Of_Mt_King;

Treasure -> "kostbare juwelen"
 with description "De een is nog fraaier dan de ander!",
      initial "Er liggen hier enkele kostbare juwelen!",
      article "enkele",
      name "juweel" "juwelen" "fraai" "fraaie" "kostbaar" "kostbare",
 has multitude pluralname male;


Object In_West_Side_Chamber "In de Kamer aan de Westkant"
 with description
               "Je bevindt je in de kamer aan de westkant van de zaal
           van de bergkoning. Een gang leidt hiervandaan verder naar
           het westen en omhoog.",
      w_to Crossover,
      u_to Crossover,
      e_to In_Hall_Of_Mt_King;

Treasure -> rare_coins "zeldzame munten"
 with description "De droom van elke numismatist!",
      initial "Er ligt hier een grote hoeveelheid munten!", article "veel",
      name "munt" "munten" "zeldzaam" "zeldzame",
 has  multitude pluralname male;

! ----------------------------------------------------------------------------
!   The Y2 Rock Room and environs, slightly below
! ----------------------------------------------------------------------------

Object At_Y2 "Bij ~Y2~"
 with description
               "Je bevindt je in een grote kamer, met een opening
           naar het zuiden, een opening naar het westen, en een
           soort muur van rotspuin in het oosten. Er staat in
           enorme letters ~Y2~ op een rots middenin de kamer.",
      after
      [; Look: if (random(100)<=25) print "^Een holle stem zegt: ~Plugh.~^";
      ],
      before
      [;
         Plugh: PlayerTo(Inside_Building); rtrue;
         Plover: if (In_Plover_Room hasnt visited) rfalse;
                 if (egg_sized_emerald in player)
                 {   move egg_sized_emerald to In_Plover_Room;
                     score = score - 5;
                 }
                 PlayerTo(In_Plover_Room); rtrue;
      ],
      s_to Low_N_S_Passage,
      e_to Jumble_Of_Rock,
      w_to At_Window_On_Pit_1;

Object -> "~Y2~ rots"
 with description "Er staat in enorme letters ~Y2~ op de rots geschilderd.",
      name "rots" "y2" "letters"
 has  scenery supporter male;

Object Jumble_Of_Rock "Warboel van Rotsblokken"
 with description "Je staat in een puinhoop van rotsblokken, met
           overal scheuren.",
      d_to At_Y2,
      u_to In_Hall_Of_Mists;

Object At_Window_On_Pit_1 "Bij een Venster dat Uitziet op een Schacht"
 with description
               "Je staat bij een laag venster dat uitzicht biedt op
           een gigantische schacht. De vloer is juist zichtbaar, zo'n
           vijftien meter dieper. Flarden witte mist bedekken de
           bodem van de schacht, en worden naar rechts toe
           dikker. Sporen in het stof bij het venster getuigen van
           het feit dat hier onlangs nog iemand geweest is. Recht
           tegenover je aan de andere kant van de schacht is een
           soortgelijk venster dat uitzicht biedt op een verlichte
           kamer. Je ontwaart daar een schimmig figuur dat naar je
           terugstaart.",
      before
      [; WaveHands: "De schimmige figuur zwaait terug!";
      ],
      cant_go "De enige mogelijkheid is terug naar het oosten, naar Y2.",
      e_to At_Y2;

Class PitScenery
 with found_in  At_Window_On_Pit_1 At_Window_On_Pit_2,
 has  scenery;

PitScenery "venster"
 with description
             "Ziet eruit als een gewoon venster.",
      name "venster" "raam" "ruit" "laag",
 has  openable neuter;

PitScenery "gigantische schacht"
 with description
             "Deze schacht is zo diep dat je de bodem maar netaan kunt
           zien, en de bovenkant is veel te ver weg.",
      name "schacht" "diep" "diepe" "groot" "grote" "breed" "brede"
           "hoog" "hoge" "gigantisch" "gigantische",
 has male;

PitScenery "sporen in het stof"
 with description "Je bent hier duidelijk niet alleen.",
      name "spoor" "sporen" "stof"
 has  multitude pluralname neuter;

PitScenery "schimmige figuur"
 with description
             "Het lijkt wel of die schimmige figuur je aandacht
           probeert te trekken.",
       name "figuur" "schim"  "schimmig" "schimmige" "schaduw"
           "persoon" "individu" "mysterieus",
has    male;

Object In_Dirty_Passage "Vieze Gang"
 with description
               "Je bent in een vieze, half ingestorte gang. Naar het
           oosten is een kruipruimte. Naar het westen loopt een grote
           gang. Boven je zit een gat naar een andere gang.",
      e_to On_Brink_Of_Pit,
      u_to Low_N_S_Passage,
      w_to In_Dusty_Rock_Room;

Object On_Brink_Of_Pit "Rand van de Schacht"
 with description
               "Je zit op de rand van een smalle, schone schacht waar
           je vrij gemakkelijk in kunt klimmen. Een kruipruimte leidt
           naar het westen.",
      w_to In_Dirty_Passage,
      d_to In_Pit,
      in_to In_Pit;

Object -> "kleine schacht"
 with description "Het ziet ernaar uit dat je daar met enige moeite
           wel in af kunt dalen.",
      name "put" "schacht" "klein" "schoon" "beklimbaar" "beklimbare",
      before
      [; Climb, Enter: MovePlayer(d_obj); rtrue; ],
 has  scenery male;


Object In_Pit "In een Schacht"
 with description
               "Je staat op de bodem van een kleine schacht met een
           stroompje, dat binnenkomt en verdwijnt door kleine
           sleuven.",
      u_to On_Brink_Of_Pit,
      d_to "Je past niet door de kleine sleuven!"
 has  nodwarf;


Object -> "kleine sleuven"
 with description "De sleuven vormen een complex patroon in de rots.",
      name "sleuf" "sleuven" "klein" "kleine" "complex" "patroon",
 has  scenery multitude pluralname male;

Object In_Dusty_Rock_Room "In de Stoffige Rotskamer"
 with description
               "Je bent in een grote kamer vol stoffige rotsen. Er
           zit een groot gat in de vloer. Overal zijn scheuren en
           barsten, en een doorgang leidt oostwaarts.",
      e_to In_Dirty_Passage,
      d_to At_Complex_Junction;

Object -> "stoffige rotsen"
 with description "Dat zijn gewoon rotsen. (Stoffige, wel te verstaan.)",
      name "rots" "rotsen" "kei" "keien" "steen" "stenen"
      "stoffig" "stoffige" "vies" "vieze",
      before
      [;   Push, Pull, LookUnder:
              "Daar moet je je eerst een weg doorheen banen met dynamiet.";
      ],
 has  scenery multitude pluralname male;

! ----------------------------------------------------------------------------
!   A maze of twisty little passages, all alike...
! ----------------------------------------------------------------------------

Class  MazeRoom
 with short_name "Doolhof",
      description
               "Je bent in een doolhof van kronkelende kleine
           paadjes, allemaal hetzelfde.",
      out_to "Makkelijker gezegd dan gedaan.";


MazeRoom Alike_Maze_1
 with
      u_to At_West_End_Of_Hall_Of_Mists,
      n_to Alike_Maze_1,
      e_to Alike_Maze_2,
      s_to Alike_Maze_4,
      w_to Alike_Maze_11;

MazeRoom Alike_Maze_2
 with
      w_to Alike_Maze_1,
      s_to Alike_Maze_3,
      e_to Alike_Maze_4;

MazeRoom Alike_Maze_3
 with
      e_to Alike_Maze_2,
      d_to Dead_End_3,
      s_to Alike_Maze_6,
      n_to Dead_End_13;

MazeRoom Alike_Maze_4
 with
      w_to Alike_Maze_1,
      n_to Alike_Maze_2,
      e_to Dead_End_1,
      s_to Dead_End_2,
      u_to Alike_Maze_14,
      d_to Alike_Maze_14;

MazeRoom Alike_Maze_5
 with
      e_to Alike_Maze_6,
      w_to Alike_Maze_7;

MazeRoom Alike_Maze_6
 with
      e_to Alike_Maze_3,
      w_to Alike_Maze_5,
      d_to Alike_Maze_7,
      s_to Alike_Maze_8;

DeadEndRoom Dead_End_1
 with
      w_to Alike_Maze_4,
      out_to Alike_Maze_4;

DeadEndRoom Dead_End_2
 with
      w_to Alike_Maze_4,
      out_to Alike_Maze_4;

DeadEndRoom Dead_End_3
 with
      u_to Alike_Maze_3,
      out_to Alike_Maze_3;

MazeRoom Alike_Maze_7
 with
      w_to Alike_Maze_5,
      u_to Alike_Maze_6,
      e_to Alike_Maze_8,
      s_to Alike_Maze_9;

MazeRoom Alike_Maze_8
 with
      w_to Alike_Maze_6,
      e_to Alike_Maze_7,
      s_to Alike_Maze_8,
      u_to Alike_Maze_9,
      n_to Alike_Maze_10,
      d_to Dead_End_12;

MazeRoom Alike_Maze_9
 with
      w_to Alike_Maze_7,
      n_to Alike_Maze_8,
      s_to Dead_End_4;

DeadEndRoom Dead_End_4
 with
      w_to Alike_Maze_9,
      out_to Alike_Maze_9;

MazeRoom Alike_Maze_10
 with
      w_to Alike_Maze_8,
      n_to Alike_Maze_10,
      d_to Dead_End_5,
      e_to At_Brink_Of_Pit;

DeadEndRoom Dead_End_5
 with
      u_to Alike_Maze_10,
      out_to Alike_Maze_10;

Object At_Brink_Of_Pit "Op het Randje van een Schacht"
 with description
               "Je staat op het randje van een negen meter diepe
           schacht met een massieve oranje zuil langs @'e@'en
           muur. Je kunt hier naar beneden klimmen, maar dan zul je
           niet meer terug omhoog kunnen komen. Het doolhof gaat
           verder op dit niveau.",
      d_to In_Bird_Chamber,
      w_to Alike_Maze_10,
      s_to Dead_End_6,
      n_to Alike_Maze_12,
      e_to Alike_Maze_13;

Object -> "massieve oranje zuil"
 with description "Ziet eruit alsof je er wel langs omlaag kunt klimmen.",
      name "zuil" "massief" "oranje" "groot" "enorm" "massieve"
           "grote" "enorme",
      before [; Climb: MovePlayer(d_obj); rtrue; ],
 has  scenery male;

Object -> "schacht"
 with description "Je zult naar beneden moeten klimmen om nog meer te
           kunnen zien...",
      name "schacht" "put" "negen" "9" "meter"  "m" "9m",
      before [; Climb: MovePlayer(d_obj); rtrue; ],
 has  scenery male;

DeadEndRoom Dead_End_6
 with e_to At_Brink_Of_Pit,
      out_to At_Brink_Of_Pit;

! ----------------------------------------------------------------------------
!   A line of three vital junctions, east to west
! ----------------------------------------------------------------------------

Object At_Complex_Junction "Een Ingewikkeld Knooppunt"
 with description
               "Je hebt een ingewikkeld knooppunt bereikt. Een lage
           handen-en-voeten doorgang vanuit het noorden komt samen
           met een hogere kruipgang vanuit het oosten om een
           beloopbare gang naar het westen te vormen. Er is ook nog
           een grote kamer hierboven. De lucht is hier vochtig.",
      u_to In_Dusty_Rock_Room,
      w_to In_Bedquilt,
      n_to In_Shell_Room,
      e_to In_Anteroom;

Object In_Bedquilt "Bedquilt"
 with description
               "Je bent in Bedquilt, een lange oost/west-gang met
           overal gaten. Om hier op goed geluk verder op onderzoek uit te
           gaan, kun je noord, zuid, omhoog of omlaag kiezen.",
      e_to At_Complex_Junction,
      w_to In_Swiss_Cheese_Room,
      s_to In_Slab_Room,
      u_to In_Dusty_Rock_Room,
      n_to At_Junction_Of_Three,
      d_to In_Anteroom,
      before
      [ destiny;
        Go: if (noun==s_obj or d_obj && random(100)<=80) destiny=1;
            if (noun==u_obj && random(100)<=80) destiny=1;
            if (noun==u_obj && random(100)<=50)
                destiny=In_Secret_N_S_Canyon_1;
            if (noun==n_obj && random(100)<=60) destiny=1;
            if (noun==n_obj && random(100)<=75)
                destiny=In_Large_Low_Room;
            if (destiny==1)
                "Je bent door allerlei tunnels en gaten gekropen, en
                uiteindelijk weer in de hoofdgang terechtgekomen.";
            if (destiny==0) rfalse;
            PlayerTo(destiny); rtrue;
      ];


Object In_Swiss_Cheese_Room "In de Zwitserse Kaaskamer"
 with description
               "Je bent in een ruimte waarvan de muren je sterk aan
           Zwitserse gatenkaas doen denken. Direct zichtbare
           uitgangen heb je in het westen, oosten, noordoosten, en
           noordwesten. Een deel van de kamer wordt in beslag genomen
           door een groot blok keihard gesteente.",
      w_to At_East_End_Of_Twopit_Room,
      s_to In_Tall_E_W_Canyon,
      ne_to In_Bedquilt,
      nw_to In_Oriental_Room,
      e_to In_Soft_Room,
      before
      [; Go: if ((noun==s_obj && random(100) <= 80)
                 || (noun==nw_obj && random(100) <= 50))
                "Je bent door allerlei tunnels en gaten gekropen, en
                uiteindelijk weer in de hoofdgang terechtgekomen.";
      ];


Object -> "blok keihard gesteente"
 with description "Het is niets meer of minder dan een groot steenblok.",
      name "blok" "keihard" "gesteente" "groot",
      before [; LookUnder, Push, Pull, Take:
                 "Je maakt een grapje natuurlijk."; ],
 has  scenery neuter;

! ----------------------------------------------------------------------------
!   The Twopit Room area
! ----------------------------------------------------------------------------
!   Possible heights for the plant:
! ----------------------------------------------------------------------------
Constant TINY_P = 0;
Constant TALL_P = 1;
Constant HUGE_P = 2;

Object At_West_End_Of_Twopit_Room "Westeinde van de Tweeschachtenkamer"
 with description
               "Je bevindt je aan het westeinde van de
           tweeschachtenkamer. Er zit een groot gat in de muur boven
           de schacht aan deze kant van de kamer.",
      e_to At_East_End_Of_Twopit_Room,
      w_to In_Slab_Room,
      d_to In_West_Pit,
      u_to "Het gat zit te hoog voor je om erbij te kunnen.",
      before
      [; Enter: if (noun==HoleAbovePit_1)
             "Het gat zit te hoog voor je om erbij te kunnen.";
      ];

Object PlantStickingUp "bonenstaak"
 with found_in  At_West_End_Of_Twopit_Room  At_East_End_Of_Twopit_Room,
      name "plant" "bonenstaak" "staak"
           "boon" "reus" "reuze" "klein" "kleine" "murmelend"
           "drie" "meter" "zestig" "3.60" "3.60m" "hoog" "hoge"
           "groot" "grote" "bulderend" "enorm" "enorme",
      describe
      [;  if (Plant.height == TALL_P)
               "De top van een drie meter zestig lange bonenstaak
                steekt omhoog uit de westelijke schacht.";
               "Er groeit een enorme bonenstaak uit de westelijke
                schacht omhoog, tot aan het gat.";
      ],
      before
      [; Examine: RunRoutines(self,describe); rtrue;
         Climb: if (Plant.height==HUGE_P) <<Climb Plant>>;
      ],
 has  absent static male;

Object HoleAbovePit_1 "gat boven de schacht"
 with description
              "Het gat zit in de muur boven de schacht aan deze kant
           van de kamer.",
      name "gat" "groot" "grote" "boven" "schacht",
      found_in In_West_Pit At_West_End_Of_Twopit_Room
 has  scenery neuter;


Object In_West_Pit "In de Westelijke Schacht"
 with description
               "je staat op de bodem van de westelijke schacht in de
           tweeschachtenkamer.  Er zit een groot gat in de muur, zo'n
           zeven-en-een-halve meter boven je.",
      before
      [; Climb:
          if (noun==Plant) rfalse;
          if (Plant.height == TINY_P)
           "er is hier niets om in te klimmen. Gebruik ~omhoog~ of
              ~naar buiten~ om de schacht te verlaten.";
      ],
      u_to At_West_End_Of_Twopit_Room
 has  nodwarf;

Object -> Plant "plant"
 with height TINY_P,
      name "plant" "bonenstaak" "staak"
           "boon" "reus" "reuze" "klein" "kleine" "murmelend"
           "drie" "meter" "zestig" "3.60" "3.60m" "hoog" "hoge"
           "groot" "grote" "bulderend" "enorm" "enorme",
      describe
      [; switch(self.height)
         {   TINY_P:
                 "Er staat een klein plantje in de schacht dat
                  mompelt ~Water, water, ...~";
             TALL_P:
                 "Er strekt zich een drie meter zestig lange
                  bonenstaak omhoog uit de schacht die dondert
                  ~Water!! Water!!~";
             HUGE_P:
                 "Er staat hier een gigantische bonenstaak, die zich
                  uitstrekt tot aan het gat in de muur.";
         }
      ],
      before
      [;
        Climb: switch(self.height)
               {   TINY_P: "Het is maar een klein plantje!";
                   TALL_P:
                       print "Je bent de plant ingeklommen, zo de
                              schacht uit.^";
                       PlayerTo(At_West_End_Of_Twopit_Room); rtrue;
                   HUGE_P:
                       print "Je klautert de plant in en klimt snel
                              door het gat.^";
                       PlayerTo(In_Narrow_Corridor); rtrue;
               }
        Take:  "De plant heeft uitzonderlijk diepe wortels en laat
                zich niet zomaar lostrekken.";
        Water: if (bottle notin player)
                   "Je hebt niets om de plant water mee te geven.";

               switch(child(bottle))
               {   nothing: "De fles is leeg.";
                   oil_in_the_bottle:
                   remove oil_in_the_bottle;
                   "De plant schudt verontwaardigd de olie van z'n
                   bladeren en vraagt: ~Water?~";
               }
               remove water_in_the_bottle;

               switch((self.height)++)
               {   TINY_P:
                       print "De plant doormaakt in slechts enkele
                       seconden een enorme groeispurt.^^";
                       give PlantStickingUp ~absent;
                   TALL_P:
                       print "De plant groeit explosief, de ruimte in
                       de schacht vrijwel geheel opvullend.^^";
                   HUGE_P:
                       print "Je hebt de plant teveel water gegeven!
                       Hij schrompelt ineen. Hij is, hij is...^^";
                       give PlantStickingUp absent; remove PlantStickingUp;
                       self.height = TINY_P;
               }
               <<Examine self>>;
        Oil:   <<Water self>>;
        Examine: self.describe(); rtrue;
      ];


Object At_East_End_Of_Twopit_Room "Oosteinde van de Tweeschachtenkamer"
 with description
               "Je bevindt je aan het oostelijke einde van de
           tweeschachtenkamer. De vloer is hier bezaaid met dunne
           rotsplaten, waardoor het gemakkelijk wordt de schacht af
           te dalen. Er is een pad dat om de twee schachten heenloopt
           en de uitgangen aan de oost- en westkant van de kamer
           verbindt. Er zijn overal gaten, maar het enige gat dat
           groot genoeg is om er doorheen te passen zit in de muur
           direct boven de westelijke schacht waar je er niet bij
           kunt.",
      e_to In_Swiss_Cheese_Room,
      w_to At_West_End_Of_Twopit_Room,
      d_to In_East_Pit;


Object -> "dunne rotsplaten"
 with
      description "Ze vormen haast een natuurlijke trap de schacht in.",
      name "platen" "plaat" "rotsen" "trap" "treden" "dun" "rots"
           "rotsen" "rotsplaat" "rotsplaten",
      before
      [; LookUnder, Push, Pull, Take:
          "Je maakt een grapje natuurlijk. Je zou ze op moeten blazen.";
      ],
 has  scenery multitude pluralname male;


Object In_East_Pit "In de Oostelijke Schacht"
 with description
               "Je staat op de bodem van de oostelijke schacht in de
           tweeschachtenkamer. Er licht een plasje olie in een hoek
           van de schacht.",
      u_to At_East_End_Of_Twopit_Room
 has  nodwarf;

Object -> Oil "plasje olie"
 with name "plas" "plasje" "poel" "poeltje" "olie" "klein",
      description "Ziet eruit als gewone olie.",
      before
      [; Drink:  "Absoluut niet.";
         Take:   if (bottle notin player)
                     "Je hebt niets om de olie in te vervoeren.";
                 <<Fill bottle>>;
         Insert: if (second == bottle) <<Fill bottle>>;
                     "Je hebt niets om de olie in te vervoeren.";
      ],
 has  scenery neuter;

Object "gat boven de schacht"
 with description
              "Het gat zit in de muur boven je.",
      name "gat" "groot" "grote" "boven" "schacht",
      found_in In_East_Pit At_East_End_Of_Twopit_Room
 has  scenery neuter;


Object In_Slab_Room "Plaatkamer"
 with description
               "Je bevindt je in een grote maar vrij lage ronde kamer
           waarvan de vloer bestaat uit een immense plaat die ooit
           van het plafond is komen vallen (vandaar de naam
           plaatkamer). In het oosten en westen waren ooit grote
           gangen, maar die zijn nu geheel opgevuld met
           rotsblokken. Kleine, lage gangen leiden naar het noorden
           en zuiden, en die in het zuiden buigt al snel naar het
           westen om de rotsblokken heen.",
      s_to At_West_End_Of_Twopit_Room,
      u_to In_Secret_N_S_Canyon_0,
      n_to In_Bedquilt;

Object -> "plaat"
 with description "Die plaat vormt hier nu de vloer.",
      name "plaat" "immens" "rotsplaat" "immense",
      before [; LookUnder, Push, Pull, Take:
                 "Je maakt zeker een grapje."; ],
 has  scenery male;

Object -> "rotsblokken"
 with description "het zijn doodgewone rotsblokken.",
      name "blok" "blokken" "rots" "rotsen" "stenen" "steen"
           "rotsblok" "rotsblokken",
 has  scenery multitude pluralname neuter;

! ----------------------------------------------------------------------------
!   A small network of Canyons, mainly Secret
! ----------------------------------------------------------------------------

Object In_Secret_N_S_Canyon_0 "Geheim N/Z Ravijn"
 with description
              "Je bent in een geheim noord/zuid-ravijn, boven een
           grote kamer.",
      d_to In_Slab_Room,
      s_to In_Secret_Canyon,
      n_to In_Mirror_Canyon,
      before
      [; Go: if (noun==s_obj) canyon_from=self;
      ];

Object In_Secret_N_S_Canyon_1 "Geheim N/Z Ravijn"
 with description
              "Je bevindt je in een geheim noord/zuid-ravijn, boven
           een redelijk grote doorgang.",
      n_to At_Junction_Of_Three,
      d_to In_Bedquilt,
      s_to Atop_Stalactite;

Object At_Junction_Of_Three
      "Kruispunt van drie geheime ravijnen."
 with description
               "Je bevindt je in een geheim ravijn bij een kruispint
           van drie ravijnen, die respectievelijk naar het noorden,
           zuiden en zuidoosten leiden. Het noordelijke ravijn is
           ongeveer even groot als de andere twee samen.",
      se_to In_Bedquilt,
      s_to In_Secret_N_S_Canyon_1,
      n_to At_Window_On_Pit_2;


Object In_Large_Low_Room "Grote Lage Kamer"
 with description
               "Je kruipt een grote, lage kamer in. Je kunt hier in
           drie richtingen vandaan kruipen: noord, zuidoost en
           zuidwest.",
      sw_to In_Sloping_Corridor,
      se_to In_Oriental_Room,
      n_to Dead_End_Crawl;

Object Dead_End_Crawl "Doodlopende Kruipgang"
 with description
              "Dit is een doodlopende gang. Of moet ik zeggen een
           doodkruipende gang?",
      s_to In_Large_Low_Room,
      out_to In_Large_Low_Room;


Object In_Secret_E_W_Canyon "Geheim O/W Ravijn Boven een Nauw Ravijn"
 with description
               "je bevindt je in een geheim ravijn dat hier van het
           oosten naar het westen loopt. Hij kruist over een heel
           nauw ravijn heen, zo'n vier-en-een-halve meter lager. Als
           je hier naar beneden gaat, is de kans groot dat je niet
           meer terug omhoog kunt.",
      e_to In_Hall_Of_Mt_King,
      w_to In_Secret_Canyon,
      before
      [; Go: if (noun==w_obj) canyon_from=self;
      ],
      d_to In_N_S_Canyon;

Object In_N_S_Canyon "N/Z Ravijn"
 with description
              "Je bevindt je op een breed punt in een overigens
           smal noord/zuid-ravijn.",
      s_to Canyon_Dead_End,
      n_to In_Tall_E_W_Canyon;

Object Canyon_Dead_End "Doodlopend Ravijn"
 with description
              "Het ravijn wordt hier te nauw om verder zuidwaarts te gaan.",
      n_to In_N_S_Canyon;

Object In_Tall_E_W_Canyon "In een Hoog O/W Ravijn"
 with description
               "Je bevindt je in een hoog oost/west-ravijn. Een lage,
           nauwe kruipruimte gaat bijna een meter naar het noorden en
           lijkt zich dan te verbreden.",
      e_to In_N_S_Canyon,
      w_to Dead_End_8,
      n_to In_Swiss_Cheese_Room;

Object Atop_Stalactite "Bovenop een Stalactiet"
 with description
               "Een grote stalactiet hangt hier van het plafond naar
           beneden, bijna tot op de vloer. Je kunt erlangs naar
           beneden klimmen, en het laatste stukje springen, maar je
           zou zeker niet meer bij de stalactiet kunnen om er weer
           langs naar boven te klimmen.",
      n_to In_Secret_N_S_Canyon_1,
      d_to
      [; if (random(100) <= 40) return Alike_Maze_6;
         if (random(100) <= 50) return Alike_Maze_9;
         return Alike_Maze_4;
      ],
      before
      [; Jump, Climb: <<Go d_obj>>;
      ];


Object -> "stalactiet"
 with description
               "Je kunt er waarschijnlijk wel langs naar beneden
           klimmen, maar terug omhoog kun je wel vergeten.",
      name "stalactiet" "stalagmiet" "stalagtiet" "groot" "grote",
      before
      [; LookUnder, Push, Take: "Doe toch niet zo raar.";
      ],
 has  scenery male;

! ----------------------------------------------------------------------------
!   Here be dragons
! ----------------------------------------------------------------------------

Object In_Secret_Canyon "Geheim Ravijn"
 with description
               "Je bevindt je in een geheim ravijn met uitgangen in
           het noorden en oosten.",
      e_to
      [; if (canyon_from == In_Secret_E_W_Canyon) return canyon_from;
         if (Dragon in location)
             "De draak ziet er nogal gemeen uit. Je kunt beter niet
             proberen langs haar te glippen.";
         return In_Secret_E_W_Canyon;
      ],
      n_to
      [; if (canyon_from == In_Secret_N_S_Canyon_0) return canyon_from;
         if (Dragon in location)
             "De draak ziet er nogal gemeen uit. Je kunt beter niet
             proberen langs haar te glippen.";
         return In_Secret_N_S_Canyon_0;
      ],
      out_to
      [; return canyon_from;
      ],
      before
      [; if (action==##Yes && Dragon has general)
         {   remove Dragon; move DragonCorpse to location;
             give Dragon ~general;
          "Gefeliciteerd! Je hebt zojuist met je blote handen een
          draak verslagen! (ongelofelijk, is het niet?)";
         }
         if (action==##No && Dragon has general)
         {   give Dragon ~general;
             "Ik dacht al van niet.";
         }
         give Dragon ~general;
      ];

Object -> Dragon "draak"
 with description "Daar zou ik me maar verre van houden, als ik jou was.",
      name "draak" "monster" "beest" "hagedis"
           "groot" "groen" "fel" "schubbig" "enorm" "agressief"
           "grote" "groene" "felle" "schubbige" "enorme" "agressieve",
      initial "Een enorme, agressieve, groene draak blokkeert de weg!",
      life
      [; Attack:  give Dragon general; "Met wat? Je blote handen?";
         Give:    "De draak is onvermurwbaar.";
         ThrowAt: if (noun~=axe)
                      "Met je blote handen zou het waarschijnlijk
                       nog beter gaan dan daarmee!";
                  move axe to location;
                  "De bijl stuitert zonder ook maar enige schade te
                   doen van de schubben van het beest weg.";
      ],
 has  animate female;

Treasure -> "Perzisch tapijt"
 with name "tapijt" "perzisch" "kleed" "mooi" "mooiste" "draak",
      depositpoints 14,
      before
      [; Take: if (Dragon in location)
               "Je zult er eerst voor moeten zorgen dat die draak weggaat!";
      ],
      describe
      [; if (Dragon in location)
            "De draak ligt languit op het Perzische tapijt!";
         "Het Perzische tapijt ligt hier netjes op de vloer.";
      ],
 has neuter;

Object DragonCorpse "lijk van de draak"
 with initial
               "Het lijk van een enorme groene draak ligt hier, een
           beetje aan de kant",
      name "draak" "kijk" "dood" "groen" "draak" "lichaam",
      before
      [; Attack: "Je hebt al genoeg schade gedaan!";
      ],
 has  static female;

! ----------------------------------------------------------------------------
!   And more of the Alike Maze
! ----------------------------------------------------------------------------

DeadEndRoom Dead_End_8
 with description "Het ravijn eindigt in een enorme massa rotsblokken
           -- doodlopend stuk.",
      s_to In_Tall_E_W_Canyon,
      out_to In_Tall_E_W_Canyon;

MazeRoom Alike_Maze_11
 with
      n_to Alike_Maze_1,
      w_to Alike_Maze_11,
      s_to Alike_Maze_11,
      e_to Dead_End_9,
      ne_to Dead_End_10;

DeadEndRoom Dead_End_9
 with w_to Alike_Maze_11,
      out_to Alike_Maze_11;

DeadEndRoom Dead_End_10
 with
      s_to Alike_Maze_3,
      out_to Alike_Maze_3;

MazeRoom Alike_Maze_12
 with
      s_to At_Brink_Of_Pit,
      e_to Alike_Maze_13,
      w_to Dead_End_11;

MazeRoom Alike_Maze_13
 with
      n_to At_Brink_Of_Pit,
      w_to Alike_Maze_12,
      nw_to Dead_End_13;

DeadEndRoom Dead_End_11
 with
      e_to Alike_Maze_12,
      out_to Alike_Maze_12;

DeadEndRoom Dead_End_12
 with
      u_to Alike_Maze_8,
      out_to Alike_Maze_8;

MazeRoom Alike_Maze_14
 with
      u_to Alike_Maze_4,
      d_to Alike_Maze_4;

DeadEndRoom Dead_End_13
 with se_to Alike_Maze_13,
      out_to Alike_Maze_13,
      description "Dit is het doodlopende stuk waar de piraat woont.",
      initial
      [;
         StopDaemon(Pirate);
         if (treasure_chest in self && treasure_chest hasnt moved)
             "Je hebt de schatkist van de piraat gevonden!";
      ],
 has  nodwarf;

Treasure -> treasure_chest "schatkist"
 with depositpoints 12,
      description "Dit is de schatkist van de piraat, gevuld met
           onvoorstelbare rijkdommen!",
      initial "De schatkist van de piraat staat hier!",
      name "kist" "koffer" "schat" "rijkdommen" "piraat" "rijkdom"
           "schatkist";

! ----------------------------------------------------------------------------
!   Above the beanstalk: the Giant Room and the Waterfall
! ----------------------------------------------------------------------------

Object In_Narrow_Corridor "In een Nauwe Gang"
 with description
               "Je bevindt je in een lange, nauwe gang die zich tot
           buiten je gezichtsveld uitstrekt naar het westen. Aan de
           oostkant is een gat waardoorheen je een overvloed aan
           bladeren ontwaart.",
      d_to In_West_Pit,
      w_to In_Giant_Room,
      e_to In_West_Pit,
      before
      [; Jump: deadflag=1; "Je valt en breekt je nek!";
      ];

Object -> "bladeren"
 with description
              "Zo te zien zitten de bladeren vast aan de bonenstaak
           waar je ingeklommen bent om hier te komen.", article "een hoop",
      name "blad" "bladeren" "plant" "boom" "staak" "bonenstaak"
           "overvloed" "blaadjes",
      before
      [;  Count: "69.105.";  ! (I thank Rene Schnoor for counting them)
      ],
 has  scenery;


Object At_Steep_Incline "Steile Helling boven Grote Kamer"
 with description
               "Je bevindt je op de top van een steile helling boven
           een grote kamer. Je kunt hier naar beneden klimmen, maar
           je zou niet meer in staat zijn terug hierheen omhoog te
           klimmen. Een gang leidt terug naar het noorden.",
      n_to In_Cavern_With_Waterfall,
      d_to In_Large_Low_Room;

Object In_Giant_Room "Reuzekamer"
 with description
               "Je bevindt je in de reuzekamer. Het plafond hier is
           te hoog om door je lamp beschenen te worden. Spelonken
           leiden oost, noord en zuid. Op de westmuur staat een
           inscriptie gekrabbeld: ~Fee fie foe foo~ [sic].",
      s_to In_Narrow_Corridor,
      e_to At_Recent_Cave_In,
      n_to In_Immense_N_S_Passage;

Object -> "gekrabbelde inscriptie"
 with description "Er staat: ~Fee fie foe foo [sic].~",
      name "inscriptie" "boodschap" "krabbels" "gekrabbeld"
           "gekrabbelde" "bericht",
 has  scenery male;

Treasure -> golden_eggs "nest met gouden eieren"
 with depositpoints 14,
      description "Het nest is gevuld met prachtige gouden eieren!",
      initial "Er ligt hier een nest, vol gouden eieren!",
      name "eieren" "ei" "nest" "gouden" "goud" "prachtig" "prachtige",
 has  multitude pluralname neuter;


Object At_Recent_Cave_In "Recente Instorting"
 with description
           "deze gang is geblokkeerd door een recente instorting.",
      s_to In_Giant_Room;


Object In_Immense_N_S_Passage "Immense N/Z Passage"
with   description "Je staat aan een uiteinde van een immense
           noord/zuid-passage.",
      s_to In_Giant_Room,
      n_to
      [; if (RustyDoor has locked) <<Open RustyDoor>>;
         if (RustyDoor hasnt open)
         { give RustyDoor open; print "(eerst de deur open wrikkend)^"; }
         return RustyDoor;
      ];

Object -> RustyDoor "roestige deur"
 with description "Het is gewoon een grote ijzeren deur.",
      name "deur" "scharnier" "scharnieren" "massief" "roestig"
           "roestige" "ijzer" "ijzeren",
      when_closed "De doorgang naar het noorden wordt geblokkeerd
           door een massieve, roestige, ijzeren deur.",
      when_open   "De doorgang naar het noorden voert langs een
           massieve, roestige, ijzeren deur.",
      door_to In_Cavern_With_Waterfall,
      door_dir n_to,
      before
      [; Open:  if (RustyDoor has locked)
                   "De scharnieren zijn vreselijk verroest en de deur
                    wil niet open.";
         Close: if (RustyDoor has open)
                   "Met alle moeite die het gekost heeft om die deur
                    open te krijgen, lijkt het me beter hem niet meer
                    dicht te doen.";
                   "Geen probleem -- hij is al dicht.";
         Oil:   if (bottle in player && oil_in_the_bottle in bottle)
                {   remove oil_in_the_bottle;
                    give RustyDoor ~locked openable;
                    "De olie heeft de scharnieren weer een klein
                     beetje soepeler gaat, zodat de deur nu bewogen
                     kan worden, alhoewel het je nog steeds wel
                     moeite zal kosten.";
                }
                else
                    "Je hebt niets om mee te oli@:en.";
         Water: if (bottle in player && water_in_the_bottle in bottle)
                {   remove water_in_the_bottle; give RustyDoor locked ~open;
                    "De scharnieren zijn nu flink doorgeroest en
                     laten zich met geen mogelijkheid meer
                     bewegen.";
                }
                else
                    "Je hebt niets om mee te bewateren.";
      ],
      after
      [; Open: "Steunend en kreunend zwaait de deur langzaam open,
                een regen van roestdeeltjes verspreidend.";
      ],
 has  static door locked;



Object In_Cavern_With_Waterfall "In een Spelonk met een Waterval"
 with description
               "Je wandelt een schitterende spelonk binnen met een
           ruisende stroom, die zich als een spetterende waterval
           naar beneden stort een razende draaikolk in, die door een
           gat de grond in verdwijnt. Gangen leiden naar het zuiden
           en westen.",
      s_to In_Immense_N_S_Passage,
      w_to At_Steep_Incline;

Object -> "waterval"
 with description "Daar zou ik me liever niet in een regenton vanaf
           laten vallen!",
      name "waterval" "draaikolk" "spetterend" "spetterende"
           "kolkend" "kolkende" "draaiend" "draaiende" "razend"
           "razende",
 has  scenery male;

Treasure -> trident "drietand ingelegd met juwelen"
 with description "De drietand is overdekt met fabelachtig mooie juwelen!",
      initial "Er ligt hier een met juwelen ingelegde drietand!",
      name "drietand" "juwelen" "ingelegd" "ingelegde" "fabelachtig"
           "fabelachtige" "mooi" "mooie",
      depositpoints 14
 has male;

! ----------------------------------------------------------------------------
!   The caves around Bedquilt
! ----------------------------------------------------------------------------

Object In_Soft_Room "In de Zachte Kamer"
 with description
               "Je bent in de zachte kamer. De wanden zijn bedekt met
           zware gordijnen, en op de vloer ligt een dik, hoogpolig
           tapijt. Het plafond is helemaal begroeid met zacht mos.",
      w_to In_Swiss_Cheese_Room;

Object -> "tapijt"
 with description "Het tapijt is gemaakt van een soort pluche.",
      name "tapijt" "kleed" "pluche" "zwaar" "dik" "zacht"
           "hoogpolig" "zware" "dikke" "zachte" "hoogpolige",
 has  scenery neuter;

Object -> "gordijnen"
 with description "Zo te horen absorberen ze ieder geluid.",
      name "gordijn" "gordijnen" "zwaar" "zware" "dik" "dikke",
      before
      [; Take: "Ga nou niet meteen de hele kamer overhoop halen!";
         LookUnder, Search:
           "Je vindt niets spannends achter de gordijnen.";
      ],
has    scenery multitude pluralname neuter;

Object -> "mos"
 with description "Ziet eruit als typisch, alledaags mos.",
      name "mos" "typisch" "alledaags" "zacht",
      before
      [;  Take: "Het verpulvert helemaal in je handen.";
      ],
 has  scenery edible neuter;

Object -> velvet_pillow "fluwelen kussentje"
 with description "Het is slechts een klein fluwelen kussentje.",
      initial "Een klein fluwelen kussentje ligt op de vloer.",
      name "kussen" "kussentje" "fluweel" "fluwelen" "klein",
has    neuter;


Object In_Oriental_Room "Orientaalse Kamer"
 with description
               "Dit is de Orientaalse kamer. Antieke oosterse
           grotschilderingen bedekken de muren. Een zacht glooiende
           gang leidt omhoog naar het noorden, een andere gang leidt
           naar het zuidoosten, en een kruipgang waar je nog net op
           handen en knie#:en doorheen kunt kruipen leidt naar het
           westen.",
      w_to In_Large_Low_Room,
      se_to In_Swiss_Cheese_Room,
      u_to In_Misty_Cavern,
      n_to In_Misty_Cavern;

Object -> "antieke oosterse schilderingen"
 with description "Zo te zien zijn het afbeeldingen van mensen en dieren.",
      name "schilderijen" "schilderingen" "tekeningen" "kunst"
           "grottekeningen" "grot" "antiek" "oosters" "orientaals"
           "antieke" "oosterse" "orientaalse" "afbeelding"
           "afbeeldingen" "mensen" "dieren",
 has  scenery multitude pluralname neuter;

Treasure -> ming_vase "ming vaas"
 with description "Dat is een kwetsbare, kostbare, ming vaas!",
      name "vaas" "ming" "kwetsbaar" "kwetsbare" "kostbaar" "kostbare",
      depositpoints 14,
      after
      [; Drop: if (velvet_pillow in location)
               {   print "(zachtjes op het fluwelen kussen terecht komend)^";
                   rfalse;
               }
               remove ming_vase; move shards to location;
               "De ming vaas valt op de grond en barst met een zacht
                knappend geluid in scherven.";
      ],
      before
      [; Attack: remove ming_vase; move shards to location;
               "Je hebt de vaas opgepakt en heel zachtjes en subtiel
          op de grond kapot gesmeten.";
         Receive: "De vaas is te fragiel om iets te kunnen bevatten.";
      ];


Object shards "wat waardeloze scherven porselein"
 with initial "De vloer is bezaaid met waardeloze scherven porselein.",
      description "Ze lijken de overblijfselen te zijn van wat eens
           een prachtige vaas geweest moet zijn. Ik vermoed dat een
           of andere kluns hem uit z'n handen heeft laten vallen.",
      name "porselein" "scherven" "overblijfselen" "vaas"
           "waardeloos" "waardeloze" "scherf" "aardewerk",
 has  multitude pluralname male;


Object In_Misty_Cavern "Mistige Spelonk"
 with description
               "Je volgt een breed pad rond de buitenste rand van een
           grote spelonk. Ver onder je, door een dichte witte mist
           heen, bereikt je een kabbelend geluid. De mist rijst door
           een breuk in het plafond verder omhoog. Paden leiden naar
           het zuiden en westen.",
      s_to In_Oriental_Room,
      w_to In_Alcove;

Object -> "breuk"
 with description "Je kunt niet echt dichtbij genoeg komen voor een
           nauwkeurig onderzoek.",
      name "breuk" "plafond"
 has  scenery male;

! ----------------------------------------------------------------------------
!   Plovers and pyramids
! ----------------------------------------------------------------------------

Object In_Alcove "Alcoof"
 with description
               "Je staat in een alkoof. Een klein paadje naar het
           noordwesten lijkt al snel breder te worden. Een
           bijzonder krappe tunnel leidt oostwaarts. Het ziet eruit of
           je je er met veel moeite misschien net doorheen zou kunnen
           persen. Aan de andere kant zie je een luguber licht.",
      nw_to In_Misty_Cavern,
      e_to
      [ j; j=children(player);
        if (j==0 || (j==1 && egg_sized_emerald in player))
            return In_Plover_Room;
         "Iets dat je bij je hebt past niet door de tunnel met je
          mee. Je kunt het beste je inventaris eens goed bekijken, en
          iets achterlaten.";
      ];


Object In_Plover_Room "Kievitskamer"
 with description
               "Je bevindt je in een klein vertrek waarin een luguber
           groen licht schijnt. Een bijzonder nauwe tunnel leidt naar
           het westen. Een donkere gang naar het noordoosten.",
      ne_to In_Dark_Room,
      w_to
      [ j; j=children(player);
        if (j==0 || (j==1 && egg_sized_emerald in player))
            return In_Alcove;
         "Iets dat je bij je hebt past niet door de tunnel met je
          mee. Je kunt het beste je inventaris eens goed bekijken, en
          iets achterlaten.";
      ],
      before
      [; Plover: if (egg_sized_emerald in player)
                 {   move egg_sized_emerald to In_Plover_Room;
                     score = score - 5;
                 }
                 PlayerTo(At_Y2); rtrue;
         Go: if (noun==out_obj) <<Go w_obj>>;
      ],
 has  light;

Treasure -> egg_sized_emerald "smaragd zo groot als een kievitsei"
 with depositpoints 14, article "een",
      description "Trouwens, kievitseieren zijn behoorlijk groot.",
      initial "Er ligt hier een smaragd zo groot als een kievitsei!",
      name "smaragd" "groot" "grote" "ei" "kievit" "kievitsei";


Object In_Dark_Room "De donkere kamer"
 with description
              "Je bevindt je in de donkere kamer. Een gang die naar
           het zuiden leidt is de enige uitgang.",
      s_to In_Plover_Room
 has  nodwarf;

Object -> "stenen tablet"
 with initial
               "Op een massieve stenen tablet dat in de muur is ingelegd
           lees je: ~Gefeliciteerd! Je hebt licht gebracht in de
           donkere kamer!~",
      name "tablet" "massief" "stenen" "steen"
 has  static neuter;

Treasure -> "platina piramide"
 with initial "Je ziet hier een platina piramide, met zijden van 20
           centimeter!",
      depositpoints 14,
      description "De platina piramide heeft zijden van 20 centimeter
           elk!",
      name "platina" "piramide" "pyramide";

! ----------------------------------------------------------------------------
!   North of the complex junction: a long up-down corridor
! ----------------------------------------------------------------------------

Object In_Arched_Hall "Gewelfde Zaal"
 with description
               "Je bent in een gewelfde zaal. Een gang van koraal
           leidde ooit naar het oosten, maar is nu geblokkeerd door
           puin. Het ruikt hier naar de zee.",
      d_to In_Shell_Room;

Object In_Shell_Room "Schelpenkamer"
 with description
               "Je bevindt je in een grote kamer die in het stenen
           sediment is uitgehakt. De vloer en muren zijn bezaaid met
           stukjes schelp die in de steen liggen ingebed. Een zacht
           glooiende gang leidt omlaag en een wat stijlere leidt
           omhoog. Een lage gang waar je op handen en knie@:en net
           doorheen zou kunnen kruipen bereikt deze kamer vanuit het
           zuiden.",
      u_to In_Arched_Hall,
      d_to In_Ragged_Corridor,
      s_to
      [; if (giant_bivalve in player)
         {   if (giant_bivalve has open)
                 "Je kunt die anderhalve meter grote oester niet door
                  dat kleine gangetje krijgen!";
             else
                 "Je kunt die anderhalve meter grote mossel niet door
                  dat kleine gangetje krijgen!";
         }
         return At_Complex_Junction;
      ];


Object -> giant_bivalve "reuzemossel"
 with name "reus" "reuze" "reusachtig" "reusachtige""mossel" "oester"
           "tweekleppige" "bivalv" "bivalve" "reuzemossel"
           "reuzeoester" "reuze-mossel" "reuze-oester",
      describe
      [; if (self has general)
             "Je ziet hier een enorme oester met z'n schelp stevig dicht.";
         "Je ziet hier een enorme mossel met z'n schelp stevig dicht.";
      ],
      before
      [; Examine: if (location==At_Ne_End or At_Sw_End)
               "Interessant. Het lijkt wel alsof er iets geschreven
                staat op de onderkant van de oester:^^
                ~Er is iets vreemds met deze plek, waardoor een van
                de vervloekingen die ik altijd al gekend heb nu een
                ander effect heeft.~";
               "Een reusachtige.";
         Open:
               "Je bent niet sterk genoeg om de mossel met je blote
                handen open te breken.";
         Unlock:
               if (second~=trident)
                   print_ret (The) second,
                      " is niet sterk genoeg om de mossel open te breken.";
               if (self has general)
                   "De oester gaat krakend en knarsend open, maar er
                   zit niets anders dan oester in. Hij klapt meteen
                   weer dicht.";
               give self general; move pearl to In_A_Cul_De_Sac;
               "Er valt een glinsterende parel uit de mossel en rolt
                weg. Goeie genade, ik denk dat dit eigenlijk toch een
                oester is. (Ik ben nooit echt goed geweest in het
                determineren van tweekleppigen>) Wat het ook is, het
                heeft zichzelf nu weer dichtgeklapt.";
         Attack:
               "De schelp is erg sterk en ondoordringbaar ondanks je aanval.";
      ],
 has male;

Treasure pearl "glinsterende parel"
 with description "Hij is ongelofelijk groot!",
      initial "Langs de kant ligt glinsterende parel!",
      name "parel" "glinsterend" "ongelofelijk" "ongelooflijk"
           "groot" "grote",
      depositpoints 14,
 has male;


Object In_Ragged_Corridor "Onregelmatige Galerij"
 with description
               "Je loopt door een lange, hellende galerij met
           scherpe, onregelmatige muren.",
      u_to In_Shell_Room,
      d_to In_A_Cul_De_Sac;

Object In_A_Cul_De_Sac "Doodlopende Gang"
 with description
              "Je bent een doodlopende gang van bijna twee en een
           halve meter breed ingewandeld.",
      u_to In_Ragged_Corridor,
      out_to In_Ragged_Corridor;

! ----------------------------------------------------------------------------
!   Witt's End: Cave under construction
! ----------------------------------------------------------------------------

Object In_Anteroom "In een Voorkamer"
 with description
               "Je staat in een voorkamer die uitkomt op een grote
           gang naar het oosten. Kleine gangetjes leiden naar het
           westen en omhoog. De sporen van recent graafwerk zijn
           overduidelijk aanwezig.",
      u_to At_Complex_Junction,
      w_to In_Bedquilt,
      e_to At_Witts_End;

Object -> "sign"
 with initial
               "Een bordje in de lucht zegt ~Werk in uitvoering
           voorbij dit punt. Verdergaan op eigen risico. [Raadd
           Bouwbedrijf]~",
      name "bord" "raadd" "aannemer" "bedrijf" "bouwbedrijf" "bouw" "bordje",
      before [; Take: "Het hangt te ver boven je hoofd."; ],
 has  static;

Object -> "recente nummers van het ~Speleologisch Dagblad~"
 with name "recent" "nummer" "nummers" "tijdschrift" "speleologisch"
           "dagblad" "krant" "dagbladen" "kranten",
      initial
       "Er ligt een aantal recente nummers van het ~Speleologisch
           Dagblad~ op de grond.",
      description "Ik ben bang dat de tijdschriften in het Dwergs
           geschreven zijn.",
      article "een paar",
      after
      [; Take: if (location==At_Witts_End) score--;
         Drop: if (location==At_Witts_End)
               {   score++;
                   "Je bent echt ten einde raad.";
               }
      ],
 has  multitude pluralname male;

Object At_Witts_End "Ten Einde Raadd"
 with description
           "Je bent ten einde Raadd. In *alle* richtingen leiden
           gangen.",
      w_to   "Je bent door allerlei kieren en gaten gekropen, en bent
           uiteindelijk op een recente instorting gestuit. Je bent nu
           terug in de hoofdgang.",
      before
      [; Go: if (noun~=w_obj && random(100)<=95)
               "Je bent door allerlei kieren en gaten gekropen en
                uiteindelijk weer in de hoofdgang beland.";
             PlayerTo(In_Anteroom); rtrue;
      ];

! ----------------------------------------------------------------------------
!   North of the secret canyons, on the other side of the pit
! ----------------------------------------------------------------------------

Object In_Mirror_Canyon "In het Spiegelravijn"
 with description
               "Je bevindt je in een noord/zuid lopend ravijn van
           zo'n 7,5 meter breed ravijn. De vloer is bedekt met een
           witte mist die ergens in het noorden komt
           binnensijpelen. De wanden rijzen meer dan dertig meter
           omhoog. Van een punt te hoog boven je om het te kunnen
           zien hangt een enorme tweezijdige spiegel naar beneden,
           parallel aan en halverwege tussen de wanden van het
           ravijn.^^
           In beide wanden kun je een klein raam onderscheiden, zo'n
           15 meter boven je.",
      s_to In_Secret_N_S_Canyon_0,
      n_to At_Reservoir;

Object -> "hangende spiegel"
 with description
               "De spiegel is duidelijk bedoeld om door dwergen
           gebruikt te worden, want die zijn, zoals je weet,
           buitengewoon ijdel.",
      name "spiegel" "enorm" "enorme" "hangend" "hangende"
           "dwergen" "tweezijdig" "twee" "zijdig" "tweezijdige",
      initial "De spiegel is duidelijk bedoeld om door dwergen
           gebruikt te worden, want die zijn, zoals je weet,
           buitengewoon ijdel.",
      before [; Attack, Remove: "Je kunt er hiervandaan niet bij."; ],
 has  static male;


Object At_Window_On_Pit_2 "Bij een Venster dat Uitziet op een Schacht"
 with description
               "Je staat bij een laag venster dat uitzicht biedt op
           een gigantische schacht. De vloer is juist zichtbaar, zo'n
           vijftien meter dieper. Flarden witte mist bedekken de
           bodem van de schacht, en worden naar links toe
           dikker. Sporen in het stof bij het venster getuigen van
           het feit dat hier onlangs nog iemand geweest is. Recht
           tegenover je aan de andere kant van de schacht is een
           soortgelijk venster dat uitzicht biedt op een verlichte
           kamer. Je ontwaart daar een schimmig figuur dat naar je
           terugstaart.",
      cant_go "De enige mogelijkheid is terug naar het westen, naar
           de kruising.",
      w_to At_Junction_Of_Three,
      before
      [; Jump: deadflag=1; "Je springt en breekt je nek!";
         WaveHands: "De schimmige figuur zwaait terug!";
      ];

Object At_Reservoir "Bij het reservoir"
 with description
               "Je staat aan de rand van een enorm ondergronds
           reservoir. Een ondoorzichtige wolk witte mist vult de
           kamer, en stijgt snel omhoog. Het meer wordt gevoed door
           een beek, die vanuit een gat in de muur zo'n drie meter
           boven je hoofd met donderend geraas in het water stort,
           ergens in de mist. De enige gang hiervandaan is degene
           terug naar het zuiden.",
      s_to In_Mirror_Canyon,
      out_to In_Mirror_Canyon,
      before
      [; Swim: "Het water is ijskoud, en je zou snel bevriezen.";
      ];

! ----------------------------------------------------------------------------
!   The Chasm and the Troll Bridge
! ----------------------------------------------------------------------------

Object In_Sloping_Corridor "Hellende Gang"
 with description
               "Je bevindt je in een lange bochtige gang. Je
           kunt naar geen van beide kanten ver kijken vanwege de
           hellingshoek.",
      d_to In_Large_Low_Room,
      u_to On_Sw_Side_Of_Chasm,
      cant_go "De gang helt sterk naar boven en beneden.";

Object On_Sw_Side_Of_Chasm "Aan de ZW-kant van de Afgrond"
 with description
               "Je staat aan @'e@'en kant van een grote, diepe
           afgrond. Een zware witte mist die van beneden op komt
           stijgen ontneemt je elk zicht op de overkant. Een
           zuidwestelijk pad leidt van de afgrond vandaan een
           bochtige galerij in.",
      ne_to CrossRicketyBridge,
      sw_to In_Sloping_Corridor,
      d_to In_Sloping_Corridor,
      cant_go "Het pad slingert naar het zuidwesten.",
      before
      [; Jump: if (RicketyBridge in self)
                   "Met alle respect, ik zou willen voorstellen de
                    brug te nemen in plaats van te springen.";
             deadflag=1; "Je hebt het niet gehaald.";
      ];

[ CrossRicketyBridge;
 if (Troll has general || Troll in nothing)
 {
     give Troll ~general;
     if (Bear.following_you)
     {   remove Bear; remove self; give Wreckage ~absent;
         remove RicketyBridge; give RicketyBridge absent; StopDaemon(Bear);
         deadflag=1;
         "Juist als je de andere kant bereikt, buigt de brug door onder
         het gewicht van de beer, die jou nog steeds volgde. Je
         krabbelt wanhopig aan de rotswand voor steun, maar als de
         brug instort, struikel je achteruit en stort je in het
         ravijn.";
     }
     return RicketyBridge;
 }
 if (Troll in location)
     "De trol weigert je te laten oversteken.";
 move Troll to location;
 "De trol stapt onder de brug vandaan en blokkeert je weg.";
];

Object -> RicketyBridge "krakkemikkige brug"
 with description "Ziet eruit als een gewone brug, maar wel een
           heel krakkemikkige.",
      describe
      [; print "Een krakkemikkige brug strekt zich uit over de
                afgrond, waar hij verdwijnt in de mist.^^
                Een bordje op de brug zegt:
                ~Stop! Betaal de trol!~^";
         if (Troll notin location)
                "De trol is nergens te zien.";
         rtrue;
      ],
      name "brug" "krakkemikkig" "krakkemikkige" "onstabiel"
           "gammel" "gammele" "bruggetje" "onstabiele" "instabiele"
           "wankel" "wankele" "touw" "touwbrug",
      door_dir
      [; if (location==On_Sw_Side_Of_Chasm) return ne_to; return sw_to;
      ],
      door_to
      [; if (location==On_Sw_Side_Of_Chasm) return On_Ne_Side_Of_Chasm;
         return On_Sw_Side_Of_Chasm;
      ],
      found_in  On_Sw_Side_Of_Chasm  On_Ne_Side_Of_Chasm
 has  static door open male;

Object -> -> Troll "stoere trol"
 with description
               "Trollen zijn nauw verwant aan rotsblokken en hebben
                een huid zo sterk als die van een rhinoceros.",
      initial  "Een stoere trol staat bij de brug en eist dat je hem
                een schat toewerpt voordat je over mag steken.",
      name "trol" "stoer" "stoere",
      life
      [; Attack: "De trol lacht zich rot om je zielige poging hem te
                  verwonden.";
         ThrowAt, Give:
             if (noun ofclass Treasure)
             {   remove noun;
                 move Troll to RicketyBridge;
                 give Troll general; score=score-5;
                 "De trol vangt je schat en snelt weg, buiten zicht.";
             }
             if (noun==tasty_food)
                 "Vraatzucht is niet @'e@'en van de ondeugden van de
                  trol. Gierigheid, daarentegen, wel.";
                 "De trol vangt ", (the) noun,
                 " handig op, kijkt er onderzoekend naar, en gooit ",
                 (HijofHet) noun, " terug, terwijl hij zegt:
                 ~Goed vakmanschap, maar niet waardevol genoeg.~";
         Order: "Je hoopt op een gelukje?";
         Answer, Ask: "Trollen hebben geen ontzettend goede
          communicatieve vaardigheden.";
      ],
 has  animate;

Object Wreckage "brokstukken van de brug"
 with initial "Je kunt de brokstukken van de trollenbrug (en een dode
           beer) zien liggen op de bodem van de afgrond.",
      name "brokstukken" "brokstuk" "brug" "dood" "dode" "beer",
      before
      [; "De brokstukken liggen te diep.";
      ],
      found_in  On_Sw_Side_Of_Chasm  On_Ne_Side_Of_Chasm
 has  static absent multitude pluralname neuter;


Object On_Ne_Side_Of_Chasm "Aan de NO-kant van de Afgrond"
 with description
               "Je bent aan de overkant van de afgrond. Een
           noordoostelijk pad leidt weg van deze kant van de
           afgrond.",
      sw_to CrossRicketyBridge,
      ne_to In_Corridor,
      before
      [; Jump: if (RicketyBridge in self)
                   "Met alle respect, ik zou willen voorstellen de
                    brug te nemen in plaats van te springen.";
             deadflag=1; "Je hebt het niet gehaald.";
      ],
 has  nodwarf;

Object In_Corridor "In een Galerij"
 with description
               "Je loopt door een lange oost/west-galerij. In de
                verte hoor je een zacht rommelend geluid.",
      w_to On_Ne_Side_Of_Chasm,
      e_to At_Fork_In_Path
 has  nodwarf;

! ----------------------------------------------------------------------------
!   The Volcano
! ----------------------------------------------------------------------------

Object At_Fork_In_Path "Bij een Vertakking in de Weg"
 with description
              "Het pad vertakking hier. De linker tak leidt naar het
           noordoosten. Het doffe gerommel lijkt die kant op luider
           te worden. De rechter tak leidt naar het zuidoosten, ene
           zacht glooiende helling af. De hoofdtak komt uithet
           westen.",
      w_to In_Corridor,
      ne_to At_Junction_With_Warm_Walls,
      se_to In_Limestone_Passage,
      d_to In_Limestone_Passage
 has  nodwarf;

Object At_Junction_With_Warm_Walls "Bij een Driesprong met Warme Muren"
 with description
               "De muren zijn hier behoorlijk warm. Vanuit het
           noorden hoor je een een regelmatig gedreun, zo luid dat de
           hele grot lijkt te schudden op z'n grondvesten. Een ander
           pad leidt naar het zuiden, en een lage kruipgang naar het
           oosten.",
      s_to At_Fork_In_Path,
      n_to At_Breath_Taking_View,
      e_to In_Chamber_Of_Boulders
 has  nodwarf;


Object At_Breath_Taking_View "Een Adembenemend Uitzicht"
 with description
               "Je bevindt je op een rand met een adembenemend
           uitzicht. Ver beneden je zie je een actieve vulkaan,
           waaruit dikke klodders gesmolten lava opwellen, om
           vervolgens weer de diepten in te storten. De gloeiende
           rots vult de spelonk tot in de verste uithoeken met een
           bloedrode gloed en verleent alles een spookachtige,
           macabere uitstraling. De lucht is vol flakkerende vonken
           van as en een zwaar aroma van zwavel. De muren zijn heet
           als je ze aanraakt, en het gebulder van de vulkaan
           verdrinkt alle andere geluiden. Ingebed in het getande
           gewelf ver boven je ontwaar je talloze gedraaide
           formaties, samengesteld uit puur wit albast, die het
           nevelige licht verstrooien tot sinistere
           spookverschijningen op de muren. Aan @'e@'en kant is een
           diepe kloof, gevuld met een bizarre chaos van gefolterde
           rotsen, die wel door de duivel zelf gecre@:eerd lijken.
           Een immense rivier van vuur stroomt vanuit de diepten
           van de vulkaan met donderend geraas neer, brandt zich
           een weg door de kloof en stort in een bodemloze put
           ergens ver weg aan je linkerhand. Rechts van je spuit
           een enorme geiser van vernietigende stoom continu de
           lucht in vanuit een schraal eilandje middenin het
           onheilspellend bubbelende zwavelmeer. De wand helemaal
           rechts staat in vuur en vlam met een gloed van zichzelf,
           hetgeen nog een extra duivelse pracht verleent aan de
           van zichzelf al helse aanblik. Een duistere,
           onheilspellende doorgang leidt naar het zuiden.",
      s_to At_Junction_With_Warm_Walls,
      out_to At_Junction_With_Warm_Walls,
      d_to "Doe niet zo mal!",
      before [; Jump: <<Go d_obj>>; ],
 has  light;


Object -> "actieve vulkaan"
 with description
               "Dikke klodders gesmolten lava wellen op uit de vulkaan, om
           vervolgens weer de diepten in te storten. De gloeiende
           rots vult de spelonk tot in de verste uithoeken met een
           bloedrode gloed en verleent alles een spookachtige,
           macabere uitstraling.",
      name "vulkaan" "rots" "actief" "bloed" "rood" "bloedrood"
           "rode" "bloedrode" "actieve" "gloed" "spookachtig"
           "spookachtige" "macaber" "macabere"
 has  scenery male;


Object -> "vonken van as"
 with description "De vonken zijn te ver bij je vandaan om ze goed te
           kunnen bekijken.",
      name "vonk" "vonken" "as" "lucht" "flakkerend" "flakkerende"
           "flakkerend" "flakkerende",
 has  scenery multitude pluralname male;


Object -> "getande gewelf"
 with description
               "Ingebed in het getande gewelf ver boven je ontwaar
           je talloze gedraaide formaties, samengesteld uit puur
           wit albast, die het nevelige licht verstrooien tot
           sinistere spookverschijningen op de muren",
      name "gewelf" "dak" "plafond" "formaties" "licht"
           "verschijning" "verschijningen" "spookverschijning"
           "spookverschijningen" "getand" "getande" "gedraaid"
           "gedraaide" "nevelig" "nevelige" "sinister"
 has  scenery neuter;

Object -> "diepe kloof"
 with description
              "De kloof is gevuld met een bizarre chaos van
           gefolterde rotsen, die wel door de duivel zelf
           gecre@:eerd lijken.",
      name "kloof" "chaos" "rots" "rotsen" "diep" "diepe" "bizarre"
           "gefolterd" "gefolterde" "bizar",
 has  scenery male;

Object -> "rivier van vuur"
 with description
              "De rivier van vuur stroomt vanuit de diepten van de
           vulkaan met donderend geraas neer, brandt zich een weg
           door de kloof en stort in een bodemloze put ergens ver
           weg aan je linkerhand.",
      name "rivier" "vuur" "diepte" "diepten" "put" "vurig"
           "bodemloos" "bodemloze"
 has  scenery;

Object -> "immense geiser"
 with description
           "De geiser van vernietigende stoom spuit continu de
           lucht in vanuit een schraal eilandje middenin het
           onheilspellend bubbelende zwavelmeer.",
      name "geiser" "stoom" "eiland" "eilandje" "meer"
           "immense" "immens" "vernietigend" "vernietigende"
           "schraal" "zwavelmeer" "bubbelende" "zwavel" "meer"
           "onheilspellend" "onheilspellende" "bubbelend"
 has  scenery;


Object In_Chamber_Of_Boulders "In het Vertrek van de Keien"
 with description
               "Je bent een klein vetrek gevuld met grote keien
           binnengekropen. De muren zijn ontzettend warm, waardoor
           de lucht in de kamer om te smoren zo heet is. De enige
           uitgang uit deze verstikkende kamer is een kruipgang naar
           het westen, waardoorheen je een diep gerommel hoort.",
      w_to At_Junction_With_Warm_Walls,
      out_to At_Junction_With_Warm_Walls
 has  nodwarf;


Object -> "keien"
 with description "Het zijn doodgewone grote keien. Ze zijn warm.",
      name "kei" "keien" "rots" "stenen" "groot" "grote",
      before
      [;  Push, Pull, LookUnder: "Je zou ze op moeten blazen.";
      ],
 has  scenery multitude pluralname male;

Treasure -> "zeldzame specerijen"
 with name "specerijen" "specerij" "kruid" "kruiden" "zeldzaam"
           "zeldzame" "exotisch" "exotische",
      depositpoints 14, article "een selectie",
      before
      [; Smell, Examine: "Ze ruiken wonderbaarlijk exotisch!";
      ],
 has  multitude pluralname male;

Object In_Limestone_Passage "In een Kalkstenen Galerij"
 with description
               "Je wandelt door een zachtjes glooiende
           noord-zuid-galerij met wanden van vreemd gevormde
           kalksteenformaties.",
      n_to At_Fork_In_Path,
      u_to At_Fork_In_Path,
      s_to In_Front_Of_Barren_Room,
      d_to In_Front_Of_Barren_Room
 has  nodwarf;

Object -> "kalksteenformaties"
 with description
           "Zo nu en dan trekt een bijzonder vreemde formatie je
           aandacht.",
      name "formaties" "vorm" "vormen" "formatie" "kalksteen" "kalk"
           "steen" "formaties" "kalksteenformatie"
           "kalksteenformaties" "gevormd" "gevormde" "vreemd"
           "vreemdgevormde" "vreemde" "vreemdgevormd"
 has  scenery multitude pluralname male;

! ----------------------------------------------------------------------------
!   If you go down to the woods today...
! ----------------------------------------------------------------------------

Object In_Front_Of_Barren_Room "Voor een Kale Kamer"
 with description
               "Je staat bij de ingang van een grote, kale kamer. Een
           bordje dat boven de ingang hangt, zegt: ~Pas op! Beer in
           de kamer!~",
      w_to In_Limestone_Passage,
      u_to In_Limestone_Passage,
      e_to In_Barren_Room,
      in_to In_Barren_Room
 has  nodwarf;


Object -> "waarschuwingsbordje"
 with description "Het bordje zegt: ~Pas op! Beer in de kamer!~",
      name "bord" "bordje" "kamer" "leeg" "kaal" "kale" "lege"
           "waarschuwing" "waarschuwingsbord" "waarschuwingsbordje"
 has  scenery neuter;


Object In_Barren_Room "In een Kale Kamer"
 with description
               "Je bent in een kale kamer aangeland. Het midden van
           de kamer is volstrekt leeg, op wat stof na. Sporen in het
           stof leiden naar het verre eind van de kamer. De enige
           uitgang is de weg waarlangs je binnengekomen bent.",
      w_to In_Front_Of_Barren_Room,
      out_to In_Front_Of_Barren_Room
 has  nodwarf;


Object -> "stof"
 with description "Het ziet er precies zo uit als gewoon stof.",
      name "stof" "sporen" "spoor"
 has  scenery;

Object -> Bear "grote holenbeer"
 with
      following_you false,
      angry true,

      describe
      [; if (self.following_you)
            "Je wordt gevolgd door een grote, tamme beer.";
         if (self.angry)
             "Een woeste holenbeer staat je aan te staren vanuit de
             andere kant van de kamer!";
         if (location==In_Barren_Room)
             "Een zachtaardige holenbeer zit rustig in een hoekje.";
         "Niet ver bij je vandaan wandelt een tevreden uitziende
          holenbeer rond.";
      ],
      name "beer" "groot" "grote" "tam" "tamme" "woest" "woeste"
           "hol" "holen" "holenbeer",
      life
      [; Attack: if (axe in player) <<ThrowAt axe Bear>>;
             if (self.angry == false)
                 "De beer is verward; hij wil alleen maar vriendjes
                 zijn.";
             "Met wat? Je blote handen? Tegen *zijn* berenhanden??";
         ThrowAt:
             if (noun~=axe) <<Give noun Bear>>;
             if (self.angry == false)
                 "De beer is verward; hij wil alleen maar vriendjes
                 zijn.";
             move axe to location; give axe general;
             "De bijl mist en landt vlakbij de beer waar je er niet
              bij kunt.";
         Give:
             if (noun == tasty_food)
             {   give axe ~general; remove tasty_food;
                 self.angry = false;
                "De beer schrokt je voedsel gulzig op, waarna hij
                 behoorlijk kalmeert, en zelfs tamelijk vriendelijk
                 wordt.";
             }
             if (self.angry == false)
                 "De beer lijkt niet erg ge@:interesseerd in je
                 aanbod.";
          "Oh-oh -- je aanbod maakt de beer alleen maar bozer!";
         Order, Ask, Answer: "Dit is een beer met een erg klein brein.";
      ],
      before
      [; Examine:
             print "De beer is uitzonderlijk groot, ";
             if (self.angry == false) "maar ziet er vriendelijk uit.";
             "en ziet er vervaarlijk uit!";
         Take, Catch: if (self.angry) "Je maakt zeker een grapje!";
             if (golden_chain has locked)
                 "De beer zit nog aan de muur geketend.";
             self.following_you = true; StartDaemon(Bear);
             "Ok, de beer volgt je nu, waar je ook gaat.";
         Drop, Release: if (self.following_you == false) "Wat?";
             self.following_you = false; StopDaemon(Bear);
             if (Troll in location)
             {   remove Troll;
                 "De beer waggelt log naar de trol toe, die een
                 verbaasde gil slaat, en wegrent. De beer geeft de
                 achtervolging al gauw op en wandelt weer terug.";
             }
             "De beer wandelt bij je vandaan.";
      ],

      daemon
      [; if (location==thedark) rfalse;
         if (self in location)
         {   if (location==At_Breath_Taking_View)
                 "^The beer brult van vreugde.";
             rfalse;
         }
         move self to location;
         "^The beer waggelt log achter je aan.";
      ],
 has  animate male;

Treasure -> golden_chain "gouden ketting"
 with depositpoints 14,
      describe
      [; if (self has locked) "De beer wordt vastgehouden door een
      massief gouden ketting.";
         "Er ligt een massief gouden ketting opgerold op de vloer!";
      ],
      description "De ketting bestaat uit dikke schakels van massief goud!",
      name "ketting" "schakel" "schakels" "keten" "ketenen" "massief"
           "goud" "gouden" "dik" "ketens" "massieve",
      with_key set_of_keys,
      before
      [; Take: if (self has locked)
               {   if (Bear.angry) "Hij zit vastgeketend aan de woeste beer!";
                   "Hij zit vastgeketend aan de vriendelijke beer.";
               }
         Unlock:
               if (Bear.angry)
                   "Er is geen enkele mogelijkheid om langs de beer
                   te komen zodat je de ketting los kunt maken, en
                   dat is waarschijnlijk ook maar beter zo.";
         Lock: if (self hasnt locked) "Het mechamisme wil niet meer
          op slot.";
      ],
      after
      [; Unlock: "Je haalt het slot van de ketting, en laat de
                  tamme beer vrij.";
      ],
 has  lockable locked male;

! ----------------------------------------------------------------------------
!   The Different Maze
! ----------------------------------------------------------------------------

Class  DiffMazeRoom
 with short_name "Doolhof";

DiffMazeRoom Different_Maze_1
 with description
         "Je bent in een doolhof van kronkelende kleine
           paadjes, allemaal verschillend.",
      s_to  Different_Maze_3,
      sw_to Different_Maze_4,
      ne_to Different_Maze_5,
      se_to Different_Maze_6,
      u_to  Different_Maze_7,
      nw_to Different_Maze_8,
      e_to  Different_Maze_9,
      w_to  Different_Maze_10,
      n_to  Different_Maze_11,
      d_to  At_West_End_Of_Long_Hall;


DiffMazeRoom Different_Maze_2
 with description
       "Je bent in een klein doolhof van kronkelende paadjes,
           allemaal verschillend.",
      sw_to Different_Maze_3,
      n_to Different_Maze_4,
      e_to Different_Maze_5,
      nw_to Different_Maze_6,
      se_to Different_Maze_7,
      ne_to Different_Maze_8,
      w_to Different_Maze_9,
      d_to Different_Maze_10,
      u_to Different_Maze_11,
      s_to Dead_End_14;

DiffMazeRoom Different_Maze_3
 with description
       "Je bent in een doolhof van kronkelende kleine
           paadjes, allemaal verschillend.",
      w_to Different_Maze_1,
      se_to Different_Maze_4,
      nw_to Different_Maze_5,
      sw_to Different_Maze_6,
      ne_to Different_Maze_7,
      u_to Different_Maze_8,
      d_to Different_Maze_9,
      n_to Different_Maze_10,
      s_to Different_Maze_11,
      e_to Different_Maze_2;

DiffMazeRoom Different_Maze_4
 with description
       "Je bent in een klein doolhof van kronkelige paadjes,
           allemaal verschillend.",
      nw_to Different_Maze_1,
      u_to Different_Maze_3,
      n_to Different_Maze_5,
      s_to Different_Maze_6,
      w_to Different_Maze_7,
      sw_to Different_Maze_8,
      ne_to Different_Maze_9,
      e_to Different_Maze_10,
      d_to Different_Maze_11,
      se_to Different_Maze_2;

DiffMazeRoom Different_Maze_5
 with description
       "Je bent in een kronkelend doolhof van kleine paadjes,
           allemaal verschillend.",
      u_to Different_Maze_1,
      d_to Different_Maze_3,
      w_to Different_Maze_4,
      ne_to Different_Maze_6,
      sw_to Different_Maze_7,
      e_to Different_Maze_8,
      n_to Different_Maze_9,
      nw_to Different_Maze_10,
      se_to Different_Maze_11,
      s_to Different_Maze_2;

DiffMazeRoom Different_Maze_6
 with description
       "Je bent in een kronkelend klein doolhof van paadjes, allemaal
           verschillend.",
      ne_to Different_Maze_1,
      n_to Different_Maze_3,
      nw_to Different_Maze_4,
      se_to Different_Maze_5,
      e_to Different_Maze_7,
      d_to Different_Maze_8,
      s_to Different_Maze_9,
      u_to Different_Maze_10,
      w_to Different_Maze_11,
      sw_to Different_Maze_2;

DiffMazeRoom Different_Maze_7
 with description
           "Je bent in een kronkelig klein doolhof van paadjes,
           allemaal verschillend.",
      n_to Different_Maze_1,
      se_to Different_Maze_3,
      d_to Different_Maze_4,
      s_to Different_Maze_5,
      e_to Different_Maze_6,
      w_to Different_Maze_8,
      sw_to Different_Maze_9,
      ne_to Different_Maze_10,
      nw_to Different_Maze_11,
      u_to Different_Maze_2;

DiffMazeRoom Different_Maze_8
 with description
       "Je bent in een kronkelig doolhof van kleine paadjes, allemaal
           verschillend.",
      e_to Different_Maze_1,
      w_to Different_Maze_3,
      u_to Different_Maze_4,
      sw_to Different_Maze_5,
      d_to Different_Maze_6,
      s_to Different_Maze_7,
      nw_to Different_Maze_9,
      se_to Different_Maze_10,
      ne_to Different_Maze_11,
      n_to Different_Maze_2;

DiffMazeRoom Different_Maze_9
 with description
           "Je bent in een klein kronkelig doolhof van paadjes,
           allemaal verschillend.",
      se_to Different_Maze_1,
      ne_to Different_Maze_3,
      s_to Different_Maze_4,
      d_to Different_Maze_5,
      u_to Different_Maze_6,
      nw_to Different_Maze_7,
      n_to Different_Maze_8,
      sw_to Different_Maze_10,
      e_to Different_Maze_11,
      w_to Different_Maze_2;


DiffMazeRoom Different_Maze_10
 with description
       "Je bent in een doolhof van kleine kronkelende paadjes,
           allemaal verschillend.",
      d_to Different_Maze_1,
      e_to Different_Maze_3,
      ne_to Different_Maze_4,
      u_to Different_Maze_5,
      w_to Different_Maze_6,
      n_to Different_Maze_7,
      s_to Different_Maze_8,
      se_to Different_Maze_9,
      sw_to Different_Maze_11,
      nw_to Different_Maze_2;

DiffMazeRoom Different_Maze_11
 with description
       "Je bent in een doolhof van kleine kronkelige paadjes,
           allemaal verschillend.",
      sw_to Different_Maze_1,
      nw_to Different_Maze_3,
      e_to Different_Maze_4,
      w_to Different_Maze_5,
      n_to Different_Maze_6,
      d_to Different_Maze_7,
      se_to Different_Maze_8,
      u_to Different_Maze_9,
      s_to Different_Maze_10,
      ne_to Different_Maze_2;


DeadEndRoom Dead_End_14
 with short_name
          "Doodlopend Pad, Vlakbij een Automaat",
      description
       "Je hebt een doodlopend pad bereikt. Er staat hier een
           imposante automaat.",
      n_to Different_Maze_2,
      out_to Different_Maze_2
 has  nodwarf;

Object -> "boodschap in het stof"
 with description
           "De boodschap zegt: ~Dit is niet het doolhof waar de
           piraat zijn schatkist achterlaat.!",
      name "boodschap" "krabbel" "krabbels" "geschrijf" "geschrift"
           "bericht" "bloemrijk" "gekrabbeld" "geschreven"
           "handschrift",
      initial "Hmmm...  er is hier een boodschap in het stof
           geschreven in een bloemrijk handschrift.",
 has  scenery male;


Object -> VendingMachine "automaat"
 with description
           "De instructies op de automaat zeggen: ~Stop munten in de
           gleuf om nieuwe batterijen te krijgen.~",
      name "machine" "gleuf" "automaat" "imposant" "imposante"
           "batterij" "batterijen" "munt" "munten",
      before
      [; Receive:
            if (noun==rare_coins)
            {   move fresh_batteries to location;
                remove rare_coins;
             "Kort nadat je de munten in de gleuf hebt gestopt, maakt de
                automaat een krakend geluid, en een stel nieuwe
                batterijen valt aan je voeten.";
            }
            "De automaat lijkt ontworpen om munten te accepteren.";
         Attack:
            "De automaat is behoorlijk stevig en overleeft je aanval
             zonder zelfs maar een krasje op te lopen.";
         LookUnder:
              "Je vindt niets onder de automaat.";
         Search:
              "Je kunt niet in de automaat komen.";
         Take: "De automaat is veel te zwaar om hem te kunnen bewegen.";
      ],
 has  scenery male;

Object fresh_batteries "nieuwe batterijen" VendingMachine
 with description "Ze zien eruit als doodgewone batterijen. (Een
           grafstem zegt: ~Ze doen het nog!~)",
      initial "Er liggen hier nieuwe batterijen.",
      name "batterijen" "batterij" "nieuw" "nieuwe",
      before [; Count: "Een aantal."; ];

Object old_batteries "opgebruikte batterijen"
 with description "Ze zien eruit als doodgewone batterijen.",
      initial "Een paar opgebruikte batterijen liggen hier
           achtergelaten op de grond.",
      name "batterijen" "batterij" "gebruikt" "op" "opgebruikt",
      before [; Count: "Een aantal."; ];

! ----------------------------------------------------------------------------
!   Dwarves!
! ----------------------------------------------------------------------------

Object dwarf "dreigende kleine dwerg"
 with name "dwerg" "dreigend" "dreigende" "gemeen" "gemene" "klein"
           "kleine" "gevaarlijk" "gevaarlijke",
      description "Het is waarschijnlijk geen goed idee om te dicht
           bij te komen. Laten we het er maar op houden dat de kleine
           man behoorlijk agressief is.",
      initial "Een dreigende kleine dwerg zit verstopt in de schaduwen.",
      number 5,

      daemon
      [; if (location==thedark) return;
         if (self.number==0) { StopDaemon(self); return; }
         if (parent(dwarf)==0)
         {   if (location has nodwarf || location has light) return;
             if (random(100)<=self.number)
             {   if (Bear in location || Troll in location) return;
                 new_line;
                 if (Dragon in location)
                 {   self.number--;
                     "Er verschijnt een dwerg, maar met een enkele
                     nonchalante ademstoot vernietigt de draak hem!";
                 }
                 move dwarf to location;
                 "Er komt een dreigende kleine dwerg tevoorschijn uit
                  de schaduwen!";
             }
             return;
         }
         if (parent(dwarf)~=location)
         {   if (location==thedark) return;
             if (location has nodwarf || location has light) return;
             if (random(100)<=96 && parent(dwarf)~=In_Mirror_Canyon)
             {   move dwarf to location;
                 print "^De dwerg sluipt achter je aan...^";
             }
             else { remove dwarf; return; }
         }
         if (random(100)<=75)
         {   new_line;
             if (self hasnt general)
             {   move axe to location; give self general; remove self;
                 "De dwerg gooit een gemene kleine bijl naar je,
                 mist, vloekt, en rent weg.";
             }
             if (location==In_Mirror_Canyon)
                 "De dwerg bewondert zichzelf in de spiegel.";
             print "De dwerg gooit een gemeen klein mes naar je, ";
             if (random(1000)<=95) { deadflag=1; "en raakt!"; }
             "maar mist!";
         }
         if (random(3)==1)
         { remove dwarf; "^De dwerg wordt het zat, en glipt weg."; }
      ],
      before
      [; Kick: "Je schopt de dwerg door de kamer. Hij vloekt, staat
                vervolgens weer op, en stoft zichzelf af. Nu is hij
                bozer dan ooit!";
      ],
      life
      [; ThrowAt:
          if (noun==axe)
          {   if (random(3)~=1)
              {   remove self; move axe to location;
                  self.number--;
                  "Je hebt een kleine dwerg gedood! Het lichaam
                   verdwijnt in wolk vettige zwarte rook.";
              }
              move axe to location;
              "Mis! De dwerg duikt weg uit, en de bijl suist langs
               hem heen.";
          }
          <<Give noun second>>;
         Give:
          if (noun==tasty_food) "Jij dwaas! Dwergen eten alleen steenkool!
                                 Nu heb je hem pas *echt* kwaad gemaakt!";
          "De dwerg is in het geheel niet ge@:interesseerd in je
          aanbod. (De reden is, misschien, dat als hij je doodt hij
          toch alles wat je hebt kan inpikken.)";
         Attack: "Niet met je blote handen. Oh nee.";
      ],
 has  animate male;

Object axe "dwergenbijl"
 with name "bijl" "klein" "kleine" "dwerg" "dwergen" "dwergenbijl",
      initial "Er ligt hier een kleine bijl.",
      description "Het is gewoon een kleine bijl.",
      before
      [; if (axe hasnt general) rfalse;
         Examine: "Hij ligt naast de beer.";
         Take:    "Vergeet het maar. Hij ligt vlak naast de woeste
                   beer, er kan je wel wat overkomen!";
      ],
 has male;

! ----------------------------------------------------------------------------
!   Two brushes with piracy
! ----------------------------------------------------------------------------

Object pirate
 with
      has_stolen_something false,
      has_been_spotted false,

      daemon
      [ obj booty_nearby;

         if (random(100) > 2
             || location==thedark or In_Secret_Canyon
             || location has light
             || location has nodwarf) return;

         if (dwarf in location)
            "^Er verschijnt een piraat met een woeste baard, maar
             zodra hij ook maar een glimp van de dwerg opvangt, rent
             hij weer weg.";

         objectloop (obj ofclass Treasure && obj in player or location)
             booty_nearby = true;

         if (booty_nearby == false)
         {    if (self.has_been_spotted) return;
              self.has_been_spotted = true;
              if (self.has_stolen_something) StopDaemon(self);
             "^Er klinken vaag ritselende geluiden uit de duisternis
              achter je. Als je je ernaar omdraait, zie je een piraat
              met een woeste baard. Hij draagt een grote kist.^^
              ~Alle landrotten in een kraaiennest!~ roept hij, ~Ik ben
              gezien! Ik kan beter met volle zeilen weg hier naar't
              doolhof en me kist verbergen!~^^
              En daarmee verdwijnt hij het duister in.";
         }

         if (self.has_stolen_something) return;
         self.has_stolen_something = true;
         if (self.has_been_spotted) StopDaemon(self);

         objectloop (obj ofclass Treasure && obj in player or location)
         {   if (obj in player) score = score - 5;
             move obj to Dead_End_13;
         }

         "^Vanuit de schaduwen achter je sprint een piraat met een
          woeste baard tevoorschijn! ~Har, har,~ grinnikt hij, ~Ik
          zal al deze buit maar meenemen en verstoppen in me kist
          diep in het doolhof!~ Hij kaapt je schat weg en verdwijnt
          het duister in.";
      ];

! ----------------------------------------------------------------------------
!   The cave is closing now...
! ----------------------------------------------------------------------------

Object cave_closer
 with daemon
      [; if (treasures_found < MAX_TREASURES) return;
         StopDaemon(self);
         caves_closed=1;

         score=score + 25;

         remove CrystalBridge;
         give Grate locked ~open; remove set_of_keys;

         StopDaemon(dwarf); StopDaemon(pirate);
         remove Troll; remove Bear; remove Dragon;

         StartTimer(endgame_timer, 25);

          "^Een grafstem galmt door de grot en zegt: ~De grot sluit
           over enkele ogenblikken. Alle avonturiers dienen
           ogenblikkelijk te vertrekken door het hoofdkantoortje.~";
      ];

Object endgame_timer
 with time_left 0,
      time_out
      [; score=score + 10;

         while (child(player)~=0) remove child(player);

         move bottle to At_Ne_End;
         if (child(bottle)~=0) remove child(bottle);

         move giant_bivalve to At_Ne_End;
         move brass_lantern to At_Ne_End;
         move black_rod to At_Ne_End;
         move little_bird to At_Sw_End;
         move velvet_pillow to At_Sw_End;

          print "^De grafstem intoneert: ~De grot is nu gesloten.~
              Als de echo wegsterft is er een verblindende lichtflits
              (en een klein wolkje oranje rook). . .^^
              Als je je ogen weer scherpgesteld krijgt, kijk je
              rond...^";
         PlayerTo(At_Ne_End);
      ];

! ----------------------------------------------------------------------------
!   The End Game
! ----------------------------------------------------------------------------

Object At_Ne_End "NO-deel van het Magazijn"
 with description "Je bevindt je in het noordoostelijke deel van een
           enorme kamer, nog groter dan de reuzekamer. Het lijkt wel
           een soort magazijn voor het ~Avontuur~ programma. Enorme
           toortsen ver boven je hoofd baden de kamer in een rokerig
           geel licht. Verspreid om je heen zie je een stapel flessen
           (allemaal leeg), een kwekerij vol jonge bonenstaakjes die
           zachtjes mompelen, een oesterbed, een bundel zwarte staven
           met roestige sterren aan een uiteinde, en een collectie
           koperen lantaarns. Aan @'e@'en kant ligt een enorme horde
           dwergen te slapen op de vloer, luid snurkend. Een bordje
           er vlakbij zegt: ~De dwergen niet storen!~",
      sw_to At_Sw_End
 has  light;


Object -> "gigantische spiegel"
 with description "Het lijkt een gewone, alhoewel enorm grote, spiegel.",
      name "spiegel" "gigantisch" "gigantische" "groot" "grote" "hangend"
           "hangende" "ijdel" "ijdelheid" "dwerg" "dwergen" "dwergenspiegel",
      initial "Een gigantische spiegel hangt aan een van de muren, en
           strekt zich uit helemaal tot het andere uiteinde van de
           kamer, waar je allerhande andere objecten vaag in de verte
           kunt ontwaren.",
      found_in At_Ne_End At_Sw_End,
      before
      [;
         Attack:
            print "Je raakt de spiegel met een galmende klap, waarop
              hij in duizenden kleine scherfjes uit elkaar knalt.^^";
            SleepingDwarves.wake_up(); rtrue;
      ],
 has  static male;


Object -> "collectie materialen voor het spel ~Avontuur~"
 with description
              "Je hebt alles wat hier ligt al gezien, zij het dan in
               een wat andere context.",
      name "spullen" "troep" "materiaal" "materialen" "toortsen" "objecten"
           "adventure" "magazijn" "enorm" "divers" "diverse" "avontuur"
           "adventure-spel",
      before
      [; Take: "Je realiseert je dat door alle buit hier weg te
                halen, je het spel voor toekomstige spelers verpest,
                dus laat je alle ~Avontuur~ materialen gewoon liggen.";
      ],
 has  scenery male;


Object -> SleepingDwarves "slapende dwergen"
 with description "Ik zou de dwergen niet lastig vallen, als ik jou was.",
      name "dwerg" "dwergen" "slapend" "slapende" "snurkend"
           "snurkende" "slapend" "slapende",
      article "honderden boze",
      before
      [;
         Take: "Wat, allemaal?";
      ],
      life
      [; WakeOther:
             print "Je port de dichtsbijzijnde dwerg, die knorrig
                    wakker wordt, @'e@'en blik op je werpt, vloekt,
                    en z'n bijl grijpt.^^";
             self.wake_up(); rtrue;
         Attack: self.wake_up(); rtrue;
      ],
      wake_up
      [;     deadflag=1;
            "Het resulterende rumoer heeft alle dwergen wakker
             gemaakt. Er zijn nu hordes dreigende kleine dwergen bij
             je in de ruimte! De meesten gooien messen naar
             je. Allemaal raken ze je!";
      ],
 has  animate scenery multitude pluralname;


Object At_Sw_End "ZW-deel van het Magazijn"
 with description
               "Je bevindt je in het zuidwestelijke deel van het
           magazijn. Aan @'e@'en kant is een kuil vol agressieve
           groene slangen. Aan de andere kant een rij kleine tenen
           kooitjes, met in elk daarvan een klein pruilend
           vogeltje. In een hoek zie je een bundel zwarte staven met
           roestige sterren aan een uiteinde. Een enorm aantal
           fluwelen kussens ligt verspreid over de vloer. Een gigantische
           spiegel strekt zich uit richting het noordoosten. Aan je
           voeten zie je een groot stalen rooster, waarnaast een
           bordje hangt dat zegt: ~SCHATKAMER. Sleutels in het
           hoofdkantoor.~",
      d_to RepositoryGrate,
      ne_to At_Ne_End
 has  light;


Object -> RepositoryGrate "stalen rooster"
 with name "gewoon" "staal" "stalen" "rooster" "hek",
      description
              "Ziet eruit als een gewoon stalen rooster.",
      when_open "Het rooster is open.",
      when_closed "Het rooster is dicht.",
      door_dir d_to, door_to Outside_Grate, with_key 0
 has  static door locked openable;


Object -> "collectie materialen voor het spel ~Avontuur~"
 with description
              "Je hebt alles wat hier ligt al gezien, zij het dan in
               een wat andere context.",
      name "spullen" "troep" "materiaal" "materialen" "kuil" "objecten"
           "adventure" "magazijn" "enorm" "divers" "diverse" "avontuur"
           "adventure-spel" "slangen" "agressief" "groen" "slang",
      before
      [; Take: "Je realiseert je dat door alle buit hier weg te
                halen, je het spel voor toekomstige spelers verpest,
                dus laat je alle ~Avontuur~ materialen gewoon liggen.";
      ],
 has  scenery male;

Object -> black_mark_rod "zwarte staf met een roestplek aan een uiteinde."
 with description "Het is een negentig centimeter lange staf met een
           roestplek aan een uiteinde.",
      initial  "Er ligt hier een negentig centimeter lange staf met
           een roestplek aan een uiteinde.",
      name "staf" "zwart" "roestig" "plek" "negentig" "centimeter"
           "90" "cm" "90cm" "dynamiet" "opblazen",
      before [; Wave: "Er gebeurt niets."; ];

! ----------------------------------------------------------------------------
!   Some entry points
! ----------------------------------------------------------------------------

[ Initialise;
 location=At_End_Of_Road; score = 36;

 StartDaemon(dwarf); StartDaemon(pirate); StartDaemon(cave_closer);

 print "^^^^^Welkom bij ~Avontuur~!^^";
];

[ PrintRank;
 print ", hetgeen je de rang oplevert van ";
 if (score >= 348) "Grootmeester der Avonturiers!";
 if (score >= 330) "Meester, eerste klas.";
 if (score >= 300) "Meester, tweede klas.";
 if (score >= 200) "Junior Meester.";
 if (score >= 130) "Doorgewinterde Avonturier.";
 if (score >= 100) "Ervaren Avonturier.";
 if (score >= 35) "Avonturier.";
 if (score >= 10) "Beginner.";
 "Amateur.";
];

[ DarkToDark;
 if (dark_warning == false)
 {   dark_warning = true;
     "Het is nu stikdonker.
      Als je doorgaat is de kans groot dat je in een gat valt.";
 }
 if (random(4) == 1)
 {   deadflag = 1;
     "Je bent in een gat gevallen en hebt ieder bot in je lichaam gebroken.";
 }
 rfalse;
];

! ----------------------------------------------------------------------------
!   Menu-driven help (not really a part of the game itself)
! ----------------------------------------------------------------------------

[ HelpMenu;
 if (menu_item==0)  { item_width=8; item_name="Over Avontuur";
                      if (deadflag==2) return 4; else return 3;
                    }
 if (menu_item==1)  { item_width=6; item_name="Instructies"; }
 if (menu_item==2)  { item_width=4; item_name="Geschiedenis";      }
 if (menu_item==3)  { item_width=6; item_name="Authenticiteit"; }
 if (menu_item==4)  { item_width=7; item_name="Wist je dat..."; }
];

[ HelpInfo;
if (menu_item==1)
{
print "Ik ken plaatsen, acties en dingen. Je kunt me leiden door
        commando's te gebruiken die uit volledige zinnen bestaan. Om
        te bewegen kun je commando's proberen als ~ga naar binnen,~
        ~oost,~ ~west,~ ~noord,~ ~zuid,~ ~omhoog,~ ~omlaag,~ ~ga het
        gebouw in,~ ~klim in de paal,~ etc.^^";

print "Ik ken een aantal speciale objecten, zoals bijvoorbeeld
        een zwarte staf verborgen in de grot. Deze objecten kunnen
        gemanipuleerd worden middels enkele acties die ik
        ken. Doorgaans zul je een werkwoord in combinatie met een
        zelfstandig naamwoord (tezamen met bijvoeglijke naamwoorden
        voor zover gewenst), maar soms begrijp ik uit de context wel
        welk object je bedoelt. Zo begrijp ik soms ook welk werkwoord
        je bedoelt aan de hand van het lijdend voorwerp dat je
        gebruikt: als je bijvoorbeeld ~inventaris~ zegt, dan begrijp
        ik dat je ~neem inventaris~ bedoelt, en geef ik je een lijst
        van alles wat je bij je hebt. Sommige objecten hebben
        overigens bijwerkingen: zo is het vogeltje bijvoorbeeld bang
        voor de staf.^^";

print "Veel commando's hebben afkortingen. Je kunt bijvoorbeeld ~i~
        typen in plaats van ~inventaris,~ ~x object~ in plaats van
        ~onderzoek object,~ ~n~ in plaats van ~noord,~ etc.^^";

print "Gewoonlijk moet je, als je problemen hebt met bewegen, gewoon
        een paar andere woorden proberen. Heb je daarentegen geen
        succes met het manipuleren van voorwerpen, dan is het meestal
        zo dat je iets probeert te doen dat jouw (of mijn!)
        capaciteiten te boven gaat. Je kunt dan beter iets heel
        anders proberen.^^";

print "Merk op dat de gangen in de grotten nogal veel draaien.
        Daardoor is het niet altijd zo dat als je een ruimte naar het
        noorden verlaten hebt, je de volgende ruimte vanuit het
        zuiden betreedt.^^";

print "Als je je avontuur voortijdig wilt be@:eindigen, type dan
        ~einde~. Om je avontuur tijdelijk te onderbreken, zodat je
        later weer verder kunt, kun je ~opslaan~ typen, en om een
        opgeslagen spel weer te vervolgen, type je ~inladen~. Om te
        zien hoe goed je ervoor staat, type je ~score~. Om het
        volledige aantal punten voor een schat te krijgen, moet je
        hem veilig achterlaten in het gebouw, maar een deel van de
        punten krijg je al voor het vinden van de schat. Je verliest
        punten als je doodgaat of het spel voortijdig be@:eindigt. Van
        deze twee is doodgaan ernstiger in termen van punten dan
        ophouden. Je krijgt ook punten gebaseerd op hoeveel van de
        grot je daadwerkelijk hebt weten te onderzoeken; in het
        bijzonder krijg je een flinke bonus voor het @:uberhaupt
        binnengaan van de grot (om de beginners van de rest van de
        meute te kunnen onderscheiden), en er zijn andere methodes om
        te bepalen of je je door enkele andere meer pijnlijke stukken
        hebt weten te slaan.^^";

print "Als je denkt dat je alle schatten gevonden hebt, blijf dan
        toch nog een tijdje verder verkennen. Als er niets
        interessants gebeurt, heb je ze nog niet allemaal
        gevonden. Als er *wel* iets interessants gebeurt, betekent
        dat dat je een bonus krijgt en een kans om nog meer punten te
        verzamelen in het stuk voor de meesteravonturiers.^^";

       "Veel succes!";
}
if (menu_item==2)
{
print "Vermoedelijk was de eerste avonturier ooit een mulatto slaaf
        genaamd Stephen Bishop, geboren zo rond 1820: `tenger,
        gracieus en zeer knap'; een `snelle, dappere, enthousiaste'
        gids voor de Mammoetgrot (Mammoth Cave) in de Kentucky
        Karst. Het verhaal van de Grot is een merkwaardige miniversie
        van de Amerikaanse geschiedenis. Z'n ontdekking is onderwerp
        van een legende uit de jaren 1790; men zegt dat een jager,
        John Houchin, een gewonde beer achtervolgde naar een diepe
        kuil nabij de Groene Rivier (Green River) en ";

print "bij toeval de ingang ontdekte. De ingang zat vol
        vleermuizen, en er werd ten tijde van de Oorlog van 1812
        intensief guano geoogst, dat opgelost werd in vaten nitraat
        om zo salpeter te maken voor de productie van buskruit. Na de
        oorlog daalden de prijzen, maar de Grot werd een
        ondergeschikte attractie toen vlakbij een uitgedroogde
        Indiaanse mummie werd gevonden, rechtop gezeten in een stenen
        sarcofaag, omringd door talismannen. In 1815 werd Veulenhoef,
        zoals ze genoemd werd vanwege @'e@'en van de amuletten,
        meegenomen door een circus, en trok ze door heel Amerika
        volle zalen (een tour die wel doet denken aan het lied `De
        Legende van Andrew McCrew' van Don McLean). Zijzelf eindigde in
        het Smithsonian museum, maar de Grot werd vanaf de jaren 1820
        @'e@'en van de wonderen van de wereld genoemd, grotendeels
        dankzij haar posthume inspanningen.^^";

print "Gedurende de eerste helft van de negentiende eeuw waren de
        Europese grotten grote toeristische attracties, maar vrijwel
        niemand bezocht de Mammoet, `wereldwonder' of niet. Ook was
        het toen nog geen bijzonder uitgestrekt stelsel (de naam was
        een overblijfsel van de arbeiders die pochten over hun
        mammoetoogsten guano). In 1838 kocht de eigenaar van Stephen
        Bishop de grot op. Stephen, zoals hij (gebruikelijk voor
        slaven) altijd werd genoemd, was hoe je het ook wendde of
        keerde een bijzonder man: hij had zichzelf Latijn en Grieks
        geleerd en werd beroemd als de `opperste heerser' van zijn
        onderaardse rijk. Hij ";
print "verkende en benoemde veel van het gangenstelsel in zijn vrije
        tijd, waardoor de kaart van de bekende delen in een jaar tijd
        tweemaal zo groot werd. De kenmerkende stijl van de namen van
        delen van de Grot - half thuisgebakken Amerikaans,
        half klassiek - begin met Stephen: de Rivier de Styx, de
        Sneeuwbalkamer, Kleine Vleermuis Galerij, het
        Reuzengewelf. Stephen vond vreemde blinde vissen, slangen,
        stille krekels, de overblijfselen van holenberen (woeste,
        speelse dieren van anderhalve meter lang en @'e@'en meter
        twintig hoog die aan het eind van de vorige ijstijd
        uitstierven), eeuwenoude Indiaanse gipsbeelden en almaar meer
        grot. Zijn kaart uit 1842, geheel uit z'n hoofd getekend,
        werd veertig jaar later nog steeds gebruikt.^^";

print "Als een toeristenattractie (en, daar Stephen's eigenaar een
        filantroop was, kortstondig een sanatorium voor tuberculose
        vanwege een hopeloze medische theorie) werd de Grot big
        business: decennia lang werden de eigendomsrechten van
        nabijgelegen grotten woest geclaimd en eindeloos
        bevochten. De naburige keten, dwars door Houchin's Vallei
        (Houchin's Valley) in de Vuursteen Bergrug (Flint Ridge) opende
        de Grote Onyx Grot (Great Onyx Cave) in 1912. In de jaren
        1920 waren de Kentucky grottenoorlogen ";
print "in volle gang. Rivaliserende eigenaars misleidden toeristen
        met nep politieagenten, huurden stromannen in om elkaars
        rondleidingen te verpesten, brandden kaartverkoophuisjes
        plat, en verspreidden lasterpraat en valse
        advertenties. Grotonderzoek werd zo gevaarlijk en heimelijk,
        dat in 1941 de Amerikaanse regering ingreep, en grote delen
        van het gebied tot Nationaal Park verklaarde, en in effecto
        grotonderzoek verboden. De Goudkoorts van de toeristen was,
        toch al, tanende.^^";

print "In de overtuiging dat de Mammoet en Flint Ridge grotten
        allemaal op elkaar aansloten tot een enorm grottenstelsel
        probeerden onderzoekers jarenlang geheime ingangen,
        uiteindelijk zelfs met offici@:ele steun. In de jaren 1960
        eindigden alle doorgangen vanuit Flint Ridge tot ieders
        frustraties in verstoppingen van keien. Een natuurkundige met
        het `postuur van een rietstengel', Patricia Crowther, boekte
        de doorbraak in 1972 toen ze door de Nauwe Plek wist te
        geraken, en een modderige gang aantrof: het was een verborgen
        gang de Mammoetgrot in.^^";

print "Vanwege de bepalingen in het testament van zijn eigenaar, werd
        Stephen Bishop in 1856 een vrij man. Op dat moment telde de
        grot 226 galerijen, 47 gewelven, 23 schachten en 8
        watervallen. Hij stierf een jaar later, nog voordat hij zijn
        vrouw en zoon kon vrijkopen. In de jaren 1970 werd Crowther's
        modderige doorgang op zijn kaart aangetroffen.^^";

print "De Mammoetgrot is enorm, en zijn totale grootte is nog steeds
        onderwerp van speculatie (schattingen varieren van 500 tot
        800 kilometer). Hoewel dit spel vaak ~Colossal Cave~ genoemd
        is, is het eigenlijk een simulatie van de Bedquilt Grot
        regio. Hier is Will Crowther's verhaal over hoe het allemaal
        zo gekomen is:^^";

print "~Ik was indertijd betrokken geweest bij een computerloos
        rollenspel genaamd ~Dungeons and Dragons~, en ik ben ook
        een actief grotonderzoeker geweest - met name de
        Mammoetgrot in Kentucky. Plotseling raakte ik in
        echtscheiding, en dat liet me op vele manieren niet
        onberoerd. Bovenal miste ik mijn kinderen. Ook was ik gestopt
        met het grottenonderzoek, omdat het te gevaarlijk was
        geworden, dus besloot ik dat ik wat op de computer zou
        klooien en een programma schrijven dat mijn grotonderzoek
        opnieuw zou cre@:eren in een soort fantasie, en meteen ook
        een spel kon zijn voor de kinderen, misschien zelfs met wat
        elementen uit mijn ervaring met het spelen van Dungeons and
        Dragons.^^";

print "Mijn idee was dat dit een computerspel zou worden dat niet
        intimiderend zou zijn voor niet-computer mensen, en dat was
        @'e@'en van de redenen dat ik het spel zo maakte, dat de
        speler het spel met het invoeren van natuurlijke taal
        bestuurt, in plaats van met meer gestandaardiseerde
        commando's. Mijn kinderen vonden het erg leuk.~ [Geciteerd in
        ~Genesis II: Creation and Recreation with Computers~, Dale
        Peterson (1983).]^^";

print "Crowther's oorspronkelijke FORTRAN programma had iets van vijf
        schatten, maar geen formeel scoresysteem. De uitdaging was
        vooral om te onderzoeken, ondanks tegenstand was van
        bijvoorbeeld een slang. Zoals de echte Bedquilt regio heeft
        Crowther's spel een kaart van zo'n vier diepteniveaus en is
        rijk in geologische details.  Een goed voorbeeld is de oranje
        zuil die afdaalt naar de Oranje Riviersteenkamer (waar de
        vogel woont): de echte zuil is van oranje travertijn, een
        prachtig mineraal dat in natte kalksteen gevonden wordt.^^";

print "Het taalgebruik van het spel is beladen met verwijzingen naar
        grotonderzoek, zoals `gewelven' en `schachten'. Een `platte
        steen kamer', bijvoorbeeld, is een heel oude grot waarvan het
        plafond is begonnen af te brokkelen in scherpe schilfers die
        in een vreemdsoortige berg op de grond verspreid liggen. Het
        gebruik dat het programma van het woord `kamer' maakt voor
        de meest uiteenlopende soorten grotten en ruimtes doet in
        het dagelijks taalgebruik wellicht wat onzorgvuldig aan, ";
print "maar is wijdverbreid in het wereldje van grotonderzoekers en
        gaat zeker zover terug als Stephen Bishop: het gebruik van
        het woord `kamer' in de betekenis `ruimte' of `locatie' is
        wellicht zelfs zijn erfenis.^^";

print "Het spel zette de beslissende stap naar het oplossen van
        puzzels toen Don Woods, een student aan de Universiteit van
        Stanford, de fouten uit het spel haalde, en het
        uitbreidde. Hij verdrievoudigde het aantal schatten, en
        voegde alle niet-geologische zones toe: alles vanaf de
        Trollenbrug en verder, benevens de meeste voorkamertjes op
        het Bedquilt niveau. Elk van de vele imitaties en
        uitbreidingen van het originele Adventure zijn in essentie
        gebaseerd op de 350-punten editie van Woods. (veel
        opgeblazen, gecorrumpeerde of uitgebreide - het hangt er
        vanaf hoe je het bekijkt - versies circuleren op het
        internet, en de meest handige manier om ze te identificeren
        is middels de hoogst bereikbare score. Er bestaan vele
        versies met maximumscores van rond de 400 en 500, en een
        enkele van 1000. Woods zelf brengt ook nog steeds regelmatig
        nieuwe versies van zijn spel uit; de meeste anderen missen
        zijn talent.)^^";

print "Alhoewel het spel zich weg van de pure simulatie heeft
        ontwikkeld, is een groot deel ervan toch nog steeds
        realistisch. Grotonderzoekers keren daadwerkelijk terug
        wanneer hun carbidlampen flakkeren; er zijn inderdaad
        mysterieuze merktekens en initialen te vinden op de muren
        van de grot, sommige achtergelaten door arbeiders, anderen
        door Bishop, en weer anderen door onderzoekers uit de jaren
        1920. Er is natuurlijk geen actieve vulkaan in centraal
        Kentucky, en evenmin zijn daar draken en dwergen. Maar
        zelfs deze verfraai@:ingen zijn, in zekere zin, afgeleid ";
print "van tradities: zoals veel van de eerste rollenspellen heeft
        `Adventure' veel te danken aan J. R. R. Tolkien's `The
        Hobbit' en de doorgang door de bergen en Moria uit `The
        Lord of the Rings' (volgens sommigen de meest dramatische
        en atmospherische passage). Tolkien zelf, de meest
        succesvolle mythe-maker van de twintigste eeuw, werkte naar
        voorbeelden van IJslandse, Finse en Welshe sagen.^^";

print "In 1977 circuleerden overal tapes met `Adventure',
        onder anderen dankzij de Digital gebruikersgroep DECUS: het
        spel verslond lunchpauzes en weekends waar het ook maar
        kwam... maar dat is een ander verhaal. (Tracy Kidder's
        fantastische boek `De ziel van een nieuwe machine', de visie
        van een journalist op een mainframe ontwikkelgroep, brengt
        het goed onder woorden.)^^";

 "dit is een kopie uit de derde of vierde hand: van Will Crowther's
     origineel naar Donald Woods' 350-punten editie en via Donald
     Ekman's PC-versie naar David M. Baggett's uitstekende TADS
     versie (1993), naar deze mooie Inform-implementatie van Graham
     Nelson, die ik weer in het Nederlands vertaald heb.^^";
}

if (menu_item==3)
{
print "Deze versie is behoorlijk trouw aan het origineel. De puzzels,
        voorwerpen en plaatsen van Woods' oorspronkelijke 350-punten
        versie zijn exact hetzelfde hier.^^";

print "Ik heb hier en daar een paar behulpzame mededelingen toegevoegd
        zoals ~Dit is een doodlopende gang.~, en een aantal ~initiele
        positie~ mededelingen van objecten, zoals het (nogal suffe)^
        ^  Hier ligt wat smakelijk voedsel.^^
        van broncodebestanden die zeker oud zijn, doch niettemin van
        bedenkelijk allooi. Ze lijken echter uitstekend bij de
        verdere tekststijl te passen.^^";

print "Het scoresysteem is hetzelfde als het origineel, behalve dat
        je niet langer 4 punten verliest als je het spel voortijdig
        be@:eindigt (je krijgt de score namelijk toch niet te zien
        wanneer je een Inform-spel be@:eindigt, dus dit maakt geen
        enkel verschil) en, iets controversi@:eler, ik vergeef alvast
        vijf punten voor het meedragen van een schat, zoals enkele
        versies uit het begin van de jaren 1980 deden. De enige
        significante verandering is dat men de magische woorden niet
        kan gebruiken totdat hun bestemmingen bezocht zijn.^^";

print "De dwergen zijn wat eenvoudiger in hun bewegingen, maar aan de
        andere kant heb ik weer enkele boodschappen toegevoegd
        waardoor ze een betere interactie met de rest van het spel
        hebben. De waarschijnlijkheden zijn hetzelfde als in het
        oorspronkelijke spel.^^";

print "In het originele spel kan men de naam van een kamer typen om
        deze te bezoeken: omwille van de bondigheid van de broncode
        heb ik deze mogelijkheid achterwege gelaten, maar niet zonder
        enige spijt.^^";

print "De tekst zelf is vrijwel overal intact gehandhaafd, maar ik
        heb enkele spellings- en grammaticale fouten verbeterd (en
        enkele totaal misleidende en welhaast magische opmerkingen
        veranderd). De instructies zijn op enkele punten gewijzigd
        (de redenen hiervoor lijken me duidelijk) maar zijn in
        principe zoals ze geschreven waren.^^";

      "Een goede bron voor details is de broncode van David Bagget,
    welke op het internet beschikbaar is.";
}

print "Wist je dat...^^";

print "De vijf dwergen een kans van 96% hebben om je te volgen,
       behalve naar het licht, de schachten in of wanneer ze zichzelf
       bewonderen: en die gemene rotmesjes hebben een trefkans van
       9.5%.^^";

print "Draken verbranden dwergen (wellicht doordat dwergen
       uitsluitend steenkool eten).^^";

print "De beer (die van de vulkaan houdt) is te zwaar voor de brug...
       en je kunt terug gaan naar de plaats des onheils nadat je weer
       tot leven gewekt bent.^^";

print "Je kunt langs de slang glippen het geheime Oost/West ravijn
       in, althans in 35% van de gevallen. En in het donker rondlopen
       is helemaal niet zo griezelig: je hebt slechts 25% kans in een
       schacht te pletter te vallen.^^";

print "De vaas vindt het niet leuk om te worden ondergedompeld.^^";

print "Schaduwachtige figuren kunnen naar elkaar zwaaien.^^";

print "Water over de scharnieren van de deur gieten zorgt ervoor dat
       ze weer vastroesten.^^";

print "Wanneer de grot sluit gaat het rooster op slot, en worden de
       sleutels weggegooid. De schepsels rennen weg en de kristallen
       brug verdwijnt...^^";

print "...en een compleet zinloze hint staat geschreven op de schelp
       van de oester in het eindspel. (Om deze hint iets eerlijker te
       maken, heb ik @'e@'en woord veranderd, en enkele suggesties
       elders in het spel geplaatst.)^^";

       "Dat laatste stomme punt kun je krijgen door... maar nee. Dan
       zou ik teveel verklappen.";
];

[ HelpSub;

if (deadflag~=2)
DoMenu("Er is informatie beschikbaar over de volgende onderwerpen:^
        ^     Instructies voor het spelen
        ^     Een historische inleiding
        ^     Hoe authentiek is deze versie?^",
        HelpMenu, HelpInfo);
else
DoMenu("Er is informatie beschikbaar over de volgende onderwerpen:^
        ^     Instructies voor het spelen
        ^     Een historische inleiding
        ^     Hoe authentiek is deze versie?
        ^     Wist je dat...^",
        HelpMenu, HelpInfo);

];

[ Amusing; HelpSub(); ];

! ----------------------------------------------------------------------------
!   New verbs (to add to the library stock)
! ----------------------------------------------------------------------------

[ CatchSub;
 "Je kunt ", (the) noun, " niet vangen.";
];

[ ReleaseSub;
 "Je kunt ", (the) noun, " vrijlaten.";
];

[ WaterSub;
 if (bottle in player) <<Empty bottle>>;
 "Water? Welk water?";
];

[ OilSub;
 if (bottle in player) <<Empty bottle>>;
 "Olie? Welke olie?";
];

[ OnSub; if (brass_lantern notin player) "Je hebt geen lamp.";
 <<SwitchOn brass_lantern>>;
];

[ OffSub; if (brass_lantern notin player) "Je hebt geen lamp.";
 <<SwitchOff brass_lantern>>;
];

[ XyzzySub; "Er gebeurt niets."; ];
[ PlughSub; "Er gebeurt niets."; ];
[ PloverSub; "Er gebeurt niets."; ];
[ FeeSub; FthingSub(0); ];
[ FieSub; FthingSub(1); ];
[ FoeSub; FthingSub(2); ];
[ FooSub; FthingSub(3); ];

[ FthingSub i;

 if (feefie_count~=i) { feefie_count=0; "Doe het wel goed, kluns!"; }

 if (feefie_count++ == 3)
 {   feefie_count=0;
     if (golden_eggs in In_Giant_Room) "Er gebeurt niets.";
     if ((golden_eggs in player) || (golden_eggs in location))
         print "Het nest gouden eieren is verdwenen!^";
     else print "Gedaan!";
     if (golden_eggs in player) score=score-5;
     if (golden_eggs in Inside_Building)
         score=score-golden_eggs.depositpoints;
     move golden_eggs to In_Giant_Room;
     if (location==In_Giant_Room)
       "^^Plotseling verschijnt er vanuit het niets een nest vol
         gouden eieren!";
 }
 else "Ok.";
];

[ CountSub;
   if (noun has multitude) "Dat zijn er behoorlijk veel.";
   "Ik zie @'e@'en (1) ", (name) noun, ".";
];
[ UseSub; "Je zult iets explicieter moeten zijn dan je nu bent."; ];
[ BlastWithSub;
    if (second~=black_mark_rod) "Om iets op te blazen heb je dynamiet
       nodig.";
    "Heb je weer van die rare brownies gegeten?";
];
[ OldMagicSub; "Goede poging, maar dat is een oud, versleten toverwoord."; ];
[ KickSub; <<Attack noun>>; ]; ! For kicking dwarves

[ BlastSub;
 if (location~=At_Sw_End or At_Ne_End) "Frustrerend, is het niet?";
 if (location==At_Sw_End && parent(black_mark_rod)==At_Ne_End)
 {   score=score+35;
     deadflag=2;
     "Er volgt een luide explosie en een zes meter groot gat verschijnt
     in de muur aan de overkant, de dwergen begravend onder het
     puin. Je loopt door het gat heen en komt terecht in het
     hoofdkantoor, waar een juichende groep elfen de zegevierende
     avonturier wegdragen, de zonsondergang tegemoet.";
 }
 if (location==At_Ne_End && parent(black_mark_rod)==At_Sw_End)
 {   score=score+20;
     deadflag=1;
     "Er volgt een luide explosie, en een zes meter groot gat verschijnt
     in de muur aan de overkant, de slangen begravend onder het
     puin.  Een rivier van gesmolten lava stroomt naar binnen door
     het ontstane gat, en vernietigt alles op z'n pad, inclusief
     jou!";
 }
 deadflag=1;
 "Er volgt een luide explosie, en plotseling ben je uitgesmeerd over
   alle wanden van de ruimte.";
];

! ----------------------------------------------------------------------------
!   Resurrection
! ----------------------------------------------------------------------------

[ AfterLife o;
 if (deadflag==3) { deadflag=1; rfalse; }
 print "^^";
 if (caves_closed)
     "Het ziet ernaar uit dat je dood bent. Nu ja, met het oog op het
     feit dat het toch bijna sluitingstijd is, denk ik dat we er voor
     vandaag maar een eind aan moeten maken.";
 switch(deaths)
 {   0: print "Oh jee, het lijkt erop dat je jezelf de dood in hebt
         gejaagd. Ik zou je misschien kunnen helpen, maar ik heb dat
         eerlijk gezegd nooit eerder gedaan. Wil je dat ik probeer je
         te re@:incarneren?^^";
     1: print "Jij onhandige kluns! Je hebt het alweer voor elkaar! Ik
         weet niet hoe lang ik dit vol kan houden. Wil je dat ik je
         nog een keer probeer te re@:incarneren?^^";
     2: print "Nu heb je het echt voor elkaar! Al m'n oranje rook is op!
          Je verwacht toch zeker geen fatsoenlijke re@:incarnatie
         zonder oranje rook, wel?^^";
 }

 print "> ";
 if (YesOrNo() == false)
 {   switch(deaths)
     {   0: "Uitstekend.";
         1: "Waarschijnlijk een verstandige keuze.";
         2: "Ik dacht het niet!";
     }
 }

 switch(deaths)
 {   0: print "Goed dan. Maar het is niet mijn schuld als er iets
            fout g......^^^^
            --- POEF!! ---^^
            Je wordt overspoeld door een dichte wolk oranje rook.
            Hoestend en proestend kom je uit de rok tevoorschijn en
            je ziet dat je....^";
     1: print "Ok, waar heb ik mijn oranje rook ook al weer
            gelaten?.... >POEF!<
            ^^Alles verdwijnt in een dichte wolk van oranje rook.^";
     2: "Ok, als je dan zo slim bent, doe het dan maar lekker zelf!
            Ik ga er vandoor!";
 }

 deaths++; score=score-10;

 if (location~=thedark)
 {   while (child(player) ~= nothing)
     {   o=child(player);
         move o to location;
         if (o ofclass Treasure) score=score-5;
     }
 }
 else
 {   while (child(player) ~= nothing)
     {   o=child(player);
         move o to real_location;
         if (o ofclass Treasure) score=score-5;
     }
 }

 move brass_lantern to At_End_Of_Road; give brass_lantern ~on ~light;
 remove dwarf;
 deadflag=0;
 PlayerTo(Inside_Building);
];

! ----------------------------------------------------------------------------
!   How to cheat in the test version: no dwarves or pirates, and magic words
!   working from the beginning
! ----------------------------------------------------------------------------

#IFDEF TEST_VERSION;
[ XdetermSub; StopDaemon(dwarf); StopDaemon(pirate);
 give In_Debris_Room visited; give At_Y2 visited; give In_Plover_Room visited;
];
#ENDIF;

! ----------------------------------------------------------------------------
!   Grammar: the usual grammar and some extensions
! ----------------------------------------------------------------------------

Include "GrammarD";

Verb "aan"
               *                                -> On;
Extend only "uit" replace
               *                                -> Off;

Verb "vang" "jaag"
               * creature                       -> Catch
               * creature "met" held            -> Catch;
Verb "bevrijd" "vrij" "laat"
               * creature                       -> Release
               * creature "vrij"                -> Release
               * "vrij" creature                -> Release;
Verb "giet" "schenk" "doof"
               * "water" "op"/"in" noun         -> Water
               * "olie" "op"/"in" noun          -> Oil
               * noun                           -> Empty;
Extend only "geef"
               * "water" "aan" noun             -> Water;
Verb "water" "bewater" "begiet"
               * noun                           -> Water;
Verb "olie" "vet" "smeer"
               * noun                           -> Oil
               * noun "in"                      -> Oil;
Verb "plugh"    *                                -> Plugh;
Verb "xyzzy"    *                                -> Xyzzy;
Verb "plover" "plevier" "kievit"
               *                                -> Plover;
Verb "sesam" "shazam" "hocus" "abracadabra"
    "foobar" "sesam-open-u" "frotz"
               *                                -> OldMagic;
Verb "fee"      *                                -> Fee;
Verb "fie"      *                                -> Fie;
Verb "foe"      *                                -> Foe;
Verb "foo"      *                                -> Foo;

Verb "help"     *                                -> Help;
Extend only "schop" replace
               * noun                           -> Kick;
Verb "tel"      * noun                           -> Count;
Verb "gebruik"  *                                -> Use;
Verb "ontplof"
               *                                -> Blast
               * "op"                           -> Blast
               * noun "met" held                -> BlastWith
               * noun "op" "met" held           -> BlastWith;
Extend only "blaas"
               *                                -> Blast
               * "op"                           -> Blast
               * noun "met" held                -> BlastWith
               * noun "op" "met" held           -> BlastWith;

#IFDEF TEST_VERSION;
Verb "xdeterm"  *                                -> Xdeterm;
#ENDIF;

! ----------------------------------------------------------------------------