High Resolution Pack Art License

This Work is provided under the terms of this License.
The Work is protected by copyright and/or other applicable law. Any use of the 
Work other than as authorized under this license is prohibited by law.

BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE 
BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED 
TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN 
CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.


Definitions:
------------

"Adaptation" means a work based upon the Work, or upon the Work and other 
pre-existing works, such as a translation, modification, derivative work, 
arrangement or other alterations of an artistic work, or phonogram or 
performance and includes cinematographic adaptations or any other form in 
which the Work may be recast, transformed, or adapted including in any form 
recognizably derived from the original.

"Distribute" means to make available to the public the original and copies of 
the Work or Adaptation, as appropriate, through any transfer of ownership.

"Licensor" means the individual, individuals, entity or entities that offer(s) 
the Work under the terms of this License.

"Author" means, in the case of a literary or artistic work, the individual, 
individuals, entity or entities who created the Work or if no individual or 
entity can be identified, the publisher.

"Work" means the artistic and/or musical content offered under the terms of 
this License including without limitation any production in the literary, 
scientific and artistic domain, whatever may be the mode or form of its 
expression including digital form.

"You" means an individual or entity exercising rights under this License who 
has not previously violated the terms of this License with respect to the Work, 
or who has received express permission from the Licensor to exercise rights 
under this License despite a previous violation.

"Reproduce" means to make copies of the Work by any means.


Terms:
------

You are free to copy, alter, distribute, reproduce and transmit this Work, 
subject to the following conditions:

1. You may not use this Work or anything contained in this Work for commercial 
   purposes.

2. You must attribute this Work in the manner specified by the authors or 
   licensor.

3. Any likenesses, characters, sounds, phrases or references specific to 
   Duke Nukem, 3D Realms Entertainment, or Apogee Software Ltd. appear in this 
   Work courtesy of 3D Realms Entertainment and are the exclusive property of 
   3D Realms Entertainment, and are provided only to be used with a legally 
   acquired copy of Duke Nukem 3D. You may not alter, transform, build upon or 
   adapt any portion of this Work specifically related to or derived from the 
   Duke Nukem intellectual property, including likenesses, characters, sounds, 
   phrases or references for any purpose other than use with a legally acquired 
   copy of Duke Nukem 3D.

4. Any works based upon altered, transformed, or copied parts of this Work must 
   be distributed under a license identical or similar to this one.

5. For any reuse or distribution of this Work, you must make clear to others 
   the license terms of this Work.

6. The producers and/or authors of this Work explicity reject any liability for 
   any damages resulting from use or misuse of this Work by any Licensee or 
   other third party.
