This project is read-only.

File Information

As of 2017/02/05 there are 137 files of code, and five additional files are generated upon first load.

Files in the docs folder

12 of the files are in the "docs" folder, which has the editor.html, which is basically a glorified shortcut to the Hero Lab integrated editor manual; manual.html which has information about the basic use of the program, as well as a bunch information that doesn't matter anymore (like how to run the downloader); and 10 images that are loaded by the manual.

.1st Extension

Hilariously, the 1st extension files aren't loaded before everything else, but they are the first things that apply directly to the character. These are XML files.
.1st Extension Function
bootstrap.1st Loads a lot of the basic character functions, like attributes, defenses, skills, etc.
control.1st Operational control of data files. Usage pools, sources, sortsets, and related.
tags.1st All of the tag groups and tags. Has a lot of very good comments.

.aug Extension

Some of these files are for modifying built in functions of the Hero Lab program itself. A couple I'm not sure why they are .aug files at all. These are XML files.
.aug Extension Function
ddi_sources.aug A list of the source book IDs, their names, and a description "Enable rules from the ..."
ddi_weapon_properties.aug A list of 11 weapon properties "WepProp". I don't know why this is an aug file.
styles_output.aug Definitions and custom resources for printed output of Hero Lab. This is what the sheet files refer to.
styles_ui.aug Definitions and custom resources for the on screen output of Hero Lab.
system_resources.aug By default this file just duplicates what HL does naturally. It is there to allow someone to modify the elements. This uses styles from styles_ui.aug.

.bmp Extension

These are the pictures that are used on the UI and sheets. There is nothing particularly magical about them, so I'm not going to cover them one at a time.

stub.cfg

