feat(observation): expose spell cast time in the snapshot

The per-spell Observation dict gains the additive cast_time key: the
registry spell's budget code on a hit, "standard" on a miss (mirroring
the engine's resolver fallback), so an LLM policy can schedule casts
against the action budget it sees reported back.

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-11 14:13:13 +02:00
parent c5426ffe34
commit b3398c16ce
4 changed files with 9 additions and 2 deletions
+2
View File
@@ -4574,6 +4574,7 @@ class CombatEngine:
"half_on_save": False,
"save_negates": False,
"area": None,
"cast_time": "standard",
}
half_on_save = _spell_half_on_save(spell)
return {
@@ -4587,6 +4588,7 @@ class CombatEngine:
"half_on_save": half_on_save,
"save_negates": spell.save != "none" and not half_on_save,
"area": _spell_area_dict(spell),
"cast_time": spell.cast_time,
}
def _cast_spell(