
火焰洗礼修复重制版
针对 Baptism of Fire 中长期存在的错误“你手下死亡人数过多”失败问题的定向 Redux 修复。
查看大图针对 Baptism of Fire 期间长期存在的虚假“你的士兵死亡过多”失败问题,这是一个有针对性的 Redux 修复。
重要提示:v1.0.0 是首个公开/社区验证版本。该补丁在结构上已验证,但 Redux 维护者尚未能在游戏中重现并确认该错误。如果您遇到此问题,非常欢迎提供反馈和 kcd.log 日志行。
[color=#bf9000][b][size=4]修复内容[/size][/b][/color]
部分玩家在 Baptism of Fire 任务中,即使战斗中友军的合法伤亡看起来并不严重,也可能因“你的士兵死亡过多”而失败。
Redux 旨在保留游戏原版预期的战斗损失机制,同时过滤掉那些看起来来自死亡时实际上对亨利怀有敌意的 NPC 的伤亡报告。
[b][color=#bf9000][size=4]为何使用 Redux[/size][/color][/b]
对当前游戏原版 Scripts.pak 的分析显示,伤亡判定链如下:
1. npc_battle.xml 会在每个战斗 NPC 的战斗行为初始化时,检查该 NPC 是否为亨利的敌人,并存储该结果。
2. 当该 NPC 死亡时,如果缓存值显示该 NPC 并非敌人,则会将死亡事件转发给战斗协调器。
3. so_battlecoordinator.xml 会为每个转发来的死亡事件增加友军伤亡计数器。
4. 一旦达到当前伤亡阈值,battleLost 便会被触发。
5. q_pribBattle.xml 完成 battleLost 并触发“你的士兵死亡过多”的游戏结束画面。
其中脆弱的部分在于第 1 步:敌意状态被提前缓存,而在 NPC 死亡前,临时阵营、声望或战斗状态可能会发生变化。
这是 Redux 背后的工作假设。该假设尚未在游戏中被证实,因此 v1.0.0 作为社区验证版本发布。
[b][color=#bf9000][size=4]Redux 的作用[/size][/color][/b]
Redux 仅修改:
Libs/AI/final/so_battlecoordinator.xml
当协调器收到伤亡报告时,它会再次对已死亡的 NPC 与亨利进行 IsEnemy 检查:
- 当前为非敌对状态 -> 完全按照原版逻辑计算伤亡
- 当前为敌对状态 -> 将其忽略,视为疑似虚假的友军伤亡
- 重新检查失败 -> 回退到原版行为并计算伤亡
失败系统中的其他部分均未被禁用。原版的伤亡阈值、battleLost 和 TooManyCausalties 游戏结束路径均保持不变。
换句话说,一场真正灾难性的战斗仍然可能导致失败。
[b][color=#bf9000][size=4]与现有修复的区别[/size][/color][/b]
Nexus 上早前有两个针对相同问题的修复。两者都在 q_pribBattle.xml 的下游环节进行修改,而不是改变伤亡分类本身。
Baptism of Fire Fix by Sealer Moon (Nexus mod 1740)
----------------------------------------------------
此模组保留了原版中触发/完成 battleLost 的代码,但从 q_pribBattle.xml 中移除了相应的 GameOver 分支。
它还移除了单独的 killPlayer -> LostABattle GameOver 分支。
因此,底层伤亡计数器和 battleLost 状态仍可能达成,但不再执行“你的士兵死亡过多”的游戏结束。因此,这是一个宽泛的变通方案,而非对伤亡来源的修正。
Baptism of Fire Fix by SquashyHydra (Nexus mod 1793)
------------------------------------------------------
这个后来的修复更具针对性。
它阻止了正常的 q_pribBattle 处理器完成 battleLost 目标,同时也清空了 TooManyCausalties GameOver 分支。
playerFled 和 killPlayer 保持不变。
这在保留更多原版任务逻辑的同时避免了虚假失败的症状(相比 mod 1740),但本质上仍然是禁用了 battleLost 失败路径,而不是修正导致该问题的伤亡报告。
Baptism of Fire Fix Redux
--------------------------
Redux 采用了不同的方法:
现有修复:
伤亡计数器
-> battleLost
-> 禁用或绕过由此产生的 Game Over
Redux:
报告的伤亡
-> 重新检查已死亡的 NPC 当前是否对亨利敌对
-> 仅当仍被视为非敌对时才计算
-> 保留原版 battleLost/GameOver 系统
如果当前的假设成立,Redux 应能防止虚假的友军伤亡,同时不消除因友军损失过多而导致 Baptism of Fire 任务失败的合法失败途径。
[b][color=#bf9000][size=4]安装说明[/size][/color][/b]
将压缩包解压到您的 Kingdom Come: Deliverance Mods 文件夹中,使其结构如下:
KingdomComeDeliverance/Mods/baptism_of_fire_fix_redux/
如果您使用 mod_order.txt,请添加:
baptism_of_fire_fix_redux
在测试 Redux 期间,请勿同时使用任何较早版本的 Baptism of Fire 修复。它们会替换 q_pribBattle.xml 并禁用下游的失败路径,这会导致 Redux 的测试结果不具结论性。
[b][color=#bf9000][size=4]兼容性[/size][/color][/b]
针对本次发布所使用的当前 KCD1 PC Scripts.pak(1.9.7 时代/当前版本)构建。
Redux 与任何其他替换以下文件的模组冲突:
Libs/AI/final/so_battlecoordinator.xml
两个较早的 Baptism of Fire 修复修改的是:
Libs/AI/quests/q_pribBattle.xml
它们与 Redux 修改的不是同一个文件,但仍不应同时使用,因为它们的逻辑绕过了 Redux 旨在验证和保留的失败机制。
为了进行受控测试,如果可能,请使用 Baptism of Fire 任务开始前的存档。
[b][color=#bf9000][size=4]诊断日志 / 反馈[/size][/color][/b]
Redux 会为它收到的每个伤亡事件向 kcd.log 写入一条简短的诊断条目:
[BOF_FIX_REDUX] deathEvent=... isEnemy=... casualties=.../...
isEnemy=true 的行尤其有用:它表明一个被原版作为友军伤亡转发的死亡事件,其 NPC 当前对亨利敌对,因此被 Redux 过滤掉了。
如果您报告结果,请包含:
- 在不使用 Redux 的情况下,该问题是否能够重现
- Redux 是否允许任务继续
- 您对 Nest of Vipers 的选择 / 援军等级(如已知)
- kcd.log 中相关的 [BOF_FIX_REDUX] 行
关于合法的大量友军损失是否仍会触发原版失败的报告同样有用。
[b][color=#bf9000][size=4]已知状态[/size][/color][/b]
Redux 逻辑在结构上已验证,但尚未经过维护者可重现的游戏内测试确认。
因此,虚假伤亡报告的确切根源仍是一个工作假设。玩家的日志和可重现的存档对于确认或反驳该假设尤为宝贵。
[b][color=#bf9000][size=4]鸣谢[/size][/color][/b]
Sealer Moon - 早期 Baptism of Fire Fix(Nexus mod 1740)的创建者,该修复移除了 battleLost GameOver 分支以及 killPlayer GameOver 分支。
SquashyHydra - 后期 Baptism of Fire Fix(Nexus mod 1793)的创建者,该修复更精确地中和了 battleLost 失败路径。
这两个模组都帮助识别和记录了这个长期存在的“你的士兵死亡过多”问题。
Baptism of Fire Fix Redux 是对当前游戏原版战斗协调器的独立针对性补丁,不会重新分发这两个旧模组中修改过的 q_pribBattle.xml。
还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。