Baldur's Gate 3

File information

Last updated

Original upload

Created by

ImADoctorNotA

Uploaded by

KittenChariot1243

Virus scan

Safe to use

Tags for this mod

About this mod

Making class/subclass mods can be difficult/frustrating. This program simplifies it.

Permissions and credits
Changelogs
Donations
Announcements:

1.1.0: All classes and subclasses selectable (Shared and SharedDev) and seemingly functional, versus solely those in "Shared" game folders.
1.0.0 is live! Create custom subclasses AND classes!

Introduction

Learning how to mod is hard. My tool, Polymath, makes it easier by automating the creation of class and subclass mods, producing a PAK file readily loaded into BG3 Mod Manager. Additional functions will be incorporated in the future (feel free to leave suggestions on my Youtube how-to-use guide; I also have a tally guiding my energies). While I have re-enabled the comments section here so folks could discuss the program, please leave suggestions/bugs/etc in comments on the Youtube videos (Nexus does not provide notifications and it is easier for me to keep track of improvements there).

Support Me

This program took a lot of time to develop (along with the video tutorials on how to use it). Please support me through my Patreon or Ko-Fi or subscribe to my Youtube channel! Want to guide Polymath's development? Patreon subscribers have 3x more voting power for the next addition.

Patreon
Kofi
Youtube Channel

Tutorial/How To Use

Each Video Guide Shows How the Program Works at Each Step

Overview Video: Video Guide on Creating Class and Subclass Mods
Installing Required Software and How the Abilities/Spells Tab Works: Video Guide on Installing Required Software and Giving Your Subclass Spells
How Polymath Populates Your Class Descriptions/Progressions files: Video Guide on General Use of Polymath

