Adding Spells, Monsters, and the Rest
Every content type has conventions the 2,776 existing records follow. Match them and new content is indistinguishable from the rest; break them and the sheet's math — or its pickers — quietly go wrong.
Spells
A spell carries its rank, traditions, actions to cast, range, area, duration, traits, effect text, and heightened entries. The traditions list is load-bearing: the sheet's spell pickers filter on it, so a spell missing its tradition is invisible to every caster in the project. Cantrips set isCantrip, focus spells set isFocus, and both heighten automatically to half the caster's level — never write per-rank tables for them. @Missing file and @Missing file are the worked examples for "(+1)" and "(Xth)" heightening.
Creatures
Stat blocks are built on creature level, not challenge rating. Fill AC, the three saves, HP, Speed, senses, weaknesses and resistances, Strikes with their exact bonuses and damage, and abilities with their action costs and traits — then put the behavior in the tactics notes, because that is what the GM plays from. @Missing file is the model. Two numbers matter more than the rest: a creature's Strike bonus against party AC, and its save DCs against party saves.
Equipment
- Weapons: damage die and type, weapon group, hands, traits, and the flags the formulas read —
isFinesse,isAgile,rangeIncrement,category. Category picks which proficiency applies; get it wrong and the attack bonus is silently off by the whole proficiency spread. - Armor:
acBonus,dexCap,strengthReq,checkPenalty,speedPenalty,category. An armor file never states a wearer's final AC. - Runes: fundamental runes live as fields on the item (
potencyRune,strikingRune,resilientRune) and are read automatically. Property runes are Item records; list their names inpropertyRunes. - Items: rules text for the reader,
bonusesrows for the sheet. If the text promises a bonus the rows don't carry, the sheet cannot keep the promise.
Ancestries, heritages, backgrounds, classes, feats
An ancestry carries HP, size, Speed, senses, languages, and its boosts and flaw; heritages hang off it. A background carries two boosts, a trained skill, a Lore, and a skill feat. A class is the engine block: key attribute, HP per level, initialProficiencies, trainedSkills, spellcastingType and tradition, advancement, and the features rows that appear on the sheet by level. Subclasses mirror the class and carry the focus spell.
Feats are the biggest folder and the strictest: featType (ancestry / class / skill / general), level, prerequisites, and the association fields — associatedClass, associatedAncestry, associatedSkill — that the pickers filter on. A class feat with no associatedClass will offer itself to every class in the project. @Missing file is a clean skill-feat example.
Rarity and traits
Every record carries rarity and a traits array, and both do work: rarity adjusts DCs by +2 / +5 / +10, and traits are how the rules find each other. Keep them honest against @Missing file.