PDA

View Full Version : PF2CreatureParser Extension



darrenan
August 4th, 2019, 19:51
This extension adds a new "Parse" tab to the NPC window. The intended usage is as follows:


Create a new NPC record.
Paste stat block into the string control on the "Parse" tab.
Make any manual edits (see assumptions and caveats below).
Click "PARSE" button.


At this point the NPC fields should be filled out. There is no harm in making more edits in the stat block control and then clicking PARSE again. In this case the entire block will be parsed again and all fields will be overwritten.

How much of the creature should I copy and paste?

The entire stat block starting with the line containing the name and level. Do not include the creature's flavor text. I would include an example picture, but I think I would be violating copyright if I did so?


CAVEATS AND ASSUMPTIONS
With their new stat block format, Paizo has not made it easy to parse these things. There are less keywords to look for compared to PF1 stat blocks, therefore there will be cases where simply copying and pasting a stat block from a PDF and blindly clicking PARSE will not yield the correct results. To make matters worse, I've already found instances of Paizo statblocks violating their own rules in The Bestiary (to be expected in a v1 publication). Luckily, clicking the PARSE button can be an iterative process and it's easy to adjust the stat block and push the button again, all fields will be overwritten in that case.

Here are some of the assumptions that the parser makes to be able do its job:

The "Items" entry is a single line terminated with a line feed.
HP, HP Abilities, Immunities, Weaknesses, and Resistances are all on the same line, terminated with a line feed.
Immunities, Weaknesses, and Resistances are in that exact order. If they are out of order you will get unexpected results.
Speed is on its own line, terminated with a line feed.
Each Melee and Ranged strike entry is its own complete line, terminated with a line feed (this is really only important for the last strike entry, as we search for and split on 'Melee' and 'Ranged').
All Melee lines come before any Ranged lines. All Ranged lines come before any Spells entries. All Spells entries come before any abilities.
Each creature ability (interaction, automatic, reactive, offensive, and/or proactive) should be terminated with two line feeds, and the title of the ability and the ability description should be separated by a single line feed. NOTE: This is new behavior as of version 1.2 of this extension and release 14 of the ruleset, currently in the Test channel. If you are using a previous version of the ruleset, the old behavior is that each creature ability (name, traits and description) be on its own line terminated with a line feed.


If you have problems with a stat block, the first thing to do is to run through each of the items above to make sure you're not violating any of the assumptions. Helpful Hint: If you need to combine multiple lines into one, you can select all lines in the stat block control, and then press CTRL+J

Link to The Forge for this extension is in post #2, below.

Change History


8/4/2019
0.0
Initial Version. Parses everything prior to 'Speed'.


8/4/2019
0.1
Fix issue with Weaknesses and Resistances.


8/4/2019
0.5
Everything except Spells and Rituals should be working now. Fixed a few bugs in the top sections.


8/7/2019
0.6
Everything on the Main tab should now be populating correctly. Fixed all reported bugs. Handle lock/unlock button correctly.


8/13/2019
0.9
Most everything should be working now, with a few caveats. See Known Issues below.


3/4/2020
1.0
V1. Fixed negative level issue.


3/6/2020
1.1
Resolve most spell parsing issues. Add parse log functionality.


3/28/2020
1.1.1
The string 'creature' in the first line of the stat block is now compared case insensitively.


3/27/2020
1.2
Change parsing logic for interaction, reactive, automatic, offensive, and proactive abilities for ruleset version 14. Do not use with rulesets prior to release 14!!!


3/28/2020
1.2.1
The string 'creature' in the first line of the stat block is now compared case insensitively. Do not use with rulesets prior to release 14!!!


3/28/2020
1.2.2
Fix nil reference script error. Do not use with rulesets prior to release 14!!!


4/19/2020
1.2.3
Compensate for change in GameSystem.actionTextToSymbols function return signature (now returns two values). Check for long versions of saving throw names and shorten them before parsing.


7/10/2020
1.2.4
Handle a case where a string could be nil and writing to the parse log in this case would cause a script error.


11/22/2020
1.2.5
Spells should now parse correctly when using extension in FGU.


12/16/2021
1.2.6
4.1.12 compatibility release


06/25/2022
1.2.7
Improvements to spells parsing.


02/16/2023
1.2.8
Remove onInit function and announcement text.
Improve section parsing logic.
Add one bad char replacement.
Use getChildList and ipairs() instead of getChildren and pairs().
Additional parse log output.
Add focus spell tradition and type support for Magus, Oracle, Ranger, Summoner, and Witch.


3/13/2023
1.3
Add the ability to parse JSON statblocks generated by https://monster.pf2.tools/.


3/16/2023
1.3.1

- Add scrollbar to the text box on the Parse tab.
- UI cleanup on the Parse tab.
- Wrap some of the JSON values with tonumber() where they could be either string or number type.
- Fix logic in buildSpellBlock that was causing a script error when the NPC being parsed did not have any spell blocks.
- Parsed NPCs will now contain the Recall Knowledge DC for the NPCs level on the Other tab.



5/21/2023
1.3.2

Fixed a data bug that would cause Acrobatics to show up twice in the skills list.



7/22/2023
1.3.3

More logic-proofing for nil values.



3/11/2024
1.4

Compatibility release for FG v4.5.0




KNOWN ISSUES

If you create a new NPC record, go directly to the Parse tab, paste the statblock and hit PARSE, you will end up with spell classes and levels, but no spells on the Actions tab. I'm still trying to figure out exactly why, and how to fix this. As a workaround, it seems like you need to make the Actions tab visible at least once before parsing.
Formulas are not being parsed yet.
I'm not done with Rituals yet. It will create the spell class, but no levels or spells.

darrenan
August 4th, 2019, 19:51
FGU users get it from The Forge: Pathfinder 2 Creature Parser (https://forge.fantasygrounds.com/shop/items/80/view)

FGC users download: 53295

ShadeRaven
August 4th, 2019, 19:55
This will be awesome! Can't wait.

darrenan
August 4th, 2019, 20:11
REPORTING BUGS/ISSUES
When reporting bugs or issues with this extension please make sure that you have a way to reproduce the issue 100% of the time. Explain the symptom in this thread so other users can see what has been reported. Please send me the stat block that generated the error/issue via PM directly to me, so we don't clutter up this thread with lots of walls of text. I will get to bugs and issues as quickly as my schedule allows. Thank you for your patience!

darrenan
August 4th, 2019, 20:23
@Trenloe can we get a community extensions post spun up for PF2?

Trenloe
August 4th, 2019, 21:00
@Trenloe can we get a community extensions post spun up for PF2?
Done. And your extensions is the first one to be listed. Nice one! :)

darrenan
August 4th, 2019, 21:15
Can you point me to the character code mappings for the action icons? I found 141 for single action, but having trouble tracking down the equivalents for the other action types. Thanks!

Trenloe
August 4th, 2019, 21:21
Can you point me to the character code mappings for the action icons? I found 141 for single action, but having trouble tracking down the equivalents for the other action types. Thanks!
They're a bit all over the place to not use other characters that might be needed.


Free Action - 129
One Action - 141
Two Actions - 143
Three Actions - 144
Reaction - 157

ShadeRaven
August 5th, 2019, 01:09
Having just finished Creature 2s, I thought to try this out. Put the .ext file into the extensions folder and loaded up FG. However, I am not finding a listing for that extension among my many options so wondering if I have done something wrong?

Alex Craft
August 5th, 2019, 12:55
This extension file is empty, the reason for it not showing up in the load screen. can't extract nor read content when converted to a .zip file, the extract menu says the file is empty.

Trenloe
August 5th, 2019, 16:09
This extension file is empty, the reason for it not showing up in the load screen. can't extract nor read content when converted to a .zip file, the extract menu says the file is empty.
Welcome to the FG forums!

Yeah, this is the main issue - the file has been compressed using something other than ZIP compression. FG can only read standard ZIP compression.

Larsenex
August 5th, 2019, 16:55
Ok I am still new and will not likely be using this just yet.

I am not sure what a parser is for use as an add on.

Is this to help the GM create NPC/Monster entries manually?

darrenan
August 5th, 2019, 17:35
Hmm. I used 7-zip, which is what I normally used. Unfortunately I'm taking a road-trip today so I won't be able to look at this until tomorrow. For now I'll just remove the extension link and put the coming soon text back in place.

darrenan
August 5th, 2019, 17:40
@Larsenex This extension lets you create NPC/Creature records inside Fantasy Grounds using a copied stat block from an outside source such as PDF. We know from our experience in PF1 that such a tool is generally useful to GMs. Right now there isn't a lot of creature content out there (just Bestiary 1) but eventually there will be 3PP that perhaps don't deliver their products in the FG store, and GMs will need a way to avoid manual data entry in these cases. Also, such a tool will be useful to folks creating 'official' modules (Bestiary 2 and onward) to speed their work.

darrenan
August 5th, 2019, 17:58
New version of the extension has been attached to post #2. This time I just used Windows SendTo->Compressed (zipped) functionality, hopefully this does the trick. I'm at work so I can't test it right now, if someone else could verify it works I would appreciate it. Otherwise, like I said before, I'll get to it tomorrow.

Trenloe
August 5th, 2019, 18:03
New version of the extension has been attached to post #2. This time I just used Windows SendTo->Compressed (zipped) functionality, hopefully this does the trick. I'm at work so I can't test it right now, if someone else could verify it works I would appreciate it. Otherwise, like I said before, I'll get to it tomorrow.
Yep, that works. :)

darrenan
August 5th, 2019, 18:17
Ok, I'll need to double-check my 7zip settings when I get home then. I just got a new computer and there is probably some setting I overlooked.

Trenloe
August 5th, 2019, 18:22
The extension that didn't work was using LZMA2 compression if that helps?

ShadeRaven
August 5th, 2019, 18:47
I keep getting the same error on parsing:

Script Error: [string "campaign/scripts/npc_parse.lua"]:69: attempt to index local 'sSection' (a nil value)

Anything in particular I need to clean up before trying to parse? I am literally cutting from the CREATURE NAME CREATURE # line, and the name and "level" is going in, plus the traits (though that is currently ending with a ,). A couple of creatures got initiative in as well, but the perception field is where things start to fall apart. It's not picking that up, sometimes putting in the post ; items and skills... other times, it's just blank with nothing else listed from that point on in either case.

darrenan
August 5th, 2019, 19:14
See the "REPORTING BUGS/ISSUES" post above, and the caveats in post 1. You can PM the entire stat block you're trying to me directly and I'll a take a look when I get back in town tomorrow. NOTE: This extension should be considered pre-Alpha quality as I've only run a handful of creatures from the Bestiary 1 PDF through it so far.

There are many places where I assume that things like strikes and abilities are delimited by CR/LF, so make sure there aren't any such things split across multiple lines, or multiple items on the same line only separated by white space. I've already found a couple instances in the Bestiary of Melee strikes split across lines. Eventually I might be able to implement some logic to account for this, but I'm trying to keep it simple and work toward completeness first before adding any more complicated logic.

darrenan
August 5th, 2019, 19:17
I looked at the line number reported by the script error, and it indicates a misformatted stat block. It's not finding the Skills line after the Languages line. If the Skills entry is optional, I'll need to make some changes to accomodate that. I also see an opportunity to add some more informative error handling and checks. I'm really interested to see what you're passing in that's causing this error.

ShadeRaven
August 5th, 2019, 21:13
Hey darrenan... now that you mention it... there are some in that Bestiary that have the skills block before the languages (see Gnolls for an example). I have no problem sending you reports and I figured we'd run into stuff like this. I am almost done with CR 3s, but am happy to help with this project along the way. I'll test it out more to see if just moving skills around solves this one and I'll send you stat blocks going forward with the error codes associated.

ShadeRaven
August 5th, 2019, 21:25
Okay, went at it right away... This time with Gorilla.

So, because Gorilla had no Languages, it didn't work... (Script Error: [string "campaign/scripts/npc_parse.lua"]:99: attempt to index local 's' (a nil value)).
This was solved by simply adding to the Parser field, after Perception, Languages none. From there, I just had to press PARSE and the rest populated pretty nicely as follows:

https://www.fantasygrounds.com/forums/attachment.php?attachmentid=28298

Obviously, some cleanup needs to be done from there (I make a lot of use of the Spells tab, plus some formatting, etc), but this is a great start! I might be able to do more than one Creature Level a day with this even if this was the end of its extent, and I know you plan on making it even better! :)

