Releases: bingyang1132/AutoWatcher
Release list
v1.0.7
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 处)
- 画符的批量临时附魔。不会静默算错,路线上有红字。
- 手牌满时打冥想(上一节)。会静默算错。
AutoWatcher 1.0.5
对标的版本
| 版本 | 从哪拿 | |
|---|---|---|
| 自动战斗求解器 | 0.38.6 |
工坊 / GitHub |
| 观者(Boninall) | 0.9.28 |
创意工坊 |
| 游戏 | 0.111.0 |
— |
最低求解器版本不变,仍是 0.38.2。
这一版改了什么
修好:勤学精进与许愿的成长额度,从求解器 0.38.3 起就悄悄没了
求解器有一个第三方局外成长来源的登记入口(GrowthSourceMirrors.Register)。登记上去,
勤学精进的永久升级和许愿的金币才能各占一份独立的成长额度,玩家才能分别给它们设目标,
求解器也才会为凑这笔收益调整路线。
本 Mod 探测这个入口时写死了参数个数:
return register?.GetParameters().Length == 4 ? register : null;求解器 0.38.3(feat: stop search at proven growth targets)在这个方法末尾加了第 5 个
可选参数 opportunityTarget。签名从 4 参变 5 参,探测直接返回 null:
0.38.2 及以前 Register(id, card, hasTarget, title) → 绑上
0.38.3 起 Register(id, card, hasTarget, title, opportunityTarget) → 绑不上
失败是静默的。 没有报错,没有异常,路线上也不会有红字。两张牌的局外收益退回长期资源刻度
——数值不是零,只是不再有自己的额度,求解器不会为它们改路线。
现在只核对前 4 个参数的类型,后面多出来的可选参数一律容忍——上游在末尾加可选参数是正常的
加功能方式,不该被读成「入口没了」;多出来的参数如果不是可选的,那才算真的对不上。调用那一侧
按实际参数个数建实参数组,多的补 null 走默认(固定传 4 个会抛 TargetParameterCountException)。
扫过一遍,写死参数个数的探测只有这一处。
加载日志现在能区分「上游没有」和「签名对不上」
这次真正让人栽跟头的不是那行代码,是那句话。旧版的能力探测只有「绑上/没绑上」两态,
没绑上一律写成
局外成长来源登记:求解器没有这个入口
于是两件完全不同的事长得一模一样:上游还没做(跳过是预期行为),和上游改了签名、
本 Mod 过期了(是 bug)。查这个问题的时候,这句话把人往错的方向带了一轮。
现在分四态:已绑定 / 求解器没有这个入口 / 入口在但签名对不上 / 探测出错。后两种是需要
有人去改代码的情况,除了那行说明之外还会单独告警一次,不让它躺在一行看起来像常态的
说明里被读过去。
顺带说明:日志里那句「跨战斗收益目标:求解器没有这个入口」是诚实的——LongTermGoals
在求解器的全部提交历史里从未存在过,那是一处对上游尚未实现的功能做的预留探测。它现在会
明确显示成「上游没有」,而不是和签名不匹配共用一句话。
构建跟上 RitsuLib 0.6.0 的新目录布局
只影响从源码构建,不影响装好的 Mod。RitsuLib 0.6.0 把 lib/<游戏API版本>/ 一个大 DLL
拆成了 compat/<版本>/ 加 shared/,并自带 RitsuLib.References.props。有那个文件就走它,
没有就按旧布局引用,两种布局都能编。
为什么矩阵没抓到
WATCHER-LESSON-LEARNED-FATAL-KILL 这条用例断言的是长期资源刻度
(-ExpectedInitialLongTermResourceValueAtLeast 30),而那条正是入口绑不上时的回退路径。
所以入口断了之后这条用例照样通过——它锁的是回退值,不是成长额度本身。
这是一处真实的覆盖缺口,还没补。补它需要一条能断言「成长额度被兑现」的判据,
而不是断言回退刻度。
验收
-
Release 编译 0 警告 0 错误,对求解器
0.38.6+ RitsuLib0.6.0。零警告同时说明观者
0.9.28的哈希与钉死的那一版一致。 -
新的探测判据对着已部署的
CombatSolver.dll反编译出的实际签名逐项核过:public static GrowthSourceHandle Register( string id, Func<CardModel> card, Func<CardModel, bool> hasTarget, Func<CardModel, string>? title = null, Func<GrowthOpportunityContext, GrowthOpportunityTarget>? opportunityTarget = null)
前 4 项类型一致,第 5 项是可选参数——正是新判据放行的形状。核的是产物,不是源码。
-
这一版没有跑任何无头用例,包括那条本该覆盖它的。 RitsuLib
0.6.0换布局之后,无头
harness 自己也找不到 RitsuLib 了(它按lib/<游戏API版本>/的老路径取,而且只搬一个 DLL,
新版拆成了多个),WATCHER-LESSON-LEARNED-FATAL-KILL在 harness 阶段就起不来。这是求解器
仓库里那套工具的问题,已知,还没修。所以这一版的证据只有「编译通过」加「签名核对」两项,没有运行时回归证据。改动集中在能力
探测的绑定条件与日志文案,不触碰任何镜像逻辑,但那是理由,不是证据。发现不对请报 Bug。 -
运行时确认方式:看加载日志那一行,应为「局外成长来源登记:已绑定」。
已知不准的地方
1 处,和上一版相同:
- 画符(
WATCHER_DRAW_TALISMAN)的批量临时附魔。不会静默算错,求解器会在路线上打红字。
完整清单在 docs/VERIFICATION.md。
报 Bug
求解器自带问题包导出。导出后开 issue 附上它,说明你装的是工坊版还是 GitHub 版。欢迎捉虫!
AutoWatcher 1.0.4
对标的版本
| 版本 | 从哪拿 | |
|---|---|---|
| 自动战斗求解器 | 0.38.6 |
工坊 / GitHub |
| 观者(Boninall) | 0.9.28 |
创意工坊 |
| 游戏 | 0.111.0 |
— |
⚠️ 这一版抬了求解器的最低版本:0.32.0 → 0.38.2
装在 0.38.2 以下的求解器上,本 Mod 会拒绝加载并在日志里写明原因。
不是保守起见,是硬依赖:下面那条斋戒修复登记在求解器的 AfterEnergyResetMirrors 注册表上,
而那个注册表是 0.38.2 才进发布产物的。低版本上连类型都找不到。
工坊的求解器 2026-09-14 已经是 0.38.6,0.38.2 也在 09-13 就上去了,所以工坊用户正常更新即可。
这一版改了什么
修好:斋戒每回合少的那 1 点能量,求解器现在算得到了
斋戒(WatcherFasting2)挂的 EnergyDownPower 会让你每回合开始少一点能量。
以前求解器在「回合开始重置能量之后」这个时点的能力结算是一张写死五个原版类型的 switch,
没有第三方登记入口。后果不是差一点数值:从打出斋戒的下一回合起,求解器每回合都以为自己
多一点能量,执行下来和预测对不上,于是每回合重算。而且它连红字都不报——别的钩子漏登记
会记一条「未镜像」风险,这个时点不经过注册表,只是静默跳过。
上游把它改成了注册表(CombatSolver#88,
2026-09-14 合并,随 0.38.2 发版),本 Mod 这一版在那里登记 EnergyDownPower。
少算的不只是一条提示,是路线本身。验收用例是这么钉的:36 血的敌人,玩家挂着斋戒的减能量,
要打到第三回合才死;不扣那 1 费的话求解器会算成第二回合就斩杀。反向对照做过:把那条登记
注掉重新构建,这条先挂在「未镜像 1 项、预期 0 项」;把未镜像那条断言也去掉,它就挂在
「首轮预计战斗结束回合为 2,预期为 3」。
顺带:天人形态从 Harmony 补丁改成登记
天人形态(DevaPower)以前是挂在求解器内部方法上的一个 Harmony postfix ——那时那个时点没有
登记入口,只能打补丁。现在改成和斋戒同一条注册表上的登记,不再动求解器的内部方法。
同一处把「给能量」那一步从直接改状态改成走 simulator.GainEnergy:原版调的是
PlayerCmd.GainEnergy,要过 ModifyEnergyGain,直接改状态会漏掉改能量增益的效果。目前没有
这类效果参与,所以这是口径修正,不是行为改动。
已知不准的地方
1 处(上一版是 2 处,斋戒那条这一版修好了):
- 画符(
WATCHER_DRAW_TALISMAN)的批量临时附魔。不会静默算错,求解器会在路线上打红字。
完整清单在 docs/VERIFICATION.md。
验收
-
Release 编译 0 警告 0 错误,对求解器
0.38.6。零警告同时说明观者0.9.28的哈希与钉死的
那一版一致。 -
验收矩阵从 33 条加到 34 条,新增
WATCHER-FASTING-ENERGY-DOWN(见上)。 -
反向对照做过,两级都做了,见上。
-
全量 34 条:33 通过、1 未通过(2026-09-14 17:59–18:22,求解器
0.38.6+ 观者0.9.28- 游戏
0.111.0)。
未通过的是
WATCHER-STANCE-REGRESSION-LOCK。它锁的不是镜像正确性,是求解器选哪条路线:
爆发加打击打 100 血,预期三回合结束,现在是四回合。这个3是当初在已验证构建上实测出来的
数,不是推导出来的。几点已经确认:镜像本身没问题——锁姿态倍率的算术用例(
WATCHER-ERUPTION-WRATH、
WATCHER-WRATH-DOUBLE-DAMAGE、WATCHER-CALM-EXIT-ENERGY)全过,未镜像项全 0;也不是
这一版引入的——1.0.4 只动斋戒和天人形态,这条用例里两样都不沾边。上一次全量矩阵是在求解器
0.36.3上跑的 33/33,所以这条变化落在0.36.4到0.38.6之间,具体哪一版还没定位。
已在排查中。 - 游戏
-
这一版没有原版角色的回归证据——矩阵只覆盖观者。发现不对请报 Bug。
报 Bug
求解器自带问题包导出。导出后开 issue 附上它,说明你装的是工坊版还是 GitHub 版。欢迎捉虫!
v1.0.3
对标的版本
| 版本 | 从哪拿 | |
|---|---|---|
| 自动战斗求解器 | 0.36.3 |
工坊 / GitHub |
| 观者(Boninall) | 0.9.28 |
创意工坊 |
| 游戏 | 0.111.0 |
— |
本 Mod 的清单里求解器写的是最低版本 0.32.0,不是精确版本。低于它、或者缺了某个登记入口,
本 Mod 会干净地拒绝加载并在日志里写明缺什么。
这一版改了什么
修好:抽牌堆空的时候预见算成了空操作
有人报「牌库没牌的时候预见会卡住」。查下来是我们的镜像少了一步。
观者 0.9.28 的预见(两个入口都一样)在取牌之前会先调 CardPileCmd.ShuffleIfNecessary:
抽牌堆空、弃牌堆有牌时,把弃牌堆洗回去再看,洗完照常弹选牌页面。我们的镜像跳过了这一步,
直接当成「没牌可看」返回。
后果不是数值算错一点,而是路线和实机分叉:求解器以为这一步什么都没发生,实机却弹出一个
选牌页面,自动出牌停在那里等一个路线上不存在的选择。
当初跳过是有理由的——洗牌会触发美琅脂的洗牌后预见,原版那条路可能递归。但递归是有界的:
洗完抽牌堆就不空了,那次预见不会再洗第二遍。所以现在照原版洗,只会洗一次。
同一处还顺带修正了结算顺序:抽牌堆和弃牌堆都空时,原版直接返回,不结算预见的连带效果;
我们以前会照样给涅槃的格挡、照样把弃牌堆里的迂回收回手里。现在这两样都挪到了那道门后面。
求解器侧的一条,本版还修不了:斋戒
斋戒(WatcherFasting2)挂的 EnergyDownPower 会让你每回合开始少一点能量。求解器在
「回合开始重置能量之后」这个时点的能力结算是一张写死的原版白名单,没有第三方登记入口,
所以本 Mod 想认也认不了:从打出斋戒的下一回合起,求解器每回合都以为自己多一点能量,
执行下来对不上,于是每回合重算。
更麻烦的是它连红字都不报——别的钩子漏登记会记一条「未镜像」风险,这个时点不经过注册表,
只是静默跳过。
已经给上游提了 PR 开这个登记点:CombatSolver#88。上游合并并发版之后,本 Mod 会跟一版把它登记上。
在那之前:牌组里有斋戒的话,那一局的路线会反复重算,别当成卡死。
已知不准的地方
2 处:
- 画符(
WATCHER_DRAW_TALISMAN)的批量临时附魔。不会静默算错,求解器会在路线上打红字。 - 斋戒的每回合减能量。会静默算错,见上。
完整清单在 docs/VERIFICATION.md。
验收
- Release 编译 0 警告 0 错误,对求解器
0.36.3。零警告同时说明观者0.9.28的哈希与钉死的
那一版一致。 - 验收矩阵从 32 条加到 33 条,新增
WATCHER-SCRY-SHUFFLES-EMPTY-DRAW:抽牌堆空、
弃牌堆四张打击,天眼的预见仍然要开出选牌分支——洗牌没做的话看到的是 0 张,分支数为 0。 - 反向对照做过:把那一句洗牌注掉重新构建,这条立刻挂;恢复后重新通过。
- 全量 33 条全部通过(2026-09-12 01:51–02:12,求解器
0.36.3+ 观者0.9.28+ 游戏0.111.0)。
0 失败、0 未运行,21 分钟跑完。跑的是求解器v0.36.3的本地 Release 构建。 - 这一版没有原版角色的回归证据——矩阵只覆盖观者。发现不对请报 Bug。
报 Bug
求解器自带问题包导出。导出后开 issue 附上它,说明你装的是工坊版还是 GitHub 版。欢迎捉虫!
v1.0.2 · 对标求解器 0.34.8 与观者 0.9.28
对标的版本
| 版本 | 从哪拿 | |
|---|---|---|
| 自动战斗求解器 | 0.34.8 |
工坊 / GitHub |
| 观者(Boninall) | 0.9.28 |
创意工坊 |
| 游戏 | 0.111.0 |
— |
本 Mod 的清单里求解器写的是最低版本 0.32.0,不是精确版本。低于它、或者缺了某个登记入口,
本 Mod 会干净地拒绝加载并在日志里写明缺什么。
观者这次抬到了 0.9.28:这一版改了通晓万物的行为,见下。装 0.9.27 也能跑,只是通晓万物
会按新规则算,遇到那个特定情形会偏乐观。
这一版改了什么
跟进观者 0.9.28
通晓万物。0.9.28 起,选到一张被自己的条件挡住的牌时,原版直接把它消耗掉,不再打两次。
最典型的是华丽终章:它要抽牌堆清空才打得出,抽牌堆里还有别的牌时就属于这种情形。
以前求解器会把一次完整的双倍出牌算进路线,实机只是把牌消耗掉——这是会静默算错的那一类,
不是打红字提示的那一类。
预见回收经纬。0.9.28 修了一个 mod 侧的 bug:0.9.27 的代码认的卡牌 id 对不上,实机压根没把
弃牌堆里的经纬收回来。我们的镜像一直是按「该回收」算的,所以在 0.9.27 上偏乐观;从 0.9.28 起
两边对上了。
0.9.27 → 0.9.28 一共 +927 / −25 行,除上面两处以外全是审判的新特效、音效和卡面开关。
审判自己的斩杀判据一个字没动。逐条比对见 docs/VERIFICATION.md。
跟进求解器 0.34.8
重新编译并核过全部登记入口与补丁目标。0.34.8 顺带修了临时力量/敏捷/集中的施加顺序,
和下面「阳」那条是同一族问题的另一半。
修好的算错
阳。这个遗物给的临时敏捷原来只加了记账层,没有配上等量的常驻敏捷;回合结束时却照着记账层
把真敏捷扣掉。结果不是少算而是算反——本回合起甲少算,下一回合开局凭空多出一个负敏捷。
实机表现是永世沙漏战每回合都计划外重算。
净化不肯烧起手牌。观者真正的引擎牌(全知、内心宁静、许愿)牌面上没有伤害/格挡/抽牌数值,
求解器的通用估值一律给 0 分,于是净化永远先烧引擎、留下一堆打击。这一版给观者的起手打击和
防御声明了负偏置,「烧掉它」这条分支才排得到「一张都不烧」前面。
真言的战略估值。真言原来落进求解器的默认兜底,被记成「成长潜力」,于是「先祈祷推到 10、
进神格、拿多出来的能量打伤害」这条线在动作分类里完全不产生资源信号。现在按
「离下一次兑现还差多少」登记成资源刻度,一次兑现封顶 3 费。
勤学精进和许愿的金币各占一份成长额度。这两处收益原来只记「这条线路带走了多少局外价值」,
那笔账永远换不到血。现在它们出现在求解器的成长策略侧栏里,可以各自填一个「每次收益允许的
额外战损」。
已知不准的地方
1 处效果没有建模:画符(WATCHER_DRAW_TALISMAN)的批量临时附魔。它不会静默算错——
求解器会在路线上打红字标明「这里有未镜像的效果」。完整清单在
docs/VERIFICATION.md。
新增一条提醒(不是本 Mod 的 bug,但和本 Mod 有关)。 在求解器的成长策略侧栏里给
勤学精进或许愿的金币填了非零额度之后,求解器会关掉「打到可接受战损就提早收手」那条捷径,
于是每一场战斗都会把深化搜索的时间预算跑满。求解器这么做有它的道理——多兑现一次成长收益
本来就是更好的路线,零战损不代表到顶了——但它不检查「还兑不兑得出来」,所以哪怕本场只有一张
勤学精进、而且已经斩杀兑现过了,它照样会接着搜。
如果你觉得每回合等太久,把这两个额度填回 0 即可。
验收
- Release 编译 0 警告 0 错误,对
0.34.8。零警告同时说明观者0.9.28的哈希与钉死的那一版
一致。 - 结构自检的探针和全部 Harmony 补丁目标在
0.34.8上都能解析到。 - 观者夹具从 30 条加到 32 条,通晓万物那两条各验一半:一条验「挡住就消耗」,一条验
「那道判定必须在把牌挪进出牌堆之后做」。判据都是算术的(6 × 2 = 12对0;
60 × 2 = 120正好斩杀 120 血),不吃路线偏好。 - 反向对照做过:把新加的那段判定注掉重新构建,
WATCHER-OMNISCIENCE-BLOCKED-EXHAUST
立刻挂在「首个选牌是GRAND_FINALE,预期WATCHER_STRIKE_P」——求解器确实会去选那张
它以为能打出 120 点群体伤害的牌。恢复后重新通过。 - 夹具清单和判据见 tools/run-watcher-matrix.ps1。
- 全量 32 条全部通过(2026-09-10 00:20–00:41,求解器
0.34.8+ 观者0.9.28+ 游戏
0.111.0)。0 失败、0 未运行。求解器和观者两样同时换版之后的第一次全量。 - 这一版没有原版角色的回归证据——矩阵只覆盖观者。发现不对请报 Bug。
报 Bug
求解器自带问题包导出。导出后开 issue 附上它,说明你装的是工坊版还是 GitHub 版。欢迎捉虫!
v1.0.1 · 对标求解器 0.32.0 与 0.33.x
对标的版本
| 版本 | 从哪拿 | |
|---|---|---|
| 自动战斗求解器 | 0.32.0(工坊版)/0.33.x(GitHub 开发版),两者都可 |
工坊 / GitHub |
| 观者(Boninall) | 0.9.27 |
创意工坊 |
| 游戏 | 0.111.0 |
— |
本 Mod 的清单里求解器写的是最低版本 0.32.0,不是精确版本。低于它、或者缺了某个登记入口,
本 Mod 会干净地拒绝加载并在日志里写明缺什么。
这一版改了什么
四张原先算不准的牌补齐了。
- 聚能成刃:生成的灭除之刃段数以前一律按 1 算,现在等于实付能量。X 花 3 点就是 3 段。
- 点穴:那一跳无视格挡的伤害以前完全没算,现在按每个敌人自己的标记层数结算。
- 光辉:伤害本来就带上了累计真言,这一版起「先攒真言再打光辉」和「直接打光辉」在搜索里
是两个不同的状态,不会被当成同一条路线丢掉一条。需要求解器0.33.0以上。 - 天人形态:第二张及之后不再记成算不准,每回合多给的能量也算进去了。
兼容求解器 0.33.0。 0.33.0 改了玩家回合结束那段流程的结构,本 Mod 原来的补丁点在新版上
找不到、会导致整个 Mod 拒绝加载。这一版同时对得上 0.32.0 和 0.33.x,一份文件通用。
顺带在求解器那边修了一个 bug 并加了一个入口,都已合并进 0.33.0:
已知不准的地方
只剩 1 处:画符(WATCHER_DRAW_TALISMAN)的批量临时附魔。它是 mod 自加的先古卡,强度很低。
不会静默算错——求解器会在路线上打红字标明「这里有未镜像的效果」。
另有一批走 Harmony postfix 或求解器不分发的钩子也没有覆盖。完整清单在
docs/VERIFICATION.md。
求解器 0.32.0 上还会多一条:光辉会记一条风险。它的伤害算得对,只是那个计数要
0.33.0 才能进搜索的状态判重。创意工坊的求解器现在还是 0.32.0。
验收
- Release 构建对
0.32.0和0.33.5两个求解器各编译一次,都是 0 警告 0 错误。零警告同时
说明观者0.9.27的哈希与逐条核对过的那一版一致。 - 结构自检的探针和全部 Harmony 补丁目标在两个求解器版本上都能解析到。
- 观者夹具从 25 条加到 29 条,四张牌各一条,反向对照都内建在数字里(段数按 1 算只有 9 点、
打不死 27 血的敌人;点穴那一跳没建模总伤害是 0;天人形态少 1 点能量只有 18 点打不死 24 血)。
夹具清单和判据见 tools/run-watcher-matrix.ps1。 - 这四条新夹具本轮没有运行,作者会在本地单独跑。这一版也没有原版角色的回归证据。
发现不对请报 Bug。
报 Bug
求解器自带问题包导出。导出后开 issue 附上它,说明你装的是工坊版还是 GitHub 版。欢迎捉虫!
v1.0.0 · 对标求解器 0.32.0
让杀戮尖塔2自动战斗求解器适用于观者。求解器默认拒绝第三方角色 Mod,装上观者之后会直接停在
「检测到不兼容的第三方 Mod」;装上本 Mod 之后,它不但能跑,还能真正理解观者的牌、姿态和额外回合。
本 Mod 不改变任何游戏行为。 清单里 affects_gameplay 是 false。你的牌、伤害、一切数值都和
不装它时完全一样,唯一的区别是求解器算得对。
对标的版本
| 版本 | 从哪拿 | |
|---|---|---|
| 自动战斗求解器 | 0.32.0 | v0.32.0 / 创意工坊 |
| 观者(Boninall) | 0.9.25 | 创意工坊 |
| RitsuLib | — | 创意工坊 |
| 本 Mod 的创意工坊版 | 1.0.0 | 创意工坊 |
| 游戏 | 0.111.0 | — |
清单里求解器写的是最低版本 0.32.0,不是精确版本。0.32.0 是第一个发布产物里就带全适配层需要
的五条登记入口的版本(第三方战略估值、药水选择、卡牌选择、牌堆弃牌、可打出性覆盖)——
0.31.3 的源码里有前四条,但发布的二进制不含卡牌选择那一条,所以不能拿它当下限。
版本不对不会静默出错。 求解器低于 0.32.0 或缺了某个登记入口,本 Mod 会干净地拒绝加载,
日志里写明缺什么、去哪拿新版,一个镜像都不注册。
这一版有什么
- 观者的全部 100 个卡牌类型逐个核对镜像,按反编译出的实现写,不是照着卡面文字猜
- 四种姿态的进入、退出、伤害倍率和能量收支,以及心灵堡垒、疾风连击这些连带效果
- 四张选牌卡都是真的搜索分支:许愿、冥想、通晓万物、他山之石。挑哪个由求解器自己搜,
不再每次都触发重算 - 预视同样是真分支:丢哪几张由求解器搜
- 额外回合(腾跃)、手牌保留、回合开始与结束的各类钩子
- 红蓝无限:进入愤怒抽牌已建模,求解器能认出并展开这条循环
- 跨战斗收益:勤学精进的斩杀升级和许愿会被算进长期价值
- 9 个遗物、3 个药水、14 个 Power 钩子,以及三处求解器没有注册表、只能用 Harmony 补的位置
已知不准的地方
5 处效果显式记为未镜像。它们不会静默算错 —— 求解器会在路线上打出红字标明「这里有未镜像
的效果」,你看得见。另有一批走 Harmony postfix 或求解器不分发的钩子也没有覆盖。
两份清单都在 docs/VERIFICATION.md。
一个已知 bug,会影响体验但不影响正确性: 对上带活力火花的敌人(例如感染棱柱)时,
战斗中生成的技能牌可能被挂上两层污染,而求解器算的是一层,于是每回合开始都会重新搜索一次。
路线本身是对的,只是会看到反复重算。根因在求解器一侧,已在排查。
观者更新之后。 只要它的内部结构没变,本 Mod 照常工作;结构变了就干净地拒绝加载。
但观者可以在不改任何签名的情况下改数值或改效果,那种情况结构自检抓不到 —— 日志里会写
「这一份观者不是逐条核对过的那一版」。看到那句话又觉得路线不对,请报 Bug。
验收
- 观者夹具 25/25 通过,对的是求解器 0.32.0 + 观者 0.9.25 + 游戏 0.111.0。
每条夹具的判据都落在能用算术自己验的量上(能量够不够打第二张牌、格挡数值、正好击杀的回合),
而不是「跑起来不报错」;每条都要求求解器自己不报告任何未镜像效果。
清单见 tools/run-watcher-matrix.ps1 - 这一版没有原版角色的回归证据。 25 条夹具全是观者。本 Mod 不改变游戏行为,
但它依赖的求解器改动里有一条是原版侧的行为变更,那一条没有在原版角色上验证过。
报 Bug
求解器自带问题包导出。导出后开 issue 附上它,说明你装的是工坊版还是 GitHub 版。
带上问题包基本都能定位;只有文字描述通常不够。
致谢
观者 Mod 作者 Boninall;自动战斗求解器作者 Torch1230 及各位贡献者。
感谢 Claude(Anthropic)在开发上的帮助。MIT 授权。
本 Mod 是非官方社区作品,与 Mega Crit 无关。