Browse games

Browse games

My library

My library

My content

My content
My account
mod.io

Adding New Classes or Subclasses

Report guide
Share

Guide

Let's build an imaginary class, Battlemage, that is proficient in heavy armour and many two-handed weapons. We’ll also give it access to a couple of spells.

Start by making a new mod for our class. In this guide, we’ll use Battlemage as the mod name.

Defining Progressions

The first step is to define progression for our new class. This tells the game what the character receives with each level.

Open the Uuid Object Editor.

We’ll add a Progressions table inside our mod.

Start editing your newly-created Progressions table by double-clicking on it.

Let’s start with the Name column. This is a technical name that will be used in data, so avoid using spaces. Once you’ve added a Name and pressed Enter, the UUID column should be automatically populated.

Let’s set the Level to 1, and ProgressionType to 0. This tells the game that this is indeed a class progression.

Next, we’ll need to fill in the TableUUID. This TableUUID is shared between all levels of a class. One quick trick here is to first copy and paste the value from the UUID column into the TableUUID…

…and then right-click on the UUID cell, and select “Regenerate Value” from the dropdown.

You should now have different values in the UUID and TableUUID columns.

We want to make sure our Battlemage has a few specific traits:

  • 2 spell slots

  • Proficiency with all armors

  • Proficiency with all weapons

We use the Boosts column to handle this. You can add various proficiencies and resources into Boosts, separating each one with ;.

In this example, our final line will look like this:
ActionResource(SpellSlot,2,1);Proficiency(LightArmor);Proficiency(MediumArmor);Proficiency(HeavyArmor);Proficiency(Shields);Proficiency(SimpleWeapons);Proficiency(MartialWeapons)

To make use of those spell slots, our Battlemage will need some spells, so we’ll need to build a list of spells they can have.

Let’s create a new SpellLists table in the Lists section of the left panel:

We will create two lists in this table: one for cantrips, which will all be given to the character, and a second list for the level 1 spells the player will have to choose from.

Spells in BG3 all have a prefix for their type. For example, Shocking Grasp is referenced as Target_ShockingGrasp. Any spell can be referenced by this structure:

Type_TechName

If you’ve made your own spells, perhaps following the How to make a simple spell [[TODO : Update link]] guide, you can use those spells here. The sample spell from that guide, FireTouch, would here have to be referenced as Target_FireTouch.

In this example, we’ll give the player Shocking Grasp (Target_ShockingGrasp) and True Strike (Target_TrueStrike) cantrips, and let them select one spell from among Burning Hands (Zone_BurningHands), Jump (Target_Jump), and Longstrider (Target_Longstrider).

This means that our two lists in the SpellLists table will look like this:

Your UUIDs will of course be different.

Now, we’ll take the UUIDs for each list and copy them back into our Progressions table, into the Selectors column.

Since we want to give the character all of the listed cantrips (no choice required), we’ll use AddSpells(). Add the UUID for the cantrip list in between the parentheses.

We want player to choose only one spell from the list, so here we’ll we use SelectSpells(). Add the UUID for the spell list in between the parentheses, followed by two more arguments:

SelectSpells(<UUID>,1,0)

  • The 1 means the player will have to pick 1 spell

  • The 0 means the player will be able to replace 0 of their previous spells

