@Flashburn Sorry about your character death! I can only imagine getting so close to winning on a no-reload run. The farthest I've ever gotten on one was about Nashkel
I didn't even think about opcode 214 spells when I created this mod - its very lucky that they didn't completely break the interface in the first place. I can definitely see the benefit of this mod for Nahal's, with your whole spell book being displayed and all. I've just released v1.15 that adds proper support for opcode 214 spells
Edit: Small bug - if an opcode 214 spell is cast from an opcode 214 spell the extended spell menu closes. I don't think there is any way to fix this - but at least most cases of opcode 214 are fixed. Edit2: This could be fixed using a GUI command currently in the Icewind Dale beta and PSTEE. All we have to do now is wait.
@Bubb I noticed that if you try to cast a spell that uses opcode 214 from your quick-bar instead of opening the spell menu and then casting it, the spell opens using the default UI instead of using the Extended Spell Menu's UI.
@Flashburn Man, it seems like there is always something I forget! I've released v1.16 that should fix the issue, and a few others revolving around opcode 214. Also, wow, I never though I'd see anyone need the arrows to display in my spell menu. I'm glad that they are actually working for someone!
@Flashburn With the way the hotbar is hardcoded, it is currently not possible to fetch the spell counts for summons / non-pc characters. I wish there was a way to do it, but there currently isn't
I've been working on version 2.0, and I think it is shaping up to be relatively good build. Here are some of the features I've added:
- The spell level is now shown to the left of a slot row.
- Added a background to the previously invisible search area
- There are no longer empty spaces between gaps in spell-levels; this was changed to take advantage of as much screen space as possible.
- Perhaps the biggest change, the slots are completely scalable, meaning that the user / the mod can dynamically change their size at runtime. This can be used to automatically calculate the optimal spell slot size, and scale the slots automatically to fit all of them on the screen without the use of arrows.
- Slot rows will now "spill over" to the next row, making use of all of the previously wasted vertical space.
- A ton of bug fixes.
Here is a GIF of what I am currently working with:
While I'm working on the mod, does anyone have any comments / suggestions? How does the new version look compared to the old?
I'm finalizing version 2.0 for the extended edition - yet there is one decision I can't seem to make. I wanted to pass it off to you guys to see what you think. I am trying to decide whether to show the spell level for overflow slot rows or not. Here are two screenshots that show the difference between the approaches:
Repeated:
Not Repeated:
Thoughts? I am trying to make finding the spell level you want possible at a glance, so I am inclined to go with the non-repeating version, though the holes in the column just feel wrong for some reason...
The second one is better. The fact that the second row of a spell level doesn't have a number next to it actually makes it more obvious which level a spell belongs to. The first one makes the menu more visually busy and makes it harder to tell at a glance what level a spell is.
Congrats for your mod Bubb, it’s a must have! I really enjoyed the extended version, it’s so much easier compared to vanilla.
However, I find it a bit annoying in multiplayer, because of auto-pause and the darker screen: could you make them optional? It would be nice to look up a spell in main menu without force pause the game for the other players.
I also prefer the second one, great design for the 2.0 anyway. And sorry for my English, it’s not my native language
I can see how the auto-pause would be annoying in multiplayer - I didn't even think of that possibility; I'll definitely make it a toggleable option in version 2.0. By darker screen, just to clarify, do you mean the grey-scale effect the spell screen has on the game world, (I.E. the "background")? I can also make that an option, I just want to make sure I'm implementing the right toggle.
P.S. Your English is fantastic, no need to apologize for it!
Thanks a lot; and yes "background" is the right word. It makes the spell selection more visible, but sometimes I need to see clearly where my characters are to make a choice between a fireball or a skull trap for instance. I guess that is even more important if the game is unpaused
After much work, I've just finished up v2.0. Thank you all for your feedback, I've tried to incorporate as much of it as I could. Here's the changelog:
- Complete refactor of code, many bug fixes, many code style improvements.
- Slots are now variable in size, being able to be optimized and changed at runtime - either manually or
automatically.
- Added settings menu, including the ability to toggle the following options:
Auto-Pause: Controls whether the game is paused when the spell menu is opened.
Automatically Optimize Slot Size: Attempts to fit all slots on the screen without the use of arrows.
Darken Background: A slight dimming of the background, can be used with “Modal” turned off to create a
much more tolerable background.
Modal: Whether or not background GUI elements are blocked. This overlays a hardcoded darkening effect
on all background GUI elements, so this must be turned off to completely disable any darkening
effects. It is unknown what bugs can occur with this setting turned off.
- Spell levels are now displayed in the spell menu.
- Spell levels can now occupy more than one row; a maximum of 18 rows are able to be displayed at one time.
- Expanded maximum slot count per row to 50, for high resolution monitors with Scale User Interface
turned off.
- Improved installer; installation time reduced from several minutes to seconds.
- Many more internal and minor changes.
I love this mod, the biggest shame is that I have to either have this or a more comprehensive overhaul. I think that on the whole I prefer the many other QOL improvements that DragonSpear UI ( for BGI ) or Lefreuts offer over the much improved spell menu.
@MoonWolf Now that the mod is in a stable state, it should be possible for me to build compatibility patches for both Pecca's Dragonspear UI and Lefreut's enhanced UI. I'll see if I can get them out within a couple of days.
As for some news: I previously ran into a wall trying to port this mod to Icewind Dale because of a specific hardcoded limitation - but I have found a way around that recently. You guys can expect an Icewind Dale port soon.
I will be working on more compatiblity patches for the next few days, but for now I've completed two of the big ones, and I wanted to get them out to you guys.
Changelog: - Added support for Icewind Dale - Added support for Lefreut's enhanced UI (Standard Edition supported - SoD skin and Icewind Dale variants still not supported)
Technical post time! I almost have all of the compatibility patches done; I just wanted to detail a "discovery" I made while working on the EET patch. It is so stupidly obvious, that I've been overlooking it and doing things the hard way all this time. I wanted to post it here so that others don't make the same mistake I have...
Here it is: it is possible to wrap built-in LUA functions. Previously, I have been, by hand, changing every single relevant instance of Infinity_FetchString() to cover up those pesky SPELL_UUID: strings I'm sure some of you have encountered. It's a lot of work to do this; it normally takes me around an hour to manually do this part of a compatibility patch process. Well.. you know what I could have done instead? Throw this in a M_*.lua file:
original_Infinity_FetchString = Infinity_FetchString
Infinity_FetchString = function(strref)
return B3replaceSpellUUIDs(original_Infinity_FetchString(strref))
end ... that simple. Yep, I facepalmed so hard when I figured that out. I believe this could also allow different modders to wrap and alter the same function, though I don't know how feasible that would be. Let this be helpful to my fellow UI modders - don't make the same mistakes I have!
Yeah since functions are first class values you can just do that. Its actually a core part of how wow addons work, wrapping existing internal functions to add functionality or read data.
Technical post time! I almost have all of the compatibility patches done; I just wanted to detail a "discovery" I made while working on the EET patch. It is so stupidly obvious, that I've been overlooking it and doing things the hard way all this time. I wanted to post it here so that others don't make the same mistake I have...
Here it is: it is possible to wrap built-in LUA functions. Previously, I have been, by hand, changing every single relevant instance of Infinity_FetchString() to cover up those pesky SPELL_UUID: strings I'm sure some of you have encountered. It's a lot of work to do this; it normally takes me around an hour to manually do this part of a compatibility patch process. Well.. you know what I could have done instead? Throw this in a M_*.lua file:
original_Infinity_FetchString = Infinity_FetchString
Infinity_FetchString = function(strref)
return B3replaceSpellUUIDs(original_Infinity_FetchString(strref))
end ... that simple. Yep, I facepalmed so hard when I figured that out. I believe this could also allow different modders to wrap and alter the same function, though I don't know how feasible that would be. Let this be helpful to my fellow UI modders - don't make the same mistakes I have!
Any update on the Dragonspear UI++ patch? I'm waiting like a little kid in a candy store to be able to install your mod
@Runeks Unfortunately, I've hit a bit of a snag with the Dragonspear UI++ patch. As it turns out, my patching utility breaks when it comes in contact with the Dragonspear UI++ UI.MENU file; I've been trying to fix it for a couple of days now. I actually have the merged UI.MENU done, so you can use that until I have the installer working properly, (note that any other UI mods, other than Dragonspear UI++ will be uninstalled using this method). If you want to try it out now, you can follow these steps:
1. Run modmerge on your BGEE installation 2. Install Dragonspear UI++ 3. Install version 2.1 of my mod, picking option #2 (override) when prompted 4. Throw the attached UI.MENU (unzip it first!) into your override folder, replacing the already existing UI.MENU
Hopefully that works; have fun!
Edit: I should point out that some things might be broken using this method. I've noticed that the "Special Abilities" icon doesn't display when installing this way - if you can wait just a bit longer, I should have the patch out proper within a couple of days.
Edit2: Turns out that was my fault. It is fixed now.
@Runeks You no longer need to follow the steps I outlined earlier; I've updated the mod to support Dragonspear UI++
@chimaera Yep, Icewind Dale 2.5 is supported! (not 1.4, because this mod requires the 2.0 UI overhaul in order to function)
Version Extended v2.2:
This version includes a lot of the internal changes necessary in order to make this mod compatible with nearly all the large UI overhauls. There are now around ~13 different installation configurations that can be run - I tried to test them all, but some bugs might have slipped through. If you see anything out of the ordinary, don't hesitate to report it!
P.S. Always choose "1] Patch" when prompted! The override option is meant more for debugging than for actual use, though it is OK to use if you are only installing on top of a vanilla game.
Edit: The Lefreut's enhanced UI (SoD Skin) patch is currently broken due to missing BAM files. I'll see about fixing it soon.
Changelog: - Standardized GUI elements - Now compatible with 9 different UI bases: Baldur's Gate II Vanilla Baldur's Gate + SoD Vanilla Dragonspear UI++ Enhanced Edition Trilogy (BG2 Skin) Enhanced Edition Trilogy (SoD Skin) Icewind Dale Vanilla Lefreut's enhanced UI (BG2 Skin) Lefreut's enhanced UI for IWDEE Lefreut's enhanced UI (SoD Skin)
@Bubb, just tried installing it with Dragonspear UI++ and it didn't work at all I got a warning when I started BG: "Unfinished/closed/something string near 'Greater Malison' in some .lua file.. I forgot to write it down of course.. Might've panicked a bit in my hurry to get it working again :P
Once in game, when I click the "cast spell"-button, it shows the buttons of your spell menu in the top and darkens the background, but no spells show up, no matter what I tried.
Any ideas what might be wrong? (Although my game is quite heavily modded besides the UI)
@Runeks Oof, that's not good. The good news is that it has nothing to do with the UI.MENU patching, which is the most temperamental part of the process. It sounds like a mod has an unusual name for one of its spells, and I failed to escape the string properly. Could you run the installer to get back to the broken state (might want to back up your game folder before you do this), and then zip up M_B3SpIn.lua (found in your override folder) and attach it here?
@Bubb, I've attached the M_B3Spln.lua file along with a screenshot of the error/warning
I opened up the lua file in VSCode myself and found the problem easily enough. As you said, it seems like the "Greater Malison" string wasn't escaped/cut off properly, so it ended up like this:
['212'] =
{
['name'] = 'Greater Malison
(Enchantment/Charm)
Level: 4
Range: 50 ft.
Duration: 2 rounds/level
Casting Time: 4
Area of Effect: 30-ft. radius
Saving Throw: None
The spell allows the caster to adversely affect all the Saving Throws of <PRO_HISHER> enemies. The effect is applied to all hostile creatures within the area of effect. Opponents under the influence of this spell make all Saving Throws at a penalty of -4.',
['original_name_strref'] = 25937,
['resref'] = 'DW#BFST',
['spellType'] = 1,
['spellLevel'] = 6,
['spellIcon'] = 'SPWI613B',
},
Just a small update for now to fix the error that @Runeks was experiencing. I will have a fix out soon for the missing BAMS in the Lefreut's enhanced UI (SoD Skin) patch.
Changelog: - Small patch to fix an edge case in some modded installs where newlines included in spell names would cause LUA error.
Another bug fix update; yes, yes, calm your excitement! I finally got around to fixing the LeUI-SoD patch, so that's a plus.
Changelog: - Fixed the LeUI-SoD patch - Verified that all the patches work (they do!) - Fixed a lot of minor alignment issues, especially regarding the left-align mode
Comments
Sorry about your character death! I can only imagine getting so close to winning on a no-reload run. The farthest I've ever gotten on one was about Nashkel
I didn't even think about opcode 214 spells when I created this mod - its very lucky that they didn't completely break the interface in the first place. I can definitely see the benefit of this mod for Nahal's, with your whole spell book being displayed and all. I've just released v1.15 that adds proper support for opcode 214 spells
Edit: Small bug - if an opcode 214 spell is cast from an opcode 214 spell the extended spell menu closes. I don't think there is any way to fix this - but at least most cases of opcode 214 are fixed. Edit2: This could be fixed using a GUI command currently in the Icewind Dale beta and PSTEE. All we have to do now is wait.
I noticed that if you try to cast a spell that uses opcode 214 from your quick-bar instead of opening the spell menu and then casting it, the spell opens using the default UI instead of using the Extended Spell Menu's UI.
Man, it seems like there is always something I forget! I've released v1.16 that should fix the issue, and a few others revolving around opcode 214. Also, wow, I never though I'd see anyone need the arrows to display in my spell menu. I'm glad that they are actually working for someone!
With the way the hotbar is hardcoded, it is currently not possible to fetch the spell counts for summons / non-pc characters. I wish there was a way to do it, but there currently isn't
Version Extended v1.17:
Changelog:v1.17: Added support for BGEE with SoD.
- The spell level is now shown to the left of a slot row.
- Added a background to the previously invisible search area
- There are no longer empty spaces between gaps in spell-levels; this was changed to take advantage of as much screen space as possible.
- Perhaps the biggest change, the slots are completely scalable, meaning that the user / the mod can dynamically change their size at runtime. This can be used to automatically calculate the optimal spell slot size, and scale the slots automatically to fit all of them on the screen without the use of arrows.
- Slot rows will now "spill over" to the next row, making use of all of the previously wasted vertical space.
- A ton of bug fixes.
Here is a GIF of what I am currently working with:
While I'm working on the mod, does anyone have any comments / suggestions? How does the new version look compared to the old?
Repeated:
Not Repeated:
Thoughts? I am trying to make finding the spell level you want possible at a glance, so I am inclined to go with the non-repeating version, though the holes in the column just feel wrong for some reason...
However, I find it a bit annoying in multiplayer, because of auto-pause and the darker screen: could you make them optional? It would be nice to look up a spell in main menu without force pause the game for the other players.
I also prefer the second one, great design for the 2.0 anyway. And sorry for my English, it’s not my native language
Thank you for your kind words!
I can see how the auto-pause would be annoying in multiplayer - I didn't even think of that possibility; I'll definitely make it a toggleable option in version 2.0. By darker screen, just to clarify, do you mean the grey-scale effect the spell screen has on the game world, (I.E. the "background")? I can also make that an option, I just want to make sure I'm implementing the right toggle.
P.S. Your English is fantastic, no need to apologize for it!
Major Version Extended v2.0:
After much work, I've just finished up v2.0. Thank you all for your feedback, I've tried to incorporate as much of it as I could. Here's the changelog:- Complete refactor of code, many bug fixes, many code style improvements. - Slots are now variable in size, being able to be optimized and changed at runtime - either manually or automatically. - Added settings menu, including the ability to toggle the following options: Auto-Pause: Controls whether the game is paused when the spell menu is opened. Automatically Optimize Slot Size: Attempts to fit all slots on the screen without the use of arrows. Darken Background: A slight dimming of the background, can be used with “Modal” turned off to create a much more tolerable background. Modal: Whether or not background GUI elements are blocked. This overlays a hardcoded darkening effect on all background GUI elements, so this must be turned off to completely disable any darkening effects. It is unknown what bugs can occur with this setting turned off. - Spell levels are now displayed in the spell menu. - Spell levels can now occupy more than one row; a maximum of 18 rows are able to be displayed at one time. - Expanded maximum slot count per row to 50, for high resolution monitors with Scale User Interface turned off. - Improved installer; installation time reduced from several minutes to seconds. - Many more internal and minor changes.
Now that the mod is in a stable state, it should be possible for me to build compatibility patches for both Pecca's Dragonspear UI and Lefreut's enhanced UI. I'll see if I can get them out within a couple of days.
As for some news: I previously ran into a wall trying to port this mod to Icewind Dale because of a specific hardcoded limitation - but I have found a way around that recently. You guys can expect an Icewind Dale port soon.
Version Extended v2.1:
I will be working on more compatiblity patches for the next few days, but for now I've completed two of the big ones, and I wanted to get them out to you guys.Changelog:
- Added support for Icewind Dale
- Added support for Lefreut's enhanced UI (Standard Edition supported - SoD skin and Icewind Dale variants still not supported)
Here it is: it is possible to wrap built-in LUA functions. Previously, I have been, by hand, changing every single relevant instance of Infinity_FetchString() to cover up those pesky SPELL_UUID: strings I'm sure some of you have encountered. It's a lot of work to do this; it normally takes me around an hour to manually do this part of a compatibility patch process. Well.. you know what I could have done instead? Throw this in a M_*.lua file:
original_Infinity_FetchString = Infinity_FetchString Infinity_FetchString = function(strref) return B3replaceSpellUUIDs(original_Infinity_FetchString(strref)) end
... that simple. Yep, I facepalmed so hard when I figured that out. I believe this could also allow different modders to wrap and alter the same function, though I don't know how feasible that would be. Let this be helpful to my fellow UI modders - don't make the same mistakes I have!
Unfortunately, I've hit a bit of a snag with the Dragonspear UI++ patch. As it turns out, my patching utility breaks when it comes in contact with the Dragonspear UI++ UI.MENU file; I've been trying to fix it for a couple of days now. I actually have the merged UI.MENU done, so you can use that until I have the installer working properly, (note that any other UI mods, other than Dragonspear UI++ will be uninstalled using this method). If you want to try it out now, you can follow these steps:
1. Run modmerge on your BGEE installation
2. Install Dragonspear UI++
3. Install version 2.1 of my mod, picking option #2 (override) when prompted
4. Throw the attached UI.MENU (unzip it first!) into your override folder, replacing the already existing UI.MENU
Hopefully that works; have fun!
Edit: I should point out that some things might be broken using this method. I've noticed that the "Special Abilities" icon doesn't display when installing this way - if you can wait just a bit longer, I should have the patch out proper within a couple of days.
Edit2: Turns out that was my fault. It is fixed now.
Thanks a bunch for putting this up for me - I'm sure it'll be just as amazing to play with as it looks!
You no longer need to follow the steps I outlined earlier; I've updated the mod to support Dragonspear UI++
@chimaera
Yep, Icewind Dale 2.5 is supported! (not 1.4, because this mod requires the 2.0 UI overhaul in order to function)
Version Extended v2.2:
This version includes a lot of the internal changes necessary in order to make this mod compatible with nearly all the large UI overhauls. There are now around ~13 different installation configurations that can be run - I tried to test them all, but some bugs might have slipped through. If you see anything out of the ordinary, don't hesitate to report it!P.S. Always choose "1] Patch" when prompted! The override option is meant more for debugging than for actual use, though it is OK to use if you are only installing on top of a vanilla game.
Edit: The Lefreut's enhanced UI (SoD Skin) patch is currently broken due to missing BAM files. I'll see about fixing it soon.
Changelog:
- Standardized GUI elements
- Now compatible with 9 different UI bases:
Baldur's Gate II Vanilla
Baldur's Gate + SoD Vanilla
Dragonspear UI++
Enhanced Edition Trilogy (BG2 Skin)
Enhanced Edition Trilogy (SoD Skin)
Icewind Dale Vanilla
Lefreut's enhanced UI (BG2 Skin)
Lefreut's enhanced UI for IWDEE
Lefreut's enhanced UI (SoD Skin)
Once in game, when I click the "cast spell"-button, it shows the buttons of your spell menu in the top and darkens the background, but no spells show up, no matter what I tried.
Any ideas what might be wrong? (Although my game is quite heavily modded besides the UI)
Oof, that's not good. The good news is that it has nothing to do with the UI.MENU patching, which is the most temperamental part of the process. It sounds like a mod has an unusual name for one of its spells, and I failed to escape the string properly. Could you run the installer to get back to the broken state (might want to back up your game folder before you do this), and then zip up M_B3SpIn.lua (found in your override folder) and attach it here?
I opened up the lua file in VSCode myself and found the problem easily enough. As you said, it seems like the "Greater Malison" string wasn't escaped/cut off properly, so it ended up like this:
['212'] = { ['name'] = 'Greater Malison (Enchantment/Charm) Level: 4 Range: 50 ft. Duration: 2 rounds/level Casting Time: 4 Area of Effect: 30-ft. radius Saving Throw: None The spell allows the caster to adversely affect all the Saving Throws of <PRO_HISHER> enemies. The effect is applied to all hostile creatures within the area of effect. Opponents under the influence of this spell make all Saving Throws at a penalty of -4.', ['original_name_strref'] = 25937, ['resref'] = 'DW#BFST', ['spellType'] = 1, ['spellLevel'] = 6, ['spellIcon'] = 'SPWI613B', },
instead of like this:
['212'] = { ['name'] = 'Greater Malison', ['original_name_strref'] = 25937, ['resref'] = 'DW#BFST', ['spellType'] = 1, ['spellLevel'] = 6, ['spellIcon'] = 'SPWI613B', },
Now how to fix that in your install-script I have no idea.. Might know code, but WeiDU is still wizardry to me
Version Extended v2.3:
Just a small update for now to fix the error that @Runeks was experiencing. I will have a fix out soon for the missing BAMS in the Lefreut's enhanced UI (SoD Skin) patch.Changelog:
- Small patch to fix an edge case in some modded installs where newlines included in spell names would cause LUA error.
Thank you.
Version Extended v2.4:
Another bug fix update; yes, yes, calm your excitement! I finally got around to fixing the LeUI-SoD patch, so that's a plus.Changelog:
- Fixed the LeUI-SoD patch
- Verified that all the patches work (they do!)
- Fixed a lot of minor alignment issues, especially regarding the left-align mode