It's been a while since I posted. You might think that means I haven't been doing any work on the parsers. You'd be very wrong.
The most recent round of WoTC releases (Martial Power, Dragonomicon) was a mixed bag. Martial power was very easy to parse. I only had to make a few changes involving the Warlord Tactical and Inspiring Presence tags. Dragonomicon however vexed me.
Dragonomicon is a different type of book. It contains numerous mechanical elements (traps, npcs, rituals, etc) but it also contains adventure elements (maps, story, etc). And there in lies the problem. Look at those mechanicals I listed. Each one of those elements is handled by a different parser. The adveture elements could be created manually within FGII (once the other stuff was parsed) and exported. To get a single module you would then have to manually merge the output of 3 parsers AND an adventure export. Enough was enough.
You have to understand I have a sickness. Just having some of the book in FGII isn't good enough for me. I need to have it all, no matter how insignificant. Some people would be completely satisfied with just the NPCs, traps, and rituals from the Dragonomicon. This is NOT me.
For a while now, having three parsers has annoyed me. Each time WoTC released a new book it got worse. Adventurer's vault is a prime example of this. 95% of the book is pure PHB, but that last 5%? NPCs that need to be stuck into the module. At the time I made a work around where the PHB parser would look at the output of an MM parser and merge it. But even then I knew it was a hack. Factor in some RPGA adventure parsing and being frustrated by traps being in one parser and npcs being in another and you have a recipe for a rewrite.
I decided I need a unified parser. One that handled all the possible options. Since the PHB was the most complex parser, I chose it to be the base. I started by adding in the options which were built using a modular approach, this included everything from textreference onward. The next step was to take all the things the PHB handled (Powers, Armor, Weapons, Equipment, Skills, Conditions, etc) and modularize them all. I did the same for the MM Parser, and then the DMG parser. And thus the unified parser was born. It's shown below with all the old (and some new options displayed).
I tried to make the interface a bit easier this time around. I feel I succeeded....some. I know it may not look like it from that image, but really that's not a practical application. WoTC publications usually only need a small subset of those items.
The PHB is one of the more complex manuals and the layout is shown below:
While the MM uses even fewer items:
These layouts can be saved and loaded, the data saved includes all the options selected/deselected and the file information. They are the replacement for the path file in older parsers. Once you have everything set up all you have to do is click save and select a folder and enter a file name and the parser takes care of the rest. No more manually editing the path file.
What gets parsed is controlled by the data menu. Simply entering this menu and clicking an option on will display the parse frame for that item. The list shown below is for the Monster Manual. Notice how it matches the picture above.
I also made file/directory selection easier. Clicking on any of the items in the parse frame will bring up a selection window. Hopefully this will reduce a lot of the problems caused by invalid paths, typos, etc.
Finally, the more observant among you will notice a few new options (Encounters, Maps, Story). These are the new "adventure" elements. Parsing routines have been designed to handle these. In addtion Magic items, traps, and NPCs all have additional output options (Output to Items, Output to Personalities) which will create "adventure" versions of their parses. I'll post more on that later.
I guess the big question is "when?". Currently I have reparsed all my existing modules and both my Tuesday and my Thursday group should be using them. A few sessions with them should be sufficent to verify their content. I also need to finish parsing the Dragonomicon. Since it's reference/story heavy I expect it will take at least a week to get it input. So maybe an early Christmas present.
Oh and artifacts still aren't parsed. I decided against adding that until I had the parser unified. Plus I keep hoping Smiteworks will enable getValue() and setValue() on formattedtext fields before I try and add it to the ruleset.