How do wildcard patterns work?
Written By Philippe Chabot
Last updated About 1 month ago
Wildcards let a single requirement or modifier target a group of entities or paths instead of a specific one. Three patterns.
Feat family wildcards — feats.<family>.*.possessed
Used in requirements like any Weapon Focus or any metamagic feat. A feat is tagged with a FEAT_FAMILY property; the wildcard matches if the character possesses any feat in that family.
A prestige class needing any metamagic feat AND any item creation feat — two requirement rows:
feats.metamagic.*.possessed == truefeats.itemcreation.*.possessed == true
A feat needing any Weapon Focus — one row:
feats.weaponfocus.*.possessed == true
This matches Weapon Focus (Longsword), Weapon Focus (Greatsword), and any custom Weapon Focus variant carrying FEAT_FAMILY = weaponfocus.
Built-in families on the SRD ruleset:
Skill subtype wildcards — skills.<prefix>*.rank
For requirements like any Knowledge skill 5 ranks or any Craft 10 ranks. The * after a prefix matches any skill whose slug starts with that prefix.
A prestige class needing 5 ranks of any Knowledge skill:
skills.knowledge*.rank >= 5
Matches Knowledge (Arcana), Knowledge (Religion), Knowledge (Nature), and any custom Knowledge subtype.
Works the same way for Craft, Perform, and any skill with parenthetical subtypes.
Modifier wildcards — apply to all entries in a category
Used in modifiers, not requirements:
saves.*.misc— apply once, hit all three save categories (Fortitude, Reflex, Will).abilities.*.misc— every ability score's misc bonus.items.weapons.*.damage.misc— bonus to damage on every wielded weapon.
Divine Grace (add Cha modifier to all saves) is one row: target saves.*.misc, operator add, value {{ abilities.charisma.modifier }} — using a reference. At evaluation time the engine expands * to fortitude, reflex, will and applies the Cha modifier to each.