Skip to content

About

RimWorld 1.6 / 1.7 模组:把米莉拉系模组里原本只能靠商队、兑换或抢掠获得的关键物品接进工作台 —— 谐振子、太阳熔炉炉心模型、六种职阶许可、灵能核心等,共 21 条配方。附批量版与简单模式(简单模式下另可在原版工作台制作,工时 ×2.5)。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

30 Commits

Folders and files

Repository files navigation

米莉拉:关键物品制作补丁

米莉拉的关键物品,不再只能靠运气 —— 21 条配方,让你能自己造。

项目 说明
适用游戏版本 RimWorld 1.6 / 1.7
必需前置 Harmony、米莉拉种族(Ancot.MiliraRace)
可选前置 米莉拉帝国(Ariandel.MiliraImperium,用于帝国专属配方)
支持的语言 简体中文 / 繁體中文 / English
作者 大赢经直插白皮赢道
AI 协作 代码由 AI 助手「DeepSeek娘·汐蓝」辅助编写;设计、需求、审阅与实机验证由作者完成
仓库 / 问题反馈 https://github.com/1579486875/MiliraKeyComponents

📖 这是什么?(不懂技术也能读)

米莉拉系模组里有几样关键物品,它们是很多高级配方的必备材料: 谐振子、太阳熔炉炉心模型、六种职阶许可、灵能核心、卡冈都亚核心、金色米莉拉之羽……

问题是:这些关键件原本都造不出来。 你只能靠商队买、靠贸易换、靠抢掠拿 —— 能拿到多少全看运气,卡在某一步干等半天是常事。

本模组给它们补上了工作台配方,让你可以按部就班地把它们造出来。

💡 它不新增任何物品,也不改变原有获取渠道 —— 只是给「本来拿不到就卡住」的那些关键件,多开一条制作的路。


🚀 三步装好

第 1 步:确认前置都装了:

  • ✅ Harmony(必需)
  • ✅ 米莉拉种族(Ancot.MiliraRace,必需)
  • ⭕ 米莉拉帝国(可选,只为帝国专属配方)

第 2 步:把本文件夹放进模组目录:

<你的 Steam 库>\steamapps\common\RimWorld\Mods\

第 3 步:启动游戏 → 「模组」→ 勾选启用。

排序:放在米莉拉种族之后。About.xml 里已声明 loadAfter(Harmony、米莉拉种族、米莉拉帝国),自动排序基本能处理对。


🎮 装好之后怎么用?

不用做任何事。 配方会自动出现在对应的工作台上。

⚠️ 但要先研究:21 条配方全部带研究前置(researchPrerequisite), 和原版的高级配方一样,对应的科技没解锁之前不会出现在制作列表里。 研究前置各不相同(Milira_UniversalPrinter、Milira_SunBlastFurnace_Build、 Milira_Imperium_MatterWeaving 等),清单见下方「配方明细」表。

早先这里写的是「不需要额外研究」——那句是错的, 与同一份文档下面 FAQ 里的「部分高级配方需要先研究」也自相矛盾。2026-10-12 订正。

在哪儿造?

工作台 效果
米莉拉自己的工作台(通用工作台 / 太阳熔炉 / 引力织造器) 原速制作 ⭐ 推荐
原版工作台(机械加工台 / 精密装配台) 同样能造,但工作量 ×2.5

为什么要 ×2.5?这是一个刻意的平衡设计: 米莉拉自己的台子才是「正路」,用原版台子属于「凑合能造」, 所以慢一些。想要快就用米莉拉自己的台子。

材料种类少(3 种以内)的配方走机械加工台; 4 种以上材料的、以及批量配方,一律走精密装配台。

模组设置

选项 → 模组设置 → 米莉拉:关键件制造

设置 说明
制作模式 平衡 / 简单。简单模式会进一步降低门槛

❓ 常见问题

Q1:为什么我造不出来?

按顺序确认:

  1. 前置都装了吗? 尤其是米莉拉种族 —— 没装的话配方不会出现。
  2. 工作台对吗? 见上面那张表。用米莉拉自己的工作台最快。
  3. 材料够吗? 配方要求的材料里有几个是米莉拉系特有的。
  4. 研究解锁了吗? —— 这是最常见的原因。21 条配方全部带研究前置, 科技没解锁就一条都不会出现(前置分别是 Milira_UniversalPrinter、 Milira_SunBlastFurnace_Build、Milira_Imperium_MatterWeaving 等, 见上方「配方明细」表)。

Q2:会影响原版的平衡吗?

设计上遵循一条原则:不凭空造,第一枚仍然得走原渠道。

也就是说,本模组是给「卡住了」的玩家一条后路, 而不是把稀有物品变成大白菜 —— 制作成本不低, 而且用原版工作台还要 ×2.5 工作量。 每种物品的成本对照与门槛原理,见下面「四、平衡原则」。


Q3:只装了米莉拉种族、没装米莉拉帝国,会报错吗?

