fix(rules): forbid a diagonal 5-foot step past a corner
PF1e (SRD Measuring Distance): "You can't move diagonally past a corner (even by taking a 5-foot step)." _step5_to now rejects a diagonal destination whose two flanking squares are not both passable, reusing Grid.diagonal_allowed - the same corner rule the regular movement already applies. 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:
@@ -5777,7 +5777,11 @@ class CombatEngine:
|
||||
return ActionResult(kind=kind, ok=True, reason=_REASON_OK)
|
||||
adjacent = self._grid.distance(state.pos, destination) == 1
|
||||
free = self._cells_free(self._footprint_at(destination, state), state)
|
||||
if not adjacent or not free:
|
||||
# PF1e (SRD Measuring Distance): "You can't move diagonally past a
|
||||
# corner (even by taking a 5-foot step)."
|
||||
diagonal = state.pos[0] != destination[0] and state.pos[1] != destination[1]
|
||||
corner_clear = not diagonal or self._grid.diagonal_allowed(state.pos, destination)
|
||||
if not adjacent or not free or not corner_clear:
|
||||
self._log(
|
||||
f"round {self._current_round} {state.combatant.id}: "
|
||||
f"{kind} rejected ({_REASON_UNREACHABLE_DESTINATION})"
|
||||
|
||||
Reference in New Issue
Block a user