Campaign DB Spell Parser to Module SpellList
I wrote a little program that can parse in the campaign db to get all the spell data. It will then output the <spelllists> portion for a module.
This includes:
The Alphabatized Index of all spells.
The section that links to each class
and then the actual lists by level for each class.
It builds the class list based on the Sources, all it requires is the spelldata.
Compatible Systems:
5E,
3.5E,
2E - It will import 2E spells no problem and generate the Indexed Alpha, and Per Class lists. It will not currently create separate lists for each School or Sphere. It could be done.
Incompatible Systems:
CoreRPG (No Spells)
MoreCore (Spell data in a different format) - for these it has a concept of an Import interface, and Importers could be written/plugged in to handle other sources.
Pathfinder (Spell data in a different format)
I created it because I'm creating my own spells and I wanted an easy way to generate the module data for them.
It's a dotnet core project.
I have an entity dataset, an import/export library and then just a little console app that runs it all.
This is just my quick/dirty version with very little hand holding.
Instructions:
Unzip it somewhere. It should be self-contained as far as everything it needs.
Run the FGSpellListGen.exe file.
This will pop up a window.
In the Input box, browse to your campaign db.xml.
In the output box, pick where you want the spelllist xml to be created. This is just the spelllist section, so don't overwrite your module.
The Levels are optional. If you decide to use them it's a comma delimited list of levels that you want it to use. 0,1,2,3,4,5 for example.
ModuleName - this needs to match what you have in the <name> field of your module's definition.xml file. If you leave it blank it will default to *.
Click Generate. This will save your config for future runs. It will create the xml file where you told it to. Open that file up in NotePad++ or Visual Studio Code or whatever.
Copy all of it.
In your Module's client.xml or db.xml, paste over your reference/spelllist section.
In your library section of the module's xml - have a link to the spell list.
Example:
Code:
<library>
<id-darkspyrecampaignguide static="true">
<categoryname type="string">Campaign Guide</categoryname>
<name type="string">darkspyrecampaignguide</name>
<entries>
<id-00050>
<librarylink type="windowreference">
<class>referenceindex</class>
<recordname>reference.spelllists.spells</recordname>
</librarylink>
<name type="string">Spells</name>
</id-00050>
</entries>
</id-darkspyrecampaignguide>
</library>
<reference static="true">
<!-- Copy the <spell> section from campaign db, save here as <spelldata> -->
<!-- Paste the SpellList text here -->
</reference>
Initial Release here:
https://github.com/brandonm4/FGUtils/releases/tag/1.1
Source Code here: https://github.com/brandonm4/FGUtils