Get your edgelord ass out of here. A lot of us are frustrated, but that isn't the way to solve it.
BlackDragonBE
Creator of
Recent community posts
Update: I took a look at your custom JS issue. There are a few things I noticed:
- A lot of the spells have P4 as a source, while being PHB spells, those won't be imported without the correct source. Can you tell me what the P4 means? Is it the 2024 PHB?
- You're using a custom background, which isn't supported yet, only classes for now.
- The JS has a different format from the examples I used to build the parsing logic. This causes the custom class loader to fail. The class you're trying to load is a Paladin subclass, but it won't load due to the format.
I'm going to try to implement custom background and subclass loading from JS files, this will take me a while as it's complex. The main reason why the converter crashes though is because of the custom background. The converter can handle missing subclasses, they just won't have a description.
I'm so sorry for the late reply! I thought I already answered here.
I actually already fixed the issue around mid-February, here is a link to the character JSON: https://pastebin.com/UWgZu1qk
I have a new build ready as well, v1.2.2, I'll see if I can upload that today. Again, I'm so sorry for taking so long, I could've sworn I already replied here, my mistake.
This new version brings support for custom MPMB classes via their JS files. Simply place the JS files of the custom classes inside the Custom_JS_Classes folder next to the executable.
Known issues:
- The new Instructions panel isn't fully working yet. The merging and custom classes topics won't open. Will fix soon in next minor version.
Another update! Using custom classes is now possible by placing the JS file in a special folder. The next step is some clean up and adding instructions for this new feature. I never use custom classes so I can't easily test if it works with all custom classes out there. I'm sure I'll get feedback about that soon enough with the next release.
For now, here's the JSON of your character: https://pastebin.com/BfiRPGxd
You can save that to disk and import it via Foundry.
Cheers!
FYI, I've made some progress in my attempt to parse the JS file to a format I can use in C#. I found a library that can convert JS to JSON, which means I can parse the JSON, which I have a lot more experience with. Progress is very slow, but I do think it's possible now.
The next step is to list the minimal parts of a class that are necessary on my side to combine with the PDF data. Once I've created that list, I'll know if it's actually doable. I've collected a few sample JS class files to make sure my system will work with most JS files out there.
I looked into this and you're using a homebrew class as you said, which isn't supported at the moment because of the way the converter matches classes. The actual class data can't be read from the PDF unfortunately, so the application uses class data files based on the name of the class. It does this for things like races, spells and items as well.
I do want to look if it's possible to extract the needed data from a JS file. If it has a standardized format, there should be a way. Ideally you could then put your JS class files in a folder so the converter is aware of them.
Can you provide me your JS file so I have a starting point? Thanks!
Hi! I'm guessing all of this is homebrew content?
- The race name itself should be imported no matter what, the converter reads the RACE field at the top of the first page
- Racial traits are read from the RACIAL TRAITS text of the second page. The format is as follows:
RACE NAME (+X Ability, +X Ability) TRAIT NAME: TRAIT DESCRIPTION TRAIT NAME: TRAIT DESCRIPTION
For example:
Bugbear (+2 Strength, +1 Dexterity) Powerful Build: I count as one size larger when determining my carrying capacity and the weight I can push, drag, or lift. Long-Limbed: I have an additional 5 feet reach with melee attacks that I make on my turn. Surprise Attack: If I hit a surprised creature on my first turn in combat, that attack deals an extra 2d6 damage. I can do this only once per combat.
The race name and every trait with its description goes on a new line.
- For other house rule changes, it highly depends on what exactly. Class features for example need to be added to the CLASS FEATURES text on the second page. Those are in this format:
Druid (Circle of the Moon), level 5: ◆ Druidic (Druid 1, PHB 66) I know Druidic; Hidden messages with it can only be understood by who know Druidic ◆ Spellcasting (Druid 1, PHB 66) [3 cantrips known] I can cast prepared druid cantrips/spells, using Wisdom as my spellcasting ability I can use a druidic focus as a spellcasting focus for my druid spells I can cast my prepared druid spells as rituals if they have the ritual tag
Those ◆ symbols are very important to mark where a feature begins. All text on the lines below that are the feature description.
- The converter doesn't support wild shapes at this time as I'm not sure how to handle them. One way could be creating a separate actor for every wild shape creature, but I haven't looked into it yet due to the increased complexity. For now, your best bet is to create the custom wild shape creatures in Foundry and then dragging the beast onto your character sheet to perform the wild shape.
I was able to create a solution for the tool type items. I'll spare you the technical details, but it involved having to have to introduce a dynamic data type for item proficiency that can be true, false, and any number. The fix for tool items will be included in v1.1.5, which I'm planning to release soon.
Here's the JSON for Graven: https://pastebin.com/bup18Te
Unfortunately, I haven't been able to fix all issues I've found just yet, so I've had to fix the output by hand. The export from the converter works just fine now, but Foundry doesn't accept the JSON. There's something strange going on with the way the new dnd5e system in Foundry processes tool items like "Smith's Tools" for example. It expects some peculiar values that aren't used in other places...
At any rate, I'll get to the bottom of it and I'll let you know when I found a permanent solution.
Hi, it seems to be an issue with the class name. The class name is set as "Atrificer - Armorer 5, while the correct spelling is "Artificer". The converter reads this name and tries to match it to a database of known classes, that's why it's failing.
Can you correct the class name and let me know if the issue persists? Thanks!


















