fix(rules): Esha sylph traits and invented names to documented traced no-ops (Whispering Wind/Like the Wind/Breeze-Kissed are real sylph racial traits whose SRD effects the engine cannot resolve - the coded bonuses were fabricated; Fey-touched and Pingre are not PF1e features and move to _NOOP_FEATS; descriptor gating stays covered via local probe specs)

This commit is contained in:
2026-09-19 12:37:32 +02:00
parent 2dd3fefa1d
commit 7262568959
3 changed files with 59 additions and 49 deletions
+7 -6
View File
@@ -46,7 +46,6 @@ from pf1e_simulator.abilities import (
EXTRA_HEX,
EXTREMELY_FASHIONABLE,
FATES_FAVORED,
FEY_TOUCHED,
FOCUSED_STUDY,
FORTIFIED_DRINKER,
FRIENDLY_FACE,
@@ -62,7 +61,6 @@ from pf1e_simulator.abilities import (
LONELY,
MAW_OR_CLAW,
MOUNTED_COMBAT,
PINGRE,
POINT_BLANK_SHOT,
POWER_ATTACK,
PRECISE_SHOT,
@@ -110,7 +108,6 @@ _KNOWN_FEATS: dict[str, AbilitySpec] = {
"breeze-kissed": BREEZE_KISSED,
"like the wind": LIKE_THE_WIND,
"friendly face": FRIENDLY_FACE,
"fey-touched": FEY_TOUCHED,
"combat reflexes": COMBAT_REFLEXES,
"armor proficiency (light)": ARMOR_PROFICIENCY_LIGHT,
"armor proficiency (medium)": ARMOR_PROFICIENCY_MEDIUM,
@@ -128,7 +125,6 @@ _KNOWN_FEATS: dict[str, AbilitySpec] = {
"extra hex": EXTRA_HEX,
"eschew materials": ESCHEW_MATERIALS,
"half-forgotten secrets (dhampir; ajibachana)": HALF_FORGOTTEN_SECRETS,
"pingre": PINGRE,
"summon good monster": SUMMON_GOOD_MONSTER,
"sacred summons": SACRED_SUMS,
"selective channeling": SELECTIVE_CHANNELING,
@@ -147,13 +143,18 @@ _KNOWN_FEATS: dict[str, AbilitySpec] = {
"focused study (trait racial humain \u2014 remplace le bonus feat)": FOCUSED_STUDY,
}
# Feat names with no combat-mechanical definition (flavor / race descriptors / jokes).
# These are resolved to traced no-ops so the loader never silently drops a name.
# Feat names with no combat-mechanical definition (flavor / race descriptors /
# jokes). These are resolved to traced no-ops so the loader never silently
# drops a name. "Fey-touched" (Harvie's sheet) and "Pingre" (Nairda's sheet,
# French for "miser") are not PF1e features; the SRD has no entry under those
# names, so no effect can be attributed to them.
_NOOP_FEATS: frozenset[str] = frozenset({
"6. vert - yes mistress",
"animal (race)",
"drake (race)",
"fey-touched",
"orange - lazy ass",
"pingre",
"plot armor",
})