Fixes
-
Fixed several crashes when running EEex on IWD:EE due to some patterns resolving incorrectly for the IWD:EE binary.
-
Fixed a crash that occurred when EEex was run under recent Wine versions. Infinity Loader now automatically detects if it is being run under Wine and corrects its behavior accordingly, (obsoleting the
[General].ProtonCompatibilityoption inInfinityLoader.ini). -
Fixed a crash that occurred when executing an invalid command in the debug console.
-
Fixed custom concentration handlers (
CONCENTR.2DA[VALUE,CHECK_MODE]=EEex-LuaFunction=<function name>) not running for all disruptable spell actions; was previously only executed forSpell()andSpellPoint(). -
Fixed
op403(Screen Effects) andop408(Projectile Mutator) instances entering invalid states when they were removed during the middle of an effect list pass. -
Fixed minimizing a fullscreen game erroneously calling listeners registered by
EEex_Menu_AddWindowSizeChangedListener(). -
Fixed EEex data marshalling handlers incorrectly saving unsigned integers.
-
Vanilla Fix: Enabled the previously disabled
ac318(ForceSpellRange) andac319(ForceSpellRangeRES).
For Modders
Details (Click to Expand)
New Features
Actionbar
-
Added
EEex_Actionbar_AddButtonsUpdatedListener(listener: function).-
Registers
listener, which is called after the engine has built its internal button data when switching to a new actionbar state. -
Signature of
listener–function() -> boolean. -
Returning
truesuppresses the execution of any remaining listeners.
-
AIBase
-
The
LastSummonerOfscripting object is now persisted across reloads. -
Added
EEex_AIBase_AddScriptingObjectUpdatedListener(listener: function).-
Registers
listener, which is called after the engine has updated a scripting object for a script runner, (e.g.LastSummonerOfon the summon). -
Signature of
listener–function(aiBase: CGameAIBase, scriptingObject: EEex_ScriptingObject). -
Valid
EEex_ScriptingObjectvalues:Name ATTACKERORDERED_BYHITTERHELPTRIGGERSEENTALKED_TOHEARDSUMMONED_BYKILLED
-
Logging
-
Added the
InfinityLoader.ini->[General].LogFileoption.- Causes all console output to be automatically mirrored to the specified log file.
Object
-
Added the
EEex_LuaDecode()scripting object.-
This object calls its string parameter as a Lua chunk and uses the return value (should be derived from
CGameAIBase) as the resulting target. The primary purpose of this object is its ability to resolve to a new target every time it is decoded by the engine. -
The Lua global
EEex_LuaDecode_Objectis set to the script runner before the Lua chunk is executed.
-
Resource
-
EEex_Resource_Demand()can now demandPROandEFFfiles.-
EFFfiles are exposed asCGameEffectBaseinstances. -
PROfiles are exposed as eitherCProjectileFileFormat,CProjectileBAMFileFormat, orCProjectileAreaFileFormatinstances depending on the file header.
-
-
Added
EEex_Resource_FreeScript(script: CAIScript).-
Frees the memory associated with
script. -
Don't use this on an object that the engine holds a reference to!
-
-
Added
EEex_Resource_LoadScript(resref: string, bPlayerScript: boolean) -> CAIScript.-
Returns a
CAIScriptinstance that represents the.BCS/.BSwithresref. -
If
bPlayerScriptistrue, signifies thatresrefhas the extension.BSinstead of.BCS.Note: Due to the enhanced edition’s use of script caching, the engine has trouble differentiating between
.BSand.BCSfiles with the same name. If a script with the givenresrefhas already been loaded by the engine, that script will be returned, regardless ofbPlayerScript.
-
Sprite
-
Added
EEex_Sprite_AddAlterBaseWeaponDamageListener(listener: function).-
Registers
listener, which is called after the engine has built the baseop12(damage) effect for a weapon hit. -
Signature of
listener–function(context: table). -
contexthas the following fields:Name Type abilityItem_ability_stattackerCGameSpriteeffectCGameEffectisCriticalbooleanisLeftHandbooleanlauncherCItemtargetCGameSpriteweaponCItem
-
-
Added
EEex_Sprite_AddBlockWeaponHitListener(listener: function).-
Registers
listener, which is called before a sprite's swing hits its target. -
Signature of
listener–function(context: table) -> boolean. -
contexthas the following fields:Name Type attackingSpriteCGameSpritetargetSpriteCGameSpriteweaponCItemweaponAbilityItem_ability_st -
Returning
trueblocks the hit.
-
-
Added
EEex_Sprite_AddLoadedListener(listener: function).-
Registers
listener, which is called when a sprite is first created in a game session, after its effect list has been loaded (but not processed). -
Signature of
listener–function(sprite: CGameSprite).
-
-
Added
EEex_Sprite_GetFromUUID(uuid: number) -> CGameSprite.-
Returns the sprite in the current game session with the given
uuid. -
If the sprite with the given
uuidis currently unloaded, returnsnil.
-
-
Added
EEex_Sprite_GetUUID(sprite: CGameSprite) -> number.- Returns the
uuidof the givensprite.
- Returns the
-
Added
EEex_Sprite_LoadedWithUUIDCallback(sourceSprite: CGameSprite, uuid: number, callback: function).-
Registers
callback, which is called once after a sprite withuuidis loaded into the current game session. -
Signature of
callback–function(sourceSprite: CGameSprite, loadedSprite: CGameSprite).
-