摘要

皇家九头蛇的一次攻击会横扫前方三格,每个目标都要单独判断:是否免疫减益、是否有护盾挡住伤害、是不是友军。实验 0319 只测了单个目标;本实验把多个目标放在一起,检查逐目标的处理和结算顺序。在当时的规则版本 Core382 下,引擎只伤害主目标、不施加减益、旁边目标的护盾也不消耗。这一组合缺陷被 8 个严格预期失败锁定;隔离修复原型全部满足断言,但没有进入生产代码(后续由 Core387 正式实现,见实验 0318)。

要回答的问题

横扫时主目标免疫,是否会错误地阻止旁目标中减益?护盾、友军、反击时的目标顺序是否被逐个正确处理?

方法

  • 8 条受控历史、164 个合法操作,每条只有一次主动攻击,其余是甲壳施法和跳过。五支部队各 4 只、每只 100 生命、攻防 0、每只固定伤害 20、幸运士气 0;除反击组的皇家九头蛇保留一次反击外,其余反击次数为 0。初始化后不注入、不改状态和生命,每个动作做 JSON 续算,最后完整回放。
  • 目标位置与期望伤害 / 减益都是独立写下的字面值。新增一个原生整数投影的标准答案,证明在此几何下模板顺序为“下旁格 → 主目标 → 上旁格”;以前的集合断言无法证明顺序。

结果

组合 独立预期 当时 Core382
主剑士,旁骷髅与牛头怪 三者各 80;剑士 / 牛头怪中减益,骷髅免疫 只有主目标 80,无减益
主骷髅,旁剑士与牛头怪 主目标免疫不应阻止旁目标中减益 只伤主目标,无减益
主剑士有甲壳 主伤害 0,旁目标 80;仍中减益 只触发主护盾,无减益
旁牛头怪有甲壳 该包 0 并耗盾,其余 80 旁护盾未消耗,无减益
旁牛头怪为友军 友军无伤无减益 只伤主目标,无减益
皇家被攻击后反击 先受 80,再横扫三个敌方 只反击攻击者,无减益
反击主目标有甲壳 主包 0、耗盾并附加减益 只处理主护盾
反击旁目标有甲壳 分别处理旁盾、主伤害与毒免疫 旁护盾未消耗,无减益

8 个严格预期失败只接受“漏旁包 + 无减益 + 旁盾未消耗”的完整旧签名;毒免疫误施、打错目标、81 代替 80 等都会普通失败,另有 3 个反例保护分类。它们是已有缺陷的组合表现,不是 8 个新 bug。另 8 项检查确认公开完整预估仍如实返回“未知”、总量为空——这是诚实保留未知的测试,不是新增预览。

专项 37 通过、8 严格预期失败。Simulator 全量 11885 通过、65 失败、2 跳过、144 严格预期失败(392.31 秒);游戏知识模块 7735 通过、31 失败、7 准备错误;新增坏节点 0、遗漏 0。

隔离原型

把之前分别验证过的“范围”和“减益”路径合并:绑定普通与反击、按敌我过滤,每个存活目标先判断并施加减益,再进入该目标的伤害拦截。8 条 / 164 次操作的组合签名和预览边界全部通过;8 条候选回放都被旧引擎拒绝。没有导出候选对局,也没改生产代码、默认规则或版本。

局限

表中反击数值 80 用的是反击前攻击 0 的输入;这不证明原生的生齿不息在反击之后才生效(后来 Core387 中皇家反击修正为 88)。对象、移动、切换 / 先制反击、死亡 / 驱散和完整原生回调都不在原型范围内。

结论与下一步

逐目标处理的正确行为已被精确定义并有原型验证。下一步先确认生齿不息的原生事件订阅与结算时点,再决定哪些反击数值能认证;不把未知填成零,也不把隔离原型称作生产修复。