ShadeRaven
August 5th, 2019, 21:28
Oops... I forgot to mention....
Perception is going nicely into Initiative, but it's removing perception from, well, Perception... :p The Gorilla above is a good example. That field really needs to populate both initiative and stay within the Perception box as a clickable action. Easy clean-up for now, obviously, so not a big problem, but as you fine tune, that would be a nice tweak.

Thanks again!

Edit: also, just noticed that the Gorilla's stat block (STR..) didn't get picked up either. Not sure on that one as things like AC, Saves, and HPs did fill thereafter.

ShadeRaven
August 5th, 2019, 22:00
Minor tweak:

When I tested Hell Hound, the Weaknesses field came out as Weaknesses cold 5 instead of just cold 5. Also, immunity fire included the ;.

No big deals, but as you tweak minor things, thought you should know. Let me know if these little reports get annoying :D

ShadeRaven
August 6th, 2019, 01:53
Wight causes a problem:

Script Error: [string "campaign/scripts/npc_parse.lua"]:153: attempt to index local 'sSection' (a nil value)

Looks a little deeper in the script, but really starts to mess up after AC and Saves are added.

darrenan
August 8th, 2019, 04:37
Version 0.6 is now attached to post #2. See post #1 for changes.

darrenan
August 8th, 2019, 04:56
@Trenloe - Do you have any contacts at Paizo you can ask about the future of Focus spells in NPC stat blocks? Bestiary 1 doesn't have any examples of "Focus Spells" per se, but has one each of "Champion Devotion Spells" and "Druid Order Spells", which seem to be the only examples of Focus spells in the book. I'm wondering if I should be planning ahead for "Bard Composition", "Cleric Domain", "Monk Ki", "Sorcerer Bloodline", and "Wizard School" in the future as well?

hawkwind
August 10th, 2019, 18:32
really nice work, one question how do you get the icons for actions and reactions to appear when you parse?

hawkwind
August 10th, 2019, 18:37
really nice work, one question how do you get the icons for actions and reactions to appear when you parse?

Also im trying to parse a pfs adventure and i get this message Script Error: [string "campaign/scripts/npc_parse.lua"]:34: attempt to index local 'sStatBlock' (a nil value)
, the thirdparty material is parsing fine apart from the lack of action and reaction icons

Trenloe
August 10th, 2019, 18:48
really nice work, one question how do you get the icons for actions and reactions to appear when you parse?
The ruleset does the replacement - use [[A]], [[AA]], [[AAA]], [[R]] and [[F]] for one action, two actions, three actions, reaction and free action respectively.

darrenan
August 10th, 2019, 19:28
I'm actually just doing direct character code replacement, but it's good to know the replacement syntax:

s = s:gsub("%[one%-action%]", string.char(141));
s = s:gsub("%[two%-actions%]", string.char(143));
s = s:gsub("%[three%-actions%]", string.char(144));
s = s:gsub("%[reaction%]", string.char(157));
s = s:gsub("%[free%-action%]", string.char(129));

Trenloe
August 10th, 2019, 19:38
I'm actually just doing direct character code replacement, but it's good to know the replacement syntax:

s = s:gsub("%[one%-action%]", string.char(141));
s = s:gsub("%[two%-actions%]", string.char(143));
s = s:gsub("%[three%-actions%]", string.char(144));
s = s:gsub("%[reaction%]", string.char(157));
s = s:gsub("%[free%-action%]", string.char(129));
The ruleset does that too.

Have a look at the replace icons function (can't remember the exact name off the top of my head, but you can't miss it) at the end of \scripts\manager_gamesystem.lua.

darrenan
August 10th, 2019, 19:59
will do

hawkwind
August 10th, 2019, 20:25
any idea why the PFS npc's wont parse?
Script Error: [string "campaign/scripts/npc_parse.lua"]:34: attempt to index local 'sStatBlock' (a nil value)

this is the stat block im trying to parse and yes i know its alreadt in the SR beastairy but im just using this as an example as its in the srd

MITFLIT LEVEL –1
LE SMALL FEY GREMLIN
Perception +4; darkvision, scent (imprecise) 30 feet
Languages Undercommon
Skills Acrobatics +5, Diplomacy +1 (+7 vs. arthropods), Nature +3, Stealth +5, Thievery +5
Str –1, Dex +3, Con +0, Int –1, Wis +1, Cha –1
Self-Loathing (emotion, mental) A mitflit’s self-loathing makes it easy to influence. It takes a –4 penalty on its Will DC against checks to Coerce, Demoralize, Make an Impression, and Request.
Vermin Empathy Mitflits can use Diplomacy to Make an Impression on and Request things of arthropods (insects, spiders, scorpions, crabs, and similar invertebrate animals). Most arthropods have a starting attitude of indifferent to mitflits.
Items dart (10), shortsword
AC 15; Fort +2, Ref +7, Will +4
HP 10; Weaknesses cold iron 2
Speed 20 feet; climb 20 feet
[[A]]shortsword +8 (agile, finesse, versatile S), Damage 1d6–1 piercing
[[A]] dart +8 (agile, range increment 20 feet, thrown), Damage 1d4–1 piercing
Primal Innate Spells DC 16; 2nd speak with animals (at will;
arthropods only); 1st bane; Cantrips (1st) prestidigitation
Sneak Attack The mitflit sneak deals 1d6 extra precision damage to flat-footed creatures.
Vengeful Anger (emotion, mental) As long as it isn’t frightened, a mitflit gains a +2 status bonus to damage rolls against a creature that has previously damaged or tormented it.

stephan_
August 11th, 2019, 09:32
The parser does not seem to like "LEVEL –1". Replace the first line with e.g. "MITFLIT CREATURE 1" (it at least parses for me that way).

hawkwind
August 11th, 2019, 13:26
Thanks

darrenan
August 11th, 2019, 23:20
That's right. Level is not currently recognized on the first line. I'm pretty much going by the stat block format laid out in the Bestiary.

darrenan
August 11th, 2019, 23:33
@Trenloe: I'm having a minor issue parsing spells, creating all the correct caster classes, and adding spells on the actions tab. The first time I parse a creature that has spells, I end up with the correct spell classes and levels, but no spells. Then, if I manually delete all the caster classes and parse again, it works fine. I'm manually creating the "spellset" node and spell classes if needed, but using SpellManager.addSpell to add spells once I have a spell class node.

I took a look in the ruleset, and two things caught my eye. I'm wondering if either of these might be related to my issue:
- The PC record adds a DB handler for the "spellset" node, but I don't see any such handler being set up for the NPC record. Since I'm creating "spellset" manually, is it possible I'm confusing something in the ruleset?
- SpellManager.addSpell returns nil if the level and "spells" node have not yet been created. Currently I'm only creating those nodes in the case that I can't find the spell in the rulebook module, which generally isn't the case when parsing bestiary entries. But those nodes are being created at some point. I haven't figured out how.

I'll keep investigating, but if you can think of any reason for this behavior, please let me know.

EDIT: Here are some screen shots to illustrate.
First here's the result after the first parse, followed by the console output after turning on globaldebug:
28409

Runtime Notice: Reloading ruleset
Runtime Notice: s'srting_traits_line.lua - onInit. sTraitType = creature'
Runtime Notice: s'SpellManager.addSpell. nodeSource, nodeSpellClass, nLevel = ' | databasenode = { reference.spells.command@Pathfinder Second Edition Core Rules } | databasenode = { npc.id-00030.spellset.id-00001 } | #1 | nil | nil | nil | nil | nil | nil | nil
Runtime Notice: s'SpellManager.addSpell. nodeSource, nodeSpellClass, nLevel = ' | databasenode = { reference.spells.detectalignment@Pathfinder Second Edition Core Rules } | databasenode = { npc.id-00030.spellset.id-00001 } | #1 | nil | nil | nil | nil | nil | nil | nil
Runtime Notice: s'SpellManager.addSpell. nodeSource, nodeSpellClass, nLevel = ' | databasenode = { reference.spells.mending@Pathfinder Second Edition Core Rules } | databasenode = { npc.id-00030.spellset.id-00001 } | #1 | nil | nil | nil | nil | nil | nil | nil
Runtime Notice: s'SpellManager.addSpell. nodeSource, nodeSpellClass, nLevel = ' | databasenode = { reference.spells.readomens@Pathfinder Second Edition Core Rules } | databasenode = { npc.id-00030.spellset.id-00001 } | #4 | nil | nil | nil | nil | nil | nil | nil

darrenan
August 12th, 2019, 00:06
Hmm, I'm wondering if there's a different way I should be creating "spellset" and/or the spell class. Immediately after pushing the Parse button, the spell class looks like:


<id-00001>
<availablelevel1 type="number">5</availablelevel1>
<availablelevel4 type="number">1</availablelevel4>
<cl type="number">1</cl>
<dc>
<misc type="number">7</misc>
</dc>
<label type="string">Divine Innate Spells</label>
<levels>
</levels>
<tradition type="string">divine</tradition>
</id-00001>


Only after switching to the Actions tab do the remainder of the spell class nodes (available levels, etc.) show up. I'm currently just using DB.createChild, is there a better way that will fully initialize the spell class?



function CreateSpellClass(sSpellClassName, nodeRecord)
-- Open or Create the root node for Spell Classes.
local nodeSpellset = DB.createChild(nodeRecord, "spellset");

-- Find any existing SpellClass.
local nodeSpellClass, nodeLabel;
for _,v in pairs(nodeSpellset.getChildren()) do
nodeLabel = v.getChild("label");
if nodeLabel and sSpellClassName == nodeLabel.getValue() then
nodeSpellClass = v;
break;
end
end

-- SpellClass was not found, create it.
if not nodeSpellClass then
nodeSpellClass = nodeSpellset.createChild();
DB.setValue(nodeSpellClass, "label", "string", sSpellClassName);
nodeSpellClass.createChild("levels");
end

return nodeSpellClass;
end

darrenan
August 12th, 2019, 00:14
Ok, I'm looking a npc_spells.lua, and it goes through the class list control to create new spell classes. I'm going to try to emulate that logic instead...

hawkwind
August 12th, 2019, 08:14
That's right. Level is not currently recognized on the first line. I'm pretty much going by the stat block format laid out in the Bestiary.

I got that stat block from a Pathfinder society adventure

darrenan
August 12th, 2019, 16:58
Well then, Paizo needs to better edit their adventures don't they? ;-)

darrenan
August 14th, 2019, 04:42
Version 0.9 is now attached to Post #2.

hawkwind
August 23rd, 2019, 09:01
does this work on hazards?

darrenan
August 23rd, 2019, 20:13
negative

Milke
September 18th, 2019, 16:53
Question. Not sure if I'm doing something wrong.
When I paste the stats into the parser, it comes out looking great at first. But creature's spell-like abilities or spells only show up when the little lock at the top of the document is unlocked. When I lock it, the spells go away. They come back when I unlock it.

darrenan
September 18th, 2019, 17:15
The abilities I'm adding as spells are probably not being set as 'prepared' by default. The workaround would be to set the mode to 'preparation' (cycler control at the top of the actions tab) and prepare all spells appropriately, and then change the mode to 'combat'. In the 3.5/PF ruleset, I've noticed that sometimes the actions tab doesn't register prepared spells until you close and re-open the sheet, not sure if the PF2 ruleset has the same behavior.

In any case, I will take a look at this when I have the time, probably tomorrow at the earliest, and see what can be done.

Thanks for the report!

Milke
September 18th, 2019, 19:49
Ohhh. I see. Okay. Yea, that worked. Thanks for the tip.

Willot
March 3rd, 2020, 21:32
When the creature level is -1 it changes to 1, check your low level creature levels if you've use this, works pretty good other than parsing spells is still flaky.

darrenan
March 5th, 2020, 01:20
Updated version, with fix for negative level issue, is now in post #2.
Can you expound on "parsing spells is still flaky"? If you provide an example or two I can see what can be done to improve it.

Willot
March 5th, 2020, 06:29
Here ya go,
31908
31909
Hope it makes sense

darrenan
March 5th, 2020, 17:46
Upon further review, it seems there are some major chunks of work in the spells area that didn't get done. I was missing more than half of the focus spell class/type/traditions, and slots for spontaneous casters never got coded up. I started work on it today, will try to get it done in the next day or two.

Willot
March 5th, 2020, 21:34
Nice! ;)
I did get the feeling that sometimes it simply didnt recognize things.

darrenan
March 6th, 2020, 21:11
Paizo decided to change the way they specify focus points. Focus points can come from two different places. Gamemastery Guide specifies them before DC. Example:


Bard Composition Spells 1 Focus Point, DC 22; 3rd counter...

