Skip to content

扩展 battle 事件总线与动作结算钩子 #4

Description

@TommrraraSnow

背景

当前 srsim.core.events 已经提供了基础事件流,BattleEngineBaseAction 也会发出 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 与测试通过

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions