fix(rules): scale the bull rush push distance with the margin

PF1e (SRD Bull Rush): "your target is pushed back 5 feet. For every 5 by which your attack exceeds your opponent's CMD you can push the target back an additional 5 feet." _bull_rush_push (and the explicit-direction branch) now walk 1 + margin//5 cells, stopping at the first obstacle; a natural-20 auto-success below CMD floors the margin at 0 (base push only). README updated.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-09-12 09:27:03 +02:00
parent 2f00d76ecc
commit 346e300eab
4 changed files with 67 additions and 13 deletions
+1 -1
View File
@@ -534,7 +534,7 @@ class TestBullRushLarge:
t_state = make_state(target, "e", (3, 3))
engine = make_engine([a_state, t_state])
# Push direction: away from attacker (3,1) -> (3,3) means push right
result = engine._bull_rush_push(a_state, t_state)
result = engine._bull_rush_push(a_state, t_state, 1)
if result:
# Target moved 1 cell right
assert t_state.pos == (3, 4)