PDA

View Full Version : Fantasy Grounds and Herolab



Leonal
May 2nd, 2010, 04:57
As a user of both programs I'd love to have the ability to export PCs/NPCs from Hero Lab (https://wolflair.com/index.php?context=hero_lab) to FG.

I learned that it's possible for PCGen users to export to d20_JPG, but what about other rulesets? And from Hero Lab to d20Pro..
But since I prefer Hero Lab over PCGen and FG over d20Pro it doesn't work out for me.

Since Hero Lab supports 3.5, 4e, Savage Worlds, Cthulhu etc. and these are rulesets supported by FG, wouldn't it be awesome if you could export your PCs or modified NPCs from Herolab into FG, without having to type or copy/paste it all? :)
(Sadly only 4e users have awesome parsers and whatnot to help them with this already AFAIK.)

Any one else who'd benefit if this was possible? And perhaps more importantly, pay to have it supported?

I'd assume this would require some tool, though, to import the exported data from Heroloab into an existing FG campaign. Not everyone are comfortable working with the xml files when adding external data, and it could definitely speed up the process.

Thoughts?

ddavison
May 2nd, 2010, 05:02
Does HeroLab support an XML output file of some kind? We are currently working with import and export libraries and XSL transformations for XML that we hope to have ready for the next update to Fantasy Grounds. If so, that will provide the framework that can be used to generate an import procedure specific for HeroLabs and each ruleset it supports.

Leonal
May 2nd, 2010, 05:12
Thanks for the quick reply. :)

The d20Pro output from HeroLab is XML and looks like the code posted below (Pathfinder 1st lvl warrior). It also has html/bbcode etc. but I guess that's not as useful for importing to FG.


<?xml version='1.0' encoding='ISO-8859-1'?>
<document signature='d20Pro Import File'>

<importer version='2' game='pathfinder'/>

<hero heroname='Boris'>
<keyvalue id='Size' value='Medium'/>
<keyvalue id='Space' value='5'/>
<keyvalue id='Reach' value='5'/>
<keyvalue id='Speed' value='30'/>
<keyvalue id='NumHands' name='Number of Hands' value='2'/>
<keyvalue id='Class' value='Warrior 1'/>
<keyvalue id='Race' value='Human'/>
<keyvalue id='Alignment' value='Neutral Evil'/>

<keyvalue id='CurrentHP' name='Current Hit Points' value='9'/>
<keyvalue id='MaxHP' name='Maximum Hit Points' value='9'/>

<keyvalue id='ACTotal' name='Total Armor Class' value='13'/>
<keyvalue id='ACArmor' name='AC from Armor' value='+2'/>
<keyvalue id='ACShield' name='AC from Shield'/>
<keyvalue id='ACDexMod' name='AC from Dexterity Modifier' value='+1'/>
<keyvalue id='ACNatural' name='AC from Natural'/>
<keyvalue id='ACDeflect' name='AC from Deflection'/>
<keyvalue id='ACDodge' name='AC from Dodge'/>
<keyvalue id='ACMisc' name='AC from Miscellaneous'/>

<keyvalue id='CMBTotal' name='Total CMB' value='+2'/>
<keyvalue id='CMDTotal' name='Total CMD' value='13'/>
<keyvalue id='CMDFlat' name='Flat-Footed CMD' value='12'/>
<keyvalue id='PP' name='Total PP' value='0'/>
<keyvalue id='GP' name='Total GP' value='0'/>
<keyvalue id='SP' name='Total SP' value='0'/>
<keyvalue id='CP' name='Total CP' value='0'/>

<background gender='male' age='18' height='5&apos; 9&quot;' weight='175lb.' hair='' eyes='' skin=''><![CDATA[]]></background>

<types>
<type name='Humanoid'/>
<subtype name='Human'/>
</types>

<attributes>
<keyvalue id='aSTR' name='Strength' value='13'/>
<keyvalue id='aDEX' name='Dexterity' value='13'/>
<keyvalue id='aCON' name='Constitution' value='12'/>
<keyvalue id='aINT' name='Intelligence' value='10'/>
<keyvalue id='aWIS' name='Wisdom' value='9'/>
<keyvalue id='aCHA' name='Charisma' value='8'/>
</attributes>

<saves>
<keyvalue id='svFort' name='Fortitude Save' value='3'/>
<keyvalue id='svRef' name='Reflex Save' value='1'/>
<keyvalue id='svWill' name='Will Save' value='-1'/>
</saves>

<attacks>
<attack id='wArrows' name='Arrows' attack='-4' damage='1d4' critical='20/x2' multiattacks='no' class='light' equipped='' melee='false' ranged='false' thrown='false' finesse='false'/>

<attack id='wLongbow' name='Longbow (both hands)' attack='0' damage='1d8' critical='20/x3' multiattacks='no' class='twohanded' equipped='' melee='false' ranged='true' thrown='false' finesse='false'/>

