fix(rules): Exalted of the Society grants +1 channel energy/day via resource_grants; Fortified Drinker becomes documented no-op (SRD: +2 saves vs mind-affecting after drinking, alcohol state not modeled)

This commit is contained in:
2026-09-19 10:37:23 +02:00
parent 1a68dfa6db
commit d0db208610
5 changed files with 79 additions and 11 deletions
+26
View File
@@ -13,6 +13,8 @@ from pathlib import Path
from pf1e_simulator.abilities import (
COMBAT_REFLEXES,
EXALTED_SOCIETY,
FORTIFIED_DRINKER,
MOUNTED_COMBAT,
POINT_BLANK_SHOT,
)
@@ -227,3 +229,27 @@ def test_every_pc_feature_resolves_to_expected_spec() -> None:
def test_mapping_table_covers_exactly_the_8_pc_feats() -> None:
assert set(_EXPECTED_RESOLUTION) == _pcs_features()
# ── SRD conformance: corrected feat/trait effects ─────────────────────────────
def test_exalted_of_the_society_grants_one_extra_channel_use() -> None:
"""SRD (Faction Guide trait): "You may channel energy one additional time
per day." The grant rides resource_grants and the loader merges it into
the combatant's channel_energy pool (oni sheet base 6 -> 7)."""
assert EXALTED_SOCIETY.resource_grants == (("channel_energy", 1),)
assert not any(
e.target in ("knowledge_local", "knowledge_nobility")
for e in EXALTED_SOCIETY.effects
)
oni = load_combatant(Path("data/pcs/oni.json"))
assert oni.resources["channel_energy"] == 7
def test_fortified_drinker_is_inert_documented_noop() -> None:
"""SRD: +2 saves vs mind-affecting for 1 hour after drinking alcohol. The
alcohol trigger is not modeled -> inert no-op (the old dead "+2 Fort vs
poison, condition='alcohol'" modifier is gone)."""
assert FORTIFIED_DRINKER.effects == ()
assert "not modeled" in FORTIFIED_DRINKER.source_detail