feat(rules): add the surprise round
SRD Surprise: when some but not all combatants are aware of their opponents, a surprise round precedes round 1. Aware combatants take a single standard OR move action plus free actions (swift and full-round are dropped, full_attack collapses to one standard attack, withdraw survives as the Restricted Withdraw standard); unaware combatants skip their turn. New Combatant.aware flag (default true, parsed at the JSON boundary) keeps every existing encounter bit-identical, exposed in the observation snapshot. Unaware combatants are not flagged flat-footed (documented simplification). Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -208,6 +208,8 @@ def load_combatant(path: Path) -> Combatant:
|
||||
|
||||
``features`` in the JSON are a list of feat name strings resolved via
|
||||
``_resolve_feat``. ``spells`` are passed through as-is (list of strings).
|
||||
The ``aware`` flag (SRD "Surprise") is a plain boolean of the
|
||||
``Combatant`` schema (default ``true``), so it parses directly here.
|
||||
"""
|
||||
try:
|
||||
raw = path.read_text(encoding="utf-8")
|
||||
|
||||
Reference in New Issue
Block a user