不会。 帝国专属配方带 MayRequire 守卫: 没装米莉拉帝国时,那几条配方会被整条跳过,不产生任何报错。


Q4:支持英文游戏吗?

支持。配方名称、说明、界面文字都有简体中文 / 繁體中文 / English 三套。


Q5:可以中途卸载吗?

可以。但如果你已经造出了这些物品,它们会留在存档里 (本模组不新增物品,只是加配方,所以不会有「物品失效」的问题)。


Q6:它和别的米莉拉扩展冲突吗?

没有已知冲突。如果你的另一个模组也加了同样的配方, 游戏会以后加载的那个为准 —— 通常不影响使用。


Q7:怎么确认它生效了?

启动游戏后,日志里搜 [MKC],应该看到两行:

[MKC] Vanilla workbench work penalty installed. Bill.GetWorkAmount postfixes = 1, multiplier = 2.5x.
[MKC] Recipe tuning applied: 21 recipe(s), mode=balanced.

看到这两行 = 正常工作了。


🔧 出问题了怎么排查

第 ① 步:看日志

搜 [MKC]:

情况 含义
看到上面那 2 行 模组已加载并生效 ✓
一行都没有 模组没被加载 → 检查是否勾选、前置是否齐全
有 Could not resolve cross-reference 缺前置模组 → 检查米莉拉种族是否启用

第 ② 步:检查配方是否出现

打开对应的工作台 → 看配方列表里有没有「谐振子」等条目。

没有的话:确认工作台类型对了没有(见上面的表)、前置模组启用没有。

第 ③ 步:提 Issue 时请附上

  • Player.log 里含 [MKC] 的行;
  • 你启用的米莉拉系模组列表;
  • 具体是哪一条配方没有出现。

🧩 兼容性一览

存档里到底写了什么(2026-10-12 实测订正)

本模组的程序集含一个 MiliraKeyComponents.MKC_GameComponent(用来做设置界面与 GetWorkAmount 补丁的宿主)。RimWorld 把每个 GameComponent 的类型名写进存档, 所以存档里会出现一行 <li Class="MiliraKeyComponents.MKC_GameComponent" />。

实测:37 个存档中,装载过本模组的存档里确实有这一行(Autosave-2.rws 等); 而 21 条配方 defName(GNH_Recipe_*)在存档里出现 0 次 —— 配方本身不入档。

移除本模组后读档会怎样:那行类型名找不到类,游戏会报 2 条 Could not find class ... 红字,然后自动跳过并清理(不会崩、不会坏档)。 存档从此不再有这一行。

⚠️ 早先这里写的是「不写存档数据」/「不往存档里写任何数据」—— 那句话不准确(类型名确实会入档)。现在如实写明。

项目 情况
RimWorld 版本 1.6 / 1.7
必需前置 Harmony、米莉拉种族(Ancot.MiliraRace)
可选前置 米莉拉帝国(Ariandel.MiliraImperium)
支持语言 简体中文 / 繁體中文 / English
存档安全 ✅ 加装 / 移除都不需要重开档;本模组会在存档里留一个空的 GameComponent 占位(见下方说明)
冲突 无已知冲突
缺可选前置时 对应配方整条跳过,不报错

觉得有用就去创意工坊点个赞 / 收藏 ⭐

问题反馈:https://github.com/1579486875/MiliraKeyComponents/issues



📚 技术资料

⚠️ 以下内容面向开发者与排查者:配方明细与分层、 配料格机制、平衡原则、软依赖的实现方式、极端场景加固推演。

普通玩家不需要读这一部分。

米莉拉:关键物品制作补丁 / Milira: Key Component Patch

📦 下载:最新版本(Release) —— 下载 zip,解压后放进 Mods\ 目录,排在米莉拉天空精灵之后。

把米莉拉系模组里只能靠兑换、贸易或任务获得的关键件接回生产链。

软依赖设计:装多少,解锁多少。 只装米莉拉本体就能用(15 条配方);再装米帝拓展会自动解锁另外 6 条。

  • packageId:gnh.cn.cys.milirakeycomponents
  • 支持版本:1.6 / 1.7 | 模组版本:1.6.13
  • 必需依赖:米莉拉天空精灵(Ancot.MiliraRace,工坊 3256974620)
  • 必需依赖:Harmony(brrainz.harmony,工坊 2009463077)—— v1.6.7 起,原因见下面的「原版工作台制作」
  • 可选依赖:米莉拉派系:米莉拉帝国(Ariandel.MiliraImperium,工坊 3588393755)

一、软依赖是怎么实现的

用 LoadFolders.xml 的 IfModActive 做文件夹级条件加载:

<loadFolders>
  <v1.6>
    <li>Common</li>                                              <!-- 永远加载 -->
    <li IfModActive="Ariandel.MiliraImperium">MiliraImperium</li>  <!-- 装了米帝才加载 -->
  </v1.6>
