Version 2.7.4
------------------------
[-] Small fixes in installer and game engine.

Version 2.7.3
------------------------
[-] Temporarily disabled WoG Native Dialogs mod until further testing and stability improvements.
[-] Temporarily turned off Unicode support for VFS due to crash reports and performance degradation in Map Editor.

Version 2.7.2
------------------------
[+] Added more Unicode API support for virtual file system.
[*] Updated patcher_x86 to the latest version from HD mod.
[*] Added heroes3.ini support for map editor.

Version 2.7.0
------------------------
[+] (***) Added early support for Lua scripts (luajit engine). The API is [EXPERIMENTAL] and is subject to be changed. (***)
ERM will be fully supported, but is considered DEPRECATED from now. No new ERM commands (except integrating existing plugins)
are planned. Further development is binded to Lua. Single language can be used to write ordinary and plugins-like scripts.

Version 2.6.6
------------------------
[*] Updated WoG Native Dialogs mod by igrik: removed VC++ dependencies, fixed a few bugs, added WoG-like radio/checkbox-buttons for IF:G.
[*] Removed VC++ dependencies from Game Bug Fixes plugin. Plugin renamed to *.dll version to prevent crashes at game start.
[-] Fixed bug with crashes during sound playing in WoG dialogs. patcher_x86 thread-unsafe hook replaced with native Era hook.
[-] Assertion messages were not displayed, only files and lines used to be reported.

Version 2.6.5
------------------------
[+] Integrated igrik's plugin, displaying numeric value of moral/luck bonuses and spells duration in view creature dialog.
[+] Improved "wog native dialogs" plugin by igrik. IF:G radio/checkbox dialog is now implemented via native ingame dialogs system.
[+] Added "fast upgrade stacks in town.dll" plugin by igrik in the off state. Plugins allows to use A+LMB combination to instantly upgrade single stack or all stacks (click on hero portrait) in town without any confirmations.
[-] Fixed bug in Mod Manager, not allowing to run executables with space in name like "h3era HD.exe".
[-] Fixed bug with crash in commander's dialog on skill selection during level-up.

