SOFTWARE LICENSE AGREEMENT

This ENEMY TERRITORY: QUAKE WARS(TM) Limited Use Software License Agreement (this "Agreement") is a legal agreement among you, the end-user, and Id Software, Inc. ("Id Software"), and Activision Publishing, Inc. ("Activision").  BY DOWNLOADING OR CONTINUING THE INSTALLATION OF THE GAME PROGRAM ENTITLED ENEMY TERRITORY: QUAKE WARS(TM) (THE "SOFTWARE"), BY LOADING OR RUNNING THE SOFTWARE, OR BY PLACING OR COPYING THE SOFTWARE ONTO YOUR COMPUTER HARD DRIVE, COMPUTER RAM OR OTHER STORAGE, YOU ARE AGREEING TO BE BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT.  

1.	Grant of License.  Subject to the terms and provisions of this Agreement and so long as you fully comply at all times with this Agreement, Id Software grants to you the non-exclusive and limited right to use the Software only in executable or object code form.  The term "Software" includes all elements of the Software, including, without limitation, data files and screen displays.  You are not receiving any ownership or proprietary right, title, or interest in or to the Software or the copyrights, trademarks, or other rights related thereto.  For purposes of the first sentence 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, and means the uses permitted in Section 5 herein below.  You agree that the Software will not be downloaded, shipped, transferred, exported or re-exported into any country in violation of the United States 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 the Software in any other manner in violation of any applicable law.  The Software shall not be downloaded or otherwise exported or re-exported into (or to a national or resident of) any country to which the United States has embargoed goods, or to anyone or into any country who/that are prohibited, by applicable law, from receiving such property.  In exercising your limited rights hereunder, you shall comply, at all times, with all applicable laws, regulations, ordinances, and statutes.  Id Software reserves all rights not granted in this Agreement, including, without limitation, all rights to Id Software's trademarks.

2.	Prohibition against Modification of the Software.  You may not alter or modify the Software in any manner.

3.	Prohibitions with Regard to the Software.  You, whether directly or indirectly, 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 or decompile the Software;
h.	translate the Software;
i.	reproduce or copy the Software (except as permitted under Section 5 herein below);
j.	publicly display the Software;
k.	prepare or develop derivative works based upon the Software;
l.	remove or alter any notices or other markings or legends, such as trademark or copyright notices, affixed on or within the Software; or
m.	remove, alter, modify, disable, or reduce any of the anti-piracy measures contained in the Software, including, without limitation, measures relating to multiplayer play.
n.  	upload any image or data or media file from the Software or within any of the Software files to the Internet. 

4.	Prohibition against Cheat Programs.  Any attempt by you, either directly or indirectly, to circumvent or bypass any element of the Software to gain any advantage in multiplayer play of the Software is a material breach of this Agreement.  It is a material breach of this Agreement for you, whether directly or indirectly, to create, develop, copy, reproduce, distribute, or otherwise make any use of any software program or any modification to the Software ("Cheat Program") itself that enables or allows the user thereof to obtain an advantage or otherwise exploit another Software player or user when playing the Software against other players or users on a local area network, any other network, or on the Internet.  Hacking into the executable of the Software, modification of the Software, or any other use of the Software in connection with the creation, development, or use of any such unauthorized Cheat Program is a material breach of this Agreement.  Cheat Programs include, but are not limited to, programs that allow Software players or users to see through walls or other level geometry; programs that allow Software players or users to change their rate of speed outside the allowable limits of the Software; programs that crash either and/or other Software players, users, PC clients, or network servers; programs that automatically target other Software players or users (commonly referred to as "aimbots") that automatically simulate Software player or user input for the purpose of gaining an advantage over other Software players or users; or any other program or modification that functions in a similar capacity or allows any prohibited conduct.

	In the event you breach this Section or otherwise breach this Agreement, your license and this Agreement automatically shall terminate, without notice, and you shall have no right to play the Software against other players or make any other use of the Software.

5.	Permitted Copying.  You may make only the following copies of the Software:  (i) you may copy the Software that you download 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.

6.	Intellectual Property Rights.    The Software and all copyrights, trademarks, and all other conceivable intellectual property rights related to the Software are owned by Id Software 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 like any other copyrighted material, as required by 17 U.S.C. S 101 et seq. and other applicable law.  You agree to use your best efforts to see that any user of the Software licensed hereunder complies with this Agreement.  You agree that you are receiving a copy of the Software by limited license only and not by sale and that the "first sale" doctrine of 17 U.S.C. S 109 does not apply to your receipt or use of the Software.  This Section shall survive the cancellation or termination of this Agreement.

7.	Information Collection.  You consent to Activision obtaining certain information about your computer and its operating system, including the type and speed of the central processing unit, the amount of RAM in the central processing unit, the operating system, the type of video card used, whether your computer uses a CD or DVD drive, and whether your computer is equipped with a joystick, without any further notice to you.  Such information is not personally identifiable. The computer information that is collected simply helps Activision to understand and analyze broad, anonymous market information about our consumers, so that Activision can better serve their needs and demands.  Activision will only share such information with others, if at all, in the aggregate, reflecting overall computer features and capabilities.

