fix(rules): trait and racial are non-stacking bonus types (APG Traits, CRB Combining Magic Effects)
This commit is contained in:
+19
-16
@@ -19,20 +19,6 @@ class TestStackingTypes:
|
||||
]
|
||||
assert resolve_modifiers(mods) == 3
|
||||
|
||||
def test_two_racial_bonus_stack(self) -> None:
|
||||
mods = [
|
||||
StatModifier("save", 1, "racial"),
|
||||
StatModifier("save", 1, "racial"),
|
||||
]
|
||||
assert resolve_modifiers(mods) == 2
|
||||
|
||||
def test_two_trait_bonus_stack(self) -> None:
|
||||
mods = [
|
||||
StatModifier("attack", 1, "trait"),
|
||||
StatModifier("attack", 1, "trait"),
|
||||
]
|
||||
assert resolve_modifiers(mods) == 2
|
||||
|
||||
def test_two_untyped_bonus_stack(self) -> None:
|
||||
mods = [
|
||||
StatModifier("attack", 1),
|
||||
@@ -43,8 +29,8 @@ class TestStackingTypes:
|
||||
def test_mixed_stacking_types_all_sum(self) -> None:
|
||||
mods = [
|
||||
StatModifier("ac", 1, "dodge"),
|
||||
StatModifier("ac", 2, "racial"),
|
||||
StatModifier("ac", 1, "trait"),
|
||||
StatModifier("ac", 2, "dodge"),
|
||||
StatModifier("ac", 1),
|
||||
StatModifier("ac", 1),
|
||||
]
|
||||
assert resolve_modifiers(mods) == 5
|
||||
@@ -101,6 +87,23 @@ class TestNonStackingTypes:
|
||||
]
|
||||
assert resolve_modifiers(mods) == 2
|
||||
|
||||
def test_two_racial_bonus_do_not_stack(self) -> None:
|
||||
# CRB "Combining Magic Effects": "two bonuses of the same type don't
|
||||
# stack" — racial is a named type.
|
||||
mods = [
|
||||
StatModifier("save", 1, "racial"),
|
||||
StatModifier("save", 2, "racial"),
|
||||
]
|
||||
assert resolve_modifiers(mods) == 2
|
||||
|
||||
def test_two_trait_bonus_do_not_stack(self) -> None:
|
||||
# APG "Traits": "Trait bonuses do not stack".
|
||||
mods = [
|
||||
StatModifier("attack", 1, "trait"),
|
||||
StatModifier("attack", 2, "trait"),
|
||||
]
|
||||
assert resolve_modifiers(mods) == 2
|
||||
|
||||
|
||||
# ── Penalties ─────────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
Reference in New Issue
Block a user