Writing Classes & Tables
These two types carry the most design weight, and both have conventions worth following.
Classes
A class is abilityModifiers, a hitPointDie, a devilsLuckDie, and two feature arrays.
The feature/advancement split is not the same for every class, and the schema supports that
through featureLabel, featureRule, advancementLabel, and advancementRule rather than
hard-coding a structure:
- The Brute and Swashbuckler have a distinct starting table and a separate advancement table. Both arrays are populated.
- The Rapscallion and Buccaneer roll on the same table at creation and on
advancement. Their
featuresarray is populated,advancementFeaturesis empty, andadvancementRuleexplains the reroll. - The Zealot and Sorcerer draw from separate
prayerandspellfile types entirely, so both arrays are near-empty and the rules text points at the compendium.
When you add a class, pick whichever of those three shapes fits and say so in
advancementRule. Do not invent a fourth structure.
Ability modifiers should total roughly zero. Every class in the book trades: +2 in one thing costs two -1s, and +1/+1 costs two -1s.
The improved field on a feature is for "if taken again" text. Use it rather than writing two
near-identical features.
Tables
The table type is the workhorse — sixty-one files and counting — and it is intentionally
dumb: a die string, an entries array of {roll, result}, and a usage field.
Conventions that keep them usable:
rollis a string, so ranges work:"1-2","4-5","11-12".usageis the instruction, not flavor. "Roll in each new port, or each day" belongs inusage; "the market swings hard and fast" belongs indescription.- A table with no die uses
"-". Several reference tables — Crew Actions, Rest & Recovery, Crew Skill Modifiers — are lookups, not rolls, and that is fine. - Multi-column generators become one table per column, cross-referenced in
usage. The ship generator is five separate tables rather than one wide one, because each column gets rolled independently.
entryCount and rows are computed. Never write them.
The tables are the system's voice as much as the rules are. When you add one, make the entries specific and consequential — "a coffin, nailed shut" is a table entry; "some flotsam" is not.