M6.17: Variant content + Sheep/Goat split + calling lore + uniform card layout

Species variants populated against the M6.13 schema:
- Lion-Folk sex axis: Mane Guard (male) / Huntress Reflexes (female,
  +5 ft speed + advantage on initiative).
- Elk-Folk sex axis: Antler Combat with 10 ft reach when full rack
  (male, retains seasonal Antler Drag) / Kick (female, prone on crit).
  Base traits restored to doc canon: Herd Coordination (Help → +3) +
  Endurance Runner (40 ft + advantage CON vs forced march); base speed
  bumped 30 → 40; new base detriment Herd Instinct.

Ram-Folk replaced with separate Sheep-Folk + Goat-Folk species rather
than a lineage-axis variant on a single Ram entry. Bovidae now has 4
species. The lineage-axis toggle UI in StepSpecies BuildCard rolled
back; the schema stays for sex-axis (Lion/Elk) which auto-resolves.
ContentLoadTests + HybridCharacterTests updated; Size.cs comment too.

Calling lore: ClassDef gains Description; classes.json populated for
all 8 callings with the doc's italic blockquote + paragraph profile.
StepClass surfaces the description on the card.

Card layout uniformity: StepClass / StepSubclass / StepBackground all
switched to single-column ExpandFill grids (matching StepClade /
StepSpecies). Each card now spans the wizard's content width so the
description and feature chips have room to breathe.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Christopher Wiebe
2026-05-07 22:23:47 -07:00
parent 0ab4715aee
commit 39117a09ed
10 changed files with 121 additions and 174 deletions
+8
View File
@@ -2,6 +2,7 @@
{
"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"],
@@ -59,6 +60,7 @@
{
"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"],
@@ -118,6 +120,7 @@
{
"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"],
@@ -180,6 +183,7 @@
{
"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"],
@@ -243,6 +247,7 @@
{
"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"],
@@ -302,6 +307,7 @@
},
{
"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"],
@@ -362,6 +368,7 @@
},
{
"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"],
@@ -424,6 +431,7 @@
},
{
"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"],
+67 -9
View File
@@ -63,12 +63,30 @@
"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." }
{ "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." }
],
"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." }
],
"variant_axis": "sex",
"variants": [
{
"id": "male",
"name": "Maned",
"traits": [
{ "id": "mane_guard", "name": "Mane Guard", "description": "+1 AC against attacks targeting the neck or throat. The mane is armor that grew there on its own." }
],
"detriments": []
},
{
"id": "female",
"name": "Maneless",
"traits": [
{ "id": "huntress_reflexes", "name": "Huntress Reflexes", "description": "Base speed +5 ft. Advantage on initiative rolls. Lionesses do the hunting in the pride for a reason." }
],
"detriments": []
}
]
},
{
@@ -204,12 +222,34 @@
"description": "\"Herd-builders, wall-builders, civilization-builders. The hooves that stamped order into chaos.\"\n\nTall and long-legged, powerful through the haunches and chest. Tawny brown body, darker neck, pale rump patch. Males grow impressive branching antlers — broad, branching, shed and regrown annually — used in display, defense, and cultural adornment.",
"size": "medium_large",
"ability_mods": { "STR": 1 },
"base_speed_ft": 30,
"base_speed_ft": 40,
"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." }
{ "id": "herd_coordination", "name": "Herd Coordination", "description": "When you take the Help action to assist an ally's check or attack, the ally gains a +3 bonus instead of advantage. Cervidae herd instinct made tactical." },
{ "id": "endurance_runner", "name": "Endurance Runner", "description": "Base speed 40 ft. Advantage on CON saves against forced march, exhaustion from prolonged movement, and effects that would slow your pace on open ground." }
],
"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": "herd_instinct", "name": "Herd Instinct", "description": "When an allied creature within 30 ft. takes the Dash action to flee combat, WIS save (DC 12) or use your reaction to Dash in the same direction. The herd moves together — even when only some of it should." }
],
"variant_axis": "sex",
"variants": [
{
"id": "male",
"name": "Bull",
"traits": [
{ "id": "antler_combat", "name": "Antler Combat", "description": "Antler attack deals 1d8 + STR piercing. On a hit, you may forgo damage to shove the target 5 ft. While the full rack is grown (outside antler-shed season), antler attacks have reach 10 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 and the 10 ft. reach is lost until they regrow." }
]
},
{
"id": "female",
"name": "Cow",
"traits": [
{ "id": "kick", "name": "Kick", "description": "Hooved kick attack deals 1d8 + STR bludgeoning. On a critical hit, the target is knocked prone. The herd's other answer to threats." }
],
"detriments": []
}
]
},
{
@@ -300,17 +340,35 @@
]
},
{
"id": "ram",
"id": "sheep",
"clade_id": "bovidae",
"name": "Ram-Folk",
"description": "\"Climbers, thinkers, and the reason every mountain fortress in the world was built by someone with horns.\"\n\nStocky and compact, lower center of gravity than bull-folk — powerful especially through the hindquarters. Wool (sheep lineage) or coarse hair (goat). Spiral or sweeping horns, cloven hooves, horizontal-slit pupils — distinctive and unsettling to other Clades.",
"name": "Sheep-Folk",
"description": "\"We climb because the mountain asked us to. We grow wool because the wind asked us to. We come back, again and again, because that's what the herd is for.\"\n\nStocky and compact, lower center of gravity than bull-folk — powerful especially through the hindquarters. Heavy fleece, tightly curled and lanolin-rich, naturally weather-shedding. Spiral or sweeping horns, cloven hooves, horizontal-slit pupils. Sheep-folk built the high pastures and the wool trade that supports half the world's textile economy.",
"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." }
{ "id": "wool_insulation", "name": "Wool Insulation", "description": "Resistance to cold damage. Advantage on saves against cold environments. The fleece does what the fleece is for." }
],
"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": "goat",
"clade_id": "bovidae",
"name": "Goat-Folk",
"description": "\"Yes, I can stand on that. Yes, I can eat that. Yes, I am going to.\"\n\nLeaner and more angular than sheep-folk, athletic through the shoulder, with the same low center of gravity. Coarse hair instead of wool. Curving horns swept back. Horizontal-slit pupils. Goat-folk thrive where nothing else can — desert mesas, cliff edges, salt marshes, the upper slopes where the air thins and the rocks don't hold.",
"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": "stubborn_metabolism", "name": "Stubborn Metabolism", "description": "Subsist on half normal rations. Advantage on CON saves against ingested poisons, spoiled food, and unusual environmental contaminants. Goat-line digestive systems are infamous for a reason." }
],
"detriments": [
{ "id": "horizontal_pupils", "name": "Horizontal Pupils", "description": "Disadvantage on Perception checks requiring depth perception at distances greater than 60 ft." },