EEex is an executable extender for Beamdog's Enhanced Edition of the Infinity Engine. Its goal is to externalize certain parts of the engine to grant modders a greater degree of control over otherwise hardcoded mechanics. EEex does not
make any gameplay changes itself - it merely enables other mods to do so.
Just give me the link!
Alpha versions of this project are now available on GitHub.EEex will support MacOS and Linux on launch, however, the current alpha version only supports Windows. In addition, BG2:EE v188.8.131.52 is the only supported game at the time of writing.
What does it do?
EEex, when installed, directly modifies the game's executable in order to insert a loader. This loader is used to alter the game's code on startup; the modifications that are made depend on the version of EEex installed, and any installed mods that make use of EEex's capabilities.
I'm a user, what do I need to do to install?
EEex is installed just as any other WeiDU mod. Simply extract the archive's contents into your game's base folder, and run the setup - it will take care of the rest. Please note that since EEex alters the game executable itself, you should ensure that the game is closed before running the installer!EEex is currently in alpha, and as such it is highly unstable. All immediate crashes are believed to be fixed, though you still risk a crash at any time. Use with care.
I'm a modder, how do I use EEex?
EEex makes changes to many different parts of the engine. Accessing and making use of new opcodes, actions, triggers, and objects is as simple as installing EEex.
The real power of EEex, however, comes from its ability to change hardcoded engine behavior. The hooks that enable these alterations are completely defined and controlled by the Lua environment, and as such, modders wishing to use these systems will have to either:a)
Insert a M_*.lua file into the override folder.orb)
Edit UI.MENU directly. Detailed documentation pending.
Previous post: [EEex v0.2.0-alpha] Who's up for some new LUA functions?
Edit: Alpha versions of this project are now available on GitHub. Documentation and post-overhaul pending™.
I have been working on creating some new LUA functions via hex editing for a mod I am currently working on, and it has been going very well so far. In case any of you are curious, here's the two new functions I've made so far:
Infinity_GetPCIdentifier(slot) - Gets the ID of the character in the given portrait slot. Can be used to access the characters table or in the following command...
Infinity_GetLocal(creatureID, local) - Returns the value of the given local variable on the creatureID. Can be used in conjunction with the previous command to get local values of PCs.
Currently in the works:
Infinity_SetLocal(creatureID, local, value) - Sets the value of the given local variable on the creatureID.
To give you guys some proof, here's a screenshot:Here's my question to you all -
What new commands would you like to see? New UI behaviors are beyond me, but externalizing any other behavior the engine exhibits is definitely a possibility. I.E. any internal fields you would like to have access to, any existing function behaviors you would like changed.