摘要
九头蛇的“生齿不息”让它受伤后立刻攻击 +1(皇家 +2)。原生代码研究表明,这个增攻应当在同一次被攻击后的反击中就生效。本实验把这一点做成最小场景:当前引擎 Core382 先完成反击、操作结束后才增攻,所以反击伤害偏低。缺陷被 6 个“严格预期失败”测试精确锁定;本批没有做生产修复。
要回答的问题
增攻时点的偏差在真实反击中会造成多大的数值差?哪些边界不受影响?
方法
- 九头蛇 4 只、每只 100 生命、攻防 0、固定单只伤害 20;骷髅 4 只、每只 1000 生命,两者相邻,无第三方目标。初始可定制,之后只走合法菜单,每步 JSON 续算,最后完整回放。
- 预期值直接写成独立常数,不调用被测的伤害函数。皇家九头蛇的反击目标选骷髅,利用其毒免疫隔离另一个尚未修复的皇家命中减益。
- 严格预期失败的规则:只有完整匹配旧缺陷签名时才允许失败;生命、攻击、来源或反击次数出现任何新错误都会普通失败;一旦实现正确,测试会“意外通过”并提醒移除标记。
- 来源依据:游戏知识模块重新校验了 36 段共 2399 条指令、4 个字符串、独立跳表和 2 条配置。
结果
| 骷髅造成的伤害 | 九头蛇余量 / 生命 | 应有普通 / 皇家反击 | Core382 实际 |
|---|---|---|---|
| 80,未减员 | 4 只 / 320 | 84 / 88 | 80 / 80 |
| 100,恰好减一只 | 3 只 / 300 | 63 / 66 | 60 / 60 |
| 300,只剩一只 | 1 只 / 100 | 21 / 22 | 20 / 20 |
| 一级甲壳挡住全部 80 | 4 只 / 400 | 80 / 80 | 80 / 80 |
| 反击次数为 0,受到 80 | 4 只 / 320 | 0 / 0 | 0 / 0 |
前三行的差异全部来自增攻时点:当前反击收据里的攻击加成为 0,操作结束后单位攻击才变成 1 / 2。减员数量已经正确,问题不是多算了存活数。22 项测试中 16 项通过、6 项严格预期失败;10 条历史共 152 次操作,不是自然 AI 对战。
Simulator 全量 11944 通过、65 失败、2 跳过、150 严格预期失败(287.47 秒);游戏知识模块 7787 通过、31 失败、7 准备错误。逐节点比较新增坏节点 0、遗漏 0。
失败与负结果
缺陷尚未修复,6 个严格预期失败不算规则正确。未审阅的冥界九头蛇、致死、先制和范围旁目标配置会被测试夹具拒绝,不能用名字相近的场景偷偷扩大认证范围。
局限
不能简单地在反击公式里额外加 1 或 2:那会拆开触发、扣血、状态、公开预览和事件顺序,还可能重复增攻。正确修复需要在已确认的伤害事件边界应用增攻、让反击自然读取新属性,并避免行动结束时再次结算同一包;还需要旧规则 / 旧回放兼容和下游预览同步。
结论与下一步
缺陷已被最小场景精确复现并锁定。修正提案仍待批准;共享结算原语的准备工作见实验 0309,后续逐包迁移另行记录。
Comments