From b9477a2ba1e5931f0e95e5473260d54f7057b474 Mon Sep 17 00:00:00 2001 From: ctan Date: Wed, 16 Sep 2026 22:02:10 +0200 Subject: [PATCH] fix(rules): ierlieth - bite damage_bonus -1 per sheet STR, add secondary Tail (stored +4, runtime -5 = sheet -1) --- data/pcs/ierlieth.json | 37 ++++++++++++++++++++++++++++-------- tests/test_monster_loader.py | 11 +++++++++++ 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/data/pcs/ierlieth.json b/data/pcs/ierlieth.json index f0cbff2..7eba5e9 100644 --- a/data/pcs/ierlieth.json +++ b/data/pcs/ierlieth.json @@ -39,14 +39,35 @@ ] } ], - "damage_bonus": 1, - "crit_range": 20, - "crit_mult": 2, - "reach_ft": 5, - "count": 1, - "natural": true - } - ], + "damage_bonus": -1, + "crit_range": 20, + "crit_mult": 2, + "reach_ft": 5, + "count": 1, + "natural": true + }, + { + "id": "ierlieth:tail", + "name": "Tail", + "kind": "melee", + "attack_bonus": 4, + "damage": [ + { + "formula": "1d4", + "types": [ + "bludgeoning" + ] + } + ], + "damage_bonus": 0, + "crit_range": 20, + "crit_mult": 2, + "reach_ft": 5, + "count": 1, + "natural": true, + "secondary": true + } + ], "source": "fiches_personnages/ierlieth_sheet.json", "features": [ "Drake (race)", diff --git a/tests/test_monster_loader.py b/tests/test_monster_loader.py index 2de0fd4..4ca9026 100644 --- a/tests/test_monster_loader.py +++ b/tests/test_monster_loader.py @@ -53,6 +53,17 @@ def test_pc_sheets_golden_spots() -> None: assert talons.damage[0].formula == parse_dice("1d4") assert talons.damage[0].types == ["slashing"] + # Sheet pins (fiches_personnages/ierlieth_sheet.json): STR 8 (-1) rides the + # bite damage, and the secondary Tail prints -1 = stored +4 with the + # engine's runtime -5. + ierlieth = load_combatant(PCS_DIR / "ierlieth.json") + i_bite, i_tail = ierlieth.attacks + assert i_bite.damage_bonus == -1 + assert (i_tail.name, i_tail.attack_bonus, i_tail.secondary) == ("Tail", 4, True) + assert i_tail.damage[0].formula == parse_dice("1d4") + assert i_tail.damage[0].types == ["bludgeoning"] + assert i_tail.damage_bonus == 0 + oni = load_combatant(PCS_DIR / "oni.json") assert "Pioche" in oni.notes assert "Weapon" in oni.notes