DUKE NUKEM 3D (tm),
including all versions, patches and upgrades (the "Game")
Copyright 1996 3D Realms Entertainment - a division of Apogee Software, Ltd.
P.O. Box 496419, Garland, TX 75049
TEL: 1+214-271-2137 ("3D Realms").  All rights reserved.

BY COPYING OR USING THIS PROGRAM, YOU INDICATE YOUR AGREEMENT TO THE FOLLOWING
TERMS, WHICH ARE THE ONLY ONES BY WHICH 3D REALMS PERMITS COPYING OR USE. THIS
PROGRAM IS NOT SHAREWARE. DISTRIBUTING IT WITHOUT 3D REALMS' PERMISSION IS
ILLEGAL.

[1] OWNERSHIP.  Except to the extent expressly licensed by us, we have and
    reserve the exclusive copyright, trade secret and other rights to the
    Program, and the right to use the Trademarks "3D Realms", the 3D Realms
    "logo", "Duke Nukem", "Duke Nukem 3D" and any of the characters contained
    within the Game in connection with it.

[2] USE AND COPIES. You may use the Program only for your own purposes "just
    like a book".  This permits use by any number of people on any number of
    machines to use it so long as -- just like a book -- there is NO
    POSSIBILITY that more than one copy will be used at a time.  You have no
    right to copy this Program except for legal backups.

[3]  NEW LEVELS.

     "New Levels" are data that modify or substitute for Game data, thus
     modifying or replacing one or more Game levels.  Creating or distributing
     a New Level or a software tool that has no substantial purpose other than
     to contribute to the creation of a New Level infringes rights of 3D Realms
     and is prohibited by law except as permitted by 3D Realms.  3D REALMS
     PERMITS NEW LEVELS ONLY THAT MEET ALL OF THE FOLLOWING CONDITIONS:

 [A] The Level must only work with a RETAIL episode of the Game. It must NOT
     work with this Episode One.

 [B] The level must not contain modifications to any COM, EXE, or DLL, or to
     other executable file.

 [C] The level must not contain any illegal material, or (without
     appropriate irrevocable licenses) any trademarks, copyright protected
     work, or other property of third parties.

 [D] The level must prominently identify at least in every online description
     and with reasonable duration on an opening screen
     (1) the name and email address of the level's creators, and
     (2) the words "THIS LEVEL IS NOT MADE BY OR SUPPORTED BY 3D REALMS".

 [E] The level and any use of it must be offered solely for free (other than
     any incidental online charges).

 [F] By distributing or permitting the distribution of any New Level, all
     owners of any trademark, copyright or other right, title or interest
     therein (to the extent different from the Game as originally distributed
     by 3D Realms) grant back to 3D Realms an irrevocable royalty free right
     to distribute the level.

 [G] The distributor of any New Level or Level Editor must be authorized to
     distribute the Game itself (either in writing, or by being within a
     category where no writing is needed under this LICENSE.DOC).

[4] LIMITED WARRANTY AND LIMITATION OF REMEDIES

    If this Program (including any related written material) contained a
    physical defect, you may receive a replacement if you return it within
    90 days of receiving it from 3D Realms.  Aside from this, IT IS PROVIDED
    "AS-IS", AND NO WARRANTIES OF ANY KIND (INCLUDING IMPLIED WARRANTIES OF
    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE), EXPRESS OR IMPLIED,
    ARE MADE AS TO IT OR ANY MEDIUM IT MAY BE ON.  OUR ENTIRE LIABILITY AND
    YOUR EXCLUSIVE REMEDY IS SUCH REPLACEMENT, AND UNDER NO CIRCUMSTANCES WILL
    WE PROVIDE ANY OTHER REMEDY FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
    PUNITIVE, INCIDENTAL OR OTHER DAMAGES ARISING FROM IT, INCLUDING SUCH FROM
    NEGLIGENCE, STRICT LIABILITY, OR BREACH OF WARRANTY OR CONTRACT, EVEN AFTER
    NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  Some states do not allow the
    exclusion or limitation of implied warranties or liability for incidental
    or consequential damages, so this may not apply to buyers of the Program.
    This gives you specific legal rights, and you may also have other rights
    which vary from state to state.

[5] MISCELLANY

    [A] With respect to every matter arising under this, you consent to the
        exclusive jurisdiction and venue of the state and federal courts
        sitting in Dallas, Texas and to service by certified mail, return
        receipt requested, or as otherwise permitted by law.

    [B] You will not modify, reverse compile, disassemble, or reverse engineer
        the Program, or use or disclose any of our secret information that it
        contains.

[V.04.18.96]
