chore: 版本号升级到 0.1.37(package.json/AGENTS.md/MOD_GUIDE.md/ApiFacade/storeHelper/SettingsPanel/slots/测试断言)
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
# AGENTS.md
|
# AGENTS.md
|
||||||
|
|
||||||
仙途家族志 · Chronicle of the Immortal Clan — Electron + React + TS 家族修仙模拟器。全部 UI 与文案为中文。
|
仙途家族志 · Chronicle of the Immortal Clan — Electron + React + TS 家族修仙模拟器。全部 UI 与文案为中文。
|
||||||
当前版本 **0.1.33**(《闭环·流光》:物品生态闭环(符箓生效/僵尸物品归位/灾年入产)+ 引擎止血 15 项 + UI 动效打磨(Modal 过渡/停帧节能/季节对齐)+ 测试 5230)。
|
当前版本 **0.1.37**(《天人感应·因果织锦》:功德因果系统 + 飞升三阶段试炼 + 种子派生世界奇观 + MOD 扩展口(奇观类型注册/worldNum 白名单/因果事件/飞升前缀保护)+ 测试 7040)。
|
||||||
|
|
||||||
## 命令
|
## 命令
|
||||||
|
|
||||||
|
|||||||
+41
-2
@@ -131,6 +131,7 @@ macOS: ~/Library/Application Support/Electron/mods/
|
|||||||
| 内容面 | `aspirations` | §9.5 | 志向(修为/战斗/市贸/产田/生育/声望) | 摘除 |
|
| 内容面 | `aspirations` | §9.5 | 志向(修为/战斗/市贸/产田/生育/声望) | 摘除 |
|
||||||
| 内容面 | `formations` | §9.5 | 阵型(攻击/防御/撤退伤) | 摘除 |
|
| 内容面 | `formations` | §9.5 | 阵型(攻击/防御/撤退伤) | 摘除 |
|
||||||
| 内容面 | `traits` | §9.5 | 性格(修为/突破/战力/魅力/售价加成) | 摘除 |
|
| 内容面 | `traits` | §9.5 | 性格(修为/突破/战力/魅力/售价加成) | 摘除 |
|
||||||
|
| 内容面 | `wonders` | §9.7 | 世界奇观类型(零 rng 种子派生选取——自定义奇观加入年首判定池) | 摘除 |
|
||||||
| 微调 | `patch` | §9.6 | 对**已存在**表项改数值(mult 或 add)——不改结构只改数 | 按插件归属复原 |
|
| 微调 | `patch` | §9.6 | 对**已存在**表项改数值(mult 或 add)——不改结构只改数 | 按插件归属复原 |
|
||||||
|
|
||||||
### 2.3 一个"五脏俱全"的示意壳(啃编排用)
|
### 2.3 一个"五脏俱全"的示意壳(啃编排用)
|
||||||
@@ -158,6 +159,7 @@ macOS: ~/Library/Application Support/Electron/mods/
|
|||||||
"aspirations": [ /* §9.5 */ ],
|
"aspirations": [ /* §9.5 */ ],
|
||||||
"formations": [ /* §9.5 */ ],
|
"formations": [ /* §9.5 */ ],
|
||||||
"traits": [ /* §9.5 */ ],
|
"traits": [ /* §9.5 */ ],
|
||||||
|
"wonders": [ /* §9.7 */ ],
|
||||||
"patch": [ /* §9.6 */ ]
|
"patch": [ /* §9.6 */ ]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -943,11 +945,48 @@ macOS: ~/Library/Application Support/Electron/mods/
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**一句话总结**:MOD = 一个有 `data` 字段的 JSON。事件管"剧情"、模板管"新家族"、词库管"名字概率"、灾因管"灾年种类"、丹方铸器管"炼丹造兵"、worldNum 管"世界脾性"、内容面七口管"新物品/功法/建筑/职事/志向/阵型/性格"、patch 管"已有表项微调"。装/卸/导出全在设置页,读档重装全自动。去写吧——这个世界等你的素材。
|
### 9.7 世界奇观类型扩展(wonders) · 0.1.37 新增
|
||||||
|
|
||||||
|
0.1.37 引入**世界奇观**——年首种子派生判定(零 rng 消耗),4 种内置奇观:灵气涌潮 / 古遗迹现身 / 天降祥瑞 / 灵脉枯竭。
|
||||||
|
|
||||||
|
MOD 可以注册**自定义奇观类型**,加入年首种子派生选取池:
|
||||||
|
|
||||||
|
```jsonc
|
||||||
|
"wonders": [
|
||||||
|
{
|
||||||
|
"kind": "star_fall", // 唯一 id(不可与内置 tide_surge/ancient_ruin/heaven_bless/qi_wane 冲突)
|
||||||
|
"name": "星陨天落", // 中文名称
|
||||||
|
"desc": "天外陨星坠落——灵气激荡,宝材出世。", // 描述文本
|
||||||
|
"duration": 12, // 持续月数(0 = 一次性)
|
||||||
|
"effect": "tide_up", // 持续效果:tide_up=灵气增益 / tide_down=灵气衰减 / none=无
|
||||||
|
"oneshot": "loot" // 一次性效果:bless=灾年消弭+声望+5 / loot=随机资源获取 / none=无
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
**字段说明**:
|
||||||
|
|
||||||
|
| 字段 | 必填 | 取值 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| `kind` | ✓ | 唯一字符串 | 奇观类型 id(与内置+已注册不冲突) |
|
||||||
|
| `name` | ✗ | 字符串 | 中文名(缺省"异变") |
|
||||||
|
| `desc` | ✗ | 字符串 | 描述(缺省"天地异变,灵机暗涌。") |
|
||||||
|
| `duration` | ✗ | 0~60 | 持续月数(缺省 0=一次性) |
|
||||||
|
| `effect` | ✗ | `tide_up`/`tide_down`/`none` | 持续月度效果(缺省 `none`) |
|
||||||
|
| `oneshot` | ✗ | `bless`/`loot`/`none` | 出现时一次性效果(缺省 `none`) |
|
||||||
|
|
||||||
|
> **零 rng 保证**:奇观判定使用种子哈希派生(`seed ^ year ^ npcSuccessions`),不消耗 `rng.next()` 序列——金钟罩确定性不受影响。
|
||||||
|
> **因果事件**:事件选项 `eff.karma` 可正可负——MOD 事件天然支持因果变动(无需额外口)。
|
||||||
|
> **worldNum 白名单**:`wonderChance`(0.08)/ `karmaDecayRate`(0.1)/ `karmaHighThreshold`(30)/ `karmaLowThreshold`(-20)可经 `data.worldNum` 覆写。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**一句话总结**:MOD = 一个有 `data` 字段的 JSON。事件管"剧情"、模板管"新家族"、词库管"名字概率"、灾因管"灾年种类"、丹方铸器管"炼丹造兵"、worldNum 管"世界脾性"、内容面八口管"新物品/功法/建筑/职事/志向/阵型/性格/奇观"、patch 管"已有表项微调"。装/卸/导出全在设置页,读档重装全自动。去写吧——这个世界等你的素材。
|
||||||
|
|
||||||
> 0.1.32 玩注:资源循环已是六类生态(资源/材料/丹药/符箓/灵酿/兵器),新物产入池即参与世界呼吸与 NPC 贸易——写材料口别怕世界吃不进去。
|
> 0.1.32 玩注:资源循环已是六类生态(资源/材料/丹药/符箓/灵酿/兵器),新物产入池即参与世界呼吸与 NPC 贸易——写材料口别怕世界吃不进去。
|
||||||
> 0.1.33 闭环注:符箓开战即耗(风符×1.12/山符×1.15+减伤——零 rng 结算),灵酿渡劫伤后自动回气;丹方/铸器产出物 ALL 必须先在物品表立名(否则幽灵物品不可见不可卖)。
|
> 0.1.33 闭环注:符箓开战即耗(风符×1.12/山符×1.15+减伤——零 rng 结算),灵酿渡劫伤后自动回气;丹方/铸器产出物 ALL 必须先在物品表立名(否则幽灵物品不可见不可卖)。
|
||||||
> 0.1.34 功法注:四流派效果 crit/guard/trib/secret 全 optional——缺省零行为,金钟罩安全;元素时节共鸣 4 季同频(土系恒应)。
|
> 0.1.34 功法注:四流派效果 crit/guard/trib/secret 全 optional——缺省零行为,金钟罩安全;元素时节共鸣 4 季同频(土系恒应)。
|
||||||
> 0.1.35 涤荡注:无存档迁移(游戏未发布——旧档随版本演进失效属预期);`patch` 层按插件归属回滚;validate 覆盖 §12 全部规则。
|
> 0.1.35 涤荡注:无存档迁移(游戏未发布——旧档随版本演进失效属预期);`patch` 层按插件归属回滚;validate 覆盖 §12 全部规则。
|
||||||
|
> 0.1.37 因果奇观注:奇观零 rng(种子派生选取池含 MOD 扩展);`eff.karma` 天然支持;`wonderChance`/`karmaDecayRate`/`karmaHighThreshold`/`karmaLowThreshold` 可经 worldNum 覆写;飞升事件 `ev-ascension-*` 前缀保护防劫持。
|
||||||
|
|
||||||
<sub>⚔️ 本文档随游戏版本更新(0.1.36)。字段若有新增,此处先行。</sub>
|
<sub>⚔️ 本文档随游戏版本更新(0.1.37)。字段若有新增,此处先行。</sub>
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "chronicle-of-the-immortal-clan",
|
"name": "chronicle-of-the-immortal-clan",
|
||||||
"productName": "仙途家族志",
|
"productName": "仙途家族志",
|
||||||
"version": "0.1.36",
|
"version": "0.1.37",
|
||||||
"description": "修仙 · 家族 · 经营 · 战斗 模拟器",
|
"description": "修仙 · 家族 · 经营 · 战斗 模拟器",
|
||||||
"main": "./out/main/index.js",
|
"main": "./out/main/index.js",
|
||||||
"author": "MetonaTeam",
|
"author": "MetonaTeam",
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ export class GameFacade {
|
|||||||
about(): { title: string; version: string; modules: number; systems: number; plugins: number; packFingerprint: string } {
|
about(): { title: string; version: string; modules: number; systems: number; plugins: number; packFingerprint: string } {
|
||||||
return {
|
return {
|
||||||
title: '仙途家族志',
|
title: '仙途家族志',
|
||||||
version: '0.1.36',
|
version: '0.1.37',
|
||||||
modules: this.world.systemList().length,
|
modules: this.world.systemList().length,
|
||||||
systems: this.world.systemList().filter((s) => s.enabled).length,
|
systems: this.world.systemList().filter((s) => s.enabled).length,
|
||||||
plugins: this.world.pluginList().length,
|
plugins: this.world.pluginList().length,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { GameState, SaveMeta, SnapshotMeta, Id } from '../types/domain'
|
import { GameState, SaveMeta, SnapshotMeta, Id } from '../types/domain'
|
||||||
import { validateLoadedState, exportEnvelope, parseImportEnvelope } from './migrate'
|
import { validateLoadedState, exportEnvelope, parseImportEnvelope } from './migrate'
|
||||||
|
|
||||||
const GAME_VERSION = '0.1.36'
|
const GAME_VERSION = '0.1.37'
|
||||||
|
|
||||||
const DB_PREFIX = 'cotyc-save-'
|
const DB_PREFIX = 'cotyc-save-'
|
||||||
let seqCounter = 0
|
let seqCounter = 0
|
||||||
|
|||||||
@@ -286,7 +286,7 @@ export default function SettingsPanel() {
|
|||||||
· 「外交」与四邻结好联姻;仇雠之族隔岁来犯,打得赢名望大涨,打不赢蚀钱伤丁。<br />
|
· 「外交」与四邻结好联姻;仇雠之族隔岁来犯,打得赢名望大涨,打不赢蚀钱伤丁。<br />
|
||||||
· 「史书」自动记述繁华与凋零——百年之后,后人翻开这一卷家族志,见代代薪火、历历雪泥。
|
· 「史书」自动记述繁华与凋零——百年之后,后人翻开这一卷家族志,见代代薪火、历历雪泥。
|
||||||
</div>
|
</div>
|
||||||
<div className="dim2" style={{ marginTop: 8 }}>版本 0.1.36 · Chronicle of the Immortal Clan</div>
|
<div className="dim2" style={{ marginTop: 8 }}>版本 0.1.37 · Chronicle of the Immortal Clan</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export function metaFromState(state: GameState, slot: number): SaveMeta {
|
|||||||
members: alive,
|
members: alive,
|
||||||
reputation: state.family.reputation,
|
reputation: state.family.reputation,
|
||||||
updatedAt: new Date().toISOString(),
|
updatedAt: new Date().toISOString(),
|
||||||
version: '0.1.36'
|
version: '0.1.37'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ describe('GameFacade 门面', () => {
|
|||||||
const f = new GameFacade(w, 1)
|
const f = new GameFacade(w, 1)
|
||||||
const info = f.about()
|
const info = f.about()
|
||||||
expect(info.title).toBe('仙途家族志')
|
expect(info.title).toBe('仙途家族志')
|
||||||
expect(info.version).toContain('0.1.36')
|
expect(info.version).toContain('0.1.37')
|
||||||
expect(info.modules).toBeGreaterThanOrEqual(11)
|
expect(info.modules).toBeGreaterThanOrEqual(11)
|
||||||
expect(info.systems).toBeGreaterThan(0)
|
expect(info.systems).toBeGreaterThan(0)
|
||||||
expect(info.plugins).toBeGreaterThanOrEqual(3)
|
expect(info.plugins).toBeGreaterThanOrEqual(3)
|
||||||
|
|||||||
Reference in New Issue
Block a user