diff --git a/src/pf1e_simulator/conditions.py b/src/pf1e_simulator/conditions.py index 233a33a..de5f99e 100644 --- a/src/pf1e_simulator/conditions.py +++ b/src/pf1e_simulator/conditions.py @@ -99,12 +99,15 @@ SICKENED = Condition( ) # Fatigued: -2 STR, -2 DEX; can't run or charge (CRB) -# Approximation: -1 attack (STR/DEX), -1 damage (STR) +# Approximation: -1 attack, -1 damage (STR/DEX), -1 AC and -1 Ref (the -2 DEX +# = -1 to each, same modelling as exhausted/entangled). FATIGUED = Condition( name="fatigued", modifiers=( StatModifier(target="attack", value=-1), StatModifier(target="damage", value=-1), + StatModifier(target="ac", value=-1), + StatModifier(target="ref", value=-1), ), cant_charge=True, ) diff --git a/tests/test_conditions.py b/tests/test_conditions.py index c1175c7..e18501a 100644 --- a/tests/test_conditions.py +++ b/tests/test_conditions.py @@ -138,6 +138,14 @@ class TestConditionData: def test_fatigued_flags(self) -> None: assert FATIGUED.cant_charge is True + def test_fatigued_minus2_dex_gives_minus1_ac_and_ref(self) -> None: + # SRD: fatigued takes -2 to Dexterity => -1 AC and -1 Reflex. + mods = {m.target: m.value for m in FATIGUED.modifiers} + assert mods["attack"] == -1 + assert mods["damage"] == -1 + assert mods["ac"] == -1 + assert mods["ref"] == -1 + def test_flat_footed_flags(self) -> None: assert FLAT_FOOTED.denies_dex_to_ac is True assert FLAT_FOOTED.cant_aoo is True