Bestiary specifies them within the spell level, within parentheses. Example:


Champion Devotion Spells DC 20; 3rd (1 Focus Point) lay on hands

This is complicating parsing a little bit...

darrenan
March 6th, 2020, 23:09
v1.1 has been uploaded to post #2. I think most of the spell issues are resolved now. As always, if you find something that doesn't work point me to the stat block and I'll take a look.

Milke
March 8th, 2020, 19:47
KNOWN ISSUES

If you create a new NPC record, go directly to the Parse tab, paste the statblock and hit PARSE, you will end up with spell classes and levels, but no spells on the Actions tab. I'm still trying to figure out exactly why, and how to fix this. As a workaround, it seems like you need to make the Actions tab visible at least once before parsing.


Is it because you just need to go to Preparation mode in the spells tab and make sure the spells are prepared in memory? Then lock it back.

Willot
March 9th, 2020, 04:05
Just for the hell of it I tried it in FGU, the button labels are blank. I suspect it because you used FGF fonts. Apparently FGU wont support them (which is why the Action symbols dont work either I believe). Other than that it seemed to work

H2Os
March 9th, 2020, 04:49
I've been trying to parse the gmg npcs and occasionally I get the error "Script Error: [string "scripts/manager_string.lua"]:11: attempt to index local 's' (a nil value)" Some NPCs parse fine, others give me that error.
I take the stat block and put it in notepad and adjust it as necessary, but I can't figure out what causes it. Usually when I get that error it doesn't parse past the npcs speed field.

Edit: I'm sure I've got a space somewhere there shouldn't be. I'm just not sure where to look for it.

darrenan
March 9th, 2020, 17:17
Can you let me know a stat blocks that exhibit this? I have the GMG PDF so I can try to replicate on my side. Thanks.

One thing I did notice is that the GMG is not representing the action icons in the same way as the bestiary. In the bestiary, if you copy a stat block and then paste it into notepad you'll see that the action icons are actually translated to something readable like "[one-action]". They weren't nice enough to do that in the GMG, instead you get some unreadable junk that you need to manually convert.

Also, all the stat blocks in the bestiary have line breaks in right place and use word wrap. Looks like whoever authored the GMG used line breaks extensively. I would recommend after pasting stat blocks from the GMG to do the following:

1) find any action icons that were turned into garbage characters and convert them to [one-action], [two-actions], [three-actions], [reaction] or [free-action] as appropriate. The parser will then handle those correctly.
2) select any stat block lines that are broken across multiple line and hit crtl-j to consolidate them back into a single line. This usually happens for spell lines and occasionally skills and other places. My parser expects stat block items to be on a single line and will definitely get confused if they are not. I'm sorry it works that way, it's not terribly sophisticated and is not a full-blown parser. It generally relies on line breaks and regular expressions to get the job done.

stephan_
March 9th, 2020, 18:59
I think Foxit Reader copied the action icons correctly, Adobe Reader did not.

darrenan
March 9th, 2020, 19:33
I used Adobe Reader to copy from both Bestiary and GMG, and there is definitely a difference. When copying with Foxit do the action icons get copied the same from both books, or is there a difference?

stephan_
March 9th, 2020, 21:22
Just double-checked: Adobe Reader does not recognize [one-action] in the ones I tested, Foxit recognizes some. Bodyguard/Mage for Hire did not work, Fence and Assassin for example worked.

Suffice it to say, there seems to be some weird formating issues going on on Paizo's end...

Willot
March 10th, 2020, 03:28
Ive also found cut/pasting sometimes puts in funny little invisible control characters, if it gets confused. Ive had a couple of stat blocks where they wont parse no matter what. I drop them in notepad++ (Not Notepad! Notepad++) Remove all the double spaces and funny characters and BINGO!

Milke
March 10th, 2020, 18:04
When I copy and parse (haha), I copy everything into notepad first. Then find the beginning of a line, backspace, hit Enter to start a new line, etc etc.
I copy everything up until I get to the first action icon. Then I just manually type in [[A]], then copy and paste the stuff after. It takes a couple of minutes, but it's not a huge deal.

I save all the stat blocks. So if I need to open one up and insert it into a certain campaign, it's right there to use. Since I don't know how to put monsters in the program that will pop up in every campaign's menu.

H2Os
March 10th, 2020, 21:35
Can you let me know a stat blocks that exhibit this? I have the GMG PDF so I can try to replicate on my side. Thanks.

One thing I did notice is that the GMG is not representing the action icons in the same way as the bestiary. In the bestiary, if you copy a stat block and then paste it into notepad you'll see that the action icons are actually translated to something readable like "[one-action]". They weren't nice enough to do that in the GMG, instead you get some unreadable junk that you need to manually convert.

Also, all the stat blocks in the bestiary have line breaks in right place and use word wrap. Looks like whoever authored the GMG used line breaks extensively. I would recommend after pasting stat blocks from the GMG to do the following:

1) find any action icons that were turned into garbage characters and convert them to [one-action], [two-actions], [three-actions], [reaction] or [free-action] as appropriate. The parser will then handle those correctly.
2) select any stat block lines that are broken across multiple line and hit crtl-j to consolidate them back into a single line. This usually happens for spell lines and occasionally skills and other places. My parser expects stat block items to be on a single line and will definitely get confused if they are not. I'm sorry it works that way, it's not terribly sophisticated and is not a full-blown parser. It generally relies on line breaks and regular expressions to get the job done.

Assassin was one, however Stephan was able to produce that with no error. Poacher was another that recently did it. I can send you my txt file if you'd like to see it.

darrenan
March 10th, 2020, 21:54
Just for the hell of it I tried it in FGU, the button labels are blank. I suspect it because you used FGF fonts. Apparently FGU wont support them (which is why the Action symbols dont work either I believe). Other than that it seemed to work

I don't use any fonts explicitly. It's a problem with the ruleset. I'm probably using a control template inherited from PF2 or CoreRPG that is still using FGF fonts.

EDIT: The control I'm using (button_text_large) uses this font:



<font name="button-white-large">
<fgffile name="graphics/fonts/regular-11.fgf" />
<ttf file="graphics/fonts/Noto_Sans/NotoSans-Regular.ttf" name="Noto Sans" size="14" />
<color value="#FFFFFF" />
<shadow offset="1,1" color="#000000" />
</font>


Which seems to specify a TTF variant. Any idea why this wouldn't work in FGU? There isn't a ton of documentation on fonts in the wiki, none of the examples there have both <fgffile> and <ttf> elements so I'm not really sure how FG handles that. It looks like most of the fonts in CoreRPG are defined with both elements so I don't think that's the issue.

Willot
March 10th, 2020, 23:42
You would have to ask Trenloe but I believe he hasn't done the TTF version yet with the symbols. I suspect perhaps NotoSans-Regular.ttf doesn't exist in the graphics/font folder for PF2? But I haven't looked at the code really so couldn't be sure

darrenan
March 10th, 2020, 23:58
PF2 doesn't explicitly delete that font. Since PF2 is layered on top of CoreRPG the font should still be there. Maybe I should just create my own button template using a different font...

