I.A. Terms of use
=================

  You may use ADOM freely provided you acknowledge the following terms
  and abide by them:

        1. ADOM must only be distributed in the packages created by
           Thomas Biskup, the maintainer of the game.  The packages
           must remain complete and all components must not be altered
           in any way.

        2. You may not charge more than $3 for the distribution of
           ADOM (values as of November, 2001).

        3. You do not challenge ADOM's copyright in any way.

        4. If you distribute ADOM with a magazine, a CD-ROM distribution
           or a similar medium, you abide by the terms defined in section
           I.B.

        5. You follow all other licensing terms (as given by entering
           'adom -b' and 'adom -g').

        6. You acknowledge that the author of ADOM is in no way
           responsible for damage done to your system due to ADOM usage.

        7. If you play ADOM for a prolonged amount of time and enjoy
           it, you agree to abide by the terms of section I.C.


  Failure to honor these terms will be a severe violation of the license
  and could result in legal measures being taken if you are deemed
  important enough to deserve it.


I.B. Distributing ADOM in magazines, on disks, etc.
===================================================

  You can freely distribute ADOM with magazines, in game compilations,
  etc. provided you abide by the following terms:

        1. You honor all terms listed in section I.A.

        2. You agree to notify the author of ADOM, Thomas Biskup, either
           by email at adom@adom.de or by sending a written letter
           to the following address:

                Thomas Biskup
                Timmerbrinksweg 37
                45896 Gelsenkirchen
                Germany

        3. You send two complimentary copies of your product (one for
           actual examination and one for being stored in my safe) to the
           address given under #2 (or, if it is an electronic publication,
           to the email address given above).

  Failure to do so will be a severe violation of this licensing agreement
  and will incur legal measures.
