Lure of the Temptress, PC DOS version         (C) Revolution Software Ltd 1992-
-------------------------------------         ---------------------------------

 1) You may distribute this game for free on any medium, provided this license 
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 & possibly commercial software distribution
(such as a Linux distribution or magazine coverdisk). You must provide proper
attribution and ensure this license 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 license, 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) Revolution Software Ltd.

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