c88d8fd6f4
Rename monster.py → combatant.py with _KNOWN_FEATS lookup table that resolves feat name strings to AbilitySpec constants (Power Attack, Iron Will, Toughness, Weapon Focus, etc.). Unknown feats produce minimal AbilitySpec (data preserved for future implementation). Migrate all 8 PC JSONs (data/pcs/) with complete feat/spell lists extracted from Foundry sheets — including traits, racial abilities, and all spells. Monsters (goblin, orc) unchanged (no feats/spells). Update all imports, add backward-compatible aliases (load_monster, MonsterLoadError), update CLI to use load_combatant. Gate: 377 tests, ruff clean, basedpyright clean.
111 lines
2.0 KiB
JSON
111 lines
2.0 KiB
JSON
{
|
|
"name": "Nairda Guisenda",
|
|
"level": 4,
|
|
"size": "Medium",
|
|
"abilities": {
|
|
"str_score": 9,
|
|
"dex_score": 16,
|
|
"con_score": 14,
|
|
"int_score": 21,
|
|
"wis_score": 14,
|
|
"cha_score": 12
|
|
},
|
|
"hp_max": 31,
|
|
"ac": {
|
|
"total": 13,
|
|
"touch": 13,
|
|
"flat_footed": 10
|
|
},
|
|
"bab": 3,
|
|
"initiative_mod": 3,
|
|
"speed_land_ft": 30,
|
|
"saves": {
|
|
"fort": 4,
|
|
"ref": 5,
|
|
"will": 7
|
|
},
|
|
"attacks": [
|
|
{
|
|
"name": "Coup à mains nues (aucune arme encodée)",
|
|
"kind": "melee",
|
|
"attack_bonus": 2,
|
|
"damage": [
|
|
{
|
|
"formula": "1d3",
|
|
"types": [
|
|
"bludgeoning"
|
|
]
|
|
}
|
|
],
|
|
"damage_bonus": -1,
|
|
"crit_range": 20,
|
|
"crit_mult": 2,
|
|
"reach_ft": 5,
|
|
"count": 1
|
|
},
|
|
{
|
|
"name": "Attaque à distance (aucune arme encodée)",
|
|
"kind": "ranged",
|
|
"attack_bonus": 6,
|
|
"damage": [
|
|
{
|
|
"formula": "1d4",
|
|
"types": [
|
|
"piercing"
|
|
]
|
|
}
|
|
],
|
|
"damage_bonus": 0,
|
|
"crit_range": 20,
|
|
"crit_mult": 2,
|
|
"reach_ft": 5,
|
|
"count": 1,
|
|
"range_increment_ft": 10
|
|
}
|
|
],
|
|
"source": "fiches_personnages/nairda_sheet.json",
|
|
"features": [
|
|
"Brew Potion",
|
|
"Craft Wondrous Item",
|
|
"Extra Hex",
|
|
"Eschew Materials",
|
|
"Half-Forgotten Secrets (Dhampir; Ajibachana)",
|
|
"Orange - Lazy Ass",
|
|
"Pingre"
|
|
],
|
|
"spells": [
|
|
"Arcane Mark",
|
|
"Bleed",
|
|
"Dancing Lights",
|
|
"Daze",
|
|
"Detect Fiendish Presence",
|
|
"Detect Magic",
|
|
"Detect Poison",
|
|
"Grasp",
|
|
"Guidance",
|
|
"Light",
|
|
"Mending",
|
|
"Message",
|
|
"Putrefy Food and Drink",
|
|
"Read Magic",
|
|
"Resistance",
|
|
"Spark",
|
|
"Stabilize",
|
|
"Touch of Fatigue",
|
|
"Comprehend Languages",
|
|
"Charm Person",
|
|
"Ill Omen",
|
|
"Inflict Light Wounds",
|
|
"Sleep",
|
|
"Hex Vulnerability",
|
|
"Deja Vu",
|
|
"Unseen Servant",
|
|
"Ray of Enfeeblement",
|
|
"Web",
|
|
"Blindness/Deafness",
|
|
"Ice Slick",
|
|
"Darkness",
|
|
"Flurry of Snowballs"
|
|
]
|
|
}
|