The Legal Stuff:

Preamble:
  Basically, give this game away, share it with your friends. Don't remove this
Readme, or pretend that you wrote it. You can include it in a software
collection, like a Linux distribution or coverdisk (which may be sold), but
using it in things like commercial adventure game collections without asking is
just playing dirty. You can modify the gamedata for such purposes as compressing
audio. This preamble is not legally binding, but is to clarify the intent of
the following licence.

Licence:
 1) You may distribute this game for free on any medium, provided this Readme
and all associated copyright notices and disclaimers are left intact.

 2) You may charge a reasonable copying fee for this archive, and may
distribute it in aggregate as part of a larger and possibly commercial software
distribution (such as a Linux distribution or magazine coverdisk). You must
provide proper attribution and ensure that this Readme and all associated
copyright notices and disclaimers are left intact.

 3) You may not charge a fee for the game itself. This includes reselling the
game as an individual item.

 4) You may modify the game as you wish.  You may also distribute modified
versions under the terms set forth in this licence, but with the additional
requirement that the work is marked with a prominent notice which states that
it is a modified version.

 5) All game content is (C) John Passfield and Steven Stamatiadis.
    The ScummVM engine is (C) The ScummVM Team (www.scummvm.org).

 6) THE GAME DATA IN THIS ARCHIVE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING AND NOT LIMITED TO ANY IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