madman
March 11th, 2020, 00:38
@Milke (https://www.fantasygrounds.com/forums/member.php?47734-Milke)
To create things for other Campaigns. Just export it as a NPC module. Library>Export Fill out all the info on the top select the NPCS and hit export. Then you can open the module in other campaigns.
Madman..

Here is a "video" (https://www.youtube.com/watch?v=yt0KfM0nGY8) From Dave..

Ckorik
March 11th, 2020, 06:01
I don't use any fonts explicitly. It's a problem with the ruleset. I'm probably using a control template inherited from PF2 or CoreRPG that is still using FGF fonts.

EDIT: The control I'm using (button_text_large) uses this font:



<font name="button-white-large">
<fgffile name="graphics/fonts/regular-11.fgf" />
<ttf file="graphics/fonts/Noto_Sans/NotoSans-Regular.ttf" name="Noto Sans" size="14" />
<color value="#FFFFFF" />
<shadow offset="1,1" color="#000000" />
</font>


Which seems to specify a TTF variant. Any idea why this wouldn't work in FGU? There isn't a ton of documentation on fonts in the wiki, none of the examples there have both <fgffile> and <ttf> elements so I'm not really sure how FG handles that. It looks like most of the fonts in CoreRPG are defined with both elements so I don't think that's the issue.

https://www.fantasygrounds.com/forums/showthread.php?40812-5E-Table-Importer/page12

Check this thread out - Celestian seems to have found a solution for the table importer extension - from what I could tell it was to add a font declaration to the main extension.xml - you could reach out to him though and see if his solution would work for you.

Larsenex
March 17th, 2020, 22:36
Folks bear with me, what is this parser used for? If I have the Monster PDFs or other PDFs from other 3rd party, does this extension allow me to copy n paste into Fantasy grounds?

Will this work in unity? (get used to me asking this now)

stephan_
March 17th, 2020, 22:52
It should work for all statblocks that use Paizo's official format (so e.g. Bestiary, APs, SFS scenarios, ...). If 3rd parties follow the standard, it should work (with an emphasis on the "if" part).

Though be aware you'll have to do a bit of cleaning up (linebreaks, action icons, ...).

I don't know about Unity though.

Milke
March 23rd, 2020, 19:41
Yea. Dunno about Unity yet.
But this absolutely lets you parse in your own creatures.
You just have to make sure the format is exactly right when you hit the parse button.
Make sure each line starts where it should. No extra spaces, etc.
I use notepad to get it right. Then I copy and paste.
For the actions, it's [[A]] for one action. [[R]] for a reaction. [[F]] for free.

darrenan
March 23rd, 2020, 21:07
It does not seem to be working particularly well in FGU. Spells don't seem to be getting fully populated, and there's a lot of weird white space everywhere. I would recommend doing all your parsing in FGC and exporting to module for now. Once exported, it _should_ be usable in FGU. I don't plan on making any effort to find and fix the issues until FGU is officially released.

Milke
March 26th, 2020, 19:08
I've been scouring this thread trying to find where I thought someone had posted it.. but it's all kind of a blur from staring at my screen.
Didn't someone post about how to make the action icons in Unity? I know the [[A]] and all that works in FGC, but leaves a blank space in FGU.

Trenloe
March 26th, 2020, 20:04
Didn't someone post about how to make the action icons in Unity? I know the [[A]] and all that works in FGC, but leaves a blank space in FGU.
Check the Wiki userguide: https://www.fantasygrounds.com/wiki/index.php/PFRPG2_Action_Symbols

Note that the Unity symbol replacement will only work in ruleset release 14 - which is in the test channel presently.

darrenan
March 27th, 2020, 23:36
Version 1.2 is now available from Post #2 along with version 1.1. Version 1.1 should be used with ruleset releases less than 14. Version 1.2 should be used with ruleset releases 14 and beyond. See chat window after loading campaign for the ruleset release number.

When using version 1.2 you should now split ability titles onto their own line in the stat block control. The body of abilities can be multiple lines, but the ability should be terminated with an empty line. Example:

32678

Note that you can combine lines of text into a single line by selecting them all and pressing CTRL+J.

If you don't do the ability splitting above, the ruleset will still try to break out the ability title line from the description using a few different rules such as looking for closing parentheses and what not.

As always, there is no harm in editing the stat block after you've pushed the Parse button, and then parsing it again.

Grivenger
March 28th, 2020, 15:34
I'm trying to add the Doorwarden manually using the Creature Parser, but I'm not sure where it's going wrong. The error message I'm getting is the following:

Script Error: [string "scripts/manager_string.lua"]:11: attempt to index local 's' (a nil value) (What does this mean?)

I notice that the normal attacks aren't being parsed, but not entirely sure what I'm doing wrong.

Below you'll find what I'm trying to parse.

DOORWARDEN CREATURE 5
UNCOMMON LN LARGE CONSTRUCT
Perception +13; low-light vision, see invisibility
Languages Common
Skills Athletics +13, Intimidation +11
Str +6, Dex +0, Con +3, Int –1, Wis +1, Cha +2
Items longsword, steel shield (Hardness 5, HP 20, BT 10) with shield boss
AC 22 (24 with shield raised); Fort +12, Ref +7, Will +10
HP 60; Immunities bleed, death effects, disease, doomed, drained, fatigued, healing, necromancy, nonlethal attacks, paralyzed, poison, sickened, unconscious; Resistances physical 5 (except bludgeoning)
Attack of Opportunity [reaction]
Reactive Shield [reaction] Trigger An enemy hits the doorwarden with a melee Strike. Effect The doorwarden can Raise its Shield and gain its shield’s benefit to AC against the triggering attack.
Shield Block [reaction] When the doorwarden uses Shield Block against a melee attack from a creature within 5 feet, it can also push the creature 5 feet.
Speed 20 feet
Melee [one-action] longsword +15 (reach 10 feet, versatile P), Damage 1d8+9 slashing
Melee [one-action] shield boss +15, Damage 1d6+9 bludgeoning
Melee [one-action] door +13, Damage 1d4+8 bludgeoningInnate Arcane Spells DC 19; 2nd see invisibility
Imitate Door [one-action] (concentrate) Until the next time it acts, the doorwarden appears to be a door. It has an automatic result of 31 on Deception checks and DCs to pass as a door.
Slam Doors [two-actions] (concentrate) The door opens and slams its doors, making two door Strikes against one creature. If both hit, the creature is grabbed—stuck between the doors. The doorwarden’s multiple attack penalty doesn’t increase until it has finished both attacks.
THE FIRST DOORWARDENS
Elves crafted the original doorwardens in honor of their goddess of portals, Alseta. Such doorwardens (such as the one in this volume’s adventure) are similar to the one presented here, but they speak Elven instead of Common, wield specially crafted elven curve blades rather than longswords, and may have great knowledge of elven culture and religion.

darrenan
March 28th, 2020, 18:30
Doesn't repro for me with v1.1 of the extension. Can you confirm which version of the extension and ruleset you're using? Should be ruleset release 13 and v1.1. Also, what other extensions are you using?

darrenan
March 28th, 2020, 18:33
Also, you shouldn't include the flavor text in the stat block. If you do, it will end up in the Off./Proac. Abils field. You can manually paste it into the Other tab after you parse.

darrenan
March 28th, 2020, 20:15
I just added versions 1.1.1 and 1.2.1 to post #2. This fixes a reported issue with the first line of the stat block where the comparison for the string "CREATURE" was case sensitive. It is now case insensitive, so 'CREATURE', 'Creature', 'CrEaTuRe' etc. should all work. Note that version 1.1.1 should be considered 'current' until release 14 of the ruleset.

H2Os
March 28th, 2020, 21:14
awesome thank you!

Grivenger
March 28th, 2020, 21:31
Doesn't repro for me with v1.1 of the extension. Can you confirm which version of the extension and ruleset you're using? Should be ruleset release 13 and v1.1. Also, what other extensions are you using?

I was actually using 1.0 still, so it must have been some kind of formatting issue. The weird thing is that it didn't occur with the Forge-Spurned enemy. Changed my ways and made sure I got v1.1. Thanks for checking in!

Sasmira
April 1st, 2020, 04:27
Hello hello

I have this error when I try to parse a monster
version used 1.2.1 on FGU : [4/1/2020 5:15:13 AM] [<color="red">ERROR</color>] Script execution error: [string "scripts/pf2creatureparser.lua"]:377: attempt to index local 'nodeReactiveAutomaticAbilities' (a nil value)
https://www.resizup.com/images/2020/04/01/5093b0b301.th.png (https://www.resizup.com/image/bQxIP) https://www.resizup.com/images/2020/04/01/9a27a95728.th.png (https://www.resizup.com/image/bQZf8)

After, maybe I don't use correctly the parser ... :s

darrenan
April 1st, 2020, 04:37
Did you follow all the recommendations in post #1? If so, could you please post the stat block here (not a picture, the actual text so I can try it out for myself). Thanks for reporting.

darrenan
April 1st, 2020, 04:40
Easy fix. I'll post a new version to post #2 in few minutes...

Sasmira
April 1st, 2020, 04:47
Ok I try to export an Otyugh ...


OTYUGH
CREATURE 4
N LARGE ABERRATION
Perception +10; darkvision, scent (imprecise) 30 feet
Languages Common
Skills Acrobatics +8, Athletics +14, Stealth +8 (+11 in lair)
Str +6, Dex +2, Con +4, Int –2, Wis +2, Cha –2
AC 20; Fort +12, Ref +8, Will +10
HP 70; Immunities disease
Stench (aura, olfactory) 40 feet. A creature entering the aura must succeed at
a DC 20 Fortitude save or be sickened 1 (plus slowed 1 for the same duration
on a critical failure). On a success, the creature is temporarily immune to
the sickened and slowed effects of this stench for 1 hour. Regardless of
the save, while within the aura, creatures take a –2 circumstance penalty
to saves against diseases. An otyugh’s stench is due to the offal and refuse
that it wallows in, so cleaning the creature thoroughly (with create water
and sufficient scrubbing, for example) deactivates the aura, while a sufficiently
plugged nose allows an individual to avoid exposure to the stench.
Speed 20 feet
Melee [one-action] jaws +14, Damage 2d6+6 piercing plus filth fever
Melee [one-action] tentacle +14 (agile, reach 10 feet), Damage 1d6+6 bludgeoning plus Grab
Constrict [one-action] 1d6+6 bludgeoning, DC 22
Reposition [one-action] The otyugh attempts to move all creatures that it
has grabbed into other spaces within the reach of its tentacles,
rolling a single Athletics check and comparing the result against
each creature’s Fortitude DC.
On a failure, the creature
remains in place, and on
a critical failure, the
creature is no longer
grabbed.
Filth Fever (disease);
The sickened and
unconscious conditions
from filth fever don’t
improve on their own until the
disease is cured. Saving Throw DC
20 Fortitude; Stage 1 carrier with no
ill effect (1d4 hours); Stage 2 sickened 1 (1 day);
Stage 3 sickened 1 and slowed 1 as long as it
remains sickened (1 day); Stage 4 unconscious
(1 day); Stage 5 dead

After ... I don't understand what is it a "line feed" ... it's a point ? a special code ? (sorry again, I'm not english) ... have you perhaps a picture for the good rules for dummies like me :D

darrenan
April 1st, 2020, 04:51
"line feed" is the same as "the return key" or "end of line". Not sure what it is called in French.

This fix was only in v1.2, which you should only be using if you're in the Test channel. Otherwise you should be using 1.1.1. The fix for your issue is in version 1.2.2, in post #2 above.

darrenan
April 1st, 2020, 04:55
When in doubt, it's a good practice to make sure items are all on the same line. In your example above for instance, the Stench ability is spread over multiple lines. You can select all of those lines and then hit CTRL-J to combine them into a single line. If you do that with all abilities, you'll have a much better chance of everything parsing correctly. In addition, adding a blank line after each ability is even better.

Sasmira
April 1st, 2020, 05:05
When in doubt, it's a good practice to make sure items are all on the same line. In your example above for instance, the Stench ability is spread over multiple lines. You can select all of those lines and then hit CTRL-J to combine them into a single line. If you do that with all abilities, you'll have a much better chance of everything parsing correctly. In addition, adding a blank line after each ability is even better.

Ok I try that in Test channel :)

line feed is a "carriage return" or "Return" in english (Retour Charriot or Entrée in french) ... and I have understand with your example, ty :)


EDIT : No error in v1.2.2 on FGU ! nice and thx for your help !

NielsenE
April 19th, 2020, 17:20
After a recent-ish update the extension is erroring out on all the stat blocks from recent PFS quests. I've tried both of the newest versions lists in the second post, since I wasn't certain which ruleset I was on but both give the same eror.

"Script Error: [string "scripts/pf2creatureparser.lua"]:220: attempt to index local 'sFortitudeAll' (a nil value)"

A sample stat block, after removing the pdf introduced linewrappings,



NEIDRE FLIAVAZZANA CREATURE 5
CE SMALL GNOME HUMANOID
Perception +15
Languages Common, Gnome
Acrobatics +13, Aspis Consortium Lore +10, Athletics +8, Deception +13, Intimidate +11, Society +10, Stealth +15, Thievery +13
Str +0, Dex +4, Con +1, Int +3, Wis +0, Cha +4
Items bronze badge, hand crossbow (10 bolts), kukri (2), minor healing potion, studded leather armor
AC 22; Fortitude +9, Reflex +15, Will +12
HP 68
Speed 25 feet
Melee [one-action] +13 kukri (agile, finesse, trip), Damage 1d6+7 slashing
Melee [one-action] +13 fist (agile, finesse, nonlethal), Damage 1d4+7 bludgeoning
Ranged [one-action] +13 hand crossbow (range increment 60 feet), Damage 1d6 piercing
Sneak Attack Neidre deals an additional 1d6 precision damage to flatfooted creatures.
Surprise Attacker On the first round of combat, creatures that haven’t acted yet are flat-footed to Neidre.
Deny Advantage Neidre isn’t flat-footed to hidden, undetected, or flanking creatures of her level or lower, or creatures of her level or lower using surprise attack. However, they can still help their allies flank.

darrenan
April 19th, 2020, 18:24
@NielsenE I identified the issue and it should now be fixed in version 1.2.3, in post #2 above. Thanks for reporting and let me know if you see any other issues.

H2Os
April 19th, 2020, 19:26
We should all be on the 2nd one now as long as our FG is up to date right?

darrenan
April 19th, 2020, 19:52
that's right. I was going to wait a while before pulling down the old one just in case.

NielsenE
April 22nd, 2020, 22:35
@NielsenE I identified the issue and it should now be fixed in version 1.2.3, in post #2 above. Thanks for reporting and let me know if you see any other issues.
Finally got a chance to pull down the new version and try it out, looks like it still has issues, but doesn't report any errors and is more compete.

1) Skills show up in a light grey box w/o a border under Interaction Abilities instead of in the Skills darker grey/bordered box. The skills are not rollable.
2) Sneak attack shows up in a similar box w/in Offensive or Proactive Abilities, while Surprise attacker and Deny Advantage show up properly in the darker grey/bordered box

darrenan
April 23rd, 2020, 05:05
1) I see what you're seeing, and it's because the Skills line doesn't actually have the word "Skills" at the beginning (at least with the stat block you pasted above).

Still looking at 2).

darrenan
April 23rd, 2020, 05:08
For 2), please see new notes for this version in post #1. specifically:


Each creature ability (interaction, automatic, reactive, offensive, and/or proactive) should be terminated with two line feeds, and the title of the ability and the ability description should be separated by a single line feed. NOTE: This is new behavior as of version 1.2 of this extension and release 14 of the ruleset, currently in the Test channel. If you are using a previous version of the ruleset, the old behavior is that each creature ability (name, traits and description) be on its own line terminated with a line feed.

For example:


NEIDRE FLIAVAZZANA CREATURE 5
CE
SMALL
GNOME
HUMANOID
Perception +15
Languages Common, Gnome
Skills Acrobatics +13, Aspis Consortium Lore +10, Athletics +8, Deception +13, Intimidate +11, Society +10, Stealth +15, Thievery +13
Str +0, Dex +4, Con +1, Int +3, Wis +0, Cha +4
Items bronze badge, hand crossbow (10 bolts), kukri (2), minor healing potion, studded leather armor
AC 22; Fortitude +9, Reflex +15, Will +12
HP 68
Speed 25 feet
Melee [one-action] +13 kukri (agile, finesse, trip), Damage 1d6+7 slashing
Melee [one-action] +13 fist (agile, finesse, nonlethal), Damage 1d4+7 bludgeoning
Ranged [one-action] +13 hand crossbow (range increment 60 feet), Damage 1d6 piercing
Sneak Attack
Neidre deals an additional 1d6 precision damage to flatfooted creatures.

Surprise Attacker
On the first round of combat, creatures that haven’t acted yet are flat-footed to Neidre.

Deny Advantage
Neidre isn’t flat-footed to hidden, undetected, or flanking creatures of her level or lower, or creatures of her level or lower using surprise attack. However, they can still help their allies flank.

darrenan
April 23rd, 2020, 05:10
Also, I have seen instances where it is necessary to close and reopen the NPC window to get roll highlighting to work. Seems like reparsing an NPC in place after tweaking the stat block interferes with this functionality.

NielsenE
April 23rd, 2020, 23:14
Thanks, looks like just one of the recent quests from paizo left off the Skills tag, so I don't think its an actual change in their formatting going forward. Just a mistake in their editing one time that happened to catch me in the midst of other changes.

H2Os
May 22nd, 2020, 23:17
I am getting this error when I attempt to parse, "Script Error: [string "scripts/pf2creatureparser.lua"]:858: attempt to concatenate local 'sTitle' (a nil value)" The creature I attempted to parse was the Yeth Hound from bestiary 2.

