fix(rules): document the burst center-to-center convention as a deferred SRD approximation - the SRD (aiming-a-spell.md) measures a burst from a grid INTERSECTION with the far-edge rule ('count from intersection to intersection'; a square is inside only 'if the far edge of a square is within the spell's area'), but the engine's burst origin is a CELL (target_pos, centered_on_caster, resolved target) counted center-to-center 5-10-5 in _creatures_in_range; matching RAW exactly needs an intersection coordinate added to AreaEffect/Action.target_pos/the observation area snapshot contract plus a per-caster corner choice (the far-edge boundary result depends entirely on which of the cell's four corners is the origin), so it is DEFERRED with a precise explanation in areas.py and a pointer from _creatures_in_range; no behavior change, golden untouched

This commit is contained in:
2026-09-20 00:16:18 +02:00
parent e6021a6dda
commit b775d46850
2 changed files with 37 additions and 0 deletions
+6
View File
@@ -7573,6 +7573,12 @@ class CombatEngine:
) -> list[CombatantState]:
"""Return creatures within radius_cells of center.
The burst center is a CELL and the radius is counted center-to-center
under 5-10-5 - a documented approximation of the SRD's
intersection-to-intersection far-edge measurement (see the
"BURST MEASUREMENT" note in ``areas.py`` for why a faithful
intersection origin is deferred).
``active_only`` (default) keeps only acting creatures; an area spell
passes False so its burst also catches dying/unconscious creatures
(SRD aiming-a-spell.md: a burst "affects whatever it catches in its