Initial commit: Theriapolis baseline at port/godot branch point

Captures the pre-Godot-port state of the codebase. This is the rollback
anchor for the Godot port (M0 of theriapolis-rpg-implementation-plan-godot-port.md).
All Phase 0 through Phase 6.5 work is included; Phase 7 is in flight.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Christopher Wiebe
2026-04-30 20:40:51 -07:00
commit b451f83174
525 changed files with 75786 additions and 0 deletions
@@ -0,0 +1,122 @@
[
{
"id": "coliseum_survivor",
"name": "Coliseum Survivor",
"flavor": "You fought in the arena — voluntary or otherwise. Your body is a map of old wounds and your instincts are sharpened by crowds that wanted your blood.",
"skill_proficiencies": ["athletics", "performance"],
"tool_proficiencies": ["gaming_set", "herbalism_kit"],
"feature_name": "Crowd Reader",
"feature_description": "Gauge the mood of any group instantly. Identify the leader, sense incoming violence, and find the quickest exit. Advantage on Insight checks in group settings.",
"suggested_personality": "Hypervigilant in open spaces. Flashbacks triggered by cheering. Distrust of spectators. Comfort only in controlled violence."
},
{
"id": "passer",
"name": "Passer",
"flavor": "You are a hybrid who presents as purebred. You've built a life on a lie, and every day is performance.",
"skill_proficiencies": ["deception", "stealth"],
"tool_proficiencies": ["perfumers_kit", "disguise_kit"],
"feature_name": "The Mask",
"feature_description": "Maintain a scent-mask and behavioral profile of your presenting clade. Casual scent checks don't detect your hybrid status. Under stress, CHA (Deception) check or the mask slips. Access to the underground passer network.",
"suggested_personality": "Constantly calculating. Genuine only with other passers. Terror of discovery beneath every interaction. Relief and grief in equal measure when the mask drops."
},
{
"id": "covenant_enforcer",
"name": "Covenant Enforcer",
"flavor": "You served the legal system that upholds the Covenant of Claws. As investigator, bailiff, or executioner, you've seen what happens when the agreement breaks.",
"skill_proficiencies": ["investigation", "intimidation"],
"tool_proficiencies": ["manacles", "vehicles_land"],
"feature_name": "Badge Authority",
"feature_description": "In regions that honor the Covenant, carry legal authority. Compel cooperation from civilians, access restricted areas, demand answers. Vanishes in lawless zones; carries enemies.",
"suggested_personality": "Haunted by cases. Black-and-white morality softened (or hardened) by experience. Instinctive distrust of charm."
},
{
"id": "herd_city_born",
"name": "Herd-City Born",
"flavor": "You grew up in one of the great prey-clade cities — massive, communal, fortified, paranoid in the bones of its architecture.",
"skill_proficiencies": ["perception", "history"],
"tool_proficiencies": ["artisans_tools", "herbalism_kit"],
"feature_name": "Safety in Numbers",
"feature_description": "Always know the nearest exit, defensible position, and rally point in any urban environment. Find safe lodging in any prey-clade community within 1 hour.",
"suggested_personality": "Agoraphobic tendencies. Deep communal loyalty. Suspicion of solitary behavior. Comfort in crowds, anxiety in open spaces."
},
{
"id": "pack_raised",
"name": "Pack-Raised",
"flavor": "You come from a traditional Canid pack structure — hierarchical, loyal, suffocating. The pack is family, employer, and identity.",
"skill_proficiencies": ["athletics", "insight"],
"tool_proficiencies": ["vehicles_land", "artisans_tools"],
"feature_name": "Pack Network",
"feature_description": "Find Canid pack-affiliated contacts in any settlement. Contacts offer basic hospitality, information, and short-term shelter. Obligations flow both ways.",
"suggested_personality": "Instinctive deference to authority or instinctive rebellion against it. Loneliness hits harder than it should. Comfort in hierarchy."
},
{
"id": "borderland_stray",
"name": "Borderland Stray",
"flavor": "You grew up in the spaces between — border towns, disputed territories, places where clade identity is fluid and survival is daily.",
"skill_proficiencies": ["survival", "deception"],
"tool_proficiencies": ["thieves_tools", "gaming_set"],
"feature_name": "No One's Territory",
"feature_description": "Navigate lawless zones. Find black-market contacts, under-the-table work, and discreet passage in any border settlement. Read danger before it arrives.",
"suggested_personality": "Pragmatic to the point of amorality. Loyalty earned, never assumed. Distrusts idealists. Sleeps light."
},
{
"id": "hybrid_underground",
"name": "Hybrid Underground",
"flavor": "You're openly hybrid, or you were raised in hybrid community spaces — the informal networks, art collectives, and mutual aid groups that exist because no one else would have you.",
"skill_proficiencies": ["performance", "persuasion"],
"tool_proficiencies": ["musical_instrument", "perfumers_kit"],
"feature_name": "Blend Network",
"feature_description": "Access to the hybrid underground: safe houses, scent-masking supply chains, identity documents, community healers who understand hybrid biology. Find the network within 24 hours in any city.",
"suggested_personality": "Defiant. Artistic. Rage just below the surface. Deep bonds with chosen family. Default distrust of purebreds softened by individual proof."
},
{
"id": "warren_runner",
"name": "Warren Runner",
"flavor": "Leporid-origin logistics and communications. You were a messenger, courier, or information carrier for the warren-networks that connect communities.",
"skill_proficiencies": ["acrobatics", "perception"],
"tool_proficiencies": ["navigators_tools", "vehicles_land"],
"feature_name": "The Network Runs",
"feature_description": "Know the fastest route between any two points in a region you've worked. Deliver messages with near-perfect reliability. Contacts in Leporid warren-networks across multiple cities.",
"suggested_personality": "Restless. Difficulty sitting still. Excellent spatial memory. Loyalty to the network above individual relationships."
},
{
"id": "rawfang_investigator",
"name": "Rawfang Investigator",
"flavor": "You hunt the worst criminals in the world — those who break the Covenant by consuming sentient flesh. This work has changed you.",
"skill_proficiencies": ["investigation", "medicine"],
"tool_proficiencies": ["alchemists_supplies", "forensic_kit"],
"feature_name": "Crime Scene Reader",
"feature_description": "Analyze a location for evidence of Covenant violation. Blood typing, scent remnants, tissue identification. Read a scene in minutes. Contacts in law enforcement and forensic communities.",
"suggested_personality": "Quiet. Dark humor as a coping mechanism. Difficulty eating meat of any kind. Insomnia. Unwavering commitment to justice."
},
{
"id": "scent_suppressed",
"name": "Scent-Suppressed",
"flavor": "You grew up on scent-suppressants — maybe your parents were progressive, maybe paranoid, maybe you're a hybrid whose scent was managed from birth. You've lived partially invisible in a world that communicates through smell.",
"skill_proficiencies": ["stealth", "insight"],
"tool_proficiencies": ["perfumers_kit", "alchemists_supplies"],
"feature_name": "Scentless",
"feature_description": "Your baseline scent is nearly undetectable. Creatures relying on scent to detect or read you do so with disadvantage. You read others by body language rather than scent.",
"suggested_personality": "Observant. Disconnected from scent-culture rituals. Feels invisible. Either grateful for the privacy or resentful of the erasure."
},
{
"id": "former_chattel",
"name": "Former Chattel",
"flavor": "Hybrid-specific. Your grandparents — or you — were property. The Imperium's shadow is long, and some regions only recently abolished hybrid ownership.",
"skill_proficiencies": ["athletics", "survival"],
"tool_proficiencies": ["artisans_tools", "herbalism_kit"],
"feature_name": "Unbreakable",
"feature_description": "Advantage on saves against exhaustion and against effects that would compel obedience or subservience. Contacts in abolitionist networks and former-chattel communities.",
"suggested_personality": "Quiet fury. Absolute refusal to be owned, controlled, or spoken for. Deep empathy for the powerless. Difficulty trusting authority."
},
{
"id": "coliseum_breeder",
"name": "Coliseum Breeder",
"flavor": "You worked the coliseum system — not as a fighter, but as the industry behind the spectacle. Trainer, handler, promoter, or medic. You know how the machine works.",
"skill_proficiencies": ["animal_handling", "medicine"],
"tool_proficiencies": ["herbalism_kit", "gaming_set"],
"feature_name": "Arena Insider",
"feature_description": "Know the coliseum circuit, active and underground. Secure fights, find fighters, negotiate purses, identify fixed matches. Know which officials take bribes.",
"suggested_personality": "Pragmatic about violence. Business-minded. Complicated relationship with ethics — kept fighters alive, but kept the system running."
}
]
@@ -0,0 +1,115 @@
[
{
"id": "canidae",
"name": "Canidae",
"kind": "predator",
"ability_mods": { "CON": 1, "WIS": 1 },
"languages": ["common", "canid"],
"traits": [
{ "id": "pack_instinct", "name": "Pack Instinct", "description": "Reaction: when an ally within 10 ft. is attacked, grant them +2 AC against that attack. Uses equal to proficiency bonus per long rest." },
{ "id": "superior_scent", "name": "Superior Scent", "description": "Advantage on Perception checks that rely on smell. Detects emotional states (fear, anger, deception) within 30 ft. — interpretation requires WIS check." },
{ "id": "subsonic_communication","name": "Subsonic Communication","description": "Communicate simple messages (danger, regroup, follow, stop) to other Canidae within 60 ft. silently." }
],
"detriments": [
{ "id": "pack_dependent", "name": "Pack-Dependent", "description": "When no allied creature is within 30 ft., disadvantage on WIS saves against fear and charm." },
{ "id": "scent_overload", "name": "Scent Overload", "description": "In environments with overwhelming or chemically altered smells, all Perception checks suffer disadvantage." }
]
},
{
"id": "felidae",
"name": "Felidae",
"kind": "predator",
"ability_mods": { "DEX": 1, "CHA": 1 },
"languages": ["common", "felid"],
"traits": [
{ "id": "retractable_claws", "name": "Retractable Claws", "description": "Unarmed claw attacks deal 1d6 + DEX slashing. Claws extend or retract at will, allowing full manual dexterity when sheathed." },
{ "id": "darkvision", "name": "Darkvision", "description": "See in dim light within 60 ft. as if bright; in darkness as if dim (greyscale only)." },
{ "id": "feline_grace", "name": "Feline Grace", "description": "Half damage from falls of 30 ft. or less (none from 10 ft. or less). Advantage on Acrobatics checks to maintain balance." },
{ "id": "tail_speak", "name": "Tail-Speak", "description": "Communicate complex emotional and tactical info silently to any creature that speaks Felid, visible up to 60 ft." }
],
"detriments": [
{ "id": "solitary_instinct", "name": "Solitary Instinct", "description": "Cannot benefit from the Help action unless the helper is a Felidae or a bonded creature." },
{ "id": "prides_cost", "name": "Pride's Cost", "description": "Failing a check or save by 5 or more in front of witnesses imposes disadvantage on the next CHA check." }
]
},
{
"id": "mustelidae",
"name": "Mustelidae",
"kind": "predator",
"ability_mods": { "DEX": 1, "INT": 1 },
"languages": ["common", "mustelid"],
"traits": [
{ "id": "sinuous_frame", "name": "Sinuous Frame", "description": "Squeeze through openings sized for one size category smaller without penalty. Advantage on checks to escape grapples and restraints." },
{ "id": "burning_metabolism", "name": "Burning Metabolism", "description": "Advantage on saves vs. cold and exhaustion. Requires double rations to function (see equipment costs)." },
{ "id": "ferocity", "name": "Ferocity", "description": "When reduced below half HP, deal +1 damage on melee attacks until end of next turn. Triggers once per long rest." }
],
"detriments": [
{ "id": "high_metabolism", "name": "High Metabolism", "description": "Requires double rations daily. Without enough food, gain a level of exhaustion every 12 hours instead of 24." },
{ "id": "scent_marker", "name": "Scent Marker", "description": "Mustelid musk is unmistakable and difficult to mask. Disadvantage on Stealth checks against creatures with scent abilities unless you have a deep-cover scent-mask active." }
]
},
{
"id": "ursidae",
"name": "Ursidae",
"kind": "predator",
"ability_mods": { "DEX": -1, "CON": 2 },
"languages": ["common", "ursid"],
"traits": [
{ "id": "powerful_build", "name": "Powerful Build", "description": "Counts as one size larger for carrying capacity and grappling. Push, drag, or lift weight is doubled." },
{ "id": "thick_hide", "name": "Thick Hide", "description": "Natural AC = 11 + DEX when unarmored. Resistance to non-magical bludgeoning damage." },
{ "id": "bone_crushing_jaws", "name": "Bone-Crushing Jaws", "description": "Unarmed bite deals 1d10 + STR piercing. On a critical hit, target makes a STR save (DC = 8 + prof + STR) or is knocked prone." }
],
"detriments": [
{ "id": "lumbering", "name": "Lumbering", "description": "Disadvantage on DEX (Stealth) checks. Disadvantage on DEX saves to avoid area effects." },
{ "id": "heat_intolerance", "name": "Heat Intolerance", "description": "In temperatures above 80°F, CON save (DC 12) every 2 hours of activity or gain a level of exhaustion." }
]
},
{
"id": "cervidae",
"name": "Cervidae",
"kind": "prey",
"ability_mods": { "DEX": 1, "WIS": 1 },
"languages": ["common", "cervid"],
"traits": [
{ "id": "fleet_footed", "name": "Fleet-Footed", "description": "Base movement speed +5 ft. When you Dash, no opportunity attacks against you for that turn." },
{ "id": "antlers", "name": "Antlers", "description": "(Antlered species only.) Natural antler attack deals 1d6 + STR piercing. Antlers shed annually; cosmetic only when shed, attack still functional." },
{ "id": "wide_field_of_view", "name": "Wide Field of View", "description": "Cannot be flanked by fewer than three attackers. Advantage on Perception checks to detect movement at the periphery of vision." }
],
"detriments": [
{ "id": "flight_response", "name": "Flight Response", "description": "When suddenly threatened (surprise attack, sudden loud sound), WIS save (DC 12) or compelled to move at full speed away from the threat for one turn." },
{ "id": "delicate_frame", "name": "Delicate Frame", "description": "Hit point maximum reduced by 1 per level (minimum 1 HP per level)." }
]
},
{
"id": "bovidae",
"name": "Bovidae",
"kind": "prey",
"ability_mods": { "STR": 1, "CON": 1 },
"languages": ["common", "bovid"],
"traits": [
{ "id": "horns", "name": "Horns", "description": "Natural horn attack deals 1d8 + STR bludgeoning or piercing (shape varies by species). Horns are permanent and grow throughout life." },
{ "id": "herd_wall", "name": "Herd Wall", "description": "Adjacent to one ally: +1 AC. Adjacent to three or more: +2 AC. Stacks with other adjacency bonuses up to a maximum of +3 from all sources." },
{ "id": "unshakeable", "name": "Unshakeable", "description": "Advantage on saves against being frightened, charmed, or compelled to move from your position." }
],
"detriments": [
{ "id": "ponderous_gait", "name": "Ponderous Gait", "description": "Base movement speed is 25 ft. Disadvantage on DEX saves against effects that require quick repositioning." },
{ "id": "stubborn", "name": "Stubborn", "description": "Disadvantage on WIS saves against effects that exploit refusal to change course (feints, misdirections, lures)." }
]
},
{
"id": "leporidae",
"name": "Leporidae",
"kind": "prey",
"ability_mods": { "STR": -1, "DEX": 2 },
"languages": ["common", "leporid"],
"traits": [
{ "id": "leaping_strides", "name": "Leaping Strides", "description": "Long jump distance equal to your speed without a running start. High jump distance equal to half your speed without a running start." },
{ "id": "burrow_savvy", "name": "Burrow Savvy", "description": "Proficiency in Survival in underground or warren environments. Advantage on Perception checks underground." },
{ "id": "twitch_reflexes", "name": "Twitch Reflexes", "description": "Advantage on initiative rolls. Reaction: when targeted by a ranged attack you can see, impose disadvantage on that attack roll. Uses equal to proficiency bonus per long rest." }
],
"detriments": [
{ "id": "fragile_body", "name": "Fragile Body", "description": "Hit point maximum reduced by 1 per level (minimum 1 HP per level). Disadvantage on STR saves against effects that would knock you prone." },
{ "id": "constant_vigilance", "name": "Constant Vigilance", "description": "When in a new environment for less than 1 hour, you cannot benefit from a short rest — your nervous system refuses to settle." }
]
}
]
@@ -0,0 +1,486 @@
[
{
"id": "fangsworn",
"name": "Fangsworn",
"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", "intimidation", "perception", "survival", "animal_handling"],
"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",
"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", "insight", "intimidation", "medicine", "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",
"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", "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",
"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", "deception", "insight", "intimidation", "investigation", "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",
"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": ["deception", "insight", "investigation", "medicine", "perception", "persuasion", "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",
"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", "insight", "intimidation", "medicine", "persuasion", "religion"],
"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",
"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", "deception", "history", "insight", "intimidation", "investigation", "medicine", "nature", "perception", "performance", "persuasion", "religion", "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",
"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", "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.)" }
}
}
]
@@ -0,0 +1,302 @@
[
{
"id": "wolf",
"clade_id": "canidae",
"name": "Wolf-Folk",
"size": "medium_large",
"ability_mods": { "STR": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "jaws_of_the_alpha", "name": "Jaws of the Alpha", "description": "Unarmed bite deals 1d8 + STR piercing (1d10 at level 5, 1d12 at level 11). On crit, target makes a STR save (DC = 8 + prof + STR) or is grappled." },
{ "id": "tireless_pursuit", "name": "Tireless Pursuit", "description": "Forced march for additional CON-mod hours before exhaustion. Advantage on CON checks vs. exhaustion from prolonged activity." },
{ "id": "howl", "name": "Howl", "description": "Action: territorial howl audible to 1 mile. Allied Canidae who hear gain advantage on next attack roll or save within 1 minute. Once per long rest." }
],
"detriments": [
{ "id": "dominance_reflex", "name": "Dominance Reflex", "description": "When publicly challenged, WIS save (DC 12) or compelled to respond with aggression or dominance display." },
{ "id": "heavy_frame", "name": "Heavy Frame", "description": "Disadvantage on DEX (Stealth) checks in enclosed or quiet environments." }
]
},
{
"id": "fox",
"clade_id": "canidae",
"name": "Fox-Folk",
"size": "medium",
"ability_mods": { "DEX": 1 },
"base_speed_ft": 35,
"traits": [
{ "id": "vulpine_agility", "name": "Vulpine Agility", "description": "Base speed 35 ft. Move through the space of any creature one size larger without penalty." },
{ "id": "clever_paws", "name": "Clever Paws", "description": "Proficiency with Thieves' Tools and one additional tool of choice." },
{ "id": "tricksters_mask", "name": "Trickster's Mask", "description": "Advantage on CHA (Deception) checks. Once per long rest, suppress natural scent for 1 hour, imposing disadvantage on tracking and identification by smell." }
],
"detriments": [
{ "id": "fragile_frame", "name": "Fragile Frame", "description": "Hit point maximum reduced by 1 per level (minimum 1 HP per level)." },
{ "id": "canid_prejudice", "name": "Canid Prejudice", "description": "Disadvantage on CHA (Persuasion) against wolf-folk until competence has been demonstrated to that individual." }
]
},
{
"id": "coyote",
"clade_id": "canidae",
"name": "Coyote-Folk",
"size": "medium",
"ability_mods": { "CHA": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "urban_adaptation", "name": "Urban Adaptation", "description": "Proficiency in Survival in urban environments. Find food, water, and shelter in any settlement within 1 hour. Advantage on checks to navigate sewers, rooftops, and alleys." },
{ "id": "scavengers_stomach", "name": "Scavenger's Stomach", "description": "Advantage on CON saves vs. ingested poisons and disease from spoiled food. Subsist on half the normal food and water requirements." },
{ "id": "opportunist", "name": "Opportunist", "description": "Reaction: when a creature within 5 ft. is hit by an ally's attack, make a single melee attack against that creature. Uses equal to proficiency bonus per long rest." }
],
"detriments": [
{ "id": "distrusted", "name": "Distrusted", "description": "Disadvantage on CHA checks to establish trust with strangers from established institutions (merchants' guilds, noble houses, military)." },
{ "id": "restless_blood", "name": "Restless Blood", "description": "Disadvantage on checks or saves involving long-duration waiting, stakeouts, or monotonous tasks." }
]
},
{
"id": "lion",
"clade_id": "felidae",
"name": "Lion-Folk",
"size": "medium_large",
"ability_mods": { "STR": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "commanding_presence", "name": "Commanding Presence", "description": "Proficiency in Intimidation (expertise if already proficient). When intimidating, may roar — creatures within 15 ft. who hear it make a WIS save (DC = 8 + prof + CHA) or are frightened until end of next turn. Once per short rest." },
{ "id": "pride_fighter", "name": "Pride Fighter", "description": "Lion-folk can both grant and benefit from flanking. When you and an ally are adjacent to the same enemy, both gain +2 to attack rolls against that enemy." },
{ "id": "mane_guard", "name": "Mane Guard", "description": "+1 AC against attacks targeting the neck or throat." }
],
"detriments": [
{ "id": "territorial_ego", "name": "Territorial Ego", "description": "Disadvantage on CHA (Persuasion) when negotiating shared resources, territory, or leadership positions." },
{ "id": "heat_lethargy", "name": "Heat Lethargy", "description": "In temperatures above 90°F, CON save (DC 10) every hour of strenuous activity or gain a level of exhaustion." }
]
},
{
"id": "leopard",
"clade_id": "felidae",
"name": "Leopard-Folk",
"size": "medium",
"ability_mods": { "DEX": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "ambush_predator", "name": "Ambush Predator", "description": "Attacking a creature that hasn't acted yet in combat or is unaware deals +1d6 damage on the first hit (+2d6 at level 9)." },
{ "id": "arboreal_hunter", "name": "Arboreal Hunter", "description": "Climb speed equal to walking speed. Advantage on Athletics checks to climb. Move at full speed while climbing without penalty." },
{ "id": "shadow_pelt", "name": "Shadow Pelt", "description": "Advantage on Stealth checks in dim light or darkness." }
],
"detriments": [
{ "id": "lone_operator", "name": "Lone Operator", "description": "Disadvantage on group skill checks (coordinated efforts, team athletics, group stealth)." },
{ "id": "trigger_reflexes", "name": "Trigger Reflexes", "description": "When surprised by sudden movement within 5 ft., WIS save (DC 10) or reflexively lash out with a claw attack against the triggering creature." }
]
},
{
"id": "housecat",
"clade_id": "felidae",
"name": "Housecat-Folk",
"size": "small",
"ability_mods": { "INT": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "unassuming", "name": "Unassuming", "description": "Advantage on Stealth in social settings (crowds, parties, meetings). Advantage on the first Deception check in any social encounter with a new creature." },
{ "id": "tight_spaces", "name": "Tight Spaces", "description": "Squeeze through openings sized for Tiny creatures without penalty. Advantage on checks to escape grapples and restraints." },
{ "id": "nine_lives", "name": "Nine Lives", "description": "When reduced to 0 HP, can choose to drop to 1 HP instead. Once per long rest." }
],
"detriments": [
{ "id": "size_matters", "name": "Size Matters", "description": "Disadvantage on STR checks and saves against creatures two or more sizes larger. Carrying capacity halved. Heavy weapons cannot be used effectively." },
{ "id": "compulsive_curiosity", "name": "Compulsive Curiosity", "description": "When presented with a mystery, hidden space, or unknown object out of combat, WIS save (DC 12) or spend at least one action investigating." }
]
},
{
"id": "ferret",
"clade_id": "mustelidae",
"name": "Ferret-Folk",
"size": "small",
"ability_mods": { "CHA": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "weaver", "name": "Weaver", "description": "Move through any opening at least 6 inches wide. No penalty for combat in cramped spaces (tunnels, crawlspaces)." },
{ "id": "social_charm", "name": "Social Charm", "description": "Advantage on Deception and Persuasion checks against creatures who underestimate you for your size." }
],
"detriments": [
{ "id": "small_frame", "name": "Small Frame", "description": "Carrying capacity halved. Heavy weapons cannot be used effectively." }
]
},
{
"id": "badger",
"clade_id": "mustelidae",
"name": "Badger-Folk",
"size": "medium",
"ability_mods": { "CON": 1 },
"base_speed_ft": 25,
"traits": [
{ "id": "burrower", "name": "Burrower", "description": "Burrow speed of 10 ft. through loose soil, sand, or snow. Cannot burrow through stone or hardpacked earth." },
{ "id": "tenacious_grip", "name": "Tenacious Grip", "description": "Advantage on grapple attempts. Targets you grapple have disadvantage on checks to escape." }
],
"detriments": [
{ "id": "stocky_build", "name": "Stocky Build", "description": "Base speed 25 ft. Disadvantage on long-jump checks." }
]
},
{
"id": "wolverine",
"clade_id": "mustelidae",
"name": "Wolverine-Folk",
"size": "medium_large",
"ability_mods": { "STR": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "savage_jaws", "name": "Savage Jaws", "description": "Unarmed bite deals 1d8 + STR piercing. On a critical hit, the wound bleeds: 1d4 damage at the start of the target's turn for 2 turns." },
{ "id": "indomitable_ferocity", "name": "Indomitable Ferocity", "description": "When reduced to 0 HP, drop to 1 HP instead. Once per long rest." }
],
"detriments": [
{ "id": "feared_kin", "name": "Feared Kin", "description": "Disadvantage on CHA (Persuasion) checks with non-Mustelid creatures who recognize your species. Wolverine reputation precedes you." }
]
},
{
"id": "brown_bear",
"clade_id": "ursidae",
"name": "Brown Bear-Folk",
"size": "large",
"ability_mods": { "STR": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "rending_claws", "name": "Rending Claws", "description": "Unarmed claw attacks deal 1d8 + STR slashing. Two-paw rend: if both claw attacks hit the same target in one Attack action, deal an extra 1d6 damage." },
{ "id": "winter_hibernation", "name": "Winter Hibernation", "description": "Once per year, enter a deep restorative sleep for 1d4 weeks. On waking, fully heal and remove all levels of exhaustion." }
],
"detriments": []
},
{
"id": "polar_bear",
"clade_id": "ursidae",
"name": "Polar Bear-Folk",
"size": "large",
"ability_mods": { "WIS": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "arctic_adaptation", "name": "Arctic Adaptation", "description": "Resistance to cold damage. Immunity to environmental cold effects. Swim speed equal to walking speed." },
{ "id": "white_pelt", "name": "White Pelt", "description": "Advantage on Stealth checks in snow, ice, or arctic terrain." }
],
"detriments": [
{ "id": "polar_appetite", "name": "Polar Appetite", "description": "Requires triple rations daily. Without them, gain a level of exhaustion every 8 hours." }
]
},
{
"id": "elk",
"clade_id": "cervidae",
"name": "Elk-Folk",
"size": "medium_large",
"ability_mods": { "STR": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "majestic_antlers", "name": "Majestic Antlers", "description": "Antler attack deals 1d8 + STR piercing. Charging attack: if you move at least 20 ft. straight before attacking, deal +1d6 damage and target makes a STR save (DC = 8 + prof + STR) or is knocked back 5 ft." }
],
"detriments": [
{ "id": "antler_drag", "name": "Antler Drag", "description": "During antler-shed season (1 month per year), antlers fall off — antler attack damage reduced by 1 die step until they regrow." }
]
},
{
"id": "deer",
"clade_id": "cervidae",
"name": "Deer-Folk",
"size": "medium",
"ability_mods": { "DEX": 1 },
"base_speed_ft": 35,
"traits": [
{ "id": "swift_strider", "name": "Swift Strider", "description": "Base speed 35 ft. Difficult terrain costs no extra movement when moving in a straight line." },
{ "id": "alert_eyes", "name": "Alert Eyes", "description": "You cannot be surprised while conscious." }
],
"detriments": [
{ "id": "skittish", "name": "Skittish", "description": "When taking damage from a hidden or unseen attacker, WIS save (DC 12) or use your reaction to move 10 ft. away from the attack source." }
]
},
{
"id": "moose",
"clade_id": "cervidae",
"name": "Moose-Folk",
"size": "large",
"ability_mods": { "CON": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "broad_antlers", "name": "Broad Antlers", "description": "Antler attack deals 1d10 + STR piercing. Charging attack: if you move at least 20 ft. straight before attacking, target makes a STR save (DC = 8 + prof + STR) or is knocked prone." },
{ "id": "swamp_strider", "name": "Swamp Strider", "description": "No movement penalty in marsh, mud, snow, or shallow water." }
],
"detriments": []
},
{
"id": "rabbit",
"clade_id": "leporidae",
"name": "Rabbit-Folk",
"size": "small",
"ability_mods": { "WIS": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "warren_dweller", "name": "Warren Dweller", "description": "Burrow speed 10 ft. through loose soil. Advantage on Stealth checks in your home warren. Community Resilience: once per long rest, when within 30 ft. of two or more allies, regain 1d4 + level HP." },
{ "id": "powerful_legs", "name": "Powerful Legs", "description": "Standing long jump distance equals your speed; running long jump doubles it." }
],
"detriments": [
{ "id": "small_prey", "name": "Small Prey", "description": "Carrying capacity halved. Disadvantage on STR saves against creatures two or more sizes larger." }
]
},
{
"id": "hare",
"clade_id": "leporidae",
"name": "Hare-Folk",
"size": "medium",
"ability_mods": { "CON": 1 },
"base_speed_ft": 45,
"traits": [
{ "id": "open_ground_runner", "name": "Open Ground Runner", "description": "Base speed 45 ft. (fastest of any species). When you Dash, you can move through enemies' spaces if you end your movement outside their reach." },
{ "id": "wild_born", "name": "Wild Born", "description": "Proficiency in Survival. Advantage on CON saves against environmental exposure (cold, heat, wind, rain)." },
{ "id": "jackrabbit_dodge", "name": "Jackrabbit Dodge", "description": "Reaction when targeted by a ranged attack you can see, with at least 5 ft. of movement space: impose disadvantage on the attack roll. Uses equal to proficiency bonus per long rest." }
],
"detriments": [
{ "id": "solitary_streak", "name": "Solitary Streak", "description": "Cannot benefit from Community Resilience effects. Disadvantage on checks involving group coordination." },
{ "id": "exposed", "name": "Exposed", "description": "Cannot benefit from full cover that involves enclosed spaces smaller than your body — claustrophobia is mechanical." }
]
},
{
"id": "bull",
"clade_id": "bovidae",
"name": "Bull-Folk",
"size": "large",
"ability_mods": { "STR": 1 },
"base_speed_ft": 25,
"traits": [
{ "id": "charge", "name": "Charge", "description": "If you move at least 20 ft. straight toward a target and hit with a horn attack, target takes +2d6 bludgeoning and makes a STR save (DC = 8 + prof + STR) or is knocked prone." },
{ "id": "iron_constitution", "name": "Iron Constitution", "description": "Resistance to poison damage. Advantage on saves against poison and disease." },
{ "id": "immovable_anchor", "name": "Immovable Anchor", "description": "Bonus action: plant yourself. Until the start of your next turn, cannot be moved against your will and AC +2. Speed becomes 0." }
],
"detriments": [
{ "id": "seeing_red", "name": "Seeing Red", "description": "When reduced to half HP by a melee attack, WIS save (DC 13) or compelled to attack the damaging creature on next turn, ignoring tactics." },
{ "id": "hooves_not_paws", "name": "Hooves, Not Paws", "description": "Disadvantage on checks requiring fine manual dexterity (lockpicking, surgery, calligraphy)." }
]
},
{
"id": "ram",
"clade_id": "bovidae",
"name": "Ram-Folk",
"size": "medium",
"ability_mods": { "WIS": 1 },
"base_speed_ft": 30,
"traits": [
{ "id": "mountain_born", "name": "Mountain Born", "description": "Climb speed equal to walking speed. Immune to altitude sickness. Advantage on DEX checks and saves on narrow, unstable, or steep surfaces." },
{ "id": "headbutt", "name": "Headbutt", "description": "Horn attack deals 1d10 + STR when using Charge (20-ft. run-up). Target hit must make a CON save (DC = 8 + prof + STR) or be dazed (disadvantage on next attack roll)." },
{ "id": "wool_insulation", "name": "Wool Insulation", "description": "Resistance to cold damage. Advantage on saves against cold environments." }
],
"detriments": [
{ "id": "horizontal_pupils", "name": "Horizontal Pupils", "description": "Disadvantage on Perception checks requiring depth perception at distances greater than 60 ft." },
{ "id": "herd_mentality", "name": "Herd Mentality", "description": "When 3+ visible allies are moving in a direction, WIS save (DC 10) or feel compelled to move with them." }
]
},
{
"id": "bison",
"clade_id": "bovidae",
"name": "Bison-Folk",
"size": "large",
"ability_mods": { "CON": 1 },
"base_speed_ft": 25,
"traits": [
{ "id": "stampede_engine", "name": "Stampede Engine", "description": "Charge deals an additional 1d6 damage. If three or more bison-folk charge the same target or area, all attacks gain +1d6." },
{ "id": "prairie_endurance", "name": "Prairie Endurance", "description": "March for 16 hours before exhaustion checks begin. Advantage on CON saves against effects that would slow your movement." },
{ "id": "wall_of_fur", "name": "Wall of Fur", "description": "Resistance to non-magical bludgeoning damage." }
],
"detriments": [
{ "id": "forward_weighted", "name": "Forward-Weighted", "description": "Disadvantage on DEX saves and checks that require backward movement, pivoting, or rapid direction changes." },
{ "id": "stoic_to_a_fault", "name": "Stoic to a Fault", "description": "Disadvantage on CHA (Performance) and CHA (Persuasion) checks that require emotional expressiveness." }
]
}
]