Trenloe
May 23rd, 2020, 10:47
I am getting this error when I attempt to parse, "Script Error: [string "scripts/pf2creatureparser.lua"]:858: attempt to concatenate local 'sTitle' (a nil value)" The creature I attempted to parse was the Yeth Hound from bestiary 2.
As others have done when they have issues with a statblock, please post the statblock text you're trying to parse. Without this it's very hard to troubleshoot your issue.

H2Os
May 24th, 2020, 01:27
Sorry I wasn't sure if posting the stat block was allowed.
YETH HOUND CREATURE 3
CE MEDIUM BEAST FIEND
Perception +9; darkvision, scent (imprecise) 30 feet
Languages Abyssal (can’t speak any language)
Skills Acrobatics +8, Athletics +9, Stealth +10, Survival +8
Str +4, Dex +3, Con +2, Int –2, Wis +3, Cha +1
AC 18; Fort +9, Ref +12, Will +12
HP 55; Weaknesses silver 5
Speed 40 feet; air walk
Melee [one-action] jaws +11, Damage 1d8+6 piercing plus 1d6 evil, Knockdown, and sinister bite

Divine Innate Spells DC 20; Constant (4th) air walk

Bay
[three-actions] (auditory, concentrate, divine, enchantment, fear, mental) The yeth hound emits an unearthly howl audible up to 300 feet away. Any non-fiend creature that hears the howl must succeed at a DC 20 Will save or become frightened 1. Any creature that critically fails and is within 60 feet of the yeth hound is instead frightened 3 and fleeing for 1d4 rounds (or until it recovers from its frightened condition). Whether it succeeds or fails the saving throw, the creature is then temporarily immune to Bay for 24 hours.

Sinister Bite
A good creature bitten by a yeth hound must attempt a DC 20 Will save. On a critical success, the creature is temporarily immune to sinister bite for 1 minute. A creature that fails becomes frightened 1, or increases the value of its frightened condition by 1 if already frightened.

Trenloe
May 24th, 2020, 10:25
I am getting this error when I attempt to parse, "Script Error: [string "scripts/pf2creatureparser.lua"]:858: attempt to concatenate local 'sTitle' (a nil value)" The creature I attempted to parse was the Yeth Hound from bestiary 2.
Click the "SHOW PARSE LOG" button to get an idea where the issue is. The chat window will show you that the last entry it parsed was the attacks. The issue is caused by the blank line between attacks and innate spells. You also shouldn't have a blank line between innate spells and the first ability (Bay). It is only the abilities that should have blank lines between them. See post #98 for an example.

So, this is what you should be using (note also that the whole "Bay" ability title is on one line):

YETH HOUND CREATURE 3
CE MEDIUM BEAST FIEND
Perception +9; darkvision, scent (imprecise) 30 feet
Languages Abyssal (can’t speak any language)
Skills Acrobatics +8, Athletics +9, Stealth +10, Survival +8
Str +4, Dex +3, Con +2, Int –2, Wis +3, Cha +1
AC 18; Fort +9, Ref +12, Will +12
HP 55; Weaknesses silver 5
Speed 40 feet; air walk
Melee [one-action] jaws +11, Damage 1d8+6 piercing plus 1d6 evil, Knockdown, and sinister bite
Divine Innate Spells DC 20; Constant (4th) air walk
Bay [three-actions] (auditory, concentrate, divine, enchantment, fear, mental)
The yeth hound emits an unearthly howl audible up to 300 feet away. Any non-fiend creature that hears the howl must succeed at a DC 20 Will save or become frightened 1. Any creature that critically fails and is within 60 feet of the yeth hound is instead frightened 3 and fleeing for 1d4 rounds (or until it recovers from its frightened condition). Whether it succeeds or fails the saving throw, the creature is then temporarily immune to Bay for 24 hours.

Sinister Bite
A good creature bitten by a yeth hound must attempt a DC 20 Will save. On a critical success, the creature is temporarily immune to sinister bite for 1 minute. A creature that fails becomes frightened 1, or increases the value of its frightened condition by 1 if already frightened.

H2Os
May 24th, 2020, 14:17
awesome, thank you.

