github Bubb13/EEex v0.10.3-alpha
EEex v0.10.3-alpha

latest releases: v0.11.0-alpha, v0.10.3.1-alpha
pre-release6 months ago

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].ProtonCompatibility option in InfinityLoader.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 for Spell() and SpellPoint().

  • Fixed op403 (Screen Effects) and op408 (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) and ac319 (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 listenerfunction() -> boolean.

    • Returning true suppresses the execution of any remaining listeners.

AIBase

  • The LastSummonerOf scripting 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. LastSummonerOf on the summon).

    • Signature of listenerfunction(aiBase: CGameAIBase, scriptingObject: EEex_ScriptingObject).

    • Valid EEex_ScriptingObject values:

      Name
      ATTACKER
      ORDERED_BY
      HITTER
      HELP
      TRIGGER
      SEEN
      TALKED_TO
      HEARD
      SUMMONED_BY
      KILLED

Logging

  • Added the InfinityLoader.ini -> [General].LogFile option.

    • 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_Object is set to the script runner before the Lua chunk is executed.

Resource

  • EEex_Resource_Demand() can now demand PRO and EFF files.

    • EFF files are exposed as CGameEffectBase instances.

    • PRO files are exposed as either CProjectileFileFormat, CProjectileBAMFileFormat, or CProjectileAreaFileFormat instances 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 CAIScript instance that represents the .BCS / .BS with resref.

    • If bPlayerScript is true, signifies that resref has the extension .BS instead of .BCS.

      Note: Due to the enhanced edition’s use of script caching, the engine has trouble differentiating between .BS and .BCS files with the same name. If a script with the given resref has already been loaded by the engine, that script will be returned, regardless of bPlayerScript.

Sprite

  • Added EEex_Sprite_AddAlterBaseWeaponDamageListener(listener: function).

    • Registers listener, which is called after the engine has built the base op12 (damage) effect for a weapon hit.

    • Signature of listenerfunction(context: table).

    • context has the following fields:

      Name Type
      ability Item_ability_st
      attacker CGameSprite
      effect CGameEffect
      isCritical boolean
      isLeftHand boolean
      launcher CItem
      target CGameSprite
      weapon CItem

  • Added EEex_Sprite_AddBlockWeaponHitListener(listener: function).

    • Registers listener, which is called before a sprite's swing hits its target.

    • Signature of listenerfunction(context: table) -> boolean.

    • context has the following fields:

      Name Type
      attackingSprite CGameSprite
      targetSprite CGameSprite
      weapon CItem
      weaponAbility Item_ability_st
    • Returning true blocks 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 listenerfunction(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 uuid is currently unloaded, returns nil.


  • Added EEex_Sprite_GetUUID(sprite: CGameSprite) -> number.

    • Returns the uuid of the given sprite.

  • Added EEex_Sprite_LoadedWithUUIDCallback(sourceSprite: CGameSprite, uuid: number, callback: function).

    • Registers callback, which is called once after a sprite with uuid is loaded into the current game session.

    • Signature of callbackfunction(sourceSprite: CGameSprite, loadedSprite: CGameSprite).

Don't miss a new EEex release

NewReleases is sending notifications on new releases.