Files
Christopher Wiebe 97b49d4145 M6.18: Skill expansion to 5 per ability — 12 new Theriapolis-flavored skills
Skill list grows from 18 → 30 so every ability has 5 skills tied to it.
New skills appended at SkillId byte indices 18–29 to preserve
save-game compat with pre-M6.18 characters.

  STR (+4): Brawl, Build-Read, Force, Haulage
  DEX (+2): Driving, Marksmanship
  CON (+5): Endurance, Fortitude, Hardiness, Lung-Craft, Pain Tolerance
  CHA (+1): Scent-Speak

Endurance covers applied effort over time; Hardiness covers external
condition tolerance (temperature, smoke, altitude); Fortitude is
ingestion-only (poison, spoiled food, ritual draughts). Pain Tolerance
is function-while-wounded. Lung-Craft is breath/voice discipline.

Class skill_options updated across all 8 callings so every new skill
has 3+ class homes (Muzzle-Speaker remains the universal pick of
all 30). Backgrounds left untouched — their skill grants are
doc-canon and would benefit from a separate balancing pass.

CharacterBuilder.SkillToJsonName extended with explicit cases for the
new skills so compound enum names like BuildRead serialize as
"build_read" rather than the fallback "buildread" — caught by
CharacterBuilderTests.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 20:25:56 -07:00

