摘要

一局候选对局里,玩家花两次“集能”(一种技能资源)使用“驱逐召唤”,结果什么也没移除,而日志只写“使用 驱逐召唤”,玩家不知道发生了什么。本次只改战斗日志的展示,全部来自已经公开的结算记录:

  1. 驱逐后逐个列出被影响兵堆的数量/生命减少;没变化就写“驱逐结算:未观察到数量或生命减少;原因未公开”。
  2. 一次攻击由多段伤害组成时(例如主伤害 776 加额外 75,共 851),日志拆开显示每段。
  3. 目标生命前后的差值和伤害数不一致时,单独标为“净变化,不等同伤害”。

没有改规则、AI、通信版本或存档格式。

要回答的问题

玩家能否只从公开信息看懂驱逐与多段攻击的实际结果,而日志又不会编造隐藏原因?

方法

  • 只读取已执行的公开观察事件(battle-event-observation.v6)里的前后端点;缺失或格式不对时标“不完整”,不说成零效果。
  • 不读私有的免疫或来源字段。不声称是隐藏的“稳定化”技能让目标存活,也不给未公开的伤害段起来源名字。
  • 多段伤害只有在各段相加等于通知总数时才拆开显示;不足的不补齐、不推测。
  • 措辞修正:早期写的“不是伤害”与一次合法驱逐中真实的 22 点伤害矛盾,改为中性的“净变化”。

设置

来源是两局已保存的“次级 Eldritch”完整对局(一局目标暴露、一局有保护),取第 26 个事件之前的合法前缀。原局没有英雄,而 Arena 网页要求双方都有英雄,所以临时夹具加了属性、法力、法术都为零的占位英雄,再重放同样 26 个动作;每个事件都独立回放核对,单位状态与原局一致。这不是原局的精确存档恢复。之后用真实按钮、真实 HTTP 执行驱逐或攻击,在桌面 1164×654 与窄屏 436×818 检查。

结果

场景 观察到的结果
驱逐,无保护 B3 数量 41→0,从棋盘和行动队列移除,日志写明移除 1 堆、净 41
驱逐,有保护 B3 仍为 41,日志写明未观察到减少,不猜测原因
资源 两种情况集能 18→6 点、充能 3→1 次,行动结束
牛头人攻击,暴露 776+75=851 伤害,111→0,生命 1110→0 分开显示
牛头人攻击,有保护 同样 851 伤害,111→26、剩 259 生命,随后 58 点反击
窄屏 日志换行、可滚动,无横向裁切;控制台无错误/警告

自动化:新增 11 项测试加原有战斗体验测试 23 项通过(1.14 秒);最终专项 28 项通过(3.00 秒);Arena 全套 2830 项通过(307.04 秒,8 进程)。各批不相加。

失败与负结果

首次新测试误从 BattleEngine.step 的返回元组里读 .state,修正了测试的解包,没有在生产代码里绕路。最初不加英雄/来源/动作适配的夹具会明确失败,只在临时夹具里修复。

局限

  • 受控前缀检查,不是新的完整浏览器对局、存档重启验收或原生规则证明。
  • 人类“研究预览”在施法前就能显示精确驱逐数量(暴露世界 1/41,保护世界 0/0),这比公平 AI 能看到的信息多。本次没有改变这个界面契约,也不能把这些预览喂给公开 AI。

结论与下一步

驱逐和多段攻击的结果在日志里变得可读且不越权。公平人类预览模式需要单独的界面契约决定;原生 Murmurs 和其余生命周期矩阵仍未验证。