Releases: Bubb13/EEex
EEex v0.11.0-alpha
Important Note: Old versions of Near Infinity have the potential to corrupt EEex saves. This bug is caused by EEex storing data in a nonstandard location since v0.10.3-alpha. If you plan on using Near Infinity to edit your save files, please ensure you are using the latest version.
Features
- Added the "EEex Options" menu, allowing most EEex modules and options to be configured in game.
- Increased the cap of FoW-clearing creatures to 32,768.
Fixes
- Vanilla Bugfix: "Auto-Pause - Spell Cast" no longer breaks spell effect probabilities.
- Vanilla Bugfix: Changes in scrollbar visibility no longer cause single-frame text wrapping discrepancies.
- Vanilla Bugfix: Text areas that have their scrollbar hidden no longer erroneously apply the scrollbar pad.
- Vanilla Bugfix: UI templates no longer maintain an invalid capture state when destroyed.
Miscellaneous
-
Reimplemented EEex's op319
SPLPROT.2DAmodes.Note: The parameter order has changed versus the previous implementation:
power == 2-> Not usable by (SPLPROT)power == 3-> Usable by (SPLPROT)
-
Added translation files for EEex's installer / UI text.
-
Bumped LuaJIT version.
EEex v0.10.3.1-alpha
Important Note: Old versions of Near Infinity have the potential to corrupt EEex saves. This bug is caused by EEex storing data in a nonstandard location since v0.10.3-alpha. If you plan on using Near Infinity to edit your save files, please ensure you are using the latest version.
Fixes
- Critical Fix: Editing a save with EEKeeper will no longer cause EEex to drop local variables on modified characters.
- The Effect Menu module now properly scales spell icons in the event that another mod increased their resolution.
EEex v0.10.3-alpha
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).
-
EEex v0.10.2.1-alpha
Fixed
- A regression that caused EEex's IDS-handling functions to break.
EEex v0.10.2-alpha
Added
- Empty container module – Highlight empty containers in gray instead of cyan.
Fixed
- A crash that occurred due to a regression in the Lua Bindings system; affected Enhanced Powergaming Scripts.
EEex v0.10.1.1-alpha
For Modders
Added:
-
Lua:
EEex_Menu_AddWindowSizeChangedListener(listener)–listener(newWidth, newHeight)is called whenever the engine changes the window size of the interface.
EEex v0.10.1-alpha
For Modders
Added:
-
2DA:
- X-CLSERG.2DA: Allows kits to ignore the close-range thac0 penality based on weapon ITEMCAT.IDS type – (Thanks @4Luke4!)
EEex v0.10.0.1-alpha
Fixed
- Opening the world map with the "Experimental - Use LuaJIT (can help stuttering)" component and LeUI installed no longer crashes the game.
EEex v0.10.0-alpha
Features
-
Overhauled much of EEex's code to improve performance issues on certain modded installs.
-
Added an experimental component that replaces the engine's embedded Lua version with LuaJIT. This can drastically speed up EEex's Lua scripting.
Engine Fixes
-
op182 now works as intended – (Thanks @4Luke4!)
-
Fix v2.6 regressions regarding op206 / op232 / op256 – (Thanks @4Luke4!):
- op206's
param1only worked for values 0xF00074 and 0xF00080 - op232 and op256's "you cannot cast multiple instances" message failed to display
- op206's
For Modders
Added:
-
Effects:
-
op214:
-
param2 == 3– Call the global Lua function with the name inresourceto get aCButtonDataiterator. Then, use this iterator to determine which spells should be shown to the player. Note that the function name must be 8 characters or less, and be ALL UPPERCASE. -
resource – Name of the global Lua function when
param2 == 3
-
-
op333:
(param3 & BIT0) != 0– The effect's saving throw is only checked once – (Thanks @4Luke4!)
-
Saving throw field:
- BIT23 causes the effect to bypass op101 – (Thanks @4Luke4!)
-
-
Actions:
-
SpellObjectOffset() family that targets spells at the ground relative to an object – (Thanks @4Luke4!):
476 EEex_SpellObjectOffset(O:Target*,I:Spell*Spell,P:Offset*)476 EEex_SpellObjectOffsetRES(S:RES*,O:Target*,P:Offset*)477 EEex_SpellObjectOffsetNoDec(O:Target*,I:Spell*Spell,P:Offset*)477 EEex_SpellObjectOffsetNoDecRES(S:RES*,O:Target*,P:Offset*)478 EEex_ForceSpellObjectOffset(O:Target*,I:Spell*Spell,P:Offset*)478 EEex_ForceSpellObjectOffsetRES(S:RES*,O:Target*,P:Offset*)479 EEex_ReallyForceSpellObjectOffset(O:Target*,I:Spell*Spell,P:Offset*)479 EEex_ReallyForceSpellObjectOffsetRES(S:RES*,O:Target*,P:Offset*)
-
-
Items:
-
.ITM header flags:
- BIT18 causes the weapon to ignore weapon styles (as if the item was in SLOT_FIST) – (Thanks @4Luke4!)
-
EEex v0.9.22.1-alpha
- Fixed:
- Projectile traps (e.g. thief innate ability, skull trap) no longer forget their effect payload on reload.