</loadFolders>

基础部分放在 Common 这个明确子文件夹里,而不是用 <li>.</li> 表示根目录。 原因是 ModContentPack.InitLoadFolders 内部按 Path.Combine(RootDir, folderName) 拼路径:写 . 会得到 …\ModName\. 这种不规范路径, 写 / 反而会被 Path.Combine 判定成根路径、把模组目录整个丢掉。用明确子文件夹最直观也最稳。

还有两条反编译确认的事实,也都支持这个写法:

① 只要 LoadFolders.xml 的 <v1.6> 段有内容,InitLoadFolders 会在 AddFolders(list) 之后直接 return —— 模组根目录不会被加进加载列表(只有完全没有 LoadFolders.xml 时,才会另外补上 RootDir 与 RootDir\Common)。也就是说:写了这个文件之后, 根目录下的 Defs / Patches / Languages / Assemblies 都不再被扫描。 本模组把内容全部放进 Common / MiliraImperium,正好避开这一点。 ② Common 不是随便起的名字,而是 RimWorld 的官方约定名(ModContentPack.CommonFolderName); 全库实测有 30 个模组采用 Common\Defs 结构。用它等于跟着约定走。

好处是配方和它的翻译待在同一个文件夹里:没装米帝时两边一起不加载, 不会出现「翻译 key 找不到对应 Def」之类的报错。


二、配方总览(按生产力分层)

物品 市价 工作台 台面格数 材料种类 需要米帝
谐振子 Milira_ResonatorCore 100 米莉拉通用工作台 2×1 = 2 2 ✗
职阶许可:士兵 Milian_NamePlate_Pawn 60 米莉拉通用工作台 2×1 = 2 2 ✗
职阶许可:骑士 Milian_NamePlate_Knight 120 米莉拉通用工作台 2×1 = 2 2 ✗
职阶许可:主教 Milian_NamePlate_Bishop 120 米莉拉通用工作台 2×1 = 2 2 ✗
职阶许可:战车 Milian_NamePlate_Rook 200 米莉拉通用工作台 2×1 = 2 2 ✗
职阶许可:国王 Milian_NamePlate_King 1200 太阳熔炉 3×2 = 6 4 ✗
职阶许可:王后 Milian_NamePlate_Queen 1200 太阳熔炉 3×2 = 6 4 ✗
太阳熔炉炉心模型 Milira_FurnaceCoreModel 2000 太阳熔炉 3×2 = 6 4 ✗
灵能核心 Milira_PsionicCore 1500 引力织造器 3×3 = 9 6 ✓
卡冈都亚核心 Milira_GargantuaCore 1500 引力织造器 3×3 = 9 6 ✓
金色米莉拉之羽 Milira_Feather_gold 1500 引力织造器 3×3 = 9 3 ✓

设计逻辑:基础小件放基础工作台,高阶大件放高阶工作台。 谐振子只是 100 银的部件,就放在只有 2 格台面的通用工作台上(因此只允许 2 种材料); 炉心模型是太阳熔炉自己的核心组件,就放回太阳熔炉里铸造; 帝国货币与核心件属于米帝的物质重构范畴,统一挂在引力织造器上。

注:谐振子目前是「未实装内容的材料」。 米莉拉本体里,谐振子的下游是「谐振仪」(Milira_ResonatorPack_*)——一件可部署的背包,落地后生成一台自带弹幕护盾、给范围内同职阶米莉安叠加「调谐 I~IV」(操作 +0.64、瞄准延迟 −0.9)的谐振器,30 秒后自毁;谐振子既是它的造价材料(4 个/件),也是它的装填弹药(1 个/发)。 但这整条线在 1.6 里是注释状态:Apparel_Utility.xml 214–372 行、Buildings_Deploy.xml 147–261 行、Buildings_Cluster.xml 339 行起都没生效,1.5 目录里的注释位置一模一样;扫过整个工坊目录也只有米莉拉本体引用这个 defName,Milira.dll 里没有任何代码引用它。 所以补丁保留了谐振子的配方:成本 132 略高于市价 100,不构成套利;它的意义是稳定货源(不必等商队),并且本体哪天放出谐振仪就能立刻接上。游戏内配方描述里也写明了这一点。


✦ 模组设置:简单模式

选项 → 模组设置 → 米莉拉:关键件制造,里面有一个「简单模式」开关:

档位 材料 工作量 适用人群
关闭(默认) 100% 100% 作者配平档:材料成本 ≈ 产物市价,不产生套利
开启 50% 20% 偏好正义模组的玩家

