米莉拉的关键物品,不再只能靠运气 —— 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、米莉拉种族、米莉拉帝国),自动排序基本能处理对。
不用做任何事。 配方会自动出现在对应的工作台上。
researchPrerequisite),
和原版的高级配方一样,对应的科技没解锁之前不会出现在制作列表里。
研究前置各不相同(Milira_UniversalPrinter、Milira_SunBlastFurnace_Build、
Milira_Imperium_MatterWeaving 等),清单见下方「配方明细」表。
早先这里写的是「不需要额外研究」——那句是错的, 与同一份文档下面 FAQ 里的「部分高级配方需要先研究」也自相矛盾。2026-10-12 订正。
| 工作台 | 效果 |
|---|---|
| 米莉拉自己的工作台(通用工作台 / 太阳熔炉 / 引力织造器) | 原速制作 ⭐ 推荐 |
| 原版工作台(机械加工台 / 精密装配台) | 同样能造,但工作量 ×2.5 |
为什么要 ×2.5?这是一个刻意的平衡设计: 米莉拉自己的台子才是「正路」,用原版台子属于「凑合能造」, 所以慢一些。想要快就用米莉拉自己的台子。
材料种类少(3 种以内)的配方走机械加工台; 4 种以上材料的、以及批量配方,一律走精密装配台。
选项 → 模组设置 → 米莉拉:关键件制造
| 设置 | 说明 |
|---|---|
| 制作模式 | 平衡 / 简单。简单模式会进一步降低门槛 |
Q1:为什么我造不出来?
按顺序确认:
- 前置都装了吗? 尤其是米莉拉种族 —— 没装的话配方不会出现。
- 工作台对吗? 见上面那张表。用米莉拉自己的工作台最快。
- 材料够吗? 配方要求的材料里有几个是米莉拉系特有的。
- 研究解锁了吗? —— 这是最常见的原因。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 |
缺前置模组 → 检查米莉拉种族是否启用 |
打开对应的工作台 → 看配方列表里有没有「谐振子」等条目。
没有的话:确认工作台类型对了没有(见上面的表)、前置模组启用没有。
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
⚠️ 以下内容面向开发者与排查者:配方明细与分层、 配料格机制、平衡原则、软依赖的实现方式、极端场景加固推演。普通玩家不需要读这一部分。
📦 下载:最新版本(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.xml214–372 行、Buildings_Deploy.xml147–261 行、Buildings_Cluster.xml339 行起都没生效,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里内建的英文。)
简单模式开启后,这些关键物品除了米莉拉自己的工作台,也可以放在合适的原版工作台制作:
| 配方材料种类 | 可在哪张原版工作台制作 | 工时 |
|---|---|---|
| ≤ 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 倍, 完成判定、成品数量、材料消耗全部正确 —— 只有进度条和配方配置窗口显示的工时 不对。这是原版 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 |
| 材料 | 数量 | 单价 | 小计 |
|---|---|---|---|
日凌晶 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 枚)而少用机械件
- 战车是重装职阶,芯片线路最密、承载件最多
- 国王侧重军权统御 → 以锻钢与黄金为骨;王后侧重神权灵能 → 以晶石与翡翠为骨
| 材料 | 数量 | 单价 | 小计 |
|---|---|---|---|
日盘钢 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 倍:基本等值,不产生套利空间
| 材料 | 数量 | 单价 | 小计 |
|---|---|---|---|
虚境凌晶 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
| 材料 | 数量 | 单价 | 小计 |
|---|---|---|---|
灵能核心 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
| 材料 | 数量 | 单价 | 小计 |
|---|---|---|---|
米莉拉之羽 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/2、炉心模型 4/6、灵能核心 6/9、卡冈都亚核心 6/9、金色羽毛 3/9 —— 全部合规。
供参考,本体在配料格不足时会 fallback 到候选格(
Toils_JobTransforms.SetTargetToIngredientPlaceCell), 不会直接卡死,但会溢出到台面外,所以这里按硬约束设计。
| 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 | 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 环境下不会加载 |
| 产物被后续配方复用形成雪球 | ✅ 只有卡冈都亚核心消耗灵能核心,其余配方都吃基础材料,无滚雪球路径 |
| 来源 | 数量 | 加载条件 |
|---|---|---|
原版 Data |
7 | 无条件 |
| 本体无条件主模块 | 12 | 无条件 |
| 本体 Biotech 子模块 | 6 | 条件 = Biotech(本体强制依赖 + 本模组 MayRequire 兜底) |
| 米帝无条件主模块 | 11 | 无条件(装了米帝时) |
- 把整个
米莉拉关键物品制作补丁-MiliraKeyComponentPatch文件夹放进…\RimWorld\Mods\ - 在模组列表里启用它,位置放在「米莉拉天空精灵」之后 (若装了米帝,也放在「米莉拉帝国」之后)
- 旧存档可直接加装,无需新开档
- 装了米帝:建造 米莉拉通用工作台、太阳熔炉、引力织造器, 添加清单搜索「打印」「铸造」「织造」,应能看到 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
依赖:米莉拉天空精灵(Ancot.MiliraRace);装了 米莉拉帝国拓展 会自动多出 3 种物品、共 6 条配方(灵能核心、卡冈都亚核心、金色米莉拉之羽,各有单件版与批量版)。