fix(rules): lich stat block aligned to the KB entry - bestiary/lich.md gives hp 111 (11d6+55 plus 15 false life), Str 10, Int 22, Init +2 and 'Aura fear (60-ft. radius, DC 18)'; the JSON carried scenario-tuned 100 hp / Str 12 / Int 20 / Init +6 and the engine's feature-keyed aura constants carried 30 ft / DC 22 (BAB/touch/AC/saves/CON already conformed); the sim's own spell list is kept (the KB's prepared list includes spells outside data/spells/) and the choice is documented in the JSON notes and the README; golden tammara-vs-lich re-pinned for the two SRD-correct line changes (initiative d20=10+2=12 from the KB +2, Magic Missile DC17 = 10+1+6 from Int 22; damage unchanged - the 75 ft deployment distance stays beyond even the widened 60 ft aura, so no save die is consumed); +2 aura range tests (75 ft outside, 60 ft inside)

This commit is contained in:
2026-09-19 23:05:25 +02:00
parent 5fe2b72339
commit 4f8a131ba0
6 changed files with 79 additions and 19 deletions
+2 -2
View File
@@ -378,7 +378,7 @@ def test_fear_aura_save_carries_fear_descriptor() -> None:
foe = make_combatant("foe", will=0, features=(_FEAR_SAVE_PROBE,))
lich_state = make_state(lich, "monsters", (1, 1))
foe_state = make_state(foe, "players", (1, 2)) # 5 ft, inside aura range
engine = make_engine([21], [lich_state, foe_state]) # 21 + 0 + 1 = 22 >= DC 22
engine = make_engine([17], [lich_state, foe_state]) # 17 + 0 + 1 = 18 >= DC 18
engine._apply_fear_aura(lich_state)
assert not any(ac.condition.name == "shaken" for ac in foe_state.active_conditions)
@@ -389,7 +389,7 @@ def test_fear_aura_without_fear_bonus_fails_save() -> None:
foe = make_combatant("foe", will=0)
lich_state = make_state(lich, "monsters", (1, 1))
foe_state = make_state(foe, "players", (1, 2))
engine = make_engine([21], [lich_state, foe_state]) # 21 < DC 22
engine = make_engine([17], [lich_state, foe_state]) # 17 < DC 18
engine._apply_fear_aura(lich_state)
assert any(ac.condition.name == "shaken" for ac in foe_state.active_conditions)