Talen
June 18th, 2020, 00:28
I couould use some help - encountering the following error when attempting to parse ("Script Error: [string "scripts/pf2creatureparser.lua"]:293: attempt to index local 'sLine' (a nil value))
The parse log shows it stopping at the Defenses line.


ELITE WARG CREATURE 3N MEDIUM BEAST
Perception +10; darkvision, scent (imprecise) 30 feet
Languages Common, Goblin, Orcish
Skills Acrobatics +9, Athletics +10, Deception +8, Intimidation +8, Stealth +9, Survival +10
Str +4, Dex +3, Con +3, Int –1, Wis +2, Cha +2
AC 19, Fort +13, Ref +11, Will +8
HP 51
Avenging Bite [reaction]
Trigger A creature within reach of the warg’s jaws attacks one of the warg’s allies. Effect The warg makes a jaws Strike against the triggering creature.
Speed 40 feet
Melee [one-action] jaws +13, Damage 1d8+6 piercing plus Grab
Pack Attack
The warg’s Strikes deal 1d4 extra damage to creatures within the reach of at least two of the warg’s allies.


Swallow Whole [one-action] (attack) Small,
1d6+4 bludgeoning, Rupture 9

NielsenE
June 18th, 2020, 00:40
Try switching the comma to a semi-colon between AC and saves. That seems to switch back and forth a lot in their documents.

darrenan
June 18th, 2020, 01:06
You need a semi-colon separator after AC instead of a comma.
The two consecutive blank lines between Pack Attack and Swallow Whole also caused a problem.
Here is the fixed block:



ELITE WARG CREATURE 3N MEDIUM BEAST
Perception +10; darkvision, scent (imprecise) 30 feet
Languages Common, Goblin, Orcish
Skills Acrobatics +9, Athletics +10, Deception +8, Intimidation +8, Stealth +9, Survival +10
Str +4, Dex +3, Con +3, Int –1, Wis +2, Cha +2
AC 19; Fort +13, Ref +11, Will +8
HP 51
Avenging Bite [reaction]
Trigger A creature within reach of the warg’s jaws attacks one of the warg’s allies. Effect The warg makes a jaws Strike against the triggering creature.
Speed 40 feet
Melee [one-action] jaws +13, Damage 1d8+6 piercing plus Grab
Pack Attack
The warg’s Strikes deal 1d4 extra damage to creatures within the reach of at least two of the warg’s allies.

Swallow Whole [one-action] (attack) Small,
1d6+4 bludgeoning, Rupture 9

Talen
June 18th, 2020, 01:55
Thank you Darrenan and NielsenE for the quick response!
Question - is there a way for the parser to add clickable attacks for something like the "Swallow Whole" ability like it does for the melee attacks?

Trenloe
June 18th, 2020, 13:11
Question - is there a way for the parser to add clickable attacks for something like the "Swallow Whole" ability like it does for the melee attacks?
The melee attack double-click to attack/apply damage functionality isn't in this parser, it's in the base ruleset. Make sure the attack/damage string is the usual format - if there's no damage then include ", Damage 0" on the end of the attack string; if there's no attack then use something like: "Swallow Whole, Damage 1d6+4 bludgeoning" as an attack string.

There's currently some experimental NPC ability automation being developed that would allow a GM to code actions/automation into an ability. We're hoping to to have that in the test channel soon, with a lot of example automation applied to low level creatures in the official Bestiary product as part of that test.

stephan_
June 19th, 2020, 11:42
The "," instead of a ";" after AC seems to be a common error in Paizo's own stat blocks. :)

Talen
June 21st, 2020, 14:33
Does the parser account for saving throws? For example, how would the parse for this ranged ability with save work?...I can get the damage to work - but not the save....

Hair Barrage [two-actions] The tarantula flicks its legs, flinging spiky hairs in a 15-foot cone. This deals 3d8 piercing damage with a DC 19 basic Reflex save.


I tried the following but dont know the syntax to add the save:
Ranged [two-actions] Hair Barrage, Damage 3d8 piercing. The tarantula flicks its legs, flinging spiky hairs in a 15-foot cone. This deals 3d8 piercing damage with a DC 19 basic Reflex save.

stephan_
June 21st, 2020, 22:34
There's probably others more familiar with it but I don't think the parser can automate that at the moment. I'm happy to be proven wrong though.

darrenan
June 22nd, 2020, 17:01
The parser only adds links to existing spells in modules that you have loaded. It does not add ability automation beyond that.

Grivenger
July 10th, 2020, 11:31
Running against a problem that may be caused by the spells, but I'm not sure. According to the parse log, it does parse the spells correctly, but it won't parse the Ability Mind Blast nor the Melee line. Any input is appreciated.


NIHILOOR CREATURE 8
N MEDIUM ABBERATION HUMANOID
Perception +7 darkvision, tremorsense
Skills Acrobatics +4, Arcana +7, Athletics +4
Str +3, Dex +3, Con -1, Int +6, Wis +4, Cha +6
AC 26; Fort +13, Ref +13, Will +19
HP 139; Resistances Magical 6
Speed 30 Ft.
Melee [one-action] mandibles +18, Damage 2d8+9 piercing
Occult Spells 1 Focus Point, DC 26, attack +18 ; 4th Phantasmal killer; 2nd Mirror Image; 1st Phantom Pain Ray of Enfeeblement; Cantrips (4th) Telekinetic Projectile

Mind Blast [two-actions] (attack)
Nihiloor emits a concussive wave of energy in a 60-foot cone that deals 9d6 damage (basic Will save DC 23). 1d4 rounds to recharge.

MaxAstro
July 10th, 2020, 15:36
Is there supposed to be a blank line after the spells? I don't think there is.

Grivenger
July 10th, 2020, 15:39
Is there supposed to be a blank line after the spells? I don't think there is.

That was actually it. How embarrassing! I was under the assumption abilities required a space so I added a space between the spells and Mind Blast

Trenloe
July 10th, 2020, 15:40
I was under the assumption abilities required a space so I added a space between the spells and Mind Blast
Subsequent abilities do, but not the first. See the examples on the previous page.

darrenan
July 10th, 2020, 16:55
Spell lines are expected to be in the form "[tradition] [type] Spells" For instance "Druid Order Spells" or "Divine Innate Spells". Since you just have "Occult Spells" it is unable to match that pattern. Also, the place where you put Focus Points does not match the examples I see Bestiary 1, where they are inserted within parentheses directly after the spell level. For example: "Druid Order Spells DC 21; 2nd (1 Focus Point) wild morph, wild shape"

It is entirely possible that this format might have changed in subsequent bestiaries, Paizo isn't very good at maintaining consistency. Please see the stat block definitions on page 5-6 of the Bestiary. The only sources I have to go on right now are Bestiary 1 and Fall of Plaguestone, so if they have changed formats in subsequent books, someone will need to let me know.

darrenan
July 10th, 2020, 17:07
This seems to work mostly:

NIHILOOR CREATURE 8
N MEDIUM ABBERATION HUMANOID
Perception +7 darkvision, tremorsense
Skills Acrobatics +4, Arcana +7, Athletics +4
Str +3, Dex +3, Con -1, Int +6, Wis +4, Cha +6
AC 26; Fort +13, Ref +13, Will +19
HP 139; Resistances Magical 6
Speed 30 Ft.
Melee [one-action] mandibles +18, Damage 2d8+9 piercing
Occult Focus Spells 1 Focus Point, DC 26, attack +18; 4th Phantasmal killer; 2nd Mirror Image; 1st Phantom Pain Ray of Enfeeblement; Cantrips (4th) Telekinetic Projectile
Mind Blast [two-actions] (attack)
Nihiloor emits a concussive wave of energy in a 60-foot cone that deals 9d6 damage (basic Will save DC 23). 1d4 rounds to recharge.

darrenan
July 10th, 2020, 17:15
Version 1.2.4 is now attached to post #2. Fixed a potential script error when writing a line to the parse log.

Grivenger
July 10th, 2020, 17:51
Subsequent abilities do, but not the first. See the examples on the previous page.

Yeah, I completely overlooked it in the example I was contrasting for my own errors.


Spell lines are expected to be in the form "[tradition] [type] Spells" For instance "Druid Order Spells" or "Divine Innate Spells". Since you just have "Occult Spells" it is unable to match that pattern. Also, the place where you put Focus Points does not match the examples I see Bestiary 1, where they are inserted within parentheses directly after the spell level. For example: "Druid Order Spells DC 21; 2nd (1 Focus Point) wild morph, wild shape"

It is entirely possible that this format might have changed in subsequent bestiaries, Paizo isn't very good at maintaining consistency. Please see the stat block definitions on page 5-6 of the Bestiary. The only sources I have to go on right now are Bestiary 1 and Fall of Plaguestone, so if they have changed formats in subsequent books, someone will need to let me know.

I caught this problem after going over the block of text, but I forgot to edit it to the newer version.

NielsenE
July 26th, 2020, 04:01
Working on prepping some new scenarios and the Hazard is putting the entire parse block into the name of the hazrd (all the lines) and not parsing anything. Nothing in the error log. Is this a known issue?

stephan_
July 26th, 2020, 08:42
As far as I'm aware the extension doesn't have a code to deal with hazards at all.

darrenan
July 27th, 2020, 00:45
The extension only deals with creatures. Hazards are not supported at this time.

Farnaby
August 1st, 2020, 06:54
This is easily fixed manually, but I wondered what was going wrong here.


AC 25; Fort +18, Ref +12, Will +15
HP 160; Resistances fire 10; Weaknesses cold 5, good 5
Attack of Opportunity [reaction]

results in

HP 160
HP Abilities Resistances fire 10
Immunities
Weaknesses
Resistances fire 10;

Farnaby
August 1st, 2020, 08:24
Here's another one.


Skills Athletics +19
Str +6, Dex –3, Con +5, Int –5, Wis +0, Cha –5
AC 16; Fort +18, Ref +8, Will +11

Skills get filled in, so does the AC and the saves but the ability modifiers stay 0

Here's the log output:

--- ParseSection1 ---
Line:UNCOMMON N MEDIUM MINDLESS OOZE
Line:Perception +11; chemical sense 60 feet, no vision
ParsePerceptionAndSenses(Perception +11; chemical sense 60 feet, no vision)
Line:Skills Athletics +19
ParseSkills(Skills Athletics +19)
Line:Str +6, Dex –3, Con +5, Int –5, Wis +0, Cha –5
ParseAbilityModifiers(Str +6, Dex –3, Con +5, Int –5, Wis +0, Cha –5)
--- ParseSection2 ---
Line:AC 16; Fort +18, Ref +8, Will +11
ParseDefenses(AC 16; Fort +18, Ref +8, Will +11)
Saves:; Fort +18, Ref +8, Will +11

darrenan
August 1st, 2020, 19:44
For the first one, the correct order (as specified in Bestiary) is Immunities, Weaknesses, Resistances. The parser expects them to be in that order. Also, that Attack of Opportunity line is in the wrong location. It should be after Speed and any attacks. This seems to work correctly:


AC 25; Fort +18, Ref +12, Will +15
HP 160; Weaknesses cold 5, good 5; Resistances fire 10

The second one works fine for me.

Farnaby
August 2nd, 2020, 07:27
Thanks.

FYI, they are both a direct copy + paste from the new module The Slithering
The first one now works - thanks.
The second one - after a new copy + paste - works now. :confused:

MaxAstro
August 3rd, 2020, 05:53
Thanks.

FYI, they are both a direct copy + paste from the new module The Slithering
The first one now works - thanks.
The second one - after a new copy + paste - works now. :confused:

Paizo is terrible about sticking to their own formatting, expect things like this to crop up all the time.

Larsenex
August 20th, 2020, 12:59
Greetings. I am attempting to create a new monster. The Brigand. Its essentially a basic -1 lvl fighter. I was using the formatting by changing the skeleton warrior but some abilities and reactions do not seem to work. I wanted to create several differnt types of this templet and its taking a bit of time.
I have the parser. Would I have better luck just creating a statblock in note pad as per your formatting guide and pasting it into a new record?
Please realize i am new to the creation process and I am learning by trial and error for what works.

Larsenex

stephan_
August 20th, 2020, 13:22
Could you post the statblock?

Larsenex
August 20th, 2020, 14:06
Stephan,

I have not tried to even build one yet. What I am doing right now and taking an equivalent monster of the 'same' level and copying and unlocking it and adjusting from there. This seems to work well. In this case the standard Brigand which was in several editions back in the 80's was removed. I needed something like that so I built one using the skeleton warrior as my base. I am attempting to convert some very old school modules and some of the monsters are not available.
What I was curious about was if the parser would be faster to just build in notepad and copy n paste into the parser in FGU.

What i coiuld really use is just a basic templet. I did not know if such a templet exists or I just need to create a few and keep them in notepad++ saved in a folder and bring them out and change them as needed.

Thanks for the reply.

Trenloe
August 20th, 2020, 14:39
In this case the standard Brigand which was in several editions back in the 80's was removed. I needed something like that...
What about the NPCs from the Gamemastery Guide? OGL module here: https://www.fantasygrounds.com/forums/showthread.php?57668-(PF2-Module)-Gamboa-OGL-Gamemastery-Guide-NPCs


What I was curious about was if the parser would be faster to just build in notepad and copy n paste into the parser in FGU.
The parser's strengths are taking an existing statblock, copied from an external source, and quickly turning that into a FG NPC record. If you're taking a base creature and making changes, for most cases copying a base NPC record in FG and making the appropriate changes will be quicker. If you're editing some text, you're editing some text - why add the extra steps of doing it outside FG and having to re-import via the parser? The only exception to this could be for spell casters - if you're changing in the spells they're using, as the parser brings in the spell records as well (although you could drag/drop spells onto a NPC if there were just a few changes).

In the end, only you will be able to judge what is better for your process.

stephan_
August 20th, 2020, 15:49
I would say changing up the numbers takes roughly the same amount of time with a raw statblock and the FG NPC entry. So there shouldn't be a lot of difference, especially with low-level NPC that don't have a lot of special abilities.

The weak/elite adjustments are also nice to have at hand, with the exception of the hp, I believe all adjustments can be coded with effects by now.

Larsenex
August 20th, 2020, 17:17
Trenloe,

That is what i am looking for. Thanks. As I delve more into this module i am converting the NPC's have more and more strange abilities not listed in P2 which I will have to account for.

Olliebird
September 3rd, 2020, 02:46
Having trouble with a parse. I think it's somewhere in the spells because I only have trouble with spellcasting parses. Block below:


BAHOR CREATURE 14
LE MEDIUM FIEND RAKSHASA

Perception +25; Darkvision
Languages Common, Infernal, Undercommon
Skills Deception +29, Diplomacy +27, Intimidation +27, Occultism +24, Performance +25, Stealth +26
Str +4, Dex +7, Con +4, Int +3, Wis +2, Cha +5
Items +2 striking kukri, rakshasan third eye, wand of haste
AC 36; Fort +25, Ref +27, Will +24; +2 status to all saves vs. magic, +3 status to all saves vs. divine magic
HP 225; Resistances physical 10 (except piercing); Weaknesses good 10
Scoff at the Divine
Trigger A creature within 30 feet casts a divine spell or uses a divine ability. Requirements Bahor has an unexpended spell slot that can be used to cast dispel magic. Effect Bahor expends a spell slot that could be used to cast dispel magic and attempts to counteract the triggering spell or ability. Bahor can’t Scoff at the divine for 1d4 rounds.

Speed 35 feet
Melee kukri +29 (agile, finesse, magical, trip), Damage 2d6+13 slashing
Melee fangs +27 (agile, magical), Damage 2d12+13 piercing
Melee claw +28 (agile, finesse, magical), Damage 2d8+13 slashing
Occult Spontaneous Spells DC 37, attack +29 ; 7th (4 slots) prismatic spray, project image, warp mind; 6th (4 slots) blinding fury, scrying, vibrant pattern; 5th (4 slots) dispel magic, hallucination, shadow blast; 4th (4 slots) clairvoyance, dispel magic, fly, suggestion; 3rd (4 slots) clairaudience, dispel magic, nondetection, vampiric touch; 2nd (4 slots) blur, hideous laughter, invisibility; 1st (4 slots) charm, illusory object, item facade; Cantrips (5th) detect magic, ghost sound, mage hand, read aura, sigil
Occult Innate Spells DC 37; 3rd mind reading (at will);

Change Shape
(concentrate, occult, polymorph, transmutation) Bahor takes on the appearance of any Medium humanoid. This doesn’t change Bahor’s Speed or his attack and damage modifiers with his Strikes but might change the damage type his Strikes deal (typically to bludgeoning). He typically loses his fangs Strike unless the humanoid form has fangs or a similar unarmed attack.

Disturbing Vision
(concentrate, enchantment, mental, occult) Bahor’s eyes flash green as he projects a telepathic wave in a 30-foot emanation. All creatures in the area are assailed by a vision of evil decadence from one of the Bahor’s past lives. Each non-evil creature in the area must succeed at a DC 34 Will save or become sickened 2 (and stunned 1 on a critical failure). The visions last 1d4 rounds, and while they do, Bahor and all evil creatures in the area gain a +2 status bonus to all checks. Bahor can use this ability again only once the previous visions end.

Trenloe
September 3rd, 2020, 04:26
Having trouble with a parse. I think it's somewhere in the spells because I only have trouble with spellcasting parses. Block below:
Don't have blank lines within the statblock, except for when it's to separate abilities. The only blank line you should have in the statblock you listed is between the Change Shape and Disturbing Vision abilities. Or you can also have one after Scoff at the Divine, but not after the spells section.

As mentioned in post #1: "Each creature ability (interaction, automatic, reactive, offensive, and/or proactive) should be terminated with two line feeds, and the title of the ability and the ability description should be separated by a single line feed."

Olliebird
September 3rd, 2020, 05:56
Champion as always, Trenloe. Thank you!

Montis
September 5th, 2020, 18:27
This is great stuff! Works very well if you follow the formatting. Maybe there could be an example entry in the first post seeing how many people have issues with the formatting?

Something like:


EXAMPLE BEING
CREATURE 0
RARE CE TINY HUMAN
Perception +1
Languages Common, Necril
Skills Acrobatics +1, Stealth +2
Str -2, Dex +1, Con +3, Int -2, Wis +1, Cha +2
AC 12; Fort +1, Ref +2, Will +3
HP 25, negative healing; Immunities death effects, disease, paralyzed, poison, unconscious; Weaknesses fire 1, cold 2
Speed 5 feet, fly 10 feet
Melee [one-action] finger poke +1 (finesse, agile), Damage 1d6 negative
Melee [two-actions] finger stab +2 (finesse, agile), Damage 1d6 fire
Ranged [three-actions] finger throw +3 (finesse, sweep), Damage 1d6 good
Divine Innate Spells DC 42, attack +32; 9th divine wrath, prismatic sphere; 4th confusion (at will), dimension door (at will);
Example Ability [two-actions] (concentrate, divine, polymorph, transmutation)
The Example Being can take the appearance of any other creature.

Another Example Ability [three-actions] (concentrate, divine, polymorph, transmutation)
This ability makes the Example Being nigh invulnerable.

Also important to note is that official PDFs usually use a long dash hyphen for the stats (like STR –2), while the parser expects a regular minus (STR -2).

Karzoug
October 7th, 2020, 18:19
Hello,
I have tried the last example from mantis and i have this error when i click on "Parse" : (see parse error.jpg)
And this result : (see parse result.jpg)

I see no melee or ranged attack... and ability score is missing...

darrenan
October 7th, 2020, 20:19
Works for me, are you using other extensions?

Karzoug
October 7th, 2020, 21:05
yes but i tried without extension to be sure and i have the same problem
Edit : I use FGU

darrenan
October 8th, 2020, 16:51
Tried in FGU. While I did not get the script error, I did notice that the example stat block above did not parse correctly because the negative ability modifiers were not using a hyphen character, but rather one of the other hyphen-like characters. There is a function I run at the beginning to fix these kinds of characters, and this function does the replacement correctly on FGC but not FGU for some reason. I will attempt to modify this function to find all of the variations of hyphen but in the meantime please make sure that any minus signs are using the hyphen character (do a global search and replace for anything that looks like a hyphen with the actual hyphen character on your keyboard).

P.S. I have added some error checking to catch the script error you reported and log it. It will be in the next release of the extension, whenever that happens.

Karzoug
October 8th, 2020, 18:19
Ok sorry it was my fault, it works now. i did not get the script error anymore and i confirm i have hyphen and i must replace by minus.

darrenan
November 23rd, 2020, 04:26
Version 1.2.5 is now attached to post #2. This fixes an issue where spells would not get populated from modules when running in FGU.

Montis
May 26th, 2021, 15:47
Hello darrenan,
if you have a bit of time, would it be possible to double check if the new ruleset update didn't break anything? So far no errors are triggered, but just to be safe :)

Cheers!

darrenan
May 26th, 2021, 15:57
Certainly can, although because of the way the extension is structured it is very self-contained and doesn't overlap much with the PF2 ruleset Hence, it is largely immune to problems stemming from ruleset updates.

Montis
May 30th, 2021, 12:52
Great, thanks anyway :)

