
Finoan |

I got about half way through writing a ETL script that would take the exported json file and convert it into Paizo variant BB code.
It is harder than it sounds like it should be in order to get it to work correctly. The basics aren't terribly difficult, but some of the more unique character options are a bit of a challenge. And I didn't bother to look into handling equipment.

Finoan |

In case anyone feels like taking and running with it, here is what I have started.
It is fairly old (a year or so), so I don't know what it is going to do with the Remaster changes. Probably blow up spectacularly. Or at least output some really wonky numbers for attribute bonuses since those are 0-based bonus values instead of 10-based score values.
It is a raw python script, so run accordingly.
import sys
import json
import mathfilename = sys.argv[1]
filedata = open(filename)
data = json.load(filedata)def proficiencyValue(rankValue, abilitymod, level):
if (rankValue == 0):
return abilitymod
return abilitymod + rankValue + leveldef proficiencyRankText(rankValue):
return {0: '', 2: 'T', 4: 'E', 6 : 'M', 8: 'L'}[rankValue]builddata = data['build']
level = builddata['level']print(builddata['ancestry'])
print(builddata['heritage'])
print(builddata['background'])
print(builddata['class'])
print('level:', level)print('')
print('Ability Bonuses:')')
strs = math.floor( (builddata['abilities']['str'] - 10) / 2)
dex = math.floor( (builddata['abilities']['dex'] - 10) / 2)
con = math.floor( (builddata['abilities']['con'] - 10) / 2)
ints = math.floor( (builddata['abilities']['int'] - 10) / 2)
wis = math.floor( (builddata['abilities']['wis'] - 10) / 2)
cha = math.floor( (builddata['abilities']['cha'] - 10) / 2)print('STR:', strs)
print('DEX:', dex)
print('CON:', con)
print('INT:', ints)
print('WIS:', wis)
print('CHA:', cha)
print('print('')
print('Feats:')')
for featdata in builddata['feats']:
print(featdata[0])
print('print('')
proficiencydata = builddata['proficiencies']
print('perception:', proficiencyValue(proficiencydata['perception'], wis, level), proficiencyRankText(proficiencydata['perception']))
print('')
print('fortitude:', proficiencyValue(proficiencydata['fortitude'], con, level), proficiencyRankText(proficiencydata['fortitude']))
print('reflex:', proficiencyValue(proficiencydata['reflex'], dex, level), proficiencyRankText(proficiencydata['reflex']))
print('will:', proficiencyValue(proficiencydata['will'], wis, level), proficiencyRankText(proficiencydata['will']))
print('')print('
Skills:')')
print('acrobatics:', proficiencyValue(proficiencydata['acrobatics'], dex, level), proficiencyRankText(proficiencydata['acrobatics']))
print('arcana:', proficiencyValue(proficiencydata['arcana'], ints, level), proficiencyRankText(proficiencydata['arcana']))
print('athletics:', proficiencyValue(proficiencydata['athletics'], strs, level), proficiencyRankText(proficiencydata['athletics']))
print('crafting:', proficiencyValue(proficiencydata['crafting'], ints, level), proficiencyRankText(proficiencydata['crafting']))
print('deception:', proficiencyValue(proficiencydata['deception'], cha, level), proficiencyRankText(proficiencydata['deception']))
print('diplomacy:', proficiencyValue(proficiencydata['diplomacy'], cha, level), proficiencyRankText(proficiencydata['diplomacy']))
print('intimidation:', proficiencyValue(proficiencydata['intimidation'], cha, level), proficiencyRankText(proficiencydata['intimidation']))
print('medicine:', proficiencyValue(proficiencydata['medicine'], wis, level), proficiencyRankText(proficiencydata['medicine']))
print('nature:', proficiencyValue(proficiencydata['nature'], wis, level), proficiencyRankText(proficiencydata['nature']))
print('occultism:', proficiencyValue(proficiencydata['occultism'], ints, level), proficiencyRankText(proficiencydata['occultism']))
print('performance:', proficiencyValue(proficiencydata['performance'], cha, level), proficiencyRankText(proficiencydata['performance']))
print('religion:', proficiencyValue(proficiencydata['religion'], wis, level), proficiencyRankText(proficiencydata['religion']))
print('society:', proficiencyValue(proficiencydata['society'], ints, level), proficiencyRankText(proficiencydata['society']))
print('stealth:', proficiencyValue(proficiencydata['stealth'], dex, level), proficiencyRankText(proficiencydata['stealth']))
print('survival:', proficiencyValue(proficiencydata['survival'], wis, level), proficiencyRankText(proficiencydata['survival']))
print('thievery:', proficiencyValue(proficiencydata['thievery'], dex, level), proficiencyRankText(proficiencydata['thievery']))print('')
for loredata in builddata['lores']:
print(loredata[0], proficiencyValue(loredata[1], ints, level), proficiencyRankText(loredata[1]))
print('print('')
print('')#print (list(builddata))
Edit: Aaaaand of course, it tries to interpret the embedded BB code string literals when I post it here.
Womp womp womp.

Finoan |

I have seen several common themes. There isn't an enforced standard template.
You can check out mine. Or plenty of others for inspiration. Like, literally. Finoan is one of my PbP characters and still has his profile filled out.
For a copy/paste/edit, you probably want one that uses less spoilers... You could ask at a PbP PFS lodge to see if any of them have a template that they recommend.