Skip to content

[MOD] EEex (v0.10.2-alpha)

1343537394048

Comments

  • BubbBubb Member Posts: 1,000
    edited January 2022
    Here's a sneak peak at timer visualizations:

    Edit: Apparently the forum doesn't like me embedding this file. Here's a link: https://imgur.com/fd4Zfi1

    Not really happy with how they look. Any ideas on how to display them?
  • FlashburnFlashburn Member Posts: 1,847
    I understand you don't want to clutter the main UI too much, but the bars could stand to be just a little thicker for readability. The blue bar could be changed to an easier-to-see cyan or light blue instead of dark blue. As far as placement goes, I've got nothing.
  • v1ldv1ld Member Posts: 22
    Placement looks fine to me. An option would be to layer it over the portrait itself, perhaps to the right side because it's easier to find something that small when it's right against the edge.

    Looks great on the whole, by the way.
  • BubbBubb Member Posts: 1,000
    edited January 2022
    I've pushed the timer module to master; anyone who wants to try it out can download master here.

    Since my last post I've changed the dark-blue color to cyan, and made the timer bars hide if nothing on the character is using them. Here's a preview:

    Red = Modal action like Find Traps or Turn Undead.
    Green = Contingency spell that checks conditions every so often, like Globe of Blades or Contingency.
    Blue = Spell/Item cooldown aura.

    Like other EEex modules, you enable it by opening override/EEex_Modules.lua after installing and by changing:
    ["B3Timer"] = false,
    
    to
    ["B3Timer"] = true,
    
    Post edited by Bubb on
  • v1ldv1ld Member Posts: 22
    Amazing. Thank you!
  • UlkeshUlkesh Member Posts: 209
    Hello, great mod. I've got a few feature requests:

    1) Would it be possible to add a sub menu for EEex inside Baldur's gate options, so you can actually toggle the options from there, rather than having to tweak the .ini? Would be extremely cool.

    2) I've tried Bubb-spell menu on a sod-less install. Would it be possible to make it compatible even with people that do not enjoy Siege of Dragonspear?

    3) I'm a fan of Olvynchuru stuff. I tried installing some of the component from his mods to no avail. Post here: https://forums.beamdog.com/discussion/comment/1182271/#Comment_1182271
  • OlvynChuruOlvynChuru Member Posts: 3,075
    Good work so far on the update for 2.6! Here are some more features I'd like you to reimplement before I can update my EEex mods.

    * Opcode 401 - Set Extended Stat
    * Opcode 408 - Projectile Mutator (along with the three projectile hooks).
    * The various hooks for existing opcodes, especially the ones for opcodes 42, 62, and 280.
    * Opcodes 400, 404, 405, 406 and 407.
    * The hook that makes invisible creatures visible while a character that can see invisibility is selected.
    * The various other new BCS triggers (EEex_IsImmuneToOpcode, EEex_HasDispellableEffect, EEex_MatchObject, EEex_MatchObjectEx).

    Also, there are several features from IWD2EE's IEex that would be great to have in EEex as well.

    * EEex_Extern_OnPostCreatureProcessEffectList(creatureData) - A function that is called for every actor on every tick after effects are processed.
    * EEex_JumpActorToPoint(actorID, pointX, pointY, bSendSpriteUpdateMessage) - Teleports a creature without applying an effect.

    These last two things would let me reimplement my flying and height-changing functions as they are in IWD2EE (which is much less clunky than the way I implemented them in EEex).
  • BubbBubb Member Posts: 1,000
    Ulkesh wrote: »
    Hello, great mod. I've got a few feature requests:1) Would it be possible to add a sub menu for EEex inside Baldur's gate options, so you can actually toggle the options from there, rather than having to tweak the .ini? Would be extremely cool.

    2) I've tried Bubb-spell menu on a sod-less install. Would it be possible to make it compatible even with people that do not enjoy Siege of Dragonspear?

    The latest version's installer asks you if you want to enable the modules, so at least they are visible now. I'll look into the spell menu.



    @OlvynChuru: Thanks for the list, it helps to stay organized. I've reimplemented Opcode 401 - Set Extended Stat. Basically you:
    • Add an entry to the end of STATS.IDS.
    • (Optionally) add an entry to X-STATS.2DA to define the stat's minimum, maximum, and default values. (row label is the stat name, as listed in STATS.IDS.

    The opcode itself should work the same, and should be integrated as it was with CheckStat* and SPLPROT. You can poll the stat from lua with EEex_Sprite_GetExtendedStat().
  • EclaTriompheEclaTriomphe Member Posts: 4
    Hello~!
    Is there any chance for you to have checked "vs melissan stoneskin bug" that I've written about?
  • MordekaieMordekaie Member Posts: 269
    I am on the process to build my EET modlist. Is it relevant to incorporate EeeX in my modlist ? I am planning to install it right after EET core unless you have other recommandation.
  • morpheus562morpheus562 Member Posts: 250
    Mordekaie wrote: »
    I am on the process to build my EET modlist. Is it relevant to incorporate EeeX in my modlist ? I am planning to install it right after EET core unless you have other recommandation.

    It depends, do you plan on using an mods that require EEex?
  • MordekaieMordekaie Member Posts: 269
    Mordekaie wrote: »
    I am on the process to build my EET modlist. Is it relevant to incorporate EeeX in my modlist ? I am planning to install it right after EET core unless you have other recommandation.

    It depends, do you plan on using an mods that require EEex?

    Yes. I will probably include (after some testing, EET compatibility...) :

    Bubb's Spell Menu Extended
    Bubb's Revert Pathfinding Tweak
    Olvyn Tweaks (probably partially compatible with EET)
    Skills and Abilities
    okz8i77698r2.png

    I haven't try them yet but they are very appealing to me. Any other suggestions ?

    I am not sure about their EET compatibility as they are not yet part of Kathos Mod Compatibility List for EET (except your "deprecated" Thieving Skills for Bards mod that is in the list). EEex also is not in the list.

  • morpheus562morpheus562 Member Posts: 250
    I can confirm Skills and Abilities is EET compatible, I just haven't gotten around to adding it to the EET Compatibility list yet.
  • LeiluLeilu Member Posts: 64
    e4in84j6tnkc.png
    Hi,
    I guess the bars should be the same size as the portraits and aligned with those of Tiax and Garrick.

    3440*1440 monitor
    DragonsprearUI++
  • BubbBubb Member Posts: 1,000
    Leilu wrote: »
    e4in84j6tnkc.png
    Hi,
    I guess the bars should be the same size as the portraits and aligned with those of Tiax and Garrick.

    3440*1440 monitor
    DragonsprearUI++

    Two things:
    1) Apparently the portrait UI elements scale (and can be non-default in DragonspearUI++), I don't account for this.
    2) The timer module scans RIGHT_SIDEBAR to find the portrait locations. DragonspearUI++ defines two copies for each portrait, (one for normal portraits and one for the large portraits option), of which the timers latch onto the large portraits.

    I'll look into improving compatibility.
  • BubbBubb Member Posts: 1,000
    v0.9.5-alpha:
    • Improved timer module's compatibility with Dragonspear UI++. — @Leilu
  • LeiluLeilu Member Posts: 64
    Wow! Thank you
  • kungfuhobbitkungfuhobbit Member Posts: 169
    Thankyou thats awesome!
    FR: could the bars drain rather than fill?
  • AerothornAerothorn Member Posts: 6
    After doing an otherwise succesful modded EET install, I get the following warning at launch: "[string "M__EEEX.lua"]:3: [!] ERROR: EEex not active. Did you forget to start the game with InfinityLoader.exe?"

    The first thing I did was check my Weidu log to see that EEex installed correctly (it did and it's the very first thing after EET in the load order.) I then tried manually launching Infinity Loader.exe outside of Project Infinity, but got the same error. Does anyone have any insight as to what the error could be and how to fix it?
  • gatperdutgatperdut Member Posts: 15
    edited April 2022
    Hey Bubb, I love the timer and the spell effect modules. They have made playing a much smoother experience! Amazing!

    Do you think it's feasible for additional modules to list extra actor information, like:
    * Status effect immunities - stun, blindness, that sort of thing.
    * Innate enchantment immunities - +3 or greater, etc. Or damage type resistances, 100% crushing e.g.
    * Effects on attack, like level drain, dispell, or a lich's paralyzing touch.
    * Show how fatigued characters are.
  • PeccaPecca Member Posts: 2,178
    Hi. Is the latest version compatible with Siege of Dragonspear? Fresh install gets me a "failed attempting to start" error using Infinity Loader. If I add SiegeOfDragonspear.exe to InfinityLoader.ini, it starts with an error "EEex not active". It launches though, but I don't know if there are any side effects.
  • BubbBubb Member Posts: 1,000
    FR: could the bars drain rather than fill?
    I might make this a file-edit option if I find time.



    Aerothorn wrote: »
    After doing an otherwise succesful modded EET install, I get the following warning at launch: "[string "M__EEEX.lua"]:3: [!] ERROR: EEex not active. Did you forget to start the game with InfinityLoader.exe?"
    I'm not sure why you would be getting that. Could you upload your WeiDU.log and try starting InfinityLoader.exe from the command line and see if any errors are logged?

    (if you don't know how to open the game with cmd, extract the attached zip's contents to your game's base folder and double-click RUN.bat).



    gatperdut wrote: »
    Do you think it's feasible for additional modules to list extra actor information, like:
    * Status effect immunities - stun, blindness, that sort of thing.
    * Innate enchantment immunities - +3 or greater, etc. Or damage type resistances, 100% crushing e.g.
    * Effects on attack, like level drain, dispell, or a lich's paralyzing touch.
    * Show how fatigued characters are.
    That's something I've wanted to do for a while, but I'm not very good at UI design or making new assets. I can't figure out how to display all that info to the player in a seamless way without it being an ugly full-screen overlay / an overwhelming text dump in the combat log.

  • BubbBubb Member Posts: 1,000
    v0.9.6-alpha:
    • Fixed standalone distributions of SoD not being handled. — @Pecca
  • OlvynChuruOlvynChuru Member Posts: 3,075
    @Bubb Is there still any chance you could reimplement these features?

    * Opcode 408 - Projectile Mutator (along with the three projectile hooks).
    * The various hooks for existing opcodes, especially the ones for opcodes 42, 62, and 280.
    * Opcodes 400, 404, 405, 406 and 407.
    * The hook that makes invisible creatures visible while a character that can see invisibility is selected.
    * The various other new BCS triggers (EEex_IsImmuneToOpcode, EEex_HasDispellableEffect, EEex_MatchObject, EEex_MatchObjectEx).

    My mods use most of these features.
  • AerothornAerothorn Member Posts: 6
    Bubb wrote: »
    Aerothorn wrote: »
    After doing an otherwise succesful modded EET install, I get the following warning at launch: "[string "M__EEEX.lua"]:3: [!] ERROR: EEex not active. Did you forget to start the game with InfinityLoader.exe?"
    I'm not sure why you would be getting that. Could you upload your WeiDU.log and try starting InfinityLoader.exe from the command line and see if any errors are logged?

    (if you don't know how to open the game with cmd, extract the attached zip's contents to your game's base folder and double-click RUN.bat).

    Really appreciate your offer to help! Was eager to play so ended up removing it from the installation; I may yet do a fresh install, if I do I'll definitely provide logs.

  • gatperdutgatperdut Member Posts: 15
    edited April 2022
    Bubb wrote: »
    gatperdut wrote: »
    Do you think it's feasible for additional modules to list extra actor information, like:
    * Status effect immunities - stun, blindness, that sort of thing.
    * Innate enchantment immunities - +3 or greater, etc. Or damage type resistances, 100% crushing e.g.
    * Effects on attack, like level drain, dispell, or a lich's paralyzing touch.
    * Show how fatigued characters are.
    That's something I've wanted to do for a while, but I'm not very good at UI design or making new assets. I can't figure out how to display all that info to the player in a seamless way without it being an ugly full-screen overlay / an overwhelming text dump in the combat log.


    Yes that's tough to display all at once. Something I can think of is splitting the information by type, and follow the same approach as with the spell effects scroll overlay on shift+hover, but assign different trigger keys per type?

    * ctrl for damage resistances
    * alt for status immunities
    * ctrl+alt for on-hit effects, maybe?

    I think the fatigue bit might not be out of place on the hold-tab text with the name and HP.

    In general the game lacks feedback so much that going in turn a bit overboard with it (and mostly only for certain enemies with lots to display) might be warranted. I'm drooling at the possibility of this! The spell effects has made the game SO much more enjoyable already.
    Edited because I screwed the quotes.
  • K4f4rK4f4r Member Posts: 14
    How about an option to make green bars (from Timer component) only show up in combat? I know what they represent, they simply bother me when I am just traveling around.

    I can't possibly imagine why would I want to know when my contingency triggers when no enemy is in sight. There obviously is some condition for it in-game, given how music changes in combat. There are also mods that supposedly make you faster outside of combat (never used them myself, I don't know much more about it).
  • gatperdutgatperdut Member Posts: 15
    K4f4r wrote: »
    I can't possibly imagine why would I want to know when my contingency triggers when no enemy is in sight.

    Might be useful for an "on see enemy" chain contigency, perhaps.
  • BubbBubb Member Posts: 1,000
    edited May 2022
    OlvynChuru wrote: »
    @Bubb Is there still any chance you could reimplement these features?
    <snip>
    * EEex_MatchObject, EEex_MatchObjectEx.

    EEex_MatchObject is now reimplemented. I redid this one to not be so hacky, its implementation is 100% external to the engine and customizable. So it works a bit differently, here's the rundown:
    473 EEex_MatchObject(S:Chunk*)
    473 EEex_MatchObjectEx(S:Chunk*,I:Nth*,I:Range*,I:Flags*X-MATOBJ)
    

    Chunk: A Lua string to run for every object that passes the internal checks. The current object is stored into the EEex_MatchObject global; return true/false from this string to match the object.

    Nth: Returns the nth match based on the current prioritization mode. Starts at 0, default behavior is to return the nth nearest object. The FARTHEST flag returns the nth farthest object, (shocking).

    Range: The range objects must be within relative to the caller to be eligible for matching. If this value is 0 it uses the caller's current visual range, and if this value is -1 range is ignored (+ the IGNORE_LOS flag is implied).

    Flags:
    • IGNORE_LOS: Objects are eligible for matching regardless if the caller can see them.
    • MATCH_NON_SPRITES: Objects other than sprites are eligible for matching.
    • IGNORE_INVISIBLE: Default behavior is to use the caller's ability to see invisible creatures. Invisible creatures are ignored when this flag is specified.
    • MATCH_INVISIBLE: Default behavior is to use the caller's ability to see invisible creatures. Invisible creatures are always eligible for matching if this flag is specified.
    • MATCH_SLEEPING: Sleeping creatures are eligible for matching.
    • MATCH_DEAD: Dead creatures are eligible for matching, (+ implies MATCH_BACKLIST).
    • MATCH_BACKLIST: Backlist creatures are eligible for matching, (knocked-out creatures if MATCH_SLEEPING, dead creatures if MATCH_DEAD, some other object types if MATCH_NON_SPRITES).
    • PRIORITIZE_BACKLIST: Default behavior when MATCH_BACKLIST is specified is to search the frontlist, and if no match was found search the backlist. This flag prioritizes backlist objects as if they were frontlist objects, (+ implies MATCH_BACKLIST).
    • MATCH_ONLY_BACKLIST: Only backlist objects are eligible for matching, (+ implies PRIORITIZE_BACKLIST).
    • FARTHEST: Switches the prioritization mode to prefer objects farther away from the caller.
  • OlvynChuruOlvynChuru Member Posts: 3,075
    @Bubb Great!
Sign In or Register to comment.