		 LIMITED USE SOFTWARE LICENSE AGREEMENT

     This Limited Use Software License Agreement (the "Agreement") is a legal agreement between you, the end-user, Id Software, Inc. ("ID") and Activision, Inc. ("Activision").  By continuing the installation of this game program entitled QUAKE II, by loading or running the game program, or by placing or copying the game program onto your computer hard drive, computer RAM or other storage, you are agreeing to be bound by the terms of this Agreement.

     1.  Grant of License for Software.  Subject to the terms and conditions of this Agreement, ID grants to you the non-exclusive and limited right to use the software game program entitled QUAKE II in executable or object code form only (the "Software") for recreational purposes only.  The term "Software" includes all elements of the Software such as data files, images appearing in the Software and screen displays.  You are not receiving any ownership or proprietary right, title or interest in or to the Software or the copyright, trademarks, or other rights related thereto.  For purposes of this section, "use" means loading the Software into RAM and/or onto computer hard drive, as well as installation of the Software on a hard disk or other storage device.
You agree that the Software will not be shipped, transferred or exported into any country in violation of the U.S. Export Administration Act (or any other law governing such matters) by you or any one at your direction and that you will not utilize and will not authorize anyone to utilize, in any other manner, the Software in violation of any applicable law.  The Software may not be exported or reexported into (or to a national or resident of) any country to which the U.S. has embargoed goods or to anyone or into any country who/which are prohibited, by applicable law, from receiving such property.

     2.  Additional Levels.  Subject to the terms and conditions of this Agreement, ID grants to you the non-exclusive and limited right to create additional levels (the "Levels") which are operable with the Software.  You may include within the Levels certain textures and other images (the "ID Images") from the Software.  You agree that the Levels will not be shipped, transferred or exported into any country in violation of the U.S. Export Administration Act (or any other law governing such matters) by you or anyone at your direction and that you will not utilize and will not authorize anyone to utilize, in any other manner, the Levels in violation of any applicable law.  The Levels may not be downloaded or otherwise exported or re-exported into (or to a national or resident of) any country to which the U.S. has embargoed goods or to anyone or into any country who/which are prohibited by applicable law, from receiving such property.
