Skip to content

结算与终局

主管线

resolve/ 是生产主管线。一次公共 step 依次完成合法性重验、费用与实例变更、效果 执行、监听器续算、死亡清理、光环稳定和终局检查。resolve_v2/ 提供可复用的帧与窗口 原语,但没有替代主管线。

伤害窗口

终局不能在某个内部防御字段刚写成 0 时立刻提交。主管线以私有 ResolutionFrame 组织伤害窗口:

  • 攻击、常规反击、溢伤与 HQ 即时反应属于同一攻击窗口;
  • 伏击先手是独立的提前窗口;
  • 单次单目标伤害形成 SingleDamage
  • 冻结多个目标或分配多点伤害形成 BatchDamage
  • Seq 中彼此独立的伤害子句分别打开窗口;
  • 亡计和死亡观察者产生的必要伤害归入父窗口。

每个窗口固定执行:

  1. 冻结成员和目标;
  2. 提交全部伤害;
  3. 冻结死亡波并完成整批结构离场;
  4. 按稳定 play_seq 顺序结算亡计与死亡观察者;
  5. 处理新死亡波;
  6. 重算并稳定光环;
  7. 只做一次终局检查。

同批死亡不会被同批中较早结算的亡计“救回”。这是项目明确登记的确定性裁决。

终局屏障

同一窗口内双方总部同时降到 0 或以下时判平。只有一方归零时另一方获胜。 GameEnded 只提交一次;终局确定后,当前冻结伤害成员与死亡波的必要监听仍会完成, 但不再无限扩张普通递归监听。随后清空普通帧、Pending 与 FIFO。

因此:

  • 单方致死窗口后的 Seq 尾部不会继续抽牌、加资源或打开新伤害窗口;
  • 双总部同窗致死不会因某一条伤害先写入而错误判胜;
  • HQ 反伤或改道仍能在同窗形成平局;
  • 自反馈伤害链在终局屏障处有限收敛。

攻击预算与成功事实

attacks_this_turn 表示已消费的攻击预算;取消攻击仍不退款。 resolved_attacks_this_turn 只在揭示、反制和目标合法性重验通过后递增,用于判断单位本回合 是否真正进入过攻击。回合刷新会同时清理历史,普通 Ready 不会。

失败回滚

窗口乱序、重复关闭、悬空续算或规则错误会让整个 step 返回结构化错误。调用方传入的 状态保持执行前内容,不会遗留半个死亡波、已扣费用或漂移的随机数状态。