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:
@@ -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.)" }
|
||||
}
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user