实现要点(设置与数值改写都在 Source/MKC_Mod.cs 里; 原版工作台那处 Harmony 补丁在同目录的 Source/MKC_VanillaBenchPatch.cs):

  • 数值改写为主,另有一处 Harmony 补丁:设置里的材料 / 工作量改写是纯数据操作(启动与设置变更时直接改写 DefDatabase 里本模组配方的字段);但 v1.6.7 新增的「原版工作台制作」必须用 Harmony(下节详述),所以本版起需要 Harmony 前置。
  • 绝不碰原模组:改写范围严格限定在 defName 以 GNH_Recipe_ 开头的配方。
  • 首次 Apply 时缓存原始值:之后所有改写都从缓存的原值算出,反复开关不会出现「越调越离谱」的累积误差。
  • 勾选后立即生效:DoSettingsWindowContents 检测到变化就重算,不必重开游戏。
  • 三语界面:设置文字走 Keyed 翻译(简中 / 繁中 / English)。
  • 第四语言兜底:RimWorld 的语言加载是按当前语言的文件夹名精确匹配的(见 Verse.LoadedLanguage 的构造逻辑),因此玩家若使用本模组未提供的语言(日语、俄语等),Keyed 不会被加载,Translate() 会原样返回 key 名。代码里对设置界面文字做了英文兜底,避免界面出现 MKC_SimpleMode 这类字样。(Def 内容不需要这层兜底——DefInjected 缺失时 RimWorld 会自动使用 Defs 里内建的英文。)

原版工作台制作(v1.6.7 新增)

简单模式开启后,这些关键物品除了米莉拉自己的工作台,也可以放在合适的原版工作台制作:

配方材料种类 可在哪张原版工作台制作 工时
≤ 3 种,且不是批量配方 机械加工台 TableMachining ×2.5
≥ 4 种,或者是批量配方 精密装配台 FabricationBench ×2.5

在米莉拉自己的工作台上仍是原速。所以这是「应急通路」:手上还没有米莉拉工作台时也能造出来, 但代价明显,不会让米莉拉工作台失去意义。

为什么这一步非用 Harmony 不可

RecipeDef 里的工时是配方自己的字段,改它会让所有工作台一起变 —— 没有任何纯数据写法 能表达「同一个配方、只在这一张工作台上延长」。而 Verse.Bill 身上带着 billStack.billGiver(也就是那台工作台),所以只能在 Bill.GetWorkAmount 这一层做区分。

补丁只影响本模组自己的 21 条配方:判定 = 配方名以 GNH_Recipe_ 开头 且 来源模组就是本模组。 这道判定不可放宽 —— 机械加工台与精密装配台在原版就是最常用的两张制作台, 实测两者 recipeUsers 加起来有 600+ 条配方,其中原版就有 95 条 (防弹夹克、动力装甲、高级头盔、防毒面具、零部件……), 判定一旦放宽,简单模式一开就会把它们一起乘 2.5,等于把整个游戏的手工速度砍掉一大半。

⚠️ 程序集的存在理由不止设置界面:RimWorld 的模组设置界面由 Mod.DoSettingsWindowContents 提供、 纯 XML 无法实现;v1.6.7 起还多了上面这个 Harmony 补丁。

⚠️ 已知显示偏差:×2.5 时进度条不对(实际工时是对的)

先说结论:用原版工作台制作时,实际耗时确实是 2.5 倍, 完成判定、成品数量、材料消耗全部正确 —— 只有进度条和配方配置窗口显示的工时 不对。这是原版 API 的边界,不是本模组的 bug,但会让人以为「怎么卡住了」。

根因(反编译证据):

用途 走哪个方法 有没有 ×2.5
真正扣工时、判定完成 Verse.Toils_Recipe.<DoRecipeWork>b__0 → bill.GetWorkAmount(thing) 有(补丁挂在这里)
进度条 同一个方法里的闭包 → recipe.WorkAmountTotal(thing) 没有
配方配置窗口显示的基础工时 Dialog_BillConfig / RecipeDef.SpecialDisplayStats → WorkAmountTotal(null) 没有

关键在入参:WorkAmountTotal(Thing) 拿到的只有产物,拿不到「在哪张工作台上做」, 而 ×2.5 恰恰取决于工作台 —— 所以那条路径天然算不出 2.5 倍。

表现:

  • 进度条前 60% 停在 0% 不动,之后 40% 才走满 (进度按 1 − 剩余/WorkAmountTotal 算,初始 = 1 − 2.5W/W = −1.5,被钳到 0);
  • 配方配置窗口写的基础工时比实际小 2.5 倍。

要不要修:要彻底修得让「原版工作台用的配方」变成另一批独立 defName 的配方 (21 条变 42 条),那样 WorkAmountTotal 才会是各自正确的值。 代价是配方数量翻倍、与上游 defName 的对应关系变复杂。目前选择如实说明、不改设计。

✦ 批量生产配方

除「太阳熔炉炉心模型」这类一次性科技道具外,每条单件配方都配了一个 _Bulk 批量版本(共 10 条),玩法与原模组的「熔炼钢渣 x3」同类。

