After using your extension for free for a while I've finally purchased it. Thanks for making YouTube look more normal again.
BlackDragonBE
Creator of
Recent community posts
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!
This release fixes a few minor import issues:
- The converter fails when the History field is empty: https://itch.io/t/2758196/conversion-errors
- The converter fails when a class doesn't have all of its properties filled in: : https://itch.io/t/2758196/conversion-errors
- Lack of hit dice made importing in FoundryVTT fail
I've managed to convert Bob. The issue was that his History field was empty causing it throw an exception. I've made the Bio converting more lenient to fix this issue. I've tested the JSON export and it seems to be working as intended in FoundryVTT. I'll include the fix in version 1.1.4.
In the meantime, you can download the JSON for Bob here: https://pastebin.com/qjbY2SB
I'll try to fix the import error soon as well, I think I might have enough info with just the JSON and the stack trace you provided, but if you do have the XFDF, that's welcome too.