================================================

LIMITED SOFTWARE WARRANTY AND LICENSE AGREEMENT

================================================



PLEASE READ CAREFULLY. BY USING OR INSTALLING THIS SOFTWARE, OR BY PLACING OR
COPYING THIS SOFTWARE ON YOUR COMPUTER HARDWARE, COMPUTER RAM OR OTHER STORAGE
MEDIUM, YOU ARE AGREEING TO BE BOUND BY THE TERMS OF THIS LICENSE. IF YOU DO
NOT AGREE TO THESE TERMS, PROMPTLY RETURN THE PRODUCT IN ITS PACKAGING TO THE
PLACE WHERE YOU OBTAINED IT.



This LIMITED SOFTWARE WARRANTY AND LICENSE AGREEMENT (this "Agreement"),
including the Limited Warranty and other special provisions, is a legal
agreement between You (either an individual or an entity) and Loki Software,
Inc. and its licensors, (collectively, the "Owner") regarding this software
product and the materials contained therein and related thereto. Your act of
installing and/or otherwise using the software constitutes Your agreement to be
bound by the terms of this Agreement. If You do not agree to the terms of this
Agreement, promptly return the software packaging and the accompanying
materials (including any hardware, manuals, other written materials and
packaging) to the place You obtained them, along with your receipt, for a full
refund.

Grant of Limited Non-Exclusive License. This Agreement permits You to use one
(1) copy of the software program(s) (the "SOFTWARE") included in this package
for your personal use on a single home or portable computer. The SOFTWARE is in
"use" on a computer when it is loaded into temporary memory (i.e., RAM) or
installed into the permanent memory (e.g., hard disk, CD-ROM, or other storage
device) of that computer. Installation on a network server is strictly
prohibited, except under a special and separate network license obtained from
Owner; this Agreement shall not serve as such necessary special network
license. Installation on a network server constitutes "use" that must comply
with the terms of this Agreement. This license is not a sale of the original
SOFTWARE or any copy thereof.

Intellectual Property Ownership. Owner retains all right, title and interest to
this SOFTWARE and the accompanying manual(s), packaging and other written
materials (collectively, the "ACCOMPANYING MATERIALS"), including, but not
limited to, all copyrights, trademarks, trade secrets, trade names, proprietary
rights, patents, titles, computer codes, audiovisual effects, themes,
characters, character names, stories, dialog, settings, artwork, sounds
effects, musical works, and moral rights. The SOFTWARE and ACCOMPANYING
MATERIALS are protected by United States copyright law and applicable copyright
laws and treaties throughout the World. All rights are reserved. The SOFTWARE
and ACCOMPANYING MATERIALS may not be copied or reproduced in any manner or
medium, in whole or in part, without prior written consent from Owner. Any
persons copying or reproducing all or any portion of the SOFTWARE or
ACCOMPANYING MATERIALS, in any manner or medium, will be willfully violating
the copyright laws and may be subject to civil or criminal penalties.

SOFTWARE Backup or Archiving. After You install the SOFTWARE into the permanent
memory of a computer, You may keep and use the original disk(s) and/or CD-ROM
(the "Storage Media") only for backup or archival purposes.

Restrictions. Other than as provided specifically in this Agreement, You are
not permitted to copy or otherwise reproduce the SOFTWARE or ACCOMPANYING
MATERIALS; modify or prepare derivative copies based on the SOFTWARE or
ACCOMPANYING MATERIALS; distribute copies of the SOFTWARE or ACCOMPANYING
MATERIALS by sale or other transfer of ownership; rent, lease, or lend the
SOFTWARE or ACCOMPANYING MATERIALS; or to display the SOFTWARE or ACCOMPANYING
MATERIALS publicly. You are expressly prohibited from transmitting the SOFTWARE
or ACCOMPANYING MATERIALS electronically or otherwise over the Internet or
through any other media or to any other party. You are expressly prohibited
from using or selling any unauthorized level packs, add-on packs or sequels
based upon or related to the SOFTWARE or ACCOMPANYING MATERIALS. You are
expressly prohibited from selling or using any characters or other components
of the game for any purpose. You are expressly prohibited from selling or
otherwise profiting from any levels, add-on packs, sequels or other items
created by utilization of the SOFTWARE's level editor. YOU ARE NOT PERMITTED TO
REVERSE ENGINEER, DECOMPILE OR DISASSEMBLE THE SOFTWARE IN ANY WAY. Any copying
of the SOFTWARE or ACCOMPANYING MATERIALS not specifically allowed in this
Agreement is a violation of this Agreement.

Limited Warranty and Warranty Disclaimers.

LIMITED WARRANTY. Loki Software, Inc. ("Loki") warrants to the original
purchaser of the computer software product, for a period of ninety (90) days
from the date of original purchase, that under normal use, the media and the
user documentation are free from defects in materials and workmanship.