工作台 台面格数 批量倍率 原因
米莉拉通用工作台 2 x10 两种材料各 1 堆即可容纳(日凌晶 40/50、工业件 30/50)
太阳熔炉 6 x3 国王占 4 格、王后占 5 格;再往上就会溢出
引力织造器 9 灵能核心 / 金色羽毛 x5、卡冈都亚核心 x3 卡冈都亚核心要吃灵能核心,而后者堆叠上限为 1,每多产一个多占一格(x3 已占 8 格)

倍率不是拍脑袋定的:批量会让材料用量同比放大,材料占用的格数随之上升(ceil(数量 / 堆叠上限)),必须留出台面余量。

工作量:批量工作量 ≈ 单件工作量 × 倍率 × 0.85,再把结果取整到易读值(实测多为 500 的整数倍,例如 1200×10×0.85=10200 → 10000);约 15% 的规模折扣(与原模组 Bulk 配方的取法一致)。

批量配方 产出 工作量
打印谐振子 x10 谐振子 ×10 10000
刻蚀职阶许可:士兵 x10 士兵 ×10 8500
刻蚀职阶许可:骑士 x10 骑士 ×10 12500
刻蚀职阶许可:主教 x10 主教 ×10 12500
刻蚀职阶许可:战车 x10 战车 ×10 17000
刻蚀职阶许可:国王 x3 国王 ×3 17500
刻蚀职阶许可:王后 x3 王后 ×3 17500
织造灵能核心 x5 灵能核心 ×5 25000
织造卡冈都亚核心 x3 卡冈都亚核心 ×3 22500
织造金色米莉拉之羽 x5 金色米莉拉之羽 ×5 25000

三、配方明细

① 谐振子 ×1 | 米莉拉通用工作台(无需米帝)

材料 数量 单价 小计
日凌晶 Milira_SolarCrystal 4 25 100
工业零部件 ComponentIndustrial 1 32 32
合计 2 种 / 2 格 ≈132 银
  • 前置研究:通用工作台 Milira_UniversalPrinter | 工作量 1200

✦ 职阶许可(士兵 / 骑士 / 主教 / 战车 / 国王 / 王后)(无需米帝)

米莉安的身份识别芯片(class permit),原渠道只有米莉拉商队、教会贡品收集者与米帝工程院。 其中士兵 / 骑士 / 主教 / 战车被用作米莉安装备的建造材料,国王 / 王后是最高职阶的凭证。

许可 材料 成本 市价 倍率 工作台
士兵 Milian_NamePlate_Pawn 日凌晶 1 + 工业零部件 1 57 60 0.95 米莉拉通用工作台
骑士 Milian_NamePlate_Knight 日凌晶 2 + 工业零部件 2 114 120 0.95 米莉拉通用工作台
主教 Milian_NamePlate_Bishop 日凌晶 3 + 工业零部件 1 107 120 0.89 米莉拉通用工作台
战车 Milian_NamePlate_Rook 日凌晶 4 + 工业零部件 3 196 200 0.98 米莉拉通用工作台
国王 Milian_NamePlate_King 日盘钢 20 + 日凌晶 15 + 高级零部件 2 + 黄金 20 1335 1200 1.11 太阳熔炉
王后 Milian_NamePlate_Queen 日盘钢 15 + 日凌晶 20 + 高级零部件 2 + 翡翠 20 1270 1200 1.06 太阳熔炉
  • 前置研究:低阶四种为「通用工作台」Milira_UniversalPrinter;国王/王后为「太阳熔炉建造」Milira_SunBlastFurnace_Build
  • 工作量:士兵 1000、骑士 1500、主教 1500、战车 2000、国王/王后 7000
  • 数值取舍:
    • 士兵 → 战车按职阶递进增加刻蚀复杂度,成本与市价基本持平
    • 主教是灵能职阶,线路本身承担更多灵能负载,所以更吃日凌晶(3 枚)而少用机械件
    • 战车是重装职阶,芯片线路最密、承载件最多
    • 国王侧重军权统御 → 以锻钢与黄金为骨;王后侧重神权灵能 → 以晶石与翡翠为骨

② 太阳熔炉炉心模型 ×1 | 太阳熔炉(无需米帝)

材料 数量 单价 小计
日盘钢 Milira_SunPlateSteel 40 18 720
日凌晶 Milira_SolarCrystal 30 25 750
高级零部件 ComponentSpacer 2 200 400
玻璃钢 Plasteel 20 9 180
合计 4 种 / 6 格 ≈2050 银
  • 前置研究:太阳熔炉建造 Milira_SunBlastFurnace_Build | 工作量 8000
  • 市价 2000 银,自制 ≈1.03 倍:基本等值,不产生套利空间

③ 灵能核心 ×1 | 引力织造器(需要米帝)

材料 数量 单价 小计
虚境凌晶 Milira_ShroudCrystal 1 1800 1800
日凌晶 Milira_SolarCrystal 15 25 375
零素 Milira_Neutronium 10 ≈63 630
暗物质 Milira_DarkMatter 1 300 300
黄金 Gold 15 10 150
翡翠 Jade 10 5 50
合计 6 种 / 9 格 ≈3305 银
  • 前置研究:物质编织 Milira_Imperium_MatterWeaving | 工作量 6000