8.	NO ID SOFTWARE WARRANTIES.  ID SOFTWARE DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND ANY WARRANTY OF NON-INFRINGEMENT, WITH RESPECT TO THE SOFTWARE AND OTHERWISE.  THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY.  ID SOFTWARE DOES NOT WARRANT THAT THE SOFTWARE OR THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE OR THAT THE SOFTWARE WILL MEET YOUR SPECIFIC OR SPECIAL REQUIREMENTS.  ADDITIONAL STATEMENTS, WHETHER ORAL OR WRITTEN, DO NOT CONSTITUTE WARRANTIES BY ID SOFTWARE AND SHOULD NOT BE RELIED UPON.  This Section shall survive the cancellation or termination of this Agreement.

9.	Governing Law, Venue, Indemnity, and Liability Limitation.  This Agreement shall be construed in accordance with and governed by the applicable laws of the State of Texas (but excluding conflicts of laws principles) and applicable United States federal law.  Except as set forth below, exclusive venue for all litigation regarding this Agreement shall be in Dallas County, Texas, and you agree to submit to the jurisdiction of the federal and state courts in Dallas County, Texas, for any such litigation.  Exclusive venue for all litigation involving Activision, but not involving Id Software, 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.  You hereby agree to indemnify, defend and hold harmless Id Software and Activision and Id Software's and Activision's respective officers, employees, directors, agents, licensees (excluding you), sub-licensees (excluding you), successors, and assigns from and against all losses, lawsuits, damages, causes of action, and claims relating to and/or arising from your breach of this Agreement.  You agree that your unauthorized use of the Software, or any part thereof, immediately and irreparably may damage Id Software such that Id Software could not be adequately compensated solely by a monetary award, and in such event, at Id Software's option, that Id Software shall be entitled to an injunctive order, in addition to all other available remedies, including a monetary award, to prohibit such unauthorized use without the necessity of Id Software posting bond or other security.  IN ANY CASE, ID SOFTWARE, ACTIVISION, AND ID SOFTWARE AND ACTIVISION'S RESPECTIVE OFFICERS, EMPLOYEES, DIRECTORS, SHAREHOLDERS, REPRESENTATIVES, AGENTS, LICENSEES (EXCLUDING YOU), SUB-LICENSEES (EXCLUDING YOU), SUCCESSORS, AND ASSIGNS SHALL NOT BE LIABLE FOR LOSS OF DATA, LOSS OF PROFITS, LOST SAVINGS, SPECIAL, INCIDENTAL, CONSEQUENTIAL, INDIRECT OR PUNITIVE DAMAGES, OR ANY OTHER DAMAGES ARISING FROM ANY ALLEGED CLAIM FOR BREACH OF WARRANTY, BREACH OF CONTRACT, NEGLIGENCE, STRICT PRODUCT LIABILITY, OR OTHER LEGAL THEORY EVEN IF ID SOFTWARE, ACTIVISION, OR THEIR RESPECTIVE AGENT(S) HAVE BEEN ADVISED OF THE POSSIBILITY OF ANY 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 shall survive the cancellation or termination of this Agreement.

10.	United States Government Restricted Rights.  To the extent applicable, the United States Government shall have only those rights to use the Software as expressly stated and expressly limited and restricted in this Agreement, as provided in 48 C.F.R. SS 227.7201 through 227.7204, inclusive.

11.	General Provisions.  Neither this Agreement nor any part or portion hereof shall be assigned or sublicensed by you.  Id Software 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 of competent jurisdiction, the validity and enforceability of the other provisions shall not be affected thereby.  If any provision is determined to be unenforceable by a court of competent jurisdiction, 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 Software 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.  IMMEDIATELY UPON YOUR FAILURE TO COMPLY WITH, OR YOUR BREACH OF ANY TERM OR PROVISION OF THIS AGREEMENT, YOUR LICENSE GRANTED HEREIN AND THIS AGREEMENT AUTOMATICALLY SHALL TERMINATE, WITHOUT NOTICE, AND ID SOFTWARE AND ACTIVISION MAY PURSUE ALL RELIEF AND REMEDIES AGAINST YOU THAT ARE AVAILABLE UNDER APPLICABLE LAW AND/OR THIS AGREEMENT.  Immediately upon termination of this Agreement, any and all rights you are granted hereunder shall terminate, you shall have no right to use the Software in any manner, you immediately shall destroy all copies of the Software in your possession, custody, or control, and all rights granted hereunder shall revert, without notice, to and be vested in Id Software.

YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, YOU UNDERSTAND THIS AGREEMENT, AND UNDERSTAND THAT BY DOWNLOADING THE SOFTWARE, 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, COMPUTER RAM OR OTHER STORAGE, YOU AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF THIS AGREEMENT.  YOU FURTHER AGREE THAT, EXCEPT FOR WRITTEN SEPARATE AGREEMENTS, IF ANY, AMONG ID SOFTWARE, ACTIVISION, AND YOU, THIS AGREEMENT IS A COMPLETE AND EXCLUSIVE STATEMENT OF THE RIGHTS AND LIABILITIES OF THE PARTIES HERETO, RELATING TO THE SUBJECT MATTER HEREOF.  THIS AGREEMENT SUPERSEDES ALL PRIOR ORAL AGREEMENTS, PROPOSALS, OR UNDERSTANDINGS, AND ANY OTHER COMMUNICATIONS, IF ANY, AMONG ID SOFTWARE, ACTIVISION, AND YOU RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.