WARRANTY CLAIMS. To make a warranty claim under this limited warranty, return
the product to us at the address below within 90 days of purchase. Include a
copy of the dated purchase receipt, your name, your return address, and a
statement of the defect. Loki will replace the product and return it to you
(postage prepaid) or issue you with a credit equal to the purchase price. If
the product was damaged through misuse or accident, you will need to follow the
returns after warranty policy detailed below.

RETURNS AFTER WARRANTY. To replace defective media after the 90-day warranty
period has expired, send the original disc(s) to the address below. Enclose a
statement of the defect, your name, your return address, and a check or money
order for $10.00 to:

	Loki Software, Inc.
	Customer Warranty
	250 El Camino Real, Suite 100
	Tustin, CA 92780

NOTE: We suggest you send your package in a manner that is traceable.

CUSTOMER'S REMEDY. The LIMITED WARRANTY is Your exclusive remedy, and the
entire liability of Owner. By opening the sealed software packaging, installing
and/or otherwise using the SOFTWARE or ACCOMPANYING MATERIALS, you hereby agree
to waive any and all other remedies you may have at law or in equity. Any such
remedies you may not waive as a matter of public policy, you hereby assign, or
shall assign as they become available, over to Owner.

WARRANTY DISCLAIMERS. EXCEPT FOR THE EXPRESS LIMITED WARRANTY SET FORTH ABOVE,
OWNER MAKES NO WARRANTIES, EXPRESS OR IMPLIED, ORAL OR WRITTEN, CONCERNING THE
PRODUCTS OR ANY COMPONENT PART THEREOF. ANY IMPLIED WARRANTIES THAT MAY BE
IMPOSED BY APPLICABLE LAW ARE LIMITED IN ALL RESPECTS TO THE FULLEST EXTENT
ALLOWED AND TO THE DURATION OF THE LIMITED WARRANTY. OWNER DOES NOT REPRESENT,
WARRANT OR GUARANTEE THE QUALITY OR THE PERFORMANCE OF THE SOFTWARE OR
ACCOMPANYING MATERIALS OTHER THAN AS SET FORTH IN THE ABOVE LIMITED WARRANTY.
OWNER ALSO DOES NOT REPRESENT, WARRANT OR GUARANTEE THAT THE SOFTWARE OR
ACCOMPANYING MATERIALS' CAPABILITIES WILL MEET YOUR NEEDS OR THAT THE SOFTWARE
WILL CONTINUOUSLY OPERATE, BE ERROR FREE, OR THAT PROBLEMS WILL BE CORRECTED.

NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY OWNER, ITS DEALERS,
DISTRIBUTORS, DIRECTORS, OFFICERS, EMPLOYEES, AGENTS, CONTRACTORS OR AFFILIATES
SHALL CREATE ANY OTHER WARRANTY OR EXTEND OR EXPAND THE SCOPE OF THIS WARRANTY.
YOU MAY NOT RELY ON ANY SUCH INFORMATION OR ADVICE.

SOME STATES DO NOT ALLOW LIMITATIONS ON HOW LONG AN IMPLIED WARRANTY LASTS, SO
THE ABOVE LIMITATION MAY NOT APPLY TO YOU. THIS LIMITED WARRANTY GIVES YOU
SPECIFIC LEGAL RIGHTS AND YOU MAY ALSO HAVE OTHER RIGHTS WHICH MAY VARY FROM
STATE TO STATE.

LIABILITY LIMITATION. To the maximum extent permitted by applicable law, and
regardless of whether any remedy set forth herein fails of its essential
purpose, IN NO EVENT WILL OWNER, ITS DIRECTORS, OFFICERS, EMPLOYEES, AGENTS OR
AFFILIATES NOR ANYONE ELSE INVOLVED IN THE DEVELOPMENT, MANUFACTURE OR
DISTRIBUTION OF THE SOFTWARE OR THE ACCOMPANYING MATERIALS BE LIABLE FOR ANY
DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, DIRECT OR INDIRECT;
INCIDENTAL; OR CONSEQUENTIAL DAMAGES FOR PERSONAL INJURY, PERSONAL PROPERTY,
LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION,
LOSS OF TEXT OR DATA STORED IN OR USED WITH THE SOFTWARE INCLUDING THE COST OF
RECOVERING OR REPRODUCING THE TEXT OR DATA, OR ANY OTHER PECUNIARY LOSS,
ARISING FROM OR OUT OF THE USE OR INABILITY TO USE THIS SOFTWARE. THIS
LIABILITY LIMITATION APPLIES EVEN IF YOU OR ANYONE ELSE HAS ADVISED OWNER OR
ANY OF ITS AUTHORIZED REPRESENTATIVES OF THE POSSIBILITY OF SUCH DAMAGES. EVEN
IF SUCH IS CAUSED BY, ARISES OUT OF OR RESULTS FROM THE ORDINARY, STRICT, SOLE
OR CONTRIBUTORY NEGLIGENCE OF OWNER OR ITS DIRECTORS, OFFICERS, EMPLOYEES,
AGENTS, CONTRACTORS OR AFFILIATES. SOME STATES DO NOT ALLOW THE EXCLUSION OR
LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION OR
EXCLUSION MAY NOT APPLY TO YOU.