Version 2.6.2
------------------------
[+] Added localization support for ERM scripts. All Lang\*.json files are loaded and merged into single dictionary of key => value pairs with language data.
Json files must be saved in UTF-8 encoding with preferably Unix line endings (#10 = 0x0A). The format is the following:

During file loading text is converted from UTF-8 (Unicode, i.e Russian, Polish, Chinese and any other language is supported) into ANSI-encoding, used by player's operational system, ex. Windows-1251.
Thus you may ship the translation, other people may open and edit it without loss and characters, not representable on particular PC, will be replaced with "?".

It's recommended to prefix each key with string, unique for mod or author, like "pm." for "Phoenix Mod".

Translations may have parameters in the form of "@parameter name@". Those parameters are replaced with actual values during translation.
New ERM command !!SN:T is used to translate strings by key.
!!SN:T(key)/?(z-variable to place result to)/(parameter name 1)/(parameter value 1)/(parameter name 2)/(parameter value 2)...;

[+] Added possibility to set secondary skills texts without z-variables dependence. SN:H^secskill^/skill 0..27/0 (name) or skill level/new hint.
[+] Added GET-syntax for all SN:H commands, allowing to get previously set hint for objects or current skill/specialty texts for heroes.
[+] v1-v10 and z1 will be restored after (OnKeyPress) event to the value, they had before event.
[+] Added fixes by Algor for 30 wog - enhanced secondary skills.erm, 75 wog - secondary skills boost.erm and 78 wog - wogify.erm. No more hardcoded numbers, !!SS is used instead.
[+] "Quick Saving" script is converted into default standalone mod, using named functions, unique SN:W variables and Era 2.6.2 localization means. Mod is now compatible with almost any other mod.
[+] Added msvcr90.dll (Microsoft Visual C++ Redistributable 2009) to support plugins, written with this dependency.
[+] Added meaningful messages to many asserts in code, making assertion crashes easier to understand.
[*] Each *.bin patch obtains unique name prefix, no more conflicts with 'no hota maps.bin', shipped with HD mod.
[*] Yona creature abilities are now off by default and need to be manually switched on via mod ini file.
[-] Fixed bug: SN:H^object^/x/y/z/hint didn't update hint.
[-] Removed Jim Vogan's scripts from WoG mod.

Version 2.6
------------------------
[+] Added default values for most of heroes3.ini parameters. No crashes anymore on missing values or even missing heroes3.ini.
[+] Added 'default era settings.ini', which values are used if corresponding parameters are missing in heroes3.ini.
[+] Backported saved game sections debugging capabilities with "Debug.DumpSavegameSections" ini option.
[+] New directory "Debug\Era" must exist in order for debug functions to work (is automatically created and game start).
[+] Backported dump event list, dump patches, dump erm memory and dump PE modules capabilities from 2.5x branch (F11 key).
On calling Era.GenerateDebugInfo (no parameters), pressing F11 or game crash Debug\Era folder is filled with various files,
containing full necessary debug information. Report generation can be carried out on demand:

[+] Functions can now have names. Any time you use "(something)"" inside commands, a new function number from 95000+ range is associated with text inside brackets and brackets with name are replaced by that number. If the name already has associated function number, existing number is used instead. Use SN:W to get number of named function by name. Unnamed functions are deprecated, but still working.

Example: !!FU(OnHenchmanHire); call function which maybe does not exist, but script users will be able to handle the event.
Example: !?FU(Phoenix.FindFreeSlot);

Please, don't forget that names are global. Prefix function names with mod abbreviation: (BattleLib.RessurectStack).
Function names are replaced with numbers during map initialization stage, so this feature has no impact on performance.

!!VRy1:S0; initialize counter
[:loop]; loop is label name inside current trigger (!?XX until next !?XX of the same file)
!!IF:L^Echoed %Y1 times^; echo message
!!VRy1:+1; increase counter
!!SN&y1<7:G[loop]; jump to loop label if not echoed 7 times

[+] Added elseif syntax to !!el command. If !!el has condition and condition evaluates to false, the engine proceeds to the next !!el command until finds the right one or meets !!en.
[+] Added !!SN:O command. Get object entrance. SN:O?$/?$/?$
Initialize any three variables with object square coordinates. Pass them to command to update coordinates with right object entrance square. Thanks to gamecreator.

[+] Added SN:H command for setting hints, descriptions, names without z-vars. Currently only the following variants are supported:
SN:H^object^/x/y/z/hint;
SN:H^object^/obj_type or -1/obj_subtype or -1/hint;

[+] Added ability to delete hints set up by SN:H. Just add "-" prefix to the first argument.
SN:H^-object^/...

[+] Better support for modern HD mod and x86_patcher:
- included x86 patcher v4.3 with debug map file;
- 95% of Era's patches use x86_patcher, each *.bin file creates its own patcher instance;
- x86_patcher patches are dumped to "Debug\Era\x86 patches.txt" during debug info generation.

[+] Implemented support for multiple UnhandledException handlers, now both HD and Era handlers do their job.

[+] Implemented fully featured ERM tracking support: track all executed triggers and commands in order to defeat bugs and learn game mechanics.
See Debug.ErmTracking.* options in "Heroes 3\default era settings.ini".

All ERM triggers and commands are recorded during execution (tracked) and are dumped to single "Debug\Era\erm tracking.erm" file in the order of execution.
Comments after each trigger show flags and v-variables state on trigger start/end.
Comments after each receiver show exact file, line and position of command.

Tracking report file is generated on F11 press or on game crash.

[+] Improvated named functions support. Added programmatical ability to get function name by ID.

[+] Improved multiplayer support:
- The whole packed saved game is sent on end of turn, difference file is not generated.
- Added object creation immediate synchronization between servers and clients.
- "SavedGameExtraBlockSize" ini setting is dropped.

As a result, playing game with script, that support multiplayer, can be performed without crashes.
WoGification and quick saving scripts work.

[+] Released ERM Hooker v2.0 plugin with support of multiple handlers at the same address. It support Era 2.46,
but is DEPRECATED in advance, because the same functionality without memory leaks will be ported to Era in
future versions.

[+] F11/crash dumps loaded mods to "Era\Debug\modlist.txt".

[+] Added support for compiled debug maps for dll/exe files and basic set of compiled maps. Map files are used to find corresponding name of function/variable/class by address in executable code. This feature allows to display human readable crash report in terms of source code items, not meaningless addresses.

Use Tools\ExeMapsCompiler\compile.phc to convert Borland map files to *.dbgmap binary files, used by Era.
The tool requires PHP interpreter v7.1+ to run. C++ maps support is planned to be added soon.
Place *.dbgmap file with the same name, as executable/dll but with capital first letter to Heroes 3\DebugMaps directory.
Debug maps are loaded automatically during debug information generation.

[+] Implemented generation of detailed crash report on game crash, including data analysis.

Folder "Data\Redirections\Missing\*.json" works in similar way, but redirections are only applied to missing resources.
For instance, we can now delete z*-pictures from WoG and redirect them to original names without prefixes. You can also supply safe alternative to third-party resources, if your mod depends on any graphical mod.

[+] Added OnGameEnter (77015) and OnGameLeave (77016) events. The first one occures when game is started or loaded and user gains control over mouse cursor. The second one occurs, when user exits to main menu or desktop.

This pair of trigger is handy to set/unset UN:C hacks, which are specific for map or mod.

====== The development was split into 2.4X and 2.5X series ======

Version 2.55 October, 13 (2013)
------------------------
[+] Routine producing ERM error report was completely rewritten. New dialog uses colored text and displays full error command, ERM file name and line in file. Default choice is skipping the error, not making ERM memory dump. There are no more duplicate or senseless error popups.
[+] Routine making ERM memory dump was completely rewritten for better error diagnostics and supports apart from all associative variables (SN:W) and dynamical arrays (SN:M).
[*] Error in any Era command (SN does not lead to leaving trigger anymore.
[*] Era commands now obey error suppression rules (UN:P904) and do not change z1 variable on error.
[+] ExecErmCmd can now execute several commands at once.
[+] Added event "OnBeforeClearErmScripts". It occurs right before scripts are unloaded.
[+] WoG built-in code tracing mechanisms were removed because of being slow and useless.
[+] e- and y- are considered deprecated and are subject to remove in the future.
[*] "r" color name now stands for light red, suitable for default dialog backgrounds. "g" color name now stands for game native gold color.
[*] Internal code refactoring.
[+] Added comprehensive exception handling with various contexts dumping.
[-] Fixed ERM MR:N bug. !?MR1/2 return valid stack number or -1.
[-] Fixed Era 2.5 bug. Event "OnBeforeErmInstructions" didn't occur.

Version 2.5 October, 2 (2013)
------------------------
[*] No more "wogification" notion on code level. Every map is WoG map. Scripts are loaded the same way for any map/campaign. WoG option #5 is free. Wogification settings (option #5) are ignored.
[*] Map/campaign built-in scripts are not interpreted.
[-] Bug with garbage triggers from previously run map with built-in scripts is gone.
[*] Maps\[map name].erm is not loaded.
[-] Bug with memory corruption when both [map name].erm and built-in scripts presented is gone.
[-] Bug of Maps\[previously run map].erm script loading on campaign start is gone.
[*] UN:J3 command does not reset commanders anymore. If value ":clear:" is passed as file name, all WoG options are dropped to zero and option #101 (Map Rules) is set to 2 ("use selected below").
[+] WoG default storage for ERM scripts is not used anymore. No restriction on 100 script names remains. Scripts are loaded and interpreted after all WoG data is loaded but before "OnSavegameRead" event occurs. As a result, Era 2.5 cannot handle saved games of previous versions.
[+] Each script is stored in saved game with additional information: file name, file size and CRC32 checksum. No scripts interpretation occurs on game loading if the same script subset is already in memory. It means that game loading speed was significantly increased.
[+] Files "Data\s\*.erm", "Data\s\*.ert" and "Data\s\load only these scripts.txt" in Maps\[map name] or Maps\[campaign name]_[campaign map index] folder override the appropriate files in "Data\s" and "Mods\[any mod]\Data\s" only when this particular map/campaign is started. It means that every map, including maps in campaigns, can have unlimited number of own scripts and can flexibly control the script and language file subset which will be used.
[*] The order of file names in "load only these scripts.txt" does not matter. If file names contain priority prefixes, they are taken into account.
[+] "*.sys.erm" scripts are called System scripts and loaded always regardless "load only these scripts.txt" settings. System scripts usually provide support for critically important game aspects and should not contain any code which can be used optionally depending on custom map demands or player's preferences.
[*] Maps\[map name].cmd is not loaded.
[*] WoG.ini option "Alternative Scripts Location" is not used.
[+] Scripts preprocessing is not used. Invalid ERM receivers in form of "!!XX" remain. New option "IgnoreInvalidReceivers" was added to heroes3.ini. If it's on, invalid receivers are silently ignored. Otherwise new diagnostics message appears with the following information: invalid receiver, file name, linear offset in file, error context.
[+] Added new triggers OnGameEnter (77015) and OnGameLeave (77016). The first one occurs when map is loaded and player gets mouse control. The latter occurs when player leaves current game. This event can be use to revert special changes in game memory (like UN:C hacks).
[+] Implemented redirection support for *.mp3 files using functions "RedirectFile" and "GlobalRedirectFile". This mechanism should be used instead of deprecated !!MP commands. Calling redirection functions with first argument "*.mp3" forces playing only one mp3 track in all game dialogs.