④ 卡冈都亚核心 ×1 | 引力织造器(需要米帝)

材料 数量 单价 小计
灵能核心 Milira_PsionicCore 1 1500 1500
零素 Milira_Neutronium 20 ≈63 1260
暗物质 Milira_DarkMatter 3 300 900
日盘钢 Milira_SunPlateSteel 15 18 270
黄金 Gold 15 10 150
翡翠 Jade 10 5 50
合计 6 种 / 9 格 ≈4130 银
  • 前置研究:暗物质约束 Milira_Imperium_DarkMatterConstraint | 工作量 9000

⑤ 金色米莉拉之羽 ×1 | 引力织造器(需要米帝)

材料 数量 单价 小计
米莉拉之羽 Milira_Feather 20 12 240
虚境灵尘 MI_Thing_ShroudAsh 1 1500 1500
黄金 Gold 30 10 300
合计 3 种 / 9 格 ≈2040 银
  • 前置研究:灵能利刃 Milira_ImperiumPsyBlade | 工作量 6000
  • 选用虚境灵尘对应原描述「注入了微量超凡粉尘的米莉拉之羽」
  • 市价 1500 银,自制 ≈1.36 倍:刻意更贵,否则它会变成印钞机

四、平衡原则:第一枚必须走原渠道

「第一枚」指的是:这类关键物品,你得先从正常渠道拿到一个,之后才能靠工作台自己造。 本模组不是一键解锁,每项都通过下面两种方式之一保住了原来的获取渠道:

  • 硬门槛 —— 配方挂在某个工作台上,而那个工作台本身要先有这件东西才能解锁 (太阳熔炉炉心模型、灵能核心、卡冈都亚核心都属于这种);
  • 成本门槛 —— 可以直接造,但自制成本不低于市价,所以自己造只是 「不想再碰运气」时的选择,不是套利手段。
物品 第一枚怎么来 之后怎么自给
谐振子 米莉拉商队 通用工作台自制(谐振仪未实装,目前只作储备/贸易品)
太阳熔炉炉心模型 米莉拉商队 / 米帝工程院商船 太阳熔炉里铸造
灵能核心 金色羽毛兑换 / 海盗据点任务 造出引力织造器后自制
卡冈都亚核心 金色羽毛兑换 / 海盗据点任务 同上
金色米莉拉之羽 帝国骑士头衔后定期领取 引力织造器自制(2040 > 1500,无套利)

两处自举闭环(设计核心):

贸易买 1 枚炉心模型 → 分析解锁「太阳熔炉建造」研究
   → 造出太阳熔炉 → 炉心模型本身也能铸造了(等价成本,不套利)

兑换 1 个灵能核心 → 造出引力织造器(造价含灵能核心 1)
   → 灵能核心 / 卡冈都亚核心 / 金色羽毛 全部可自制

五、配料格机制(为什么材料种类不能乱加)

反编译 RimWorld 本体可确认:

// RimWorld.Building_WorkTable
public IEnumerable<IntVec3> IngredientStackCells => GenAdj.CellsOccupiedBy(this);

配料位就是工作台自身占用的格子数:通用工作台 2×1 → 只有 2 格; 太阳熔炉 3×2 → 6 格;引力织造器 3×3 → 9 格。

因此本模组的两条硬约束:

  1. 材料种类 ≤ 台面格数(否则材料会溢出到台面外)
  2. 每种材料用量 ≤ 其堆叠上限(保证每种只占 1 格)

核对结果:谐振子 2/2、炉心模型 4/6、灵能核心 6/9、卡冈都亚核心 6/9、金色羽毛 3/9 —— 全部合规。

供参考,本体在配料格不足时会 fallback 到候选格(Toils_JobTransforms.SetTargetToIngredientPlaceCell), 不会直接卡死,但会溢出到台面外,所以这里按硬约束设计。


六、新增的 Def

