fix(rules): harvie - Wis 14 per sheet, Talons primary +2 1d4 (2x), Bite secondary +2 with runtime -5

This commit is contained in:
2026-09-16 21:59:29 +02:00
parent feaab5ee41
commit 1c94d48803
2 changed files with 55 additions and 44 deletions
+44 -43
View File
@@ -7,7 +7,7 @@
"dex_score": 15, "dex_score": 15,
"con_score": 12, "con_score": 12,
"int_score": 2, "int_score": 2,
"wis_score": 12, "wis_score": 14,
"cha_score": 6 "cha_score": 6
}, },
"hp_max": 15, "hp_max": 15,
@@ -25,48 +25,49 @@
"ref": 5, "ref": 5,
"will": 2 "will": 2
}, },
"attacks": [ "attacks": [
{ {
"id": "harvie:bite", "id": "harvie:bite",
"name": "Bite", "name": "Bite",
"kind": "melee", "kind": "melee",
"attack_bonus": 3, "attack_bonus": 2,
"damage": [ "damage": [
{ {
"formula": "1d4", "formula": "1d4",
"types": [ "types": [
"piercing" "piercing"
] ]
} }
], ],
"damage_bonus": 0, "damage_bonus": 0,
"crit_range": 20, "crit_range": 20,
"crit_mult": 2, "crit_mult": 2,
"reach_ft": 5, "reach_ft": 5,
"count": 1, "count": 1,
"natural": true "natural": true,
}, "secondary": true
{ },
"id": "harvie:claw", {
"name": "Claw", "id": "harvie:talons",
"kind": "melee", "name": "Talons",
"attack_bonus": 3, "kind": "melee",
"damage": [ "attack_bonus": 2,
{ "damage": [
"formula": "1d3", {
"types": [ "formula": "1d4",
"slashing" "types": [
] "slashing"
} ]
], }
"damage_bonus": 0, ],
"crit_range": 20, "damage_bonus": 0,
"crit_mult": 2, "crit_range": 20,
"reach_ft": 5, "crit_mult": 2,
"count": 1, "reach_ft": 5,
"natural": true "count": 2,
} "natural": true
], }
],
"source": "fiches_personnages/harvie_sheet.json", "source": "fiches_personnages/harvie_sheet.json",
"features": [ "features": [
"Friendly Face", "Friendly Face",
+11 -1
View File
@@ -7,7 +7,7 @@ from pathlib import Path
import pytest import pytest
from pf1e_simulator.dice import DiceExpr from pf1e_simulator.dice import DiceExpr, parse_dice
from pf1e_simulator.loaders.combatant import CombatantLoadError, load_combatant from pf1e_simulator.loaders.combatant import CombatantLoadError, load_combatant
MONSTERS_DIR = Path(__file__).resolve().parents[1] / "data" / "monsters" MONSTERS_DIR = Path(__file__).resolve().parents[1] / "data" / "monsters"
@@ -42,6 +42,16 @@ def test_pc_sheets_golden_spots() -> None:
harvie = load_combatant(PCS_DIR / "harvie.json") harvie = load_combatant(PCS_DIR / "harvie.json")
assert harvie.size == "Small" assert harvie.size == "Small"
assert harvie.speed_fly_ft == 80 assert harvie.speed_fly_ft == 80
# Sheet pins (fiches_personnages/harvie_sheet.json): Wis 14 (Will +2
# implies it), "2x Talons" primary +2 1d4 slashing, Bite secondary -3
# 1d4 piercing (stored as base +2 with the engine's runtime -5).
assert harvie.abilities.wis_score == 14
bite, talons = harvie.attacks
assert (bite.name, bite.attack_bonus, bite.secondary) == ("Bite", 2, True)
assert bite.damage[0].formula == parse_dice("1d4")
assert (talons.name, talons.attack_bonus, talons.count) == ("Talons", 2, 2)
assert talons.damage[0].formula == parse_dice("1d4")
assert talons.damage[0].types == ["slashing"]
oni = load_combatant(PCS_DIR / "oni.json") oni = load_combatant(PCS_DIR / "oni.json")
assert "Pioche" in oni.notes assert "Pioche" in oni.notes