REVISION HISTORY
================
VERSION 3.5.1 - Patch 11, May 2022

Editor:
 - Fixed batch sprite export with "Set exported file as sprite source" option was assigning
   new source paths without file extension.

Engine:
 - Perfomance fix: GUIs changing Transparency or Visible state should not redraw their surface.

Compatibility:
 - Allow AudioClip.Play to to place clips on a crossfade channel, which is normally unaccessible
   from script. This prevents errors in some games that relied on this behavior.


VERSION 3.5.1 - Patch 10, April 2022

Engine:
 - Fixed crash when visible viewport does not have any linked camera.
 - Fixed ListBox.FillSaveGameList() may include save slots with negative slot number (e.g. when
   the save file has "*.-01" extension).
 - Fixed potential crash after failed RunAGSGame() call.
 - Fixed search for the game data by GUID when restoring a save belonging to another game;
   this was implemented in 3.5.1, but appeared to not work correctly.


VERSION 3.5.1 - Patch 9, March 2022

Editor:
 - Removed restriction on max dialog topics in the project. The dialog limit in the engine was
   removed in 3.4.1, but remained in the Editor by oversight.
 - Fixed Audio Clip items in the project tree not displaying their IDs right after being renamed.

Compiler:
 - Fixed crash occuring when compiler tries to report "Already referenced name as import" error.

Engine:
 - Added "--translation" and "--no-translation" command-line arguments.


VERSION 3.5.1 - Patch 8, Ferbuary 2022

Engine:
 - Clearer error messages for Get/SetProperty functions.
 - Fixed PlayFlic() command fails to start the video (regression in 3.5.1).
 - Fixed DrawingSurface.DrawSurface() not applying transparency parameter correctly if the
   drawn surface has alpha channel.
 - Fixed @OVERHOTSPOT@ is not updated immediately when character's name changes while cursor
   is above that character.


VERSION 3.5.1 - Patch 7, January 2022

Editor:
 - Added "Layout -> Reset to Defaults" menu command.
 - Editor will now reset panel layout to default state if loading layout fail for any reason.
 - Default config is now saved also when the game is run in debug mode (F5). This ensures that
   the test run is using the latest Default Setup, if the user's config has not been created yet.
 - Editor will now display an error if user tried to reserve too many channels for audio types.
 - Fixed Editor failing to start if user preferences file is corrupted.
 - Fixed "Use old-style custom dialog options API" was not set when importing pre-3.4.0 projects.
 - Fixed comboboxes' drop-down arrows were not painted with the right color from a color theme.

Engine:
 - Fixed program crash occuring if the game reserved too many channels for audio types.
 - Fixed potential crash occuring when player loads a save made in a multi-frame room, but the room
   was since edited and no longer has as many frames.
 - Fixed character may have incorrect Frame property values while turning.


VERSION 3.5.1 - Patch 6, December 2021

Editor:
 - Added line numbers in the dialog script editor.
 - Fixed Dialog script loosing changes if the pane is closed or redocked.
 - Fixed controls arrangement on the Dialog pane getting broken when it's redocked.

