v1.0.6
对标的版本
| 版本 | 从哪拿 | |
|---|---|---|
| 自动战斗求解器 | 0.40.1 |
工坊 / GitHub |
| 观者(Boninall) | 0.9.28 |
创意工坊 |
| 游戏 | 0.111.0 |
— |
最低求解器版本不变,仍是 0.38.2。这一版没有用到 0.38.2 之后才有的入口。
这一版改了什么
修好:开着先见之明,每个回合开始都卡在预见的选牌页面
玩家报「开了先见之明就卡死,只能自己手操」。
先见之明挂的是 ForesightPower,效果在 ForesightPower.BeforeHandDrawCompat 里,观者用
Harmony postfix 挂在原版 BeforeHandDraw 上。求解器这一步是
TurnStartPowerSupport.TriggerBeforeHandDraw 里一段按类型写死的流程,没有第三方注册表,
漏了连风险都不记。
所以后果不是算错,是卡住:预见要弹选牌页面,而部署下去的路线里没有这一步,实机每个回合开始
都停在那里等人选。也正因为这个时点不记风险,路线上连一条红字都没有。
修法是在同一个方法上补一个 postfix,对玩家身上的先见之明调预见,并且:
- 走回合开始的选牌通道,不走打牌那条——后者挂的是动作选择,只在出牌上下文里被消费;
- 挂起了选择就把返回值改成「有待处理选择」,让调用方把这里当成一次搜索边界。
现在回合开始的预见是求解器自己搜的分支:牌堆顶那几张丢哪几张、留哪几张,由后面的模拟分出高下。
预见挑牌之前的那几步(必要时洗牌、黄金眼与守视的增减、涅槃的格挡、弃牌堆里的迂回回手)抽成
了一段,出牌和回合开始两条通道共用,不再各写一份。
验收
- 新夹具
WATCHER-FORESIGHT-TURN-START-SCRY,矩阵 33 → 34 条。玩家身上注 3 层先见之明,
牌组里只有打击(没有任何别的选牌来源),断言首轮路线至少评估过 1 条选牌分支、未镜像项 0 条。 - 反向对照做过:把注册那一段注掉重新构建,立刻挂在「首轮选牌分支仅评估 0 条,低于下限 1」;
恢复后重新通过。 - Release 编译 0 警告 0 错误,对求解器
0.40.1。 - 全量 34 条没有重跑。 这一版只动了一个新增的补丁点和预见的公共前几步,其余夹具不沾边。
顺带查出来的一处新缺口:手牌满时打冥想(本版没修)
同一个钩子上还挂着观者把「暂存的保留牌」塞回手牌的那一步。填那份暂存名单的只有冥想:把牌加进
手牌之后发现没进去(手牌满了),就先暂存起来,下个回合开始再塞回手里。
求解器在手牌满时也会把牌改投弃牌堆(这一点和原版一致),但没有「下回合塞回手里」这一步。
于是手牌满时打冥想,实机那张牌下个回合回到手上、预测里留在弃牌堆,会静默算错,表现是那一场
反复重算。手牌不满时两边一致。
没有随这一版修:要正确镜像得给适配层加一份会随搜索分叉复制、并且进指纹的暂存名单。
已经写进 README 和创意工坊页面的已知缺口。
已知缺口(2 处)
- 画符的批量临时附魔。不会静默算错,路线上有红字。
- 手牌满时打冥想(上一节)。会静默算错。