hawkwind
June 12th, 2021, 18:33
this stat block won't parse any further than the name line

Sea Devil Scout Creature 2
LE MEDIUM AMPHIBIOUS HUMANOID SEA DEVIL
Perception +9; darkvision, wavesense 30 feet
Languages Aquan; shark commune 150 feet
Skills Athletics +9 (+11 to Swim), Intimidation +5, Stealth +8, Survival +7
Str +3, Dex +4, Con +1, Int +0, Wis +3, Cha -1
Items longspear, spear
Shark Commune (mental, telepathy)
The sea devil can communicate telepathically with sharks within range. It can communicate only simple concepts like ''come,'' ''guard,'' or ''attack.''
AC 18; Fort +7, Ref +10, Will +7
HP 30
Melee [one-action] longspear +11 (reach 10 feet), Damage 1d8+3 piercing
Melee [one-action] claw +11 (agile), Damage 1d6+3 slashing
Melee [one-action] jaws +11, Damage 1d8+3 piercing
Ranged [one-action] spear +12 (thrown 20 feet), Damage 1d6+3 piercing
Blood Frenzy [free-action] (rage)
Requirements The sea devil is not fatigued or already in a frenzy. Trigger The sea devil deals bleed damage to a living creature. Effect The sea devil flies into a frenzy that lasts 1 minute. While frenzied, the sea devil gains a +1 status bonus to attack rolls with its claws and jaws, gains a +4 status bonus to damage rolls with its claws and jaws, gains 7 temporary HP until the end of the frenzy, and takes a -2 status penalty to AC. The sea devil can't voluntarily stop its frenzy. After its frenzy, the sea devil is fatigued.

Bloodletting
When the sea devil deals piercing or slashing damage, it also deals 1d4 persistent bleed damage if the target was flat-footed or if the attack was a critical hit.

i have since realised its in the bestairy1 but im still curious as to why it won't parse?

stephan_
June 12th, 2021, 18:51
No speed line.

Add e.g. Speed 30 Ft. after HP and it parses.

Edit:

Speed 25 feet, swim 35 feet

would be its speed.

hawkwind
June 12th, 2021, 19:35
thanks, obvious now you mention it
Paizo's stat blocks are getting worse

darrenan
July 20th, 2021, 20:44
The extension download in post #2 has been replaced by a link to the item in The Forge.

Milke
July 29th, 2021, 04:13
Forge says I already have it. But I last downloaded it a long time ago. So it won't let me get the latest updated version?