495 lines
45 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[
{
"id": "fangsworn",
"name": "Fangsworn",
"description": "\"I swore my fangs to something bigger than myself. Whether that was smart is a separate question.\"\n\nThe professional warrior. Trained combatants — soldiers, mercenaries, duelists, bodyguards, career fighters who turned violence into discipline. Fangsworn don't rely on rage or instinct; they rely on repetition, conditioning, and the brutal arithmetic of who hits harder and more often. Every army needs a backbone, and it's always been teeth.",
"hit_die": 10,
"primary_ability": ["STR", "DEX"],
"saves": ["STR", "CON"],
"armor_proficiencies": ["light", "medium", "heavy", "shields"],
"weapon_proficiencies": ["simple", "martial", "natural"],
"tool_proficiencies": [],
"skills_choose": 2,
"skill_options": ["athletics", "animal_handling", "brawl", "force", "intimidation", "marksmanship", "pain_tolerance", "perception", "survival"],
"subclass_ids": ["pack_forged", "lone_fang"],
"starting_kit": [
{ "item_id": "rend_sword", "qty": 1, "auto_equip": true, "equip_slot": "main_hand" },
{ "item_id": "chain_shirt", "qty": 1, "auto_equip": true, "equip_slot": "body" },
{ "item_id": "buckler", "qty": 1, "auto_equip": true, "equip_slot": "off_hand" },
{ "item_id": "healers_kit", "qty": 1, "auto_equip": false },
{ "item_id": "rations_predator", "qty": 5, "auto_equip": false }
],
"level_table": [
{ "level": 1, "prof": 2, "features": ["fighting_style", "claw_and_steel"] },
{ "level": 2, "prof": 2, "features": ["action_surge_1"] },
{ "level": 3, "prof": 2, "features": ["subclass_select"] },
{ "level": 4, "prof": 2, "features": ["asi"] },
{ "level": 5, "prof": 3, "features": ["extra_attack_2"] },
{ "level": 6, "prof": 3, "features": ["asi"] },
{ "level": 7, "prof": 3, "features": ["subclass_feature"] },
{ "level": 8, "prof": 3, "features": ["asi"] },
{ "level": 9, "prof": 4, "features": ["indomitable_1"] },
{ "level": 10, "prof": 4, "features": ["subclass_feature"] },
{ "level": 11, "prof": 4, "features": ["extra_attack_3"] },
{ "level": 12, "prof": 4, "features": ["asi"] },
{ "level": 13, "prof": 5, "features": ["indomitable_2"] },
{ "level": 14, "prof": 5, "features": ["asi"] },
{ "level": 15, "prof": 5, "features": ["subclass_feature"] },
{ "level": 16, "prof": 5, "features": ["asi"] },
{ "level": 17, "prof": 6, "features": ["action_surge_2", "indomitable_3"] },
{ "level": 18, "prof": 6, "features": ["subclass_feature"] },
{ "level": 19, "prof": 6, "features": ["asi"] },
{ "level": 20, "prof": 6, "features": ["extra_attack_4"] }
],
"feature_definitions": {
"fighting_style": { "name": "Fighting Style", "kind": "choice", "description": "Pick one combat style. Each gives a passive combat bonus.", "options": ["fang_and_blade", "shieldwall", "duelist", "great_weapon", "natural_predator"] },
"claw_and_steel": { "name": "Claw & Steel", "kind": "passive", "description": "Combine natural-weapon and manufactured-weapon attacks freely within a single Attack action — no other class can do this without specific permission." },
"action_surge_1": { "name": "Action Surge", "kind": "active", "uses_per_short_rest": 1, "description": "Once per short rest, take one additional action on your turn." },
"action_surge_2": { "name": "Action Surge (2/rest)", "kind": "active", "uses_per_short_rest": 2, "description": "Use Action Surge twice per short rest." },
"subclass_select": { "name": "Subclass Selection", "kind": "stub", "description": "Choose a Fangsworn subclass: Pack-Forged or Lone Fang. (Phase 5: subclass mechanics deferred.)" },
"subclass_feature": { "name": "Subclass Feature", "kind": "stub", "description": "Subclass-specific feature granted at this level. (Phase 5: deferred.)" },
"asi": { "name": "Ability Score Improvement", "kind": "stub", "description": "Increase one ability score by 2, or two by 1 each. (Phase 5: deferred — character is locked at level 1.)" },
"extra_attack_2": { "name": "Extra Attack (2)", "kind": "passive", "description": "Two attacks per Attack action." },
"extra_attack_3": { "name": "Extra Attack (3)", "kind": "passive", "description": "Three attacks per Attack action." },
"extra_attack_4": { "name": "Extra Attack (4)", "kind": "passive", "description": "Four attacks per Attack action." },
"indomitable_1": { "name": "Indomitable", "kind": "active", "uses_per_long_rest": 1, "description": "Reroll a failed saving throw, once per long rest." },
"indomitable_2": { "name": "Indomitable (2/rest)", "kind": "active", "uses_per_long_rest": 2, "description": "Reroll a failed saving throw, twice per long rest." },
"indomitable_3": { "name": "Indomitable (3/rest)", "kind": "active", "uses_per_long_rest": 3, "description": "Reroll a failed saving throw, three times per long rest." }
}
},
{
"id": "bulwark",
"name": "Bulwark",
"description": "\"Running is smart. Standing is stupid. I do it anyway, because someone behind me can't run.\"\n\nThe wall. The shield. The one who stays when everyone else runs. Bulwarks are defenders first — born from the herd-fighting traditions of prey Clades, where bovid wall-tactics, cervid herd-coordination, and leporid community-shielding fused into a single protective doctrine. They hold the line, they take the hit, and they make sure the people behind them get to live.",
"hit_die": 12,
"primary_ability": ["CON"],
"saves": ["CON", "CHA"],
"armor_proficiencies": ["light", "medium", "heavy", "shields"],
"weapon_proficiencies": ["simple", "martial", "natural"],
"tool_proficiencies": [],
"skills_choose": 2,
"skill_options": ["athletics", "endurance", "fortitude", "hardiness", "insight", "intimidation", "medicine", "pain_tolerance", "perception"],
"subclass_ids": ["herd_wall", "antler_guard"],
"starting_kit": [
{ "item_id": "hoof_club", "qty": 1, "auto_equip": true, "equip_slot": "main_hand" },
{ "item_id": "chain_mail", "qty": 1, "auto_equip": true, "equip_slot": "body" },
{ "item_id": "standard_shield", "qty": 1, "auto_equip": true, "equip_slot": "off_hand" },
{ "item_id": "healers_kit", "qty": 1, "auto_equip": false },
{ "item_id": "rations_predator", "qty": 5, "auto_equip": false }
],
"level_table": [
{ "level": 1, "prof": 2, "features": ["sentinel_stance", "guardians_mark"] },
{ "level": 2, "prof": 2, "features": ["shield_of_the_herd"] },
{ "level": 3, "prof": 2, "features": ["subclass_select"] },
{ "level": 4, "prof": 2, "features": ["asi"] },
{ "level": 5, "prof": 3, "features": ["extra_attack", "immovable_1"] },
{ "level": 6, "prof": 3, "features": ["subclass_feature"] },
{ "level": 7, "prof": 3, "features": ["guardians_aura_10"] },
{ "level": 8, "prof": 3, "features": ["asi"] },
{ "level": 9, "prof": 4, "features": ["unbreakable_will"] },
{ "level": 10, "prof": 4, "features": ["subclass_feature"] },
{ "level": 11, "prof": 4, "features": ["improved_guardians_mark"] },
{ "level": 12, "prof": 4, "features": ["asi"] },
{ "level": 13, "prof": 5, "features": ["guardians_aura_15"] },
{ "level": 14, "prof": 5, "features": ["asi"] },
{ "level": 15, "prof": 5, "features": ["subclass_feature"] },
{ "level": 16, "prof": 5, "features": ["asi"] },
{ "level": 17, "prof": 6, "features": ["immovable_2"] },
{ "level": 18, "prof": 6, "features": ["guardians_aura_20"] },
{ "level": 19, "prof": 6, "features": ["asi"] },
{ "level": 20, "prof": 6, "features": ["subclass_feature", "last_one_standing"] }
],
"feature_definitions": {
"sentinel_stance": { "name": "Sentinel Stance", "kind": "bonus_action", "description": "Bonus action: enter defensive stance. Speed halved, +2 AC, opportunity attacks at advantage. Ends if you move more than half speed or as a free action." },
"guardians_mark": { "name": "Guardian's Mark", "kind": "bonus_action", "description": "Bonus action: mark a creature within 30 ft. While marked, if it attacks anyone other than you, you may make a melee attack against it as a reaction (if in range)." },
"shield_of_the_herd": { "name": "Shield of the Herd", "kind": "reaction", "description": "Reaction: when an adjacent ally is targeted by an attack, become the target instead." },
"extra_attack": { "name": "Extra Attack", "kind": "passive", "description": "Two attacks per Attack action." },
"immovable_1": { "name": "Immovable", "kind": "reaction", "uses_per_long_rest": 1, "description": "Reaction: reduce incoming damage by 1d12 + CON. Once per long rest." },
"immovable_2": { "name": "Immovable (2/rest)", "kind": "reaction", "uses_per_long_rest": 2, "description": "Reaction: reduce incoming damage by 2d12 + CON. Twice per long rest." },
"guardians_aura_10": { "name": "Guardian's Aura (10 ft.)", "kind": "passive", "description": "Allies within 10 ft. gain +1 to all saves while you are conscious." },
"guardians_aura_15": { "name": "Guardian's Aura (15 ft.)", "kind": "passive", "description": "Aura range increases to 15 ft." },
"guardians_aura_20": { "name": "Guardian's Aura (20 ft.)", "kind": "passive", "description": "Aura range increases to 20 ft." },
"unbreakable_will": { "name": "Unbreakable Will", "kind": "passive", "description": "Immune to the frightened condition." },
"improved_guardians_mark":{ "name": "Improved Guardian's Mark", "kind": "passive", "description": "Marked creatures also have disadvantage on attacks against creatures other than you." },
"last_one_standing": { "name": "Last One Standing", "kind": "active", "uses_per_long_rest": 1, "description": "When every other allied creature within 60 ft. is at 0 HP or has fled: resistance to all damage, advantage on all attacks and saves, Mark applies to all hostile creatures simultaneously. 1 minute." },
"subclass_select": { "name": "Subclass Selection", "kind": "stub", "description": "Choose a Bulwark subclass: Herd-Wall or Antler-Guard. (Phase 5: deferred.)" },
"subclass_feature": { "name": "Subclass Feature", "kind": "stub", "description": "Subclass-specific feature granted at this level. (Phase 5: deferred.)" },
"asi": { "name": "Ability Score Improvement", "kind": "stub", "description": "Increase ability scores. (Phase 5: deferred.)" }
}
},
{
"id": "feral",
"name": "Feral",
"description": "\"You think civilization fixed us? It just taught us to hold our breath.\"\n\nThe old brain. The one before words. Every sentient creature carries the Feral Age inside them — the pre-sapient animal, pure instinct. Most people keep that door locked. Ferals open it. The implications disturb everyone, especially prey-Clade Ferals whose ancestors survived by suppressing those exact urges; the rage of a hunted thing that has decided, today, to stop running is its own kind of terrible.",
"hit_die": 12,
"primary_ability": ["STR", "CON"],
"saves": ["STR", "CON"],
"armor_proficiencies": ["light", "medium"],
"weapon_proficiencies": ["simple", "natural"],
"tool_proficiencies": [],
"skills_choose": 2,
"skill_options": ["athletics", "brawl", "endurance", "fortitude", "hardiness", "haulage", "intimidation", "nature", "perception", "survival"],
"subclass_ids": ["blood_memory", "stampede_heart"],
"starting_kit": [
{ "item_id": "paw_axe", "qty": 1, "auto_equip": true, "equip_slot": "main_hand" },
{ "item_id": "hide_vest", "qty": 1, "auto_equip": true, "equip_slot": "body" },
{ "item_id": "healers_kit", "qty": 1, "auto_equip": false },
{ "item_id": "rations_predator", "qty": 5, "auto_equip": false }
],
"level_table": [
{ "level": 1, "prof": 2, "features": ["feral_rage_2", "unarmored_defense"] },
{ "level": 2, "prof": 2, "features": ["ancestral_sense", "reckless_attack"] },
{ "level": 3, "prof": 2, "features": ["subclass_select"] },
{ "level": 4, "prof": 2, "features": ["asi"] },
{ "level": 5, "prof": 3, "features": ["extra_attack", "fast_movement"] },
{ "level": 6, "prof": 3, "features": ["subclass_feature"] },
{ "level": 7, "prof": 3, "features": ["instinct_awareness"] },
{ "level": 8, "prof": 3, "features": ["asi"] },
{ "level": 9, "prof": 4, "features": ["feral_rage_3", "brutal_critical_1"] },
{ "level": 10, "prof": 4, "features": ["subclass_feature"] },
{ "level": 11, "prof": 4, "features": ["relentless_rage"] },
{ "level": 12, "prof": 4, "features": ["asi"] },
{ "level": 13, "prof": 5, "features": ["brutal_critical_2"] },
{ "level": 14, "prof": 5, "features": ["subclass_feature"] },
{ "level": 15, "prof": 5, "features": ["persistent_rage"] },
{ "level": 16, "prof": 5, "features": ["asi"] },
{ "level": 17, "prof": 6, "features": ["feral_rage_4", "brutal_critical_3"] },
{ "level": 18, "prof": 6, "features": ["indomitable_instinct"] },
{ "level": 19, "prof": 6, "features": ["asi"] },
{ "level": 20, "prof": 6, "features": ["apex"] }
],
"feature_definitions": {
"feral_rage_2": { "name": "Feral Rage", "kind": "bonus_action", "uses_per_long_rest": 2, "description": "Bonus action to enter rage. Advantage on STR checks/saves, +2 melee damage (scales), resistance to bludgeoning/piercing/slashing, no concentration. 1 minute or until you choose to end it." },
"feral_rage_3": { "name": "Feral Rage (3/rest)", "kind": "bonus_action", "uses_per_long_rest": 3, "description": "Same as Feral Rage; +3 damage. Three uses per long rest." },
"feral_rage_4": { "name": "Feral Rage (4/rest)", "kind": "bonus_action", "uses_per_long_rest": 4, "description": "Same as Feral Rage; +4 damage. Four uses per long rest." },
"unarmored_defense": { "name": "Unarmored Defense", "kind": "passive", "description": "When wearing no armor, AC = 10 + DEX + CON." },
"ancestral_sense": { "name": "Ancestral Sense", "kind": "passive", "description": "While raging: advantage on Perception, cannot be surprised, scent-blindsight 10 ft." },
"reckless_attack": { "name": "Reckless Attack", "kind": "active", "description": "On your turn: advantage on melee attacks, but all attacks against you have advantage until your next turn." },
"extra_attack": { "name": "Extra Attack", "kind": "passive", "description": "Two attacks per Attack action." },
"fast_movement": { "name": "Fast Movement", "kind": "passive", "description": "+10 ft. movement while not wearing heavy armor." },
"instinct_awareness": { "name": "Instinct Awareness", "kind": "passive", "description": "Add WIS modifier to initiative rolls." },
"brutal_critical_1": { "name": "Brutal Critical (1 die)", "kind": "passive", "description": "Roll one additional damage die on critical hits." },
"brutal_critical_2": { "name": "Brutal Critical (2 dice)", "kind": "passive", "description": "Roll two additional damage dice on critical hits." },
"brutal_critical_3": { "name": "Brutal Critical (3 dice)", "kind": "passive", "description": "Roll three additional damage dice on critical hits." },
"relentless_rage": { "name": "Relentless Rage", "kind": "active", "description": "If you drop to 0 HP while raging, CON save (DC 10, increasing by 5 each time per rage). On success, drop to 1 HP." },
"persistent_rage": { "name": "Persistent Rage", "kind": "passive", "description": "Rage only ends when you choose or are unconscious. Nothing else stops it." },
"indomitable_instinct":{ "name": "Indomitable Instinct", "kind": "passive", "description": "If your total for a STR or CON check is less than your ability score, use the ability score instead." },
"apex": { "name": "Apex Predator / Apex Prey", "kind": "passive", "description": "Capstone — variant by predator/prey clade." },
"subclass_select": { "name": "Subclass Selection", "kind": "stub", "description": "Choose Blood Memory or Stampede Heart. (Phase 5: deferred.)" },
"subclass_feature": { "name": "Subclass Feature", "kind": "stub", "description": "Subclass-specific feature. (Phase 5: deferred.)" },
"asi": { "name": "Ability Score Improvement", "kind": "stub", "description": "Increase ability scores. (Phase 5: deferred.)" }
}
},
{
"id": "shadow_pelt",
"name": "Shadow-Pelt",
"description": "\"Everyone watches the fangs. Nobody watches the shadow behind the fangs.\"\n\nThieves, assassins, spies, scouts. Shadow-Pelts specialize in precision over force, infiltration over confrontation. The calling is cross-Clade by design — felid stealth, mustelid sinuousness, the Leporid art of being small enough to overlook. Any species that can move quietly and think two steps ahead can take this path. Most cities pretend they don't exist. Most cities are wrong.",
"hit_die": 8,
"primary_ability": ["DEX"],
"saves": ["DEX", "INT"],
"armor_proficiencies": ["light"],
"weapon_proficiencies": ["simple", "hand_crossbow", "short_sword", "rapier", "natural"],
"tool_proficiencies": ["thieves_tools"],
"skills_choose": 4,
"skill_options": ["acrobatics", "athletics", "build_read", "deception", "driving", "insight", "intimidation", "investigation", "marksmanship", "perception", "persuasion", "sleight_of_hand", "stealth"],
"subclass_ids": ["noseblind", "ambush_artist"],
"starting_kit": [
{ "item_id": "thorn_blade", "qty": 1, "auto_equip": true, "equip_slot": "main_hand" },
{ "item_id": "studded_leather", "qty": 1, "auto_equip": true, "equip_slot": "body" },
{ "item_id": "claw_bow", "qty": 1, "auto_equip": false },
{ "item_id": "poultice_universal","qty": 2, "auto_equip": false },
{ "item_id": "scent_mask_basic", "qty": 1, "auto_equip": false },
{ "item_id": "rations_predator", "qty": 5, "auto_equip": false }
],
"level_table": [
{ "level": 1, "prof": 2, "features": ["expertise_2", "sneak_attack_1d6", "scent_discipline"] },
{ "level": 2, "prof": 2, "features": ["cunning_action"] },
{ "level": 3, "prof": 2, "features": ["subclass_select"] },
{ "level": 4, "prof": 2, "features": ["asi"] },
{ "level": 5, "prof": 3, "features": ["sneak_attack_3d6", "uncanny_dodge"] },
{ "level": 6, "prof": 3, "features": ["expertise_2_more"] },
{ "level": 7, "prof": 3, "features": ["evasion", "subclass_feature"] },
{ "level": 8, "prof": 3, "features": ["asi"] },
{ "level": 9, "prof": 4, "features": ["sneak_attack_5d6"] },
{ "level": 10, "prof": 4, "features": ["asi"] },
{ "level": 11, "prof": 4, "features": ["reliable_talent", "subclass_feature"] },
{ "level": 12, "prof": 4, "features": ["asi"] },
{ "level": 13, "prof": 5, "features": ["sneak_attack_7d6"] },
{ "level": 14, "prof": 5, "features": ["scent_ghost"] },
{ "level": 15, "prof": 5, "features": ["subclass_feature"] },
{ "level": 16, "prof": 5, "features": ["asi"] },
{ "level": 17, "prof": 6, "features": ["sneak_attack_9d6"] },
{ "level": 18, "prof": 6, "features": ["elusive"] },
{ "level": 19, "prof": 6, "features": ["asi"] },
{ "level": 20, "prof": 6, "features": ["kill_shot"] }
],
"feature_definitions": {
"expertise_2": { "name": "Expertise (2)", "kind": "passive", "description": "Double proficiency bonus for 2 proficient skills." },
"expertise_2_more": { "name": "Expertise (2 more)", "kind": "passive", "description": "Choose 2 more proficient skills to gain expertise." },
"sneak_attack_1d6": { "name": "Sneak Attack (1d6)", "kind": "passive", "description": "Once per turn, +1d6 damage on an attack with advantage or when an ally is within 5 ft. of the target." },
"sneak_attack_3d6": { "name": "Sneak Attack (3d6)", "kind": "passive", "description": "Sneak Attack damage scales to 3d6." },
"sneak_attack_5d6": { "name": "Sneak Attack (5d6)", "kind": "passive", "description": "Sneak Attack damage scales to 5d6." },
"sneak_attack_7d6": { "name": "Sneak Attack (7d6)", "kind": "passive", "description": "Sneak Attack damage scales to 7d6." },
"sneak_attack_9d6": { "name": "Sneak Attack (9d6)", "kind": "passive", "description": "Sneak Attack damage scales to 9d6." },
"scent_discipline": { "name": "Scent Discipline", "kind": "passive", "description": "Advantage on checks to suppress emotional scent leakage. Creatures with scent abilities must beat your DEX (Stealth) with their WIS (Perception) to read your emotional state." },
"cunning_action": { "name": "Cunning Action", "kind": "bonus_action", "description": "Bonus action: Dash, Disengage, or Hide." },
"uncanny_dodge": { "name": "Uncanny Dodge", "kind": "reaction", "description": "Reaction: halve damage from an attack you can see." },
"evasion": { "name": "Evasion", "kind": "passive", "description": "DEX saves for half damage become no damage on success, half on failure." },
"reliable_talent": { "name": "Reliable Talent", "kind": "passive", "description": "Skill rolls below 10 with proficiency are treated as 10." },
"scent_ghost": { "name": "Scent Ghost", "kind": "active", "uses_per_long_rest": 1, "description": "Suppress natural scent for 1 hour or project a false clade scent. Once per long rest." },
"elusive": { "name": "Elusive", "kind": "passive", "description": "No attack roll has advantage against you while you're conscious." },
"kill_shot": { "name": "Kill Shot", "kind": "active", "uses_per_short_rest": 1, "description": "When Sneak Attack hits, force CON save (DC = 8 + prof + DEX). On failure, double the damage." },
"subclass_select": { "name": "Subclass Selection", "kind": "stub", "description": "Choose Noseblind or Ambush Artist. (Phase 5: deferred.)" },
"subclass_feature": { "name": "Subclass Feature", "kind": "stub", "description": "Subclass-specific feature. (Phase 5: deferred.)" },
"asi": { "name": "Ability Score Improvement", "kind": "stub", "description": "Increase ability scores. (Phase 5: deferred.)" }
}
},
{
"id": "scent_broker",
"name": "Scent-Broker",
"description": "\"You think information is what you hear? What you read? Amateur. Information is what you smell when someone walks into the room. Fear. Lies. Lust. Disease. Lineage. Every creature broadcasts their secrets with every breath. I just learned to listen.\"\n\nA calling unique to Theriapolis. Scent-Brokers are intelligence operatives, diplomats, perfume-mages — readers of pheromones and emotional scent. They weaponize the gap between what people say and what their bodies tell on them. Half merchant, half spy, all nose.",
"hit_die": 8,
"primary_ability": ["WIS"],
"saves": ["WIS", "CHA"],
"armor_proficiencies": ["light"],
"weapon_proficiencies": ["simple", "natural"],
"tool_proficiencies": ["alchemists_supplies", "perfumers_kit"],
"skills_choose": 3,
"skill_options": ["build_read", "deception", "insight", "investigation", "lung_craft", "medicine", "perception", "persuasion", "scent_speak", "stealth"],
"subclass_ids": ["perfumer", "tracker"],
"starting_kit": [
{ "item_id": "fang_knife", "qty": 1, "auto_equip": true, "equip_slot": "main_hand" },
{ "item_id": "leather_harness", "qty": 1, "auto_equip": true, "equip_slot": "body" },
{ "item_id": "pheromone_vial_calm", "qty": 2, "auto_equip": false },
{ "item_id": "pheromone_vial_fear", "qty": 2, "auto_equip": false },
{ "item_id": "scent_mask_basic", "qty": 2, "auto_equip": false },
{ "item_id": "rations_prey", "qty": 5, "auto_equip": false }
],
"level_table": [
{ "level": 1, "prof": 2, "features": ["scent_literacy", "nose_for_lies"] },
{ "level": 2, "prof": 2, "features": ["pheromone_craft_2"] },
{ "level": 3, "prof": 2, "features": ["subclass_select"] },
{ "level": 4, "prof": 2, "features": ["asi"] },
{ "level": 5, "prof": 3, "features": ["deep_reading", "pheromone_craft_3"] },
{ "level": 6, "prof": 3, "features": ["subclass_feature"] },
{ "level": 7, "prof": 3, "features": ["scent_ward"] },
{ "level": 8, "prof": 3, "features": ["asi"] },
{ "level": 9, "prof": 4, "features": ["pheromone_craft_4"] },
{ "level": 10, "prof": 4, "features": ["subclass_feature"] },
{ "level": 11, "prof": 4, "features": ["master_nose"] },
{ "level": 12, "prof": 4, "features": ["asi"] },
{ "level": 13, "prof": 5, "features": ["pheromone_craft_5"] },
{ "level": 14, "prof": 5, "features": ["subclass_feature"] },
{ "level": 15, "prof": 5, "features": ["scent_immunity"] },
{ "level": 16, "prof": 5, "features": ["asi"] },
{ "level": 17, "prof": 6, "features": ["grand_synthesis"] },
{ "level": 18, "prof": 6, "features": ["subclass_feature"] },
{ "level": 19, "prof": 6, "features": ["asi"] },
{ "level": 20, "prof": 6, "features": ["olfactory_omniscience"] }
],
"feature_definitions": {
"scent_literacy": { "name": "Scent Literacy", "kind": "active", "description": "Action: read clade, emotional state, general health, and scent-mask presence on a creature within 30 ft. Detailed reads need a WIS check." },
"nose_for_lies": { "name": "Nose for Lies", "kind": "passive", "description": "When a creature within 15 ft. lies, you detect the scent shift automatically (no check). Doesn't work on creatures without mammalian scent biology." },
"pheromone_craft_2": { "name": "Pheromone Craft (2/rest)", "kind": "active", "uses_per_short_rest": 2, "description": "During a short rest, craft pheromone compounds (calm, fear, trust, mask, alert, desire). 2 uses per rest." },
"pheromone_craft_3": { "name": "Pheromone Craft (3/rest)", "kind": "active", "uses_per_short_rest": 3, "description": "3 compounds per rest." },
"pheromone_craft_4": { "name": "Pheromone Craft (4/rest)", "kind": "active", "uses_per_short_rest": 4, "description": "4 compounds per rest." },
"pheromone_craft_5": { "name": "Pheromone Craft (5/rest)", "kind": "active", "uses_per_short_rest": 5, "description": "5 compounds per rest." },
"deep_reading": { "name": "Deep Reading", "kind": "passive", "description": "Scent Literacy range extends to 60 ft. Detect recent locations, recent contacts, and substances consumed." },
"scent_ward": { "name": "Scent Ward", "kind": "active", "description": "Mask scent profiles of self + 5 allies for 8 hours (10 minutes prep)." },
"master_nose": { "name": "Master Nose", "kind": "passive", "description": "Scent range 120 ft. Track by scent (advantage on Survival). Detect invisible creatures within 30 ft. by scent." },
"scent_immunity": { "name": "Scent Immunity", "kind": "passive", "description": "Immune to scent-based effects (pheromone attacks, fear-scent, arousal-scent)." },
"grand_synthesis": { "name": "Grand Synthesis", "kind": "passive", "description": "Combine two Pheromone Craft effects into a single compound. Compound DCs +2." },
"olfactory_omniscience":{ "name": "Olfactory Omniscience", "kind": "passive", "description": "Cannot be surprised. Know exact location, clade, emotion, and health of every creature within 120 ft. Permanent ID after one encounter." },
"subclass_select": { "name": "Subclass Selection", "kind": "stub", "description": "Choose Perfumer or Tracker. (Phase 5: deferred.)" },
"subclass_feature": { "name": "Subclass Feature", "kind": "stub", "description": "Subclass-specific feature. (Phase 5: deferred.)" },
"asi": { "name": "Ability Score Improvement", "kind": "stub", "description": "Increase ability scores. (Phase 5: deferred.)" }
}
},
{
"id": "covenant_keeper",
"description": "\"The Covenant says we don't eat the speaking ones. I'm here to make sure everyone remembers.\"\n\nThe oath made flesh. The law with teeth. Covenant-Keepers are part judge, part priest, part enforcer — their authority comes from the Covenant of Claws, the sacred-legal compact that defines sentience, prohibits cannibalism between Clades, and binds civilization together. Where the Covenant is honored, they are diplomats and arbiters. Where it is broken, they are the answer.",
"name": "Covenant-Keeper",
"hit_die": 10,
"primary_ability": ["CHA"],
"saves": ["WIS", "CHA"],
"armor_proficiencies": ["light", "medium", "heavy", "shields"],
"weapon_proficiencies": ["simple", "martial", "natural"],
"tool_proficiencies": [],
"skills_choose": 2,
"skill_options": ["athletics", "brawl", "force", "insight", "intimidation", "lung_craft", "medicine", "persuasion", "religion", "scent_speak"],
"subclass_ids": ["the_warden", "the_bridge"],
"starting_kit": [
{ "item_id": "rend_sword", "qty": 1, "auto_equip": true, "equip_slot": "main_hand" },
{ "item_id": "chain_shirt", "qty": 1, "auto_equip": true, "equip_slot": "body" },
{ "item_id": "standard_shield", "qty": 1, "auto_equip": true, "equip_slot": "off_hand" },
{ "item_id": "healers_kit", "qty": 1, "auto_equip": false },
{ "item_id": "rations_predator", "qty": 5, "auto_equip": false }
],
"level_table": [
{ "level": 1, "prof": 2, "features": ["covenant_sense", "lay_on_paws"] },
{ "level": 2, "prof": 2, "features": ["fighting_style", "covenants_authority_2"] },
{ "level": 3, "prof": 2, "features": ["subclass_select"] },
{ "level": 4, "prof": 2, "features": ["asi"] },
{ "level": 5, "prof": 3, "features": ["extra_attack"] },
{ "level": 6, "prof": 3, "features": ["aura_of_the_covenant_10"] },
{ "level": 7, "prof": 3, "features": ["subclass_feature"] },
{ "level": 8, "prof": 3, "features": ["asi"] },
{ "level": 9, "prof": 4, "features": ["covenants_authority_3"] },
{ "level": 10, "prof": 4, "features": ["aura_of_courage_10"] },
{ "level": 11, "prof": 4, "features": ["improved_covenant_strike"] },
{ "level": 12, "prof": 4, "features": ["asi"] },
{ "level": 13, "prof": 5, "features": ["covenants_authority_4"] },
{ "level": 14, "prof": 5, "features": ["cleansing_touch"] },
{ "level": 15, "prof": 5, "features": ["subclass_feature"] },
{ "level": 16, "prof": 5, "features": ["asi"] },
{ "level": 17, "prof": 6, "features": ["covenants_authority_5"] },
{ "level": 18, "prof": 6, "features": ["aura_30"] },
{ "level": 19, "prof": 6, "features": ["asi"] },
{ "level": 20, "prof": 6, "features": ["subclass_feature"] }
],
"feature_definitions": {
"covenant_sense": { "name": "Covenant Sense", "kind": "passive", "description": "Detect Covenant violations within 60 ft. — active predation, consumption of sentient flesh, rawfang activity." },
"lay_on_paws": { "name": "Lay on Paws", "kind": "active", "description": "Pool of healing equal to CHA × 5. Action: touch a creature and restore HP from the pool. 5 points cures one disease or neutralizes one poison. Replenishes on long rest." },
"fighting_style": { "name": "Fighting Style", "kind": "choice", "description": "Pick a combat style.", "options": ["defense", "protection", "great_weapon"] },
"covenants_authority_2":{ "name": "Covenant's Authority (2/rest)", "kind": "active", "uses_per_long_rest": 2, "description": "Action: present authority. Compel Truth, Rebuke Predation, or Shield the Innocent. 2 uses per long rest." },
"covenants_authority_3":{ "name": "Covenant's Authority (3/rest)", "kind": "active", "uses_per_long_rest": 3, "description": "3 uses per long rest." },
"covenants_authority_4":{ "name": "Covenant's Authority (4/rest)", "kind": "active", "uses_per_long_rest": 4, "description": "4 uses per long rest." },
"covenants_authority_5":{ "name": "Covenant's Authority (5/rest)", "kind": "active", "uses_per_long_rest": 5, "description": "5 uses per long rest." },
"extra_attack": { "name": "Extra Attack", "kind": "passive", "description": "Two attacks per Attack action." },
"aura_of_the_covenant_10":{ "name": "Aura of the Covenant (10 ft.)", "kind": "passive", "description": "You and friendly creatures within 10 ft. add CHA mod to saving throws." },
"aura_of_courage_10": { "name": "Aura of Courage (10 ft.)", "kind": "passive", "description": "You and friendly creatures within 10 ft. are immune to frightened." },
"aura_30": { "name": "Aura Improvements (30 ft.)", "kind": "passive", "description": "All auras extend to 30 ft." },
"improved_covenant_strike":{ "name": "Improved Covenant Strike", "kind": "passive", "description": "Melee attacks deal +1d8 damage against creatures actively violating the Covenant." },
"cleansing_touch": { "name": "Cleansing Touch", "kind": "active", "description": "Action: end one negative condition or effect on a creature you touch. Uses equal to CHA mod per long rest." },
"subclass_select": { "name": "Oath Selection", "kind": "stub", "description": "Choose The Warden or The Bridge. (Phase 5: deferred.)" },
"subclass_feature": { "name": "Oath Feature", "kind": "stub", "description": "Oath-specific feature. (Phase 5: deferred.)" },
"asi": { "name": "Ability Score Improvement", "kind": "stub", "description": "Increase ability scores. (Phase 5: deferred.)" }
}
},
{
"id": "muzzle_speaker",
"description": "\"The first howl that meant something other than hunger — that was the beginning of everything. I'm what happens when you take that gift seriously.\"\n\nVoice is power, always has been. Muzzle-Speakers are bards evolved for a world where vocalization varies wildly by Clade and subsonic communication is ancestral. They use voice, cadence, rhythm, and inter-species emotive frequencies to inspire, manipulate, heal, and harm. Songs that calm a stampeding herd, war-howls that rally a fractured pack, lullabies sung in registers older than language.",
"name": "Muzzle-Speaker",
"hit_die": 8,
"primary_ability": ["CHA"],
"saves": ["DEX", "CHA"],
"armor_proficiencies": ["light"],
"weapon_proficiencies": ["simple", "natural"],
"tool_proficiencies": ["musical_instrument", "musical_instrument_2", "musical_instrument_3"],
"skills_choose": 3,
"skill_options": ["acrobatics", "animal_handling", "arcana", "athletics", "brawl", "build_read", "deception", "driving", "endurance", "force", "fortitude", "hardiness", "haulage", "history", "insight", "intimidation", "investigation", "lung_craft", "marksmanship", "medicine", "nature", "pain_tolerance", "perception", "performance", "persuasion", "religion", "scent_speak", "sleight_of_hand", "stealth", "survival"],
"subclass_ids": ["warhorn", "whisperfur"],
"starting_kit": [
{ "item_id": "fang_knife", "qty": 1, "auto_equip": true, "equip_slot": "main_hand" },
{ "item_id": "studded_leather", "qty": 1, "auto_equip": true, "equip_slot": "body" },
{ "item_id": "poultice_universal","qty": 2, "auto_equip": false },
{ "item_id": "rations_predator", "qty": 5, "auto_equip": false }
],
"level_table": [
{ "level": 1, "prof": 2, "features": ["vocalization_dice_d6", "polyglot"] },
{ "level": 2, "prof": 2, "features": ["jack_of_all_trades", "song_of_rest_d6"] },
{ "level": 3, "prof": 2, "features": ["subclass_select", "expertise_2"] },
{ "level": 4, "prof": 2, "features": ["asi"] },
{ "level": 5, "prof": 3, "features": ["vocalization_dice_d8", "font_of_inspiration"] },
{ "level": 6, "prof": 3, "features": ["subclass_feature", "counter_vocalization"] },
{ "level": 7, "prof": 3, "features": ["song_of_rest_d8"] },
{ "level": 8, "prof": 3, "features": ["asi"] },
{ "level": 9, "prof": 4, "features": ["vocalization_dice_d10"] },
{ "level": 10, "prof": 4, "features": ["expertise_2_more"] },
{ "level": 11, "prof": 4, "features": ["subclass_feature"] },
{ "level": 12, "prof": 4, "features": ["asi"] },
{ "level": 13, "prof": 5, "features": ["song_of_rest_d10"] },
{ "level": 14, "prof": 5, "features": ["subclass_feature"] },
{ "level": 15, "prof": 5, "features": ["vocalization_dice_d12"] },
{ "level": 16, "prof": 5, "features": ["asi"] },
{ "level": 17, "prof": 6, "features": ["song_of_rest_d12"] },
{ "level": 18, "prof": 6, "features": ["superior_inspiration"] },
{ "level": 19, "prof": 6, "features": ["asi"] },
{ "level": 20, "prof": 6, "features": ["voice_of_the_world"] }
],
"feature_definitions": {
"vocalization_dice_d6": { "name": "Vocalization Dice (d6, 4/rest)", "kind": "bonus_action", "uses_per_long_rest": 4, "description": "Bonus action: expend a die to aid an ally within 60 ft.; they add the result to one attack/check/save within 10 minutes. d6 at level 1." },
"vocalization_dice_d8": { "name": "Vocalization Dice (d8)", "kind": "bonus_action", "description": "Vocalization Dice scale to d8." },
"vocalization_dice_d10": { "name": "Vocalization Dice (d10)", "kind": "bonus_action", "description": "Vocalization Dice scale to d10." },
"vocalization_dice_d12": { "name": "Vocalization Dice (d12)", "kind": "bonus_action", "description": "Vocalization Dice scale to d12." },
"polyglot": { "name": "Polyglot", "kind": "passive", "description": "Speak, read, write Common plus all Clade languages. Approximate subsonic and ultrasonic components imperfectly." },
"jack_of_all_trades": { "name": "Jack of All Trades", "kind": "passive", "description": "Add half proficiency to checks you're not proficient in." },
"song_of_rest_d6": { "name": "Song of Rest (d6)", "kind": "passive", "description": "During short rest, allies who hear you regain additional HP (d6 at level 2)." },
"song_of_rest_d8": { "name": "Song of Rest (d8)", "kind": "passive", "description": "Song of Rest scales to d8." },
"song_of_rest_d10": { "name": "Song of Rest (d10)", "kind": "passive", "description": "Song of Rest scales to d10." },
"song_of_rest_d12": { "name": "Song of Rest (d12)", "kind": "passive", "description": "Song of Rest scales to d12." },
"expertise_2": { "name": "Expertise (2)", "kind": "passive", "description": "Double proficiency bonus for 2 chosen proficient skills." },
"expertise_2_more": { "name": "Expertise (2 more)", "kind": "passive", "description": "Choose 2 more proficient skills for expertise." },
"font_of_inspiration": { "name": "Font of Inspiration", "kind": "passive", "description": "Vocalization Dice recharge on short rest." },
"counter_vocalization": { "name": "Counter-Vocalization", "kind": "reaction", "description": "Reaction: when a creature within 60 ft. uses a vocalization-based ability, expend a die to attempt to counter (CHA check vs. theirs)." },
"superior_inspiration": { "name": "Superior Inspiration", "kind": "passive", "description": "When you roll initiative with no dice remaining, regain one." },
"voice_of_the_world": { "name": "Voice of the World", "kind": "active", "uses_per_long_rest": 1, "description": "Speak one sentence understood perfectly by every sentient creature within 300 ft., regardless of language or deafness. Once per long rest." },
"subclass_select": { "name": "Subclass Selection", "kind": "stub", "description": "Choose Warhorn or Whisperfur. (Phase 5: deferred.)" },
"subclass_feature": { "name": "Subclass Feature", "kind": "stub", "description": "Subclass-specific feature. (Phase 5: deferred.)" },
"asi": { "name": "Ability Score Improvement", "kind": "stub", "description": "Increase ability scores. (Phase 5: deferred.)" }
}
},
{
"id": "claw_wright",
"description": "\"Your body doesn't fit the chair? I'll build you a better chair. Your paws can't hold the scalpel? I'll build you a better scalpel. The world wasn't designed for you? I'll redesign the world.\"\n\nThe paw that builds. Engineers, inventors, adaptive-technology specialists. In a world of body diversity — paws, hooves, talons, beaks, dewclaws, prehensile tails — generalist designers are invaluable. Half mechanical, half medical, all problem-solver. They work in armories, workshops, prosthetics labs, and the back rooms of underground hybrid clinics.",
"name": "Claw-Wright",
"hit_die": 8,
"primary_ability": ["INT"],
"saves": ["INT", "CON"],
"armor_proficiencies": ["light", "medium", "shields"],
"weapon_proficiencies": ["simple", "natural", "firearms"],
"tool_proficiencies": ["tinkers_tools", "artisans_tools", "artisans_tools_2"],
"skills_choose": 3,
"skill_options": ["arcana", "build_read", "driving", "force", "haulage", "investigation", "medicine", "nature", "perception", "sleight_of_hand"],
"subclass_ids": ["combat_engineer", "body_wright"],
"starting_kit": [
{ "item_id": "hoof_club", "qty": 1, "auto_equip": true, "equip_slot": "main_hand" },
{ "item_id": "studded_leather", "qty": 1, "auto_equip": true, "equip_slot": "body" },
{ "item_id": "buckler", "qty": 1, "auto_equip": true, "equip_slot": "off_hand" },
{ "item_id": "healers_kit", "qty": 1, "auto_equip": false },
{ "item_id": "rope_claw_braid", "qty": 1, "auto_equip": false },
{ "item_id": "rations_prey", "qty": 5, "auto_equip": false }
],
"level_table": [
{ "level": 1, "prof": 2, "features": ["adaptive_crafting", "field_repair"] },
{ "level": 2, "prof": 2, "features": ["gadget_pool_2"] },
{ "level": 3, "prof": 2, "features": ["subclass_select"] },
{ "level": 4, "prof": 2, "features": ["asi"] },
{ "level": 5, "prof": 3, "features": ["extra_attack", "gadget_pool_3"] },
{ "level": 6, "prof": 3, "features": ["subclass_feature", "tool_expertise"] },
{ "level": 7, "prof": 3, "features": ["flash_of_genius"] },
{ "level": 8, "prof": 3, "features": ["asi"] },
{ "level": 9, "prof": 4, "features": ["gadget_pool_4"] },
{ "level": 10, "prof": 4, "features": ["subclass_feature"] },
{ "level": 11, "prof": 4, "features": ["reliable_engineering"] },
{ "level": 12, "prof": 4, "features": ["asi"] },
{ "level": 13, "prof": 5, "features": ["gadget_pool_5"] },
{ "level": 14, "prof": 5, "features": ["subclass_feature"] },
{ "level": 15, "prof": 5, "features": ["superior_gadgets"] },
{ "level": 16, "prof": 5, "features": ["asi"] },
{ "level": 17, "prof": 6, "features": ["gadget_pool_6"] },
{ "level": 18, "prof": 6, "features": ["subclass_feature"] },
{ "level": 19, "prof": 6, "features": ["asi"] },
{ "level": 20, "prof": 6, "features": ["master_wright"] }
],
"feature_definitions": {
"adaptive_crafting": { "name": "Adaptive Crafting", "kind": "passive", "description": "Modify any tool, weapon, or equipment to function for a different Clade's body type during a short rest. Modified items grant +1 to relevant checks for the intended species." },
"field_repair": { "name": "Field Repair", "kind": "active", "description": "Action: restore 1d8 + INT HP to a construct or repair a broken object/mechanism. On creatures: emergency medical treatment — stabilize, splint, suture." },
"gadget_pool_2": { "name": "Gadget Pool (2)", "kind": "passive", "description": "Long rest: create gadgets. 2 active at a time at level 2." },
"gadget_pool_3": { "name": "Gadget Pool (3)", "kind": "passive", "description": "3 active gadgets." },
"gadget_pool_4": { "name": "Gadget Pool (4)", "kind": "passive", "description": "4 active gadgets." },
"gadget_pool_5": { "name": "Gadget Pool (5)", "kind": "passive", "description": "5 active gadgets." },
"gadget_pool_6": { "name": "Gadget Pool (6)", "kind": "passive", "description": "6 active gadgets." },
"extra_attack": { "name": "Extra Attack", "kind": "passive", "description": "Two attacks per Attack action." },
"tool_expertise": { "name": "Tool Expertise", "kind": "passive", "description": "Double proficiency with all tools you're proficient in." },
"flash_of_genius": { "name": "Flash of Genius", "kind": "reaction", "description": "Reaction: when you or a creature within 30 ft. makes a check or save, add INT mod to the roll. Uses equal to INT mod per long rest." },
"reliable_engineering":{ "name": "Reliable Engineering", "kind": "passive", "description": "Gadget save DCs +2. Damaging gadgets add INT mod." },
"superior_gadgets": { "name": "Superior Gadgets", "kind": "passive", "description": "Unlock advanced gadget tier; existing gadgets gain enhanced effects." },
"master_wright": { "name": "Master Wright", "kind": "active", "description": "Long rest: create one Masterwork item. Permanent, fits any Clade, +3 to relevant checks. Maintain up to 3." },
"subclass_select": { "name": "Subclass Selection", "kind": "stub", "description": "Choose Combat Engineer or Body-Wright. (Phase 5: deferred.)" },
"subclass_feature": { "name": "Subclass Feature", "kind": "stub", "description": "Subclass-specific feature. (Phase 5: deferred.)" },
"asi": { "name": "Ability Score Improvement", "kind": "stub", "description": "Increase ability scores. (Phase 5: deferred.)" }
}
}
]