This is the only cfg file. It is extremely simple (6 lines of code) that specifies what folder the files should be automatically installed in, the version of the game files (which hasn't been updated in years), and what the name of the game should be in the list in Hero Lab. This is actually an XML file.

components.core

This is the only core file. This is also the first file that loads. It is full of extremely low level components that basically everything else uses. This includes stuff like the ability to have drop downs with options in them, and the ability for a power or piece of gear to have a requirement. This is where the limits on adjustments are, as well as where every class and race gets the fields for it to specify what it is (like a variable to hold the number of trained skills, or number of powers per level).

.dat Extension

This is where the game files prefer to keep the bits that make it a set for D&D rather than just a framework. This is also where it keeps the bits of framework that don't need to load before everything else. The tabs in the program and the printed character sheets are all in .dat files.

.dat Files Function
dossier_d20pro.dat The specifications to save the hero in a format acceptable to the D20Pro Virtual Tabletop.
dossiers.dat This file is the character sheet middleman. It knows what sheets (their own dat files) to call when a specific selection is made.
editor.dat This is what give the editor the knowledge of how to make anything. The actual file has almost no game information. It does, however, have a lot of documentation for what almost any field is for.
faq.dat This is where the FAQ menu option gets its information. It's a link to the HL website, directions on how to launch the editor, and finally a very out of date changelog.
form_config.dat This is where the basic character configuration details are, as well as the layout of the initial windows. Hero/monster, stat gen method, starting level. That stuff.
form_dashboard.dat If your profile has more than one character in it, this is what specifies how that little bar to the side works and looks.
form_magic_armor_create.dat The form to make magic armor. I bet you guessed that though.
form_magic_create.dat And this is how it makes magic weapons.
form_manipulate.dat Tactical manipulation form definition. This is what says how to make notes. It talks about damage in the comments, but I didn't see anything that would do that.
form_static.dat The static parts of the interface (the parts that don't change when changing tabs, etc).
form_taccon.dat Tactical console itself. Initiative tracking and whatnot.
loadmods.dat I don't have the foggiest idea what this is supposed to be for. It seems like if something went wrong it just got thrown in here instead of fixing it where it's bad.
out_custom.dat Custom XML output for a statblock. I don't know if this is actually used. It looks like a general function that was just slapped in when they started. Maybe it is used though.
out_statblock.dat Outputs a basic text-based character statblock.
procedures.dat This is where a lot of the nasty business of character generation happens. Buying, selling, combining damage dice, how many powers you need/have, etc. Lots of math and logic.
sheet_journal.dat The formatting directions for the part of the character sheet that holds the journal.
sheet_landscape1.dat Formating for the first page of a two page landscape character sheet.
sheet_landscape2.dat Take a guess.
sheet_landscapespill.dat A final landscape character sheet to accept any parts of the character that didn't fit on the first two pages. Or it doesn't print if unneeded.
sheet_powercards.dat The definitions and positioning of the power cards sheet(s).
sheet_standard1.dat First page of the portrait character sheet.
sheet_standard2.dat Second page of the portrait character sheet.
sheet_stardardspill.dat And finally the bonus portrait character sheet page if everything doesn't fit on two.
summ_armory.dat This file contains the definition of the "Armory" summary panel.
summ_basics.dat This file contains the definition of the "Basics" summary panel.
summ_powers.dat This file contains the definition of the "Abilities" summary panel.
summ_skills.dat This file contains the definition of the "Skills" summary panel.
tab_allies.dat This file contains the definition of the "Allies" tab panel.
tab_armory.dat "Armory" tab.
tab_basics.dat "Basics" tab. I'm not sure where this tab shows up (possibly a relic of general configuration files being used to start).
tab_class.dat "Class" tab. The original comments say it is the "Abilities" tab, but that is a relic of the general starter files used to make this data set.
tab_epic.dat "Epic" tab.
tab_feats.dat "Feats" tab.
tab_gear.dat "Gear" tab.
tab_inplay.dat "In-Play tab.
tab_journal.dat "Journal" tab.
tab_magic.dat "Magic" tab for magic items.
tab_monster.dat "Monster" tab. Replaces "Class" when making an NPC.
tab_multiclass.dat "Multiclass" tab. Appears if you have a multiclass feat.
tab_npc.dat "NPC" tab. Appears when making an NPC.
tab_paragon.dat "Paragon" tab.
tab_personal.dat "Personal" tab.
tab_race.dat "Race" tab. Has the same comment at the top calling it the "Basics" tab, which argues strongly that basics file is not actually used.
tab_rituals.dat "Rituals" tab.
tab_rpga.dat "RPGA" tab. Only appears if you select "RPGA" in the hero configuration window.
tab_skills.dat "Skills" tab.
tab_special.dat "Special" tab.
tab_theme.dat "Background" tab.
thing_alignments.dat The list of the 5 alignments. Also the restriction on Evil in RPGA.
thing_armory.dat All of the weapon proficiencies, armor proficiencies, and weapon groups are in here. Additionally it has the unarmed strike power (wpUnarmed) and sample weapons.
thing_attributes.dat The attribute declarations. Not much in there. Just 6 things, with codes for if it's mental or physical, the name of it, the order to display them, and a code to set the value of Charisma lower than the default 10.
thing_benefits.dat A single extremely simple sample background. That's it.
thing_classes.dat The definition for class roles, power sources, and multiclass paragon path validation for power swapping. Then at the end a sample class that would have been useful to know it was there a couple years ago when I was still learning.
thing_defenses.dat Defense definitions. Fort, Ref, Will, and AC. AC additionally has evaluation code to give a bonus to AC if dual-wielding one or more proficient defensive weapons.
thing_feats.dat A sample feat and the section headers in the feat list (grey text that appears above each tier of feats). Has a tag (isshowonly="yes") that might work in other lists to make dividers that can't actually be added to a character.
thing_gear.dat The list of all implements (Orb, Rod, Wand, Pact Blade, Holy Symbol, etc) is specified in this list. Additionally it has the customizable gear, location, and container. A sample equipment item, and finally the "Dropped to Ground" location.
thingmagicitems.dat Magic item slots (not weapons though, doesn't need it). The custom magic melee weapon, ranged weapon, armor, and shield are started here. Finally a few sample items.
thing_miscellaneous.dat Misc game things. Things like applying damage, and images, power slots, languages, skills, healing surges, damage and cost indexes, damage types, etc. If there isn't a better .dat, it's probably in here.
thing_powers.dat Powers. Although in reality, it only has 3 of them. The Basic Melee attack, the Basic Ranged attack, and a sample power.
thing_races.dat Only has 3 things. A comment that describes how to make a race, a sample race, and the racial feature that grants a +2 bonus to an attribute of your choice (Human racial feature).
thing_skills.dat A comment about skills, and a sample skill. That's it.
thing_themes.dat This file has a sample theme, and the sample powers and sample features for that sample theme.
thing_traits.dat The math and work to generate the derived trait values. Also the list of resistances, senses, and various monster roles, types, modifiers, etc. This is where it calculates how many squares a character can move, for example. Also, it for some reason has the weapon proficiency helper for backgrounds.
thing_validate.dat This is entirely full of validation scripts. It doesn't have all of them, but if you have a strange validation issue, this is certainly one of the places to look for a hint where you are going wrong.
visual.dat A bunch of code to make a bunch of portals and menus. Unless you need to, I would steer clear of this file. It's about a thousand lines of code to make it so you can buy and sell items, and this isn't even where it does the math to see if you can pay. This file is the most tedious thing I've looked at and the though of having to write that code makes me want to cry and drink at the same time.

definition.def File

This file has the basic information for the game system, and the files. There are many places where the files have a release number, but I believe this is the one that it checks to compare with an update to see if you need to be updated. It does a bunch of math so you can just say "halflevel" rather than pulling the hero's level, dividing it in half, and rounding it off every time you need to use that number for something. This file also has the list of phases in the order they are run.

.str Files

These files have definitions and scripts to manage them.

.str Files Function
actor.str Components for dealing with the actor directly. Stuff like race, health, number of hands, level, money, powers, etc.
equipment.str Components for equipment of all kinds (weapons, armor, gear, etc). Buying, feat bonuses, validation for proficiency/type/number, etc. This is also where the components of a item "thing" is specified.
miscellaneous.str Things that don't fit in the other .str files. Like resource pools (HP, CP, etc), journal entries, damage dice progression, etc.
traits.str Components for Attributes, skills, special abilities, AC bonuses, etc.

.user Files

These are the only files most people will ever edit. This is where the actual meat of the game files live. You can create additional .user files that can augment already existing files, or supersede things in already existing files. This is primarily a relic of when the files where downloaded to get new updates (when there were still updates), as any changes made to the generated files would be overwritten when a new download happened. It's still useful for one-off fixes, but a faster release schedule of full updates would be better.
It may also be worthwhile breaking the files into smaller pieces to make it easier to do change merging and also to find the right portion of the file.
The best practices naming protocol for .user files is "Type.Description.user" - Type being the general kind of thing (Armor, Class, Power, Feat, etc), and Description being the denotation of what it actually is. For example, a new Fairy Princess race would go into a file "Race.FairyPrincess.user". Keep any user file as focused as possible - putting racial powers in a Race.XXX file would be fine, but putting the armor and the weapons that the race created into that same file would be borderline. Putting a fix to a feat that is completely unrelated into that Race.XXX file wouldn't be good. It will work fine, but you are better making a new Feat.NameOfTheFeatThatWasFixed.user would be better.
All user files prefaced by "ddi_" are the core data files.

.user Files Function
ddi_armor.user All of the types of armor.
ddi_backgrounds.user Backgrounds as far as the eye can see.
ddi_classes.user Classes and Class Features.
ddi_deities.user Here there be Gods.
ddi_destinies.user Epic Destinies and their features.
ddi_equipment.user Implements, booze, ammunition, wagons, shovels, rope, etc. If you expect to find it in an old timey general store, this is the file where it's listed. Implements that are also weapons (pact blades, I'm looking at you) are actually in the ddi_weapons.user file.
ddi_feats.user The feats.
ddi_items.user Wonderous items and other non-mundane items like magical implements and rings and enchanted bracers and flying boots and whatnot. The stuff you would buy in Diagon Alley.
ddi_languages.user If you decide that it's unbearable that Thieves' Cant was removed as a language, this is where you go to put it back.
ddi_magic_armor.user The many and varied armor enchantments go here.
ddi_magic_weapons.user Why just stab something when you can stab it with fire? This is where new ways of making your stabber be fire live.
ddi_mounts.user List of mounts. These are all done as blocks of fluffy text. Whenever someone gets around to making animal companions be a thing, they should set the system up so that mounts can join in the fun.
ddi_paths.user Paragon Paths and their paragony powers.
ddi_powers.user All the class powers (at-will, encounter, utility, daily). By far the largest single file.
ddi_races.user Races, and then way down after all the races are the racial features. Most of the features are fluffy, even when they do something - many of the features are built into the race and the feature is just there to add a line to the character sheet stating that they get a +1 to something or other.
ddi_rituals.user The rituals. Klaatu, verata.. necktie.
ddi_skills.user All of the skills.
ddi_themes.user Themes and theme powers and features.
ddi_weapons.user If you can use a thing on another and it doesn't cause improvised weapon damage, it's in this file.
rpga_items.user Has a handful of magic items and the powers of those magic items. I don't know why they are in this file rather than in ddi_items.user.
thing_adjustments.user This file is the keeper of the manual adjustments options to modify things like number of bonus feats, attributes, AC, bonus rituals, etc.


timing.xml, unused.xml, and faq.htm

These files are automatically created when the profile is first run by Hero Lab.
timing.xml is a troubleshooting file that lets you see in what order everything is compiled in.
unused.xml I assume shows any files that don't connect into the system. Every time I've looked at it it's been devoid of errors.
faq.htm is a user readable file generated from the data in faq.dat. This file opens when you select "4th Edition FAQ" in the Hero Lab help menu. This is incredibly out of date as of 2017/02/06.
These files shouldn't be included in any source code because they are exclusively end products of the Hero Lab compilation process, and can't be modified directly (as they will be overwritten whenever the program runs).

core.hlz, core2.hlz, data.hlz

These files are also automatically created whenever the profile is run. If these files don't exist when the files are loaded, Hero Lab also displays a "New Release" pop up before the data file detail window.
Both core.hlz and core2.hlz are completely impenetrable with a text editor. They are almost certainly some kind of database file, but without knowing what the protocol is they won't be readable; that said, they are just what all of the other files say anyway - this is just how the current version of Hero Lab keeps all of the little separate data file information organized.
data.hlz has user readable text (seems to be encoded in UTF-8), but is again, nothing usable by a human. Everything it has is just pulled from the XML data files, and if you could figure out what to change in the file, you wouldn't want to because it's regenerated when you load up the game profile. It may not do this every load (I haven't tested it), but if something needs to be fixed, it should be fixed at the source, not at the result anyway.
These files shouldn't be included in the source code because they are the compiled result of the data files.

Edited 2017/02/13 to fix formatting errors - two underscores in a "line" causes italics. If a file name has more than one underscore in the name, it italicizes the word in the middle. If it has one underscore in the name and the description on that same line has an underscore (like to refer to another file with a single underscore) it italicizes every word between them. Curly braces with straight quotes escapes formatting.

Last edited Feb 13 at 11:34 PM by DracusMage, version 12