You shall not rent, sell, lease, lend, offer on a pay-per-play basis or otherwise commercially exploit or commercially distribute the Levels.  You are only permitted to distribute for free, without any cost or charge, the Levels to other endusers.  As noted below, in the event you commercially distribute or commercial exploit the Levels or commit any other breach of this Agreement, your licenses, as granted in this Agreement, shall automatically terminate, without notice. You hereby agree to indemnify, defend and hold harmless ID and Activision and ID's and Activision's respective officers, employees, directors, agents, licensees (excluding you), sublicensees (excluding you), successors and assigns from and against all losses, lawsuits, damages, causes of action and claims relating to and/or arising from the Levels and/or the distribution or other use of the Levels.


     3.  Prohibitions with Regard to Software. You, either directly or in- directly, shall not do any of the following acts:

     a.  rent the Software;

     b.  sell the Software;

     c.  lease or lend the Software;

     d.  offer the Software on a pay-per-play basis;

     e.  distribute the Software by any means, including, but not limited to, Internet or other electronic distribution, direct mail, retail, mail order or other means;

     f.  in any other manner and through any medium whatsoever commercially exploit the Software or use the Software for any commercial purpose;

     g.  disassemble, reverse engineer, disassemble, decompile, modify or alter the Software;

     h.  translate the Software;

     i.  reproduce or copy the Software (except as permitted by section 4. hereinbelow);

     j.  publicly display the Software; or

     k.  prepare or develop derivative works based upon the Software.

     4.  Permitted Copying.  You may make only the following copies of the Software:  (i) you may copy the Software from the CD ROM which you purchase onto your computer hard drive; (ii) you may copy the Software from your computer hard drive into your computer RAM; and (iii) you may make one (1) "back up" or archival copy of the Software on one (1) hard disk.

     5.  Intellectual Property Rights.  The Software, including the ID Images, and all printed material accompanying the Software (the "Printed Materials") and all copyrights, trademarks and all other conceivable intellectual property rights related to the Software, the Printed Materials and the ID Images are owned by ID and are protected by United States copyright laws, international treaty provisions and all applicable law, such as the Lanham Act.  You must treat the Software, the Printed Materials and the ID Images like any other copyrighted material, as required by 17 U.S.C., §101 et seq. and other applicable law.  You agree to use your best efforts to see that any user of the Software licensed hereunder, the Printed Materials or the Levels complies with this Agreement.  You agree that you are receiving a copy of the Software, including the ID Images, and the Printed Material by license only and not by sale and that the "first sale" doctrine of 17 U.S.C. §109 does not apply to your receipt or use of the Software, the Printed Materials or your inclusion of any ID Images in the Levels.  This section 5. shall survive the cancellation or termination of this Agreement.

     6.  No ID Warranties.  ID DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, WITH RESPECT TO THE SOFTWARE, THE PRINTED MATERIALS AND THE ID IMAGES.  ID DOES NOT WARRANT THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE OR THAT THE SOFTWARE WILL MEET YOUR SPECIFIC REQUIREMENTS.  ADDITIONAL STATEMENTS SUCH AS PRESENTATIONS, WHETHER ORAL OR WRITTEN, DO NOT CONSTITUTE WARRANTIES BY ID AND SHOULD NOT BE RELIED UPON.  This section 6.  shall survive the cancellation or termination of this Agreement.

     7.  Limited Activision Warranty.  Activision warrants to the original consumer purchaser of the Software that the recording medium on which the Software is recorded will be free from defects in material and workmanship for 90 days from the date of purchase.  If the recording medium is found defective within 90 days of original purchase, Activision agrees to replace, free of charge, any product discovered to be defective within such period upon its receipt of the product, postage paid, with proof of the date of purchase, as long as the Software is still being manufactured by Activision.  In the event that the Software is no longer available, Activision retains the right to substitute a similar program of equal or greater value.  This warranty is limited to the recording medium containing the Software as originally provided by Activision and is not applicable to normal wear and tear. This warranty shall not be applicable and shall be void if the defect has arisen through abuse, mistreatment, or neglect.
EXCEPT AS SET FORTH ABOVE, THIS WARRANTY IS IN LIEU OF ALL OTHER WARRANTIES, WHETHER ORAL OR WRITTEN, EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT, AND NO OTHER REPRESENTATIONS OR CLAIMS OF ANY KIND SHALL BE BINDING ON OR OBLIGATE ACTIVISION.

When returning the Software for warranty replacement, the original product disks must be sent only in a protective packaging and include: (1) a photocopy of your dated sales receipt; (2) your name and return address typed or clearly printed; (3) a brief note describing the defect, the problem(s) you are encountered and the system on which you are running the Software; (4) if you are returning the Software after the 90-day warranty period, but within one year after the date of purchase, please include check or money order for $10 U.S. (A$17 for Australia, or £10.00 for Europe) currency per CD or floppy disk replacement. Note: Certified mail recommended.

In the U.S. send to
Warranty Replacements
Activision, Inc.
P.O. Box 67713
Los Angeles, California  90067

In Europe send to:
Activision
Gemini House
133 High Street
Yiewsley
West Drayton
Middlesex UB7 7QL
United Kingdom

In Australia and Asia Pacific territories send to:
Warranty Replacements
Activision
P.O. Box 873
Epping, NSW 2121
Australia

     8.  Venue and Liability Limitation.  This Agreement shall be construed in accordance with and governed by the laws of the State of Texas and applicable United States federal law.  Copyright and other proprietary matters will be governed by United States laws and international treaties.  Except as set forth below, exclusive venue for all litigation with regard to this Agreement shall be in Dallas County, Texas and you agree to submit to the jurisdiction of the courts in Dallas, Texas for any such litigation.  Exclusive venue for all litigation involving Activision, but not involving ID, with regard to this Agreement shall be in Los Angeles County, California and you agree to submit to the jurisdiction of the courts in Los Angeles, California for any such litigation.
