fix(rules): Friendly Face and Extremely Fashionable become documented no-ops (SRD: animal attitude +2 steps and +1 Bluff/Diplomacy/Intimidate in fine clothing - neither attitude nor clothing state is modeled; old +1/+4 Diplomacy bonuses were wrong)

This commit is contained in:
2026-09-19 10:44:25 +02:00
parent 6d0ee1bfeb
commit a5ebbecad8
4 changed files with 31 additions and 5 deletions
+1
View File
@@ -69,6 +69,7 @@
} }
], ],
"source": "fiches_personnages/harvie_sheet.json", "source": "fiches_personnages/harvie_sheet.json",
"notes": "Feat : 'Friendly Face' est un no-op documenté (attitude initiale des animaux +2 pas, système d'attitude non modélisé).",
"features": [ "features": [
"Friendly Face", "Friendly Face",
"Fey-touched", "Fey-touched",
+1 -1
View File
@@ -92,7 +92,7 @@
} }
], ],
"source": "fiches_personnages/oni_sheet.json", "source": "fiches_personnages/oni_sheet.json",
"notes": "Armes placeholder Foundry sans dégâts encodés omises : 'une Pioche' (non maîtrisée) et 'Weapon' (à remplacer par la vraie arme). Trait : 'Exalted of the Society' accorde +1 canalisation d'énergie/jour (channel_energy 6 -> 7, fusionné par le chargeur).", "notes": "Armes placeholder Foundry sans dégâts encodés omises : 'une Pioche' (non maîtrisée) et 'Weapon' (à remplacer par la vraie arme). Traits : 'Exalted of the Society' accorde +1 canalisation d'énergie/jour (channel_energy 6 -> 7, fusionné par le chargeur) ; 'Extremely Fashionable' est un no-op documenté (+1 Bluff/Diplomacy/Intimidate en habits fins, état vestimentaire non modélisé).",
"features": [ "features": [
"Summon Good Monster", "Summon Good Monster",
"Sacred Summons", "Sacred Summons",
+11 -4
View File
@@ -222,11 +222,14 @@ LIKE_THE_WIND = AbilitySpec(
effects=(StatModifier(target="speed_ft", value=10),), effects=(StatModifier(target="speed_ft", value=10),),
) )
# Friendly Face: +1 trait bonus on Diplomacy checks # Friendly Face (feat, Animal Archive): "Other animals of roughly the same
# kind as you have their starting attitudes toward you improved by two
# steps." Attitude/social state is not modeled by the combat engine ->
# documented traced no-op (the previous "+1 diplomacy" was the wrong effect).
FRIENDLY_FACE = AbilitySpec( FRIENDLY_FACE = AbilitySpec(
name="Friendly Face", name="Friendly Face",
category="trait", category="trait",
effects=(StatModifier(target="diplomacy", value=1),), source_detail="feat (not modeled: animal initial attitude +2 steps)",
) )
# Fey-touched: +1 trait bonus on saves vs. fey effects # Fey-touched: +1 trait bonus on saves vs. fey effects
@@ -359,11 +362,15 @@ SACRED_SUMS = AbilitySpec(name="Sacred Summons", category="feat")
# Selective Channeling: exclude targets from channel energy # Selective Channeling: exclude targets from channel energy
SELECTIVE_CHANNELING = AbilitySpec(name="Selective Channeling", category="feat") SELECTIVE_CHANNELING = AbilitySpec(name="Selective Channeling", category="feat")
# Extremely Fashionable: +4 trait bonus on Diplomacy checks # Extremely Fashionable (Faction trait, Pathfinder Society): "+1 trait bonus
# on Bluff, Diplomacy, and Intimidate checks while wearing fine clothing."
# Clothing state is not modeled by the engine and the bonus is conditional on
# it -> documented traced no-op (the previous flat "+4 diplomacy" was the
# wrong value and ignored the clothing condition).
EXTREMELY_FASHIONABLE = AbilitySpec( EXTREMELY_FASHIONABLE = AbilitySpec(
name="Extremely Fashionable", name="Extremely Fashionable",
category="trait", category="trait",
effects=(StatModifier(target="diplomacy", value=4),), source_detail="trait (not modeled: +1 Bluff/Diplomacy/Intimidate in fine clothing)",
) )
# Exalted of the Society (Basic Faith trait, Faction Guide; requires Cleric + # Exalted of the Society (Basic Faith trait, Faction Guide; requires Cleric +
+18
View File
@@ -16,7 +16,9 @@ from pf1e_simulator.abilities import (
BORN_DAMNED, BORN_DAMNED,
COMBAT_REFLEXES, COMBAT_REFLEXES,
EXALTED_SOCIETY, EXALTED_SOCIETY,
EXTREMELY_FASHIONABLE,
FORTIFIED_DRINKER, FORTIFIED_DRINKER,
FRIENDLY_FACE,
MOUNTED_COMBAT, MOUNTED_COMBAT,
POINT_BLANK_SHOT, POINT_BLANK_SHOT,
) )
@@ -272,3 +274,19 @@ def test_axe_to_grind_is_inert_documented_noop() -> None:
the wrong effect; the SRD bonus is not tied to axes).""" the wrong effect; the SRD bonus is not tied to axes)."""
assert AXE_TO_GRIND.effects == () assert AXE_TO_GRIND.effects == ()
assert "not modeled" in AXE_TO_GRIND.source_detail assert "not modeled" in AXE_TO_GRIND.source_detail
def test_friendly_face_is_inert_documented_noop() -> None:
"""SRD (Animal Archive feat): animals of the same kind have their starting
attitude toward you improved by two steps. No attitude model -> inert
no-op (old +1 Diplomacy was the wrong effect)."""
assert FRIENDLY_FACE.effects == ()
assert "not modeled" in FRIENDLY_FACE.source_detail
def test_extremely_fashionable_is_inert_documented_noop() -> None:
"""SRD (PFS faction trait): +1 trait bonus on Bluff, Diplomacy and
Intimidate while wearing fine clothing. Clothing state not modeled ->
inert no-op (old flat +4 Diplomacy was the wrong value and unconditional)."""
assert EXTREMELY_FASHIONABLE.effects == ()
assert "not modeled" in EXTREMELY_FASHIONABLE.source_detail