Engine:
 - Fixed filepaths in scripts that have backslashes ('\') fail on non-Windows systems.
   All the File functions will now convert backslashes in filepaths into forward
   slashes for compatibility.
 - Fixed engine was still creating standard directories for game saves and data, even
   if user provided the custom paths for these.
 - Fixed TextBox control crashing the game if it's empty and player presses Backspace.
 - Fixed controls on a fully transparent GUI were not interactive (this is an original
   AGS behavior, which was unintentionally changed in 3.5.0 by mistake).

Compatibility:
 - When running 3.5.0 games, treat fully transparent GUI as non-interactable.
   In AGS transparent GUIs may be still interacted with, but 3.5.0 introduced an
   unintentional (and undocumented) change to this, which was reverted in 3.5.1.

Android:
 - Support global engine's config file when the game is run from the Launcher: it's
   located in the AGS games' parent directory, same place where android.cfg is.

WinSetup:
 - Added "Custom game shared data path" to complement "Custom save path" option.


VERSION 3.5.1 - Patch 5, October 2012

Re-released without code changes, only fixing program build instructions for Linux.


VERSION 3.5.1 - Patch 4, September 2021

Editor:
 - Fixed swapping of inventory item's numeric ID could lead to errors.
 - Fixed crash when importing pre-3.* games with multiple script modules.
 - Renamed "Enforce object-based scripting" setting to "Enforce post-2.62 scripting".

Compiler:
 - Fixed potential memory corruption when user script reaches max nested if/else blocks.

Engine:
 - Also tell module name and approximate source line when reporting script import errors
   for the variables and local functions.


VERSION 3.5.1 - Patch 3, August 2021

Editor:
 - Fixed sprite file over 2 GB could not be loaded (regression since the last patch).

Engine:
 - Further improvement to GUI perfomance: don't redraw GUI when the mouse cursor is
   hovering over or interacting with controls not leading to an actual visual change.
 - Fixed ListBox items could become unaccessible if its font or height is changed leading
   to a disabled scrollbar.


VERSION 3.5.1 - Patch 2, July 2021

Engine:
 - Fixed speech lipsync getting disabled after loading another game with RunAGSGame().
 - Fixed MOD/XM clips fail to play (regression).
 - Fixed certain OGV videos fail to play (regression).
 - Fixed software renderer was not updating game screen correctly when running a game with
   legacy "letterboxed" feature  (regression).


VERSION 3.5.1 - Patch 1, June 2021

Editor:
 - Fixed script compiler sometimes was not specifying actual Dialog number when reporting errors
   in the dialog scripts.

Engine:
 - Fixed Game.TranslationFilename always returning empty string (regression).
 - Fixed GUI controls which were toggled from disabled to enabled state not responding to the
   mouse clicks until the mouse is moved (regression).
 - Fixed OpenGL did not apply a Linear filter when "Render sprites in screen resolution"
   option is off.


VERSION 3.5.1, June 2021

Editor:
 - Added "Attach game data to exe" option to General Settings. This lets you to package game data
   separately from the game.exe (only important on Windows at the moment).
 - Deprecated "Limit display mode to 16-bit" property in Runtime Setup as it's no longer
   used by the engine.
 - Display aspect ratio in game resolution dialog.
 - Implemented classic Color Picker dialog for the Color type values in the property grid,
   instead of the default one which does not allow user-defined colors.
 - Improved tab switching performance for script windows.
 - Editor will now enforce full game rebuild after upgrading an older project, this ensures
   that all scripts are recompiled with the new version rules.
 - Fixed room lists in property editor were not updated after room number is changed.
 - Fixed importing pre-3.* projects broken by incorrect assignment of "Game file name" property.
 - Fixed importing Characters and GUI without sprites still created empty sprite folders.
 - Fixed crash when exporting/importing Characters with no Normal View.
 - Fixed translation compiler did not correctly save some of the escaped sequences, such as "\n".

Scripting:
 - Implemented correct parsing of a "const string" function return type.
 - Fixed implementing imported functions was forbidden in the room scripts.

Script API:
 - Added GUI.Shown readonly property that tells whether GUI is active on screen. This is primarily
   for GUIs with "Popup At Y" style, because they hide themselves regardless of Visible property.
   Note that since 3.5.0 GUI.Visible only tells a script-set value.
 - File.Open() now supports $CONFIGFILE$ tag which will try to open user config file for reading or
   writing regardless of where config is located on disk.
 - Added System.SaveConfigToFile() which writes current engine settings to the user config file.
   Only the options that can be changed at runtime are written back at the moment.
 - GetTranslation() now returns "const string" (was "string"). This is to prevent modifying
   returned string using old-style string functions, such as StrCat(), as this string may be
   allocated in the internal engine memory for its own use.

Engine:
 - Support loading audio and video from data packages larger than 2 GB.
 - Improved game data loading times by introducing buffered file stream. Initial tests
   showed 3-4 times faster file reading.
 - Improved game perfomance by not reupdating all of the GUIs each time anything changes, instead
   only affected GUI will be updated each time.
 - Some improvement to general script perfomance.
 - Some improvement to script Dictionary and Set types perfomance.
 - Room Object's Graphic property now can be assigned a sprite with index over 32767 and
   up to 65535. This restriction is due to internal data format, which cannot be fully fixed
   without breaking compatibility with plugin API. This may still be worked around by assigning
   a View, as View's frames may contain sprites of any index available.
 - Similarily, Object's View, Loop and Frame can now be assigned a value over 32767 and
   up to 65535; not that this was ever an issue...
 - Removed arbitrary limit of 1000000 dynamic array elements (now supports over 2 billion).
 - Dialogs with no enabled options left will be now stopped, instead of raising script error.
 - Engine will not longer quit the game when failing to write a save, but simply display an
   error on screen (...why this was a thing in the first place?!).
 - When restoring a save engine will now try to match game GUID pack rather than exe/pack name.
   This resolves potential problems when game package may have different name in distribution
   to another system. Also makes saves in multi-game collections more reliable.
 - In Debug game mode allow to toggle infinite FPS mode (prior it could not be turned off).
 - Expanded text parser error messages for easier debugging.
 - Adjusted all the command-line options to have consistent prefix convention, where all full-name
   options must be preceded by double-dash, and one-letter options by single dash.
 - Added "--localuserconf" command and similar global config option which tells engine to read and
   write user config in the game's directory rather than using standard platform path.
   Game dir must be writeable for this to work.
 - Added "--conf" command which forces engine to read only explicit config file on startup.
 - Added "--user-data-dir" and "--shared-data-dir" commands for setting save game directory and
   shared app data directory from command line (this corresponds to existing options in config).
 - Fully configurable log output (in both game config and command line) allows to set up which
   message types and groups are printed by which output methods (sinks), including: file,
   system console, in-game console. "warnings.log" is now created only if file log was not
   requested by user.
 - Added "--log-" set of command line options for setting up log output.
 - Added "--tell-filepath" option for printing known engine's and game's file locations.
 - Added "--tell-gameproperties" option for printing some of the game's general settings.
 - Support proper lookup for Allegro 4 library resources (such as its own config and digital MIDI
   patches) in the game directory.
 - Engine will no longer precreate directories for common files: saves, user config, and so forth,-
   before actually writing them.
 - Fixed running game from another directory by passing its relative filename as command-line
   argument: in this case engine was incorrectly using its own directory to search for external
   game data, opening files for reading by script command, and so on.
 - Fixed some of the engine's own hotkeys (such windowed/fullscreen mode toggle) not working
   during certain skippable game states.
 - Fixed overlay was set to wrong position if it were using TextWindow gui and either its text
   or X, Y properties got changed.
 - Fixed crash occuring when the speech is using text window gui with zero Padding and the speech
   text is an empty line.
 - Fixed characters and room objects were not updating their looks if their current graphic was
   a Dynamic Sprite, and that sprite was modified with ChangeCanvasSize, CopyTransparencyMask,
   Crop, Flip, Resize, Rotate or Tint function.
 - Fixed Views' frames keeping reference to deleted Dynamic Sprites.
 - Fixed engine crash when button's graphic is set to sprite out of range.
 - Fixed animated cursor's normal graphic reappearing in between animation frames if mouse mode
   is being repeatedly reassigned, for example in rep-exec script.
 - Fixed certain interactions did not work with GUI if it was made fully transparent.
 - Fixed ListBox.FillSaveGameList() search pattern, it included files which contain save filename
   pattern but do not exactly match; for example: "agssave.001_".
 - Fixed engine was ignoring audio files in game directory when running games which use
   old audio system.
 - Fixed crash in Direct3D and OpenGL renderers that occured if game uses a plugin that performs
   software drawing on screen, and one of the rooms is smaller than the game's resolution.
 - Fixed Direct3D was assigning wrong fullscreen refresh rate sometimes, slowing alt-tabbing.
 - Fixed "--test" mode was lost upon restoring a save.

Engine Plugin API:
 - Added IAGSEngine::GetRenderStageDesc() function which returns current render stage parameters.
   As of this version these parameters include 3 transformation matrixes, allowing any 3D render
   plugin to stay compliant to engine's scene rendering.

Compatibility:
 - Fixed engine was trying to read unnecessary data when loading pre-2.72 games.
 - Fixed "upscale" mode for old games (was broken in 3.5.0). Also engine will now try to detect
   if "upscale" mode wanted by reading old config options (if they are present).
 - Fixed GUI.Visible not returning expected values for GUIs with "Popup At Y" style in
   pre-3.5.0 games, breaking some older games logic.
 - Fixed potential buffer overflow when reading pre-3.1.0 games with old dialog script texts.
 - Fixed engine was applying player's position too early when ChangeRoom was called for 2.72 and
   earlier games, which could result in wrong placement in the new room if the character was
   walking right before the transition.

Android:
 - Corrected game scanning in AGS launcher, now it will work consistently with the desktop ports,
   and detect any compatible game data files named "*.ags" or "*.exe".

OSX:
 - When looking for game files engine will no longer use hardcoded filename, will search for any
   compatible pack file instead.

Windows:
 - Windows version of the engine now reads global configuration file. It is looked up in
   "%USERPROFILE%/Saved Games/Adventure Game Studio/acsetup.cfg"
 - Default log file location is now also in "%USERPROFILE%/Saved Games/Adventure Game Studio".
 - Added "--no-message-box" command line option to hide message boxes when alerts are raised.
 - Added "--console-attach" command line option to try attach to the parent process's console.

WinSetup:
 - Fixed changing fullscreen mode from "use current desktop" to explicit resolution on save.


VERSION 3.5.0 - Patch 10, May 2021

Engine:
 - Fixed managed handle error that occured if you would copy an element of any string array
   returned by Dictionary.GetKeysAsArray(), GetValuesAsArray() and Set.GetItemsAsArray();
   for example: assign array's element to a local variable.


VERSION 3.5.0 - Patch 9, March 2021

Editor:
 - Fixed importing Characters and GUIs saved by previous versions of the editor.
 - Added support for startup pane hyperlink color in Color Themes.

Engine:
 - Disabled writing user config upon game exit at least temporarily, because it was causing
   confusion by unexpectedly overriding default config even if player did not start setup program.
 - Fixed crash occuring if room object's Graphic is set to sprite with ID greater than 32767.
 - Fixed button image did not appear updated right after restoring a save.
 - Fixed legacy PlayMusic() and PlaySound() functions failing if the audio file
   had uppercase characters in name (regression since 3.4.0).

Linux:
 - For users of prebuilt binaries fixed potential crash in ogg vorbis library that could occur upon
   restoring a save made while sounds were playing.
 - Fixed OpenGL window did not resize properly upon running the game on some systems.
 - Fixed Alt + Enter combination for toggling window mode was not detected on some systems.


VERSION 3.5.0 - Patch 8, February 2021

Common:
 - Fixed compressed sprite file was not built properly if exceeded 2 GB.


VERSION 3.5.0 - Patch 7, January 2021

Editor:
 - Added validation for "Game file name" property to help avoid unsupported filenames.

Engine:
 - Fixed Right-to-left text was not drawn correctly (regression in 3.5.0).


VERSION 3.5.0 - Patch 6, December 2020

Engine:
 - Fixed Viewport.GetAtScreenXY() causing script errors at runtime.
 - Fixed Software renderer could freeze the game in case there are multiple room viewports.
 - Fixed Software renderer could draw room viewport in a wrong position if it was moved.
 - Fixed RunAGSGame crashed the game if it uses any font plugin (implementing IAGSFontRenderer).
 - Fixed built-in palgorithms plugin had uninitialized variable that could cause a crash.


VERSION 3.5.0 - Patch 5, October 2020

Editor:
 - Fixed Inventory Item preview could show wrong sprites and/or sprites in wrong scale.

Engine:
 - Fixed Dictionary.Get() crashing on missing key instead of returning null, as expected.
 - Dictionary.GetKeysAsArray(), GetValuesAsArray() and Set.GetItemsAsArray() now return null
   if they have no elements (0-sized arrays are forbidden by AGS Script).
 - Fixed AudioChannel.SetRoomLocation() parameters lost upon restoring a saved game.

Linux:
 - Disabled mouse speed control as it cannot be correctly supported. This fixes mouse movement
   glitches in fullscreen on certain systems.

Compatibility:
 - Don't error on missing speech animation frames if speaking character is disabled (.on = false)
 - Fixed legacy Seek/GetMIDIPosition() and Seek/GetMP3PosMillis() not working correctly in threaded
   audio mode.


VERSION 3.5.0 - Patch 4, August 2020

Editor:
 - Fixed room editor crashing after user changes script name of a character present in opened room.
 - Fixed modifying any item's name will make a new name assigned to all opened tabs.

Engine:
 - Fixed OpenGL was taking screenshots incorrectly on certain systems with different alignment
   of color components in video memory (OSX, iOS).

WinSetup:
 - Fixed "Use voice pak" option was reset if no speech.vox found.


VERSION 3.5.0 - Patch 3, July 2020

Editor:
 - In room editor adjusted the object selection bar's visual style, made dropdown buttons larger
   and easier to click on.
 - Made room editor display "locked" cursor consistently when whole object/area group is locked,
   and when over locked Edges.
 - Fixed room editor failing to initialize if currently selected object's name exceeded navigation
   bar's width.
 - Fixed some panels were not upscaling sprite previews in low-resolution projects as intended.
 - Fixed ViewFrame's default Sound value set as "-1 (unknown)" (should be "none").
 - Fixed "Change ID" command did not affect order of game objects in a compiled game until a
   project was reloaded in the editor.
 - Fixed "Change ID" command on a View restricted max ID to a wrong number (lower than normal).
 - Fixed Character preview was not updated when View ID is changed.
 - Fixed Room editor displayed character incorrectly when its ID is changed.
 - Fixed import of room scripts when loading an old game made by AGS 2.72 or earlier.
 - Fixed another unhandled exception occuring when Editor was about to report "unexpected error".

Engine:
 - RunAGSGame() will now automatically reset translation to Default before starting new game,
   to prevent situations when new game will be trying to init a translation from previous game.
 - Character speech will be now displayed relative to the first found viewport the character is
   seen in, or the one which camera is closest to the character in the room.
 - Fixed crash when deleting custom Viewport in a non-software graphics mode.
 - Fixed Viewport.Camera not handling set null pointer properly (should disable viewport now).
 - Fixed Screen.RoomToScreenPoint()/ScreenToRoomPoint() functions were converting coordinates
   always through camera #0, instead of a camera actually linked to the primary viewport.
 - Fixed Screen.AutoSizeViewportOnRoomLoad property was forcing always camera #0 to align itself
   to the new room, instead of a camera actually linked to the primary viewport.
 - Fixed speech vertical position was not correctly calculated if the room camera is zoomed.

Linux:
 - Fixed script floats were printed according to system locale rules and not in uniform one.

Windows:
 - Again fixed game becoming minimized when quitting with error from the Direct3D fullscreen.


VERSION 3.5.0 - Patch 2, February 2020

Editor:
 - Fixed mouse cursor flicker above the script editor, again (was fixed first for 3.3.5, but
   then reverted by mistake).
 - Fixed bitmap palette was not remapped to game or room palette for 8-bit sprites if they were
   imported with "Leave as-is" transparency setting.
 - Fixed an imported palette did not really apply to sprites until reopening a game in the editor.

Engine:
 - Fixed crash when saving in a game which contains Set or Dictionary in script.
 - Fixed crash caused by a 32-bit sprite with alpha channel in a 8-bit game.
 - Fixed occasional regression (since 3.4.3) in OpenGL renderer that caused graphic
   artifacts at the borders of sprites, but only when nearest-neighbour filter is used.

Windows:
 - Fixed keyboard and mouse not working when game is run under Wine (or, potentially, particular
   Windows setups too).
 - Fixed maximal allowed window size deduction, which works better on Windows 8 and higher.
 - Fixed game becoming minimized when quitting with error from the fullscreen mode, requiring
   player to switch back in order to read the error message.

WinSetup:
 - Fixed crash occuring if the chosen graphics driver does not support any modes for the current
   game's color depth.


VERSION 3.5.0 - Patch 1, December 2019

Editor:
 - Fixed changing Audio Clip ID or deleting a clip could break sound links in view frames.
 - Fixed importing an older version project during the same editor session, in which one game was
   already opened, could assign previous game's GameFileName property to the next one.
 - Fixed some fonts may be not drawn on GUI preview after any font with lower ID was modified.
 - Fixed Pause and Stop buttons were enabled when first opening an audio clip preview, and clicking
   these could lead to a crash.
 - Fixed a potential crash during audio clip preview (related to irrKlang .NET library we use).
 - Fixed a potential resource leak in the sprite preview.

Engine:
 - Fixed IsKeyPressed script function returning values other than 0 or 1 (broke some scripts).
 - Fixed grey-out effect over disabled GUI controls was drawn at the wrong coordinates.


VERSION 3.5.0, December 2019

Common features:
 - Now using Allegro v4.4.3 library (previously v4.4.2).
 - Support for large files: compiled game, sprite set, room files now may exceed 2 GB.
 - Deprecated relative assets resolutions: now sprites, rooms and fonts are considered to
   match game's resolution by default and not resized, unless running in backwards-compatibility
   mode.
 - Allow room size to be smaller than the game's resolution.
 - Removed fonts count limit.
 - Raised imported sprites count limit to 90000 and removed total sprite count limit
   (this means you may have around 2 billions of dynamic sprites).
 - Removed length limit on the Button and TextBox text (was 50 and 200 respectively).
 - Removed limit on ListBox item count (was 200).

Editor:
 - Editor requires .NET Framework 4.5 to run. Dropped Windows XP support.
 - Editor preferences are now stored using .NET configuration model, instead of the
   Windows registry.
 - Added support for custom UI color themes.
 - Added "Window" - "Layout" submenu with commands for saving and loading panel layout.
 - Game and room templates are now by default saved in AppData/Local/AGS folder.
   Editor finds them in both program folder and AppData.
 - Allow to change IDs of most of the game items in the project tree by swapping two
   existing items. This is done by calling a context menu and choosing "Change ID".
 - Added "Game file name" option to let users easily set compiled game file's name.
 - Added "Allow relative asset resolutions" option to "Backwards Compatibility" section.
   Disabled by default, it makes game treat all sprites and rooms resolution as real one.
 - Added "Custom Say/Narrate function in dialog scripts" options which determine what
   functions are used when converting character lines in dialog scripts to real script.
   IMPORTANT: this does not currently work with the "Say" checkbox. The workaround is as before:
   duplicate option text as a first spoken line in the dialog script.
 - New revamped sprite import window.
 - Sprites that were created using tiled import can now be properly reimported from source.
 - Added context menu command to open sprite's source file location.
 - Using Magick.NET library as a GIF loader. This should fix faulty GIF imports.
 - New sprite export dialog that lets you configure some export preferences, including
   remapping sprite source paths.
 - Sprites have "Real" resolution type by default. "Low" and "High resolution" are kept
   for backwards compatibility only. When importing older games resolution type will be
   promoted to "Real" whenever it matches the game.
 - New navigation bar in the room editor, which allows to select any room object
   or region for editing, show/hide and lock room objects and regions in any combination.
   These settings are saved in the special roomXXX.crm.user files.
 - Improved how Room zoom slider works, now supports downscale.
 - Added "Export mask to file" tool button to the Room Editor.
 - Added MaskResolution property to Rooms. It ranges from 1:1 to 1:4 and lets you define
   the precision of Hotspot, Regions and Walkable Areas relative to room background.
 - Added "Default room mask resolution" to General Settings, which value will be applied
   to any room opened for editing in this game for the first time.
 - Added "Scale movement speed with room's mask resolution" to General Settings.
 - Removed Locked property from the Room Object, objects are now locked by the navbar.
 - Split GUI's Visibility property into PopupStyle and Visible properties.
 - Added Clickable, Enabled and Visible properties to GUI Controls.
 - "Import over font" command now supports importing WFN fonts too.
 - Removed "Fonts designed for high resolution" option from General Settings. Instead added
   individual SizeMultiplier property to Fonts.
 - Alphabetically sort audio clips in the drop lists.
 - Display audio clip length on the preview pane without starting playback.
 - Sync variable type selector in Global Variables pane with the actual list of supported
   script types.
 - Added ThreadedAudio property to Default Setup.
 - In preferences added an option telling whether to automatically reload scripts changed
   externally.
 - Added "Always" choice to "Popup message on compile" preference. Successful compilation
   popup will only be displayed if "Always" choice is selected.
 - Added shortcut key combination (Shift + F5) for stopping a game's debug run.
 - Don't display missing games in the "recent games" list.
 - Build autocomplete table a little faster.
 - Disabled sending crash reports and anonymous statistics, because of the AGS server issues.
 - Corrected .NET version query for the anonymous statistics report.
 - Fixed Default Setup was not assigned a proper Title derived of a new game name.
 - Fixed crash and corruption of project data when writing to full disk.
 - Fixed saving sprite file to not cancel completely if only an optional step has failed
   (such as copying a backup file).
 - Fixed changing character's starting room did not update list of characters on property
   pane of a room editor until user switches editing mode or reloads the room.
 - Fixed room editor kept displaying selection box over character after its starting room
   has changed.
 - Fixed room editor not suggesting user to save the room after changing object's sprite
   by double-clicking on it.
 - Fixed sprite folders collapsing after assigning sprite to a View frame or an object.
 - Fixed view loops displayed with offset if the view panel area was scrolled
   horizontally prior to their creation.
 - Fixed MIDI audio preview was resetting all instruments to default (piano) after pausing
   and resuming playback.
 - Fixed MIDI audio preview had wrong control states set when pausing a playback.
 - Fixed autocomplete not showing up correctly if user has multiple monitors.
 - Fixed autocomplete crashing with empty /// comments.
 - Fixed script compiler could leave extra padding inside the compiled scripts filled with
   random garbage if script strings contained escaped sequences like "\n" (this was not good
   for source control).

Scripting:
 - Fixed compiler was not allowing to access regular properties after type's static properties
   in a sequence (for example: DateTime.Now.Hour).

Script API:
 - Introduced new managed struct Point describing (x,y) coordinates.
 - Introduced StringCompareStyle enum and replaced "caseSensitive" argument in String functions
   with argument of StringCompareStyle type.
 - Implemented Dictionary and Set script classes supporting storage and lookup of strings and
   key/value pairs in sorted or unsorted way. Added SortStyle enum for use with them.
 - Implemented Viewport and Camera script classes which control how room is displayed on screen.
 - Implemented Screen struct with a number of static functions and properties, which notably
   features references to the existing Viewports. Deprecated System's ScreenWidth, ScreenHeight,
   ViewportWidth and ViewportHeight in favor of Screen's properties.
 - Added Game.Camera, Game.Cameras and Game.CameraCount properties.
 - All functions that find room objects under screen coordinates are now being clipped by the
   viewport (fail if there's no room viewport at these coordinates). This refers to:
   GetLocationName, GetLocationType, IsInteractionAvailable, Room.ProcessClick, GetWalkableAreaAt
   and all of the GetAtScreenXY functions (and corresponding deprecated functions).
 - Added Character.GetAtRoomXY, Hotspot.GetAtRoomXY, Object.GetAtRoomXY, Region.GetAtScreenXY,
   replaced GetWalkableAreaAt with GetWalkableAreaAtScreen and added GetWalkableAreaAtRoom.
 - Replaced Alignment enum with a new one which has eight values from TopLeft to BottomRight.
 - Renamed old Alignment enum to HorizontalAlignment, intended for parameters that are
   only allowed to be Left, Center or Right.
 - Added new script class TextWindowGUI, which extends GUI class and is meant to access
   text-window specific properties: TextColor and TextPadding.
 - Added new properties to GUI class: AsTextWindow (readonly), BackgroundColor, BorderColor,
   PopupStyle (readonly), PopupYPos.
 - Added Button.TextAlignment and Label.TextAlignment.
 - Added missing properties for ListBox: SelectedBackColor, SelectedTextColor, TextAlignment,
   TextColor.
 - Replaced ListBox.HideBorder and HideArrows with ShowBorder and ShowArrows.
 - Added TextBox.ShowBorder.
 - Added AudioClip.ID which corresponds to clip's position in Game.AudioClips array.
 - Added Game.PlayVoiceClip() for playing non-blocking voice.
 - Added SkipCutscene() and eSkipScriptOnly cutscene mode.
 - Allowed to change Mouse.ControlEnabled property value at runtime.
 - Added Game.SimulateKeyPress().
 - Added optional "frame" parameter to Character.Animate and Object.Animate, letting you begin
   animation from any frame in the loop.
 - Deprecated "system" object (not System struct!).
 - Deprecated Character.IgnoreWalkbehinds and Object.IgnoreWalkbehinds.
 - Deprecated DrawingSurface.UseHighResCoordinates. Also, assigning it will be ignored if game's
   "Allow relative asset resolutions" option is disabled.

Engine:
 - New pathfinder based on the A* jump point search.
 - Implemented new savegame format. Much cleaner than the old one, and easier to
   extend, it should also reduce the size of the save files.
   The engine is still capable of loading older saves, temporarily.
 - Implemented support for sprite batch transformations.
 - Implemented custom room viewport and camera.
 - Removed limits on built-in text wrapping (was 50 lines of 200 chars max each).
 - Removed 200 chars limit for DoOnceOnly token length.
 - Try to create all subdirectories when calling File.Open() for writing,
   DynamicSprite.SaveToFile() and Game.SetSaveGameDirectory().
 - Reimplemented threaded audio, should now work correctly on all platforms.
 - Made debug overlay (console and fps counter) display above any game effects (tint, fade, etc)
 - Made fps display more stable and timing correct when framerate is maxed out for test purposes.
 - Print debug overlay text using Game.NormalFont (was hard-coded to default speech font).
 - Improved performance of hardware-accelerated renderers by not preparing a stage bitmap
   for plugins unless any plugin hooked for the particular drawing events.
 - Reimplemented FRead and FWrite plugin API functions, should now work in 64-bit mode too.
 - Support "--gfxdriver" command line argument that overrides graphics driver in config.
 - Implemented "--tell" set of commands that print certain engine and/or game data to stdout.
 - Use "digiid" and "midiid" config options to be used on all platforms alike and allow these to
   represent driver ID as a plain string and encoded as an integer value (for compatibility).
 - Completely removed old and unsupported record/replay functionality.
 - Replaced number of fatal errors reported for incorrectly called script functions with
   a warning to the warnings.log instead. This is done either when arguments may be fixed
   automatically, or script command simply cannot be executed under current circumstances.
 - Expanded some of the error messages providing more information to end-user and developers.
 - Fixed engine could not locate game data if relative path was passed in command line.
 - Fixed potential bug which could cause DoOnceOnly tokens to be read incorrectly from a savedgame.
 - Fixed engine crashing with "division by zero" error if user set InventoryWindow's ItemWidth or
   ItemHeight to 0.
 - Fixed engine crashing if Object.SetView is called with a view that does not have any loops.
 - Fixed old walk-behind cut-outs could be displayed on first update in a room if the room's
   background was modified using raw drawing commands before fade-in. This happened only when
   running Direct3D or OpenGL renderer. Note that this bug was probably never noticed by players
   for a certain barely related reason.
 - Fixed BlackBox-in transition done by software renderer could have wrong aspect ratio.
 - Fixed Direct3D and OpenGL displayed pink (255, 0, 255) fade as transparent.
 - Fixed Direct3D was slightly distorting game image in pixel perfect mode.
 - Fixed Direct3D was not clearing black borders in fullscreen, which could cause graphical
   artifacts remaining after the Steam overlay, for example.
 - Fixed potential crash that could happen when switching between fullscreen and windowed mode,
   or switching back into game window (only observed on Linux for some reason).
 - Fixed a bug in mp3/ogg decoder where it assumed creating an audiostream succeeded without
   actually testing one.

Linux:
 - Use same FreeType library sources as Windows version, which suppose to fix TTF font glitches.
 - Re-enabled threaded audio setting.
 - $APPDATADIR$ script paths are now mapped to "$XDG_DATA_HOME/ags-common", making sure it is a
   writeable location.

Windows:
 - Windows version of AGS is now built with MSVS 2015 and higher.
 - Engine is marked as a DPI-aware application that supposed to prevent window scaling by system.

WinSetup:
 - Added "Enable threaded audio" checkbox.


VERSION 3.4.4 - Patch 1, September 2019

Engine:
 - Fixed increased CPU load when displaying built-in dialogs (save, restore etc).


VERSION 3.4.4, July 2019

Editor:
 - Disabled screenshot made when sending a crash report, for security reasons.
 - Fixed Audio folders were displaying internal "AllItemsFlat" property on property grid.
 - Fixed crash when editor was updating file version in compiled EXE but failed and tried to
   report about that.

Engine:
 - Fixed Character.DestinationY telling incorrect values beyond Y = 255.
 - Fixed DynamicSprite.SaveToFile() not appending ".bmp" if no extension was specified.
 - Fixed IsMusicVoxAvailable() not working correctly in old games which use 'music.vox'.
 - Restored support for running games made with experimental 3.3.0 CR version.
 - Fixed character's blinking frames drawn incorrectly when legacy sprite blending mode was on.
 - Restored legacy InventoryScreen() behavior which picked sprites 0, 1, 2 for inventory dialog
   buttons when predefined 2041, 2042 and 2043 were not available.
 - Fixed negative "cachemax" value in config could lock the engine at startup.
 - Added Scavenger's palgorithms plugin to the list of builtins, for ports that use ones.
 - Added stubs for monkey0506's Steam and GoG plugins to let run games on systems that do not have
   Steam/GoG installed (all related functionality will be disabled though).
 - Added stubs for SpriteFont plugin.
 - Added missing stubs for agswadjetutil plugin.

Linux:
 - Support for OpenGL renderer.


VERSION 3.4.3 - Patch 1, February 2019

Engine:
 - Fixed serious mistake that would cause crashes in plugins which export their own
   managed types for game script.

Linux:
 - Fixed compilation against recent Allegro 4.4.3 release.
 - Updated prebuilt binaries to be compatible with Debian 8 (jessie) and higher.


VERSION 3.4.3, February 2019

Common features:
 - Removed restriction preventing GUIs to be larger than the game's screen.

Editor:
 - Added missing audio options to Default Setup.
 - Fixed GUI and Room editors sometimes having larger scrollable area than necessary.
 - Fixed editable area was not resized when GUI size changed.
 - Fixed TextWindow GUI's elements could be deleted or moved in the editor with key
   controls with no means to restore them.
 - Don't modify filesystem permissions in Compiled directory when compiling the game.
   Editor no longer requires non-standard "takeown.exe" utility.
 - Fixed Windows Explorer was sometimes locking the game files during compilation.
 - Fixed rooms not being rebuilt when running game just created from a template.
 - Fixed translations were not updated or available at all for the test run unless the
   game was fully rebuilt.

Engine:
 - Allowed engine to return integer of "0" value from script functions that are "void"
   by nature, for compatibility reasons. This may fix running particular old games.
 - Fixed const-sized char[] arrays in managed structs did not work correctly and could
   even cause engine to crash.
 - Fixed some compilers could instigate a crash in the on_event callback if it was called
   before the first room is loaded.
 - Prevent game from crashing if there was an attempt to use a non-existant font index.
 - Fixed crash when calling DisplayTopBar with a title longer than 200 characters.
 - Fixed DisplayTopBar() was displayed on screen for the time calculated from the length
   of it's title rather than it's message text (regression).
 - Fixed built-in inventory screen could crash the game again (regression).
 - Made engine fallback to defaults if config contains invalid graphic scaling setting.
 - Fixed crash in the Software renderer which was occuring if it failed anytime after
   setting display mode but prior to initializing scaling filter.
 - Fixed graphic artifacts looking like thin vertical lines around sprites when running
   OpenGL renderer (aka "texel leaking").
 - Fixed OpenGL not displaying tinted sprites at all if tinting shader does not work
   (now will display sprites without tint).
 - Fixed 8-bit sprites could have broken colours if game is run using Direct3D or OpenGL.
 - Fixed broken colours during fade-in and fade-out in 16-bit games.
 - Fixed possible crash occuring when switching in and out the game window while game is
   being shut down.
 - Improved a warning message displayed when sound driver was not initialized, and added
   a hint for players on how to supress it.
 - Fixed double error message displayed if the game has an unsupported data format.

Linux:
 - Fixes Linux game launch script (fixes issues with itch.io client).

Android:
 - Long press on "Back" button now calls in-game menu (was displaying exit confirmation).
   This change was made to counter removal of "Menu" button on many modern devices.
 - Fixed long press on "Back" and "Menu" buttons not handled correctly on some devices.

WinSetup:
 - Always provide at least two standard fullscreen modes for selection, even if graphics
   driver failed to return a list of supported modes.


NOTE: VERSION 3.4.2 was cancelled and never released: the WIP build was renamed to 3.5.0.


VERSION 3.4.1 - Patch 4, September 2018

Engine:
 - Fixed dynamic array of Dynamic Sprites or Overlays could loose some of its elements
   after restoring a savedgame.
 - Fixed Debug(2) and Debug(5) commands (regression).
 - Fixed "warnings.log" was never created (regression).


VERSION 3.4.1 - Patch 3, July 2018

Editor:
 - Added scrollbars and zoom slider to the GUI editor.
 - Added one extra zoom step to the Room editor and fixed mouse wheel scrolling
   zoom slider by 3 steps at once instead of 1.
 - Fixed Undo history getting lost after saving the script.
 - Fixed crash when importing old game's rooms with interaction variables.
 - Fixed incorrect character names appearing after old game's import.

Engine:
 - Reverted conversion of all graphics on load to 32-bit, made the game run in its
   native color again, but correctly convert to 32-bit display instead.
   This fixes certain bugs found in 16-bit games since the first 3.4.1 release.
 - Fixed pressing ALT+ combination on Windows sometimes caused another key to "stuck",
   endlessly triggering key events in game.
 - Fixed service key shortcuts (switching display mode, (un)locking mouse in window)
   did not work at particular stages of the game, like video playback and dialog options.
 - Fixed unwanted transparency on built-in GUI in 8-bit games.
 - Fixed engine was reporting string format errors as internal ones and not script's.
 - Fixed crash when loading an old game's room with interaction variables.


VERSION 3.4.1 - Patch 2, May 2018

Editor:
 - Font's line spacing and offset are now used when displaying GUI previews.

Engine:
 - Removed limit on maximal number of asset files in a game package.
 - Fixed game refused to start at all if speech.vox has bad format.
 - Fixed DynamicSprite.SaveToFile() was not appending default  "bmp" extension
   if user did not specify one.

Android:
 - Updated port to work with 3.4.1 engine. Software renderer works again too
   (was broken in 3.4.0).


VERSION 3.4.1 - Patch 1, January 2018

Engine:
 - Removed game error reported when GUI coordinates were off the room limits.
 - Fixed crash in Direct3D renderer when alt+tabbing out of fullscreen mode.
 - Fixed OpenGL fullscreen mode was not minimized when you alt+tab from it.
 - Fixed Direct3D and OpenGL renderers unnecessarily applied anti-aliasing on
   utility sprites (used for transition effects) when "smooth scaled sprites"
   option was enabled.


VERSION 3.4.1, December 2017

Common features:
 - Upgraded Windows version of AGS with Allegro v4.4 library (previously v4.2).
 - Implemented "RenderAtScreenResolution" game setting. When enabled, characters
   and objects are scaled in screen pixels rather than game pixels.
 - Implemented VerticalOffset and LineSpacing properties for fonts.
 - Removed limit on Dialog Topics (was 500 topics per game).
 - Removed length limit on the script names of Inventory, GUI and GUI Controls.
 - Removed length limit on the script names of Hotspots and Objects.
 - Removed length limit on event handler names.

Editor:
 - Removed legacy game compiler.
 - Raw compiled game data is now saved in "Compiled\Data" folder, as opposed to
   just "Compiled".
 - The speech.vox file is now not recompiled if game is quick-run (using F5).
   Engine is supposed to find newer files in the Speech folder.
 - Editor can now import games older than 2.72, and newer too (3.*) if you have
   extracted data files from compiled executable.
 - ScriptAPIVersion and ScriptCompatibilityLevel settings now have "Highest"
   option, which is meant for automatically enabling newest script API when
   upgrading old project in a newer editor.
 - Added new "Default Setup" pane, which works similarily to "General Settings"
   and lets you configure default values for game setup.
 - Added "Font Height (pixels)" readonly property to the Font's pane, which
   works for both WFN and TTF fonts and may be used as a reference.
 - Made Editor correctly detect modern versions of MS Windows for display on
   About dialog and when sending anonymous statistics.
 - New application icon to comply with 3.4.0 splash screen.
 - Fixed crash when importing old games which have extended editor version
   string saved in the project files.
 - Few improvements to the game compilation made in hope to reduce occasional
   data corruption.

Script:
 - Fixed local variables not working in the switch's case expressions.
 - Fixed Strings in switch, making them compare by value again.
 - Fixed compiler mistakes caused by the use of objects of empty type
   (that is - struct without any variables in it).
 - Fixed few cases of possible compiler crashing when there is an unfinished
   statement in the end of the script.
 - Fixed unhandled exception occuring when user types "#undef", "#ifdef" or "#ifndef"
   on the last line of the script.
 - Fixed #ifver and #ifnver not working properly if version number had only one
   component (major version).

Script API:
 - A new parameter StopMovementStyle is added to following functions: LockView,
   LockViewAligned, LockViewFrame, LockViewOffset, UnlockView. This parameter
   can be eStopMoving (default) or eKeepMoving.
 - DynamicSprite.CreateFromFile and SaveToFile now support path tokens and
   comply to the new file path rules (no writing files to the game's
   installation directory).
 - Added missing readonly properties to get Lighting/Tinting parameters for
   Character and Object: HasExplicitLight, HasExplicitTint, LightLevel,
   TintBlue, TintGreen, TintRed, TintSaturation, TintLuminance.
 - Added Mouse.SelectPreviousMode() and Mouse.IsModeEnabled(CursorMode)
   functions.
 - Added readonly properties to get Button's animation state: Button.Animating,
   Button.Frame, Button.Loop, Button.View.
 - Added GetFontHeight(FontType) and GetFontLineSpacing(FontType) functions.
 - Added setter for System.Windowed property, letting to change it at runtime,
   switching between windowed and fullscreen modes.
 - Added System.RenderAtScreenResolution property to change sprite rendering
   mode at runtime.

Engine:
 - Added OpenGL renderer to Windows version.
 - Partial support for plugins drawing on screen for hardware-accelerated
   renderers (Direct3D, OpenGL).
 - Added support for switching between fullscreen and windowed modes at runtime
   using Alt+Enter key combination.
 - All supported renderers now run 16-bit and 32-bit games in 32-bit display
   mode by default, and convert game's graphics on load if that is required.
   Hardware-accelerated renderers (Direct3D and OpenGL) are also allowed to run
   8-bit games, converting graphics to 32-bit at runtime.
   This measure improves Software renderer work on contemporary systems, and fixes
   loss of green hue precision in 16-bit games when they are run with Direct3D or
   OpenGL.
   NOTE: 8-bit dynamic palette cycling is still not supported for hardware-
   accelerated drivers.
 - Added support for global configuration file, which works as configuration
   for all games and overrides default game's config file. Individual game
   user's config overrides global one in its turn. Global config's location is
   platform-dependent (this feature is currently disabled on Windows).
 - Implemented separate config option for game's shared data path, to keep it
   distinct from user-defined saves path.
 - Engine saves last Windowed and RenderAtScreenResolution mode states to the
   user config file.
 - Engine no longer writes and reads gamma level in saves, meaning that gamma
   keeps its current value when restoring a saved game.
 - Removed arbitrary limit on number of sprites rendered at the same time for
   hardware-accelerated renderers (Direct3D and OpenGL) (was 75), and another
   limit imposed on drawing entries for all drivers (was 200).
 - Engine now tries to get voice files from the Speech folder first, if one
   exists, and speech.vox later when quick-run from the Editor.
 - Fixed speech portrait was displayed below GUI, contrary to speech text.
 - Fixed ShakeScreen command was causing graphic artifacts when game is run
   with software renderer.
 - Fixed calling ChangeView during idle animation results in new view being animated.
 - Fixed Speech.SkipStyle getter return value for eSkipTime case.
 - Fixed Speech.VoiceMode not returning correct values when speech.vox is not
   enabled/present.
 - Fixed AdjustVolumeWithScaling character's property not working with the new
   audio system.
 - Fixed volume drop was not applied to audio clips which begin playing during
   speech voice-over.
 - Fixed Game.SetAudioTypeSpeechVolumeDrop did not affect currently playing
   clips until next voice-over begins.
 - Fixed Game.TranslationFilename returning "default" instead of empty string
   if no translation is set.
 - Fixed engine was trying to locate "My Documents" folder on Windows Vista and
   higher even though it did not need it, and reporting internal error if such
   folder was not found, even though "Saved Games" folder is used instead.
 - Properly toggle console upon play.debug_mode variable change in script.
 - Added missing stubs for agsjoy plugin.

WinSetup:
 - Fixed display mode selection was missing certain items.


VERSION 3.4.0 - Patch 4, March 2017

Editor:
 - Improved Font preview, now it displays all 256 supported characters and
   resizes itself to accomodate these on the grid properly.
 - Fixed game compilation on systems which have Japanese ANSI or similar locale
   as default locale for non-Unicode applications.
 - Fixed Linux binaries were not copied to the Compiled folder if AGS Editor is
   installed to "C:/Program Files" and run in a non-administrator mode.
  
Engine:
 - Fixed toggling mouse lock in window with Ctrl+Alt did not work all the time.


VERSION 3.4.0 - Patch 3, February 2017

Common bug fixes:
 - Fixed program crash in Engine and Editor when loading/importing a game that
   contains file with name longer than 50 characters.

Editor bug fixes:
 - Do not copy hidden and system files into final directories when building the
   game.


VERSION 3.4.0 - Patch 2, February 2017

Script API:
 - Extended the list of System.OperatingSystem possible return values;
   now supports eOSAndroid, eOSiOS, eOSPSP

Editor bug fixes:
 - Fixed incorrect Unicode-to-ANSI string conversion during game compilation
   which caused text containing non-latin characters become random mess in game,
   even if game fonts compiled to the proper ANSI codepage.

Engine bug fixes:
 - Fixed mouse cursor stuck at the left border of the screen when using OpenGL
   renderer (Android & iOS ports).
 - Fixed InventoryScreen() script function caused game to crash if particular
   resources are not available.
 - Fixed built-in inventory screen not working with Direct3D and OpenGL
   renderers.
 - Fixed obsolete gfxfilter names are printed when using --help argument.

Cosmetics & convenience:
 - Corrected error message displayed when engine cannot get write access to the
   disk (e.g. no more telling to not run from CD on Android).
  
Manual:
 - Added information on static extenders.


VERSION 3.4.0 - Patch 1, November 2016

Editor:
 - Fixed #if(n)ver preprocessor directive failed to properly compare versions
   if the current and required versions have different number of digits.

Engine:
 - Returned support for some older config options related to graphics mode,
   so that the engine would be able to use old config files.
 - Fixed graphics mode initialization failure in certain less common setup
   cases, such as when requested window size was larger than current
   desktop resolution, or when the final mode appeared smaller than the
   precalculated one.
 - Fixed couple of memory leaks occuring when saved game is restored.
 - Fixed rare crash when restoring a game while having unreleased DrawingSurface
   pointers.
 - Fixed compilation in C++11 mode.

WinSetup:
 - Fixed "native game resolution" mode choice was not properly restored when
   loading config file.


VERSION 3.4.0, September 2016

Common features:
 - Added support for building game for multiple platforms (Windows and Linux
   options are maintained now).
 - Added custom game resolutions.
 - Added extended WFN font support (up to 256 characters).
 - Made custom property values modifiable at runtime.
 - Removed limit on custom properties number (was 30 properties per project),
   increased maximal property name and value length.
 - Removed limit on GUI Control number (was 30 per GUI),
   increased maximal control name length.
 - Removed limit on script modules number (was 50).
 - Added Locked property to room Objects.
 - Added Padding property for TextWindow GUI.

Editor features:
 - New splash screen.
 - Exposed Clickable property for room Objects in the Editor.
 - Exposed TintLuminance property for room Regions in the Editor.
 - Added "Close all tabs" command for the pane's context menu.
 - Added Preferences option "Prompt dialog on closing multiple tabs".
 - The sprite editor now highlights drop targets when you drag sprites around.

Editor Plugin API:
 - Exposed GUI Panes to plugin API.

Engine features:
 - Added support for any runtime display resolution (now restricted only
   by your system specifics).
 - Added support for vertical sync in Direct3D rendering mode.
 - Made engine try to use all implemented graphic renderers in the
   order of priority, if user selection failed to initialize.
 - Rised default sprite cache limit for desktop platforms to 100 MB (was 20).
 - Game writes latest translation and mouse speed setting to config file
   on exit.

Scripting features:
 - Added managed user structs; although currently limited to containing only
   non-pointer variables in them.
 - Added support for dynamic arrays in non-managed structs.
 - Added support for dynamic array as return value of the struct's
   member function.
 - Added support for static extender functions.
 - Added "do..while" kind of loop, in addition to previously existing "while".
 - Added "for" operator and related loop construct.
 - Added "switch" and "case" operators and related branching construct.
 - Added "break" and "continue" operators working in any loop or switch.
 - Added missing compound assignment operators (*=, /=, and so on).
 - Made preprocessor macros usable in definition of another macro.
 - Added "#region" and "#endregion" preprocessor commands.

Script API:
 - Added Script API version switch to the project's General Settings. For every
   supported API version a "SCRIPT_API_vXXX" macro is introduced, where XXX are
   version numbers.
 - Added Script Compatibility Level switch to General Settings. For every
   compatible version a "SCRIPT_COMPAT_vXXX" macro is introduced.
 - Added AudioChannel.Speed property.
 - Added CharacterDirection enum and optional "direction" parameter
   for Character.ChangeRoom().
 - Added Character.FaceDirection().
 - Added Character.DestinationX and Character.DestinationY properties.
 - Added RunActiveOption() and Update() member functions to the
   DialogOptionsRenderingInfo type.
 - Extended Dialog Options API: added support for dialog_options_repexec() and
   dialog_options_key_press() functions to improve handling of the custom
   dialog options; added related compatibility project option and support for
   "NEW_DIALOGOPTS_API" macro in scripts.
 - Added game.dialog_options_highlight_color variable.
 - Added File.Seek() function and File.Position property.
 - Added IsInteractionAvailable() method to Hotspot, Object and
   Character types.
 - Added Game.AudioClipCount property and Game.AudioClips[n] array.
 - Added Game.IsPluginLoaded().
 - Added GUIControl.ZOrder property.
 - Added GUI.Click() and Button.Click() functions which call
   OnClick event handler of corresponding GUI or button.
 - Added GUI.ProcessClick() function that processes click on GUI only,
   similarily to how old ProcessClick processed click on room objects only.
 - Added Mouse.Click() function to simulate mouse click on screen.
 - Added Room.GetProperty() to substitute global GetRoomProperty().
 - Added Room.ProcessClick() to substitute global ProcessClick().
 - Added SetProperty() and SetTextProperty() functions to Room, InventoryItem,
   Hotspot, Object and Character types.
 - Added optional "luminance" parameter to Region.Tint() and
   Region.TintLuminance readonly property.
 - Added SetAmbientLightLevel() to set global light level for
   anything in the room.
 - Added Character.SetLightLevel() and Object.SetLightLevel() functions to
   set individual light levels. Negative light levels can be used
   in 8-bit games to produce darkening effect.
 - Added System.RuntimeInfo property which returns a short description of
   current graphics mode, scaling filter and enabled game resources.

Editor bug fixes:
 - Fixed Undo history was deleted when an Editor panel changes
   its docked state.
 - Fixed crashes under certain circumstances when a script editor is closed.
 - Fixed crash if selecting a character without a normal view
   in the room editor.
 - Fixed Ctrl+Tab did not work for the first time when cycling
   through opened editor tabs.
 - Fixed "Go to Line..." command did not always move cursor to correct line.
   Also, do not select that line.
 - Made the project completely rebuild itself whenever "Enable Debug Mode"
   value in the General Settings differs from the setting used for
   the last build, to prevent inconsistency in compiled scripts.
 - Fixed a crash when trying to run game setup from the Editor
   while "Compiled" folder does not exist.
 - Fixed project items could sometimes get incorrectly arranged
   inside the folder.
 - Fixed writing faulty timestamps in project file on some occasions that
   could spoil usage of file versioning control.
 - Fixed Help window positioning on multi-monitor desktop.
 - Fixed error in autocomplete occuring when there is a single-line comment
   in the end of the script.
 - Fixed incorrect compiler parsing of a static function call inside
   array index brackets.
 - Fixed compilation of struct member functions having name identical
   to existing global function.
 - Fixed compilation of structs having members with names identical
   to non-basic types, global variables and game entities (such as characters,
   GUI, etc).
 - Corrected few error messages related to struct's function declaration.
 - Fixed compiler reporting errors as "runtime errors" under
   certain circumstances.
 
Engine bug fixes:
 - Fixed result of using transparency parameter of the
   DrawingSurface.DrawImage() in 32-bit games when drawing opaque sprites
   over surfaces with alpha channel.
 - Fixed DynamicSprite.CopyTransparencyMask() was overwriting magic transparent
   pixels on destination with alpha values from mask.
 - Fixed the speech portrait position was not adjusted for character walking
   between its lines, when BasedOnCharacterPosition portrait placement is used.
 - Fixed occasional pathfinding failure on straight lines with complex
   walkable areas.
 - Fixed using '[' special character in Display-like commands discarded all of
   the backslashes before it (e.g. "\\[" should now print \[ as expected).
 - Fixed WAVE audio not looping after restoring a game
 - Fixed a bug that caused MP3 clip continuously increase its base volume if
   the directional volume modifier was applied.
 - Fixed queued audio clips did not update their volume when default
   audio type volume changes.

WinSetup:
 - Added support for "default_translation_name" option in the "[language]"
   section of the config file.

   
VERSION 3.3.5 - Patch 7, September 2016

Editor:
- Fixed "Check for updates" feature, which should now be compatible with
  the new website.

Engine:
- Allow to run game without mouse installed (game won't abort).
- Fixed SetSavegameDirectory() to be compliant with the new script path rules.
  Now if you pass a save directory without specifying $MYDOCS$ tag, the
  directory will be created as a subdirectory of default saves path. If the
  player has configured a custom save path, SetSavegameDirectory() will
  properly keep subdirectories after remapping paths.
- Fixed missing slash after special directory token in the script file paths
  could case a creation of directory outside of permitted location.
- Fixed plugins with dot (".") in their name failed to load (regression).
- Fixed display gamma forcedly reapplied every time save is restored.


VERSION 3.3.5 - Patch 6, August 2016

Editor:
- Fixed properties buttons dissapearing from the Properties panel if the
  object was selected while the panel was not visible.

Engine:
- Fixed Display script functions displaying different text if there is any
  variadic text formatting function called in repeatedly_execute().
- Fixed text formatting functions did not parse "%%" format properly.


VERSION 3.3.5 - Patch 5, July 2016

Engine:
- Fixed user's allegro.cfg was ignored.


VERSION 3.3.5 - Patch 4, July 2016

Compiler:
- Fixed crash occuring when there is an incomplete declaration in the end
  of script.

Engine:
- Engine will fall back to using default system paths if it failed using
  user-defined custom save path for any reason.
- Fixed engine displaying same warning twice if the loaded game was compiled
  for higher version of AGS.

WinSetup:
- Only let user choose actually existing folders for custom save paths.


VERSION 3.3.5 - Patch 3, June 2016

Engine:
- Fixed "datafile" config option was ignored.
- Fixed "datadir" config option was never used when searching for possible game location
  (this was broken for several years!).
- Fixed Game.FileName property return empty string.
- Fixed built-in console making Direct3D9 graphics driver crash in 16-bit games.


VERSION 3.3.5 - Patch 2, June 2016

Engine:
- Fixed compilation on big-endian systems.
- Fixed compilation with GCC 6.


VERSION 3.3.5 - Patch 1, April 2016

Engine:
- Added support for $INSTALLDIR$ location tag in the filepaths
  used in the script.
- Fixed game could not find files in the current directory when
  run from the Editor.

WinSetup:
- Fixed error that could occur if choosed custom save path
  contained "%" symbol.
- Read correct game's resolution from game data instead of config file.
- Do not write all default config contents to user config, save only options
  that are set by setup program.


VERSION 3.3.5, March 2016

Editor Features:
- Path to resource's (sprite, audio) source file is now saved as relative one if the file is
  located inside game project's folder.
- Removed arbitrary limit of the script imports (was 50000).
- Script allows struct member qualifiers to be in any order.
- Better detection of integer constants overflow in script.
- Removed arbitrary limit of integer default value of +/-32000. Integer values are now limited
  by correct 32-bit values (-2147483648 to 2147483647).
- Support for negative constants in enums.
- Better folding markers and indentation guides in script editor.

Editor Bug Fixes:
- Fixed compiler crash if unknown keyword used after "readonly".
- Fixed compiler did not properly report incorrect type of dynamic array in function declaration.
- Fixed compiler did not report proper type name in case of syntax error sometimes.
- Fixed mouse cursor flicker above the script editor.

Engine Features:
- Removed unconfigurable mouse cursor's acceleration (Windows).
- Support for mouse cursor speed control: may be defined in configuration and changed in script.
- A config option for keeping consistent cursor speed relative to user's desktop resolution.
- Support for locking mouse inside window: automatic lock is enabled in configuration, and user
  may use Ctrl+Alt combination to lock/release mouse at any time.
- Restricted writing game files to special system directories
  (game is forbidden to write files into installation directiory or by absolute path).
  Unsafe paths are either remapped (when possible) or rejected.
- Support for player defined saves & game file directory.
- -v/--version command line argument makes engine display its version and bail.

Engine Bug Fixes:
- Fixed crash if screenshot is taken while game window was minimized or moving.
- Fixed alpha blend did not work properly for speech portrait if blinking frame did not have alpha channel.
- Fixed Display and Say script commands were displaying text for minimal amount of time under certain conditions.
- Fixed legacy audio functions did not start digital music playback if MIDI driver failed to initialize.
- Fixed game was run in smallest possible window if graphics driver failed to initialize fullscreen mode.
- Fixed "--help" command line argument not working all times depending on its order.
- Fixed engine did not always properly closed application window when running debug build.

Script API:
- Supported late_repeatedly_execute_always() callback in script, called after game has updated, but
  before it is drawn.
- Added Mouse.ControlEnabled (readonly) and Mouse.Speed properties.
- Added System.HasInputFocus property which tells if game currently has focus or runs at background.

Cosmetics & convenience:
- Clarified disabled MIDI option name in WinSetup.
- Extended information displayed if graphics driver failed to initialize.
- Clarified error messages for running unsupported games.


VERSION 3.3.4, July 2015

Features:
- Removed 10,000 symbols limit in scripts.
- Added Character.Thinking and Character.ThinkingFrame script properties.
- Added Papagayo voice lip sync support.
- Find/Replace dialog now remembers the state of "Case sensitive" checkbox.
- Engine now scans all available files in search of game data, only giving standard names
  a priority.

Bug Fixes:
- Fixed Editor crash in case of lip sync data parsing error.
- Fixed Find/Replace dialog skipped the first word in the script being searched through.
- Fixed an order of cycling through fields on Find/Replace dialog.
- Restored letterboxed game's viewport behavior for larger (and scrolling) rooms.
- Fixed Hq2x and Hq3x filter rendering when the display resolution requires side borders.
- Fixed Hq2X and Hq3x filters leaving graphic artifacts on letterbox borders.
- Fixed wrong screen settings could be applied in particular cases when requested gfx filter
  could not be found or failed to initialize.
- Gfx filter name supplied in command line is case-insensitive now.
- Do not disable both digital sound and MIDI music if only one of these failed to initialize.
- Fixed MIDI music refuses to start if digital sound is disabled.
- Fixed division by zero in AlMP3 library code, that could cause crash when seeking in MP3
  audio clip.
- Removed an advise to contact Chris Jones displayed in case of error.

Compatibility:
- Permissive emulation of pre-AGS 3.1.1 "option-on/off" commands in dialog script, that do
not stop game execution if a wrong option number is supplied.


VERSION 3.3.3, December 2014

Features:
- "Number dialog options" game setting now let you choose between "Disable", "Keyboard shortcuts
  only" and "Draw numbers and use keyboard shortcuts" instead of being just "on"/"off".
- The built-in shortcut for showing runtime information has been changed from "Ctrl + V" to
  "Ctrl + Alt + V".

Bug Fixes:
- Fixed audio-related crash on some Linux and Linux-derived systems caused by improper use of mutexes.
- Fixed division by zero and color value overflow cases in alpha blender.
- Fixed voice audio breaking playing on very rare occasions when clip format is OGG or MP3.
  The fix is imperfect, and there's very short pause occuring at same point of playback. The voice
  will continue playing though.
- Fixed character walking in hi-res games when the destination has negative Y coordinate.
- Fixed black borders not drawn in screen corners by Direct3D renderer.

Compatibility:
- Corrected interpretation for games made with AGS 3.0 - 3.2 to let them assign empty loop
  in SetObjectFrame().

Engine log:
- Do not log out supported gfx modes twice if the secondary color depth is equal to primary one.


VERSION 3.3.2, September 2014

Features:
- Reimplemented alternate display modes, now side-borders and top/bottom borders work properly for
  all game and screen resolutions.
- Added config option to run pre-3.1.0 lo-res games in hi-res mode.

Bug Fixes:
- Fixed Editor crashing when user types "#define" on the last line of the script.
- Fixed error in game compilation after user moves item folders up or down in the project tree.
- Fixed bug which could make Character.Transparency and Object.Transparency properties return
  slightly incorrect values.
- Fixed bug that could let user to load corrupted savedgame, which in turn could cause more trouble.
- Provided error handling for several exceptional cases on graphics mode initialization (program
  should at least close normally, showing comprehensible error message).
- Fixed crash in legacy built-in inventory screen.
- Fixed bug in script interpreter that could cause misinterpretation of value provided by plugin.
- Fixed "--setup" command line argument not working if it is not the first argument.
- Fixed WinSetup dialog not sized properly when larger fonts (DPI) option is used in
  Windows display settings.

Log additions:
- Write the game data version and the list of supported graphic modes to the log.

Manual:
- Fixed Speech.VoiceMode example.


NOTE: VERSION 3.3.1 was cancelled and never released: the WIP build was renamed to 3.4.0.


VERSION 3.3.0, February 2014:

This release is a product of collaborative work of the following people
(in alphabetic order):
  Bernhard Rosenkraenzer
  Cristian Morales Vega
  Gilad Shaham
  Ivan Mogilko
  Francesco Ariis
  Janet Gilbert
  Jochen Schleu
  Michael Rittenhouse
  Paul Wilkinson
  Piotr Wieczorek
  rofl0r
  Scott Baker
  Shawn R. Walker
  Steve McCrea
  Steven Poulton
  Sunit Das
  Tobias Hansen
  Tom Vandepoele
  Tzach Shabtay

AGS Engine underwent significant rewrite, with primary aims being better multi-platform
compatibility and backwards-compatibility. Complete list of related changes is too vast
to cite them here, a detailed documentation is provided in the form of the git log at
this repository: https://github.com/adventuregamestudio/ags

Engine Ports:
- Android port.
- iOS port.
- Linux port.
- PSP port.

Features:
- Increased maximal Font number from 15 to 30.
- Added "Translated" property to ListBox gui control, which forces engine to translate
  ListBox items.
- Proper alpha blender for blending two 32-bit sprites with alpha channels.
  Added new option for gui alpha blending setting which turns the proper blender on.
  Added new setting for the use of the blender in general cases (such as DrawImage function).
- Added Dialog.SetHasOptionBeenChosen() method.
- Added DialogOptionsRenderingInfo.HasAlphaChannel property.
- Added eKeyNone constant to eKeyCode enumeration.
- Added two more options for the Skip Speech style: "skip by key only" and "skip by mouse only".
- Added SkipSpeechStyle enumeration.
- Added Speech script class which members substitute number of global functions and variables.
- The backward-compatible "Old-style game-wide speech animation speed" game setting is replaced
  with two active options that allow to turn game-wide speech delay on and off and specify its
  value.
- SetMusicMasterVolume() legacy script function now accepts volume values between -210 and 100
  (was between 0 and 100); large negative values may be used to mute the music completely.
- Added a "Browse" button to the "Create in folder" field in the Start New Game wizard.
- Added "Reload sprite from source" command to Sprite Manager's context menu.
- Sprite Import window is now resizable.
- Engine can now run games of older versions, starting from 2.50. The level of
  compatibility varies.
- Improved character walking smoothness at 60%-80% scaling.
- Game.ChangeTranslation() script function no longer causes game to quit if the translation file
  belongs to different game or has unknown format.
- The game automatically fallbacks to software graphics driver if the hardware one could not run
  or initialize gfx mode for any reason.
- Added support for x5-x8 graphic scaling filters.
- Added config option to find maximal supported scaling automatically.
- Added optional threaded audio support.
- Added config option to override System.OperatingSystem value.
- Added config option to override multitasking mode.
- Added optional log file support to the engine.
- Added support for GNU-style long command line arguments.
- Windows version writes crash dump on "out of memory" error.

Editor Plugin API:
- Added property for getting playable character.
- Added property for getting ScriptsAndHeaders collection.
- Added methods for refreshing project's tree.
- Added method for refreshing property grid.
- Added methods for controlling output panel.

Bug Fixes:
- Editor no longer allows to create more game items than engine supports.
- Fixed "savegameindex[]" array was declared with incorrect size in script.
- Fixed incorrect selection of a new sprite, imported while the "Select sprite" dialog is open.
- Fixed sprite lookup in folders, differing only by name case.
- Fixed the autocomplete list displaying obsolete information in some cases.
- Fixed false notifications of the script had been changed externally after being saved in
  the editor.
- Fixed overlapping labels in the Editor Preferences dialog.
- Fixed inventory items and cursor crosshair with alpha channel not being drawn properly.
- Fixed crash that occured when ListBox.GetItemAtLocation() is called from
  repeatedly_execute_always() just before the list box is about to be drawn on screen for the
  first time.
- Fixed custom dialog options clickable area by correcting its horizontal coordinate range.
- Fixed error that caused audio volume to reset to default during cutscenes.
- Fixed AudioChannel.Volume returning incorrect value when called from skipped cutscene.
- Stopped play.close_mouth_end_speech_time variable from making effect in voice mode and
  Sierra-style speech.
- Fixed return value of the AudioChannel.PositionMs for MOD/XM clips.
- Fixed OGG and MP3 speech ending prematurely if the audio file size is a multiple of 32 KB.
- Fixed error which took place when user restored a game saved with background music playing,
  in case the music is not found in resources anymore.
- Fixed division by zero which occured if there was a 1px tall walkable area with vector scaling.
- Fixed side-borders that were not applied properly at larger widescreen resolutions.


VERSION 3.2.2 Beta, July 2012:

Following changes made by Tzach Shabtay, unless noted otherwise.

Features:
- Added docking panels and Window menu to control all the windows.
- Added folders for characters, dialogs, inventory items, guis, rooms, scripts and views.
- Added new menu items for all folders to move up/down.
- Added the ability to drag/drop files to be before other files.
- Added highlights for drag&drop and auto-expand folders on hover during drag&drop.
- Script and header files are now combined into one and can be expanded/collapsed, similar to
  room settings & script.
- Removed the context menu commands to move script modules up/down, this can now be done with
  drag/drop (and not only for scripts). The script dependency rule remains the same
  (lower scripts can import symbols from upper ones, but not vice versa).
- Removed the "exclude script" option.
- The "Sort room by number" now sorts within folders.
- Added a menu item to find all usages for characters, dialogs, views,inventory items and
  global variables.
- Added a menu item for almost all document tabs, to navigate to their node on the project tree.
- Added "Goto line" dialog from script editor via shortcut Ctrl+G (and changed existing
  shortcuts to open global script & header to Ctrl+Shift+G/H).
- Added keyboard shortcut (Ctrl+M) to switch between header and source.
- Objects, characters and edges can now be moved with the arrows in the room editor.

Editor Plugin API:
- ISourceControlProvider interface for editor plugins to define your own source control provider
  (Michael Rittenhouse).

Mono Support:
- Partially disabled some features only when running with Mono, since I couldn't see a way to
  code them without the
  Win API:
   - Breaking in debug will not automatically set the editor to the foreground, the user might
     have to click on the window.
   - Notifying the user on file changes externally if the editor is in focus will not happen.
     It will happen when the window is activated, so I hope it won't be too annoying.

Bug Fixes:
- Fixed crash clicking in margin of dialog editor (Chris Jones).
- Fixed RGB colour picker not working in 256-col games with colour numbers > 32 (Chris Jones).
- Fix for: when moving an object after zooming in and out, the floating co-ordinates no longer
  appear next to the object.
- Fixed "Go-to definition" on global variables in script editor didn't do anything. It will now
  open the global variables editor and select the global variable.


VERSION 3.2.1, March 2011
 - Added Find/Replace In All Files capability (Tzach Shabtay)
 - Added GUI control snapping, alignment, grouping and locking to GUI editor (Steven
   Poulton)
 - Added loop cut/copy/paste, Flip All Frames and Import From Sprite Folder options to
   Views in editor, to access this right-click to the right of the loop (Tzach Shabtay)
 - Added RGB colour selector to the various colour properties (ProgZmax)
 - Added Characters option to room editor to show all characters set to start in that
   room (ProgZmax)
 - Added Find All Usages right-click option to script editor (Tzach Shabtay)
 - Added current co-ordinates display while dragging objects/characters in room
   editor (Steven Poulton)
 - Added syntax colouring to dialog scripts (Steven Poulton)
 - Added Dialog.ShowTextParser script property (CJ)
 - Upgraded to latest version of LEC template (abstauber)
 - Middle mouse button now activates the "Copy co-ordinates to clipboard" option in all
   the room editor modes (ProgZmax)
 - Fixed D3D tints not working properly (3.2 regression) (Nefasto)
 - Fixed crash drawing GUIs with no background (3.2 regression) (CJ)
 - Fixed crash restoring/restarting depending on state of crossfading (CJ)
 - Fixed intermittent crash moving objects and using the Ctrl+A debug option (CJ)
 - Fixed "crossfade buffer null attempting transition" if you restored a save game that
   had a different current transition type to the current game position (CJ)
 - Fixed script editor tooltips getting stuck if they appeared over the tab bar at the
   top of the editor (Tzach Shabtay)
 - Fixed editor error if you deleted a room that a character was set to start in (CJ)
 - Fixed co-ordinates displayed in room editor not reflecting Low-Res Co-ordinates
   setting (ProgZmax)


VERSION 3.2, June 2010
 - Rewrote audio system. The old number-based sound and music are gone, replaced with
   new named audio clips. Added AudioClip.*, AudioChannel.*, Game.IsAudioPlaying,
   Game.SetAudioTypeVolume, Game.StopAudio, System.AudioChannels, System.AudioChannelCount,
   System.Volume, ViewFrame.LinkedAudio script commands.
 - Added Game.IgnoreUserInputAfterTextTimeoutMs, Maths.Exp, Maths.Log, Maths.Log10,
   Maths.Cosh, Maths.Sinh, Maths.Tanh
 - Added option to automatically add side borders when running 4:3 games on widescreen
   monitors
 - The generated EXE version information is now set to your Game Name and Developer Name
   instead of "Adventure Game Studio" and "Chris Jones"
 - Added new LEC-style template by abstauber
 - Added Applies To feature to custom properties, so that you can have properties that
   only apply to Rooms or Characters, for example
 - Added menu option to remove old Global Messages from the game, to stop them coming
   out in translation sources
 - Added support for anti-aliased TTF fonts in all situations where they weren't
   previously supported.
 - Added $APPDATADIR$ support to File.Open to allow you to write files to an accessible
   folder that is not the Save Games folder
 - Added eMouseMiddleInv support to on_mouse_click
 - Added editor plugin API methods IGUIController.ActivePane, IRoomController.PreSaveRoom
 - Added plugin API events AGSE_PRESAVEGAME and AGSE_POSTRESTOREGAME
 - Improved graphics mode detection so that the screen doesn't keep flickering when
   trying to start up a low-res game full screen
 - Improved colour quality of mini-sprites displayed in sprite manager
 - Improved the user-friendliness of some error messages, thanks to Error Reporting
 - Improved editor robustness to recover if the Game.agf.user file was corrupt
 - Winsetup now displays the game name in the title bar instead of "Adventure Game Studio"
 - Disabled editor option to save changes whilst the game was running, since doing so 
   could cause sprite file corruption
 - Editor property grid now displays a drop-down list instead of a text box when
   selecting a font or room
 - Changed the pathfinder so that the character cannot get stuck if he ends up outside
   one of the room edges
 - Removed limit on number of text parser words
 - Renamed the "handle inventory clicks in script" general setting to better reflect
   what it does
 - Removed room properties Play Music On Load, Music Volume and Save/Load Enabled since
   they are now obsolete
 - Mouse.IsButtonDown now works with eMouseMiddle
 - "Export all sprites in folder" command now exports 32-bit sprites as PNGs to prevent
   losing the alpha channel
 - Improved error handling if you passed an int to a string argument in String.Format
 - The Restart Point save file (AGSSAVE.999) is no longer deleted when you quit the game, 
   to fix a problem where RestartGame didn't work if you started the game by double-clicking
   an Enhanced Save Game file in explorer
 - Disallowed accented characters like  in script names in the editor, because they
   wouldn't compile
 - Dynamic sprite deletion warning is now only displayed on exit if Debug Mode is turned on
 - Fixed sprite entry getting duplicated if you dragged a sprite to the end of the list
 - Fixed crash with Hq2x and Hq3x graphics filters (3.1.2 regression)
 - Fixed character/object tints and light levels in D3D not matching DX5
 - Fixed TintScreen in D3D so that it looks the same as DX5
 - Fixed Sierra-style speech box moving if the room was scrolled while it was displayed
 - Fixed error running game and problems with save games if there were unicode
   characters in the folder path
 - Fixed GUI controls not updating properly if the control moved under the mouse, but
   the mouse didn't move
 - Fixed theora video being permanently muted after you played one video with muted audio
 - Fixed Dynamic Sprites causing memory corruption if a mouse cursor was set to sprite 0
 - Fixed Compress Sprites setting not taking effect until you next edited some sprites
 - Fixed GUI AdditiveOpacity mode not working properly if you tried to have a non-alpha
   sprite on an alpha GUI
 - Fixed light levels >100% not working with Direct3D driver
 - Fixed Object.MergeIntoBackground not working with Direct3D driver
 - Fixed IsKeyPressed not working with the following keys: [ ] \ ; ' , . /
 - Fixed struct member functions with more than 9 parameters giving run-time error
 - Fixed File commands looking in the wrong directory if you launched the game by
   double-clicking a save game in explorer
 - Fixed SetBackgroundFrame in Player Enters Screen event causing old frame to flash up
   briefly with D3D driver
 - Fixed Make Default Language command crashing if two different source lines mapped to
   the same translated line
 - Fixed run-time error if you returned a string from a function that was a member of a
   local dynamic array
 - Fixed sprite cache corruption if you had a single sprite larger than 20 MB
 - Fixed Room.GetDrawingSurfaceForBackground and Character.PlaceOnWalkableArea to give
   error message instead of crash if you called them from game_start
 - Fixed GUI label text not being anti-aliased if there was a background image but the
   BGColor was set to 0
 - Fixed editor crash creating new game if your Windows username had unicode characters
   in it
 - Fixed Views tree collapsing after renaming or drag-dropping a view
 - Fixed editor crash on startup if you made the editor window very small before closing
   it down last time
 - Fixed editor crash if you set an object's image to -1
 - Fixed character gliding if he bumped into another solid character and the character's
   MovementLinkedToAnimation property was false
 - Fixed DynamicSprite.Rotate cropping 1 pixel off the left side when rotating an image
   with an odd width/height
 - Fixed ShakeScreenBackground not clearing letterbox borders properly if you switched
   from a large to a small shake
 - Fixed "Internal compiler error: table overflow" if there were a lot of imported
   functions/variables
 - Fixed when importing an 8-bit image, if there was another palette slot in the image
   with the same colour as the transparent slot it got changed to black
 - Fixed Game.SpriteWidth/SpriteHeight returning the size of the blue cup instead of 0 if
   you supplied an invalid sprite number
 - Fixed script editor issue if you typed some text, switched to another tab, then came
   back and did Undo
 - Fixed autocomplete editor crash if there was a line break inside an array indexer
 - Fixed compiler crash if a dialog script just had a @ on a line on its own
 - Fixed editor crash if you tried to use a non-icon file as TEMPLATE.ICO
 - Fixed sprite import window crash if you right-clicked in the second stage of tiled import
 - Fixed mouse cursor being drawn in dialog options in DX5 mode even when Mouse.Visible was
   set to false
 - Fixed no line number provided when DynamicSprite.CreateFromDrawingSurface threw an error
 - Fixed script editor crash if you saved the script while the final function was missing
   its closing brace
 - Fixed the editor Preferences window only allowing you to type 5 characters in if you
   wanted to manually enter a path for the New Game Directory or Import Directory
 - Fixed "Close all other tabs" crashing if a room editor with unsaved changes was one
   of the other tabs
 - Fixed changing a walk-behind baseline not marking the room as modified
 - Fixed editor crash XmlException: An error occurred while parsing EntityName.
 - Fixed compilation errors if you named a character with only numeric digits, eg "c500"


VERSION 3.1.2 SP1, February 2009
 - The Editor will now not allow you to open the same game in two different copies of the editor
 - Fixed translations and \[ tag not working on GUIs (regression from 3.1.1)
 - Fixed crash with custom dialog options if you saved the game before running any dialogs
 - Fixed editor crash with tiled sprite import if you dragged out an invisible selection area
 - Fixed editor crash if the Game.agf.user file was read-only
 - Fixed auto-number speech lines to not number "..." lines
 - Fixed TintScreen not working properly in some situations with DX5 driver

VERSION 3.1.2, February 2009
 - Added support for using Transparency properties with alpha-channel sprites
 - Added inventory item CursorImage property to allow you to set a different image for
   the mouse cursor to the inventory window
 - Added F4 hotkey to jump straight to the Events grid to edit interactions
 - Added Character.SpeechAnimationDelay property which replaces the old game.talkanim_speed
   setting and also works with Sierra-style speech. A new General Settings option is
   provided to enable/disable backwards compatibility.
 - Added Game.TextReadingSpeed and Game.MinimumTextDisplayTime properties; obsoleted
   game.text_speed
 - Editor now remembers which item in the property grid was selected as you switch
   between tabs
 - Added plugin API event AGS_EngineInitGfx and methods GetDirectInputKeyboard,
   GetDirectInputMouse and ReplaceFontRenderer.
 - Added Error Reporting feature to editor, to send error information to AGS website if
   the editor crashes
 - Added eKey* enum for use with on_key_press and IsKeyPressed, to make script more readable
 - Added Show Start Page option to Help menu to allow you to access Tips if you have the
   start page disabled at startup
 - When changing the game resolution, the editor will now offer to automatically resize
   all your GUIs to compensate.
 - Improved performance of Theora video playing
 - Templates are now stored in a "Templates" sub-folder to satisfy Vista permissions
 - "Letterbox Mode" option in General Settings is now only shown if the game resolution
   is 320x200 or 640x400
 - Moved the character SpeechColor property from the Movement to the Appearance section
   in the editor, where it belongs!
 - Moved the "You are currently using the eraser" tooltip further away from the cursor 
   so it doesn't obscure what you're doing
 - Improved rendering of View Editor at 120 DPI
 - DynamicSprite.Resize now won't allow new image to be over 25 MB to help spot
   mistakes in size calculations
 - Mouse.ChangeModeGraphic now won't allow you to change the graphic of the Inventory 
   cursor if "Use selected inventory graphic for cursor" is enabled
 - Translations are now automatically recompiled if you change the game name, to ensure
   that they still work
 - Made some stability improvements to how the editor handles the sprite file
 - Improved the editor error message if the game folder had unicode characters in it
 - Fixed editor crash in Vista creating a new game
 - Fixed dynamic sprites sometimes being discarded by the sprite cache
 - Fixed option-off-forever being treated as option-off (introduced by 3.1.1)
 - Fixed compile error if you created a Bool in the Global Variables editor with default
   value set to upper case "TRUE" or "FALSE"
 - Fixed Vista Game Explorer integration appearing as "Play" in the start menu recent list
 - Fixed save games not persisting the walking state of the highest-numbered character
 - Fixed editor's room area undo buffer not being cleared when a different room was loaded
 - Fixed custom dialog options not working properly when using transparent background
 - Fixed Dialog.GetOptionText returning original English text when a translation was in use
 - Fixed button ClipImage property clipping 1 pixel too many in high-res games
 - Fixed PlayVideo not working properly when DX5 graphics filter was in use
 - Fixed PlayAmbientSound screwing up audio if it was used on a channel where a normal
   PlaySound command was still playing
 - Fixed DX5 driver problem switching a GUI background graphic from one with to one
   without an alpha channel
 - Fixed DisplayAtY, GUI.SetSize and Mouse.SetPosition not checking Y co-ordinate
   correctly in 320x240 and 640x480 games when using native co-ordinates
 - Fixed colour corruption if you imported an 8-bit sprite into a hi-color game and
   palette slot 0 of the sprite was not black
 - Fixed dialog script compiler bug if you used "this" in a string within a normal
   scripting command
 - Fixed script editor crash if you deleted a block of code, then hovered the mouse over
   a script variable.
 - Fixed GUI button being set to wrong size if you changed its image in the editor to a
   low-res sprite in a hi-res game
 - Fixed problem with ChangeRoomAutoPosition in hi-res games with hi-res co-ordinates
 - Fixed game.screenshot_height not allowing 240/480 in games of those resolutions
 - Fixed potential crash on fadeout with DX5 Nearest Neighbour filters
 - Fixed object positions getting messed up when importing a hi-res game from AGS 2.72
 - Fixed intermittent editor crash that could occur when shutting down the game
 - Fixed editor crash if you dragged a GUI control to the edge of the GUI then deselected
   it with the property grid
 - Fixed editor crashing if you tried to import a dodgy font
 - Fixed editor not allowing you to rename a script to a different capitalization of the
   same name
 - Fixed editor crash if you tried to rename a script file to contain \ or :
   

VERSION 3.1.1, December 2008
 - Added support for running normal scripts as part of dialog scripts, 
   and thus obsoleted the run-script, dialog_request business
 - Added OGG Theora video support to PlayVideo, and enabled theora videos
   to be compiled into the game EXE
 - Added right-click "Find Sprite By Number" option to Sprite Manager
 - Added Dialog.HasOptionBeenChosen script function.
 - Added basic save and load GUIs to the Default Game template
 - Replaced Anti-Glide mode with a per-character setting MovementLinkedToAnimation.
 - Improved auto-dedent of } in script editor to make it more useful and less annoying
 - Improved performance of pathfinder when calculating a route.
 - Added list of editor keyboard shortcuts to manual
 - When changing between room area mask types, the current tool will be set back
   to the Select tool to assist the most common workflow
 - Cursor mode now sets back to Select after adding a GUI control
 - Discontinued support for Windows 98 due to upgrading compiler from VC6 to VC2008.
 - Improved editor error messages if an error occurred reading/writing the sprite file
 - Workaround for Windows error getting file list on Linux network shares
 - Assign To View dialog now remembers the loop assigned to last time as well as view
 - Improved editor error handling if it was unable to start the game for testing
 - Fixed GetLocationName/GetLocationType not returning anything if the mouse cursor was
   over a GUI, but a different X/Y was being checked
 - Fixed GetLocationName returning a space if a nameless object was at the location
 - Fixed clicking in the corner of the screen taking you back to the desktop when
   using D3D driver
 - Fixed D3D driver drawing an extra game loop before the room faded out
 - Fixed transparent sprites not rendering correctly with D3D driver
 - Fixed object "ignore walk-behinds" setting not working with D3D driver
 - Fixed PlayVideo failing to play some WMV files with D3D driver
 - Fixed editor crash debugging if the call stack had more than 6 lines
 - Fixed call stack window not appearing if the project tree was on the left hand side
 - Fixed crash if you manually set Character.Loop and the current Frame was invalid for
   the new loop
 - Fixed crash in DisplayAt/SayAt if you passed the width in as 0
 - Fixed text box stealing up/down arrow key presses (AGS 3.1 regression)
 - Fixed debug console showing low-res co-ordinates for Character.Walk
 - Fixed autocomplete not always correctly selecting entries containing an underscore
 - Fixed a couple of potential crashes if characters had an invalid view/loop/frame
 - Fixed potential crash displaying text in voice-only mode
 

VERSION 3.1, October 2008
 - Added option to use native hi-res co-ordinates.
 - Added option to continue running game loops while dialog options are displayed
 - Added support for 1024x768 resolution.
 - Added support for custom rendering of dialog options
 - Added graphics filters to D3D driver, to allow 320x200 games to easily be run
   in a larger window.
 - Added 4x Nearest Neighbour filter to allow 320x200 games to easily be run on
   widescreen monitors at 1280x800
 - Added "Go to sprite" context menu option to script editor when right-clicking
   on a number
 - Added Character.HasInventory, Character.HasExplicitTint, Character.Move,
   Character.SpeakingFrame, String.Replace, String.StartsWith, String.EndsWith,
   Game.ChangeTranslation, Game.UseNativeCoordinates, Dialog.ID, TextBox.TextColor,
   Slider.HandleGraphic, Slider.HandleOffset, Slider.BackgroundGraphic and
   Parser.FindWordID script functions.
 - Added pop-up calltip when hovering the mouse over a function/property in the script.
 - Added separate Replace menu option to go straight to the Replace dialog
 - Added previous searches list and Case Sensitive option to the Find dialog
 - Added Preferences option to configure whether Help window stays on top or not.
 - Room objects editor now draws alpha-channel sprites correctly
 - When the engine aborts with an error, the editor will now automatically zoom to
   the line in the script where the error occurred
 - Editor now shows the call stack to the current position in the script when debugging
 - Improved autocomplete to work better when adding code to existing functions
 - Rewrote debugger to use a different method of communicating with the engine (Named
   pipes instead of Files) which should hopefully resolve some stability issues some
   people have been having with it
 - Added support for calltip help text if you put a comment starting with /// on
   the line before the import declaration. 
 - Added feature for editor to send anonymous system information to AGS website
 - Added editor plugin API IScriptEditorControl methods: SelectionStart, SelectionEnd,
   SelectedText, CursorPosition, GetLineNumberForPosition, GetTextForLine and
   GetTypeNameAtCursor
 - Added new GUI Visibility option to have a normal GUI but initially switched off.
 - Added ability to set initial GUI Transparency in the editor.
 - Added Tip of the Day section to the Start Page.
 - Added new file format for exported characters to enable characters with more than
   20 frames in a loop or 16 loops in a view to be exported; this also fixes some
   character settings not being preserved in the old file format.
 - Added Preferences option to allow you to do Exact Palette background imports in
   8-bit games, like you could in AGS 2.x
 - Added warning message when you use the Import New Background option in a room, to
   help newbies who are using it by accident instead of the Change button.
 - Added option for AGS Editor to pop up a message every X days reminding you to back
   up your game
 - GUI Text Box now allows the user to type in extended chars like  when the
   textbox is using a TTF font
 - D3D driver now automatically tries 640x400 if your monitor doesn't support 320x200,
   like the DX5 driver already did
 - Removed Setup option to use the "wrong" resolution.
 - Changed winsetup so that it doesn't pop up the Administrator prompt on Vista.
 - RunAGSGame now shows an error if you try and use it while running with the debugger,
   since it doesn't work in this situation
 - Moved the inventory hotspot marker settings from the inventory panes to the
   General Settings area since it makes more sense there and should reduce confusion
 - Removed the room height limit of 1400 pixels.
 - Removed the 30 character limit on hotspot descriptions
 - Obsoleted InventoryScreen command, which is no longer supported.
 - Editor now prompts you if you modify a script file in an external application
   while it is open in the editor
 - On Windows XP and earlier, AGS will now create a "My Saved Games" folder in My
   Documents and then create individual game folders underneath, to avoid clutter
 - When clicking the "..." button to go to an event script, AGS will now zoom to the
   line after the { rather than the "function" line itself
 - Renamed String.Contains to String.IndexOf to reduce confusion with other
   languages such as Java and C#. String.Contains will continue to work as well for
   the foreseeable future
 - Removed obsolete InventoryScreen usage from the Default & Empty Game templates
 - Improved import of 2.72 games to ensure that unhandled_event is called with Use
   Inventory interactions
 - Changed Default and Empty Game templates to 16-bit colour by default
 - Changed error message when unable to initialise graphics mode to say the real
   resolution rather than game resolution when using a graphics filter
 - Editor now gives error if speech file number > 9999 rather than leading to
   in-game File Not Found errors
 - Fixed alpha-transparent dynamic sprites losing their alpha channel when you
   restored a save game
 - Fixed object image not being refreshed properly if it had a dynamic sprite which
   you deleted at the same time as making the object invisible
 - Fixed autocomplete popping up when it shouldn't do if you pressed space after
   typing a member property/function
 - Fixed problem with Mouse.SaveCursorUntilItLeaves if the original mode was now
   disabled when it tried to restore it
 - Fixed error starting up editor if you closed it while minimized
 - Fixed dialog options text window edges with transparent parts not drawing
   correctly with D3D driver
 - Fixed crash restoring save game if there was an active dynamic drawing surface
   created by CreateCopy
 - Fixed Mouse.DisableMode crashing if cursor mode 4 (UseInv) was set as a Standard
   mode
 - Fixed some music skipping problems when using ShakeScreen and during room
   transitions
 - Fixed translations not working on script lines that had embedded speech marks
 - Fixed GUI editor to not draw the background colour outside the actual GUI size
 - Fixed error trying to save a game to a network share
 - Fixed sound numbers over 999 not playing
 - Fixed D3D driver smoothing all sprites, not just scaled ones, when "Smooth scaled
   sprites" was selected
 - Fixed problem where if you closed a window and chose not to save changes, when
   you opened the window again the changes were still there
 - Fixed script changes being lost if you opened a room script, made some changes,
   didn't save them, then opened the room itself, then created an event handler
 - Fixed sprite import colours messing up if there were index-0 pixels on the image
   but index 0 was not being imported as the transparent colour
 - Fixed Display() not working if the game had no GUIs
 - Fixed changes to blink interval not always being applied immediately
 - Fixed crash in Character.Say if the character's talking view had been set to an
   invalid view number
 - Fixed PlayVideo restarting the music after the video finished, even if it was set
   to play game music
 - Fixed the debug console being drawn behind characters and objects
 - Fixed duplicate entries in autocomplete if you set an enum value to equal another
   enum value
 - Fixed ListBox.RowCount always returning 0 until the GUI had been drawn for the
   first time
 - Fixed Characters pane chopping off bottom of view preview when run at 120 DPI


VERSION 3.0.2 SP1, June 2008
 - Editor now gives friendlier error message if a hotspot description is too long
 - Fix to workaround .NET error importing a portion of a sprite
 - Fixed editor allowing you to name a gui or character such that its legacy macro
   name led to a compile error (eg. "gGui" or "cGui")
 - Fixed No Transparency sprite import not working properly if the sprite colour
   depth had to be converted

VERSION 3.0.2, June 2008
 - Added Global Variables pane to editor, to allow you to easily declare global
   variables for the script instead of having to do all the import/export rubbish
 - Added script functions Dialog.GetOptionText, Dialog.DisplayOptions,
   Dialog.OptionCount, Game.DialogCount, DynamicSprite.CreateFromDrawingSurface
 - Added plugin API functions IsRunningUnderDebugger, BreakIntoDebugger and
   GetPathToFileInCompiledFolder
 - Added editor plugin API methods ShowSpriteSelector, SetStatusBarText,
   Game.Sprites, CreateNewSprite, ChangeSpriteImage, GetSpriteUsageReport,
   DeleteSprite
 - Improved responsiveness of room Edges editor under Windows Vista
 - Improved look of various dialogs when run at 120 DPI
 - Improved parsing of function list in script editor when the script contains
   comments and strings
 - Editor now makes sure that you don't name a View the same as a character
 - When importing alpha channel images, alpha-transparent pixels are now recognised
   as transparent pixels
 - New GUI alpha channel method (in General Settings) to allow more intuitive
   rendering of alpha channels on GUI controls
 - Alpha-transparent background and borders are now supported for textwindow GUIs
 - Added option to put sprite and sound files under source control
 - Modified source control integration not to check in the username, which was
   happening in some cases
 - Updated to v1.6.0 of Verb Coin template (thanks Electroshokker!)
 - Room editor now shows "?" for mouse position when the cursor is outside the
   room area
 - Improved editor behaviour on startup if registry entries have been corrupted
 - Fixed demo game not compiling
 - Fixed editor error loading games if your regional settings had a space in the
   short date format
 - Fixed excluded room files still being compiled into the game EXE
 - Fixed potential managed object pool corruption if you used SayBackground a lot
 - Fixed some TTF fonts being incorrectly positioned in the editor GUI previewer
 - Fixed hotspot sometimes getting corrupted when importing a new background
 - Fixed exported GUIs not having the sprite resolutions exported correctly
 - Fixed line and rectangle tools sometimes being slightly out from where the area
   actually appeared
 - Fixed alpha channel not working on graphical Overlays
 - Fixed 8-bit rooms from 2.72 not being displayed correctly in the editor if
   they used gamewide colours
 - Fixed DrawingSurface.GetPixel sometimes returning invalid values in 32-bit games
 - Fixed translation file generation failing if a script included a speech mark
   inside quotes ('"')
 - Fixed Game.TranslationFilename property returning a path when the game is run
   under the debugger
 - Fixed crash if you tried to crop edges on a completely transparent sprite
 - Fixed Mouse.ChangeModeView crashing if you passed a View of -1
 - Fixed Voice Actor Script generation giving error if you used "Narrator" (with
   a capital N) in a dialog script
 - Fixed speech.vox being generated even if you had no speech
 - Fixed transparency being lost when importing an 8-bit character into a hi-colour
   game
 - Fixed the last imported image file being locked by the editor
 - Fixed template generation failing if the template had speech or translations
 - Fixed template generation saying it was successful even when it failed
 - Fixed Create New Game not putting music/sound files in the sub-folders
 - Fixed dynamic arrays not working if you had Left-to-right Precedence turned off
 - Fixed view preview not flipping frames if they were being scaled down
 - Fixed view preview not being updated if you changed the currently displayed
   sprite's Flipped setting
 - Fixed script editor function list not including extender functions
 - Fixed editor crash if you deleted a GUI control whilst in the middle of dragging
   it around
 - Fixed editor crash if you deleted the Compiled folder while it was running
 - Fixed editor crash if you selected a whole line of script and then pressed F1
 - Fixed error generating voice acting script if there was a player.Say line in the
   script with no indentation
 - Fixed crash in sprite import window when zooming out and in of the bottom right
   corner
 - Fixed intermittent error after closing game when using debugger


VERSION 3.0.1, April 2008
 - Added zooming and mask transparency to the room areas editor
 - Added ability to drag and drop sprites to other sprite folders, like in 2.72
 - Added ability to drag and drop views between view folders
 - Added ability to delete views and view folders
 - Added "Go To Definition" right-click option in script editor, and fixed
   cut/copy/paste context menu options not always being enabled correctly
 - Added Create Voice Acting Script option, to generate a file containing all
   voice speech lines for each character
 - Added draggable baseline to the Walk-behinds Editor to make it more user friendly
 - Added "New sprite using last sprite" and "Replace sprite using last sprite"
   options to sprite manager, to allow you to quickly grab multiple frames off
   a single source image
 - Added "Sort sprites by number" option to sprite manager
 - Added "Sort by number" option to room list
 - Added File.Exists, File.Delete, String.IsNullOrEmpty, DrawingSurface.GetPixel,
   DrawingSurface.DrawStringWrapped, Game.InSkippableCutscene,
   Game.SkippingCutscene, System.NumLock, System.CapsLock, System.ScrollLock
   commands.
 - Added back Match Brace feature in script editor
 - Added new room template dialog for creating new rooms.
 - Added back Ctrl+G/Ctrl+H as shortcuts to get to the global script and script
   header
 - Added PaletteLockedToRoom property on sprites to allow you to easily remember
   if the sprite was imported against a specific room (8-bit only)
 - ListBox.FillDirList now supports $SAVEGAMEDIR$
 - Changed the Ctrl+X debug option in-game to make it more user friendly
 - View Preview now scales down large sprites to fit inside the preview window
 - Removed limit on number of phenomes per file with PAM voice speech
 - Increased max script modules to 50
 - Double-clicking a room object now opens the sprite selector
 - Editor will now remember the file path that you import fonts from, and display
   it as a property on the font
 - When adding a new frame to a view, the editor is now more intelligent about
   the default sprite that it chooses for the new frame
 - Attempting to display messages with extended characters in SCI font will
   now render those characters as a ? rather than aborting the game.
 - Editor now prevents you from deleting sprite folder if sprites in it are
   still in use
 - Editor plugin API: Added new OpenEditorForScript, ShowHelpFile, GetSpriteImage
   and DrawSprite methods; added RoomController and SourceControl operations;
   added Views property to Game object
 - Added AGSE_PRERENDER plugin event to allow characters/objects to be modified
   just before they are rendered
 - When you double-click a script error message or use the drop-down function
   list, the script editor now does a better job of highlighting the relevant
   line.
 - Increased size of function list drop-down in script editor
 - Improved pathfinder dealing with narrow winding walkable areas
 - Added right-click Flip option and shortcut key 'F' to flip frames in view editor
 - Added preferences option to set the default directory where new games
   are created
 - Assign To View window now remembers the last view number used
 - Editor now prompts you to save the current game before loading a different one
 - Editor now remembers the position of the main two splitters when you quit
 - Made some improvements to reduce music stuttering in some complex rooms
 - New engine command line parameter -noexceptionhandler to disable the AGS
   exception handler (for plugin developers)
 - Object properties now show "BaselineOverridden" as a separate setting to
   clarify the baseline behaviour
 - Improved the way some editor dialogs look when run with Large Fonts (> 96 DPI)
 - Removed left/right loops compile warning, and instead a single frame in the
   left/right loops is automatically created
 - Harmonised speed of fade-in/fade-out between D3D and DX5 drivers
 - Fixed FadeIn not showing characters/objects if you changed the game state
   since FadeOut
 - Fixed Quick Import Multiple Sprites not remembering the import directory
 - Fixed intermittent crash if a view preview was active when you saved the game
 - Fixed speech colour being random if you used SierraWithBackground speech
   without a custom text window GUI
 - Fixed plugin API screen drawing events, and implemented support for them
   with D3D driver
 - Fixed intermittent crash starting engine with debugging enabled
 - Fixed built-in save/load/quit dialogs having transparent borders in 8-bit games
 - Fixed mouse wiping away dialog options background in 8-bit games
 - Fixed some issues importing 8-bit sprites locked to a room background
 - Fixed FadeIn not dealing with letterbox borders correctly if SetFadeColour
   had been used
 - Fixed room editing pane being closed when you built the game after editing
   the room script
 - Fixed ChangeRoom moving the character before fading out with some transitions
   and the D3D driver
 - Fixed crash importing characters with Run Next Loop flag set on a view; and
   fixed invalid character export files being generated for characters with Run
   Next Loop flag set.
 - Fixed engine crash on startup with D3D driver on some graphics cards in
   16-bit games
 - Fixed GetViewportX/Y not working properly in room Before Fadein event
 - Fixed compile error with custom icons that have all 13 Vista icon formats
 - Fixed IsKeyPressed not working properly with A-Z keys on non-qwerty keyboards
 - Fixed script editor not to do a matching bracket check when you close a
   bracket inside a comment or string
 - Fixed bug in editor when replacing a room background with one of the same
   size but with the game now running at a different resolution
 - Fixed Object.Animate not working with RepeatStyle=2
 - Fixed crash loading game into editor if a translation file contained a
   duplicate line
 - Fixed editor crash if you had an misplaced square bracket near the end of
   a script header
 - Fixed room background import to ignore source image DPI
 - Fixed GUI import/export if one of the GUI controls had an extended character
   in its text
 - Fixed RunAGSGame using wrong current directory when under debugger
 - Fixed multi-loop speech animations crashing if a blinking view was used
 - Fixed spurious "Unable to display speech" error if a character had just been
   animating before displaying speech.
 - Fixed "downgrade 32-bit to 16-bit" checkbox in Setup not working
 - Fixed voice lip sync falling behind if a very low game speed was used
 - Fixed voice lip sync looking in game folder rather than Speech folder for 
   PAM files; and fixed compile error if PAM files had the [Preferences] section
 - Fixed GUIs getting an erroneous alpha channel if the BackgroundImage was
   set to -1.
 - Fixed animated GIFs not importing correctly if they used incremental frames.
 - Fixed black areas of 8-bit backgrounds turning blue (you will need to
   re-import any affected backgrounds)
 - Fixed erroneous error message importing an image into an 8-bit game if it
   was smaller than the screen size.
 - Fixed error attempting to directly restore a saved game from explorer if
   the screen transition was Crossfade or Dissolve
 - Fixed function calltips not working if you put a space between the function
   name and the opening bracket
 - Fixed crash which could occur if a character was in the middle of an animation
   loop when a Say command was run
 - Fixed legacy global messages not getting included in Auto Number Speech Lines
   numbering
 - Fixed exported script modules giving error when importing into 2.72
 - Fixed crash importing a game from 2.72 if there was a room with an almost
   valid file name (eg. "room06.crm")


VERSION 3.0, January 2008
 - Rewritten editor from scratch; includes various new features such as
   ability to have more than one script open at a time
 - Hardware accelerated graphics driver in game engine, which speeds up
   rooms with lots of sprites, alpha blended objects, and more.
 - Full support for 256-character ASCII, so European languages like French
   and Spanish are now supported if you use a TTF font.
 - Added script debugger
 - Added integration with Windows Vista's Game Explorer and Enhanced Save Games
 - Added support for script extender functions.
 - Added support for dynamic arrays in script
 - Added source control integration
 - Added crash dump file when engine crashes, to enable faster fixing of bugs
 - New .NET-based editor plugin API.
 - Added Game.DoOnceOnly, Character.ChangeRoomAutoPosition, Game.FontCount, 
   Game.MouseCursorCount, DynamicSprite.GetDrawingSurface, DrawingSurface.*,
   DynamicSprite.Create script functions/properties.
 - Added syntax highlighting for struct types
 - Overhaul of RawDrawing functions, including ability to draw onto dynamic
   sprites and various new features.
 - Removed limit on number of views, GUIs and characters
 - Removed limits on number of frames per loop and loops per view
 - Increased max objects per room to 40 and max hotspots to 50.
 - Fonts have a script enum eFontXXX rather than having to use a number.
 - Engine will now automatically try 640x400 for 320x200 games if the
   player's PC doesn't support 320x200 (since this is becoming more common)
 - Improved performance of Character.PlaceOnWalkableArea in large rooms.
 - Workaround for teleportation problem in scrolling rooms with right
   edge incorrectly set.
 - Fixed String.Format crashing if the string length was more than 1200 characters.
 - Fixed engine crashing on startup if it was unable to load a plugin.
 - Fixed issue when combining CreateXXXOverlay and Overlay.CreateXXXX
 - Fixed changes to ViewFrame.Graphic not always being persisted in save games
 - Improved script garbage collection, so that calling String.Append in rep_exec
   doesn't keep eating up more and more memory until you save the game.

VERSION 2.72, July 2006
 - Added ability to use any size/resolution of icon, if you save your
   game with Windows 2000/XP.
 - Added support for graphic filters, and added a standard 2x and 3x
   scaler, along with Hq2x and Hq3x filters.
 - Added plugin API AGSE_ONSPRITELOAD function to allow plugins to modify
   sprites as they are loaded into memory.
 - Added new plugin API functions IncrementManagedObjectRefCount,
   DecrementManagedObjectRefCount, SetMousePosition, SimulateMouseClick,
   GetMovementPathWaypointCount, GetMovementPathLastWaypoint,
   GetMovementPathWaypointLocation, GetMovementPathWaypointSpeed.
 - Added ListBox.ScrollDown, ScrollUp, RowCount, HideBorder and
   HideScrollArrows. Added "Hide scroll arrows" setting to listboxes
   in GUI editor.
 - Added System.Gamma and SupportsGammaControl; and replaced old system.*
   variables with new System. properties.
 - Added Room.Width, Height, ColorDepth, LeftEdge, RightEdge, BottomEdge,
   TopEdge and MusicOnLoad properties.
 - Added ability to use movement speeds slower than 1 (-2 is now 1/2,
   -3 is 1/3, etc)
 - Added ability to name dialog topics, and ported RunDialog/etc to
   OO-style functions. Additionally, dialog scripts can now use the topic
   names with goto-dialog rather than using the number.
 - Added GUI Control z-order support (right-click Bring To Front / Send
   To Back options in editor, as well as BringToFront/SendToBack script
   commands).
 - Added Game.SetSaveGameDirectory command, including support for My
   Documents folder.
 - Added option to export animated background frames, and added a
   confirmation message to the Delete Frame button.
 - Added Game.SpeechFont and Game.NormalFont properties to replace
   SetSpeechFont/SetNormalFont but also provide a way for you to get
   the current setting.
 - Added Game.Name, Game.FileName, Object.Loop and Object.Frame properties.
 - Added Button.Font property, and added Text Alignment property to GUI
   buttons and list boxes in the editor.
 - Added Mouse.GetModeGraphic to allow you to get the sprite slot of
   the cursor.
 - Added String.AsFloat property to convert strings to floats.
 - Added Game.StopSound function, to allow you to easily stop all
   sound effects.
 - Added writable ViewFrame.Graphic property, which allows you to change
   view graphics at run-time.
 - Added Region.TintRed, TintGreen, TintBlue, TintEnabled and TintSaturation
   properties to allow you to get the current region setting.
 - Added game.read_dialog_option_color to allow you to set a different
   colour for dialog options which the player has already selected.
 - Added Ctrl+S option to script editor, to save changes so far.
 - Increased sound channels from 6 to 8, and you can now have more than
   1 simultaneous ambient sound.
 - ListBox.AddItem and ListBox.InsertItemAt now return false rather than
   quitting the game, if you try to add too many items to the list.
 - Disabled text boxes now do not draw the cursor.
 - Obsoleted GetGameParameter and added new functions and properties to
   replace it (see GetGameParameter in the help to redirect you to the
   new functions).
 - Obsoleted SetFrameSound and made the ViewFrame.Sound property writable
   instead.
 - Obsoleted savegameindex[] array, and added ListBox.SaveGameSlots[]
   array instead. Additionally, raised the max save games from 20 to 50.
 - Increased permitted length of GUI label text from 200 to 2048
   characters.
 - PlayMusicQueued now preloads the next track to provide a seamless
   transition between tracks.
 - Added DirectSound Hardware Mixer option to Setup.
 - Increased script editor line length limit from 300 to 500 characters.
 - Editor now uses "Sound" sub-folder to store sound files, like the way
   it currently works with Music and Speech.
 - Editor view preview window will now play frame-linked sounds if they
   are in .WAV format.
 - Added shortcut keys Ctrl+1 through Ctrl+9 and Module Scripts sub-menus
   for easy access to module scripts and headers.
 - Autocomplete now warns if you use an array index to access properties
   on a non-array, and vice versa.
 - Added option to Assign Sprites To View dialog to allow you to add the
   sprites in reverse order.
 - Editor now shows each character's talking view as well as normal view
   in the Characters pane.
 - Mouse.SetBounds now actually locks the cursor within the bounds,
   rather than it moving invisibly within the locked out area.
 - Added game.keep_screen_during_instant_transition option for 8-bit
   colour modes.
 - Changed the default restart point to be just before the first room is
   loaded, in order to avoid problems with the restart point not working
   properly in some games.
 - The game can now be closed with the X button or Alt+X while a PlayVideo
   is playing.
 - Moved GUI Clickable setting from the checkbox into the Properties window,
   since it more intuitively belongs there.
 - "Enforce new-style strings" now disables old-style string functions.
 - Old split resource files now get deleted if you disable splitting or
   reduce the number of split files.
 - PlayVideo now pauses the video if the player alt+tabs away from the game
   while it is playing.
 - player.ChangeRoom in game_start is now allowed, and will change the
   room that the game starts in.
 - Increased editor performance when importing tiled sprites.
 - Debug console now also writes its output to the Windows Debugger (which
   you can read with an application like DebugView); useful if the debug
   console normally flies past too quickly to be useful.
 - View preview window now cycles through whole of multi-loop animations.
 - Fixed crash if you used Restore or Restart within a script module
   event handler.
 - Fixed template creation to work with Music and Speech sub-folders.
 - Fixed agsedit.log timestamp having the wrong month.
 - Fixed character blinking not working properly once they had finished
   talking.
 - Fixed translation source not including strings from script modules.
 - Fixed a backwards compatibility issue with game.num_inv_items.
 - Fixed characters with only left/right loops sometimes using the wrong
   loop when moving.
 - Fixed game erroring out if you used Character.ChangeView to change
   from a 4-directional to a 2-directional view.
 - Fixed GUI Labels to be not clickable by default.
 - Fixed "Refresh list" option not working in the Room List if no room
   was selected.
 - Fixed calltips not picking up member functions if you put a space
   before the opening bracket.
 - Fixed text parser not handling an optional choice of words properly.
 - Fixed text parser not handling a choice of words with spaces properly
   in Said().
 - Fixed Global Messages pane not updating after Importing Dumped Text.
 - Fixed FaceLocation not working properly if the character's current loop
   was not one of the normal walking loops.
 - Fixed Mouse.SetPosition clipping the Y to 200, even in 320x240 games.
 - Fixed sierra-style speech screwing up if you used RemoveOverlay or
   SetTextOverlay in repeatedly_execute_always while the speech was displayed.
 - Fixed Tiled Sprite Import allowing you to import over the edge of the
   image when zoomed in.
 - Fixed ShakeScreen leaving artefacts in the black borders when running
   in letterbox mode.
 - _blank.crm is now included when you make a template.
 - _blank.crm will be checked for in editor folder if not found in game folder.
 - Fixed editor crashing if a very large template.txt file was used when
   starting a game from a template.
 - Fixed block comment parsing sometimes not working properly if /* was the
   last thing on a line.
 - Fixed String.Contains not working properly with strings >200 characters.
 - Fixed PlayMusic not working if it was called whilst an old track was
   fading out but crossfading was now disabled
 - Fixed "too many events posted" error if several commands like Walk
   were used in quick succession.

VERSION 2.71, December 2005
 - Added friendly string support, and modified various built-in
   functions to return a String rather than requiring a buffer.
 - Added option to compress the sprite file to reduce disk usage.
 - Added editor sprite caching, to improve performance and reduce memory
   usage of the editor with large games.
 - Increased max speech files per game to 10000.
 - Added == and != operator support for strings.
 - Added support for having pointer variables in structs.
 - Added Clickable property to GUI controls to allow you to disable
   a control without affecting its appearance.
 - Added new Dynamic Sprite features: CreateFromExistingSprite,
   CreateFromBackground, Crop, Resize, Rotate, Flip and SaveToFile
   functions; and ColorDepth, Width and Height properties.
 - Added Game.GetMODPattern, ListBox.InsertItemAt and Maths.ArcTan2
   script functions.
 - Added Slider.Min and Slider.Max to allow the script to access
   these slider properties.
 - Added Object.IgnoreScaling and Character.Scaling properties;
   renamed Character.IgnoreScaling to ManualScaling.
 - Added const string support to prevent accidentally passing the
   parameters the wrong way round to functions like StrCopy.
 - Added option to PlayFlic not to clear the screen before starting
   playback.
 - Added "Adjust volume with scaling" character option and equivalent
   Character.ScaleVolume property.
 - Editor now uses "Speech" and "Music" sub-folders to store speech
   and music files in to reduce the clutter in the main game folder.
 - Added "New Run Script Action" to the right-click menu in the
   interaction editor, to allow you to quickly create a Run Script
   interaction without having to go through the interaction dialog.
 - Added "noloopcheck" keyword to allow you to bypass the script loop
   checks.
 - Added GP_ISFRAMEFLIPPED option to GetGameParameter.
 - Editor now forces all background imports to the game's colour depth.
 - Game now attempts to mute audio when alt+tabbing away to another
   application.
 - Implemented lazy evaluation for && and || operators.
 - Improved script compiler speed.
 - Arrays and structs are now officially supported, and are documented
   in the manual.
 - Ambient sound volume is now dropped along with the music volume
   while speech is being played.
 - Added menu option to rebuild only the music or only the speech vox,
   since in large games rebuilding both could take a long time.
 - If Sound is disabled in the game Setup, then it no longer plays
   in PlayVideo either.
 - Insert and Delete keys now have allocated keycodes and are officially
   supported.
 - Narrator speech now closes the Display() window when the voice
   finishes, if play.skip_display is set to auto-remove after time.
 - Compiler now does type checking on return values from custom functions.
 - Display command now obeys the SetVoiceMode setting.
 - Pamela lip-sync now allows multiple phenomes per frame.
 - "void" is now properly supported as a function return type.
 - PgDn, PgUp, Home and End are now mapped to the ASCII codes of their
   equivalents on the numeric keypad, rather than duplicating arrow keys.
 - Underscores can now be used in GUI and view names, and invalid names
   pasted into the box are now rejected.
 - The hi-color Palette pane now displays the current colour number in
   a text box so that it can be copy & pasted easily, and allows you
   to type in a colour number and find out the RGB.
 - Renamed the setup.exe in the AGS distribution to setup.dat to
   prevent unzip programs from trying to "install" it.
 - Renamed "Player Enters Screen" events to "Player Enters Room" to use
   consistent terminology.
 - If a dynamic sprite attached to an object is deleted, the engine 
   now prints an error message rather than crashing.
 - Setting game.close_mouth_end_speech_time to 0 now continues sierra-
   style speech animation indefinately, like it does with lucasarts speech.
 - Removed "Target DOS" option from the menu, since the DOS engine is
   no longer available.
 - Fixed compiler bug allowing enums to be redefined.
 - Fixed compiler crash when declaring a large struct.
 - Fixed engine error if Turn Before Walking was enabled and a character
   only had left/right loops.
 - Fixed walk-to point getting randomly moved if you alt+tabbed back
   into AGS from another application.
 - Fixed the Import Dumped Text option truncating dialog options to 70
   characters.
 - Fixed memory leak in GUI.SetSize/Width/Height methods.
 - Fixed volume jump if a track was fading out and you changed rooms
   to a room with a louder volume setting.
 - Fixed Overlay.X/Y properties returning wrong value for SayBackground
   overlays.
 - Fixed editor crash when deleting sprite folders.
 - Fixed editor crash when selecting a sprite for a GUI control.
 - Fixed editor crash on Characters pane if the character's normal view
   had no frames in loop 0.
 - Fixed crash rather than error message if script exceeded stack limit.
 - Fixed Single GUI Import not updating GUI images properly, and
   allowing duplicate GUI control names to be imported.
 - Fixed editor crash if you manually removed a #sectionend and then
   tried to edit that script function.
 - Fixed colours in GUI editor showing up wrong in 32-bit colour games.
 - Fixed SetCharacterIdle skipping the current frame if called while
   the character was moving or animating.
 - Fixed + having a higher precedence than - and thus 5 - 3 + 2 giving
   0 rather than 4.
 - Fixed only one edge interaction being run if the player walked off
   two overlapping room edges.
 - Fixed GIF import crash with some gif images.
 - Fixed "out of memory" crash in game if you accidentally used a
   full-screen image as the talking view for sierra-style speech.
 - Fixed CyclePalette not updating the screen when cycling backwards.
 - Fixed compiler allowing built-in types to be used in struct
   definitions.
 - Fixed Auto-Number Speech Lines starting from NARR0 rather than NARR1
   for the narrator.
 - Fixed GUI control event handler function names being incorrectly
   truncated.
 - Fixed compiler to not allow a struct to be a member of itself.
 - Fixed compiler not giving an error if you forgot a semicolon after
   an object method call.
 - Fixed editor crash if you typed a string longer than 200 characters
   into a text property.
 - Fixed character disappearing if it was tinted/lit and used an 8-bit
   sprite in a hi-color game.
 - Fixed music not resuming after PlayVideo if crossfading was enabled.
 - Fixed the player character's PreviousRoom property starting off as
   the first room number, rather than -1 as it said in the manual.
 - Fixed static methods in plugin headers not being picked up by
   autocomplete.
 - Fixed IsKeyPressed not working with backspace (ASCII code 8).
 - Fixed voice speech not being played if a SkipUntilCharacterStops
   command was in effect when the speech was displayed.
 - Fixed Restore Game occasionally corrupting the managed object pool.
 - Fixed some usability issues in the Import Sprite dialog, where moving
   the mouse off the side of the image while right-dragging would cause
   the cursor to jump around.
 - Fixed WAV music files not being picked up from MUSIC.VOX
 - Fixed region light level picking up tint amount if you switched it
   from tint to light and then selected a different region.
 - Fixed Out of Memory crash if you had a character off the bottom of
   the screen and a walkable area with continuous scaling touched the
   bottom of the screen.

VERSION 2.7, May 2005
 - Added object-based functions for Characters, Objects, Hotspots,
   Regions, Inventory Items, GUIs, Overlays, Files and the mouse.
   This also indirectly adds some new functions, since there is now a
   way to do GetTransparency, GetBaseline, etc.
 - Added named pointers to each character, eg. "cEgo", "cBman", etc.
   This allows you to do "cEgo.Walk" rather than "character[EGO].Walk"
 - Added struct member function support, including static member
   functions.
 - Added script array bounds checking.
 - Added script module support, so that you don't have to cram
   everything into the global script. This also allows you to easily
   share code with other people by exporting the module.
 - Added icons to script editor autocomplete.
 - Added script Property support, to make the various interfaces more
   intuitive.
 - Added support for optional parameters to text script.
 - Added support for enums to script, including autocomplete support
   when calling a function that uses them.
 - Added plugin API functions NotifySpriteUpdated,
   SetSpriteAlphaBlended, QueueGameScriptFunction,
   RegisterManagedObject, AddManagedObjectReader and
   RegisterUnserializedObject.
 - Added simple inheritance support to structs, allowing you to create
   derived classes.
 - Added support for protected member variables/functions and
   write-protected member variables.
 - Added left-to-right operator precedence option.
 - Added float data type, along with related conversion functions
   and trigonometric functions such as cos, sin and tan.
 - Added "Enforce object-based scripting" option, which means that
   old-style commands (such as MoveCharacter) no longer work.
 - Added sprite file indexing to speed up load time for games with a
   large number of sprites.
 - Added Solid, BlockingWidth and BlockingHeight properties to Objects.
 - Autocomplete now lists structure members.
 - Added Crop Sprite Edges Symmetric option, to leave the central
   pivot point of the sprite unchanged.
 - Added AbortGame function to allow script modules to perform checks
   on their parameters and easily give an error.
 - Added #ifdef, #ifndef, #endif, #undef and #error preprocessor
   directives to the script language.
 - Added DEBUG and STRICT pre-defined macros when in debug mode
   and strict scripting mode, respectively.
 - Added script call stack when an error occurs, rather than just the
   current line number.
 - Added script editor Preferences dialog, allowing you to control
   which automatic editing features are enabled.
 - Added Character.BlockingWidth/BlockingHeight to allow you to
   customize the blocking size of a character.
 - The "player" variable is now kept updated to reflect the current
   player character, so it's now perfectly safe to use  player.Walk
   rather than  character[GetPlayerCharacter()].Walk
 - Added GUI OnClick handler to provide a more intuitive way to handle
   clicks on the GUI background.
 - Added export/import single GUI function.
 - Added ClipImage option to GUI buttons.
 - Added option to select the transparency and palette settings for
   the Quick Import options.
 - Improved the custom inventory window, so that it can display
   inventory for a specific character; and also it now has object-based
   methods to manipulate it, rather than messing around with variables
   like game.top_inv_item.
 - Improved script type checking -- it will now catch far more errors
   if you try to do things like assign a string to an int, or pass
   character[EGO] to a function where EGO was wanted.
 - Local variables are now automatically initialized to 0.
 - Improved function calltips so that it highlights the current
   parameter.
 - Added support for multi-word words in text parser.
 - Removed various buttons on the Room Settings and GUI panes, and
   moved them to new Room and GUI menus, respectively.
 - Script compiler now checks that the "import" declaration of
   variables in the script header matches the real definition in
   the global script.
 - Added confirmation prompt in script editor if you choose "Discard
   and exit"; and added shortcut keys for the exit options.
 - Increased max sprites to 30000.
 - Increased max overlays from 10 to 20.
 - Improved game startup speed and room loading speed.
 - Changed MOD music player from JGMOD to DUMB, and consequently:
   Fixed some previously unsupported S3M's music files not playing.
   IT Impluse Tracker format mod files are now supported (music*.it)
 - Removed limits on the total number of GUI controls you can have.
 - If two room-changing functions are called in one script, an error
   now occurs (eg. using RestoreGame followed by NewRoom).
 - Added the game name to the script editor title bar (useful if you're
   alt-tabbing between multiple games).
 - Added ability to use a sprite as the inventory cursor hotspot dot.
 - Dynamic sprites are now persisted in save games.
 - Changed Test Game behaviour to hopefully fix problems with it hanging.
 - SaveGameSlot/SaveGameDialog are now delayed-response functions, just
   like the RestoreGame ones. This means the game won't actually be
   saved until the script function finishes.
 - Improved character 'skipping' sometimes at move speed 1.
 - Increased max custom properties from 20 to 30.
 - Changing an object's name now marks the room as dirty.
 - RawDrawImage and MergeObject now draw alpha-blended images properly.
 - Sprite Usage report now tells you which GUI a GUI button is on.
 - Added \[ to Display/Say/etc, to enable you to display the [ character
   rather than it doing a line break.
 - Significantly improved script compile speed.
 - Ctrl+Space now allows you to pop up the autocomplete list at any
   time, like in Visual Studio.
 - If Split Resources Files is checked, the sprites are now put into the
   .001 resource file to stop the EXE getting too big (since it could
   cause performance problems due to anti-virus software).
 - Added editor warning message if you Save Room As to a filename that's
   not roomX.crm or intro.crm
 - Renamed "No interaction" character checkbox to "Clickable" (and thus
   reversed its behaviour) to make it consistent with the script.
 - Renamed GUI "Foreground color" property to "Border color" since
   that's all it does.
 - Importing a new background with a different size to the old one
   now gives you an opportunity to cancel.
 - Improved accuracy of GetMP3PosMillis and voice lip-sync with OGG
   sound files.
 - goto-previous dialog command now stops the dialog if there is no
   previous topic, rather than aborting the game.
 - StrCopy now works with copying into char buffers less than 200 bytes
   (USE WITH CARE, there is no buffer overrun protection)
 - Enabled Quick Import sprite options in 256-colour games.
 - Added an option to Auto-number Speech Lines to number Display() lines
   for the narrator.
 - PlaySound now returns the channel number that the sound is playing on.
 - Renamed intro.crm to room0.crm, to stop it causing confusion.
 - Renamed the manual to "ags-help.chm" to make it more obvious what
   it is when accessing it externally from the editor.
 - Changed shortcut key for Freehand tool in Room Areas to Ctrl+D to
   stop it conflicting with Edit Script (Ctrl+E).
 - Changing a character's script name now forces a re-compile of the
   dialog scripts.
 - DisplaySpeech no longer changes the mouse cursor if the cursor mode
   is already the Wait mode.
 - Auto-number speech lines now tells you which room the error was in,
   if there is a compile error when re-compiling.
 - Script names can now contain the digit 0-9 after the first character.
 - Fixed interactions getting disconnected and other problems after
   deleting an object.
 - Fixed function calltip not appearing if you used the ( key to
   autocomplete the function name.
 - Fixed "unknown interaction" crash if the room changed within an
   interaction.
 - Fixed crash which could happen when an inventory cursor was in use.
 - Fixed erroneous type mismatch error sometimes when using char arrays
   as strings.
 - Fixed animated GIF import if the transparent color had the same RGB
   value as one of the real colors.
 - Fixed PlayMusicQueued skipping some tracks if crossfading was enabled.
 - Fixed script editor not re-opening properly if you closed it while
   it was minimized.
 - Fixed problems creating a template with a filename longer than 15
   characters (now truncates to 15 instead).
 - Fixed Assign To View not always flipping the first frame when you
   asked it to.
 - Fixed editor crash sometimes if you had been editing a room with no
   code in its room script.
 - Fixed editor crash if you deleted a sprite folder whilst editing
   its name.
 - Fixed #defined names so that they are not replaced if preceded by
   a dot.
 - Fixed script compiler allowing array.member with no index specified.
 - Fixed text parser not allowing 1-letter words.
 - Fixed SetCharacterSpeechView not allowing -1 to turn it off.
 - Fixed crash importing GIF files with comments (thanks to "Hard Rock"
   for the fix).
 - Fixed slider background image not being exported as part of GUI.
 - Fixed Paste From Clipboard sprites getting given an alpha channel
   if you previously imported an alpha-channel sprite from a file.
 - Fixed FollowCharacter not working on two NPC's if Hide Player
   Character was ticked in the room.
 - Fixed free disk space crash on game startup on some Win9x systems.
 - Fixed pixel-perfect click detection not always working properly
   with flipped sprites.
 - Fixed compiler crash if a single array or struct was bigger than
   32KB.
 - Fixed line numbers being missing from a couple of compiler error
   messages.
 - Fixed SetChannelVolume not working properly with the ambient sound
   channel.
 - Fixed occasional animation glitch if the previous loop in the view
   had no frames.
 - Fixed compile error if you had more than 500 functions in the global
   script.
 - Fixed speech animation not playing if DisplayMessage was used with a
   room message set to display as character speech.
 - Fixed RunAGSGame crashing if called from a custom script function.
 - Fixed IsKeyPressed(13) not working with the numeric keypad Enter key.
 - Fixed GUI editor not allowing you to set a label text longer than
   25 characters.
 - Fixed clickable z-order of GUI controls to be the same as the visual
   z-order.
 - Fixed Mouse Moves Over Hotspot not being run if the mouse was still
   but the room scrolled around it.
 - Fixed translation files to be read from the datadir in acsetup.cfg,
   if specified.
 - Fixed rare crash which could occur with MoveObject.
 - Fixed GUI Editor allowing you to add controls to a text window GUI.
 - Fixed MoveCharacter error messages if a character was following
   another character and neither were in the current room.
 - Fixed the Player Enters Screen After Fadein running before fadein
   in the new room if ChangeRoom was called from Player Enters Screen
   Before Fadein.
 - Fixed GetTime returning the wrong year.

VERSION 2.62, November 2004
 - Added AddInventoryToCharacter, FileWriteRawChar, GetButtonPic,
   GetHotspotName, GetObjectName, LoseInventoryFromCharacter,
   NewRoomNPC, RemoveObjectTint, SetFadeColor, SetNextScreenTransition,
   SetObjectTint text script functions.
 - Added COM Plugin API access to Characters, GlobalMessages,
   Script #defines, GameDirectory, SaveGame and QuitGame.
 - Added GIF image import, and Quick Import GIF Frames option.
 - Added ability to get current year to GetTime.
 - Added characters[].idleview variable to provide read access to
   the character idle view (still use SetCharacterIdle to change it).
 - Increased max sprites displayed at once from 39 to 50, and improved
   user-friendliness of the error message if it is exceeded.
 - Pixel-perfect click detection now works with scaled sprites.
 - Increased max hotspots to 30.
 - Increased max characters to 300.
 - Increased max views to 600.
 - Increased max GUIs to 50 and max GUI Buttons to 250.
 - Added option for objects to use region tint and light levels, and
   an option for objects to use walkable area scaling.
 - Added ability to get the number of characters, objects and GUIs
   to GetGameParameter.
 - Added missing characters to default font 0 (#, $, &, etc)
 - Added warning if you called FollowCharacter on a character which
   was doing a looped animation.
 - Added automatic de-denting to the script editor, so that }
   characters get automatically pulled back to line up with
   the corresponding {
 - In the Walk-behind editor, only the baseline for the currently
   selected area is now displayed, for clarity.
 - Changed room area editor so that only the selected area is displayed
   bright, and the other areas are all greyed out.
 - Added Script Modified indicator (*) to script editor title bar.
 - Added Sierra Portrait Position game option, to allow you to specify
   the portrait to be on the left, right or alternate. This supersedes
   and obsoletes the old game.swap_portrait variable.
 - Added game.skipping_cutscene variable so that you can find out when
   your code is being skipped over.
 - Added game.abort_key, to allow you to customize the Abort Key to be
   something other than Alt+X.
 - Read-only variables such as mouse.x are now enforced as such.
 - Display("") now does nothing, rather than pausing the game.
 - View preview window now displays current frame number.
 - DisplaySpeechBackground now removes any existing background speech
   for the character before displaying the new speech.
 - Fixed bug in 2.61 which was resetting all character movement and
   animation speeds if you upgraded a game from a pre-2.55 version.
 - Fixed WAV music not getting included in the MUSIC.VOX
 - Fixed recursive function calls to give error rather than crashing.
 - Fixed movement 'snapping' to destination when using move speed 1.
 - Fixed crash if there were no frames in one of a character's main
   loops, by providing an error message instead.
 - Fixed GetRegionAt to return the nearest region if the co-ordinates
   are off the edge of the screen.
 - Fixed plugin API AbortGame function crashing.
 - Fixed attempting to skip a cutscene hanging if No Auto Remove text
   was being used.
 - Fixed SetCharacterIdle not kicking in straight away when delay was 0.
 - Fixed IsKeyPressed not supporting the + - = keys.
 - Fixed FaceLocation problem with characters that had less than 4 loops.
 - Fixed SetObjectTransparency and SetCharacterTransparency so that a
   transparency of 100 means the sprite is completely invisible, even
   with 256-colour and alpha-blended sprites.
 - Fixed StopMoving resetting the character's current frame to 0, even
   if they weren't moving.
 - Fixed problems using NewRoom inside a region interaction whilst
   moving to a hotspot walk-to point.
 - Fixed walk-behind area 15 not working.
 - Fixed SetMusicVolume changes not being persisted in save games.
 - Fixed error message about repeatedly_execute_always popping up if
   you used a blocking function in Enters Screen Before Fadein (which
   you shouldn't do anyway).
 - Fixed object baselines not being sorted out properly when you deleted
   an object.
 - Fixed crash if you used NewRoom from within a Player Leaves Screen
   script.
 - Fixed SetCharacterIgnoreWalkbehinds placing the character behind all
   other sprites.
 - Fixed text windows getting a black background if colour 0 was
   specified, rather than being transparent.
 - Fixed view preview window not stretching properly with 320x200 games.
 - Fixed view preview window aligning sprites to top rather than bottom.
 - Fixed view preview window not blanking out display if you selected a
   loop with no frames.
 - Fixed view preview window not remembering its location on the screen
   for next time.
 - Fixed AnimateCharacterEx not working properly when playing a multi-loop
   animation backwards.
 - Fixed DisplayThought to shrink the thought bubble to fit the text when
   a short amount of text is displayed.
 - Fixed mouse cursor staying as Pointer (mode 6) when a dialog is STOPped.
 - Fixed nested array indexes not working properly when used with a
   struct in the form  a[i].b[c[k].d];
 - Fixed text box accepting keypresses when disabled.
 - Fixed SetObjectPosition giving erroneous line numbers if you passed an
   invalid object to it.
 - Fixed "Use exact palette" being ignored if "Share palette" was
   ticked in 256-colour animated backgrounds.
 - Fixed "repeatedly_execute" option on the Script menu sometimes
   selecting repeatedly_execute_always instead.
 - Fixed script editor crashing if you created a variable name longer
   than 60 characters.
 - Fixed parse error if a string longer than 255 characters was used in
   the script.
 - Fixed SetGlobalString not being safe if you passed a string longer
   than 200 characters to it.
 - Fixed Wait(0) to give error message rather than cause strange in-game
   results.
 - Fixed SetPlayerCharacter to do nothing at all if you pass the current
   player character to it (previously it was resetting the inventory layout)
 - Fixed ChangeCharacterView giving a warning message if the character's
   idle animation was playing.
 - Fixed issue with Sierra-style speech if the first frame in the speech
   view was flipped.
 - Fixed crash if you closed the script editor while the message telling
   you to do so was still displayed.
 - Fixed FaceLocation hanging if the character was set as hidden.
 - Fixed #defines working on words inside 'single quotes'.
 - Fixed "you need to select an item first" message box when trying to
   set the Inventory Hotspot Dot.
 - Fixed problem when SetPlayerCharacter was used in a room which
   had "Hide Player Character" ticked.
 - Fixed DisplayThought positioning if character was not in current room.
 - Fixed PlayMP3File error if filename was longer than 25 characters.
 - Fixed interaction editor Text Script Equivalent code for Conditional
   If Variable Equals Value

VERSION 2.61, May 2004
 - Added AreThingsOverlapping, DisableGroundLevelAreas,
   EnableGroundLevelAreas, FileIsError, HasPlayerBeenInRoom,
   RawDrawImageResized, RawDrawImageTransparent,
   SaveCursorForLocationChange, SetCharacterFrame, SetGraphicalVariable,
   SetGUIObjectEnabled, SetInvItemName, SkipUntilCharacterStops script
   functions.
 - Added operators % ! ^ << >> to scripting engine (remainder, Not,
   XOR, LeftShift, RightShift).
 - Added repeatedly_execute_always script event function, which is
   called every game loop, even when a blocking function is running.
   Supported in both the global script and room scripts.
 - Added character[].z variable, to allow you to make a character levitate
   into the air whilst still using the baseline, light levels and
   interactions of its Y co-ordinate.
 - Added OLE Automation support to editor, to allow plugins to interact
   with the editor, add menu options, new panes, and so forth. This
   includes support for editor-only plugins which are not included
   with the game at run-time.
 - Added plugin API engine functions BlitSpriteRotated,
   BlitSpriteTranslucent, CanRunScriptFunctionNow, CallGameScriptFunction,
   DisableSound, GetDirectSound and UnrequestEventHook; events
   AGSE_SCRIPTDEBUG and AGSE_AUDIODECODE; and new entry point
   AGS_EngineShutdown.
 - Added view preview window to let you quickly test loop animations.
 - Added ability to get a view frame's speed and sprite number from
   GetGameParameter.
 - Added game.speech_text_align variable to control the alignment
   of lucasarts-style speech.
 - Added game.auto_use_walkto_points variable to allow you to stop
   the engine automatically moving the player to walk-to points.
 - Added game.inventory_greys_out variable to enable inventory controls
   to grey out with the rest of the GUI when disabled.
 - Added game.skip_speech_specific_key variable, which allows you
   to set that only one particular key can skip speech (eg '.' in
   old lucasarts games).
 - Added system.viewport_width, system.viewport_height, system.version
   text script variables.
 - Added "Mouse click only" skip speech style, which only allows
   speech to be skipped with a mouse click, not a key press.
 - Added "Change colour depth" option to Game menu, to make it more
   intuitive than just being on the Palette pane.
 - Implemented Match Brace feature in script editor.
 - Changed text window background image positioning and clipping such
   that you can now have transparent edges on the outside of the border
   graphics whilst using a background image.
 - Newly added GUI Buttons are now set to Run Script by default.
 - Added ability to set a tiled background image for GUI sliders.
 - Enabled sliders to be grabbed by the entire width of the handle, not
   just the width of the main slider bar.
 - Added "Handle offset" option to sliders, to allow you to manually
   shift the handle across if the graphic doesn't line up properly.
 - Added Cancel button to the InputBox (and the Debug Ctrl+X box).
 - Editor welcome dialog now displays game folder name before
   complete path in Recent Games list.
 - Stopped autocomplete list popping up when inside strings and
   comments in the script editor.
 - Increased max dialog messages to 3000.
 - Increased max speech files from 2000 to 3000.
 - Changed the Object Pos display in the Objects pane of the editor to
   display the lower-left co-ordinate, as used in the game engine, rather
   than the top-left.
 - Renamed "Blank game" to "Default game", and added "Empty game"
   template (courtesy of AGA) which has no default sprites at all.
 - The Dump Text feature now also dumps the script header if "Text
   scripts" is selected.
 - Changed goto-previous to save a nested history of previous topics
   so that it can be used to retreat up the dialog tree.
 - Ambient sound is now restored properly after a PlayVideo.
 - Added low disk space check when saving a save game slot.
 - Added option to script editor Find dialog to start search from current
   location, rather than start of script.
 - Lucasarts-style speech now abides by the setting of
   game.close_mouth_end_speech_time.
 - Encrypted strings in compiled files, to prevent the player loading
   the exe into notepad to cheat.
 - Mouseover GUI button pics no longer work while in a blocking cutscene.
 - While moving a GUI object, the X/Y co-ordinates update dynamically
   in the properties window.
 - When using FOLLOW_EXACTLY, the following character is now drawn
   in front of the followed character; an extra option to
   FollowCharacterEx allows you to reverse this behaviour if you wish.
 - Editor now remembers the settings of "Lock sprite to current room"
   and "Remap colours to game palette" between imports.
 - Prevent the user restoring a save game if views have been added
   to the game since it was saved. This prevents later problems with
   the SetCharacterView and SetObjectView functions.
 - Removed close button from Edit Action window in the interaction
   editor, to fix the problem where a script could get disconnected
   from its interaction.
 - Removed the "Don't automatically lose inventory" option - it's now
   always on (not having it checked was a debugging nightmare).
 - PlayAmbientSound now does not reset the sound if you play an ambient
   sound that is already playing.
 - CyclePalette now supports rotating the colours in both directions.
 - FaceCharacter(EGO,EGO) now does nothing rather than facing left.
 - Default hotspot names (eg "Hotspot 1") are no longer output in the
   translation source file.
 - Keypresses are now discarded rather than queued if a blocking script
   is running when you press the key.
 - Skipping cutscene will now skip text boxes if No Auto Remove text is
   set, rather than hanging the game.
 - Fixed character walking on the spot at the end of a move occasionally.
 - Fixed Talk cursor flashing up briefly before dialog options
   turn back on during a conversation.
 - Fixed MoveToWalkableArea not working if the character was off the
   screen.
 - Fixed QFG4-style speech not working.
 - Fixed crash in DisplayTopBar.
 - Fixed Sierra-style speech not supporting flipped view frames.
 - Fixed lockup which could occur with some nested interactions.
 - Fixed bug where characters could get stuck when using Adjust Speed
   with Scaling.
 - Fixed Setup program not working if it was run from the command line.
 - Fixed font wierdness and crashing the first time you run a new game
   made from a template.
 - Fixed "Mouse moves over hotspot" running even if the mouse was
   actually moving over a GUI on top of the hotspot.
 - Fixed GUIs sometimes not re-enabling themselves until the mouse
   moved over them.
 - Fixed continuous idle loops not starting immediately after
   speech finished.
 - Fixed character view not always getting set back to normal view
   after talking but before dialog options are displayed.
 - Fixed script compiler allowing local strings to be returned from
   functions.
 - Fixed crash in SetGlobalString if you passed a very long string
   to it - now truncates to 200 characters instead.
 - Fixed translation output including text from deleted GUI buttons
   and labels.
 - Fixed auto-timeout text not working with DisplayTopBar.
 - Fixed editor having problems with finding the right script
   function to edit if you made a mistake with { } placement.
 - Fixed character being moved to non-walkable area if you left a
   room that it was moving in.
 - Fixed editor wiping most of the currently loaded room when
   you loaded a different game in.
 - Fixed editor problem editing script functions if the function
   was called before it was used
 - Fixed DisplaySpeech resetting the character's frame to 0 after
   they finished talking.
 - Fixed compile error if a string ended in a backslash.
 - Fixed problem with #define if tabs were used rather than spaces.
 - Fixed commented out #define statements so that they are properly
   ignored by the compiler.
 - Fixed 100% CPU usage while a text box was displayed.
 - Fixed character portrait remaining on screen when the parser-in-
   dialog was used.
 - Fixed digital speech and music files not being used if the current
   directory was not the game's directory when the game was run.
 - Fixed IsKeyPressed not working with shift, ctrl and alt.
 - Fixed idle animation not always kicking in straight away after 
   the character stopped moving.
 - Fixed '@' character not being displayed in GUI labels.
 - Fixed region tint problem if the amount was set to 50%
 - Fixed error message if you set the game to start in room -1.
 - Fixed inventory hotspot colours >32000 not working
 - Fixed GUI Properties window appearing on the taskbar.
 - Fixed GUI button text not being drawn backwards when Backwards
   Text was enabled.
 - Fixed config file "datadir" setting not working with root
   directories.
 - Fixed editor crash if you pressed Alt+F4 while the GUI Properties
   window was selected.
 - Fixed editor crash if you closed the Interaction Editor while the
   script editor window was open.

VERSION 2.6 Service Pack 1, January 2004:
 - Fixed editor importing of some 16 and 32-bit BMP files which
   didn't work previously.
 - Fixed crash on game startup if you deleted the default mouse
   cursor sprite.
 - Fixed cropping sprites not marking them as dirty (and thus
   the changes were not saved to disk).
 - Fixed Player Enters Screen (After Fadein) not getting run if
   there was a blocking command in First Time Enters Screen.
 - Fixed crash in 800x600 games if a background smaller than
   800x600 was imported.
 - Fixed crash if you used new-room dialog script command inside
   a dialog run by a room interaction command.
 - Fixed crash with continuous scaling areas if the min was set
   to the same as the max.
 - Fixed rare editor crash after changing colour depth.
 - Fixed problem with downgrading 32-bit alpha sprites to 16-bit
   after the game had been running for a while.
 - Fixed FadeIn not being skipped when skipping a cutscene.
 - Editor now checks for invalid colours in imported walk-behind
   masks since they could cause strange effects in-game.
 - Changed editor's Test Game code to try and fix problems some
   people are having with it.

VERSION 2.6, December 2003:
 - Added AnimateButton, ClaimEvent, DeleteSprite, DisplayTopBar,
   GetInvGraphic, GetTextHeight, GetTextWidth, LoadImageFile,
   LoadSaveSlotScreenshot, PlayMusicQueued, RawDrawFrameTransparent,
   RawSetColorRGB, SetAmbientTint, SetAreaScaling,
   SetCharacterSpeedEx, SetCharacterViewOffset, SetGUIClickable,
   SetGUIObjectSize, SetGUIZOrder, SetTextBoxFont, StopObjectMoving
   text script functions.
 - Added plugin API functions MarkRegionDirty, GetMouseCursor,
   GetRawColorComponents, MakeRawColorPixel, GetFontType,
   CreateDynamicSprite, DeleteDynamicSprite, and new plugin API
   hooks AGSE_FINALSCREENDRAW and AGSE_TRANSLATETEXT.
 - Added 24/32-bit colour support.
 - Added alpha channel support for 32-bit sprites.
 - Added room script support for on_key_press and on_mouse_click, so
   that the current room can handle the input rather than having it
   all done by the global script.
 - Speed enhancement for rooms with relatively few objects.
 - Added ability to import PNG and TGA files in the Sprite Manager.
 - Added option to automatically outline fonts.
 - Added support for saving screenshots into save games.
 - Added GUI Z-order support, so that you can choose which order
   overlapping GUIs are drawn in.
 - Added Crop Sprite Edges option to sprite manager, to crop the
   edges off a group of sprites down to the size needed by the
   largest of them.
 - Added ability to specify character X and Y walking speeds
   seperately.
 - Added Quick Import Multiple Sprites and Export All Sprites
   In Folder options for sprite folders.
 - Added ability to re-order sprites within a folder by dragging
   them around.
 - Added "Assign to view" right click option in Sprite Manager,
   to allow a group of sprites to easily be added to a view.
 - Added script names for views, working similarly to GUI and
   character script names.
 - Added editor option to show outline of all GUI objects, to allow
   you to find blank or transparent controls.
 - Added FOLLOW_EXACTLY feature to FollowCharacterEx, to allow you to
   easily keep a sprite on top of a character.
 - Added Show Usage option for sprites, to find out where they are
   used in the game; and tied this into the Delete Sprite option.
 - Added ability to have only left/right walking frames for
   characters (just delete all frames in loop 0).
 - Increased max GUIs to 40, max GUI buttons to 200.
 - Increased max views to 400.
 - Increases max objects to 20 per room.
 - Added auto-complete for plugin functions and functions defined
   in the script header.
 - Added ability to manually set X and Y position of GUI
   controls.
 - GUI Editor and Font Editor now show full detail in 640x400
   games rather than a scaled down version.
 - Rearranged options on the main Game Settings tab to make
   the order more logical.
 - Made only the options area of the dialog editor scrollable, to
   improve its usability.
 - Added system.vsync script option to smooth full screen scrolling.
   Note that enabling this will cap your game frame rate at the
   screen refresh rate.
 - Built-in inv window now sets player.activeinv while using an item
   on another (to make it consistent with custom inventory).
 - Disabled deleting sprites while selecting a sprite for something,
   to prevent crash if you deleted the old active sprite.
 - Made the tabbing order of the controls in Setup more logical.
 - IsSpeechVoxAvailable and IsMusicVoxAvailable now return 0 if
   the user has no sound card or sound is disabled.
 - Stopped the user loading in a different room while editing the
   room script.
 - Loading a new room now properly resets the Room Areas undo buffer.
 - Disabled anti-aliasing on text drawn on transparent GUIs, to
   fix the pink effect.
 - Improved alignment of portrait with text window when using
   Sierra-style speech.
 - Increased text script stack size to 4 KB.
 - Fixed large memory leak which could cause slow loading and Out
   of Memory errors in games that used TTF fonts.
 - Potentially fixed game hanging on exit on some computers.
 - Fixed editor crash if you used return without a semicolon.
 - Fixed script editor not properly parsing functions where there
   was a { character in a string.
 - Fixed script errors if you declared a variable in a room script
   with the same name as one which was in the script header.
 - Fixed positioning issue with some TTF fonts at 640x400.
 - Fixed objects 10 and above not being able to move.
 - Fixed changing room settings not marking room dirty.
 - Fixed mouse cursor not changing back to arrow pointer in dialog
   windows.
 - Fixed music not always being restored correctly when restoring a
   save game.
 - Fixed narrator speech not being cancelled when the user skipped
   a text window.
 - Fixed GUI textboxes to not allow the cursor to extend beyond
   the end of the text box.
 - Fixed crash clicking scroll bars in save dialog when no save games.
 - Fixed rare random crash with small GUI labels.
 - Fixed lockup using NewRoom from within the default inventory window.
 - Fixed editor not to allow Test Game feature with DOS-compiled games.
 - Fixed @overhotspot@ not removing item name if you moved the mouse
   off of all inventory items but within the inventory GUI.
 - Fixed GUI not detecting clicks when it first appears until the
   mouse moved.
 - Fixed GUI buttons being greyed out on Persistent GUIs when
   "GUIs turn off when interface disabled" was set.
 - Fixed parser-in-dialog to use the same font as the dialog
   options.
 - Fixed parser-in-dialog text not being erased when you pressed
   backspace with the default dialog options display.
 - Fixed problem creating GUI controls if you dragged the
   rectangle up-left.
 - Fixed idle animations using loops 4-7 of view, even if
   "No diagonal loops" was set for the character.
 - Fixed following characters so that if you leave a room, then
   quickly come back, the following character is still there.
 - Fixed converting a GUI to a text window sometimes corrupting
   other GUIs.
 - Fixed compiler allowing assignment to string in declaration.
 - Fixed crash if game.text_speed was zero (now error out instead).
 - Fixed keyboard focus in editor being lost when selecting the GUI
   editor from the left hand tree.
 - Fixed editor crash compiling a script with no right hand side of
   an operator.
 - Fixed crash using nested imported function calls in script.
 - Fixed black palette entries getting remapped to dark grey in
   256-colour sprites.
 - Fixed import rectangle changing size when switching import images
   if the importer was zoomed in.
 - Fixed editor crash if you deleted the last selected sprite.
 - Fixed system.screen_height returning 200 even when it was
   actually running at 240.
 - Fixed speech positioning problem with GUIs Turn Off When Disabled
   setting.
 - Fixed crash loading a room if anti-alias sprites was enabled
   and the room palette was corrupt somehow.
 - Fixed fade-in problem with 256-colour animated backgrounds in
   a hi-color game.

VERSION 2.56b, August 2003:
 - Added GetScalingAt text script function.
 - Fixed Lucasarts-style speech being wrongly offset when character
   is near to the edge of the screen.
 - Fixed editor crash if you pressed Find Next while auto-complete
   was displayed.

VERSION 2.56a, August 2003:
 - Changed the way region tints work, to make them more useful.
 - Added RawDrawRectangle text script function.
 - Added game.anim_background_speed to allow you to modify the
   speed at which the animated backgrounds rotate.
 - DisplaySpeechAt with Sierra-style speech doesn't shrink text box.
 - FaceLocation with "turn to face" now works in Enters Screen event.
 - Increased max fonts to 15.
 - Fixed region tint in 15-bit colour.
 - Fixed crash if the player typed [ or ] into the text parser.
 - Fixed region tints not being saved in save games.
 - Fixed region light levels messing up in editor.
 - Documented custom properties.

VERSION 2.56, August 2003
 - Added GetCharacterProperty, GetCharacterPropertyText,
   GetHotspotProperty, GetHotspotPropertyText, GetInvProperty,
   GetInvPropertyText, GetObjectProperty, GetObjectPropertyText,
   GetRoomProperty, GetRoomPropertyText, ListBoxRemove,
   SetCharacterBlinkView, SetGUIObjectPosition, SetGUISize,
   SetRegionTint and StrContains script functions.
 - Added Custom Properties to allow you to easily specify options
   for hotspots, characters, rooms, objects and inventory.
 - Added option for characters speed to be adjusted in line with
   their scaling level.
 - Added option to display multiple inventory items multiple times.
 - Added option to have the text parser with dialog options, so that
   the player can either select an option or type something in.
 - Added RGB tint option for regions as an alternative to light level.
 - Added "Quick Import FLC frames" to import all frames from a FLC
   file in one go to the current sprite folder.
 - Implemented multiple select for dragging and deleting sprites in
   the sprite manager.
 - Added "Update translation file" option, to add new lines from the
   game to the translation source, whilst leaving currently translated
   bits intact.
 - Added options to translation files, to allow changing font and 
   text direction on a per-translation basis.
 - Added preliminary support for right-to-left text writing.
 - Added ability to delete sprite folders (USE WITH CARE!!)
 - Added "Lock objects in position" checkbox to the GUI editor, to
   stop you accidentally moving objects when trying to select them.
 - Added extra "Blinking" view to draw an extra animation on top of
   the character's speech animation intermittently while they are
   talking. Currently Sierra-style speech only.
 - Added 'goto-previous' dialog script command to return to previous
   topic, and 'lose-inv' command to lose the player inventory.
 - Added new "Box out" and "Crossfade" screen transitions.
 - Added option for characters to turn to face their new direction
   when using FaceLocation/FaceCharacter.
 - Added "Persistent" GUI display option, to not remove it during
   a cutscene with "GUIs turn off when disabled".
 - Added "Auto number speech lines" to automatically give a number 
   to all speech lines in the game.
 - Added feature to detect hung scripts and abort the game (for
   example, scripts like  while (1) { }  )
 - Added ability to export/import the text parser word list.
 - Added MIDI controller event support, so that MIDI commands such as
   sustain will now work.
 - Sierra-style speech now shrinks the width of the text window if
   the text is narrower than the screen width.
 - Text parser now accepts ' and - characters, and automatically
   accepts plurals of all words (ie. an 's' on the end).
 - Added ability to change sprite numbers in the Sprite Manager.
 - Increased max sprite folders to 500.
 - Increased max sprites to 15000.
 - Increased max dialog topics to 500.
 - Increased max cursors to 20 (though the new ones will only activate
   the Any Click event at present).
 - Script editor is no longer a modal window (but only if it's not
   opened from the interaction editor).
 - Changing a hotspot name now correctly marks the room as modified.
 - Sprite manager now remembers which folder you were in before
   when selecting new item graphics.
 - SetPlayerCharacter now changes the mouse cursor if an inventory
   item of the old character was active.
 - Disabled auto-complete in the dialog script editor.
 - Fixed Enters Screen Before Fadein not being run if the NewRoom was
   launched from an inventory interaction.
 - Fixed normal mouse cursor flashing up in between messages
   when Always Display As Speech was being used.
 - Fixed Sierra-style speech box overrunning the face if it had
   wide borders.
 - Fixed set-speech-view dialog command not working.
 - Fixed buttons in default inventory screen being drawn without
   transparency.
 - Fixed dialog bullet getting set even if you pressed ESC.
 - Fixed animated backgrounds sharing the palette, even when you told
   them not to. You'll need to re-import the main background in any
   problem rooms for this fix to take effect.
 - Fixed thinking view not being exported with character.
 - Fixed RunAGSGame not resetting game paused flags.
 - Fixed RunAGSGame not working if mode was passed as 1.
 - Fixed Rebuild VOX Files to delete the music.vox if there were
   previously music files, but no longer are any.
 - Fixed SetSoundVolume not taking effect with footstep sounds.
 - Fixed editor crash if "function" was the last word in a script.
 - Fixed "player.inv[index]--;" also decrementing inv[index+1]
 - Fixed SetPlayerCharacter crashing if called from game_start.
 - Fixed dialog options moving across the screen in non-GUI mode.
 - Fixed editor crash typing >200 characters into a label.
 - Fixed text window GUI being used for dialog options instead of
   the specified Dialog Options GUI.
 - Fixed GUI button text not being translated if the button also
   had an image.
 - Fixed HideMouseCursor not hiding cursor while message displayed.
 - Fixed FollowCharacter crash when stopping char from following.
 - Fixed problem with translations where \" had been used in a string.
 - Fixed dividing by zero in the script causing a fatal exception.
 - You are now always prompted to save changes to a room when loading
   another one - the Preferences setting only affects the prompt when
   you choose the "Save Room" option on the menu.

VERSION 2.55, May 2003
 - GUIs can now be named, and those names used in the text script,
   much the same way as it works with characters.
   GUIs can also now be deleted, which is safe so long as you use
   their names rather than numbers to reference them in your scripts.
 - Optimization to speed up screens with large objects, and to
   speed up rendering of characters.
 - Added "regions" as a new room area mask type. These take over
   light levels from walkable areas, and also add 'Player Walks Onto'
   and 'Player Walks Off' interactions.
 - Added support for New Game Templates, to enable the user to choose
   between a new game Sierra-style, Lucasarts-style, and so forth.
   The default blank game also now includes a simple custom inventory
   window.
 - Added DisableRegion, DisplayThought, EnableRegion, GetGameOption,
   GetGameParameter, GetRegionAt, IsInventoryInteractionAvailable,
   RunRegionInteraction, SetCharacterViewEx and ShakeScreenBackground
   text script functions.
 - Added plugin API functions GetSpriteWidth, GetSpriteHeight,
   GetTextExtent, PrintDebugConsole, PlaySoundChannel, IsChannelPlaying
 - Increased max objects per room from 10 to 15.
 - Added "Quick Save" editor option, which saves your changes but
   doesn't compile the game files. This is useful when you just
   want to quickly save your work but not test the game.
 - Added drag and drop support to sprite manager for moving sprites.
 - Added game.text_align variable to allow you to centre text within
   message boxes.
 - Added ability to use custom image as GUI Slider tracker.
 - Added option for 256-colour animating backgrounds to share the
   main background's palette, to eliminate flicker effect on
   backgrounds with more subtle changes.
 - Added basic CallTips to script editor.
 - Mirrored view frames now work with objects.
 - Editor now checks whether the starting room exists before
   saving the game, which should hopefully help newbies.
 - Added "Conditional - If mouse cursor mode is" and "Conditional - 
   If player has been to room" interaction commands.
 - If you have no mod/xm music, the player is now not loaded and
   therefore you can use all 6 sound channels simultaneously.
 - SetButtonPic now updates the button size to the size of the new
   graphic, when changing the Normal graphic.
 - Editor now prompts you to rebuild the vox files if music or speech
   has been added to the game folder.
 - Tiled sprite import now goes from left to right in rows, rather
   than top to bottom in columns - more logical this way.
 - Allow FileOpen to open files in sub-directories if FILE_READ.
 - Tinkered with avi playback code a bit to try and make it more stable.
 - Fixed spurious engine crash "no such function in script" when nesting
   scripts inside interactions.
 - Fixed walk-behind mask granularity not being updated if a background
   of a different resolution but same relative size was imported.
 - Fixed editor crash sometimes when changing GUI background image.
 - Fixed crash trying to load a game saved in a 320x240 room when
   the current room was a 320x200 room.
 - Fixed crash when characters went off the top of the screen.
 - Fixed crash passing empty string to Display/DisplaySpeech.
 - Fixed SetGUIPosition giving error message at 800x600.
 - Fixed SetMusicVolume not allowing volume less than Normal.
 - Fixed character light levels to use region 0 settings if off-screen,
   to make the character be correctly lit as they walk from off-screen.
 - Fixed black on some sprites turning to transparent when ignoring
   walk behinds.
 - Fixed replay playback sync error with 640x400-res games.
 - Fixed game crash if you had an unterminated GUI label macro.
 - Fixed crash drawing small (eg. 4x4) sprites.
 - Fixed editor crash dumping game text in long path names.
 - Fixed crash in Win9x when trying to drag sprites in the sprite manager.
 - Fixed crash entering a very long global message in the editor.
 - Fixed music crossfading while playing FLC animation.
 - Fixed anti-aliased 256-col sprites being black during fade-in.
 - Fixed on_event(ADD_INVENTORY) not running if the player already
   had one of the item.
 - Fixed Undo wiping entire script if selected when editor opens.
 - Fixed dumping game text where there was no blank line at the
   end of a dialog script.
 - Fixed anti-aliased fonts causing problems with dialog options.
 - Renamed "Always on" and "Script only" GUI types to make more sense.

VERSION 2.54, March 2003
 - Added lip-sync text reading for speech lines.
 - Added option to anti-alias TTF fonts.
 - New Linux version of the AGS Engine, thanks to Shawn Walker. This is
   available seperately for download from the AGS website.
 - Added CentreGUI, GetGlobalString, GetHotspotPointX, GetHotspotPointY,
   HideMouseCursor, SetButtonText, SetGlobalString, SetGUITransparency,
   SetMousePosition and ShowMouseCursor text script functions.
 - Added "Conditional - If player character is" and "Character - Change
   Character View" interaction commands.
 - Added checks to stop characters walking through each other, and
   a related "Can be walked through" character option in the editor.
 - Added option to Setup to anti-alias scaled characters, thanks to
   Michael Bukin.
 - Added "GUIs turn off" option for when the player interface is disabled.
 - Added game.dialog_options_x and game.dialog_options_y to allow you
   to set an offset if your dialog options GUI has a border.
 - Added game.narrator_speech to allow you to set which filename prefix is
   used for voice speech within the narrator-style Display() messages.
 - Added game.ambient_sounds_persist to allow ambient sounds to continue
   playing on room changes.
 - Added unofficial debug display console (press the ` key, like in Quake)
   which might help you track down problems with your game.
 - View frame sounds now don't play if all sound channels are in use.
 - Improved hi-colour fade out/in speed, thanks to Matthew Leverton.
 - Increased max sprite folders to 100.
 - Unhandled_event is now run if you use an inventory item on an
   interaction which does not handle that item.
 - Allow 240-height GUIs in 320x240 and 640x480 mode.
 - StopMusic now fades out the old track if crossfading is enabled.
 - Fixed hotspot walk-to points being randomly moved in the editor
   when the cursor left the top of the background area.
 - Fixed sound looping glitch disabling crossfading during a fade-out.
 - Fixed crossfading music not working while PlayVideo was playing.
 - Fixed speech positioning error with transparent GUIs.
 - Fixed RunAGSGame crashing if the old game used plugins.
 - Fixed SetFrameSound changes not being saved in save games.
 - Fixed editor crash drawing horizontal line in continuous scaling area.
 - Fixed crash in StopMusic/PlayMusic when using crossfader.
 - Fixed bottom row of pixels in a walk-behind area not working.
 - Fixed SetInvItemPic failing with inventory item 1.
 - Fixed crash right-clicking in bottom of main tree pane.
 - Fixed @overhotspot@ text popping up briefly between display lines.
 - Fixed sprite importer scrolling back to top when using right drag.
 - Fixed minor change to TTF font sizes.
 - Fixed DisplaySpeech text not staying long enough when using %s.
 - Fixed character stopping on wrong frame if the pathfinder failed.
 - Fixed problem with PlayMP3File and music crossfading.
 - Fixed dialog startup script not getting played when switching topics.
 - Fixed hotspot 0's walk-to point not being visible.
 - Fixed IsInteractionAvailable with hotspots with walk-to points.
 - Fixed crash in SetSoundVolume when multiple sounds were playing.
 - Fixed movement jumping when doing slow horizontal and vertical moves.
 - Fixed music glitching when the engine exits with an error.
 - Fixed horizontal scroll bar in sprite import window being missing.
 - Fixed crash displaying messages longer than 1000 characters.
 - Fixed UpdatePalette while skipping a cutscene.

VERSION 2.53, January 2003
 - Added GetDialogOption, GetGraphicalVariable, IsChannelPlaying,
   IsOverlayValid, PlaySoundEx, RunAGSGame, SetChannelVolume,
   SetCharacterSpeechView, SetDigitalMasterVolume, SetGameOption,
   SetMultitaskingMode and StopChannel text script functions.
 - Changed the way resolution selection works in the editor to make it much
   more intuitive and friendly to newbies
 - Added 800x600 resolution support.
 - Added IAGSEngine::GetViewFrame, GetWalkbehindBaseline, GetAreaScaling,
   GetScriptFunctionAddress, GetTransparentColor, GetRawPixelColor and
   IsGamePaused plugin API functions.
 - Added "Rebuild all room files" option to Game menu in editor.
 - Added Alt+R as a hotkey to start recording a replay mid-game.
 - Added "New room" option to File menu in editor.
 - Added "Stop running more commands", "Character - Face Location" and
   "Game - Pause command processor" interaction commands.
 - Added room variables to interaction editor.
 - Added multiple sound channel support.
 - Added crossfading option for background music.
 - Added exact palette import option for sprites in 256-colour games.
 - Added Script menu to editor, with options to jump straight to commonly
   edited global script functions.
 - Script compiler now detects mismatch of string/int in function calls,
   and multiple declarations of the same variable.
 - 640x400-res sprites are no longer stretched in the Characters pane.
 - DisplaySpeechBackground now returns the overlay number it uses.
 - Upgraded TTF font renderer, leading to much faster TTF rendering.
 - Decreased save game size.
 - Editor now warns you rather than crashing if the game files are read-only.
 - Changed maximum frame rate from 100 to 1000 FPS to help speed tests.
 - Room messages displayed as speech now use the SetSkipSpeech setting
   and ignore the "Auto remove after a time" checkbox.
 - Removed "(most detailed)" from 960x600 in Setup to try and stop inexperienced
   players from choosing it.
 - Repeatedly_execute is now not called before Player Enters Screen in a room.
 - Screen edges are now disabled while the game is paused.
 - Increased max parameters for script functions from 10 to 15.
 - Increased max GlobalInts from 300 to 500.
 - Sprite importer now displays pixel size of selection rectangle.
 - If a character view has 8 loops, but loops 4-7 only have one frame each,
   then the diagonal frames are only used when turning round, not when walking.
 - Allow 15 characters in game folder name instead of 8.
 - Fixed lockup if you tried to skip a cutscene while the icon bar was up.
 - Fixed editor minimizing after using external text editor.
 - Fixed interaction variables not getting saved in save games.
 - Fixed rare condition where game could freeze up.
 - Fixed room areas and GUI editor buttons being opaque.
 - Fixed DisplaySpeechAt not using translations and text not staying long enough.
 - Fixed rare text script string corruption after restoring save game.
 - Fixed crash when restoring game in games which used the text parser.
 - Fixed speech getting hidden behind tall thin GUIs.
 - Fixed bug restoring a game saved in a 320x200 room when in a 320x240 room.
 - Fixed viewport co-ordinates not being restored from save game.
 - Fixed DisplayAtY when "Always display as speech" was checked.
 - Fixed possible issue with IsMusicPlaying when the user had no sound card.
 - Fixed Raw changes to animated background frames not being saved in save game.
 - Fixed double-clicking an event in the interaction editor not creating a
   new action if it had previously had one which had since been deleted.
 - Fixed editor allowing you to create two variables with the same name.
 - Fixed interaction editor arguments sticking on Boolean sometimes
   even once you changed it to a different command.
 - Changed internal compiled game file format slightly.
 - Upgraded editor wxWindows version - hopefully will correct WinXP glitches.

VERSION 2.52, November 2002
 - Added AnimateCharacterEx, AnimateObjectEx, DeleteSaveSlot, GetInvAt, 
   GetRawTime, IsObjectOn, RawDrawCircle text script functions.
 - Added RESTORE_GAME event to on_event in order to let your game know when its
   just been loaded from a save game file.
 - Added game.score_sound to allow dynamic changing of the score sound.
 - Implemented speed optimisation which should boost performance in all rooms that
   have walk-behind areas, especially those with large objects.
 - Added ability to run animations backwards; see the new Animate*Ex script
   functions for more information.
 - Added 'datafile' option to config file to allow playing game off CD; PlayVideo
   now uses the data directory rather than the EXE directory.
 - Added 'Cancel' option to prompt when closing script editor.
 - Added mouse wheel support to replay recording/playback.
 - Fixed the infamous "Not enough memory to load masks" error and related Illegal
   Exception on startup, that occured to some people on Windows XP.
 - Added IAGSEngine::GetRoomMask plugin API function.
 - Increased max GUIs from 20 to 30.
 - The current zoom level is now displayed in the editor in Walkable Area mode.
 - The return key now works in the initial "Welcome to AGS" dialog.
 - VOX files are now removed on the rebuild if you remove all the music
   or speech source files from the game folder.
 - "Add Action After This" now inserts where you click rather than adding at end;
   added "Add Action Before This" option as well.
 - Fixed MoveCharacter functions resetting character frame to 0 if they were
   already moving.
 - Fixed error if you tried to export more than 140 functions from the global
   script.
 - Fixed GetLocationName/ProcessClick not obeying the SetObjectIgnoreWalkbehinds
   and SetCharacterIgnoreWalkbehinds settings; and priority problem with
   objects over walkbehinds.
 - Fixed Winsetup.exe not working with paths with spaces in.
 - Fixed IsSoundPlaying while skipping cutscene.
 - Fixed crash importing old rooms with old-style animations.
 - Fixed an error in the script header bringing up the global script when you
   clicked Yes to fix it.
 - Fixed unhandled_event not working with type 4 (No Hotspot)
 - Fixed crash when creating a room message longer than 3000 characters.
 - Fixed crash when Alt+Tabbing in windowed mode in Windows 2000.
 - Fixed "out of sync" error after playing back a replay for 10-15 mins.
 - Fixed rare crash after loading a save game.

VERSION 2.51a, October 2002
 - Fixed error loading wave files.
 - Fixed walk-behind area 15 not being able to set a baseline.
 - Trying alternate method for Save & Run to work around Windows cache bugs.

VERSION 2.51, October 2002
 - Added support for plugins to allow people to extend AGS.
 - Added sprite mirroring support to views.
 - Added smooth scaling for walkable areas.
 - Added DisplaySpeechAt, IsInteractionAvailable, SetLabelColor and
   SetTextWindowGUI text script functions; game.room_width and
   game.room_height variables.
 - Added give-score dialog script command.
 - Added replay recording and playback (currently unsupported).
 - Added 'Number dialog options' and 'Dialog options go upwards on GUI' game
   settings.
 - Speeded up room loading times.
 - Added skip type 3 (key or mouse) to PlayVideo.
 - Added 'Hide Border' option for text and list boxes.
 - ListBoxSetSelected now scrolls the list if necessary to show the
   selected item.
 - Added option to Setup to force letterbox mode, for people where 320x200
   doesn't work.
 - Made Load Room the default action for the room list.
 - Increased max sprite folders from 60 to 80.
 - If Sierra-style speech and No Auto Remove, stops portrait animating once
   the default time has elapsed.
 - Allow negative co-ordinates in SetGUIPosition, to allow you to slide the
   GUI on from off-screen.
 - Fixed new-room dialog script not stopping screen edges from taking effect
   before fadein.
 - Fixed colour problems when importing some 256-col animating backgrounds.
 - Fixed palette flicker when changing between 256-col anim backgrounds.
 - Fixed editor crash with dialog scripts >200 lines.
 - Fixed MouseOver pic not being used when GUI is switched on.
 - Fixed small OGG speech files erroneously repeating.
 - Fixed Skip Cutscene not working during voice speech.
 - Fixed hit-testing order when characters were behind objects and so on.
 - Fixed IsSoundPlaying not working properly with MP3 and OGG sounds.
 - Fixed bug with Rebuild VOX Files and OGG speech.
 - Fixed rare crash when clicking dialog option.
 - Fixed erroneous "Colour depth doesn't match" error importing animated
   backgrounds.
 - Fixed "been in no rooms" error if game started in room >300.
 - Fixed problem saving game while a mouse-y popup GUI was displayed.
 - Fixed script blocks not getting removed when Clear All Actions was used.
 - Fixed characters occasionally getting stuck if movement was stopped halfway
   into a move.
 - Fixed editor getting minimized after testing the game.
 - Fixed Setup Game option from editor not saving settings to the right place.
 - Fixed @overhotspot@ not blanking out over empty areas.
 - Fixed Voice Only mode displaying blank text box with Sierra-style speech.
 - Fixed issue with area-specific character views messing up along the edge.
 - Fixed save games not working properly if saved in an extended room ( > 300)
 - Fixed script editor window losing focus when you switch away.
 - Missing speech files now write to log rather than exiting game.
 - Engine now quits gracefully rather than crashing if you use invalid
   walkable areas.
 - Fixed rare crash when saving a room.
 - Fixed Setup saving settings not then being used by the engine that run.
 - Upgraded allegro version, to hopefully fix black screen issues.

VERSION 2.5b, September 2002
 - Added StrSetCharAt text script function.
 - Added ability to use number keys 1-9 as shortcut to select dialog options.
 - Added ability to have text and image on GUI buttons. Note currently
   the text will always be in the top-middle of the button.
 - Fixed issue with AreCharObjColliding in 640x400.
 - Fixed rare random crash bug when a script function ended.
 - Fixed DisplayAtY and RawPrintMessageWrapped not working properly
   at 640x400.
 - Fixed "symbol table overflow" with very large global scripts.

VERSION 2.5a, September 2002
 - Fixed problem with hi-res walkbehinds in newly created rooms.
 - Fixed crash bug when importing characters.
 - Fixed crash bug occasionally when exporting GUIs.

VERSION 2.5, September 2002
NOTE: Graphical scripts and Animations have been removed completely from
this version - the engine can no longer run old rooms that used them.
NOTE: It is now IMPOSSIBLE for your game to be de-compiled - even by me.
Take special care to backup more in future.
NOTE: Back up your game before using this version, as many changes have
been made and it's possible that the upgrade may cause problems.
 - Totally re-written interaction editor, which now combines the old
   graphical scripts into the main interaction window.
 - Optimised drawing of large objects to improve frame rate.
 - New built-in script editor, with syntax highlighting, auto-complete
   and more!
 - Added OGG Vorbis support for music, speech and sound effects.
 - Added DisplayMessageAtY, FileIsEOF, GetMessageText, GetTranslationName,
   GetWalkableAreaAt, ListBoxSetTopItem, PlayMP3File,
   RawPrintMessageWrapped, RunInventoryInteraction and SetFrameSound text
   script functions.
 - Walk-behinds for 640x400 rooms are now 640x400 res, allowing proper
   walk-behind effects in hi-res. Note currently since there's no zoom
   feature it's very difficult to do this in the editor - best idea is
   to use the Import Mask feature.
 - Added option to set a sound effect for a view frame - should be useful
   for doing footstep sounds and so forth.
 - Added "player" alias to dialog script meaning current player character
 - Increased maximum characters in a game from 50 to 150.
 - Increased maximum frames per loop to 20 and loops per view to 16.
 - Increased maximum options per dialog topic from 15 to 30.
 - Increased maximum inventory items from 99 to 300.
 - Increased GUI button/label limit from 80 to 150.
 - Using "..." as text to DisplaySpeech or in a dialog script pauses the
   conversation briefly as if the characters are stopping to think.
 - In 256-color games, animating backgrounds now each get a different
   palette, so they don't all have to use similar colours to the first.
 - Added mouse wheel and middle button support.
 - Added "Save and Run" button to Setup.
 - Added 'Handle inventory clicks in script' option to game settings
   to enable you to handle clicks on inventory items in your script.
 - Added "set-globalint" dialog script command.
 - Made running at 85 Hz an option in Setup rather than forcing it,
   since TFT monitors / laptops can't do it.
 - Save games now save the changes made by Raw functions.
 - Added support for passing error message and line number to external editor.
 - Renamed IsVoxAvailable to IsSpeechVoxAvailable to avoid confusion.
 - "Revert to default fonts" now sets back fonts 0-2 to defaults.
 - GUI editor now only resizes a GUI button when you change its image.
 - Added right-click Copy Co-ordinates to main room display window.
 - SetNormalFont now affects built-in dialogs (quit/save/etc).
 - Transition from preload screen to first room now uses your preference
   rather than a forced fade-out.
 - Fixed end of MP3 speech getting cut off.
 - Fixed EXE icon not being applied to game window.
 - Fixed speech text positioning with tall GUIs.
 - Fixed editor scroll bars not updating when importing large background.
 - Fixed character talking colour having to be below 256.
 - Fixed translations of global messages 984-999 not working.
 - Fixed bug with AreCharObjColliding, and made it pixel-perfect.
 - Fixed translations of GUI buttons not working.
 - Fixed "Stack pointer not 0" error using arrays as local variables.
 - Fixed crash on finish of importing text dump.
 - Fixed Sierra-style speech appearing under large top GUIs.
 - Fixed issue with animated backgrounds with odd widths and heights.
 - Fixed "character[CHARID.animating" crashing compiler
 - Fixed MOD music getting disabled after playing AVI/MPG.
 - Fixed SetAreaLightLevel crash with using area 15.
 - Fixed Add Inventory interaction using Data instead of VAL for the value.
 - Fixed outline fonts not working for dialog options.
 - Fixed glitching sometimes when mp3 music looped.
 - Fixed text dump import resetting room options.
 - Fixed very rare crash bug when changing rooms.
 - Fixed game.bgspeech_game_speed to work properly.
 - Fixed GetMIDIPosition and GetMP3PosMillis during a skipped cutscene.
 - Fixed DisplaySpeech when character talking colour was 0.
 - Fixed "No MIDI music" setting playing music anyway.
 - Fixed false AnimateObject error message when using AnimateCharacter.
 - Fixed bug where speed of first frame of speech animation was wrong.
 - Fixed following character problem if you changed room before the
   follower got to the current one.
 - Minor editor bug fixes.
 - Changed MP3 decoder from Xing to mpg123 for licensing reasons.

VERSION 2.4b, July 2002
 - Added IsMusicVoxAvailable text script function.
 - Editor now checks whether a sprite is part of a view before letting you
   delete it.
 - Editor makes backup copy of old game file and sprite file before saving.
 - Un-checking the external editor now keeps the file name for future use.
 - Fixed crash with messages longer than 350 characters.
 - Fixed walking onto screen from off-edge if NewRoomEx was used.
 - Fixed editor crash if a character had no normal view.
 - Fixed crash on RunDialog use inside dialog_request - error msg instead.
 - Fixed strange behaviour if SetViewport was called from repeatedly_execute.

VERSION 2.4a, July 2002
 - Implemented fade in with hi-color games.
 - Screen edges are now ignored during Player Enters Screen, which allows
   you to move the character in from beyond the edge without it changing
   rooms afterwards.
 - Editor now warns if you rename a game directory to >8 characters.
 - Fonts now drawn smaller in editor if Don't Scale Up is selected.
 - Fixed SetSkipSpeech style 3 not being skipped in cutscenes.
 - Fixed editor crash if GUI width/height was set to 0.

VERSION 2.4, July 2002
NOTE: Graphical scripts have been removed from this version. You will
need to re-do them as text scripts. Sorry. Rooms with graphical scripts
will continue to work until you modify the room in the Windows editor at
which point the graphical scripts will be removed.
 - NEW! Windows-based IDE.
 - Added TTF font support.
 - Added support for game translations.
 - Added support for MP3 speech files and sound effects.
 - Added support for AVI and MPG video (Windows engine only).
 - Added sprite caching system to decrease engine memory use.
 - Added ability for player to skip cutscenes; see StartCutscene for info.
 - Removed old-style translations, and moved remaining built-in messages
   to global message slots 984-995.
 - Added CallRoomScript, EndCutscene, GetMP3PosMillis, GetTranslation,
   IsTranslationAvailable, MoveCharacterPath, PlayAmbientSound, 
   PlayVideo, SeekMP3PosMillis, SetCharacterProperty, SetLabelFont,
   SetMouseBounds, SetNextCursorMode, StartCutscene, StopAmbientSound,
   StrGetCharAt, StrToLowerCase, StrToUpperCase, and WaitMouseKey text
   script functions.
 - Increase limit to 6000 sprite slots, 300 views.
 - Changed names of functions InterfaceOff and InterfaceOn to GUIOff and
   GUIOn, since a lot of AGSers now weren't around when Interfaces were
   used, and so are getting confused with these function names.
   The old InterfaceOff and On will still work for the time being so you
   don't have to change any code, just try to use GUIOn/Off from now on.
 - Added a few new Windows engine Setup options.
 - Added option to draw inventory cursor hotspot dots.
 - Added [optional] words to Said parser.
 - Added (INVSHR) to draw small items at actual size rather than stretching.
 - Added missing "Pick up character" event, and added User Mode 8 & 9 events
   to character, object and hotspot interactions.
 - Music file load failure now lets you know via the debug log.
 - Added Alt+X as the new engine break key, to replace Ctrl+alt+end.
 - Added %d/%s support to DisplaySpeech.
 - @overhotspot@ now displays nothing while the wait cursor is in effect.
 - Changed name of AC2GAME.DAT to AC2GAME.AGS to work with explorer better.
 - Go To Screen now makes sure character is placed within screen edges on
   new screen.
 - Walkable area 0's zoom level is now used if a character walks through
   it with MoveCharacterDirect.
 - Fixed AnimateObject flashing up frame 0 of loop 0.
 - Fixed flickering and mouse cursor problems while displaying dialog
   options in Windows engine.
 - Fixed SetButtonPic not updating if cursor was over button at the time.
 - Fixed problem when walking off left of scrolling rooms.
 - Fixed text staying on screen too long sometimes with voice speech.
 - Fixed crash when walkable area 15 was used.
 - Fixed walkable area 15's zoom and light levels not working.
 - Fixed inverted colours on some graphics cards at 16-bit.
 - Fixed skipping cutscene with blocking Display() and talkie games.
 - Fixed character walking on the spot at end of movement sometimes.
 - Fixed crash when moving with certain walkable area configurations.
 - Fixed mouse cursor moving to right when clicking top of icon bar.
 - Fixed idle animation not releasing properly if speech started in the
   middle of it.
 - Fixed rare "error -2" crash when changing rooms.
 - Fixed strings overwriting each other in text script nested function calls.
 - Fixed mouse moving problem with windowed-mode Win engine.
 - Fixed speech text appearing under GUI when near top of screen.
 - Fixed Windows engine crashing when close button was clicked.
 - Fixed Dissolve screen transition.
 - Fixed messed up colours on some systems in 15-bit.
 - Fixed SetObjectIgnoreWalkbehinds going behind all objects.
 - Fixed AreCharObjColliding returning 1 when object was off.
 - Fixed GetSaveSlotDescription and ListBoxSaveGameList returning
   "Invalid Slot" after being run a few times.
 - Fixed "GUI unchanged when disabled" greying out text buttons.
 - Fixed being able to activate inventory items out of sight in custom
   inventory window.
 - Fixed walkable area 15's light and zoom settings not being saved.
 - Fixed various issues with sound in Windows engine.
 - Fixed crash when playing some 640x400 games at 320x200.
 - Fixed room loading crash bug if a message was longer than 300 characters.
 - Fixed compiler crash if you did  Display("Text",);  now prints an error
 - Fixed crash bug if pressed a key during a complex cutscene
 - Fixed MP3 glitching at very low frame rates (<10 fps)
 - Fixed positioning of QFG4-style dialog options box if DisplaySpeech
   text script function used instead of dialog script.

VERSION 2.31, March 2002
 - Added ChangeCursorHotspot, DisplayAtY, FileWriteRawLine,
   IsInterfaceEnabled, IsObjectMoving and UpdateInventory text script
   functions.
 - Added [ as line break character to GUI labels.
 - Added game.skip_display script variable.
 - Background speech text is now removed when a character starts talking
   properly.
 - The engine now attempts to spot you using an int as a buffer by accident.
 - GUIs are now drawn on top of all screen overlays.
 - character[].animating is no longer 1 while idle animation is playing.
 - Screen edges now only take effect while the game is not in Wait mode.
 - Fixed unhandled_event happening when an Any Click event was used.
 - Fixed StopDialog not working at all.
 - Fixed parse error using ',' inside array index.
 - Fixed activating an interaction just before character leaves the screen.
 - Fixed dialog options GUI being too wide when short options.
 - Fixed mouseover picture on GUI buttons flashing up on InterfaceOn.
 - Fixed SetCharacterIdle if an idle animation was already playing.
 - Fixed glitch with pixel-perfect click detection at edges of sprites.
 - Fixed idle animations with following characters.
 - Fixed text colors when running at 15-bit.
 - Fixed lack of border around standard text window.
 - Fixed idle animations kicking in when they shouldn't.
 - Fixed Any Click response scripts overriding earlier interaction scripts.
 - Fixed DOS engine leaving artifacts when moving from 320x240 to 320x200.
 - Fixed some issues with extra animations playing after ReleaseCharView.
 - Fixed MP3 music skipping in ShakeScreen and during room loading.
 - Fixed repeating multi-loop animations jumping back to wrong frame.
 - Fixed clicking at current location stopping idle animation.
 - Fixed wait cursor not appearing when clicking option in dialog.
 - Fixed various pathfinder issues.
 - Fixed text in normal dialog box being transparent.
 - Fixed LEC inventory not updating when scrolling up/down in list.
 - Fixed users typing [ into text boxes.
 - Fixed SetCharacterWalkBehinds going in front of characters.
 - Fixed SetCharacterIdle not kicking in for a second.
 - Fixed "Error initializing sound" when "No sound" selected.
 - Fixed speech being left on screen if followed by normal textbox.
 - Fixed backspace not working in input boxes.
 - Moved dialog options window across to right when using full-screen pics.
 - Restricted FileOpen to only allow access to files in game directory.
 - Disabled F1 in roomedit because it could crash the program.

VERSION 2.3, January 2002
NOTE: This version of AGS has undergone major changes, and so the engine can
no longer run old games. You need to load and save your game in RoomEdit to
update it.
 - New pathfinder, which should generate better routes.
 - Added ability to call global script functions directly from local scripts,
   and script header file. See section 4.4.2 in the manual for information.
 - Added basic text parser, works similarly to the AGI one. See section 4.6
   in the manual for more information.
 - Added List Box GUI control.
 - Added ChangeCursorGraphic, GetCharacterAt, GetGUIAt, GetGUIObjectAt,
   IsGUIOn, IsKeyPressed, ListBoxAdd, ListBoxClear, ListBoxDirList,
   ListBoxGetItemText, ListBoxGetNumItems, ListBoxGetSelected,
   ListBoxSaveGameList, ListBoxSetSelected, MoveToWalkableArea, ParseText,
   RawClearScreen, RawDrawImage, RawDrawLine, RawDrawTriangle, RawPrint,
   RawRestoreScreen, RawSaveScreen, RawSetColor, RunCharacterInteraction,
   RunHotspotInteraction, RunObjectInteraction, Said, SaidUnknownWord,
   SetCharacterBaseline, SetCharacterIgnoreLight,
   SetCharacterIgnoreWalkbehinds, SetObjectClickable,
   SetObjectIgnoreWalkbehinds, StopMusic and TintScreen text script
   functions.
   Removed CallGlobalScript, CaptureScreen, CapturedPrint and EndCapture as
   they are now obsolete.
 - Optimised GUI drawing to eliminate LEC-style slowdown.
 - Added on_event text script event function, to let you have a common script
   to be run whenever the player enters a new room, and so on. Manual 4.4.1.
 - Added option to make characters turn to face the new direction before
   starting to walk.
 - All background music MP3 files can now be put into a special MUSIC.VOX file,
   similar to the way SPEECH.VOX works.
 - Finally fixed the sound selection list boxes in AGSWin setup.
 - Sierra-style inventory now scrolls if there are too many items to fit, and
   right mouse button cycles between Select and Look modes.
 - Added QFG4-style speech (black screen with talking view on left hand side).
 - Added "ignore lighting" and "no turning" character options to roomedit.
 - FaceLocation/FaceCharacter now use diagonal loops where available.
 - AGSWin now integrates itsself into explorer so you can double-click .AGS
   files to run them. This means you can rename AC2GAME.DAT to YOURNAME.AGS
   and double-click it to run the game.
 - Added (INVNS) which does the same as (INV) except that it does not stretch
   the item picture.
 - Added inventory interactions to unhandled_event.
 - Added game.total_score text script variable.
 - Edges of text windows can now be transparent.
 - If the mouse cursor has been changed from the default for the current mode,
   the wait cursor will not show when Wait() is called.
 - Save games can now be loaded if the VOX file has been added/deleted since
   the position was saved.
 - Upped limit to 19 hotspots (sorry, quick fix, more later).
 - Roomedit now allows cycling through all skip speech modes.
 - Pressing key does not now skip speech text if the icon bar is popped up.
 - Idle loops are no longer chosen at random - instead, the character's
   current loop number is used.
 - Added script header file, which is included into all scripts to prevent
   having to manually import functions into every room.
 - Added new-room dialog script command.
 - Fixed script problem with importing strings and using arrays.
 - Character export/import now deals with idle views.
 - Added "top-right" and "bottom-right" transparent corner for sprite import.
 - QFG4-style speech window now shrinks text window to fit text.
 - Speech text uses GUI fgcol instead of character talk color if a background
   text window is used for speech.
 - Changed the way Test Game works, to help with bugs when return to roomedit.
 - Fixed hi-colour PRELOAD.PCX not being shown.
 - Fixed "Object 9 can't move".
 - Fixed MP3 volume not being altered if the track is currently playing.
 - Fixed demo game using LEC interface for dialog options.
 - Fixed GetMIDIPosition returning -1 when a song was playing.
 - Disabled Ctrl-V while speech text is displayed.
 - Fixed text color problem in 15-bit colour.
 - Fixed SetGUIPosition in large (>320x200) rooms.
 - Fixed SetObject/CharacterTransparent with full transparency level.
 - Fixed AnimateCharacter if an idle loop was running at the time, and other
   idle animation problems.
 - Fixed transparent edges for text windows.
 - Fixed nasty crash on startup in Win engine.
 - Fixed problem going to 640x400 from 640x480 full screen room.
 - Internal info: upgraded both engines to Allegro 4.0 (from 3.1 DOS & 3.9.37
   Win) and switched to using ALMP3 v1.5 MP3 player.

VERSION 2.22, December 2001
 - Added GetMIDIPosition, IsButtonDown, SeekMIDIPosition, SetObjectBaseline,
   SetNormalFont, SetSpeechVolume, SetSpeechFont and SetSpeechStyle text
   script functions.
 - Added add-inv, set-speech-view dialog script functions.
 - Added Text Box GUI control.
 - Added text dumper to roomedit, to allow easy game translation and
   spell-checking.
 - Added option for QFG4-like dialog options display (ie. in text window).
 - Added option to draw text box behind sierra-style speech, aka KQ6.
 - Added ability to set hotspot for inventory mouse cursors.
 - Added "Jump to view" button to Visual, Views tab in roomedit.
 - Added buttons to change zoom level by +/- 1 as well as +/- 5.
 - Added safety checks to file I/O functions to stop engine crashing
   if invalid data is supplied.
 - Added game.following_room_timer, game.speech_text_gui, game.swap_portrait
   and game.text_shadow_color script variables.
 - Added F12 to take screenshot in roomedit.
 - Added option to PlayFlic to turn off stretching to full screen.
 - Added system.windowed script variable.
 - Added datadir section to acsetup.cfg to allow data files to be loaded
   from alternate directory (eg. CD-ROM, etc).
 - Upped GlobalInts to 300.
 - Upped vox file limit to 2000 files.
 - Upped to 20 SetTimers for the script.
 - Jibbled following characters a bit so if you don't join on a screen edge,
   they will appear where the player entered a few seconds later.
 - Text window background is now used when specifying it for dialog options.
 - Changed music search order to MP3, WAV, MID, MOD, XM.
 - Split resource files (.001, .002, etc) are placed in parent folder.
 - Windows engine will now continue anyway if it can't init sound.
 - Disabled Ctrl+V during Wait() statements cos it could desync the music.
 - Colour 0 for dialog options GUI now does transparent.
 - Fixed SetCharacterClickable.
 - Fixed cursor staying on old item after combining items.
 - Fixed S3M's not being included in EXE.
 - Fixed SetScreenTransition's effect only lasting for one transition.
 - Fixed mouse cursor animate only over hotspot problem in 640x400.
 - Fixed graphic overlay positioning at different resolutions.
 - Fixed mp3 skipping when mouse button held down in save/restore dialog.
 - Fixed SetAreaLightLevel adjustments not being saved in save games.
 - Fixed mouse cursor not skipping speech text if over GUI.
 - Fixed random idle loop being chosen if it is a continued long animation.
 - Fixed cursor changing back to arrow after looking at item in Sierra inv.
 - Fixed pressing extended keys (eg F1-F10) when message displayed and
   while room loading.
 - Fixed message editor being all caps (in 2.22 beta)
 - Fixed SetObjectBaseline (from 2.22 beta4)
 - Fixed the Debug Give All Inv function giving you item 0.
 - Fixed "table overflow" when having over 200 functions in global script.

VERSION 2.21, August 2001
 - Added Debug option to display FPS during game.
 - Added windowed option for Windows engine
 - Added GetObjectGraphic, IsTimerExpired, IsVoxAvailable, SetAreaLightLevel,
   SetInvDimensions, SetRestartPoint, SetTimer and WaitKey text script
   functions.
 - Added ability to delete GUI objects.
 - Inventory items are listed in the order the player picked them up.
 - Changed display initialization to hopefully fix colour problems.
 - Less severe errors (eg. "sound not found") are now logged to a WARNINGS.LOG
   file in the game directory, rather than quitting the engine.
 - Rewrote a lot of code to avoid slowdowns in 15-bit colour mode.
 - Made SetPlayerCharacter not change room if the new character is in the
   current room.
 - Added "no timeout; only on mouse-click" option to SetSkipSpeech.
 - Added "press any key or click mouse to skip" option to FLIC player.
 - Re-instated NewRoom in dialog_request.
 - The music volume is now decreased while speech is played.
 - If there is a compile error, it cancels the quit in roomedit
 - Changed SetSoundVolume to not affect MP3/XM files.
 - Made save game slots >=100 not appear in save list.
 - Fixed game instability when rooms over 600 height were used
 - Fixed sound issues with restoring a save game.
 - Fixed problem with character[].name in text script.
 - Fixed character scaling as he walks off the screen.
 - Fixed MP3 not playing during FLIC animation.
 - Fixed script problem with character names in strings.
 - Fixed PRELOAD.PCX looking all messed up.
 - Fixed multi-loop object animations not cycling back to first loop.
 - Fixed scaling when character walks into non-walkable area.
 - Fixed script not allowing negative initial values for variables.
 - Fixed "No save/load" room setting to now block the save and restore.
 - Fixed music volume spiking in between two speech lines.

VERSION 2.2, May 2001
NOTE: There have been major under-the-hood changes to AGS this version, so
unfortunately you'll need to upgrade all your room files. To do this, load
each one into RoomEdit and save it again. Sorry.
 - Completely re-written text script compiler and interpreter. Let me know
   if you have any problems with scripts that worked before.
 - Added option to split up resource files.
 - Added DisplaySpeechBackground, IsMusicPlaying, IsObjectAnimating,
   MergeObject, SetCharacterTransparency, SetInvItemPic, SetScreenTransition
   and UpdatePalette text script functions; removed SetPalette and GetPalette.
 - Corrected GetObjectAt (and consequently the built-in hit-testing) behaviour
   when there are two objects on top of each other - now it should always
   pick the one that's visible on top.
 - Added "Dissolve" screen transition.
 - Increased sprite limit from 1900 to 5000.
 - Overlays are now correctly restored when loading a save game position.
 - Added option to make a GUI non-clickable for transparent overlay GUIs.
 - Added unhandled_event type code 4, which occurs when the player clicks
   on nothing (ie. no object, character or hotspot at the location).
 - Added "Cancel" option to roomedit's "save changes?" dialog, and also
   made it appear if you load a new room in.
 - Added option to export sprite slot graphics.
 - Added SCI palette importing.
 - Fixed bug with tiled sprite imports.
 - Fixed crash when adding 50 buttons to the GUI, and upped limit to 80.
 - Fixed positioning of dialog topic options when not locked to GUI position.
 - Fixed VOX corruption with >200 files.
 - Fixed GUI transparent background pictures coming out pink, and offset of
   background images being wrong.
 - Fixed mouse area bug in Windows engine at full-screen 320x240.
 - Fixed SetButtonPic not updating until mouse moves over it.
 - Improvements to Windows engine, including it now cleans up its temp files.

VERSION 2.15 SR-3, March 2001
 - Added GetGameSpeed, MoveCharacterBlocking, SetWalkBehindBase text script
   functions.
 - Added option to have bullet-point graphic for dialog options.
 - Auto-speech now works with standard Display() command (uses player
   character's voice).
 - Fixed Windows engine page fault on startup, and fixed mouse detection.
 - Fixed DisplayMessage error with inventory events.
 - Fixed '[' being displayed sometimes instead of forcing new line.
 - Fixed multi-loop talking view getting stuck on last loop.
 - Fixed interaction window going wrong colour.

VERSION 2.15 SR-2, March 2001
 - Added SetCharacterClickable, StopDialog text script functions.
 - Added game.sierra_inv_color text script variable.
 - Now any room >= 640x480 will be full-screened in letter-box mode, allowing
   full-screen scrolling 640x480-res rooms.
 - RoomEdit now displays the room co-ordinates at all times in the bottom-
   right hand corner, so you don't need to use Ask Position.
 - Made NewRoom give an error message instead of crashing if called from
   the dialog_request function.
 - Speeded up room loading a bit.
 - Fixed bug where clicking and dragging off pop-up GUI button paused game.
 - Fixed GUI "Set Mode 4" to work correctly when the player has no inventory.
 - Fixed character frames being reset on restore game.
 - Fixed talking views to allow having one loop only for all directions.
 - Fixed go-to-next-loop to work in sierra-style speech windows.
 - Fixed losing first and last character on the line when using '[' symbol.
 - Fixed sierra-style speech text coming up at random positions.
 - Fixed NewRoom in game_start loading first room twice.

VERSION 2.15 SR-1, February 2001
 - Added MP3 support to Windows engine, thanks to Javier Gonzalez.
 - Added option to stop current sound effect: call PlaySound(-1);
 - Added text script functions GetHotspotAt and GetObjectAt.
 - Finally fixed walking speed 1. I think.
 - Fixed it so clicking the hotspot 0 (the background) doesn't trigger
   unhandled_event.
 - Fixed audio CD continue playing after exit.
 - Fixed speech going off the top of the screen.
 - Fixed memory leak in room-switching code.

VERSION 2.15, February 2001
 - Added auto-speech support (see section 4.1.1 in the docs).
 - Added support for transparent objects (hi-color only at present).
 - Added FollowCharacterEx, SetObjectTransparency, SetSkipSpeech and
   SetVoiceMode text script commands.
 - Added MOD/XM support to Windows engine.
 - Added feature so that in letter-box mode, 640x480 scenes are full-screen.
 - Added a way to link loops together to create animations with more frames.
 - Changed positioning of speech text so it's always above the character.
 - Removed dithering feature from RoomEdit graphic importing.
 - Fixed prevroom text script variable for following characters.
 - Fixed "DisplayMessage: data column..." error with graphical scripts.
 - Fixed rare crash when restoring save game.

VERSION 2.14 SR-5, February 2001
 - Stopped SetCharacterView/SetObjectView changing the loop number to 0.
 - Made ReleaseCharacterView fix the loop number if it would turn into a cup.
 - Added option to import exact palette slots for scenes (no remapping).
 - Fixed color screwup when importing 256-colour sprites into hi-col game.
 - Fixed Characters scroll bar in roomedit.
 - Fixed bug with 15 folders in sprite manager.
 - Fixed "First time enters screen" happening before the fade-in.
 - Fixed pixel-perfect click detection in hi-color.

VERSION 2.14 SR-4, February 2001
 - Added option for mouse cursor to animate only when over a hotspot.
 - Added text script functions GetObjectX/Y, GetViewportX/Y.
 - Fixed problem with walking speed 1 jumping to destination.
 - Fixed problem with scripts in Player Enters Screen.
 - Fixed restore game problem.

VERSION 2.14 SR-3, February 2001
 - Added FollowCharacter and SetCharacterIdle text script commands.
 - Added idle animation support.
 - Increased max views from 100 to 200.
 - Fixed bug with room change in repeatedly_execute.
 - Fixed problem with non-blank first frames in FLC files.

VERSION 2.14 SR-2, February 2001
 - Added "Player leaves screen" room event.
 - Added "Other click on inventory" inventory item event.
 - Added SetActiveInventory text script function.
 - Fixed problem with screen being visible on "Player enters screen" event
   in hi-colour.
 - Increased max dialog messages from 900 to 2000.
 - Roomedit creates a backup of your sprite file in case there is a problem
   loading the new one.
 - Fixed MIDI music.

VERSION 2.14 SR-1, January 2001
 - Added text script function IsSoundPlaying.
 - Added "GUI unchanged when disabled" option, which doesn't grey out
   or remove any buttons when the user input is disabled.
 - RoomEdit now generates a custom SETUP.BAT, replacing the old "AC.EXE"
   calls with your game's EXE name. This should make it a lot less confusing.
 - MP3 music now takes priority over MIDI music, so you can include MP3 files
   in a seperate zip file which users can optionally download and hear better
   quality music.
 - Fixed Text Window checkbox missing in GUI Setup.
 - Fixed problem with MoveCharacterDirect and off-screen co-ordinates.

VERSION 2.14, January 2001
 - Added slider control type to GUIs (see section 4.2.5 in the manual).
 - Added text script functions GetSaveSlotDescription, GetSliderValue,
   MoveCharacterStraight, ReleaseViewport, ResetRoom, RestoreGameSlot,
   SaveGameSlot, SetSliderValue and SetViewport.
 - Added ability to set light levels for walkable areas - see section 3.3.6
   in the docs for info.
 - Increased max overlays to 8 at a time instead of 3.
 - Outline fonts on GUIs now work.
 - Added ability to use custom icon for Windows EXE file - see section 4.3.1
   in the docs for info.
 - The "you are carrying nothing" message is now taken from global message 996
   rather than from the language file, which allows you to customize it.
 - Fixed character carrying on moving when talking if no talking view.
 - Added ability to specify character in Data column for global messages.
 - Added control panel to demo game, and fixed lockup with the slime.
 - Roomedit now remembers which folder you were in for each different type
   of file, so you don't save a room file to your scene folder by accident.
 - The GUI editor now displays the control type in the properties box.
 - Changed the "Load_Room: File not found" message to be more descriptive.

VERSION 2.13 SR-3, December 2000
 - Fixed MoveObjectDirect not working.
 - Fixed "INI_Lib" error message problem.
 - Fixed inventory window messing up after combining two items.
 - Fixed sierra-style speech window staying up after finished talking.
 - Fixed crash when deleting some room script functions.
 - Fixed importing walkable area mask bitmap in hi-colour games.
 - Fixed arrow keys and F11/F12 in Windows engine.
 - Fixed problem with mouse cursor staying as pointer when over GUIs.

VERSION 2.13 SR-2, December 2000
 - Added option not to use diagonal frames for characters.
 - Fixed FLC playing problem in hi-colour.
 - Fixed restore & restart game bug.
 - Removed ability to use local messages in global interactions, since they
   weren't supposed to work anyway.

VERSION 2.13 SR-1, November 2000
 - The Windows engine now uses your game's name instead of "Adventure Game
   Studio" in the title bar.
 - Fixed problem with the wrong walking loops being chosen.
 - Fixed problem with Windows engine not playing sound effects.
 - Fixed problem with FLC player.
 - Fixed roomedit returning from Test Game mode.

VERSION 2.13, November 2000
 - Windows engine is finally complete!
 - Increased local message limit to 100 per room.
 - Removed inventory item 0 since it didn't work.
 - Added text script functions CreateGraphicOverlay, GetBackgroundFrame,
   MoveObjectDirect, SetTextOverlay, FileReadRawChar, FileReadRawInt,
   SetGUIPosition.
 - Roomedit now converts all imported sprites to the game's color depth,
   and also keeps 256-colour sprites looking good when imported into a hi-
   color game.
 - Added diagonal walking animation support for characters. See section 3.2.7
   in the manual for which loop means which direction.
 - Added ability to specify game data file on command line.
 - Added ability to display current inventory item on GUI button.
 - Added option to not scale up fonts in high resolutions.
 - The current MOD track is now saved in the save games.
 - Fixed problem with walk-behinds in animating background rooms.
 - Fixed crash in roomedit with Edges and Ask Position.
 - Fixed save game bug where current frame of background wans't saved.
 - Fixed dialog positioning problem when roomedit runs in hi-resolution.
 - Fixed animation editor Set object view problem with main character.
 - Fixed crash when clicking in empty list box in Save Game dialog.

VERSION 2.12, August 2000
 - Added text script functions GetTime, SetButtonPic, StringToInt,
   CreateTextOverlay, MoveOverlay, RemoveOverlay.
 - Added "narrator" as a character name to dialog script, to enable you to
   have lines of dialog in the pop-up box rather than as speech text.
 - Roomedit now makes a backup of your sprite set before saving, so you don't
   lose much if it (very rarely) crashes.
 - Roomedit now tries more screen resolutions, should avoid "cannot setup
   display mode" error.
 - The currently playing music is now saved in the save games.
 - Fade Out now works in hi-colour (fade in doesn't yet though).
 - Fixed black covering background when using Undo.
 - Fixed icon bar popping-up briefly at start of game.
 - Fixed transparent Sierra-style text windows in hi-colour.
 - Fixed mouse bounding at bottom of screen in roomedit in hi-colour.
 - Fixed "goto-dialog 0" not working.
 - Fixed pink background of hi-colour objects in inventory.
 - Fixed bug in AreCharactersColliding with hi-res mode.
 - Fixed bug where 640x400-sized 320x200-res scrolling rooms didn't scroll.
 - Fixed bug where mouse cursor wasn't reset after using last of inventory.

VERSION 2.11 SR-2, July 2000
 - Fixed non-transparency when using hi-colour frames for character.

VERSION 2.11 SR-1, July 2000
 - Allowed numerical digits in game name as well as letters.
 - Fixed mouse cursor disappear after testing game in hi-color.
 - Removed floppy drives from Open dialog box, to stop Win2k slowdown.

VERSION 2.11, July 2000
 - RoomEdit now runs at your game's color depth, so you can see what all
   the graphics look like properly.
 - You can now use any color (not just the first 16) for GUI colours: take
   a look at the Palette screen and you can find out the number for a custom
   colour of your own.
 - Fixed import GUI and character bug with hi-colour graphics.
 - Fixed bug with importing animating hi-colour backgrounds.
 - Added Bulgarian translation by Alexander Alexandrov.
 - Added Slovenian translation by Janez Kranjc.

VERSION 2.1, July 2000
 - New text script functions SetCharacterSpeed, SetTalkingColor,
   AreCharactersColliding, DisableHotspot, EnableHotspot, StrFormat,
   FlipScreen, SeekMODPattern, InputBox, GetLocationType, CallGlobalScript
 - Added hi-color (16-bit colour) support - see section 3.2.11 in the manual
   for information.
 - Added room interaction event "Any click on object".
 - Added "pick up" as an extra normal mode - you can, of course, use it
   to mean whatever you want. Cursor mode 5 ("DENIED") represents it (mode 5
   is no longer used by the engine so it's spare for this use).
 - Added special tokens for use in global and room messages, which allow
   you to insert variable values into the message. See section 3.2.4 in the
   manual for how to use these.
 - Added "don't automatically lose inventory" option, which turns off the
   default behaviour of losing the item when a "Use inventory" event happens.
 - The unhandled_event function is now called when the player uses an
   unhandled inventory item on a hotspot/object (previously it was only
   called if there was no "Use inventory" response defined).
 - Added ability to import tiled sprites from a source bitmap file. See
   section 3.2.3 in the manual for how to use this feature.
 - Added "Test game" button to Game, Main tab of roomedit, which shells AGS
   and runs your game without you leaving the editor.
 - A Lucasarts-style GUI is now included in the AGS distribution - just import
   the LUCASART.GUI file to use it. Thanks to Jeremie Lumbroso.
 - New game has 1 dialog topic by default (stops bug where if you didn't
   create a topic, but added options then saved it was lost).
 - Fixed bug where hi-res sprites in GUI editor showed up double size.
 - Fixed crash in Characters tab when displaying views with >4 loops.
 - Random now returns number from 0 to MAX instead of (MAX-1).
 - Added Polish translation by Jakub Offierski.
 BUG FIXES SINCE v2.1 PREVIEW RELEASE:
 - Fixed walk-behinds in hi-colour rooms.
 - Fixed import/export GUI and import/export character with hi-color graphics,
   plus it now exports the GUI script as well as layout.
 - The pink background is not shown in roomedit with hi-color room objects.
 - Fixed cursors tab in roomedit with hi-color cursor.

VERSION 2.07 SR-4, May 2000
 - Fixed object drawn behind walk-behinds when it shouldn't be.
 - Fixed NewRoomEx (actually fixed this time) with invalid exits.
 - Fixed InterfaceOff screwing the game up if the interface was already off.
 - Fixed screw up with save/load when using different player character.

VERSION 2.07 SR-3, May 2000
 - Fixed object drawn behind walk-behinds when it shouldn't be.

VERSION 2.07 SR-2, May 2000
 - Added "unhandled_event" text script event, allows processing of events
   which the Interaction window doesn't handle.
 - Fixed problem with New Game, where the interface script wasn't set up
   properly.
 - Fixed NewRoomEx, to allow co-ordinates above 320x200 on scrolling rooms.
 - Fixed sprite import in hi-res screwing up palette.
 - Fixed "Add new font" crashing roomedit.

VERSION 2.07 SR-1, May 2000
 - Added text script functions ShakeScreen, SetMusicMasterVolume and
   SetSoundVolume, RemoveWalkableArea, RestoreWalkableArea
 - Added option to dialogs for the character to not say the option clicked.
 - Added option to not change inventory cursor to the item's graphic.
 - Right-clicking an inventory item in the lucasarts-style inventory now
   simulates a left-click in Look mode.
 - Slightly modified speech display, so it's always above the character's
   head instead of on top of it.
 - In dialog, if the character's speech colour is the same as the highlited
   option colour, the highlight colour will be changed to purple.
 - Fixed bug with running text scripts for inventory items.
 - Fixed bug where "Buttons off when disabled" didn't work.

VERSION 2.07, April 2000
 - Completely re-written interface system - now called the GUI system instead.
   You may need to make some changes for your game to continue working with
   this version - see section 4.2.5 in the manual for what's changed.
 - Added text script functions GetCurrentMusic, SetMusicRepeat,
   SetMusicVolume, MoveCharacterDirect, ChangeCharacterView, PauseGame,
   UnPauseGame, LoseInventory, SetLabelText, FileWriteInt and FileReadInt.
 - Fixed bug where forward frame was displayed breifly whenever you walked
   anywhere.
 - Fixed bug with hit-testing on scaled characters.
 - Fixed bug with "import new" and 640x400 sprites in roomedit.
 - Fixed the "room data segment size has changed" bug.
 - Roomedit now gives error message instead of quitting if a background
   import fails.
 - Fixed bug where character kept on moving while in talking view for speech.
 - Fixed bug where DisableInterface/EnableInterface didn't work.
 - Slightly improved room loading time.
 - Stopped the engine printing "File not found" when exiting game.
 - Added S3M music support.
 - Added technical info, for the programmer types out there. (techinfo.txt)
 - AGS now has a domain name: www.adventuregamestudio.co.uk
 - Removed the Windows version until I can sort out the bugs in it.

VERSION 2.06 SR-1, March 2000
 - Added support for importing JASC (Paint Shop Pro) palette files.
 - Fixed bug where roomedit crashed if your game contained more than 80 files.

VERSION 2.06, March 2000
 - Added character numbers, so that characters can be moved/animated using
   the Animation Editor. Just use the character's number +100 as the object
   number. For example, use "Move To 100,50" with Object as 102 will move
   character 2. The Character Editor shows the character numbers.
 - Finally fixed the text size in high-resolution modes.
 - Added scroll bar to character editor, so you can now have up to 50 instead
   of 15 characters.
 - Added "Enters screen after fade-in" event, which works like the "Player
   enters screen" event except that it occurs after the screen has faded in.
 - Added text script functions AreCharObjColliding, Wait, DisableInterface,
   EnableInterface, SetBackgroundFrame, SetGlobalInt, GetGlobalInt.
 - Added option for instant-change between rooms instead of fading.
 - RoomEdit now remembers the last directory you were in with the file
   selector, instead of always resetting to the game directory.
 - Added 320x240 and 640x480 letterbox-mode option.
 - Added WAV background music support.
 - Fixed bug with CDAudio that was causing crashes.
 - Fixed bug which crashed sometimes when speech was displayed.
 - Fixed bug which gave screenful of cups in sprite manager (I think...)
 - Removed the "delete sprite" option because it was causing too many
   problems. To delete a sprite, simply import a 1x1 sprite on top of it.

VERSION 2.05 SR-2, February 2000
 - Fixed bug in roomedit with animating backgrounds
 - Allowed to get back into roomedit if error with dialog script; however,
   you must fix the error before you can save the game.
 - Fixed bug with animating background scenes in usergame.exe

VERSION 2.05 SR-1, February 2000
 - Added Undo feature to roomedit.
 - Added option to import/export dialogs to roomedit.
 - Fixed bug with full-screen preview in roomedit at 640x400 resolution.

VERSION 2.05, February 2000
 - Added animating background support! See section 3.3.5 in the docs.
 - RoomEdit now uses a crosshair mouse cursor when drawing walk-behinds and
   hotspots, to enable you to better see what's under the cursor.
 - Added support for importing a BMP/PCX file as the mask for hotspot/walk-
   behind/etc. See section 3.3.4 in the manual for information.
 - Added support for export/import of characters, which allows you to share
   characters between games and with others on the internet. The end of
   section 3.2.7 in the manual describes this.
 - Added support for importing JPGs as background scene.
 - RoomEdit now allows scrolling up/down the inventory list, so you can have
   more than 15 inventory items (max 99 now).
 - Customizable text speech speed - see the  game.text_speed  global variable
   description (section 6.4 of the docs).
 - Fixed bug where Sierra-style inventory window messed up in various
   circumstances.
 - Improved the room loading speed.
 - Added text script functions SetObjectPosition and AreObjectsColliding.
 - Added GetPalette and SetPalette text script functions, to allow you to
   do things to the entire palette. New variable type "palette", which you
   use with these functions.
 - Added Italian translation by Mario.
 - Removed the room password option: it was a left-over from AC v1, and now
   that you can build an exe file of your game, it's not really needed.
 - NOTE: The Windows version has not been updated to 2.05 - the included
   acwin.exe is still the v2.04 version. This is due to time constraints and
   pressure to release 2.05 as soon as possible; the Win version still has
   the room changing bug, so it's not worth including until I work on that.

VERSION 2.04, January 2000
 - Added Sierra-style close-up-face option for speech display in conversations.
 - Added object naming, so that moving the mouse over objects in a Lucasarts
   interface displays a proper name, instead of "OBJECT 0".
 - Added option to make a character invisible to the hit-testing, so that the
   main character can't be interacted with (like the Lucasarts games).
 - Added pixel-perfect click detection option, so that clicking a transparent
   pixel of an object/character doesn't trigger the interaction.
 - Added option to use top-left pixel of sprite as transparent colour instead
   of just colour index 0.
 - Added support for using a background picture for text windows. To use this,
   just go to your text-window interface in the Interface Editor, then right-
   click the background, choose Properties, then click the "COL/PIC" button
   and type the slot number you want to use. The picture will NOT be tiled
   or stretched (but it will be clipped to fit the window), so you should make
   sure it is large enough for the biggest text windows (about 250x100 should
   be enough).
 - Added ability to delete sprites in the Sprite Manager.
 - Added SaveScreenShot text script function.
 - Added option to treat Walk mode as a normal mode, so that the character
   isn't automatically moved but instead a normal event is triggered when
   you click to move.
 - Modified RoomEdit so that when you click a "Display Message" interaction
   command, it provides a list of messages in the room to choose from, instead
   of prompting you for the message number. If there are no messages it will
   ask for the number, just like before (this means you can still set up the
   interactions before actually typing the messages in, if you want to).
 - Fixed bug where the player lost the inventory item when Data 99 was used.
 - Made some improvements to the beta of the Windows version.

VERSION 2.03, November 1999
IMPORTANT: Your game, and all your room files, need to be upgraded to use the
latest version. To upgrade, simply load and save in the Room Editor. You must
do this for EVERY ROOM in your game. Sorry, but it's to support the upcoming
Windows version.
 - Allowed creation of very wide (eg. 700x200) lo-res scrolling rooms.
 - New text script functions MoveCharacterToHotspot, DisplaySpeech, NewRoomEx.
 - Lucasarts-style inventory window.
 - Changed background importing - now, it just asks what resolution the
   drawing is supposed to be, instead of trying to work it out. This allows
   scrolling rooms of any size in any resolution.
 - Changed the way the Room Editor works with games - instead of running it
   from the directory which the game is in, it creates each game a
   sub-directory below the main RoomEdit/AGS directory. This makes it much
   easier to edit the demo game, and should solve problems with files not
   being found and so on. What this means for you is that if you are working
   on a game with its files in the RoomEdit directory, create a sub-directory
   and copy all your game files (*.crm, ac2game.*, etc) into it.
   Another result of this is that the usergame.exe is now called by the game
   directory's name, and placed in the main AGS directory.
 - Non-player objects can now be moved with the animation command "Move to",
   and also with a new text script command MoveObject.
 - Added graphical script command "Run dialog" (it's under "Remove object" if
   you can't find it).
 - Added "Save room" as well as "Save room as" to Room Editor. This option
   saves back to the same file you loaded from, which is quicker than having
   to select the right file to save to every time.
 - Slightly modified the background scene remapper: it now puts the background
   colours starting from the end of the palette and working backwards; this
   makes it easier if you want to increase the number of sprite colours part
   way through making a game. Otherwise this change is transparent to you.
 - Added ability to "lock" objects in the Room Editor. While an object is
   locked, it cannot be moved around the screen. Useful if you keep getting the
   wrong object when you're trying to move a different one.
 - Increased a few limits: now 100 views, 200 dialog topic, 900 dialog messages.
 - Fixed bug where "music0.mp3 not found" flashed on the screen breifly.
 - Fixed the interface text @overhotspot@ to include object & character names.
 - Included beta version of Windows port! See AGSWIN.TXT for information.

VERSION 2.02, September 1999
 - Fixed bug where you were unable to save the game.
 - Character names can use lower case
 - New option "Player can't skip speech" prevents the player clicking away
   conversation text, like the way the Lucasarts games won't let you.
 - Character walks to the walk-to point of a hotspot in Walk mode (as well
   as use/speak mode). This makes it more like the Lucasarts interface.
 - Fixed SCI font importing bug, and added an Auto-Recover feature so that if
   it does crash in future, then it won't permanently disable the Fonts tab.
 - Added sprite import support for 640x400-resolution object graphics.
 - Added crash protection to the StrCat function, so that it won't add text
   past the maximum string length instead of crashing the system.
 - New MIDI driver: Software wavetable synth, uses the digital sound driver
   to play MIDI music using General MIDI patch set. By using this driver, your
   MIDI music can sound the same on ALL sound cards. See section 2.2.1 in the
   docs for information.
 - Changed the way that the mouse cursor hotspot setting works - it's clearer
   what's going on now.
 - Added engine debugging options. See the TECHDBG.TXT file for information.

VERSION 2.01, September 1999
NOTE: You will need to upgrade your game to use the new engine. To do this,
simply load the game into the Room Editor and then save it again.
 - Characters can now have a Talking view, which allows animation in dialogs
 - Fixed bug in dialogs where various messages screwed up
 - Fixed bug where interface text color was always black
 - Dialog options can now wrap to more than one line
 - Hotspot names can be longer and use lowercase
 - Fixed scaling bug where he sometimes popped up full-size briefly
 - Fixed crash if you pressed a key while in a conversation
 - Fixed background importing bug where colour index 0 screwed up
 - Added custom font support; but currently, you can only import SCI fonts.
 - Added graphical script command "If inventory %d was used"; allows you to
   use graphical scripts with Data-99 inventory events.
 - Documented RunDialog text script function
 - In View Editor, setting graphic for new frame zooms to previous frame's
   graphic in sprite list
 - User-defined gap between display of options in conversations
 - Interface button properties has "..." button to link to script editor if
   the left-click action is set to Run Script.
 - You can export the palette to PCX as well as PAL file.
 - When saving game, RoomEdit also checks for AC.EXE in the roomedit.exe
   directory as well as the current directory. So editing the demo by typing
   ..\roomedit will allow it to compile properly.
 - Fixed game loading bug where the graphical script timer wasn't restored
 - Allowed 320-width sprite import in room editor (if you drag the rectangle
   to screen width, it imports what's under the rectangle border as well as
   what's inside).

VERSION 2.00, September 1999
Complete re-write of both the Room Editor and the engine. Some of the new
features are:
 - Character scaling: man can get smaller as he walks away from the screen.
 - Customizable interface: you're not stuck with the Sierra one any more.
 - Non-player characters supported - this allows you to have other characters
   roaming the world and keep track of where they are.
 - Animating mouse cursors supported.
 - Scrolling rooms.
 - Conversations, like in Lucasarts games, with easy-to-use Dialog Editor.
 - Conditions for clicking on player character - you no longer have to display
   a message.
 - Much more powerful text script: you can do a lot more with it.
 - Increased max loops per view to 8 instead of 4.
 - Customizable walking speed for main character.
 - Baselines for objects, useful for objects lying flat on the ground, so that
   the man doesn't walk behind them.
 - You can change the icon bar graphics.
 - You can build a single EXE file for your game. This goes one step further
   than the data file you could build in the last version.
 - Improved remapping of scenes and sprites, solves most of the palette
   problems people were having with importing their graphics.
 - Clarified LICENSE.TXT. You should read the new license agreement.

VERSION 1.14a, May 1999
 - Fixed bug with Lose Game where the LOSE.PCX wasn't being shown, and it
   called it an "internal error".
 - Fixed bug where the engine refused to run if you didn't have a sound card.
 - Added German and Dutch translations by Erix Designs, Spanish translation by
   Ernesto Couso Artiles, and French translation by Pierre-Marc Jobin.
 - The introduction messages are now translated.
 - Fixed graphical script bug, where the flags weren't always initialized to
   the CLEAR state.
 - Fixed "sound2.voc not found" in the Showoff demo game.

VERSION 1.14, April 1999
NOTE: You will need to re-compile games made with previous versions.
NOTE: Old save game positions cannot be loaded.
 - Complete overhaul of the text script system. If you were using text
   scripts, see section 3.8.5 for how to upgrade. Many new commands and
   built-ins are available, see section 4.4 in the docs for a complete list.
 - You can now change the main character's graphics within different areas
   of the same screen. Section 3.13.1 in the docs describes this.
 - You can customize the score sound and the red-X sound. See ScoreSoundCustom
   and ErrorSoundCustom in section 4.1 of the docs.
 - Added support for customizable borders for the text windows. Section 4.1.1
   in the docs explains how to use this feature.
 - Added option to move man as close as possible to destination instead of
   displaying red X. See "MoveNearest" in section 4.1 of the docs for info.
 - Added XM music support. See section 3.2 of the docs.
 - The intro system has been changed. Now, the games starts in INTRO.CRM if
   it exists rather than displaying PIC1.PCX. See section 3.15 in the docs.
   The demo game intro now has two screens.
 - You can now change music volume on a per-room basis. This allows you to
   have, for example, quieter music outside a building than when the player
   enters it (like with the shops in the arcade in SQ4).
 - New graphical script commands: "Start timer", "when timer expires" and "move
   man to object". See section 4.6 in the docs.
 - New animation command "place object" allows you to instantly move an object
   to another position (see section 4.5 in the docs).
 - Added Swedish translation by Arn.
 - Fixed bug where man would 'moonwalk' when he reached destination (I think -
   still waiting for confirmation that this is fixed).
 - Mod musics are now included in your data file (sorry about that!).
 - Objects are now drawn behind the status bar if they are that high up.
 - Fixed bug causing mouse droppings to be left on the screen when the player
   scored points.
 - Fixed bug where you had to click twice to make the man walk off the left
   and bottom of the screen.
 - Fixed bug in RoomMake where the load/save room dialogs could 'disappear'.
 - Fixed lsl3-type score ticking (it works now!)
 - Fixed text colour problem in restore/save/quit dialogs.
 - Fixed spelling of "perhaps" on the second screen of the demo. At last!

VERSION 1.13, March 1999
NOTE: You will need to re-compile any games made with previous versions.
NOTE: You cannot load old save game positions saved before this version.
 - Added "every time player enters screen" and "repeatedly execute" events. See
   section 4.3 in the docs for information.
 - Added "move to, ignoring walls" animation command, allows you to give the
   effect of the character walking through a door otherwise blocked, etc.
   Also, you can now set a repeating animation in the Animation Editor. See
   section 4.5 in the docs for info.
 - New Sierra-style inventory window! See section 4.1.3 in the docs for how to
   implement this.
 - Added graphical script commands "If player has inventory item", "Lose
   inventory item", "Every x loops" and "Random chance". See section 4.6 in
   the documentation for more info.
 - You can now use your own custom mouse cursors. See "Cursor" in section 4.1
   of the documentation.
 - Different cursor now used in dialog boxes and the like, allows for a proper
   walk cursor which isn't used everywhere else.
 - NEW: Windows version of the Project Manager.
 - The route-finder is now much quicker at working out whether you can get
   to the destination, so clicking on walls no longer pauses the game for ages.
 - New: MOD support for background music. You can now use mod files as well
   as midi files. See section 3.2 in the docs.
 - The "Go to screen" command is finally implemented in graphical scripts.
 - New: Global flags in graphical scripts. The demo game now demonstrates
   this (the cigarette appears on the bin screen once you've given the key
   to the man).
 - Choice of two fonts for the speech text - the original one or now an SQ4
   type speech font as well. See "SpeechFont" in section 4.1 of the docs.
 - The status bar is now fully (well, almost!) customizable. Section 4.1.2 in
   the docs describes how to do this.
 - You can change the colour and style of the message boxes. See section 4.1.1
   in the docs for info.
 - You can set messages to be removed after a time if the player has not
   clicked the mouse - useful for intros/animations/etc. See the end of
   section 2.5 in the docs for info.
 - The Sprite Manager can now scroll up/down if you have more sprites than fit
   on the screen. The maximum is now 500 imported sprites.
 - When the character dies, you can now have a "Restore or quit" dialog rather
   than exiting the game.
 - You can now draw double-thickness walls in the Room Editor. This saves a lot
   of time so you don't have to draw walls twice.
 - Speech text is now centred horizontally on the screen.
 - The score is not displayed in the status bar if TotalScore is set to 0.
   This allows for some games where you don't want to use the scoring system.
 - You can now set the icon bar to display on top of the status bar, instead
   of below it. See IconBarAbsTop in section 4.1 of the docs for info.
 - You can change the animation speed of the main character. Useful if you are
   using custom character graphics. See ManAnimSpeed in sect 4.1 in the docs.
 - The up/down facing view is now used when the character is going more
   vertically than horizontally, instead of only when going North or South.
 - Using foreign characters in save game descriptions no longer crashes.
 - The icon bar is now not displayed while the status bar is disabled.
 - Added Green speech text colour option. Oh yes!
 - In the demo game, once the door is unlocked you can now go through it by
   using the hand cursor.
 - A couple of people reported that their graphics cards couldn't do 640x400.
   Now, if RoomMake can't use 640x400 it will use a 640x480 mode with black
   borders at the top and bottom.
 - Added teleport-to-room command in debug mode lets you test things without
   having to play your whole game through.
 - The main character's colours have been slightly changed. He doesn't look as
   good now, but it stops the problems which were happening to some scenes.
 - The Room Editor can no longer save old format room files :-(  But I don't
   think you really want to go back to v1.00 now, do you?
 - Fixed bug causing colours 190 and 191 to be overridden (thanks Arn!).
 - Fixed bug where changing screen the main character would temporarily change
   to the standard front view.
 - Fixed bug where objects positions weren't saved if they were turned off.
 - Fixed bug in save games with some text scripts.
 - Fixed room loading bug which showed up occasionally on graphical scripts.
 - Fixed crash which happened when pressing the down arrow key in the Restore
   game dialog when there were no save games (yes, arcane but true! try it on
   an older version and see!)

VERSION 1.12a, February 1999
NOTE: You cannot load old save game positions saved before this version.
 - You can now move non-player objects with the "Move object" animation
   command.
 - Non-player objects are now drawn correctly when in walk-behind areas.
 - Fixed the bug where objects sometimes weren't being removed from the screen
   properly, like the poster in the demo game.
 - Better screen-changing routine which fades in with the objects on, so you
   don't get that sudden change effect.
 - Changing the man's graphics now actually works.
 - The current MIDI track and position are now saved in the save games. Woohoo!

VERSION 1.12, February 1999
NOTE: You will need to re-compile any games made with versions before this.
NOTE: You cannot load old save game positions saved before this version.
 - Added ability to change main character's graphic. See section 3.10 in the
   documentation for more information.
 - Added FLI/FLC animation support
 - Added simple animation support, so you can have, for example, a door
   actually opening. See section 3.11 in the documentation for info.
 - You can use Data column values in graphical script
 - New response "Turn object on" allows you to put back an object you removed
   with "Remove object".
 - You can now disable the main character in a room - this allows you to do
   things like close-ups of a control panel. This is now demonstrated in the
   demo game, and described in section 3.12.
 - You can now set an object to initally off in RoomMake, which you can turn
   on later using "Turn object on".
 - Added Finnish translation by Teemu Eramaa and Norwegian translation by
   Martin Seterstoen.
 - You can now import a portion of a PCX/BMP for object graphics. This allows
   you to draw several frames in one file, and then import each frame from the
   same graphic.
 - New option in the Sprite Manager allows you to use full 256-colour palette
   for imports if the graphic will only be used in one room. (This prevents
   the mapping to greyscale).
 - The Sprite Manager importer now preserves colour 0 (transparent) pixels in
   the imported image.
 - You can change the background music through a command as well as with the
   room option.
 - Improved message editor allows you to edit existing messages without having
   to re-type the whole thing and also allows longer messages.
 - Tweaked the auto-route finder: removed the bug where he would sometimes
   walk further than you asked, and shortened the time the routefinder is
   allowed before giving up. This means that it is quicker realizing that you
   can't get somewhere, but it may not be able to work out a path round
   complex obstacles.
 - Pressing 'N' in object editor now uses Sprite manager to select graphic
   instead of cycling through all available graphs.
 - Fixed a silly bug with the Go-to-screen data column value where he would
   appear on the wrong side.
 - The walk and hand icons have now been replaced.
 - Slowed down the animation speed of the main character, so he looks more
   like he's walking.
 - F1 now works in the Sprite Manager! Oh yes!
 - Fixed bug in RoomMake which crashed when you moved the mouse to the bottom
   of the screen.

VERSION 1.1, January 1999
NOTE: You will need to re-compile any games made with versions before this
version. If you do not, you will not be able to run the game with this version.
NOTE: The files needed to distribute your games have changed. Please see
section 6.2 of the docs for information.
 - Added SVGA support. Background scenes can now be up to 640x400 256-colour!
   Please read section 3.9 in AC.DOC for notes on this new feature.
 - Added background music support, using MIDI files (see section 3.2 of AC.DOC
   for information).
 - Added sound effect support (see section 4.2 in AC.DOC for info).
 - Character movement by mouse added: click on the destination and he will
   walk there, as in Sierra's VGA games.
 - New compression algorithm for room files, leading to smaller files. In fact,
   the room file is now sometimes smaller than the imported scene's PCX file!
 - Foreign language support added.
 - Portuguese translation by Nuno Costa.
 - You can now import your own PCX/BMP files as graphics for objects.
 - Support for animating background sprites added. SUPPORT is the key word
   here, because currently I've only drawn one animating sprite.
 - The first screen of the demo has been changed to show off SVGA and
   animating sprites. And it looks better like this.
 - Expanded text script to make it more powerful. It still doesn't rival AGI
   for power, but you can now print out variable values and do crude intro
   sequences. See section 4.4 in the documentation for information.
 - New, much better icons for the top icon bar.
 - Slowed down the time-of-day to a fixed rate (on fast systems it was
   changing from day to night to day far too quickly).
 - Keypad 5 now stops the character walking properly.
 - Ported the run-time engine to DJGPP (a 32-bit DOS system).
 - You can now remove the status bar. Wow!

SERVICE RELEASE 1, December 1998
NOTE: Save games created by this release are not readable with previous
versions; and this version cannot load old save games. Sorry. If you try to
load an old game, you'll get Oops error 600. This is the price of progress :-)
You CAN, however, still use old rooms (so you haven't lost anything - phew!)
 - Added graphical script editor to RoomMake. This allows easy advanced
   scripting without using the .SCR file. See the AC.DOC file for more info.
 - RoomMake has been ported to DPMI. No more memory problems running RoomMake!
 - RoomMake now has an improved user interface:
    * a new file selector which allows changing directory and is easier to use
    * improved other dialogs, such as the "Are you sure you want to Quit"
      dialog and the "enter password" dialog.
    * supports long filenames if run under Windows 95, 98, or LFNDOS.
    * better palette remapping when reading in a PCX file.
    * supports importing BMP files as a background scene
 - The old screen now fades out and the new one in when changing screens.
 - Corrected the bug which caused a crash if you used an object with certain
   graphics.
 - Corrected the crash which occured if the script file was newer than the
   compiled file (thanks Luke!)
 - One extra screen has been added to the demo game, and it now ends
   gracefully instead of with a Load_Room error.

REVISION 10.07.97
NOTE: You will need to re-compile any games you made with any versions
before revision 10.07.97.A.
 - added StartPos option to INI file, to define where the man starts on
   the first screen. Also fixed the jump which happened when he first moved
   from the beginning.
 - removed the 'please register' nag screen, since I've decided that the
   Adventure Creator is now swap-ware (see LICENSE.TXT for info).

VERSION 1.00, FEBRUARY 1997
Original release.
