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 通过
This commit is contained in:
2026-08-23 20:53:22 +08:00
parent 0965eaead4
commit c08f3c1f7f
27 changed files with 873 additions and 24 deletions
+15 -3
View File
@@ -9,7 +9,7 @@ import {
YearlyReport
} from '../../types/domain'
import { BUILDINGS, bonusOf } from '../../data/buildings'
import { BUILDINGS, bonusOf, buildingById } from '../../data/buildings'
import { itemById, pillRecipeByOutput, forgeRecipeByOutput } from '../../data/items'
import { POSTS } from '../../data/posts'
import { aspirationById as aspirationOf } from '../../data/aspirations'
@@ -17,6 +17,11 @@ import { computeLegacy, resolveLegacy, peakRealmIndex, grandTechniqueCount, Lega
import { needsTribulation, tribulationEventId } from './Systems/tribulation'
import { generateWorld } from '../sim/worldgen'
import { registerNpcDef, npcById, NpcFamilyDef } from '../../data/npcs'
import { registerBuildingDef } from '../../data/buildings'
import { registerPostDef } from '../../data/posts'
import { registerAspirationDef } from '../../data/aspirations'
import { registerFormationDef } from '../../data/formations'
import { registerTraitDef } from '../../data/traits'
import { addPillRecipe, addForgeRecipe } from '../../data/items'
import { WorldGenPools } from '../sim/worldgen'
import { addCalamity as addCalamityImpl } from '../sim/worldsim-data'
@@ -231,6 +236,13 @@ export class World {
addForgeRecipe: (r) => addForgeRecipe(r),
addWorldGenPool: (part, source) => WorldGenPools.add(part, source ?? 'ctx'),
addCalamity: (name, opts) => addCalamityImpl(name, opts),
packExtend: (key, additions) => PACK.extend(key as never, additions),
mergeAddPack: (key, items) => PACK.mergeAdd(key as never, items),
addBuildingDef: (def) => registerBuildingDef(def),
addPostDef: (def) => registerPostDef(def),
addAspirationDef: (def) => registerAspirationDef(def),
addFormationDef: (def) => registerFormationDef(def),
addTraitDef: (def) => registerTraitDef(def),
addCapability: (cap) => {
// 0.1.23:能力卡注册入 World 实例(防跨档全局泄漏);UI 全局清单读 SYSTEM_DEFS 展示不受影响
if (!self.systems[cap.id]) self.systems[cap.id] = { enabled: true }
@@ -760,7 +772,7 @@ export class World {
build(id: string): boolean {
const fam = this.state.family
const def = BUILDINGS[id]
const def = buildingById(id)
if (!def) return false
if (fam.buildings[id]) return false
const cost = def.upgradeCost(1)
@@ -774,7 +786,7 @@ export class World {
upgrade(id: string): boolean {
const fam = this.state.family
const def = BUILDINGS[id]
const def = buildingById(id)
const lvl = fam.buildings[id]
if (!def || !lvl || lvl >= def.maxLevel) return false
const cost = def.upgradeCost(lvl + 1)