Files
Christopher Wiebe 66055f9549 M6.14: Single-column card layout with clade/species descriptions
Switch Step 0 (Clade) and Step 1 (Species) from a 3-column card grid
to a 1-column layout, with each card carrying a codex-voice
description paragraph between the meta line and the trait chips.
Rationale: establish the world's tone before mechanics — the player
reads who Canidae or Wolf-Folk *are* before evaluating ability mods
and trait pills. Trade is more vertical scrolling, but the card
content was already going wider than three columns comfortably
allowed once the parchment theme bumped padding.

Schema: CladeDef and SpeciesDef gain a Description field (string,
empty default). Populated for all 7 clades and 19 species, sourced
from the doc's italicized blockquote + a one-sentence summary of
the prose paragraph that follows. Empty descriptions fall through
silently — a species without a description still renders, just
without the paragraph.

UI: MakeGrid in both steps becomes Columns = 1 with ExpandFill;
BuildCard sets card.SizeFlagsHorizontal = ExpandFill (replaces the
fixed CustomMinimumSize 200) and prepends the autowrap description
label after the meta line. Hybrid mode stacks sire and dam single-
column grids vertically — same logic as before, just one card wide
each.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 21:47:00 -07:00

123 lines
12 KiB
JSON

[
{
"id": "canidae",
"name": "Canidae",
"kind": "predator",
"description": "\"We were the first to hunt together, the first to howl in harmony, and the first to sit across from prey and call it diplomacy.\"\n\nPack-hunters who became civilization-builders, defined by social cohesion, hierarchical instinct, and supernatural scent-reading. Disproportionately represented in military, law enforcement, and governance.",
"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",
"description": "\"We do not need your pack. We do not need your herd. We need only what is ours, and we will take it when you look away.\"\n\nPrecision predators built for explosive power, preternatural reflexes, and absolute independence. They dominate fields requiring solo brilliance — surgery, assassination, fine art, engineering.",
"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",
"description": "\"Small doesn't mean weak. It means you have to be smarter, meaner, and faster than everyone who thinks size is the only thing that matters.\"\n\nThe most physically diverse Clade — weasel-folk, ferret-folk, badger-folk, wolverine-folk, otter-folk — united by furnace metabolisms, ferocity wildly disproportionate to body size, and a reputation for being impossible to pin down.",
"ability_mods": { "DEX": 1, "INT": 1 },
"languages": ["common", "mustelid"],
"traits": [
{ "id": "metabolic_furnace", "name": "Metabolic Furnace", "description": "Advantage on CON saves against cold environments and cold-based damage. (You must consume twice the normal daily ration to fuel this — see Burn Rate.)" },
{ "id": "sinuous_body", "name": "Sinuous Body", "description": "Move through spaces sized one category smaller than your actual size without squeezing penalties. Advantage on checks to escape grapples." },
{ "id": "ferocity", "name": "Ferocity", "description": "When reduced to half HP or below, gain +2 to melee attack rolls. Mustelidae don't retreat — they get angrier." }
],
"detriments": [
{ "id": "burn_rate", "name": "Burn Rate", "description": "You require double standard rations. Without them, gain one level of exhaustion per day of insufficient feeding. Starvation hits Mustelidae twice as fast as any other Clade." },
{ "id": "short_fuse", "name": "Short Fuse", "description": "Disadvantage on WIS saves against effects that provoke rage, aggression, or recklessness. The gap between 'annoyed' and 'fighting' is dangerously short." }
]
},
{
"id": "ursidae",
"name": "Ursidae",
"kind": "predator",
"description": "\"The bear doesn't chase. The bear waits. And eventually, everything comes to the bear.\"\n\nThe largest sentient Clade. Slow to anger, slow to move, slow to decide — and catastrophically powerful when any of those things finally tips. Frequently underestimated intellectually because size reads as simplicity; in truth, Ursidae civilizations produced some of the finest philosophy, architecture, and brewing in the world.",
"ability_mods": { "DEX": -1, "CON": 2 },
"languages": ["common", "ursid"],
"traits": [
{ "id": "massive_frame", "name": "Massive Frame", "description": "Your size category is Large. Advantage on STR checks and saves. Carrying capacity doubled. Wield Heavy weapons without penalty. Grapple creatures up to two sizes smaller with one paw." },
{ "id": "thick_hide", "name": "Thick Hide", "description": "Natural armor. When unarmored, AC = 12 + CON modifier. Stacks with shields." },
{ "id": "hibernation_recovery", "name": "Hibernation Recovery", "description": "On a long rest, regain all spent hit dice (instead of half). Sleeping for 24 consecutive hours recovers from one level of exhaustion, one disease, or one poison." }
],
"detriments": [
{ "id": "ponderous", "name": "Ponderous", "description": "Base movement speed is 25 ft. Disadvantage on DEX saves against area effects (you can't dodge — you're too big). Initiative rolls are made with -2." },
{ "id": "infrastructure_problem","name": "Infrastructure Problem","description": "Doorways, chairs, vehicles, and beds built for Medium creatures are uncomfortable or unusable. Disadvantage on social checks in spaces not built for your size." }
]
},
{
"id": "cervidae",
"name": "Cervidae",
"kind": "prey",
"description": "\"We were the first to know that every shadow could be death. That knowledge made us sharper than any claw.\"\n\nDeer-folk, elk-folk, moose-folk — defined by hypervigilance, explosive athleticism, and a cultural philosophy forged in millennia of being hunted. They have turned survival into a technology, a philosophy, and occasionally a weapon.",
"ability_mods": { "DEX": 1, "WIS": 1 },
"languages": ["common", "cervid"],
"traits": [
{ "id": "prey_sense", "name": "Prey Sense", "description": "You cannot be surprised. When you roll initiative, you add your WIS modifier a second time. Advantage on WIS (Perception) checks to detect hidden or approaching creatures." },
{ "id": "flight_response", "name": "Flight Response", "description": "Reaction: when a hostile creature moves within 5 ft. of you, move up to half your speed without provoking opportunity attacks. Uses equal to proficiency bonus per long rest." },
{ "id": "pivoting_ears", "name": "Pivoting Ears", "description": "Your ears rotate independently, providing 360-degree auditory awareness. Advantage on Perception checks that rely on hearing, and you cannot be flanked." }
],
"detriments": [
{ "id": "freeze_response", "name": "Freeze Response", "description": "The first time you take damage in combat from a source you didn't detect beforehand, WIS save (DC 13) or be stunned until the end of your next turn." },
{ "id": "predator_aversion", "name": "Predator Aversion", "description": "In the presence of Canidae, Felidae, or Mustelidae displaying aggressive body language, disadvantage on CHA checks." }
]
},
{
"id": "bovidae",
"name": "Bovidae",
"kind": "prey",
"description": "\"The wall holds because we hold it. When the wolves came, we didn't run. We stood, shoulder to shoulder, horns out, and we held.\"\n\nBull-folk, bison-folk, ram-folk, goat-folk — the heaviest prey Clade, defined by communal endurance, raw physical power, and a cultural identity built on the principle that strength means staying.",
"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",
"description": "\"We don't fight. We outrun, outbreed, outthink, and outlast. You want to call that weakness? We'll be here when you're gone.\"\n\nThe smallest common prey Clade — rabbit-folk and hare-folk — surviving through explosive speed, prodigious reproduction, community networks, and a cultural genius for making themselves indispensable. They dominate medicine, communications, logistics, and information brokering.",
"ability_mods": { "STR": -1, "DEX": 2 },
"languages": ["common", "leporid"],
"traits": [
{ "id": "burst_speed", "name": "Burst Speed", "description": "Base movement speed is 40 ft. As a bonus action, you can Dash (potential 80 ft. of movement in a turn). Uses equal to proficiency bonus per long rest." },
{ "id": "tremor_sense", "name": "Tremor Sense", "description": "Your powerful hind legs sense vibrations through the ground. Detect moving creatures within 30 ft. even if you cannot see or hear them, as long as both you and the creature are on the same surface." },
{ "id": "lucky_feet", "name": "Lucky Feet", "description": "When you roll a 1 on a saving throw, you may reroll and must use the new result. Once per short rest." }
],
"detriments": [
{ "id": "fragile_build", "name": "Fragile Build", "description": "Hit point maximum reduced by 2 per level (minimum 1 HP per level). Hits that other species shrug off can be life-threatening." },
{ "id": "panic_cascade", "name": "Panic Cascade", "description": "When you fail a WIS save against fear by 5 or more, you must spend your next turn Dashing directly away from the source. Repeat the save at the end of each turn. Allied Leporidae within 15 ft. of you must also make the save." }
]
}
]