实测,其他各种拓展的机器人,如阿尔法机械(alpha mechs)的驮运机没有相关问题,而失能机关(The Dead Man's Switch)的运输框架在调料制备台制作盐(石材)的时候,会在进程结束时工作切换为等待中,而制盐的工作也没有完成,相当于做完了工作却没有成果,并且重复拿起再放下继续工作,一直这样卡住。把这一段报错发给deePSeek后,它说有相当多的mod冲突,不过最主要的是疯狂技能(mad skills+)强制给所有实体添加制作获得经验(但是其他机械体无此bug),和最有可能的
。
因为其他机械体做同样的制作没有这个问题,所以最推测是失能机关的问题。虽然不指望能修复,下面还是贴出deepseek给的解决方案,以供参考。
这个错误非常复杂,涉及多个模组对游戏核心机制 SkillRecord.Learn 方法的修改冲突。以下是系统化的分析和解决方案:
错误核心分析
直接原因
机械族 DMS_Mech_EscortLifter 在完成配方工作(DoBill)时,尝试通过 SkillRecord.Learn 获得技能经验,但至少9个模组同时修改了该方法,导致空引用异常:
csharp复制下载ProjectileInversion.API.hasTrAIt (Verse.Pawn pawn) // 此处 pawn 为 null
关键冲突点
机械族不应获得技能经验:机械族无技能系统,但多个模组(如 VanillaApparelExpanded, MadSkillsPlus)强制所有实体调用技能学习方法。
补丁执行顺序混乱:错误日志显示 10个模组 同时修补同一方法(前缀/后缀/转换器),包括:
复制下载ProjectileInversion, VFECore, LevelUp, EndlessGrowth, TheDeadManSwitch, RocketMan.Soyuz, ARimworldOfMagic, MadSkillsPlus, AchievementsExpanded, StackGap
具体触发场景
机械族在 Thing_VCE_CondimentPrepTable(来自 Vanilla Cooking Expanded)上完成配方时,模组尝试给无技能的机械族"学习经验",导致崩溃。
解决方案优先措施(立即解决崩溃)
移除机械族的工作分配
选中报错机械族 DMS_Mech_EscortLifter1780815
在 工作 标签页取消所有 烹饪 相关工作(特别是使用 VCE_CondimentPrepTable 的)
或使用开发者命令 Destroy 删除该机械族
禁用冲突最严重的模组
临时禁用以下模组(按优先级排序):
markdown复制下载1. ProjectileInversion # 直接抛出空引用2. MadSkillsPlus # 强制所有实体获得经验3. Vanilla Cooking Expanded # 提供问题工作台4. TheDeadManSwitch # 机械族控制模组
中期解决(兼容性调整)
安装机械族技能屏蔽补丁
在 \Mods\YourMod\Patches 创建 SkipMechLearning.xml:
xml复制下载运行<Patch> <Operation Class="Patch_SkipMechLearning"> <target Class="Verse.AI.Toils_Recipe"/> <method Name="FinishRecipeAndStartStoringProduct"/> </Operation></Patch>
配套创建 Patch_SkipMechLearning.cs:
csharp复制下载using HarmonyLib;using RimWorld;using Verse;public class Patch_SkipMechLearning { [HarmonyPatch(typeof(Toils_Recipe), "FinishRecipeAndStartStoringProduct")] static void Prefix(ref Toil __result, Pawn actor) { if (actor.RaceProps.IsMechanoid) __result.initAction = null; // 跳过经验学习 }}
配置模组白名单
MadSkillsPlus:设置中启用 Skip Mechanoids
VFECore:关闭 Allow Mech Learning
TheDeadManSwitch:禁用机械族的烹饪工作类型
长期解决(模组生态优化)
精简技能相关模组
以下模组功能重叠度高,建议只保留1-2个:
markdown复制下载- MadSkillsPlus- EndlessGrowth - LevelUp- AchievementsExpanded
更新关键模组
模组名称 检查更新 备注
RocketMan.Soyuz Steam 多线程优化,需最新版
ARimworldOfMagic Steam 确保兼容 Biotech DLC
Vanilla Expanded 官网 整个系列需同步更新
调整加载顺序
使用 RimPy 或手动排序:
复制下载1. Core2. DLCs3. Harmony/HugsLib4. 框架类 (VE Framework, JecsTools)5. 机械族控制 (What the Hack, TheDeadManSwitch)6. 技能类模组 7. 其他功能模组
冲突模组深度解析
模组名称 冲突原因 解决方案
ProjectileInversion 未检查 pawn 是否为 null 禁用或等待更新
MadSkillsPlus 强制所有实体获得经验 禁用或设置机械族例外
VFECore 覆盖原版技能学习逻辑 更新至最新版
TheDeadManSwitch 机械族控制不完善 配置机械族工作类型
RocketMan.Soyuz 多线程导致状态不同步 确保加载在技能模组之后
LevelUp 与多个技能模组冲突 建议单独使用
存档修复步骤
打开开发者模式
执行命令:
复制下载Find DMS_Mech_EscortLifter1780815 SelectDestroy
使用 RuntimeGC 清理残留:
复制下载Tools > Remove Null EntriesTools > Clear Pawn Memory
预防措施
添加机械族工作限制
在机械族控制模组(如 Mechanoid Control)中禁止烹饪类工作:
xml复制下载运行<MechanoidWorkSettings> <disallowWorkTypes> <li>Cook</li> <li>Brewing</li> </disallowWorkTypes></MechanoidWorkSettings>
安装冲突检测工具
Better ModMismatch Window
Mod Conflict Detector
典型修复案例
用户报告:类似错误发生在机械族厨师
解决:
禁用 MadSkillsPlus
在 Vanilla Cooking Expanded 设置中关闭 Allow Mech Cooking
安装 Mechs Don't Learn 小型补丁
错误完全消失,机械族可正常工作但不触发学习逻辑。
建议优先尝试精简模组列表,特别是移除或更新 ProjectileInversion 和 MadSkillsPlus。如果问题持续,请提供当前启用的机械族相关模组列表。 |