主题
结算与终局
主管线
resolve/ 是生产主管线。一次公共 step 依次完成合法性重验、费用与实例变更、效果 执行、监听器续算、死亡清理、光环稳定和终局检查。resolve_v2/ 提供可复用的帧与窗口 原语,但没有替代主管线。
伤害窗口
终局不能在某个内部防御字段刚写成 0 时立刻提交。主管线以私有 ResolutionFrame 组织伤害窗口:
- 攻击、常规反击、溢伤与 HQ 即时反应属于同一攻击窗口;
- 伏击先手是独立的提前窗口;
- 单次单目标伤害形成
SingleDamage; - 冻结多个目标或分配多点伤害形成
BatchDamage; Seq中彼此独立的伤害子句分别打开窗口;- 亡计和死亡观察者产生的必要伤害归入父窗口。
每个窗口固定执行:
- 冻结成员和目标;
- 提交全部伤害;
- 冻结死亡波并完成整批结构离场;
- 按稳定
play_seq顺序结算亡计与死亡观察者; - 处理新死亡波;
- 重算并稳定光环;
- 只做一次终局检查。
同批死亡不会被同批中较早结算的亡计“救回”。这是项目明确登记的确定性裁决。
终局屏障
同一窗口内双方总部同时降到 0 或以下时判平。只有一方归零时另一方获胜。 GameEnded 只提交一次;终局确定后,当前冻结伤害成员与死亡波的必要监听仍会完成, 但不再无限扩张普通递归监听。随后清空普通帧、Pending 与 FIFO。
因此:
- 单方致死窗口后的
Seq尾部不会继续抽牌、加资源或打开新伤害窗口; - 双总部同窗致死不会因某一条伤害先写入而错误判胜;
- HQ 反伤或改道仍能在同窗形成平局;
- 自反馈伤害链在终局屏障处有限收敛。
攻击预算与成功事实
attacks_this_turn 表示已消费的攻击预算;取消攻击仍不退款。 resolved_attacks_this_turn 只在揭示、反制和目标合法性重验通过后递增,用于判断单位本回合 是否真正进入过攻击。回合刷新会同时清理历史,普通 Ready 不会。
失败回滚
窗口乱序、重复关闭、悬空续算或规则错误会让整个 step 返回结构化错误。调用方传入的 状态保持执行前内容,不会遗留半个死亡波、已扣费用或漂移的随机数状态。