The final line in the Selectors cell should look similar to this (don't forget to change UUIDs for your own):
AddSpells(714d1e3d-b436-4af7-9b40-107383e25a5d);SelectSpells(8fd1fe1e-ad9f-4d2c-a4c7-dcc687fc5ae6,1,0)

Let's add couple more levels to the Progression.

Selecting the whole row by clicking on the row number:

Pressing Ctrl+C and Ctrl+V. The row should have been duplicated underneath, but with a new UUID.

Change the Level in your new row to 2 (or higher). Repeat this a few more times, increasing the Level each time, until you have the first 5 levels.

At this time, verify that the TableUUID is the same for all rows, and that each row has a unique UUID.

We can give the Battlemage a few extra cool features by defining more Boosts and Selectors for each additional level. We want to fill in the Progressions table as pictured below (note that your UUIDs will almost certainly be different from this image!):

Let’s go through the additions and explain what’s going on.

  • Level 2, Selectors: SelectPassives(<UUID>,1,Battlestance)

    • This allow the Battlemage their choice of Battlestance.

    • <UUID>: This is the UUID of the PassivesList the Battlemage is choosing from.

      • In this example, we’ll just reuse an existing list from the Shared>Lists>PassiveLists table:

      • Find the Ranger fighting styles, and copy the UUID value. Paste this value into the <UUID> part of the Level 2 Selectors: SelectPassives(a0bdb113-1cce-45ac-94fb-72d4c3f207e9,1,Battlestance)

    • 1: How many Passives the player can choose.

    • Battlestance: This is purely flavour text – sometimes you don’t want the passives to be presented as “Passives”. With this, the game will be asking the player to select a Battlestance, rather than a Passive. If we didn’t want this flavour text, we could simply write SelectPassives(<UUID>,1).

  • Level 2-5, Boosts: ActionResource(SpellSlot,2,3)

    • This gives the Battlemage extra ActionResources. The example here gives the Battlemage an additional two level 3 spell slots.

      • SpellSlot: The type of ActionResource given.

      • 2: The number of SpellSlots given.

      • 3: The level of SpellSlot given.

  • Level 4, AllowImprovement: Yes

    • Marking AllowImprovement as Yes gives the Battlemage access to a Feat at this level, just like other classes.

  • Levels 3-5, Selectors: AddSpells(<UUID>)

    • For these, we’re going to go back to our SpellLists table and add a few more rows, defining what Cantrips we’d like to give the Battlemage at levels 3, 4, and 5. Remember that these will all be given. Here’s a basic example of what you could do:

    • Once you’ve set up the new rows in SpellLists, copy the UUIDs for each list and paste them into the Progressions table, inside the AddSpells() for the relevant level’s Selector field. Using the above example, it’ll look like this:

Adding Subclasses

We’ll add three subclasses to our Battlemage class: Macemage, Staffmage, and Swordmage. Make three new rows in your Progressions table, and name them accordingly.

Use the UUID → TableUUID copy trick to give each of these new subclasses an unique TableUUID, and regenerate their UUIDs. You should now have four different TableUUIDs in your Progressions table, like so:

For each subclass, let’s set the Level to 3. That’s the level at which the Battlemage will get access to them.

We’ll also set ProgressionType to 1, which will define it as a subclass progression.

Class Descriptions

Now that we have defined what our class does up to level 5, we have to add definitions for the class in order for it to show up in Character Creation. To do this, we add a ClassDescriptions table:

As always, we start by filling up the Name. Use the same name that you used for the Progressions: Battlemage.

Into ProgressionTableUUID column, copy over the main class TableUUID from Progressions table (in the screenshot earlier, it would be the one in the green box).

There are a few other fields we need to fill in here.

  • DisplayName: This is what the player sees in-game.

  • Description: This is the description of the class in the Character Creation.

  • Primary Ability: We’ll use Strength.

  • Spell Casting Ability: We’ll use Intelligence.

  • Learning Strategy: For classes, this should always be AllChildren.

  • Must Prepare Spells: Does this class need to prepare spells like a Druid or Cleric? We’ll say No.

  • Can Learn Spells: Can this class learn spells from scrolls like a Wizard? No.

  • CharacterCreationPose: We’ll use one that all classes use - 0f07ec6e-4ef0-434e-9a51-1353260ccff8

  • BaseHp: This is how much HP the class starts with. For the Battlemage, we’ll go with 12.

  • HPPerLevel: This is how much HP the class gains with each level. Let’s say 7.

  • CommonHotbarColumns, ClassHotbarColumns, and ItemsHotbarColumns describe the default hotbar separations. We will use the default values of 9, 5 and 2 respectively.

    • The sum of these must always be 16.

Multiclassing

If you want your class to appear as an option for multiclassing, you'll need to add an extra row to the ClassDescriptions table.

Under the main Battlemage class, add a new row. This row will be a secondary level 1 that will act as multiclassing progression. Everything can be identical to the original Battlemage level 1 row, except:

  • UUID must be different

  • IsMulticlass should be Yes

It will look something like this:

Now when you go to multiclass, your class will show up among the multiclassing options. The rest of the levels will come from the progressions you’ve already set up.

Save Your Work

Before we continue, make sure to save everything you have done up until this part!

Did you do it?

When you’ve confident you’ve saved your work, close and restart the editor.

Continuing with Class Descriptions

Reopen the ClassDescriptions table in the Uuid Object Editor.

We’ll need to add three new rows - these will be for our subclasses. Fill in the Name for each row with the same subclasses we started setting up earlier.

In the ParentUUIDs for these subclasses, select the class name from the dropdown - in our example, that’s Battlemage.

Let’s first fill in the subclasses' ProgressionTableUUIDs. The process is the same as for the class - open your Progressions table and find the TableUUID associated with each subclass. Copy and paste the TableUUID for each subclass from the Progressions table into that same subclass’s ProgressionTableUUID field in the ClassDescriptions table.

Next, you’ll need to fill the DisplayName, ShortName, and Description for the class and subclasses. The ShortName is, as it sounds, a shorter way of referring to that subclass. This mostly appears on the in-game character sheet. If you don’t fill in a ShortName for the Battlemage subclasses, they’ll appear on the character sheet as:

  • Macemage Battlemage

  • Staffmage Battlemage

  • Swordmage Battlemage

That’s a bit repetitive, so we’ll fill in the ShortNames as Mace, Staff, and Sword. This way, the character sheet will instead say:

  • Mace Battlemage

  • Staff Battlemage

  • Sword Battlemage

For the rest of the columns (L to O), copy the values from the class over to the subclasses.

Save Your Work Again

Once again, make sure you have saved all of your changes.

After saving, close the editor, then reopen it.

Adding Subclass Selection to the Class

Let’s reopen the Progressions table in the Uuid Object Editor.

Go to the level 3 progression of our Battlemage. In the SubClasses column, we add all 3 new subclasses by double clicking on them in the dropdown. This allows player to choose which subclass they want to be when they reach level 3 of Battlemage.

With this, we’ve finished the main technical set up of our class and subclasses! Let’s save our work.

Quick Testing

To test our creation thus far, let’s load into a level. For our purposes, Basic_Level_A is fine.

Once the level has loaded, switch into Game Mode.

Put your cursor over the character portrait, then press Ctrl+Shift+L to level up your character. In the game, open the Level Up screen, and click on the Add Class button.

Select Battlemage.

You can see the class description here, as well as the two cantrips we defined for the initial level. 

Finish your level up into a Level 1 Battlemage, then level yourself up a few more times until you get to choose a subclass.

You’ll also notice that our character is missing equipment, and that the Battlestance at level 2 is called Class Passives. Let's fix these issues now.

Equipment

Equipment is defined in the Stats Editor. Just as we created other tables, let’s create a new Equipment table.

Fill in the Name with something you can identify as the Battlemage’s starting equipment. Following our own internal guidelines, we’ll use EQP_CC_Battlemage, but you can do what you like provided that it doesn’t contain spaces.

We’ll put Melee as the Initial Weapon Set, since we want our Battlemage to show off their Greatsword. In the following columns (1, 2, 3, …), you can define additional items that the character will start with. Trying to fill those fields will open a massive dropdown with all possible items - you can search to narrow down the possibilities.

Let’s use WPN_Greatsword, ARM_ScaleMail_Body, and ARM_Boots_Leather.

Now, let’s open up the ClassDescriptions table. Use the Name you defined above (EQP_CC_Battlemage) and put it inside our the ClassEquipment field of the class. Do this for the class only, not the subclasses.

Progression Descriptions

Next we’ll fix the Class Passives name. For this we'll need to create a new ProgressionDescriptions table in the Progressions section:

Let’s fill in the DisplayName and Description we want to show to players for our selection. In our case we want to call it Battle Stance. Remember that SelectPassives(<UUID>,1,Battlestance) we stuck into one of our Progressions earlier on?

This "Battlestance" is now important here. We put it into SelectorId column. Your row should look like this:

Now, if you were test it in Game Mode again, you should see that the selection is properly named:

TIP: Having issues seeing this correctly named in game mode? Try closing and restarting the editor.

Class Icon

We just need to change our class and subclass icons, both in Character Creation and on the hotbar. 

Preparing Assets

First, we need the images that we'll use for our class and subclass icons. These should be 300x300 pixel .dds files.

IMPORTANT: These icons must be named identically to the class or subclass inside the ClassDescriptions UUID table.

You’ll need to place the images inside your mod folder like so:

\Data\Mods\Battlemage\GUI\Assets\ClassIcons

\Data\Mods\Battlemage\GUI\AssetsLowRes\ClassIcons

Hotbar icons go here:

\Data\Mods\Battlemage\GUI\Assets\ClassIcons\hotbar

\Data\Mods\Battlemage\GUI\AssetsLowRes\ClassIcons\hotbar

That’s all! Your icons should now show up correctly in-game.

DDS Conversion Settings

if image.mode == "RGBA":
		if sRGBBool:
			target_mode = "BC7_UNORM_SRGB"
		else:
			target_mode = "BC7_UNORM"
	if image.mode == "RGB":
		target_mode = "BC1_UNORM"

Done!

Now you’ve made a very simple class with three subclasses.

Discussion
100+ comments

Log in to join the discussion!
First of all, thank you for the guide. I have an issue, though. The editor crashes when I level up the character a second time (i'm losing portrait when leveling the first time). As my game is modded, should i run the editor on a fresh version of BG3 ? edit: it was a "me" issue for the crash. I add the subclasses at the wrong level.
Does anyone knows where the reverberate condion is located I have looked almost all files and can't seem to find it. Please help
You can check this link, he uploaded all the data tables from the game so you can more easily search for the conditions you want. https://www.nexusmods.com/baldursgate3/mods/6318?tab=description Also, you can use https://bg3.norbyte.dev/ where you can search for anything and everything you want relating the game inner workings
Does anyone know how to go about adding wildshapes? Was hoping to make myself a druid subclass with specific wildshape options but I'm not sure where to start. For my example: Trying to add in an Eagle wildshape option to a subclass based around flying. There doesn't seem to be too much info out there regarding wildshape. Any help would be appreciated!
How does one edit the prepared spells slots? haven't seen how to do that anywhere....?
Hi everybody, i need advices from the community. I'm working on a homebrew class, and try to create a passive which allows the player to cast with bonus action instead of action Conjuration school spells. I found the command UnlockSpellVariant(SpellId('Type_Name')) and i know how to change action ressources, but is there a fast way to add all conjuration spells to my passive? Or i have to manually add all of them with this command? Thanks a lot for your answers!
I'd check how the Wizard conjuration subclass features, specifically level 6 and 10
Omg, why didn't I think about that before? Thx for the advice, i'll check it as fast as I Can.
I'm running into an odd issue. I have my spell lists put together so that all level 1 spells are together and then level 2 spells include all level 2 spells and then all level 1 spells, and so on through level 6 spells which have levels 6, 5, 4, 3, 2, 1 in that order. But when I test it in the mod toolkit I'm seeing level 1, 1, 3, 3, 3, 1, 3, 1 for the first row and 3, 3, 3, 3, 1, 3, 3, 3 for the second row and so on. I've double, triple, and quadruple checked the lists to make sure I didn't have a missing or extra semicolon somewhere or that it was really out of order. Also, I have Mystra Spells mixed in with my normal spell list and I know they don't show up in the toolkit, but I've had this issue even before I added those spells. Has anyone else seen this? Is it a bug or am I just crazy?
Actually I think I confirmed it to be a bug. When it's deployed it's all in order as it should be. It's only in the mod toolkit that things go all over the place!
Hi Everybody! I'm trying to join the Modder Community, i'm a beginner and it's a little hard for me to understand all the things. I'm trying to create a Homebrew class, i understand all steps, but one thing is annoying me. When i want to add cantrips and spells to my class, i put "SelectSpells" because my class has to pick them. But when i test it, my cantrips and my spells share the same spellList, but i did 2 differents UUID for them, how can i split my cantrips and my spells? I don't know if i explain good, i'm not english either. Thanks for your answers !
Use this for cantrips: SelectSpells(a12cd3e4-1a23-456b-a12b-12a3b4567891,1,0,,,,AlwaysPrepared) Also welcome to the modding community! I'm also new, but happy to help any way I can. :)
it works! thank you! i think i didn't search enough, i've found the answer this morning when i looked into the Shared progression Folder. Another question : when i want to add a fighting style list, i can't change the name, it stays as "select passives". I think i'm not wrong when i put "SelectPassives(UUID,1,Fighting_Style) in the Selector column. What's the matter? Edit : found the answer, forget it :D
um... how do i add a subclass to already exsisting base class?(like Druid)
Here's a video for you on creating a subclass for an existing class. You can skip to 1:40 to bypass his rambling. LOL
Where's "dds conversion settings" and how should i do that?
I've noticed a lot of these guides don't get responses to questions in the comments section. But just in case you haven't found this guide yet, here you go! @adding-skill-and-item-icons
I got elemental adept to work for giving a free feat at a certain level using selectpassives. Now I'm trying to add tough as a free feat, but I guess since it's only 1 and not an option I can't get it to work. Any idea how to get it to stick? I want to make sure that it can't be selected later on as a feat and have someone double-dip.
Hey, I added custom spells and cantrips to my class, but only the cantrips are appearing when creating the class or when leveling up. Does anyone have an idea why my spells are not appearing?
got it. ActionResource(SpellSlot,1,1) is needed in the boost column of the progression table.
And this is for beginners? Of course, I understand everything, but it was possible to do something in more detail, because I tried to do it, but then after the 10th attempt my passion faded away, and now I won’t touch this matter again until there are normal guides and not this
UPDATE: Disregard, I figured it out! :) I think I'm almost there! One of the two bugs I have remaining is that at character creation it doesn't give me the option to select any skills. The skill menu pops up, but it says 2/2 and there's no checkboxes showing up.
Where i convert png icon to dds?
It's under Project>Convert UI Assets
i already do that still not converted
Did you follow the file structure, and did you make sure to add the .png files into the converter before converting them? And, did you make sure that they were 300x300px images?
Yes gimp not opening the file
Gimp does not support .dds files. That said, when you do convert the files, you won't need to open them again - at that point, they're tied to metadata you don't want to accidentally mess with, otherwise your resources won't show up in-game. Converted files will show up in Data>Mods>>GUI>Assets (or AssetsLowRes) as [YourFileName].dds. It won't change the .png file itself, just create a .dds file with the same name in that file path. I'm not sure what else could be going on there without actually seeing it.
After converting assets the class icon doesn't appear
Is there a way to remove a spell at level up? There's some base class abilities I'd like to remove when choosing a subclass. The PassivesRemoved field can do this for passives obviously, but actions learned through AddSpells still remain.
How do you make a custom ActionResource though?
Look at the guide "Implementing Custom Action Resources with ImpUI"
I don't understand anything in dds conversion settings where that its or how to do it and whats rgba and rcb and bc7_unorm?
My ability score presets for my Eldritch Warden class aren’t showing up in CC. As well as my weapon, armor, and skill proficiency.
Hey, i followed the guide and everything works, but when i want to procced with levels 6-12 the toolkit closes, I know the game split the levels 1-5 in a folder(Shared) and 6-12 in another(SharedDev), but how do I do that? I don't understand o.O, should I create another class and use the UUID from my original class (the one 1-5) but this new class should be to 6-12?
no just all in one go there is no reason to split that except making it harder for yourself
I've noticed that this guide only goes up to level 5 and I see that in the Shared section of the UUID Object Editor. But if I go into the SharedDev Progressions table it has all 12 levels for all classes and includes pertinent levels for the sub classes. Should I be following SharedDev instead? Or is there some reason why I should stop at level 5 that I don't understand?
This guide is just an example, so they only go up to level 5. You can set your progressions up to level 12 (or even 20 if you wanted), it all depends on what you're trying to achieve.
Sorry, that part just threw me through a loop for a little bit. I've since figured it out. :)
How does one create custom Class Features, like Unwavering Mark if I am creating a subclass?
You'll need to create a passive (or two) that applies a status on the target. I did something similar with my Order Domain Cleric mod, it's the level 17 passive. You're welcome to download it and look at the code, if you think it'll help. First steps are go into Stats Editor>[Your Mod Name]>Stats>Passive (if it's not already there, you'll need to create it like you did the progressions list). Then, you'll have to go to column V (StatsFunctorContext) and set "OnDamage," if we're talking about Unwavering Mark. Then you'll have to set your conditions in column W (like saying that you have to make an attack on a target) and functors in column X (applying a status on the target). From there, the specifics would get a little tricky. In order to get the rest of that feature working properly, you'd probably need to create a second hidden passive that's not seen in-game, which would apply a status to yourself with an aura effect that detects if your marked target attacks someone other than you, and then applies an extra bonus action attack to you. As you can imagine, though, the world is your oyster.
Hello all, I have a few quick questions. I followed this guide (it should be said I have pretty limited experience making mods) and seem to have gotten most things working. I'm trying to make a ninja class mod which makes use of mostly monk and some gloomstalker ranger features. While testing things, I noticed 3 things that are sort of weird and was hoping someone might have some input to point me in the right direction to fix them. Firstly, and probably most importantly, while some of the spells and skills seem to have animations tied to them, most of them do not. E.g. If I use cloak of shadows my character does the usual animation and everything seems to be working as normal, but if I cast the darkness spell, while the spell triggers and a dark cloud forms, my character does not do any animation for the casting. Secondly, for some reason, while most of the monk features seem to be working, the deft strikes feature which changes your unarmed attacks to 1d4 damage dice, does not. E.g. If I use an unarmed strike and look at the combat log, it seems to be only rolling a 1 damage (which I believe is normal damage for unarmed strikes) not a 1d4. However, it does add my dex modifier which implies that dexterous attack feature is working as intended. I should also state that I found the entry for deft strikes in the STATS tab, but wasn't sure what I had to do to make it apply since it seems like other entries in the STATS tab are working automatically. Finally, and this issue is super minor, on the level up screen the devil sight feature shows as superior darkvision, but on the character tab (for instance if you open your inventory and look at your passive bonuses) it shows as devils sight. That last one is obviously not a huge deal, but its driving me mad trying to figure out why it does that. Any help or suggestions anyone can make would be appreciated.
Hi, I have the same problem with the monk damage, the stats are: 1) MartialArts_DextrousUnarmedAttacks -> Use "MonkWeaponAttackOverride()" to override the strength by dextery for bonuses and so on.... It;s is OK. 2) MartialArts_UnarmedDamage -> Use "MonkWeaponDamageDiceOverride(LevelMapValue(MartialArts))" to override the unarmed damage to 1d4, 1d6, 1d8 depending on the monk's level, but apparently only works for monks classes According to the toolking there is a function called WeaponDamageDiceOverride, so i figure this is useful for other classes except monks, but nothing happend. Please can someone help me to clarify this??? I only want to make a class with custom unarmed damage. Thanks.
Hey trying some things out for a custom class I am working on and was trying to set a dynamic range on a shout spell based on selections from a level up. The range cell though seems to only accept/validate number input and no logic inputs. Will I need to create custom versions of the spell with different ranges to be able to accomplish this?
Not the devs, but I think yes. That would be a decent solution. Use a passive to unlock the initial spell, then use a new passive to unlock the new version of the spell and remove the old passive. There may also be a way to modify the spell just using a passive that overrides the range. You might be able to use metamagic Distant Spell as an example of how to do that.
Thanks alot for the guide. I faced with the leveling up problem for 7 lvl, does anyone know how to fix this? I did everything like in the guide above, created a class and 2 subclasses for it, also added a few new spells and passives to it. I have all progressions lvl 1 to 12 complited. And everything working until im trying to lvlup to 7. No any problems with lvl 1 to 6, but when Im trying to test after to lvl 7 the gamemod in toolkit and in the game itself its complitly freezes and crushes after 2-3 minutes. So I cant check is everything okay. I was trying to rebuild passives that simmilar to already existing in the game to new ones but it doesnt change anything. I also tryed to fix this by making new project with 7-12 levels to separete them like Larian did it with Shared and SharedDev. I added 2 of this mods in the game but it also doesnt change anything. I have no idea what can be wrong because my game and toolkit were always good working and Ive never had lags or freezes before.
does anybody know how to spawn in caster mobs? i am trying to test reactions on enemy spell casts but idk how and i dont want to keep testing in game. if possible i'd love to test in the tool but cant figure out how to spawn anything other than a wolf
So everything with the class works perfectly fine and it does exactly what I'm hoping however when using the class mod, enemies don't attack, move, or anything. They just sit there for about 10-15 seconds and then end their turn. I don't know what's causing it or how to fix it! Any help would be great!
How do i have the +2 and +1 for abilities like strenth, dex, int, con, wis and charisma in character creation. When i make a lvl 1 of my class it doesnt have thos.
Add "SelectAbilityBonus(b9149c8e-52c8-46e5-9cb6-fc39301c05fe,AbilityBonus,2,1)" to Selectors.
In the UUID Object Editor you need to add an AbilityDistributionPresets which is located under CharacterCreationPresets.
How do you go about making subclasses for already existing classes? Do I copy the row from when the base class gets the subclass decision and just add the newly created path?
RMB on the original class' row, "override in (yout mod)" and it will create a clone that applies your new subclass (and everything else you want to do to it) in the game. Once the clone it's created, you can add your subclass' levels below as per this guide, but you can't add your subclass to the base class list until your subclass has a finished "ClassDescriptions" entry.
If you just copy paste the row where the base class gets a subclass decision, I think it instead creates two copies of the class in Character Creation. When I tried to overwrite the level 1 Paladin class to add another subclass that's what happened. If you want to truly override a file this guide might be helpful: @editor-overriding-resources I haven't actually tried it so I can't offer help beyond that. However, others have pointed out that creating mods that override original game files can cause conflicts if you download any other mods that try to do the same thing. So in my case I just made a new class that copied all the Paladin abilities, named it something else, and added my subclass to that.
For those who might have a little trouble due to unique individual circumstances, I'm attempting to cover the issues in my own toolkit guide found here: https://discord.com/channels/98922182746329088/1288194662795972639 For example, it contains a step-by-step solution to the problem of icons not popping up. I'll post the solution in this comment to avoid the potential frustration some may have at needing to click on a link to an external site. Step 8.5 - Potential Error Fix If your toolkit fails to remain open and continuously crashes after having placed your .dds image files into the folder structure as described in this guide, follow these steps. You might also have gotten an error like this (Missing MetaData) that pops up before the toolkit crashes. : Delete the .dds images that you had placed in the mods folders. Something is not right with how the .dds image files were created. We are going to be re-creating those image files using the toolkit. Use 300x300 pixels PNG versions of the image files. Copy them and paste them into the Assets folder. Paste them within the Class Icons folder. Paste them within the hotbar folder. Paste them within the AssetsLowRes folder. Paste them within the ClassIcons folder. Paste them within the hotbar folder. Within the toolkit, start a brand new project. Don’t worry. You can delete it right after this. Within the toolkit, click on “Project” at the top of the screen. It’s next to tools. Select UI Assets Converter Choose your selected mod. Click on “Add Files”. When selecting files, make sure to ONLY select the image files within the Assets folder first. Once those files are added, click OK. Repeat - Before selecting your files, copy the file location for the images within your ClassIcons folder. Paste that location in the Output Subfolder Space within the UI Assets Converter. When you click on Add Files, select only files from the ClassIcons. Repeat - Before selecting your files, copy the file location for the images within your hotbar folder. Paste that location in the Output Subfolder Space within the UI Assets Converter. When you click on Add Files, select only files from the hotbar folder. Repeat - Before selecting your files, make empty the Output Subfolder Space within the UI Assets Converter. When you click on Add Files, move on to the AssetsLowRes folder and do the same. Repeat - Before selecting your files, copy the file location for the images within your ClassIcons folder. Paste that location in the Output Subfolder Space within the UI Assets Converter. When you click on Add Files, move on to the ClassIcons folder and do the same. Repeat - Before selecting your files, copy the file location for the images within your hotbar folder. Paste that location in the Output Subfolder Space within the UI Assets Converter. When you click on Add Files, move on to the hotbar folder and do the same. You should now be able to safely load your intended mod and delete the temporary empty project. WAIT FOR THE PROJECT TO COMPLETELY LOAD BEFORE CLICKING ON ANYTHING TO AVOID ANOTHER CRASH.
This was super helpful thank you so much! I do want to add one thing, which is that when you go to the UI Assets Converter, it will automatically create the Assets and AssetsLowRes folders but you need to make the ClassIcons and hotbar folders within those manually. Once you've done that and you open up the UI Assets Converter again, make sure to fill in the Output subfolder space with the ClassIcons or hotbar folder name so that it actually puts the dds file in there. When I did this the first time I kept getting confused why the dds file was only showing up in Assets and AssetsLowRes despite adding the png file in the ClassIcons or hotbar folders.
Thank you for your comment. Edits have been made. :)
Hey I am trying to make a class that focuses on customizing auras. I intended to look at the paladin progression to identify Aura UUIDs/locations and implementations but I cant find class progression past lvl5 in the shared folders and couldn't find auras with a manual search. Do progression tables stop at 5? Is there a search function? Are auras considered spells or class actions? Thank you so much!
Game files are spread across multiple folders: Shared, SharedDev, Gustav, and GustavDev. The rest of the paladin progression files are located in SharedDev. There is a search function. If you Ctrl+F it will take you to the search bar. Make sure you click the label next to it so that it turns green and says "Global Search." It will only search within each editors files, ex. Uuid Object Editor or the Stats Editor. Auras are considered Shout spells but I'm still trying to figure out how to properly make one.
Oh great thanks for the heads up! Sounds like your a lot farther along than I am so Auras may be out of my reach if your still unsure on them. Ill take a look though and if I can find anything else about them on my end ill share.
I finally figured it out! Honestly, my main advice is to find the files for existing auras and spells that do similar things and try to model off of them. I found auras to be quite difficult compared to the spell in the basic spell guide because there are so many parts. You need a Shout spell but also two different Status_BOOST entries. The Shout spell allows you to define what statuses the aura will apply, the radius, who it targets, icons, descriptions and casting sounds/animations. The Status_BOOST entries allow you to compile everything you want to happen to targets affected by the aura. Having two separate entries allows you to differentiate between what you want to happen to you (the caster) and everyone else. For example, the Aura of Devotion has a Shout spell named AuraOf_Devotion and two corresponding Status_BOOST called AURA_OF_DEVOTION and AURA_OF_DEVOTION_BUFF. All Auras follow this basic pattern. I was creating an Aura of Conquest from the 5e subclass and also looked at the Spirit Guardians spell to figure out how to trigger damage each turn in a radius which none of the existing Auras do.
Actually pretty excited about this! current idea for my class is an Aura Shaper where there are several passive auras to choose from, then at higher levels have pulsed effects that add more utility. Is it possible to add more than the original two boosts? or have multiple auras active at a time? I know Paladins auras are mutually exclusive.
If I'm understanding correctly, you want to make an Aura that has options for you to pick from? For example, when you choose Spirit Guardians and you have to decide between a radiant or a necrotic aura? In that case, you need to define the SpellContainerID and ContainerSpells boxes. Using Spirit Guardians to illustrate because it's also similar to an Aura and is a Shout spell, it's actually made up of three spells that also have corresponding Status_BOOST entries like Paladin Auras. The three Shout spells are SpiritGuardians, SpiritGuardians_Necrotic, and SpiritGuardians_Radiant. The ContainerSpells box allows you to say that Spirit Guardians encompasses the Necrotic and Radiant versions of the spell, so you would say Shout_SpiritGuardians_Necrotic;Shout_SpiritGuardians_Radiant. Then on the SpiritGuardians_Necrotic and SpiritGuardians_Radiant spells in SpellContainerID you put Shout_SpiritGuardians to define which spell umbrella they belong to. I'm not sure what you mean by pulsed effects. Can you give an example? It is possible to add as many boosts as you want. Each individual Status_BOOST entry allows you to stack however many effects you want, for example if you wanted a spell that gave you advantage on an enemy as well as frightening them. The only reason to create more Status_BOOST entries is if you need to make sure different boosts apply to different groups. Going back to Spirit Guardians, you need to cast the spell on yourself so the aura moves with you, but you only want to apply debuffs and damage to enemies. I'm also not sure what you mean about Paladin Auras being mutually exclusive. Paladin classes have multiple auras that all stack on top of each other. Do you mean an interaction with some other kind of Aura? Hope this helpful!
Thanks for pointing out the spirit guardian, great way to group all the aura effects. I thought Paladin Auras were mutually exclusive. But doing some research it looks like they stack. May make the build overpowered if i go with a ton of auras. In stats>SharedDev>SpellData>Shout>Column BR "Requirement Condition" we can see values like "not HasStatus('AURA_OF_COURAGE')". I think this prevents you from using the same aura twice? Maybe this can be used to make things mutually exclusive? idk My idea is an Aura Class with subclasses for offense (debuff/damage auras), defense (combat buff/heal) and utility (mobility/skill buff). I was thinking that Levels 1-4 are a subclass selection which opens up a basic aura that has low level effects but with abilities that scale with level, maybe range/dice/etc... Basic auras would select from amongst a variety of options but only have one active at a time. Level 5-8 would unlock a new aura that is similar in theme but has greater effects and can stack with the basic aura. Same again for 9-12. My primary hold up is understanding spell effects and how they work and how I might pull off such a class. The Pulses though were an idea to utilize spell slots. As auras are always on normally the effects need to be a little weaker to justify. But maybe I could expend a spell slot to "Pulse" a greater effect of the aura. Honestly this just might be another self centered AOE spell but the idea is thematic more than anything else. I dont know how easy it is to cobble multiple effects into a spell. Ill have to look at eldritch blast to see how they accomplish the selection based modifications.
So for Aura of Courage when you cast it in game it is permanent unless you fall unconscious. The "not HasStatus('AURA_OF_COURAGE')" line you're looking at just makes it so you can't cast it on yourself while you already possess the buff. Honestly, I didn't add that line to my custom Aura and it doesn't make a difference. I can cast it on myself again and it just resets, getting rid of any benefits I had from the Aura before I recast it. If you wanted to balance your class by not having too many auras, you could link it to an Action Resource like Lay on Hands charges or Channel Oath charges so that you have many to choose from but can only cast so many. Lay on Hands is defined as a spell in the code but uses charges instead of spell slots, that way it wouldn't interfere with balancing the number of spell slots you need to be able to cast them effectively. Would that solve your issue? It should be possible to make the offensive, defensive and utility auras you describe, you would just need to find what all those different status effects are called in the code. Is there something in particular you're having difficulty finding? With the pulses it does sound like an AOE spell might be easier to accomplish what you're looking for. You can still style it as an Aura if you want it to be thematic. It's possible you can create it how you're describing it but I haven't gotten that deep into the code yet.
So i have been familiarizing myself with this for a while and am starting to actually put the spells together. From what I understand I need three entries then for an aura. The Mod>SpellData>Shout>Auraspell, the Mod>StatusData>Status_BOOST>Aura, and the Mod>StatusData>Status_BOOST>Aura_Buff. What I may be missing is how the shout spell calls the Boosts. Up till now eveything I have seen uses the UUIDs to call something else but shout spells simply seem to directly refrence the name in the spell properties with ApplyStatus(...) is this enough?
Yes, that's correct. You just need to define how long you want it to last. For example, if you want it to last permanently you would use ApplyStatus(AURA_OF_COURAGE,100,-1). The -1 indicates that you want it to be permanent. If instead you wanted it to last 10 rounds, you would change it to ApplyStatus(AURA_OF_COURAGE,100,10).
Hey I was looking to add custom Deities to the game, not really relevant to this guide in particular I know, but I was wondering if you might be able to assist with how to structure my asset folder to get icons to show up for Deities -- I'm not sure if the folders need a specific name or not
Found it, the path is, GUI\Assets\CC\icons_deities
Would love a guide on adding completely new class abilities/passives!
I cant get my class to show up in the toolkit after I level up? suggestions anyone?
Does it show up for level 1 and just not for leveling up? Or is it not showing up at all?
Does anyone know why the progression tables only go up to level 5? Where is the progression for lvls 6-12 defined?
If you're talking about this mod guide specifically, it's because it is just a tutorial - you can continue to define the rest of the levels in the same way shown in this guide, just continue to set the levels in the progression list. If you're talking about the rest of the levels for classes found in the toolkit itself, I've found that those data are spread among several folders, and may be incomplete.
Hey I'm recently making my a new mod and everything works but the icon. I have a total of 8 files stored(2 in each one) a .dds file and a png equivalent. Data\Mods\TrueNecromancer_5fd58dff-a9ab-3e23-86b1-cfd66b6897b2\GUI\Assets\ClassIcons Data\Mods\TrueNecromancer_5fd58dff-a9ab-3e23-86b1-cfd66b6897b2\GUI\Assets\ClassIcons\hotbar Data\Mods\TrueNecromancer_5fd58dff-a9ab-3e23-86b1-cfd66b6897b2\GUI\AssetsLowRes\ClassIcons Data\Mods\TrueNecromancer_5fd58dff-a9ab-3e23-86b1-cfd66b6897b2\GUI\AssetsLowRes\ClassIcons\hotbar And I'm getting this error. Message: [NOESIS ERROR] [D:\Jenkins\workspace\Repo\FW4\Main\3rdParty\src\ Noesis\3.1.6\Src\Packages\Gui\Core\Src\BitmapImage.cpp:228] "Image not found 'Assets/ClassIcons/hotbar/TrueNecromancer.png'" And right below it, Couldnt find the file Assets/ClassIcons/hotbar/TrueNecromancer.png The class image is nonexistent. I may have missed something and need a second pair of eyes but I'm stuck. Help would be appreciated! Thanks everyone.
Hi! It happened to me and I had to launch the game with my mod in it to see the result. Then, I opened the Toolkit again and it worked. Hope this will help! EDIT: for some, just restarting the toolkit is enough.
Does anyonne know how to add a new icon for a new Action Resource? I added a new Action Resource, but i cant select a icon for it.
Hi! You need to use the ImpUI mod!
Does anyone know how I could add scales from a subclass, similar to how Draconic Sorcerer gets scales?
I'd recommend looking at the progression lists in Shared and SharedDev to find the draconic sorcerer passives, and following the references in there to see how it's done. You could always also just copy it (I think it's in the boosts or passives column?) into the progression for your class/subclass.
I cannot get the class icons to show up under any circumstances. I did exactly as written in the guide and attempted every fix I found in other people's comments. Even after triple checking everything, nothing seems to work
Hi! My workflow is: 1) create a 300x300 PNG 2) Use the Project -> Convert UI Assets -> Import my PNG -> Ok 3) Get the DDS files created in my folders Data\Mods\Modname\GUI\Assets and AssetsLowRes 4) Create Data\Mods\Modname\GUI\Assets\ClassIcons AND Data\Mods\Modname\GUI\AssetsLowRes\ClassIcons, if they don't exist. 5) Move my DDS file and LowRes DDS file to the corresponding folders 6) Add my PNG named exactly as my class in each folder 7) Duplicate the content of the ClassIcons folders to the ClassIcons\hotbar for Assets and AssetsLowRes 8) Save my project and exit the Toolkit if it's not already done... 9) Launch a New Game with my mod 10) Here your icons should appear in the Character Creation menu 11) Go back to the Toolkit if you want :) Following these steps exactly in the same order never failed me. PS: If your icon is too big, you just have to resize it inside a 300×300 canvas, center it, then export it to PNG and repeat these steps... You can easily do this in GIMP :P
I tore everything down and went through this process multiple times, it didn't work at all for me. Every time I went to test it I was met with there being no icon to be found
Hmm... weird... edit: perhaps you could explain your issue on the Larian Discord?
Update from my end: I have since decided to ignore this and just see if I can at least export my abomination of a mod into the game as I wasn't gonna make anything pretty to begin with. Imagine my suprise when I learned that this is an issue specific to the editor and my beautiful 300x300px neon green square showed up just fine in the game itself
This is my first time making a mod and using a tool kit I was able to make the class and it works as intended in the toolkit but i don't know how to get it to show up in the actual game i feel like I'm missing something I'm not sure what the next step is and looking it up has not provided any useful information.
Hi! Did you enable your mod in the game?
I don't see my mod in game but that's kind of what i thought should happen. Like i just go into the mod manager and enable it ?
If you have published your mod to local you should have a .pak file to put in your C:\Users\[username]\AppData\Local\Larian Studios\Baldur's Gate 3\Mods. If you don't have it there, the game won't see it. Then you open the game and you check in the mod manager if your mod is installed and working then you do what you want with it!
Thank you that really helps its these tiny things Ive been running into causing hiccups. Do any of these tutorial go over that and i missed it or is that just common knowledge sorry I'm brand new to this scene.
No problem! If you want to learn more about bg3 modding I can advise you to look at third-party modding tutorials, the wiki, or the community library on GitHub because the Toolkit will feel more accessible to you afterward, you will have learned the basics! You don't have to do something very complicated, but learning the basic mod structure, and the different file structures will sure help! I started with a simple Ring mod (you can google it easily) and I'm glad I did that before opening the Toolkit! Having programming knowledge helps, but it's not mandatory.
I'm trying to make a class that repurposes some of the movesets of the Monk class, but I can't find the monk progression table or any of their movesets in the shared lists. Does anyone know how i can find any of it? Like where is flurry of blows?? also their subclass open hand? Is it just me it doesnt seem to exist for?
Its in SharedDev. look in the lists :Passivs.Spells. Edit (UnarmoredDefense_Monk;MartialArts_DextrousUnarmedAttacks;MartialArts_UnarmedDamage;MartialArts_BonusUnarmedStrike;Monk_SoundSwitch;FlurryOfBlowsUnlock) open hand subclass UUID (9487f3bd-1763-4c7f-913d-8cb7eb9052c5) found in Shared Dev under lists then SpellLists.
The file inside the editor is incomplete, with only a small amount of data.
It seems like the process of making new subclasses requires manually overriding the current data for the class. Is there a way to make sure that this won't conflict with another mod trying to add in subclasses?
Hi! Maybe this won't please you, but if you duplicate an existing class, like the Cleric class, and call it "WhateverYourModAcronymIs_Cleric", you will easily avoid conflicts with another mod modifying the Cleric class! It's safer.
Last updated
189d
Reading time
14 min read
Views
18,173
Comments
208
Summary

A tutorial on creating a new class with several subclasses, going through all of the main setups required.

Author
GrumpyWashbear
GrumpyWashbear
Follow GrumpyWashbear

mod.io uses essential cookies to make our site work. With your consent, we may also use non-essential cookies to enhance your experience and understand how you interact with our services. The latter will be set only upon approval. or read our Cookies Policy.