Skip to content

[MOD] EEex (v0.10.2-alpha)

1282931333448

Comments

  • OlvynChuruOlvynChuru Member Posts: 3,075
    There are still some problems with giving new classes skills. For some reason, when a class that doesn't normally get skill points levels up, the number of points they get is NOT equal to the LEVEL_POINTS entry in THIEFSKL.2DA. Instead, it depends on both START_POINTS and LEVEL_POINTS. It also depends on which class is being leveled up, and whether the character is singleclassed or multiclassed. Here are the skill points some classes get on leveling up:

    Fighter (single or multiclassed) Skill Points = START_POINTS - LEVEL_POINTS
    Ranger (single) Skill Points = START_POINTS + LEVEL_POINTS
    Mage (single) Skill Points = START_POINTS - LEVEL_POINTS
    Mage (multi) Skill Points = START_POINTS - (LEVEL_POINTS * 2)
    Cleric (multi) Skill Points = START_POINTS - LEVEL_POINTS

    These are the classes I've tried so far. I don't know if there are other quirks. I've only tested this in Baldur's Gate: Siege of Dragonspear, so I don't know if it's a problem across games.
  • GrammarsaladGrammarsalad Member Posts: 2,582
    edited February 2020
    OlvynChuru wrote: »
    There are still some problems with giving new classes skills. For some reason, when a class that doesn't normally get skill points levels up, the number of points they get is NOT equal to the LEVEL_POINTS entry in THIEFSKL.2DA. Instead, it depends on both START_POINTS and LEVEL_POINTS. It also depends on which class is being leveled up, and whether the character is singleclassed or multiclassed. Here are the skill points some classes get on leveling up:

    Fighter (single or multiclassed) Skill Points = START_POINTS - LEVEL_POINTS
    Ranger (single) Skill Points = START_POINTS + LEVEL_POINTS
    Mage (single) Skill Points = START_POINTS - LEVEL_POINTS
    Mage (multi) Skill Points = START_POINTS - (LEVEL_POINTS * 2)
    Cleric (multi) Skill Points = START_POINTS - LEVEL_POINTS

    These are the classes I've tried so far. I don't know if there are other quirks. I've only tested this in Baldur's Gate: Siege of Dragonspear, so I don't know if it's a problem across games.

    Weird. But that's helpful, thanks. Oddly, this works out the way I've designed advancement in many cases. Eg fighters (except barbarians) start with 20 and are supposed to gain 10 per level (and nicely, 20-10=10). Mages are weird, but I was thinking of only doing a fixed progression for them anyway (for things like item crafting). Looks like I'm definitely doing it that way.

    Edit: if I find more weirdness, I'll let you know
  • OlvynChuruOlvynChuru Member Posts: 3,075
    @Bubb How feasible is it to create a Screen Actions opcode that calls an action hook function each time the creature would begin an action? There are a lot of things I could do with this.
  • OlvynChuruOlvynChuru Member Posts: 3,075
    @Bubb Wait, nevermind. You won't believe this, but I think I've just figured out how to make a Screen Actions opcode myself! I'll see if I can get it working by tomorrow.
  • BubbBubb Member Posts: 1,000
    edited March 2020
    @OlvynChuru: Looks good, thanks! Though, appears exampl3.spl isn't provided for the installer to copy over. Please either provide that here / do another pull request that adds it, (as I accidentally merged with that hiccup, so master doesn't install right now).

    (Anyone who wants to download from master can use this branch for now; will delete once fixed.)


    Edit: All fixed now.
    Post edited by Bubb on
  • BubbBubb Member Posts: 1,000
    @OlvynChuru: Awesome, thanks!

    Unfortunately, every time I attempt to increase the max visual range the engine crashes. There's probably a way to do it, but right now I'm at a loss.
  • BubbBubb Member Posts: 1,000
    edited March 2020
    @OlvynChuru: Thanks for the pull requests - awesome stuff. Both are merged, sorry for the delay.



    I've also done a small commit to master that fixes a crash if you use F11 (UI Edit Mode) alongside a mod that loads in a .MENU file using EEex - (only a few EEex modules + my spell menu mod were using this feature).
  • OlvynChuruOlvynChuru Member Posts: 3,075
    @Bubb Thanks!

    Could you fix another crash? The function EEex_GetActorStat() crashes the game if the actor doesn't exist (which could happen if the actor used DestroySelf or EscapeArea). It seems like you made some hardcoded version of EEex_GetActorStat() that replaces the normal function. I already made it so the normal function in M__EEex.lua returns 0 if the actor doesn't exist (by checking EEex_IsSprite(actorID)), but the hardcoded version of EEex_GetActorStat() doesn't do this. Could you fix this?
  • BubbBubb Member Posts: 1,000
    edited March 2020
    @OlvynChuru: Initially the creature struct expansion was going to be optional, so the "new" version of the function that accounted for EEex's expanded stats was defined there. Anyways, that never happened - I've removed the hardcoded version of EEex_GetActorStat() in EEex_Cre.lua and updated the one in M__EEex.lua.
  • QuitschiQuitschi Member Posts: 11
    edited March 2020
    Hey, so I found your spell menu mod, which is awesome, but unfortunately the game alwys crashes at spellhold. At first I assumed it was some issue with EET, but now I tried again on an installation without it and it still crashes. At this point I assume it's an issue with SCS, which is a shame, but anyways, here are the weidu log and crash dump files.

    Weidu.log
    crash.dmp

    To reproduce the crash you have to simply play the game until spellhold and after the conversation with irenicus the game crashes reliably.

    Edit:So I made another test setup with just EEex and SCS and it crashes, so it most likely is the issue here.
    Not sure if this particular crash dump is more helpful than the other one, but here it is anyways.
    crash.dmp
    Post edited by Quitschi on
  • FlashburnFlashburn Member Posts: 1,847
    @Quitschi
    I play with SCS as well but I have EEex installed before the Spell Menu, and I haven't had any issues. (although after taking a screenshot while holding Shift to activate Spell Inspection mode so that it's visible in said screenshot, opening the spell menu and then pressing escape to leave the spell menu causes a crash every time it's attempted.)
  • QuitschiQuitschi Member Posts: 11
    edited March 2020
    Interesting, what was your other install order like? Because the order of spell menu and EEex doesn't seem to matter at all for me. Did you install EEex before everything?
    Because I use EET install tool for bigger setups like SCS and tried installing EEex before running that, but it did not work at all.

    Maybe we don't have quite the same SCS components installed and that has something to do with it?

    What is spell inspection mode?

    Edit: So i tried installing SCS manually after EEex and it just fails.
    Post edited by Quitschi on
  • FlashburnFlashburn Member Posts: 1,847
    I have EEex and the Spell Menu installed very last, after everything else and after SCS. I use EET too but not the EET install tool.
  • BubbBubb Member Posts: 1,000
    EEex v0.8.4-alpha is now released!

    Changelog:
    New Features =>
    • Extended skills can now be given to classes that do not normally have skills.

    • (Lua) EEex_GetMenuArea():
      Returns the given menu's x, y, w, and h components - or nil if passed invalid menuName.

    • Can now add action hooks using an opcode:
      Opcode format:
      opcode = 401
      param1 = 1
      special = 999
      resource = (action hook function)
      

    More goodies from OlvynChuru documented in these posts =>
    Fixes =>
    • Made Extended Skills compatible with some UI mods.
    • EEex_LoadMenuFile() shouldn't cause crash when using F11.
    • EEex_GetActorStat() shouldn't crash when passed invalid actorID.
    • EEex_GetSpellData() should work regardless if the engine has previously accessed the spell's data.
  • BubbBubb Member Posts: 1,000
    edited March 2020
    @Flashburn: Surprisingly, that's not my fault. The engine's Lua system goes haywire if you take a screenshot while holding down shift, (no idea why!). You can try opening B3_EfMen.lua and changing
    B3EffectMenu_Key = EEex_GetKeyFromName("Left Shift")
    
    to another key - so you're not holding down shift when taking the screenshot.



    @Quitschi: I believe I have fixed your crash in v0.8.4-alpha, try it out and see if it works.

    Also, EEex should be installed after SCS, as there is an incompatibility regarding SPELL.IDS at the moment. Other than that, EEex can be put basically anywhere in the install order. The spell menu should be placed after UI overhauls.
  • QuitschiQuitschi Member Posts: 11
    @Bubb: Awesome, my first attempt went without a crash and then Bhaal in the dream sequence refused to enter the keep, lol. But that's unrelated.
  • QuitschiQuitschi Member Posts: 11
    @Bubb: Awesome, my first attempt went without a crash and then Bhaal in the dream sequence refused to enter the keep, lol. But that's unrelated.
  • FlashburnFlashburn Member Posts: 1,847
    I thought about another feature request, one that is probably easy to make. Would it be possible to implement a "frame advance" button? When pressed while paused, it unpauses, advances the game by 1 frame, and then pauses again.

    This would be useful during pitched battle scenarios that require tight timing, especially if you have many autopause options turned on. With this feature, you won't have to hope an autopause doesn't inadvertently resume the game because you didn't double-tap the space bar fast enough.
  • BubbBubb Member Posts: 1,000
    @Flashburn: Ask and you shall receive!

    ltiwg6r3bdb8.gif

    To enable, open EEex_INI.lua and flip the B3_Time entry to true.

    Default key to timestep is "d", (if you want to change this option, open B3_Time.lua and alter the first line). When the game is paused, hitting the timestep key will advance the game by one tick. Holding the key for half a second lets time flow normally while it is down, repausing the game when the key is released.
  • FlashburnFlashburn Member Posts: 1,847
    @Bubb
    I love you.
  • MoonWolfMoonWolf Member Posts: 23
    So a few pages ago you showed off a way to change the ui scaling. I'm currently using a 1440 screen which makes the default scaled option just a little too small. Any chance you could publish a module for that. I don't even need a fancy slider or other ui integration. I'm perfectly happy to tweak by hand.
  • OlvynChuruOlvynChuru Member Posts: 3,075
    @Bubb

    Here's another idea.

    Some of the wild surges change effects of the spell being cast, or change properties of the spell's projectile. Examples are things like:

    * Halving the speed of the projectile.
    * Changing the projectile of the spell to a different projectile.
    * Making it so the spell has no saving throw.

    I was wondering if we could make a hook that runs when a character casts a spell, and lets us modify the effects of the spell or projectile in the way we want (e.g. so an effect could double the AoE of a character's spells).

    Using EEex_DemandResData() to modify the spell or projectile data directly doesn't work right, because the changes made to the spell or projectile this way apply to everybody who casts the spell, rather than to a specific instance of the spell.
  • BubbBubb Member Posts: 1,000
    edited April 2020
    @OlvynChuru: I'll look into it. Might only be limited to what the wild surges can already do, as that functionality is baked in. The spellcasting functions that control this are some of the most complex functions in the engine.
    (Thanks for the pull request on GitHub btw, merged.)

    @MoonWolf: I finished the UI scaling module - it's currently in master. Enable in EEex_INI.lua by flipping the B3_Scale entry to true.

    The "Scale User Interface" graphics option doesn't function when this module is enabled. While in game, you can use the debugging console to set a certain Width target (in pixels) to render at, like so:
    B3Scale_SetWidth(1920)
    

    acv9csvvkeap.gif

    Note that if you accidentally input a crazy value that makes the UI unusable / crashes the game, you can remove the B3Scaling->Width line of your Baldur.lua to restore the default behavior.
  • MoonWolfMoonWolf Member Posts: 23
    Works exactly as described with no issues I've noticed. Thank you very much.

    NG20L4C.jpg

  • Ludwig_IILudwig_II Member Posts: 369
    I've been using this mod for a while now (in addition to many other mods), and my games consistently crash every half hour or so. The crashes always happen when I try to open my inventory, at a random point. It happens more frequently right after I load a game, if I enter inventory screen immediately. I use Dragonspear UI++, which might potentially have some incompatibility with this.

    It's not a dealbreaker for me, as I got used to occasional crashes and I don't mind it. Just wanted to let you know in case it helps. By the way, the crashes happen in both BG1, SoD and BG2.
Sign In or Register to comment.