背景
当前 srsim.core.events 已经提供了基础事件流,BattleEngine 和 BaseAction 也会发出 battle_start / turn_start / action_start / hit / damage_dealt / weakness_break / action_end 等事件。
但 battle docs 已明确把“可扩展模拟器”建立在更细粒度的事件驱动之上,当前事件粒度不足以支持后续角色脚本、插队动作、资源改写、目标选择钩子等能力。
现状
已有:
src/srsim/core/events.py 提供 EventBus 与基础 EventType
src/srsim/core/engine.py 在 battle / turn / action 生命周期中发事件
src/srsim/core/actions.py 在 hit / damage / break / status / kill 中发事件
缺口:
- 缺少 docs 中建议的
OnBeforeActionOrderResolve
- 缺少
OnBeforePayCost / OnAfterPayCost
- 缺少
OnBeforeTargetSelect / OnAfterTargetSelect
- 缺少
OnBeforeHit / OnDamageCalculated
- 缺少
OnUltimateQueued / OnUltimateInserted
- 缺少便于脚本层判断动作类别、标签、来源上下文的统一事件 payload
目标
扩展事件总线,使后续 battle docs 中的角色脚本、状态系统、插队动作、特殊伤害都可以优先走事件驱动,而不是不断把逻辑写回巨型主流程。
建议范围
- 对齐
docs/battle-system-mechanics/14-event-driven-architecture.md
- 统一 battle / turn / action / hit 事件上下文结构
- 为动作执行的关键阶段补齐 before/after 事件
- 明确 Ultimate queued / inserted 的事件语义
- 为后续脚本层预留足够的 action tags / source metadata
验收建议
- 至少一组测试验证新增事件的触发顺序与 payload
- 不破坏现有最小 demo 与测试通过
背景
当前
srsim.core.events已经提供了基础事件流,BattleEngine和BaseAction也会发出battle_start / turn_start / action_start / hit / damage_dealt / weakness_break / action_end等事件。但 battle docs 已明确把“可扩展模拟器”建立在更细粒度的事件驱动之上,当前事件粒度不足以支持后续角色脚本、插队动作、资源改写、目标选择钩子等能力。
现状
已有:
src/srsim/core/events.py提供EventBus与基础EventTypesrc/srsim/core/engine.py在 battle / turn / action 生命周期中发事件src/srsim/core/actions.py在 hit / damage / break / status / kill 中发事件缺口:
OnBeforeActionOrderResolveOnBeforePayCost/OnAfterPayCostOnBeforeTargetSelect/OnAfterTargetSelectOnBeforeHit/OnDamageCalculatedOnUltimateQueued/OnUltimateInserted目标
扩展事件总线,使后续 battle docs 中的角色脚本、状态系统、插队动作、特殊伤害都可以优先走事件驱动,而不是不断把逻辑写回巨型主流程。
建议范围
docs/battle-system-mechanics/14-event-driven-architecture.md验收建议