fix(rules): correct P2/P3 PF1e conformance bugs (flanking, touch, blinded, disabled, death, maneuvers, DR, sneak)
This commit is contained in:
@@ -63,6 +63,9 @@ def make_grid() -> Grid:
|
||||
|
||||
|
||||
def make_engine(queue: list[int], states: list[CombatantState]) -> CombatEngine:
|
||||
# A maneuver provokes an AoO from the (threatening) target BEFORE the CMB
|
||||
# check (B13 conformance): the scripted queues carry a leading natural 1
|
||||
# so the provoking attack always misses.
|
||||
return CombatEngine(ScriptedRng(queue), make_grid(), states)
|
||||
|
||||
|
||||
@@ -77,7 +80,7 @@ def test_dirty_trick_blinded() -> None:
|
||||
b_spec = make_combatant("b")
|
||||
a = make_state(a_spec, "players", (1, 1))
|
||||
b = make_state(b_spec, "monsters", (1, 2))
|
||||
engine = make_engine([12], [a, b])
|
||||
engine = make_engine([1, 12], [a, b])
|
||||
engine._execute_maneuver(a, b, "dirty_trick", trick_condition="blinded")
|
||||
assert _condition_names(b) == ["blinded"]
|
||||
|
||||
@@ -89,7 +92,7 @@ def test_dirty_trick_default_dazzled() -> None:
|
||||
b_spec = make_combatant("b")
|
||||
a = make_state(a_spec, "players", (1, 1))
|
||||
b = make_state(b_spec, "monsters", (1, 2))
|
||||
engine = make_engine([12], [a, b])
|
||||
engine = make_engine([1, 12], [a, b])
|
||||
engine._execute_maneuver(a, b, "dirty_trick")
|
||||
assert _condition_names(b) == ["dazzled"]
|
||||
|
||||
@@ -101,7 +104,7 @@ def test_dirty_trick_deafened() -> None:
|
||||
b_spec = make_combatant("b")
|
||||
a = make_state(a_spec, "players", (1, 1))
|
||||
b = make_state(b_spec, "monsters", (1, 2))
|
||||
engine = make_engine([12], [a, b])
|
||||
engine = make_engine([1, 12], [a, b])
|
||||
engine._execute_maneuver(a, b, "dirty_trick", trick_condition="deafened")
|
||||
assert _condition_names(b) == ["deafened"]
|
||||
|
||||
@@ -111,7 +114,7 @@ def test_dirty_trick_entangled() -> None:
|
||||
b_spec = make_combatant("b")
|
||||
a = make_state(a_spec, "players", (1, 1))
|
||||
b = make_state(b_spec, "monsters", (1, 2))
|
||||
engine = make_engine([12], [a, b])
|
||||
engine = make_engine([1, 12], [a, b])
|
||||
engine._execute_maneuver(a, b, "dirty_trick", trick_condition="entangled")
|
||||
assert _condition_names(b) == ["entangled"]
|
||||
|
||||
@@ -121,7 +124,7 @@ def test_dirty_trick_nauseated() -> None:
|
||||
b_spec = make_combatant("b")
|
||||
a = make_state(a_spec, "players", (1, 1))
|
||||
b = make_state(b_spec, "monsters", (1, 2))
|
||||
engine = make_engine([12], [a, b])
|
||||
engine = make_engine([1, 12], [a, b])
|
||||
engine._execute_maneuver(a, b, "dirty_trick", trick_condition="nauseated")
|
||||
assert _condition_names(b) == ["nauseated"]
|
||||
|
||||
@@ -133,7 +136,7 @@ def test_dirty_trick_failure_no_condition() -> None:
|
||||
b_spec = make_combatant("b")
|
||||
a = make_state(a_spec, "players", (1, 1))
|
||||
b = make_state(b_spec, "monsters", (1, 2))
|
||||
engine = make_engine([1], [a, b]) # roll 1 -> automatic failure
|
||||
engine = make_engine([1, 1], [a, b]) # AoO miss, then roll 1 -> automatic failure
|
||||
engine._execute_maneuver(a, b, "dirty_trick", trick_condition="blinded")
|
||||
assert _condition_names(b) == []
|
||||
|
||||
|
||||
Reference in New Issue
Block a user