darrenan
July 29th, 2021, 16:48
I have it setup to download to your extensions folder, not the vault, and the extension hasn't changed in a long time, so you probably have the latest version already. If you see "Pathfinder 2E Creature Parser v1.2.5 for Fantasy Grounds" in the chat window then you have the latest version. If you see an older version then you should report this in one of the Forge forum threads, not sure if there's one specifically for bugs and issues. You could also try removing the extension from the extension folder (don't delete it, just move it out of the folder) and see if Fantasy Grounds will then download it the next time you run an update.

Milke
July 29th, 2021, 18:26
Yea. I have 1.2.3
So I will try removing it to see if it will download it.

.... Yea. That fixed it. Last one I had was from, like, May of last year. I removed it and it downloaded it for me fresh. Thanks, darrenan.

belkasro
September 23rd, 2021, 03:15
Hey does this add on have a preferred template so it will work every time. tired it and it has gone wrong alot on my end. tired to make this into the game and fails

https://2e.aonprd.com/NPCs.aspx?ID=952

stephan_
September 23rd, 2021, 12:53
The statblock needs a specific format (see first post, trial and error does usually work).

You can use the FG action symbols if you want to but the least change necessary to parse would be:


PIRATE CREATURE 2
CN Medium Human Humanoid
Perception +6
Languages Common
Skills Acrobatics +7, Athletics +8, Deception +6, Intimidation +6, Sailing Lore +8
Str +2, Dex +3, Con +1, Int +0, Wis +2, Cha +2
Items cutlass (functions as a scimitar), dagger, padded armor
AC 18; Fort +7, Ref +8, Will +6
HP 32
Attack of Opportunity Reaction

Bravery
When the pirate rolls a success on a Will save against a fear effect, they get a critical success instead. In addition, anytime they gain the frightened condition, reduce its value by 1.
Speed 25 feet
Melee Single Action cutlass +10 [+5/+0] (forceful, sweep), Damage 1d6+5 slashing
Melee Single Action dagger +11 [+7/+3] (agile, versatile S), Damage 1d4+5 piercing
Ranged Single Action dagger +11 [+7/+3] (agile, thrown 10 feet, versatile S), Damage 1d4+5 piercing
Boarding Action Two Actions
The pirate swings on a rope or Strides, moving up to double their Speed. If the pirate boarded or disembarked a boat during this movement, they can make a melee Strike at the end of their movement that deals one extra damage die on a hit.

rennyo
December 16th, 2021, 10:24
After last update many extensions started to give an error. This is one of them.

darrenan
December 16th, 2021, 18:56
yep, I will try to get an update out ASAP. Thanks for reporting!

darrenan
December 16th, 2021, 20:35
v1.2.6 is now in the Forge pipeline and attached to post #2

rennyo
December 21st, 2021, 09:53
Thank you very much for update! It is working now.

muzouka
March 6th, 2022, 05:17
How does Creature Parser work for Hazards?

stephan_
March 6th, 2022, 10:25
It doesn't as far as I'm aware.

darrenan
March 7th, 2022, 16:28
No it does not.

Stargrove
April 2nd, 2022, 17:57
I am trying to import a statblock that is produced by https://monster.pf2.tools/ and am having no luck. When I try and import the text that the site produces it just parses it all into the name field. I have looked through post 1 and other than removing the extra carriage returns I don't see anything obviously wrong with the text.



Nualia Warpriest of Lamashtu 5
CE MEDIUM HUMANOID HUMAN AASIMAR
Perception +11; darkvision
Skills Intimidation +11 , Medicine +13 , Religion +11 , Survival +11 (Assurance), Lamashtu Lore +7
Str +4, Dex +1, Con +2, Int +0, Wis +4, Cha +2
Incredible initiative
+2 to initiative
Emblazoned Armament
Weapon serves as holy symbol +1 status bonus to damage using the Falchion (already included)
Intimidating Prowess
+1 to intimidation
Fighter Dedication
AC 22 (23 with shield spell); Fort +11, Ref +8, Will +13
HP 63 (Toughness)
Speed 25 feet
Shield Block [[R]]
Hardness 10 from shield spell. Once used cannot be used again for 10 minutes.
Melee [[A]] +1 striking falchion +12 (sweep, forceful, emblazoned), Damage 2d10+5 slashing
Ranged [[A]] composite longbow +9 (Deadly d10, Propulsive, Volley 30 ft.), Damage 1d8+2 piercing
Divine Spells DC 21, attack +11; 3rd Animal Form, Fear, Harm, Harm, Harm; 2nd Dispel Magic, See Invisibility, Spiritual Weapon; 1st Command, Protection, Sanctuary, Athletic Rush (focus); Cantrips (3rd) Light (innate), Detect Magic, Divine Lance, Message, Prestidigitation, Shield (hardness 10)
Athletic Rush [[A]] (focus, transmutation, somatic)
Duration 1 round. Your body fills with physical power and skill. You gain a +10-foot status bonus to Speed and a +2 status bonus to Athletics checks. As a part of Casting this Spell, you can use a Stride, Leap, Climb, or Swim action. The spell's bonuses apply during that action.
Intimidating Glare [[A]] (Visual,Concentrate,Emotion,Mental)
With just a glance you can shake an enemy’s resolve. Choose a creature within 30 feet of you who you’re aware of. Attempt an Intimidation check (adding 1 for Initmidating Prowess) against that target’s Will DC. The target must be able to clearly see you. Regardless of your result, the target is temporarily immune to your attempts to Demoralize it for 10 minutes. Critical Success The target becomes frightened 2. Success The target becomes frightened 1.
Shield [[A]]
Nualia casts shield whenever she has a 3rd action free


I have attached the json (would have to be renamed to remove the .TXT extension) that the site uses to produce the statblock as well.

dsaraujo
April 2nd, 2022, 19:18
You probably want to switch "Warpriest of Lashtu" to "Creature" to start with. Some other entries like "Incredible initiative" and "Emblazoned Armament" probably also confuses the parser. Here is my version if you want to import.

52256

Stargrove
April 2nd, 2022, 19:51
Yes, but this was a larger plan to maybe get all of the RotRL creatures imported so I could run it in 2e. If I am unable to do that without a lot of trial an error then I am probably not going to do it. Oh well.

dsaraujo
April 2nd, 2022, 20:37
I currently starting chapter 4 of Burnt Offerings, using the Series of Dice Events as reference, and converting as I go along. Happy to share my work (but typically I'm prepping for 5 PCs). Sorry for the off-topic.

Stargrove
April 2nd, 2022, 21:33
You can just PM me.

darrenan
April 4th, 2022, 16:54
You don't need to change that text. Just insert the word "Creature" prior to the level.
Add the type of spells after 'Divine' (I'm assuming Innate?)
Make sure you have blank lines between each ability so the parser knows where each one starts.

After making those 3 changes, the stat block parsed correctly for me. Here's the edited stat block:



Nualia Warpriest of Lamashtu Creature 5
CE MEDIUM HUMANOID HUMAN AASIMAR
Perception +11; darkvision
Skills Intimidation +11 , Medicine +13 , Religion +11 , Survival +11 (Assurance), Lamashtu Lore +7
Str +4, Dex +1, Con +2, Int +0, Wis +4, Cha +2
Incredible initiative
+2 to initiative

Emblazoned Armament
Weapon serves as holy symbol +1 status bonus to damage using the Falchion (already included)

Intimidating Prowess
+1 to intimidation

Fighter Dedication

AC 22 (23 with shield spell); Fort +11, Ref +8, Will +13
HP 63 (Toughness)
Speed 25 feet
Shield Block [[R]]
Hardness 10 from shield spell. Once used cannot be used again for 10 minutes.
Melee [[A]] +1 striking falchion +12 (sweep, forceful, emblazoned), Damage 2d10+5 slashing
Ranged [[A]] composite longbow +9 (Deadly d10, Propulsive, Volley 30 ft.), Damage 1d8+2 piercing
Divine Innate Spells DC 21, attack +11; 3rd Animal Form, Fear, Harm, Harm, Harm; 2nd Dispel Magic, See Invisibility, Spiritual Weapon; 1st Command, Protection, Sanctuary, Athletic Rush (focus); Cantrips (3rd) Light (innate), Detect Magic, Divine Lance, Message, Prestidigitation, Shield (hardness 10)

Athletic Rush [[A]] (focus, transmutation, somatic)
Duration 1 round. Your body fills with physical power and skill. You gain a +10-foot status bonus to Speed and a +2 status bonus to Athletics checks. As a part of Casting this Spell, you can use a Stride, Leap, Climb, or Swim action. The spell's bonuses apply during that action.

Intimidating Glare [[A]] (Visual,Concentrate,Emotion,Mental)
With just a glance you can shake an enemy’s resolve. Choose a creature within 30 feet of you who you’re aware of. Attempt an Intimidation check (adding 1 for Initmidating Prowess) against that target’s Will DC. The target must be able to clearly see you. Regardless of your result, the target is temporarily immune to your attempts to Demoralize it for 10 minutes. Critical Success The target becomes frightened 2. Success The target becomes frightened 1.

Shield [[A]]
Nualia casts shield whenever she has a 3rd action free

jayleew
April 12th, 2022, 20:50
Really need to see a sample of what is expected for input. Can you make up a creature and paste the input to parse? Oh, sorry I didn't see the previous post.

Montis
April 14th, 2022, 09:32
This is great stuff! Works very well if you follow the formatting. Maybe there could be an example entry in the first post seeing how many people have issues with the formatting?

Something like:


EXAMPLE BEING
CREATURE 0
RARE CE TINY HUMAN
Perception +1
Languages Common, Necril
Skills Acrobatics +1, Stealth +2
Str -2, Dex +1, Con +3, Int -2, Wis +1, Cha +2
AC 12; Fort +1, Ref +2, Will +3
HP 25, negative healing; Immunities death effects, disease, paralyzed, poison, unconscious; Weaknesses fire 1, cold 2
Speed 5 feet, fly 10 feet
Melee [one-action] finger poke +1 (finesse, agile), Damage 1d6 negative
Melee [two-actions] finger stab +2 (finesse, agile), Damage 1d6 fire
Ranged [three-actions] finger throw +3 (finesse, sweep), Damage 1d6 good
Divine Innate Spells DC 42, attack +32; 9th divine wrath, prismatic sphere; 4th confusion (at will), dimension door (at will);
Example Ability [two-actions] (concentrate, divine, polymorph, transmutation)
The Example Being can take the appearance of any other creature.

Another Example Ability [three-actions] (concentrate, divine, polymorph, transmutation)
This ability makes the Example Being nigh invulnerable.

Also important to note is that official PDFs usually use a long dash hyphen for the stats (like STR –2), while the parser expects a regular minus (STR -2).

Here's a sample entry I made a few pages ago.

darrenan
June 25th, 2022, 17:49
Version 1.2.7 uploaded to the forge, and attached to post #2. Spell parsing improvements and stability enhancements.

SweegyLeo
January 19th, 2023, 05:07
@Trenloe - Do you have any contacts at Paizo you can ask about the future of Focus spells in NPC stat blocks? Bestiary 1 doesn't have any examples of "Focus Spells" per se, but has one each of "Champion Devotion Spells" and "Druid Order Spells", which seem to be the only examples of Focus spells in the book. I'm wondering if I should be planning ahead for "Bard Composition", "Cleric Domain", "Monk Ki", "Sorcerer Bloodline", and "Wizard School" in the future as well?

+magus

rennyo
February 13th, 2023, 12:01
For enhanced compatibility(after release 19 everything will became broken) I recommend to do this fix for adding Parcer tab. This part was taken from here:
https://github.com/MostTornBrain/CohortsAndCompanions/blob/main/campaign/record_npc_PFRPG2.xml
so, I am not the author of this method.
The fix is

<root>
<windowclass name="npc" merge="join">
<script>
<!--
For reasons I don't understand, trying to add the "parse" tab
via the usual window sheetdata merge, PFRPG2 does something wonky in
reaction to the <tabs_sheetdata>, so this needs to be done via an init function.
-->
function onInit()
tabs.addTab("parse", "tab_parse", false);
super.onInit();
end
</script>
<script file="campaign/scripts/npc.lua" />
<sheetdata>
<subwindow_record name="parse">
<class>npc_parse</class>
</subwindow_record>

<scrollbar_record>
<target>parse</target>
</scrollbar_record>
</sheetdata>
</windowclass>
In other words "tabs.addTab("parse", "tab_parse", false);" should be added to campaign/scripts/npc.lua" in onInit function and <script>....</script> should be removed
I have same problems with Map Parcels extention, so it can be fixed with the same way for pathfinder2.

The problem with hooks will be fixed tomorrow, according https://www.fantasygrounds.com/forums/showthread.php?50246-Pathfinder-Second-Edition-PFRPG2-Ruleset-Status-issues-and-ongoing-development&p=677884&viewfull=1#post677884

darrenan
February 16th, 2023, 19:22
I'll fix this when v19 comes out. Still seems to be working just fine currently.

darrenan
February 16th, 2023, 20:00
Version 1.2.8 has been released to the Forge. See post #1 for details (does not include the fix above yet).

Trenloe
February 16th, 2023, 21:57
I'll fix this when v19 comes out. Still seems to be working just fine currently.
Just use normal merge="join" functionality. The PFRPG2 ruleset was updated this week to add a name="tabs" property to the tabs_recordsheet definition in the npc windowclass, which enables easier FG XML definition merging.

bayne7400
February 22nd, 2023, 15:22
Hey Derrenan

I was wondering if you wanted to include a JSON converter in this extension? I have got the code to open up a JSON file that is saved on your hard drive and convert it into a LUA table. I started setting up the script to setValues to all the fields but I realized there is going to be a lot of duplication wrt that portion. Because its a table its pretty easy to find the correct values. If not its cool I can finish this off as I have time. Here is an image to show what I am talking about and a link to the website that was shared with me.

https://monster.pf2.tools/
56313

darrenan
February 23rd, 2023, 18:58
That would be pretty handy, and certainly less error-prone than the text parsing method. Obviously this only works with the data output from monster.pf2.tools. I'm not aware of any JSON 'standard' for representing PF2 creatures. I would want to refactor my code to allow a lot of the data setting stuff to be shared between the text and json parsing methods.

How are you doing the JSON parsing?

bayne7400
February 23rd, 2023, 19:29
After you read the file in FG just use this.

Utility.decodeJSON(json) sets it up as a lua Table. It is organized like this once you decode it . strength = {value=1, ... notes= ""}


So no need to Parse it is exact. So you just do something like this:

if rNPCData.strength.value == "" then sValue = 0 else sValue = rNPCData.strength.value end
DB.setValue(nodeRecord, "strength", "number", tonumber(sValue));


The skills will require concanation (haven't gotten that far) and the spells will require a look up in the ref manuals that are loaded.

I can pass along the entire thing. I just merged it into your script. Its a side quest of a side quest so really need to be working on some main projects haha. If your on discord can message me there for the copy of your file.

darrenan
February 23rd, 2023, 19:37
That's straightforward, I'll start working on it.

bayne7400
February 23rd, 2023, 19:57
Let me know if you need anything it took me a minute to figure out how to get and read the file but it ended up being very simple. I just wanted to see if I could do it.

darrenan
March 14th, 2023, 00:28
Version 1.3, which has the ability to parse JSON stat blocks generated by https://monster.pf2.tools/ has been uploaded to the Forge. I'm sure there are bugs, but I've done as much testing as I can think of. Please post here if you get script errors, or find things that don't seem to be working correctly.

There are some known issues with the web site, but the author of the site is no longer maintaining that version of the tool so I've done the best I can with the output. You will also see differences in the NPCs generated by parsing the text output and the json output from that web site because of the way it generates the text stat block which is incorrect in a few places.

darrenan
March 16th, 2023, 22:08
Version 1.3.1 has been pushed to the Forge. See post #1 for changes in this version.

darrenan
May 21st, 2023, 20:23
Version 1.3.2 has been pushed to the Forge. See post #1 for changes in this version.

Miraclemaker
July 21st, 2023, 13:28
Hello, I have found out that following JSON doesn't parse properly. JSON in question is from the conversion github repository (https://github.com/A-Series-of-Dice-Based-Events/SkullAndShackles/blob/master/Book%201%20-%20The%20Wormwood%20Mutiny/NPCs/MrPlugg_Creature4.json), which works perfectly when you put it into the monster.pf2e.tools. I have tried just copying this particular json to the parser and first uploading it to the monster.pf2e.tools, exporting a json from there and then copying it to the parser but it fails with the attached parse log and the partially parsed creature looks like the attached png file.

Thanks for your work!

darrenan
July 22nd, 2023, 15:47
The errors described in the previous post have been fixed and version 1.3.3 has been uploaded to the forge.

webdove
September 24th, 2023, 21:22
I tried parsing the text from Nethys for the giant skunk
https://2e.aonprd.com/Monsters.aspx?ID=1311
It

Giant Skunk
Creature 1
N Large Animal
Source Bestiary 3 pg. 246
Perception +6; low-light vision, scent (imprecise) 40 feet
Skills Acrobatics +7, Athletics +6, Stealth +7
Str +3, Dex +4, Con +3, Int -4, Wis +1, Cha +0
AC 16; Fort +8, Ref +9, Will +4
HP 21
Speed 25 feet
Melee [one-action] jaws +8 [+3/-2], Damage 1d6+3 piercing
Melee [one-action] claw +8 [+4/+0] (agile), Damage 1d4+3 slashing

Spray Blinding Musk [two-actions] (poison)
The giant skunk propels potent, acrid musk in a 15-foot cone.
Each creature in the line must attempt a DC 17 Fortitude save.
Critical Success The target is unaffected.
Success The target is sickened 1. Failure The target is sickened 3.
Critical Failure The target is blinded for 1 round, becomes sickened 3, and takes a –2 penalty to Stealth checks from the horrific odor for 24 hours or until the musk is removed or neutralized, requiring 10 minutes of thorough scrubbing with soap.

It seemed to parse that ok, but the Spray Blinding Musk had no clickable actions. Should there be actions after parsing for special effects or does the extension no create any of those?
https://i.imgur.com/Mug5rrx.png

darrenan
September 25th, 2023, 18:10
The parser does not parse ability text to add actions, you need to do that yourself.

TheJayde
January 10th, 2024, 05:34
It looks like this may no longer be working? I cant get it to operate.

Trenloe
January 10th, 2024, 10:21
It looks like this may no longer be working? I cant get it to operate.
What's not working?

MaxAstro
January 10th, 2024, 17:00
It looks like this may no longer be working? I cant get it to operate.

A quick test seems to still be working for me, at least.

darrenan
January 11th, 2024, 01:37
Yes please be more specific with symptoms, what you tried, other loaded extensions, etc.

TheJayde
January 11th, 2024, 04:04
What's not working?

I have it on my forge account. I loaded the game and the tab does not show up at all on the Bestiary Entry. Unless maybe there is a new way to use this? I am using Pathfinder 2e and have not updated to the remaster so there could be something with that. My Cohorts and Companions extension also seems to be MIA. On forge I tried to disable and enable again but it seems to have been ineffective. There is no parse effect at all.

Montis
January 11th, 2024, 13:51
I have it on my forge account. I loaded the game and the tab does not show up at all on the Bestiary Entry. Unless maybe there is a new way to use this? I am using Pathfinder 2e and have not updated to the remaster so there could be something with that. My Cohorts and Companions extension also seems to be MIA. On forge I tried to disable and enable again but it seems to have been ineffective. There is no parse effect at all.

Did you actually activate the extension(s) before starting the FG server?

Trenloe
January 11th, 2024, 15:35
I have it on my forge account. I loaded the game and the tab does not show up at all on the Bestiary Entry. Unless maybe there is a new way to use this? I am using Pathfinder 2e and have not updated to the remaster so there could be something with that. My Cohorts and Companions extension also seems to be MIA. On forge I tried to disable and enable again but it seems to have been ineffective. There is no parse effect at all.
As Montis suggests, double check that you have enabled the extension before loading your campaign. If you have and you still can't see the "Parse" tab in a new creature (you need to create a new creature, it's not in the Bestiary list) then please recreate the issue and compile the FG logs and post them here - details on compiling the FG logs can be found in the FG Wiki here: https://fantasygroundsunity.atlassian.net/wiki/spaces/FGCP/pages/1242136781/How+to+Compile+Logs - use Method 3 from within the campaign that isn't working correctly.

darrenan
January 11th, 2024, 17:48
I can confirm it's still working fine for me. Please follow all the advice above, thanks.

TheJayde
January 12th, 2024, 01:42
As Montis suggests, double check that you have enabled the extension before loading your campaign. If you have and you still can't see the "Parse" tab in a new creature (you need to create a new creature, it's not in the Bestiary list) then please recreate the issue and compile the FG logs and post them here - details on compiling the FG logs can be found in the FG Wiki here: https://fantasygroundsunity.atlassian.net/wiki/spaces/FGCP/pages/1242136781/How+to+Compile+Logs - use Method 3 from within the campaign that isn't working correctly.

I have found that it seems to be the campaign Im missing it from. This campaign is labeled P"athfinder (2E Legacy)". I have another campaign that the ruleset is just "Pathfinder (2E)" and I can see it there as well as others that I cant see in the first one.

In the first campaign (The problem one) the extensions I have are:
-Pathbuilder Import
-Big Portraits
-PFRPG2 GM Enhyancements
-Success Level Colors

In the older campaign I have:
-Pathbuilder Import
-Big Portraits
-Cohorts and Companions
-PFRPG2 GM Enhancements
-PFRPG2 Upgrades
-PF2ECreatureParser
-Success Level Colors

Trenloe
January 12th, 2024, 12:54
@Darrenan - any PFRPG2 extension needs to be updated to also be available for the PFRPG2-Legacy ruleset. Unfortunately there's nothing that can be done inside the ruleset to cater for this, so the extension needs to be modified. Sorry for the hassle.

MaxAstro
January 12th, 2024, 15:40
Ah yes, I forgot I had noticed that was a thing with this one. Actually the number one reason I've switched most of my campaigns over to Remastered is so I could keep using this extension.

darrenan
March 11th, 2024, 19:02
Version 1.4 has just been pushed to the Forge. This fixes incompatibilities with FG v4.5.0. I only did rudimentary testing, so please report any issues you run into, thanks.