Initial support for IF:M elements and string formatting.
Various minor changes related to ERM interpreter.
The following script should be functional now:
ZVSE
!?PI;
!!DO1/0/6/1&v2777<>1:P0;
!?FU1;
!!IF:M^Hello world number %X16!^;
* Fixed#736, #737.
* Fixed crash on loss/victory.
* Fixed crash on loading some AB maps.
* Fixed crash on loading map where victory/loss condition objective hero was placed inside the town.
* Fixed crash on loading map when neutral Dungeon has built Portal of Summoning.
* Mutex protecting GS will be used to prevent changes in GS when GUI might read it.
* Little more securities around moving hero and ending turn, still needed more.
* crash on +5 growth week
* crash on spawning wandering creatures on double growth months
(how come that has not been found in previous build?)
More logging for #729-like issues.
* no hard crash on startup when AB videos are not installed (1 byte file)
* moved some DLL_EXPORTs to resolve incomprehensible (to me) linker error occurring only with release builds.
* comparisons need to have comparison operator -> they won't catch plain var usage
* removed qmacro -> that's just reading into normal macro
* there are 10000 standard vars
* there is one global (base) set of y-vars
* the iterator from !!DO loop is correctly passed into called function
* fixed getting variable value (also supporting array indexing)
* post- and pre-triggers share common base
* lib/ERMScriptModule.cpp
* lib/ERMScriptModule.h
* lib/CObstacleInstance.h
More jugglery with callbacks. Moving stuff from CGameState to CGameInfoCallback. Work on unified game events interface for player (AI or GUI) and script module. Directing events to ERM interpretetr, first attempts of calling some triggers. Crashy, if there any scripts.
Some other changes, including fighting amount of includes in includes and tracking of hero visits (need further work).