Files
ChronicleOfTheImmortalClan/docs/MOD_GUIDE.md
T
thzxx c08f3c1f7f v0.1.31: 万物皆可 MOD——内容面七口 + kind 分类 + 数值松弛 + 测试 4006
【MOD 内容面总攻(七口新开:14 口全)】
- items/techniques:PACK 增量合入(extend 键级/mergeAdd 数组——内置不覆盖)
  ——新丹药武器有名字/新功法入藏书阁·掉落·拍卖
- buildings:新建筑(produceTable 表达式 DSL '4 * L' 白名单)——领地页可建可升、
  productionTick 自动消费、World/build/upgrade 走双源建筑表
- posts/aspirations/formations/traits:职事(11 效果型)/志向(5 型)/阵型(攻防系数)/
  性格(bonus 白名单集)——全部双源注册(registerXxx),卸载只摘自己的键

【MOD 类型(M5)】kind: content/data/rules 分类标签;【M6】ERA_DURA 聚合(eraDuraOf)
+ REGION_TIDE 聚合(regionTideOf)——默认零漂(金钟罩实证未红)

【测试 4006】85 套件(+1000:matrix-macro 100 + sprint-a/b/c 900 +
内容面覆盖矩阵后续)——全部语义真实;金钟罩 0.1.31 零漂(聚合默认表不变)

【验证】4006 全绿;build 通过
2026-08-23 20:53:22 +08:00

