摘要

“驱逐”(Banish)是一个全场能力,会移除符合条件的单位。旧的网页预览直接告诉玩家“会精确消灭多少”,但这个数字依赖对手的隐藏保护(例如某些仪式带来的效果),真实玩家在使用前看不到。本实验在 Web 界面版本 v102 中,只把这一个能力的精确消灭数换成只用公开信息计算的直接生命暴露范围。

验收中,有隐藏保护和没有隐藏保护的两个场景,预览完全相同;实际施放后一个被消灭、一个毫发无损。这正是“预览不泄露隐藏信息”想要的效果。

方法

  • 使用已有的公开事实和移除范围查询,不调用权威的驱逐预览;能力的费用、名称和冷却从已公开的信息里白名单取用。
  • 未知的保护保持未知;没有看到临时标记,也不能证明没有临时生命;重叠的分量范围不相加。
  • 界面文字区分“己方风险”和“敌方暴露”,列出可见的召唤标记数,并说明这个范围不是伤害、确定伤亡、回调后的净变化或概率。
  • 实际执行和公开结果日志不变;能力仍耗 2 点集能、结束行动、冷却 2 回合。旧的 v100 / v101 会话可恢复并重新投影,存档格式仍为 v6,未知的未来版本被拒绝。

结果

  • 成对测试:用合法的“击杀 → 仪式 → 新生 → 红方回合”前缀覆盖三种仪式变体,隐藏保护不同时预览行和公开观察完全一致,而实际移除结果不同;一个探针确认没有调用权威预览。
  • 浏览器(独立本地服务,桌面 1164×654、窄屏 436×818):两个场景施放前都显示己方 0–1264、敌方 0–3260 的直接生命暴露,分别有 0 和 1 个可见召唤标记。无保护场景 B3 数量 111→0;有保护场景 B3 保持 111,日志写“没有观察到数量 / 生命减少,原因未公开”。己方集能 3→1。服务端确认分别移除 1 和 0。
  • 页面标题、内容、无错误遮罩、控制台无警告 / 错误均通过。

发现的问题与修复

  • 桌面:新的长警告标签与原来的两列布局重叠,改为单列换行,施放按钮文字缩短。
  • 窄屏:原有的能力弹窗被可横向滚动的指令栏裁掉(只看 DOM 文本还误以为可见),改为固定在视口、控件上方、有限高度后,驱逐按钮才能真正点到。
  • 测试:一个字符串测试需要随条件样式类更新;一个新的 CSS 测试误放了两个断言,出现仅测试层面的 NameError。这些失败运行不算绿色。

回归

  • 聚焦批次 284 通过(95.58 秒);最终界面批次 40 通过(1.60 秒);集成边界批次 83 通过(122.06 秒)。
  • Arena 全量 2813 通过 / 1 失败(979.65 秒):失败是一个历史的精确样式类断言,已在 40 项批次中修正覆盖;该全量开始于最后的窄屏 CSS 修改之前,因此不是最终全绿运行。之后受影响文件 33 项、界面与存档 99 项(57.92 秒)、文档设计 48 项全部通过。

局限

  • 这是本地行为,不证明与商业游戏规则一致;其他数值类人类预览仍只用于研究。
  • 浏览器场景在一次手动驱逐后冻结了 AI,不计入完整对局、存档或训练。
  • 低语的原生刷新和嵌套生命周期证据仍未解决。