<attack id='wShortswd' name='Shortsword' attack='0' damage='1d6' critical='19-20/x2' multiattacks='no' class='light' equipped='' melee='true' ranged='false' thrown='false' finesse='false'/>

<attack id='wUnarmed' name='Unarmed Strike' attack='0' damage='1d3' critical='20/x2' multiattacks='no' class='light' equipped='' melee='true' ranged='false' thrown='false' finesse='false'/>

</attacks>

<feats>
<keyvalue id='fArmHeavy' name='Armor Proficiency (Heavy)'/>
<keyvalue id='fArmLight' name='Armor Proficiency (Light)'/>
<keyvalue id='fArmMedium' name='Armor Proficiency (Medium)'/>
<keyvalue id='fImpInit' name='Improved Initiative'/>
<keyvalue id='fWepMart' name='Martial Weapon Proficiency - All'/>
<keyvalue id='fArmShield' name='Shield Proficiency'/>
<keyvalue id='fSimple' name='Simple Weapon Proficiency - All'/>
<keyvalue id='fToughness' name='Toughness +3'/>
<keyvalue id='fArmTower' name='Tower Shield Proficiency'/>
</feats>

<skills>
<skill id='skAcrobat' name='Acrobatics' ranks='0' misc='0'/>
<skill id='skAppraise' name='Appraise' ranks='0' misc='0'/>
<skill id='skBluff' name='Bluff' ranks='0' misc='0'/>
<skill id='skClimb' name='Climb' ranks='0' misc='0'/>
<skill id='skDiplo' name='Diplomacy' ranks='0' misc='0'/>
<skill id='skDisable' name='Disable Device' ranks='0' misc='0'/>
<skill id='skDisguise' name='Disguise' ranks='0' misc='0'/>
<skill id='skEscape' name='Escape Artist' ranks='0' misc='0'/>
<skill id='skFly' name='Fly' ranks='0' misc='0'/>
<skill id='skHandleAn' name='Handle Animal' ranks='0' misc='0'/>
<skill id='skHeal' name='Heal' ranks='0' misc='0'/>
<skill id='skIntim' name='Intimidate' ranks='1' misc='0'/>
<skill id='skLinguist' name='Linguistics' ranks='0' misc='0'/>
<skill id='skPercep' name='Perception' ranks='1' misc='0'/>
<skill id='skRide' name='Ride' ranks='0' misc='0'/>
<skill id='skSenseMot' name='Sense Motive' ranks='0' misc='0'/>
<skill id='skSleight' name='Sleight of Hand' ranks='0' misc='0'/>
<skill id='skSpellcr' name='Spellcraft' ranks='0' misc='0'/>
<skill id='skStealth' name='Stealth' ranks='1' misc='0'/>
<skill id='skSurvival' name='Survival' ranks='0' misc='0'/>
<skill id='skSwim' name='Swim' ranks='0' misc='0'/>
<skill id='skUseMagic' name='Use Magic Device' ranks='0' misc='0'/>
<skill id='lCommon' name='Speak Common' ranks='1' misc='0'/>
</skills>

<gear>
<item id='wArrows' name='Arrows' weight='3lbs' quantity='20'/>
<item id='arLeather' name='Leather' weight='15lbs' quantity='1'/>
<item id='wLongbow' name='Longbow' weight='3lbs' quantity='1'/>
<item id='wShortswd' name='Shortsword' weight='2lbs' quantity='1'/>
</gear>

<spellsknown>
</spellsknown>

<spellsmemorized>
</spellsmemorized>

<specialabilities>
</specialabilities>

</hero>

</document>

drahkar
May 2nd, 2010, 16:19
Does HeroLab support an XML output file of some kind? We are currently working with import and export libraries and XSL transformations for XML that we hope to have ready for the next update to Fantasy Grounds. If so, that will provide the framework that can be used to generate an import procedure specific for HeroLabs and each ruleset it supports.


That's fantastic to hear and simplifies some of the works I've been working on. (Goodbye custom made xml converter!)

Will you post up the information for the libraries into the reference area?

Sorry Leonal. I swear I didn't mean to hijack your thread. But hearing this is very exciting. :)

ddavison
May 2nd, 2010, 20:06
Yes it will have a write-up.

Zeus
May 2nd, 2010, 21:10
Doug, appreciating you may not be able to answer in full but is the XML/XSL import/export functionality you referenced envisioned as being limited to Character sheet type data or is the plan for it to encompass all campaign objects?

ddavison
May 2nd, 2010, 22:37
My plan was to make it generic so it could be used for anything.

Zeus
May 2nd, 2010, 22:59
Thats great news indeed. I'm looking forward to getting my mits into this, once its released. Cheers.