1Release 1.04
2------------
3
4 - Makefile adjustments: ensure bogus stuff left in `levels'
5   directory doesn't get hit by `make install', and ensure it
6   doesn't get hit by tarball generator either. The `CVS' directory,
7   for example.
8 - Introduced loading and saving of move sequences. You can press
9   `w' during the game to save the sequence of moves that have got
10   you to that point; pressing `m' during the game lets you load a
11   sequence of moves, and then goes into `movie mode' in which you
12   can step back and forth through the process of playing those
13   moves, and finally hit `q' to enact the whole lot and return to
14   normal playing mode. Hence players can swap their best or
15   weirdest solutions to a particular level.
16 - Everyone's favourite interface change: you can now hit `r' to
17   restore a saved position on the `you have died' screen just as
18   you can within the game, so you don't have to go back round via
19   the main menu.
20 - The levels contained a couple of pieces resting on thin air,
21   which the original designer hadn't noticed. I've now introduced
22   run-time validation of level files for errors such as this, and
23   fixed the problems (in levels 2 and 8). This should also make
24   designing new levels a more precise science...
25 - Added the new `~' character. This shows up as a space during
26   gameplay, but it's an `outdoor' space which you're never supposed
27   to be able to get to. This means that walls next to a `~' sign
28   act like boundary walls and are indestructible even to bombs. The
29   idea is that you can design levels with non-rectangular outlines
30   by filling in the space between the exterior walls and the level
31   boundary with solid blocks of `~'. It also means you can put
32   unreachable courtyards inside a level as well.
33 - Added `=' and `!', the Enigma equivalents of XOR's dots and waves
34   respectively (they act as walls in one direction but can be eaten
35   if you approach them from the perpendicular direction).
36 - Added `O', of which you can have at most one in a level and it
37   acts as a secondary player starting point (again as in XOR).
38   Press `x' during the game to swap the `@' and the `O'. If the `@'
39   gets killed while an `O' is present, control will revert to the
40   `O' and you can continue play. You only have to get one of
41   yourself to the exit.
42 - Added `#', the teleporter piece used in XOR. There must be either
43   0 or 2 of these on a level; walking into one brings you out to
44   the right of the other, or above it if the right is occupied,
45   then left, then below.
46 - Added per-level mode flags to make the XOR levels playable in
47   Enigma: `flimsy-bombs' (bombs blow up when hit by other bombs as
48   well as arrows) and `relative-priority' (which of two eligible
49   pieces falls into a vacated space first depends on the direction
50   of the piece which just left that space).
51
52Release 1.03
53------------
54
55 - Ensure save files are written with perms 0600 (only the saving
56   user can read or write them, despite setgid on the enigma
57   binary), and ensure progress files are written 0640 (the games
58   group can read them, so enigma can build a Hall of Fame when I
59   implement that).
60 - Disallow periods and slashes in level set names, to confine
61   Enigma to reading and writing files _only_ in its designated
62   level and save directories. Might just have been a security hole,
63   although I can't immediately see a way.
64
65Release 1.02
66------------
67
68 - We no longer repeat the game-completed screen when the user
69   recompletes a level after having completed the game.
70 - Error handling improved so we don't segfault on trying to restore
71   a nonexistent save, and also so we don't segfault if we can't
72   find our level set.
73 - Fixed various bugs in the level-titles list box on the main menu,
74   which don't show up in the standard level set but might if people
75   start designing longer ones.
76
77Release 1.01
78------------
79
80 - configure script now chooses more sensibly between curses and
81   ncurses, and also checks whether *curses.h defines attr_t. Now
82   able to compile on Solaris/gcc.
83 - Renamed config.h to settings.h to stop it being blown away by
84   make distclean.
85 - Added CHANGELOG.
86
87Release 1.0
88-----------
89
90 - Initial release.
91