To run this program, you need to have installed Python through the Microsoft Store (while you can install it from the developer's website, some users have issues running the program with that version, likely due the syntax variation, i.e. python vs python3 syntax), and need to install the pandas, pyperclip, and openpyxl packages, which can be done by running the following code in your command line after installing Python3. All these packages are open-source, so feel free to check them out!

pip install pandas 
pip install pyperclip 
pip install openpyxl 

Unzip the file and run the Polymath.bat file. Want to see what the bat file does? Right-click on it and open it with a text editor. Watch the above videos on my Youtube channel to learn how to use the tool and how it works. Have suggestions for the program or identified something that needs improvement/resolution? Leave a comment on the Youtube video (Nexus does not provide notifications)! If you make a mod and make it public, please mention that you used my tool and point toward this Nexus link. Per Larian's policy on mods, any mods you make cannot be monetized.

FAQ

Q. Polymath is not launching! When I run Polymath.bat, or Polymath.py, in the command line, it says there is an error importing pyarmor. Or Polymath opens then closes.
A. For whatever reason, files processed using pyarmor only like the Microsoft store version of Python 3.12, not the Python 3.12 release available on the official Python website. As long as you install the Microsoft store version of Python and the three packages listed above (you do not need to install pyarmor), the BAT file should work. I independently tested this on three computers, and it worked in all cases with the Microsoft version. It only had problems when using Python from the official python website (that uses a "python3" syntax to run python scripts, instead of "python"). 

Q. I did everything right, but my mod did not appear on character creation. What should I do?
A. First, try remaking your mod once to see if that fixes it. I randomly generated handles and UUIDs that can prevent your mod from appearing if they overlap with another handle/UUID in the game. This is exceedingly rare (when I once looked up the probability, you are more likely to get struck by lightning multiple times than this). If this does not resolve it and you did not do anything additional to your mod, let me know the parameters you used, and I'll see if I can resolve it for you with a hotfix.

Q. I want to make something special happen at level 2. How do I do this?
A. Copy the subclass level 1 node in the progressions file, paste it below (ensuring indentation is correct), change that node's level to 2, then have fun! I hope to automate this in the future. It is sadly a bit more complicated than a quick fix (like pasting nodes for each level in the template file) because each separate node needs to be edited by the program.

Q. Is there a way to make it so I don't have to install python or work on the command line (when installing python packages)?
A. Yes, but it will produce false positives on select antivirus scans (although still marked safe by Nexus with their experience of how many false positives are reasonably expected from modding software). I can build Python files into an EXE file marked as safe by Bitdefender Total Security and Nexus (that evaluates all files using VirusTotal, which uses > 60 antivirus tools). False positives are due to using pyinstaller, and not subsequently digitally signing the software (requires >$300/year to maintain a digital certificate). Such false positives are enough to make some users nervous. If there is enough interest, I can again provide an EXE file. I am also hesitant, as addressing user concerns about such false positives takes time. I am also exploring ways of giving users what they need without them needing to install packages via the command line (or at least installing less).

Q. I edited something in the mod files. What do I do?
A. If you changed the in-game name/description in the localization XML file, you will need to remake the localization file using LSLib. If you edit that, or anything else in the mod, you will also need to remake the PAK file. This is most easily done using the BG3 Modder's Multitool by ShinyHobo. You can follow my guide on how to do this (at the appropriate time points in the video) here.

Q: When will you make the source code available?
A: When I finish all updates to the program (roughly June 2024). 

Future Plans

- Make subclass optional, or only selectable at a later level, like with vanilla classes.
- Bring in option to select which dialogue tags you would like to include.
- Allow addition of regular action resource points, not just custom ones
- Process items/spells/passives tables to sort out which are valid UUIDs, which are problematic
- Change the in-tool names of things to what they are in the in-game localization file to make them more readable (so query loca file with the handles pulled from the tables).
- Enable addition of custom action resource points (coming in next release, 2.0.0)
- Enable creation of custom spells/abilities/passives/items to be added to subclass (coming in next major release, 2.X).
- Enable creating custom races.
- Enable producing nodes for every level.
- Add a debug mode that reduces the XP requirement for leveling.
- Add all levels into progressions file.
- Enable addition of multiple subclasses.
- With transition to txt files for data access (so 10x faster loading), create a BAT file to automate updating of txt files with Excel changes for more user-friendliness.

Caveats

1. This program is not meant to replace user creativity. As it stands on release, the program produces a bare-bones subclass mod (that is based on an existing subclass for an existing class). It will be available on character creation, but a user must put the work in to make the mod unique. My goal for this program (alongside my tutorial videos) was to provide users with a foundation to create amazing things.
2. It is possible that mods could have problems at some point. Modding and showing other people how to mod is an iterative process. I am always learning new things, as are others. Game updates can further change the dynamics and the modding rules. The mod may fail at some point, such as at later levels or with future updates. Folks using this tool are responsible for testing their mods to ensure functionality. I incorporated what I could to address anticipated bugs (and remain open to constructive feedback on improvement points). Nexus does not provide notifications for comments, so please leave any identified issues in a comment on my Youtube video, where I introduce this tool (in an above section).
3. Be wary of making (and installing) new subclass mods and then resuming/starting your main playthrough. I experienced game crashes when I uninstalled subclass mods mid-adventure, even when not in use. This resolved after I re-installed the mods that I removed, which should be listed in your save game (by stating the PAK files that are no longer available).
4. Modding will always be a hobby for me. I work full-time in medicine and research (basically, two full-time jobs), besides being a gamer dad. Consequently, my time is greatly limited. When it is clear that I cannot improve on this software due to time limitations, I will make the source code available for others. Until then, feel free to provide suggestions for software improvement, and I will get to it.

Acknowledgments

Norbyte: Created LSLib, which was made publicly available for discretionary use under an MIT license. LSLib is included with Polymath. Modding Larian games would not be possible without their contributions. LSLib Github is available here.

ShinyHobo: Created the BG3 Modder's Multitool. While none of this individual's source code (or software) was used to develop this program (respecting their copyright and wishes on their Github page, which is here), the tool was an extremely useful introduction for me as I was learning to mod BG3. Their work was part of the inspiration for this work, so if you are feeling generous, contribute to their Ko-Fi here. While my program theoretically automates the entire mod-making process, you still need fresh UUIDs and handles for tasks not yet covered in this program, such as when making new spells/abilities, covered in videos on my Youtube channel and coming soon here. You can obtain these UUIDs and handles extremely easily using their tool (and they regularly update their program). 

Solmyr Arkana: Picked up that OpenPyxl does not come with Python automatically. Check out their Youtube channel here!

DJminor92: Found the fix where the program does not run after installing the packages through the website installation on select PCs (installing it through the app store).

GamingBendu: Provided helpful suggestions on best presenting details for this mod. Check out their NexusMods page here, with new content coming soon!

ufailowell: Identified the information that was lost when skipping the SharedDev folder when populating your choices (along with pointing towards a fix with setting the Spell Casting Ability).