IN ANY CASE, NEITHER ID, ACTIVISION, NOR ANY OF ID'S OR ACTIVISION'S RESPECTIVE OFFICERS, EMPLOYEES, DIRECTORS, AGENTS, LICENSEES (EXCLUDING YOU), SUBLICENSEES (EXCLUDING YOU), SUCCESSORS OR ASSIGNS SHALL BE LIABLE FOR LOSS OF DATA, LOSS OF  PROFITS, LOST SAVINGS, SPECIAL, INCIDENTAL, CONSEQUENTIAL, INDIRECT, PUNITIVE OR OTHER SIMILAR DAMAGES ARISING FROM BREACH OF WARRANTY, BREACH OF CONTRACT, NEGLIGENCE, STRICT PRODUCT  LIABILITY, OR OTHER LEGAL THEORY EVEN IF ID, ACTIVISION OR THEIR RESPECTIVE AGENT(S) HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR EVEN IF SUCH DAMAGES ARE FORESEEABLE, OR LIABLE FOR ANY CLAIM BY ANY OTHER PARTY.  Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so the above limitation or exclusion may not apply to you.  This section 8. shall survive the cancellation or termination of this Agreement.

     9.  U.S. Government Restricted Rights.  To the extent applicable, the United States Government shall only have those rights to use the Software, the Printed Materials and ID Images appearing in the Levels as expressly stated and expressly limited and restricted in this Agreement, as provided in 48. C.F.R. §§ 227.7202-1 through 227.7204.

     10.  General Provisions.  Neither this Agreement nor any part or portion hereof shall be assigned or sublicensed by you.  ID and Activision each may assign its respective rights under this Agreement in the assigning party's sole discretion.  Should any provision of this Agreement be held to be void, invalid, unenforceable or illegal by a court, the validity and enforceability of the other provisions shall not be affected thereby.  If any provision is determined to be unenforceable, you agree to a modification of such provision to provide for enforcement of the provision's intent, to the extent permitted by applicable law.  Failure of ID or Activision to enforce any provision of this Agreement shall not constitute or be construed as a waiver of such provision or of the right to enforce such provision.  If you fail to comply with or breach any term or condition of this Agreement, YOUR LICENSES AND THIS AGREEMENT ARE AUTOMATICALLY TERMINATED, WITHOUT NOTICE.  In the event this Agreement is terminated, you shall have no right to use the Software, the Printed Materials or the Levels, in any manner, and you shall immediately destroy all copies of the Software, the Printed Materials and the Levels in your possession, custody or control.
YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, THAT YOU UNDERSTAND THIS AGREEMENT, AND UNDERSTAND THAT BY CONTINUING THE INSTALLATION OF THE SOFTWARE, BY LOADING OR RUNNING THE SOFTWARE, OR BY PLACING OR COPYING THE SOFTWARE ONTO YOUR COMPUTER HARD DRIVE OR RAM, YOU AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT.  YOU FURTHER AGREE THAT, EXCEPT FOR WRITTEN SEPARATE AGREEMENTS BETWEEN ID, ACTIVISION AND YOU, IF ANY, THIS AGREEMENT IS A COMPLETE AND EXCLUSIVE STATEMENT OF THE RIGHTS AND LIABILITIES OF THE PARTIES HERETO.  THIS AGREEMENT SUPERSEDES ALL PRIOR ORAL AGREEMENTS, PROPOSALS OR UNDERSTANDINGS, AND ANY OTHER COMMUNICATIONS BETWEEN ID, ACTIVISION AND YOU RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.


November 14, 1997


LIMITED USE SOFTWARE LICENSE AGREEMENT
3406.0400/DWC/DOC/1878.doc
