END USER LICENSE AGREEMENT
Software License Agreement for the Eschalon: Book I demo

IMPORTANT- PLEASE READ CAREFULLY: BY INSTALLING THE SOFTWARE, COPYING THE SOFTWARE, AND/OR USING THE SOFTWARE, YOU (EITHER ON BEHALF OF YOURSELF AS AN INDIVIDUAL OR ON BEHALF OF AN ENTITY AS ITS AUTHORIZED REPRESENTATIVE) AGREE TO ALL OF THE TERMS OF THIS END USER LICENSE AGREEMENT ('AGREEMENT') REGARDING YOUR USE OF THE SOFTWARE.  IF YOU DO NOT AGREE WITH ALL OF THE TERMS OF THIS AGREEMENT, CLICK ON THE 'CANCEL' BUTTON. THIS WILL CANCEL THE INSTALLATION.

1. GRANT OF LICENSE
Subject to the terms below, Basilisk Games, Inc. hereby grants you a non-exclusive, non-transferable license to install and to use Eschalon: Book I demo ('Software').

Under this license, you may: (i) install and use the demo version of the Software on as many computers as you want.

Whether you are licensing the Software as an individual or on behalf of an entity, you may not: (i) reverse engineer, decompile, or disassemble the Software or attempt to discover the source code; (ii) modify, or create derivative works based upon, the Software in whole or in part without the express written consent of Basilisk Games, Inc.; (iii) remove any proprietary notices or labels on the Software; (iv) resell, lease, rent, transfer, sublicense, or otherwise transfer rights to the Software; (v) in any other manner and through any medium whatsoever commercially exploit the Software or use the Software for any commercial purpose.

1.1. DEMO VERSION LICENSE.
You may distribute copies of the demo version of the Software freely to other users, provided that any copy must contain the original, unaltered files and proprietary notices.  You may not distribute modifications to the demo version.  This includes but is not limited to new or modified models, sounds, music, quests, classes, items, skills, monsters, UI, levels, effects, textures, stories, and/or database changes.

2. INTELLECTUAL PROPERTY RIGHTS.
You acknowledge that no title to the intellectual property in the Software is transferred to you. Title, ownership, rights, and intellectual property rights in and to the Software shall remain that of Basilisk Games, Inc.  The Software is protected by copyright and patent laws of the United States and international treaties.

3. DISCLAIMER OF WARRANTY.
YOU AGREE THAT Basilisk Games, Inc. HAS MADE NO EXPRESS WARRANTIES, ORAL OR WRITTEN, TO YOU REGARDING THE PRODUCTS AND THAT THE PRODUCTS ARE BEING PROVIDED TO YOU 'AS IS' WITHOUT WARRANTY OF ANY KIND.  Basilisk Games, Inc. DISCLAIMS ANY AND ALL OTHER WARRANTIES, WHETHER EXPRESSED, IMPLIED, OR STATUTORY. YOUR RIGHTS MAY VARY DEPENDING ON THE STATE IN WHICH YOU LIVE.
Basilisk Games, Inc. SHALL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, COVER, RELIANCE, OR CONSEQUENTIAL DAMAGES RESULTING FROM THE USE OF THIS PRODUCT.

4. LIMITATION OF LIABILITY.
You use this program solely at your own risk.
IN NO EVENT SHALL Basilisk Games, Inc. BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING BUT NOT LIMITED TO ANY LOSS, OR OTHER INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND ARISING OUT OF THE USE OF THE SOFTWARE, EVEN IF Basilisk Games, Inc. HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT WILL Basilisk Games, Inc. BE LIABLE FOR ANY CLAIM, WHETHER IN CONTRACT, TORT, OR ANY OTHER THEORY OF LIABILITY, EXCEED THE COST OF THE SOFTWARE. THIS LIMITATION SHALL APPLY TO CLAIMS OF PERSONAL INJURY TO THE EXTENT PERMITTED BY LAW.

5. TERMINATION.
This Agreement shall terminate automatically if you fail to comply with the limitations described in this Agreement. No notice shall be required to effectuate such termination. Upon termination, you must remove and destroy all copies of the Software.

6. DISTRIBUTION.
Basilisk Games, Inc. allows and encourages all web sites, on-line services, computing and/or game magazines, shareware vendors, CD-ROM vendors, and end-users to freely distribute the demo version of this Software. If you wish to distribute the demo version of this Software, you can obtain the most recent version from www.basiliskgames.com and it is not necessary to contact Basilisk Games, Inc. for authorization.

7. MISCELLANEOUS:

a. Severability.
In the event of invalidity of any provision of this Agreement, the parties agree that such invalidity shall not affect the validity of the remaining portions of this Agreement.

b. Export.
You agree that you will not download, export, or re-export the Software in violation of United States or foreign export laws.

c. Governing Law.
This Agreement shall be governed by and construed in accordance with the laws of the State of Indiana, USA, without giving effect to (i) its conflict of laws provisions, or (ii) the United Nations Convention for Contracts for the International Sale of Goods. To the extent permitted by applicable law, any dispute arising under this Agreement or relating to the Software shall be resolved by a court of proper jurisdiction in Collin County, Indiana, United States.

d. Entire Agreement.
You agree that this is the entire agreement between you and Basilisk Games, Inc., which supersedes any prior agreement, whether written or oral, and all other communications between Basilisk Games, Inc. and you relating to the subject matter of this Agreement.  However, Basilisk Games, Inc. reserves the right to modify the terms of this license from time to time and will post notice of changes somewhere on www.basiliskgames.com.

e. Reservation of rights.
All rights not expressly granted in this Agreement are reserved by Basilisk Games, Inc.
