How do these three work together?
Written By Philippe Chabot
Last updated About 1 month ago
Three things plug into every entity in a ruleset:
Properties describe what the entity is — the data tags. A spell carries
SPELL_SCHOOL = Evocation, a longsword carriesWEAPON_PROFICIENCY = Martial.Requirements decide when the entity is available to a character. Power Attack requires
abilities.strength.total >= 13; Cleave requires having Power Attack already.Modifiers describe what the entity does once it applies. Toughness adds
+3tocombat.hp.misc. A+1longsword adds+1toitems.weapons.longsword.tohit.magicand+1toitems.weapons.longsword.damage.magic.
An entity uses any combination of the three — all three, just one, or none. The system models what fits.
Building Greater Weapon Focus: Longsword from scratch
Greater Weapon Focus uses all three.
Property — FEAT_FAMILY = Greater Weapon Focus. This tag lets a downstream prestige class that wants "any Greater Weapon Focus" reference feats.greaterweaponfocus.*.possessed in a single requirement, and that wildcard expands to every Greater Weapon Focus variant — Longsword, Greatsword, or homebrew.
Requirements — two leaves AND'd:
feats.weaponfocuslongsword.possessed == trueclasses.fighter.level >= 8
The level-up wizard reads these and greys the feat out for any character that doesn't qualify.
Modifier — one row: target items.weapons.longsword.tohit.misc, operator add, value 1.
A Fighter 8 with Weapon Focus: Longsword qualifies. Once picked, the +1 attack bonus appears on the longsword line of the character sheet automatically.
Building Improved Initiative from scratch
Improved Initiative is a modifier-only feat. No property tag, no prerequisite — just one effect.
Modifier — one row: target combat.initiative.misc, operator add, value 4.
Any character with Improved Initiative gets +4 to initiative on their sheet automatically.
Where the feat shows up in the level-up wizard — the General feat pool, the Fighter Bonus Feat pool — is set by the feat's aptitude link when you create it, not by a property. Properties tag the entity with engine-readable data; the aptitude link decides which pool the engine offers it from.