
LIMITED USE SOFTWARE LICENSE AGREEMENT

This Limited Use Software License Agreement (this “Agreement”) is a legal
agreement between you, the end-user, and Id Software, Inc. (“ID”).
BY CONTINUING THE INSTALLATION OF THIS SOFTWARE (THE “SOFTWARE”), BY
DOWNLOADING, 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 OF THIS AGREEMENT.

1.  Grant of License.  Subject to the terms and provisions of this
Agreement, ID grants to you the non-exclusive and limited right to use
the Software only for the uses permitted in section 3. hereinbelow. The
term “Software” includes all elements of the Software. 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 3. hereinbelow.  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 anyone 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 shall 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.

2.  Prohibitions. 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.  distribute the Software (except as permitted by section 3.
        hereinbelow);

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

    f.  disassemble, reverse engineer, decompile, modify (except as
        permitted by Section 3. hereinbelow) or alter the Software;

    g.  translate the Software;

    h.  reproduce or copy the Software (except as permitted by section
	    3. hereinbelow);

    i.  publicly display the Software;

    j.  prepare or develop derivative works based upon the Software;

    k.  remove or alter any legal notices or other markings or legends,
        such as trademark and copyright notices, affixed on or within
		the Software; or

    l.  remove, alter, modify, disable or reduce any of the anti-piracy
        measures or components contained in the QUAKE III ARENA game,
        including, without limitation, the CD key system and the CD
		check.

3.  Permitted Uses.

    a.	So long as this Agreement accompanies each copy you make of the
    Software, and so long as you fully comply, at all times, with this
    Agreement, ID grants to you the non-exclusive and limited right to
    distribute copies of the Software free of charge for non-commercial
    purposes by electronic means only and the non-exclusive and limited
    right to use the Software to create your own modifications (the “New
    Creations”) for operation only with the full version of the software
    game QUAKE III ARENA; provided, however, you shall not make any New
    Creations unless and until you have agreed to be bound by the terms
    of this Agreement and of the LIMITED USE SOFTWARE LICENSE AGREEMENT
    which accompanies the full version of QUAKE III ARENA.  Other than
    the electronic copies permitted above, you may make only the
    following copies of the Software: (i) you may copy the Software 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. You shall not use, copy or distribute the Software in any
    infringing manner or in any manner which violates any law or third
    party right and you shall not distribute the Software together with
    any material which infringes against any third party right or which
    is libelous, defamatory, obscene, false, misleading, or otherwise
    illegal or unlawful. ID reserves all rights not granted in this
    Agreement, including, without limitation, all rights to ID’s
    trademarks. You shall not commercially distribute the Software.

    b. You shall not create any New Creations which infringe against
    any third party right or which are libelous, defamatory, obscene,
    false, misleading or otherwise illegal or unlawful.  You agree that
    the New Creations 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 New Creations in
    violation of any applicable law. The New Creations shall 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 New Creations.
    You are only permitted to distribute, without any cost or
    charge, the New Creations to other end-users so long as such
    distribution is not infringing against any third party right and is
    not otherwise illegal or unlawful.  As noted below, in the event you
    commercially distribute or commercial exploit the New Creations or
    commit any other breach of this Agreement, your licenses, and this
    Agreement, shall automatically terminate, without notice.

4.  Intellectual Property Rights.  The Software and all copyrights,
trademarks and all other conceivable intellectual property rights
related to the Software 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
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 complies with
this Agreement.  You agree that you are receiving a copy of the
Software 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.

5.  NO 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.  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, WHETHER ORAL
OR WRITTEN, DO NOT CONSTITUTE WARRANTIES BY ID AND SHOULD NOT BE
RELIED UPON.  THIS SECTION 5. SHALL SURVIVE CANCELLATION OR TERMINATION
OF THIS AGREEMENT.

6.  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 and applicable United States
federal law.  Copyright and other proprietary matters will be governed
by United States laws and international treaties.  Exclusive venue for
all litigation regarding 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. You agree to indemnify, defend
and hold harmless ID and ID’s officers, employees, directors, agents,
licensees (excluding you), successors and assigns from and against all
losses, lawsuits, damages, causes of action and claims relating to
and/or arising from: (i) your breach of this Agreement; and/or (ii)
your distribution or other use of the Software; and/or (iii) your
distribution or other use of the New Creations.  You agree that your
unauthorized use of the Software, or any part thereof, may immediately
and irreparably damage ID such that ID could not be adequately
compensated solely by a monetary award and that at ID’s option ID
shall be entitled to an injunctive order, in addition to all other
available remedies including a monetary award, appropriately
restraining and/or prohibiting such unauthorized use without the
necessity of ID posting bond or other security. IN ANY CASE, ID AND
ID’S OFFICERS, EMPLOYEES, DIRECTORS, AGENTS, LICENSEES, SUBLICENSEES,
SUCCESSORS AND ASSIGNS SHALL NOT BE LIABLE FOR LOSS OF DATA, LOSS OF
PROFITS, LOST SAVINGS, SPECIAL, INCIDENTAL, CONSEQUENTIAL, INDIRECT,
PUNITIVE OR OTHER SIMILAR DAMAGES ARISING FROM ANY ALLEGED CLAIM FOR
BREACH OF WARRANTY, BREACH OF CONTRACT, NEGLIGENCE, STRICT PRODUCT
LIABILITY, OR OTHER LEGAL THEORY EVEN IF ID OR ITS AGENTS 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 6. shall survive cancellation or
termination of this Agreement.

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

8.  General Provisions.  Neither this Agreement nor any part or portion
hereof shall be assigned or sublicensed by you.  ID may assign its
rights under this Agreement in ID’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 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 immediately upon your breach of,
any term or provision of this Agreement, THIS AGREEMENT AND YOUR
LICENSE SHALL AUTOMATICALLY TERMINATE, WITHOUT NOTICE, AND ID MAY
PURSUE ALL RELIEF AND REMEDIES AGAINST YOU WHICH ARE AVAILABLE UNDER
APPLICABLE LAW AND/OR THIS AGREEMENT.   In the event this Agreement
is terminated, you shall have no right to use the Software, in any
manner, and you shall immediately destroy all copies of the Software
in your possession, custody or control.

YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, YOU UNDERSTAND THIS
AGREEMENT, AND UNDERSTAND THAT BY CONTINUING THE INSTALLATION OF THE
SOFTWARE, BY DOWNLOADING, 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 BETWEEN ID AND YOU, THIS AGREEMENT IS A COMPLETE AND
EXCLUSIVE STATEMENT OF THE RIGHTS AND LIABILITIES OF THE PARTIES HERETO
REGARDING THE SUBJECT MATTER HEREOF.  THIS AGREEMENT SUPERSEDES ALL
PRIOR ORAL AGREEMENTS OR UNDERSTANDINGS AND ANY OTHER COMMUNICATIONS
BETWEEN ID AND YOU RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.

January 11, 2000    5:41 p.m.