defName 类型 说明 加载条件
GNH_Recipe_ResonatorCore RecipeDef 打印谐振子 总是
GNH_Recipe_NamePlate_Pawn RecipeDef 刻蚀职阶许可:士兵 总是
GNH_Recipe_NamePlate_Knight RecipeDef 刻蚀职阶许可:骑士 总是
GNH_Recipe_NamePlate_Bishop RecipeDef 刻蚀职阶许可:主教 总是
GNH_Recipe_NamePlate_Rook RecipeDef 刻蚀职阶许可:战车 总是
GNH_Recipe_NamePlate_King RecipeDef 刻蚀职阶许可:国王 总是
GNH_Recipe_NamePlate_Queen RecipeDef 刻蚀职阶许可:王后 总是
GNH_Recipe_ResonatorCore_Bulk RecipeDef 打印谐振子 x10 总是
GNH_Recipe_NamePlate_Pawn_Bulk RecipeDef 刻蚀职阶许可:士兵 x10 总是
GNH_Recipe_NamePlate_Knight_Bulk RecipeDef 刻蚀职阶许可:骑士 x10 总是
GNH_Recipe_NamePlate_Bishop_Bulk RecipeDef 刻蚀职阶许可:主教 x10 总是
GNH_Recipe_NamePlate_Rook_Bulk RecipeDef 刻蚀职阶许可:战车 x10 总是
GNH_Recipe_NamePlate_King_Bulk RecipeDef 刻蚀职阶许可:国王 x3 总是
GNH_Recipe_NamePlate_Queen_Bulk RecipeDef 刻蚀职阶许可:王后 x3 总是
GNH_Recipe_PsionicCore_Bulk RecipeDef 织造灵能核心 x5 装了米帝
GNH_Recipe_GargantuaCore_Bulk RecipeDef 织造卡冈都亚核心 x3 装了米帝
GNH_Recipe_GoldenMiliraFeather_Bulk RecipeDef 织造金色米莉拉之羽 x5 装了米帝
GNH_Recipe_FurnaceCoreModel RecipeDef 铸造太阳熔炉炉心模型 总是
GNH_Recipe_PsionicCore RecipeDef 织造灵能核心 装了米帝
GNH_Recipe_GargantuaCore RecipeDef 织造卡冈都亚核心 装了米帝
GNH_Recipe_GoldenMiliraFeather RecipeDef 织造金色米莉拉之羽 装了米帝

命名统一带 GNH_ 前缀,已确认全库无重名。


✦ 兼容性推演与加固(极端场景)

这一节记录"大胆假设、小心验证"的极端场景推演结果:

极端场景假设 验证结果
只装米莉拉本体(无米帝) ✅ Base 组 8 条配方的 23 个引用全部来自本体无条件主模块 + 原版
本体 + 米帝,但无 Odyssey / Ideology / Anomaly ✅ Imperium 组引用的 18 个 Def 全在米帝无条件主模块,不受条件子模块影响
未安装 Biotech DLC ⚠️→✅ 6 种职阶许可定义在本体的 1.6\Mods\Biotech\ 条件模块里。本体虽在 About.xml 强制依赖 Biotech,但这 6 条配方仍显式标注 MayRequire="Ludeon.RimWorld.Biotech" 兜底:缺失时静默跳过,而不是抛红字
旧版本模组目录/标识残留 ✅ 已扫描:全库只有一个 gnh.cn.cys.milirakeycomponents。2026-10-01 按作者签名(GNH-CN-CYS)把 taml. / TAML_ 统一改为 gnh.cn.cys. / GNH_,旧目录已清除,不会重复定义;改前的副本已在本地留存备份
加载顺序被排到本体/米帝之前 ✅ About.xml 已声明 loadAfter;且 RimWorld 的 Def 加载是两阶段(先收集再 ResolveReferences),跨模组引用本身不依赖顺序
配方之间形成循环依赖 ✅ 唯一的产物间引用是「卡冈都亚核心 ← 灵能核心」,单向无环,不存在自锁
经济套利(造出来卖给商人) ✅ 11 条配方的材料成本全部 ≥ 产物市场价格,而商人收购价只有市价的 5~6 成 —— 卖了必亏
游戏语言不是简中/繁中/英文 ✅ 会回落到 Defs 内建的英文 label,不会出现空白文本
游戏版本为 1.5 ✅ supportedVersions 只声明 1.6 / 1.7,1.5 环境下不会加载
产物被后续配方复用形成雪球 ✅ 只有卡冈都亚核心消耗灵能核心,其余配方都吃基础材料,无滚雪球路径

引用来源分层(全 36 个引用)

来源 数量 加载条件
原版 Data 7 无条件
本体无条件主模块 12 无条件
本体 Biotech 子模块 6 条件 = Biotech(本体强制依赖 + 本模组 MayRequire 兜底)
米帝无条件主模块 11 无条件(装了米帝时)

七、安装

  1. 把整个 米莉拉关键物品制作补丁-MiliraKeyComponentPatch 文件夹放进 …\RimWorld\Mods\
  2. 在模组列表里启用它,位置放在「米莉拉天空精灵」之后 (若装了米帝,也放在「米莉拉帝国」之后)
  3. 旧存档可直接加装,无需新开档

八、怎么确认生效

  • 装了米帝:建造 米莉拉通用工作台、太阳熔炉、引力织造器, 添加清单搜索「打印」「铸造」「织造」,应能看到 21 条配方(11 种物品,其中 10 种另有批量版)
  • 只装本体:前两台工作台上应能看到「打印谐振子」「铸造太阳熔炉炉心模型」, 且日志中不会出现 GNH_Recipe_PsionicCore 之类的缺失报错
  • 正常情况游戏日志(Player.log)里关于 GNH_Recipe_ 的红字应为 0 条

九、想调整

