Polymath - Automated Mod Making


Mod Introduction

Making BG3 mods can be difficult/frustrating. This program simplifies it.
Link to the mod

Installation Guide

Announcements:

2.6.0: You can now import the requisite files for custom feats in the new class creator (have to be manually edited after that). There is also a widget for automating localizing your localization file, saving you time.
2.5.0: A widget has been added to allow you to write out files for existing in-game spells that you can then modify and publish.
2.4.0: A checkbox before creating your class mod has been added to place any custom weapons/armor you added to your class mod to the tutorial chest.
2.3.0: A widget for creating custom passives is now available! I have also included the source code for your reference (source available, not open source). Please read the permissions tabs on the mod before remixing my software for your own projects. My software license roughly matches that of the BG3 Modder's Multitool.
2.2.0: I have added a widget for creating custom weapons and armor, which you can then add to your class mod. We're also back to using Baldur's Gate 3 Modder's Multitool for building your mods, due to the complexity of making custom equipment work.
2.1.0: Class/subclass custom icons now part of Polymath! For your icons to show up, you have to install ImprovedUI and ImprovedUI-Assets.
2.0.0: Polymath 2 is live! Polymath 2 brings widgets to automate production of custom spells/abilities and custom action resource points, which can then be loaded into your custom class/subclass mod.

Introduction

Learning how to mod is hard. My tool, Polymath, makes it easier by automating the creation of Baldur's Gate 3 mods, making producing a PAK file readily loaded into BG3 Mod Manager much easier. 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 5x 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. For icons to show up, you need to install ImprovedUI and ImprovedUI-Assets. After Polymath makes your mod, you must package the mod using the Baldur's Gate 3 Modder's Multitool, as shown in this video (use the timeline to navigate to "Package+Test Your Mod" at 7:24).

Making custom feats, as provided by Polymath: Video Guide on Custom Feats
Editing Existing Spells: Video Guide on Editing Existing Spells Widget
Placing Your Custom Weapons/Armor into Game World Chest: Video Guide on Treasure Table
Making Custom Weapons/Armor in Polymath, Adding Them to Your Class Mod: Video Guide on Using Equipment Widget
Customizing Your Mod at Every Level: Video Guide on Giving Your Class Goodies at Every Level
Adding Custom Icons to Your Mod: Video Guide on Adding Custom Class/Subclass Icons
Custom Spell/Ability and Action Resource Point Overview Video: Video Guide on Creating Custom Spells in Polymath
Class/Subclass Creation 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
Installing the Mods You Make: Video Guide on Installing BG3 Mod Manager and Testing

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 to 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 Python. 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.

As of 2.2, we are back to using the Modder's Multitool. Once you make your mod, you will need to package it using the BG3 Modder's Multitool. At present, I have the program copy a custom progressions file into Public/ModName/Progressions called "Progressions_EveryLevel.lsx". This is a file that basically reduces the work you have to do for customizing each level, and you can learn how to do this by this video: Video Guide on Giving Your Class Goodies at Every Level. If you do not edit it, the BG3 MM will refuse to package your mod. If you want to test out your mod without editing each level right away, you can safely delete that file (not "Progressions.lsx") to ensure it functions. The matching file will be there in the "req_files" folder in the same location for when you are ready for it.

FAQ

Q. My icon does not show up. What to do?
A. Install ImprovedUI and ImprovedUI Assets, here on Nexus.

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. Did this and still have issues? Go to "Add or Remove Programs", uninstall anything with "Python" in its name, then install Python as described above. Prior Python2 installations can cause conflicts, which this would resolve.

Q. I did everything right, but my mod did not appear on character creation. What should I do?
A. Before remaking your mod, remove the PAK file from BG3 Mod Manager, drag the PAK file into the "Inactive" column, THEN drag it into the "Active" column, then test it. If that did not fix it, try remaking your mod once. While insanely unlikely, it is possible that duplicate UUIDs or handles could occur.

Q. After creating my class, I am left with Durge and minimally clothed individuals in some weird shadow realm. How to get to the game?
A. You need to download the BG3 Mod Fixer, which is available here.

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 a false positive on particularly conservative 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, 67/68 marking the EXE file as safe). 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. 

Q. I edited my custom table for my entry and it did not update. What do I do?
A. Polymath imports your custom entries using the TXT files, not the Excel files, because the latter are much faster. To transfer your updates from the Excel files to the TXT files, double-click on the UpdateCustomDataFiles.bat.

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 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. If you edit the Excel data tables for your custom entries, double click on the UpdateCustomDataFiles.bat.

Q: I edited the source code, and now it does not work? What to do?
A: I only support Polymath as I have provided it (which I have reasonably extensively tested for performance). There are around 1500 lines of code in the program, which includes global variables shared across functions (and functions called across Python files). It would be difficult for me to advise you on what broke given that complexity (and why this project took 4 months and many hours to get to where it is today).

Future Plans (tentatively on-hold)

- 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
- 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 importing of custom icons for your custom spells, equipment, and action resource points
- Enable the creation of custom items to be added to the subclass (coming in further 2.X releases).
- Enable creating custom races (tentatively coming to 3.0 release).
- Enable the addition of multiple subclasses.
- Make EXE version of the program that has acceptable performance
- Provide a visual that tells a player what passives/boosts/etc are given as a default when making a new class/subclass to make it easier to pick an appropriate class/subclass for your mod. Perhaps have a confirm make mod page that also shows the spells/passives/equipment you chose to add to the class/subclass.
- Add option of adding dye to custom weapon/equipment
- Make a GUI interface for giving your class/subclass mod goodies at every level (make a supplemental widget that operates on built mods)
- Make importing custom spells/etc from other mods into Polymath easier, while still respecting others' copyright.

License

1. Similarly to the Baldur's Gate 3 Modder's Multitool, this software is source available, not open source. The software and all source code belongs to me, ImADoctorNotA (and my IRL name), copyrighted 2024. Polymath is unofficial fan content, neither endorsed nor approved by Larian Studios. The data tables, produced using my source code, contain data from Larian in-game assets that belong to them (Larian Studios Games Ltd) and Wizards of the Coast LLC. LSLib is owned by Norbyte and utilized in this software under their MIT license. For more information on my license and what I permit regarding the software's distribution and modification, please refer to the permissions section of this mod. In brief, you may not distribute this software or release a modified version of this software without my explicit permission. 

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). This is likely due to creating subclass mods that build off of existing classes, since the code works by editing those existing classes (to add your subclass as an option).
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). 

OhhLoz: Provided support on making class icons (and other icons) work for a custom class mod. Making class icons (and likely other icons) work with Polymath would have likely not been possible without their help. Download their Alternate Monk class here.

Logan McCracken: Picked up syntax issues that occurred in spells files and action resource points files.

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).
No comment