546 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MOD 开发教程 · Chronicle of the Immortal Clan
> 版本 **0.1.31·《万物皆可 MOD》** · MOD_SCHEMA_VERSION = 1
> **本教程即全部所需**:你不需要读任何源码或类型文件——所有 MOD 能用的字段、取值、默认值、坑点都写在这里。
> 照例动手即可:最快 5 分钟做出你的第一个 MOD。
---
## 0. 先读这两句(最重要)
1. **MOD 是纯 JSON,零脚本**。没有代码、没有沙箱、没有 eval——永远不会"写挂"游戏本体。
2. **五个安全红线**(违反会导致 MOD 无效或世界怪,但不会崩存档):
- `id` 全局唯一:只有 `[a-z0-9-]`、长度 2~32(小写字母/数字/连字符/下划线)
- 事件 `id` 不能与游戏内置事件或其它已装 MOD 事件重复(安装时会被拒绝,报具体冲突名)
- 不碰任何 `rng` 字段(MOD 里没有 rng 概念——随机数值一律由游戏引擎生成)
- 数值建议贴近内置量级(模板 power 60~400、事件 weight 0~100、成本不比顶级丹厚)
- 五个数据口:**事件 / 世界模板 / 词库 / 灾因 / 配方** + 特殊口:**世界数值(worldNum**
---
## 1. 五分钟上手
### 第 1 步:放文件
在你的游戏用户目录下建 `mods` 文件夹(没有就建一个),文件名随意,但要:
- 后缀 `.json``.cotymod`(两种都行,内容完全一样)
- 文件名 `[a-z0-9-].json`(建议与 MOD id 同名:`hello-world.json`
```
Windows: %APPDATA%/Electron/mods/
Linux: ~/.config/Electron/mods/
macOS: ~/Library/Application Support/Electron/mods/
```
### 第 2 步:复制这个文件
完整可用的最小 MOD(直接存为 `hello-world.json`):
```json
{
"id": "hello-world",
"name": "你好世界",
"version": "1.0.0",
"schema": 1,
"author": "你的名字",
"description": "我的第一个 MOD:家族来了一位卖豆腐的老伯。",
"data": {}
}
```
### 第 3 步:装上看效果
游戏内 → **设置 → MOD 层 → 扫描目录** → 列表里出现 `hello-world.json` → 点 **安装** → 提示"MOD 安装完成"。
**看效果的验证方法**MOD 层插件表格里出现 `MOD·你好世界 v1.0.0 · content · 你的名字`。新开一局时 NewGame 预览页会标注「已装入 MOD:你好世界」。
> 只有 `data` 段为空时这个 MOD 什么都不会改。想改世界的活往下看。
---
## 2. MOD 包结构总览
一个 MOD = 一个 JSON 对象,全部字段如下(标 ✅ 的必填):
```jsonc
{
"id": "jiangnan-feng", // ✅ MOD 唯一 id[a-z0-9-]{2,32}
"name": "江南遗风", // ✅ 显示名
"version": "1.0.0", // ✅ 版本号(semver:主.次.补)
"schema": 1, // 建议:格式版本,目前恒写 1
"author": "风雅散人", // 建议:作者名(会显示在设置页)
"description": "一句话说来意。", // 建议:说明文字
"gameVersion": "0.1.30", // 可选:为哪个游戏版本做的(仅展示)
"depends": ["other-mod-id"], // 可选:依赖的其它 MOD id(未装会拒绝安装)
"conflicts": ["old-mod-id"], // 可选:与哪些 MOD 互斥(已装会拒绝安装)
"data": { // ✅ 能力段(可以为空对象)
"events": [ /* 新增事件:见 §3 */ ],
"npcs": [ /* 世界模板:见 §4 */ ],
"worldgen": { /* 生成词库:见 §5 */ },
"calamities": [ /* 新增灾因:见 §6 */ ],
"pills": [ /* 丹方:见 §7 */ ],
"forges": [ /* 铸器配方:见 §8 */ ],
"worldNum": { /* 世界数值:见 §9 */ },
"items": [ /* 新物品:见 §9.5 */ ],
"techniques": [ /* 新功法:见 §9.5 */ ],
"buildings": [ /* 新建筑:见 §9.5 */ ],
"posts": [ /* 新职事:见 §9.5 */ ],
"aspirations": [ /* 新志向:见 §9.5 */ ],
"formations": [ /* 新阵型:见 §9.5 */ ],
"traits": [ /* 新性格:见 §9.5 */ ]
},
"kind": "content" // 类型标签(content 内容/data 实体/rules 规则——仅展示与归类)
}
```
**安装行为承诺**0.1.30 全部兑现):
- 安装时自动检查:事件 id 冲突 → **拒绝**并报具体名;其余字段不合规 → **警告但安装**(你可能想修正)
- 启用/停用随插件开关;**卸载时 MOD 改过的一切自动还原**(词库/灾因/配方/数值全摘,只删自己加的词条)
- 存档携带 MOD 状态;下次读档自动重装;换电脑或删文件 → 读档提示"缺失 MOD"
- **只影响新开档**:历史存档的世界不会因你装/卸 MOD 改变
---
## 3. 能力一:事件(events
事件 = 游戏过程中冒出的"情景选择"(和内置事件共用一套系统)。
### 3.1 字段表
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `id` | string | ✅ | `ev-` 开头便于辨识;全游戏唯一(冲突→拒装) |
| `name` | string | ✅ | 弹窗标题 |
| `category` | string | ✅ | `daily`(日常)/ `major`(大事)/ `fate`(天命)。越高越少见 |
| `weight` | number | ✅ | 抽中权重,0~100。同类别内按权重随机 |
| `text` | string | ✅ | 事件正文 |
| `once` | boolean | ✖ | `true` 则整局只发生一次 |
| `cond` | object | ✖ | 触发条件(见 3.3 条件表)——**不写=任何年代都可能发生** |
| `options` | array | ✅ | 选项数组(1~4 个),见 3.2 |
### 3.2 选项数组
```jsonc
"options": [
{
"label": "称谢收下", // ✅ 按钮文字
"hint": "获得灵石 20", // 悬停提示(写不写都行)
"eff": { "res": { "stones": 20 } } // ✅ 效果(见 3.4 效果表)
},
{
"label": "婉拒",
"hint": "什么都不变",
"eff": {}
}
]
```
### 3.3 条件表(cond)——事件何时发生
全部可选;写多个 = 同时满足(`all`);"任一满足"用 `any`"不满足"用 `not`
```jsonc
"cond": {
"minYear": 5, // 第五年及以后
"minRep": 50, // 声望 ≥50
"maxRep": 200, // 声望 ≤200
"minGeneration": 3, // 至少第三代
"minHeadRealm": "foundation", // 家主最低境界(mortal/qi/foundation/core/nascent/spirit
"minMembers": 8, // 家族至少 8 人
"minAdult": 3, // 适婚成人 ≥3
"minBuilding": { "id": "danfang", "level": 2 }, // 某建筑 ≥Lv2(建筑 id 见 §10 速查)
"minResource": { "id": "lingcao", "n": 50 }, // 库存某资源 ≥50
"minTechCount": 3, // 家传功法 ≥3 部
"flag": { "key": "anyKey", "eq": true }, // 家族某旗标为真
"relation": { "npcId": "n-danxin", "lt": 0 }, // 与某天下家关系 <0
"any": [ { "minRep": 100 }, { "minYear": 60 } ], // 任一满足
"not": { "minYear": 3 } // 第三年以前
}
```
### 3.4 效果表(eff)——选中后发生什么
一个选项可以同时用好几个效果(写多个键):
| 键 | 写法 | 示例 |
|---|---|---|
| `res` | 资源增减(灵石/灵草/灵矿/兽核 + 丹药) | `{"stones":-50,"lingcao":5}` |
| `rep` | 家族声望变动 | `{"rep":10}` |
| `relation` | 与天下各家关系(用 `n-` 家 id | `{"n-danxin":5,"n-nulei":-8}` |
| `pillGain` | 直接获得丹药 | `{"pill-qiyuan":1}` |
| `addTech` | 获得功法(`t-` id,见 §10 | `{"addTech":"t-baihui"}` |
| `addBuilding` | 白得一座建筑(建筑 id | `{"addBuilding":"lingtian"}` |
| `memberBy` | 对族人施加(见 3.5 | `{"by":"inspire","target":"all","n":3}` |
| `flag` | 设家族旗标(后续可被 cond 读取) | `{"anyKey":true}` |
| `mission` | 触发某秘境(`m-` id)给家族 | `{"mission":"m-anmoku"}` |
| `raid` | 某家来犯 | `{"npcId":"n-nulei"}` |
| `techniqueChance` | 概率得功法(0~1 | `{"techniqueChance":0.3}` |
| `artifactChance` | 概率得宝器 | `{"artifactChance":0.3}` |
| `tournament` | 触发大比 | `{"tournament":true}` |
| `apprentice` | 触发谒祖师 | `{"build":true}` |
| `trib` | 指定成员渡劫 | `{"memberId":"某成员id","mode":"rash"}`rash/guard/delay |
| `feisheng` | 飞升剧情 | `{"stay":false}` |
### 3.5 族人效果(memberBy
```jsonc
"memberBy": {
"by": "exp", // exp 修为 / wound 受伤 / heal 治愈 / breakthrough 突破 / fatal 重伤 /
// repGain 名望 / inspire 心境 / loot 得财 / madness 入魔 / genius 顿悟
"target": "all", // random / head / youngest / oldest / highestPerception / highestPower / all
"n": 3, // 数量(all 时忽略)
"desc": "此事传开,族人倍受鼓舞。" // 可选描述
}
```
### 3.6 完整示例(可直接用)
```jsonc
"events": [
{
"id": "ev-jiangnan-rain",
"name": "江南烟雨",
"category": "daily",
"weight": 3,
"once": false,
"cond": { "minYear": 2 },
"text": "一连三日细雨,田垄新绿。一位老农挑着桑筐来访,自称是十里外的蚕桑户。",
"options": [
{ "label": "留饭相谈", "hint": "灵草+3,声望+2", "eff": { "res": { "lingcao": 3 }, "rep": 2 } },
{ "label": "赠他盘缠", "hint": "灵石-15,好感+5", "eff": { "res": { "stones": -15 }, "relation": { "n-danxin": 5 } } },
{ "label": "笑笑送客", "hint": "无", "eff": {} }
]
}
]
```
**常见坑**
- `weight` 决定概率:一个 MOD 塞 20 个 `weight:100` 的事件会垄断剧情——引擎会自动按"插件池 ≤ 核心 50%"压缩,但文明开发请保持克制(日常事件推荐 1~5)
- `id` 撞名会被拒装——改名即可
- 事件正文/选项不要用半角引号冲突(JSON 标准转义 `\"`
---
## 4. 能力二:世界模板(npcs)
让这个世界"开局多一家"(或这家的某几族)。**只影响新开档**。
### 4.1 字段表
```jsonc
"npcs": [
{
"id": "n-gu-shi", // ✅ 建议 n- 前缀;全局唯一
"name": "姑苏顾氏", // ✅ 显示名
"region": "江南烟雨港", // ✅ 势力所在地区(词库会被生成引用)
"style": "风雅世家", // ✅ 宗族风骨(剑修世家/丹道世家/商盟世族/兵修蛮门/符箓仙门/灵植谷户/阵道门阀/散修聚落…自由写)
"desc": "临水而居,诗酒传家。",// ✅ 介绍
"leaderRealm": "foundation", // ✅ 宗主境界(4.2 取值)
"initialPower": 150, // ✅ 开局实力(建议 60~400;与开局难度会再乘系数)
"powerGrowth": [3, 9], // ✅ 年度成长范围 [最小, 最大]
"sells": ["lingcao"], // 可选:它卖什么给市场(资源 id)
"buys": ["lingcao", "lingkuang"] // 可选:它买什么
}
]
```
### 4.2 境界取值(所有用到境界的地方通用)
```
mortal(凡人)→ qi(练气)→ foundation(筑基)→ core(金丹)→ nascent(元婴)→ spirit(化神)
```
### 4.3 完整示例
```jsonc
"npcs": [
{
"id": "n-jiang-yu",
"name": "渔隐柴氏",
"region": "江南烟雨港",
"style": "渔隐门",
"desc": "一叶扁舟渡南北,渔篓里尽是江湖事。",
"leaderRealm": "qi",
"initialPower": 120,
"powerGrowth": [2, 7],
"sells": ["beastcore"],
"buys": ["lingcao"]
}
]
```
**常见坑**`power` 太低的新家开局会被默认为"衰微家"power<150 且景气低持续 8 年会覆灭)——这不是 bug,是世界的淘汰规律;建议新家 `initialPower ≥ 120`
---
## 5. 能力三:生成词库(worldgen
让新世界"这个时代容易出什么名字/哪里的家族"。词库会**混入自家词库**(默认 4 系 12 姓氏库),注入的每一条都进生成抽签。
```jsonc
"worldgen": {
"fams": ["吴", "江", "雨"], // 姓氏词根(会与后缀组合:吴氏/吴宗/吴寨…)
"regions": ["江南烟雨畔", "吴淞江湾"], // 地区名
"styles": ["风雅世家", "渔隐门"], // 风骨
"suffixes": ["氏", "族", "轩"] // 后缀(默认 氏/氏/宗/寨/门;自定义时替换组合)
}
```
> 建议 `regions` 与你的模板 `region` 一致——这样"渔隐柴氏"的世界感统一。卸载时只会撤掉你加的词条,不会污染默认库。
---
## 6. 能力四:灾因(calamities
给世界加一种"灾年"(与内置旱灾/蝗灾/兽潮同机制——全链路自动生效:减产/市场冲击/快讯/史册)。
```jsonc
"calamities": [
{
"name": "瘴雨",
"brief": "瘴雨连绵,田间霉蛀——灵植减产。", // 可选:灾年快讯文案(不写则自动用"XX——灵植减产,市价将行")
"family": { "lingcao": 0.75 }, // 可选:家族生产乘量(1=正常;0.75=减产25%)
"effect": { "lingcao": -0.2 } // 可选:世界市场冲击(-0.2=市池减20%)
}
]
```
- `family` 键支持:`lingcao / lingkuang / beastcore`(家族生产乘量)
- `effect` 键支持:`lingcao / lingkuang / beastcore`(世界池乘量)
- 灾年持续 6 月,会写进天下史册;**灾名全局唯一**(与内置重复会被忽略)
---
## 7. 能力五:丹方(pills
给丹房加新丹药。**丹房等级门槛、材料、效果全由你定义**(服丹的修为增量由引擎按丹名归属自动处理——`pill-` 前缀的丹在"服丹"时走内置逻辑)。
```jsonc
"pills": [
{
"output": "pill-biandan", // ✅ 丹药 idpill-QIANSUO 命名:`pill-` + 拼音/英文短名);需安装或存有对应描述(见坑)
"name": "便丹",
"danfangLevel": 1, // ✅ 丹房等级门槛(1~5
"stones": 30, // ✅ 灵石成本
"lingcao": 8, // ✅ 灵草成本
"beastcore": 0, // ✅ 兽核成本(0 也可以)
"desc": "出门在外备着。"
}
]
```
**为什么需要 `items` 配套**:丹药在背包与卖出时要有"名号/图标",由物品表供应——MOD 需要一个配套物品条目(同时给物品表与丹方)。**0.1.30 起物品表接口暂未开放**:丹方会入"可炼制"列表、服丹修为增加,但背包显示用惯例名。**建议先只做"专用丹方"主题**,或等 item 表开放(在开发中)——文档会第一时间更新。
> 若你只想做"经济型" mod(材料搭配),这章已够;需要"全新药效"留给未来版本。
---
## 8. 能力六:铸器配方(forges)
给"定制"页加新兵刃(铸器是 0.1.16 起的正式玩法;武器**必须有对应物品条目**才能被装备)。
```jsonc
"forges": [
{
"output": "weapon-lingwoon", // ✅ 武器 id`weapon-` 前缀;内置有 weapon-fan/qi/ling/fa
"name": "灵纹刃",
"stones": 700,
"lingkuang": 15,
"beastcore": 5,
"desc": "纹蕴灵光,锋锐无俦。"
}
]
```
---
## 9. 能力七:世界数值(worldNum
微调"世界的脾气"。**白名单键**(只允许改这些;写别的键会被忽略、但不会报错):
| 键 | 默认 | 说明 |
|---|---|---|
| `calamityChance` | 0.18 | 灾年概率(0.5 = 几乎年年灾) |
| `worldSupplyRate` | 0.02 | 世界月供给 |
| `worldDemandRate` | 0.015 | 世界月需求 |
| `npcTradeRate` | 0.008 | NPC 月贸易量 |
| `greatNewbornChance` | 0.06 | 新贵补位率 |
| `secretRecover` | 2 | 秘境灵气月恢复 |
| `tradeFloorPct` | 0.35 | 断供拒单线 |
```jsonc
"worldNum": {
"calamityChance": 0.28,
"greatNewbornChance": 0.08
}
```
> `marketRebalance`0.025)与 `poolFloorPct`0.35)是平衡核心,**不建议** MOD 修改(改了容易让价格/池系统黏糊)。卸载时数值自动还原。
---
## 9.5 内容面扩展(0.1.31:物品/功法/建筑/职事/志向/阵型/性格)
七个新口全部纯数据;**内置条目不可覆盖**(同名 id 被跳过——防覆盖红线),只加新键。
### 物品(items)——配丹药/武器显示
```jsonc
"items": [
{ "id": "pill-biandan", "name": "便丹", "kind": "pill", "basePrice": 60, "desc": "出门在外备着。", "icon": "丹" },
{ "id": "weapon-wu", "name": "乌金尺", "kind": "artifact", "basePrice": 550, "desc": "乌金铸就,宽厚沉稳。", "icon": "玄" }
]
```
`kind` 取值:`resource`(资源)/ `pill`(丹药)/ `artifact`(兵器)。加了物品后:丹方(§7)/铸器(§8)与市场/背包自动可见。
### 功法(techniques
```jsonc
"techniques": [
{ "id": "t-lingwu", "name": "灵雾心法", "grade": 1, "element": "水", "path": "丹修",
"expBonus": 0.11, "powerBonus": 0.12, "desc": "雾气绕身,吐纳绵长。" }
]
```
- `grade` 1~4(品阶,影响市价/掉率);`element` 木/金/水/火/土/雷;`path` 剑修/体修/丹修/阵修自由
- 新功法将进入:藏书阁可购 / 秘境掉落 / 拍卖池
### 建筑(buildings
```jsonc
"buildings": [
{ "id": "b-chalu", "name": "茶园", "icon": "茗", "desc": "清茶待客,悦人悦己。", "kind": "produce",
"maxLevel": 3,
"produceExpr": { "lingcao": "4 * L" }, // L=等级——月产表达式(支持 + - * / 与 ^)
"upgradeStones": 60, "upgradeMineral": 8 } // 升级费=基价 ×1.6^(L-1) / 灵矿×L
]
```
- `kind``produce`(月产)/ `function`(加成(function 型加成用 worldNum 风格暂不支持自定义配方——建议 produce 为主))
- 建筑自动出现在领地页可建/可升;**生产表达式白名单安全**(数学符号 + L,别的符号被忽略)
### 职事(posts
```jsonc
"posts": [
{ "id": "p-chashi", "effectType": "marketIncome", "value": 0.06, "max": 1, "desc": "坐市司货,坊市入息 +6%。" }
]
```
`effectType` 取值(对应内置效果):`expAll / marketIncome / battlePower / cultivation / stamina / insight / feast`
### 志向(aspirations
```jsonc
"aspirations": [
{ "id": "a-chafan", "desc": "偶有茶会,心神宁和。", "effectType": "cult", "value": 0.04 }
]
```
`effectType``cult`(修为)/ `field`(产田)/ `market`(商市)/ `combat`(战力)/ `offspring`(生育)。
### 阵型(formations
```jsonc
"formations": [
{ "id": "f-qingyun", "name": "青云阵", "icon": "云", "desc": "攻守兼重。", "atk": 1.05, "def": 1.05, "retreatWound": 1 }
]
```
### 性格(traits
```jsonc
"traits": [
{ "id": "t-yaxi", "name": "雅细", "desc": "心细如发,炼丹养生。",
"bonus": { "expBonus": 0.03, "charmBonus": 0.05, "danger": 0 } }
]
```
`bonus` 键:`expBonus`(修为)/ `breakBonus`(突破成功率)/ `windBonus`(战力)/ `charmBonus`(魅力)/ `priceMult`(售价)/ `danger`(风险 0~1——性情中的祸患)。
### kind 类型(manifest 顶层)
```jsonc
"kind": "content" // content(剧情/风物) | data(新实体:物品功法建筑) | rules(数值规则:worldNum/表达式)
```
仅用于设置页归类展示,不影响装载逻辑——**填不填都行**(不填默认 content)。
## 10. 速查表:内置 id 大全
### 资源 idres / sells / buys / family / effect 通用)
`stones`(灵石)· `lingcao`(灵草)· `lingkuang`(灵矿)· `beastcore`(兽核)
### 丹药 idpillGain / res 可用)
`pill-qiyuan`(聚气丹)· `pill-ningyuan`(凝元丹)· `pill-pojing`(破境丹)
### 武器 idforge output / 掉落池)
`weapon-fan`(凡器)· `weapon-qi`(法器)· `weapon-ling`(灵器)· `weapon-fa`(法宝)
### 功法 idaddTech;掉落池随机取用)
`t-qinglian`(青莲剑诀·剑修)· `t-canglei`(苍雷炼体功·体修)· `t-lieliuxin`(离火心经·丹修)· `t-houtu`(厚土镇岳功·体修)· `t-xuanyue`(玄月斩灵诀·剑修)· `t-baihui`(百草经·丹修)
### 建筑 idaddBuilding / minBuilding
`lingtian`(灵田)· `yaoyuan`(药园)· `lingkuang`(灵矿)· `fangshi`(坊市)· `danfang`(丹房)· `cangshu`(藏书阁)· `juling`(聚灵阵)· `yanwu`(演武场)· `dongfu`(洞府)· `zongci`(宗祠)· `lingshou`(灵兽园)
### 天下家 idrelation / raid
`n-xuanying`(玄影沈氏·剑修)· `n-danxin`(丹心木氏·丹道)· `n-sihai`(四海王氏·商盟)· `n-nulei`(怒雷祝氏·兵修)——注:**世界随机化后你家不一定有全部四家**;写它们不会报错,只是关系变化可能发生在"不存在的家"上(忽略即可)。
### 秘境 idmission
`m-anmoku`(暗墨林)· `m-xuangu`(玄冰谷)· `m-guzhan`(古战阵)· `m-lingshan`(灵鹫山)· `m-quanchen`(渊泉城)
---
## 11. 排错 FAQ
**Q1:扫描后列表里没有我的文件?**
- 文件名后缀必须是 `.json``.cotymod`;文件名 `[a-z0-9-]`(勿用中文文件名)
- 确认路径(§1 第 1 步);扫描后没有提示"已扫描 mods 目录"?——就是路径错了
**Q2:点安装提示"MOD 解析失败:缺失/非法的 MOD id"**
-`id` 字段或 `id` 用了中文/大写/`.`;按 §2 修。**另外**:如果你把**存档导出文件**误放进了 mods 目录,也会报这个错——那是存档,请删除或移到别处(或用游戏内"导入存档")。
**Q3:提示"MOD 安装被拒绝:事件 id 冲突:xxx"**
- 你的事件 `id` 与内置/已装 MOD 重复——改个不重名的 id 即可。
**Q4:装上了但游戏里没见反应?**
- **先确认是"新开档"**:MOD 只影响新世界生成;已开的档不会变。
- 事件类:检查 `category``weight``daily`/`major`/`fate` 各自独立抽签,weight 太小+类别太稀有会很少见)。
- 模板类:新开档后去"天下"面板看"群雄谱"。
**Q5:卸载后世界还变着?**
- 世界状态(已发生的演化)是"既成事实"——卸载只还原 MOD 造成的**机制**(词库/灾因/配方/数值),不会回滚开档后世界自然发生的事。这与游戏规则一致:**装 MOD 改变世界的历史**。如果希望干净世界,用没装 MOD 时的新档。
**Q6:读档提示"缺失 MOD"**
- MOD 的文件被移动/删了,或游戏版本变化导致版本不符。把文件放回 `mods` 目录(同 id 同版本)再进档即可。
**Q7:我的 MOD 与别人冲突?**
- 检查两个 MOD 是否用了相同事件 id / 灾因名 / 丹方 output / 模板 id——任意撞名 → 后装者会被拒/被忽略。用 `depends`/`conflicts` 声明关系(§2)。
---
## 12. 进阶:依赖、冲突与导出
### 12.1 depends / conflicts
```jsonc
"depends": ["fenwu-ji"], // 必须先装「风物集」;未装 → 拒绝
"conflicts": ["old-pack"] // 与「old-pack」互斥;对方已装 → 拒绝
```
### 12.2 导出与分享
- 设置页 → MOD 层 → **导出当前 MOD 集**:把你已装的全部 MOD 打包成一个 `mod-bundle-export.cotymod`(合包)。
- 同伴把这个文件放进他们的 `mods` 目录,安装时**逐包**装好(0.1.28 起完全闭环)。
- 你的 `.cotymod` 文件就是打包好的 MOD——直接发文件即可,无需任何构建工具。
### 12.3 读档重装纪律
- MOD 状态随存档保存;重装要求**同 id 同版本**(版本差 → 跳过并提示"缺失")。
- 所以**改动 MOD 务必升 `version`**(如 1.0.0 → 1.0.1),否则老档可能静默跳过新包。
---
## 13. 官方范例(可拆解学习)
游戏内置两枚官方包(设置 → MOD 层 → 内置仓库,一键安装):
| 包 | 教会你 |
|---|---|
| **风物集**`fenwu-ji`) | 词库注入 + 灾因(含 brief 文案)——"做地域风物" |
| **战备解军**`zhanbei-xv` | 配方注入 + worldNum 覆写——"做数值平衡" |
拆解方法:安装后 → 导出当前 MOD 集 → 用文本编辑器打开 `mod-bundle-export.cotymod` → 所有字段即你所见。
---
**一句话总结**MOD = 一个有 `data` 字段的 JSON。事件管"剧情事件"、模板管"新家族"、词库管"名字概率"、灾因管"灾年种类"、配方管"炼丹铸器"、worldNum 管"世界脾性"。装/卸/导出全在设置页,读档重装全自动。去写吧——这个世界等你的素材。
<sub>⚔️ 本文档随游戏版本更新(0.1.30)。字段若有新增,此处先行。</sub>