Releases: Bubb13/EEex
EEex v0.7.1-alpha
Fixes:
- Opcode #403 (ScreenEffects) should not mess with spell protections
EEex v0.7.0-alpha
Changelog pending
EEex v0.6.0-alpha
Changelog:
New Opcodes =>
-
Opcode #403 (ScreenEffects):
Whenever an effect is being added to the target creature a Lua function specified by the resource key is called. Maximum function name length is 8, and function names must be completely upper-case. The Lua function's signature can be seen in the following header:
function B3BLOCKD(originatingEffectData, effectData, creatureData)
A return value of true blocks the effect from applying. Note: the immunity function "sees" effects after they have passed their probability roll, but before any saving throws have been made against said effect / other immunity mechanisms have taken place. The originating effect is passed via the immunity function's first Lua param.
-
Opcode #404 (OverrideButtonType):
Alters a specific actionbar button on the target creature:
Param1
= Type to override
Param2
= Override with typeKnown values for both parameters match what is defined by EEex_ACTIONBAR_TYPE in M__EEex.lua:
2 BARD_SONG 3 CAST_SPELL 4 FIND_TRAPS 5 TALK 7 GUARD 8 ATTACK 10 SPECIAL_ABILITIES 11 STEALTH 12 THIEVING 13 TURN_UNDEAD 14 USE_ITEM 15 STOP 21 QUICK_ITEM_1 22 QUICK_ITEM_2 23 QUICK_ITEM_3 24 QUICK_SPELL_1 25 QUICK_SPELL_2 26 QUICK_SPELL_3 27 QUICK_WEAPON_1 28 QUICK_WEAPON_2 29 QUICK_WEAPON_3 30 QUICK_WEAPON_4 100 NONE
-
Opcode #405 (OverrideButtonIndex):
Alters a specific actionbar button on the target creature:
Param1
= Actionbar index to override
Param2
= Override with type
Special
= Actionbar config to match (-1 to match any class home)See Opcode #404 for known values of Param2.
Opcode Changes =>
-
Special
field of 1 ignores slot requirement. -
Opcode #319:
Implemented SPLPROT Modes.
New Mode (
Power
) values:
2 = like mode 1 but parameters use splprot.2da
3 = like mode 0 but parameters use splprot.2daIf 'Mode' is set to 2 or 3, then the creature type specified by the 'Stat Type' field will be affected by this opcode. See opcode #324 for more information.
Script Action Changes =>
-
EEex_Lua():
Now runs Lua chunks, (Lua code embedded in the string arg), instead of calling a function.
The actorID of the executing actor is passed to the chunk via the global EEex_LuaActorID.
Script Trigger Changes =>
-
EEex_LuaTrigger():
Now runs Lua chunks, (see above).
The actorID of the executing actor is passed to the chunk via the global EEex_LuaTriggerActorID.
The return value of the trigger is passed back to the engine by setting the global EEex_LuaTrigger before returning from the chunk.
New Modules =>
-
B3_CuBar.lua:
Allows actionbar to be customized in-game. Enable in EEex_INI.lua, and hold shift key while on world screen to use.
-
B3_Portr.lua:
Disables action overlay on party portraits.
Module Changes =>
-
B3Hotke.lua:
Can now cast spells that use an actionbar submenu by using
B3Hotkey_CastTwoStep()
.
Function Changes =>
-
C:Eval():
Can now accept an actorID as the 2nd param.
-
EEex_StoreTemplateInstance():
Takes an additional first param (string) to target a specific menu.
- Memorization retrieval functions now populate name and description data.
Fixes =>
-
Most bits utility functions have been reworked / fixed.
-
Opcode #42 and Opcode #62 should not ignore slot requirement by default, (see change above).
New Functions =>
-
EEex_AddPostResetListener(listener):
Given listener function is called after an F5 UI reload is executed.
-
EEex_AlterActorEffect(actorID, match_table, set_table, multi_match):
Like the WeiDU ALTER_EFFECT function, except that it alters effects in the middle of the game.
EEex_AlterActorEffect(actorID, {{"opcode",232},{"parameter2",0},{"resource","SPWI304"}}, {{"resource","SPWI502"}}, 2)
equals
LPF ALTER_EFFECT INT_VAR multi_match=2 match_opcode=232 match_parameter2=0 STR_VAR match_resource=~SPWI304~ resource=~SPWI502~ END
Valid field names:
opcode target power parameter1 parameter2 timing duration probability1 probability2 resource dicenumber dicesize savingthrow savebonus special school lowestafflevel highestafflevel resist_dispel parameter3 parameter4 time_applied vvcresource resource2 casterx source_x castery source_y targetx target_x targety target_y restype effsource parent_resource resource_flags impact_projectile sourceslot effvar casterlvl internal_flags sectype source_id
-
EEex_ApplyEffectToActor(actorID, args):
Directly applies an effect to an actor based on the args table. Valid arg keys:
opcode target power parameter1 parameter2 timing resist_dispel duration probability1 probability2 resource dicenumber dicesize savingthrow savebonus special source_target target_x target_y source_id source_x source_y vvcresource resource2 parent_resource resource_flags impact_projectile source_slot casterlvl internal_flags sectype
-
EEex_CyclicBound(num, lowerBound, upperBound):
Sanity function to help work with number ranges that are cyclic, (like actor direction).
Example:
EEex_CyclicBound(num, 0, 15)
defines a range of 0 to 15. num = 16 rolls over to 0, as does num = 32. num = -1 wraps around to 15, as does num = -17. -
EEex_DestroyInjectedTemplate(menuName, templateName, instanceId):
Destroys an instance injected into a menu via
EEex_InjectTemplate()
. -
EEex_EvalObjectAsActor(object, actorID):
Evaluates an object pointer, (returned by
EEex_ParseObjectString()
), as if it was evaluated by the given actor. -
EEex_EvalObjectStringAsActor(string, actorID):
Evaluates an object string in standard BAF syntax as if it was evaluated by the given actor.
-
EEex_GetActionbarButtonFrame(buttonIndex):
Returns the current frame of the actionbar button at buttonIndex, taking into account the click status.
-
EEex_GetActorAnimation(actorID):
Returns the actor's animation, (as defined in ANIMATE.IDS; stored at offset 0x28 of the .CRE, or optionally overridden by the actor structure at offset 0x30).
-
EEex_GetActorAreaRes(actorID):
Returns the actor's current area resref as a string.
-
EEex_GetActorBaseCharisma(actorID):
Returns the actor's base charisma, (defined at offset 0x23E of the .CRE).
-
EEex_GetActorBaseConstitution(actorID):
Returns the actor's base constitution, (defined at offset 0x23D of the .CRE).
-
EEex_GetActorBaseDexterity(actorID):
Returns the actor's base dexterity, (defined at offset 0x23C of the .CRE).
-
EEex_GetActorBaseIntelligence(actorID):
Returns the actor's base intelligence, (defined at offset 0x23A of the .CRE).
-
EEex_GetActorBaseStrength(actorID):
Returns the actor's base strength, (defined at offset 0x238 of the .CRE).
-
EEex_GetActorBaseWisdom(actorID):
Returns the actor's base wisdom, (defined at offset 0x23B of the .CRE).
-
EEex_GetActorClassScript(actorID):
Returns the actor's class script, (defined at offset 0x250 of the .CRE, or optionally overridden by the actor structure at offset 0x60).
-
EEex_GetActorCurrentAction(actorID):
Returns the ID of the action the actor is currently doing, based on ACTION.IDS.
For example, if the actor is currently moving to a point, it will return 23 because
MoveToPoint()
is action 23 in ACTION.IDS.If the actor isn't doing anything, it will return 0.
-
EEex_GetActorCurrentHP(actorID):
Returns the actor's current HP, (defined at offset 0x24 of the .CRE).
-
EEex_GetActorDefaultScript(actorID):
Returns the actor's default script resref as a string, (defined at offset 0x268 of the .CRE, or optionally overridden by the actor structure at offset 0x70).
-
EEex_GetActorDialogue(actorID):
Returns the actor's dialogue resref as a string, (defined at offset 0x2CC of the .CRE, or optionally overridden by the actor structure at offset 0x48).
-
EEex_GetActorDirection(actorID):
Returns the actor's direction, (as defined in DIR.IDS; stored at offset 0x34 of the actor structure).
-
EEex_GetActorGeneralScript(actorID):
Returns the actor's general script resref as a string, (defined at offset 0x260 of the .CRE, or optionally overridden by the actor structure at offset 0x58).
-
EEex_GetActorIDShare(share):
Returns the actorID for the given share / creatureData.
-
EEex_GetActorModalState(actorID):
Returns the actor's current modal state, (as defined in MODAL.IDS; stored at offset 0x28 of the global-creature structure).
-
EEex_GetActorMovementRate(actorID, adjustForHaste):
Returns the actor's movement rate. For example, if the actor has an effect (opcode 126 or 176) that sets their movement rate to 180, it will return 180.
If the actor does not have a movement-modifying effect, it will return the "move_scale" number in the creature's animation INI file.
If adjustForHaste is true, the movement rate number will be doubled if the actor is hasted, and it ...
EEex v0.5.3-alpha
Fixes:
- Splprot stat lookup shouldn't be completely broken
- Opcode #324 should only override strref if Special is non-zero
EEex v0.5.2-alpha
New Opcode Features:
-
(New) Opcode 402: InvokeLua. Calls a Lua function that matches the effect's Resref/Resource field. Maximum function name length is 8, and function names must be completely upper-case.
-
Opcode 280: If Special parameter is non-zero, all hardcoded graphical effects are suppressed. NOTE: This mechanism uses (new) stat 301; this stat should not be set manually and should not be used by modders.
EEex v0.5.1-alpha
- Fixed crash that occurs when creatures attempt to polymorph
EEex v0.5.0-alpha
New Opcode Features:
- Opcode 280 will use Param1 as the surge roll if it is non-zero. NOTE: This mechanism uses (new) stat 300; this stat should not be set manually and should not be used by modders.
New Lua Functions:
- EEex_GetGlobal() - Fetches a variable from the GLOBAL scope
- EEex_GetActorLocal() - Fetches a variable from an actor's LOCALS scope
- EEex_GetAreaGlobal() - Fetches a variable from an area's scope
- EEex_2DALoad() - Reads a 2DA file's data into memory
- EEex_2DAGetAtStrings() - Reads a value at an x-y key pair from the given 2DA data
Changes:
- Opcode 401 now follows how vanilla opcodes set stats, with the Special value being the (new) stat to set.
See Opcode 6 for an example: https://gibberlings3.github.io/iesdp/opcodes/bgee.htm#op6
Fixes:
- B3_Invis.lua should not forbid the engine from rendering invisibility effects
EEex v0.4.1-alpha
- Fixed incorrect macro byte which was breaking EEex_HookActionbar()
EEex v0.4.0-alpha
-
New loader executable adds support for BG:EE and IWD:EE; thanks @mrfearless!
https://github.com/mrfearless/EEexLoader -
EEex.exe should now be used to launch the game after installation
-
Patch addresses now softcoded in EEex.db
-
Raised the available number of stats from 202 to 65,737
-
Fixed nasty vanilla scripting bug, reported here:
https://support.baldursgate.com/issues/40185 -
B3_Hotke.lua now supports proper modifier key processing
EEex v0.3.0-alpha
Some opcode related changes:
-
(Change) Opcode #218: Fire subspell when all layers are lost
-
(New) Opcode #400: Set Temporary AI Script