Product Support and Updates. This SOFTWARE is intended to be user-friendly and
limited product support is provided by Owner as specified in the ACCOMPANYING
MATERIALS.

Jurisdiction. CALIFORNIA LAWS GOVERN THIS AGREEMENT, REGARDLESS OF EACH STATE'S
CHOICE OF LAW PRINCIPLES, WITH A FORUM AND VENUE OF ORANGE COUNTY, CALIFORNIA.
This Agreement may be modified only by a written instrument specifying the
modification and executed by both parties. In the event that any provision of
this Agreement shall be held to be unenforceable, such provision shall be
enforced to the greatest possible extent, with the other provisions of this
Agreement to remain in full force and effect.

Entire Agreement. This Agreement represents the entire agreement between the
parties, and supersedes any oral or written communications, proposals or prior
agreements between the parties or any dealers, distributors, agents or
employees.

U.S. Government Restricted Rights. The SOFTWARE and the ACCOMPANYING MATERIALS
is provided with RESTRICTED RIGHTS (as found in 48 C.F.R. §52.227-7013). This
provision only applies if the U.S. Government or any of its entities obtains
this SOFTWARE either directly or indirectly. Owner created this SOFTWARE and
the ACCOMPANYING MATERIALS exclusively with private funds. Additionally,
information contained in this SOFTWARE and the ACCOMPANYING MATERIALS is a
trade secret of Owner for all purposes of the Freedom of Information Act or
otherwise. Furthermore, this SOFTWARE is "commercial computer software" subject
to limited use as set forth in any contract that may be entered into between
the seller and the governmental entity. Owner owns, in all respects, the
proprietary information and proprietary data found in the SOFTWARE and the
ACCOMPANYING MATERIALS.

U.S. DEPARTMENT OF DEFENSE PERSONNEL. Owner only sells this SOFTWARE and the
ACCOMPANYING MATERIALS with "Restricted Rights" as defined in DFARS 52.227-7013
(also found at 48 C.F.R. §252.227-7013). Any U.S. Government use, duplication,
or disclosure is subject to the restrictions including, but not limited to
those found in the Rights in Technological Data clause at DFARS 52.227-7013 (48
C.F.R. §252.227-7013) that may be amended from time to time.

NON-DEPARTMENT OF DEFENSE PERSONNEL. Other governmental personnel are on notice
through this Agreement that any use of this SOFTWARE and the ACCOMPANYING
MATERIALS is subject to similar limitations as those stated above, including
but not limited to, those stated in Commercial Computer SOFTWARE - Restricted
Rights found in 48 C.F.R. §52.227-19, that may also be amended from time to
time. Manufacturer is Owner at the location listed below.

U.S. Export Laws Prohibitions. By opening the sealed software packaging and/or
installing or otherwise using the SOFTWARE and ACCOMPANYING MATERIALS, You also
agree and confirm that the SOFTWARE or ACCOMPANYING MATERIALS and any of the
SOFTWARE's direct products are not being and will not be transported, exported
or re-exported (directly or indirectly through the Internet or otherwise) into
(or to a national or resident of) any country forbidden to receive such
SOFTWARE or ACCOMPANYING MATERIALS by any U.S. export laws or accompanying
regulations or otherwise violate such laws or regulations, that may be amended
from time to time. You also agree and confirm that the SOFTWARE and
ACCOMPANYING MATERIALS will not be used for any purpose that may be restricted
by the same laws and regulations.

Termination. This Agreement is valid until terminated. This Agreement ceases
automatically (without any form of notice) if You do not comply with any
Agreement provision. You can also end this Agreement by destroying the SOFTWARE
and ACCOMPANYING MATERIALS and all copies and reproductions of the SOFTWARE and
ACCOMPANYING MATERIALS and deleting and permanently purging the SOFTWARE from
any client server or computer on which it has been installed.

Program Transfer. You may permanently transfer all of your rights under this
Agreement, provided that the recipient agrees to all of the terms of this
Agreement, and You agree to transfer all ACCOMPANYING MATERIALS and related
documents and components and remove the SOFTWARE from Your computer prior.
Transferring the SOFTWARE automatically terminates Your license under this
Agreement.

Equitable Remedies. You hereby agree that if the terms of this Agreement are
not specifically enforced, Owner will be irreparably damaged, and therefore you
agree that Owner shall be entitled, without bond, other security, proof of
damages, to appropriate equitable remedies with respect any of this Agreement,
in addition to any other available remedies. If You have any questions
regarding this Agreement, the enclosed materials, or otherwise, please contact
in writing:

Loki Software
250 El Camino Real #100
Tustin, CA 92780
Attn: Customer Service