改这两个文件即可,存盘后重进游戏生效:

  • Common\Defs\MiliraKeyComponents_Base.xml —— 本体部分的 8 条配方
  • Common\Defs\MiliraKeyComponents_Bulk.xml —— 本体部分的 7 条批量配方
  • MiliraImperium\Defs\MiliraKeyComponents_Imperium.xml —— 米帝部分的 3 条配方

可调项:<count>(材料量)、<workAmount>(工作量)、<researchPrerequisite>(研究前置)、 <recipeUsers>(工作台)。

注意两条红线:材料种类别超过该工作台的台面格数,单项用量别超过它的堆叠上限(见第五节)。


十、文件结构

米莉拉关键物品制作补丁-MiliraKeyComponentPatch/
├── About/
│   └── About.xml
├── LoadFolders.xml                                    ← 条件加载规则
├── Common/                                            ← 总是加载(只需本体)
│   ├── Assemblies/
│   │   └── MiliraKeyComponents.dll                    ← 程序集(设置界面 + ×2.5 工时补丁)
│   ├── Defs/
│   │   ├── MiliraKeyComponents_Base.xml               ← 单件配方 8 条
│   │   └── MiliraKeyComponents_Bulk.xml               ← 批量配方 7 条
│   └── Languages/
│       ├── ChineseSimplified/DefInjected/RecipeDef/MiliraKeyComponents_Base.xml
│       ├── ChineseSimplified/DefInjected/RecipeDef/MiliraKeyComponents_Bulk.xml
│       ├── ChineseSimplified/Keyed/MKC_Keys.xml
│       ├── ChineseTraditional/…(同上三件)
│       └── English/…(同上三件)
├── MiliraImperium/                                    ← 仅装了米帝时加载
│   ├── Defs/
│   │   ├── MiliraKeyComponents_Imperium.xml           ← 单件配方 3 条
│   │   └── MiliraKeyComponents_ImperiumBulk.xml       ← 批量配方 3 条
│   └── Languages/…(三语各两件)
├── Common/Textures/MKC/                               ← 模组图标(About.xml 的 modIconPath 指这里)
│   ├── ModIcon.png
│   └── ModIcon.dds.zstd
├── Source/                                            ← ⚠ 以下只在 git 仓库里,不随发布 zip 分发
│   ├── MiliraKeyComponents.csproj                     ← 编译配置(net48)
│   ├── MKC_Mod.cs                                     ← 设置界面 + 数值调节器
│   ├── MKC_VanillaBenchPatch.cs                       ← ×2.5 工时补丁(v1.6.7 起)
│   └── AssemblyInfo.cs
└── README.md

编译:dotnet build "Source\MiliraKeyComponents.csproj" -c Release -p:RimWorldDir="<RimWorld 目录>" 产物自动落到 Common\Assemblies\——必须放在 LoadFolders 列出的文件夹下,否则不会被加载。

⚠️ LoadFolders.xml 里不要用 <li>.</li> 表示根目录,改用显式的子文件夹名(本模组用 Common)。 反编译 ModContentPack.InitLoadFolders 可见,它按 Path.Combine(RootDir, folderName) 拼路径: 写 . 会得到 …\ModName\. 这种不规范路径;而写 / 更糟 —— Path.Combine 会判定它是根路径、 把模组目录整个丢掉。用明确的子文件夹既直观,又不会踩这两个坑。


开发与构建

本仓库同时是该模组的源码仓库。

环境要求:.NET SDK(目标框架 net48)、RimWorld 1.6

编译:不需要把游戏 DLL 复制进仓库 —— 用参数指向你自己的游戏安装目录即可:

dotnet build "Source\MiliraKeyComponents.csproj" -c Release `
    -p:RimWorldDir="<你的 RimWorld 安装目录>"

产物直接输出到 Common\Assemblies\MiliraKeyComponents.dll(仓库内已附编译好的 dll)。

目录结构

路径 说明
Source/ C# 源码与工程文件
Common/ 主模块:Defs、三语翻译、贴图、程序集
MiliraImperium/ 米莉拉帝国拓展的附加配方(软依赖)
LoadFolders.xml 条件加载:装了帝国拓展才加载 MiliraImperium/
About/ 模组元数据与预览图

许可:MIT

创意工坊:米莉拉:关键物品制作补丁(3812443768)

依赖:米莉拉天空精灵(Ancot.MiliraRace);装了 米莉拉帝国拓展 会自动多出 3 种物品、共 6 条配方(灵能核心、卡冈都亚核心、金色米莉拉之羽,各有单件版与批量版)。

About

RimWorld 1.6 / 1.7 模组:把米莉拉系模组里原本只能靠商队、兑换或抢掠获得的关键物品接进工作台 —— 谐振子、太阳熔炉炉心模型、六种职阶许可、灵能核心等,共 21 条配方。附批量版与简单模式(简单模式下另可在原版工作台制作,工时 ×2.5)。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages