v0.1.33a: 物品闭环——符箓生效/幽灵物归位/灾年接入

【符箓闭环】talismanWarPrep 返回类型,开战消耗 1 张;风符全队×1.12/山符×1.15+受创减半(零 rng)
【符箓坊】建筑耗符纸×2+灵木×2/级,月造风符1枚;坊3级另出山符(消耗式零 rng)
【幽灵物品归位】and灵丹/虚元丹/玉澜刃补 ITEMS 定义(含 icon/价格/战力)+craftPill/forgeArtifact union 扩键+ARTIFACT_POWER 补玉澜刃 0.4
【灾年生效】farmFactor/mineFactor 从算而未用→真正乘入灵田/药园/矿场/灵果/木坊产量(旱灾×0.7等)
【金钟罩】0.1.33 基线重算(符箓/灾年/新丹受控变更),RAW+RES 共 18 值
【测试】+3(economy-loop-0.1.33 闭环矩阵) 全绿
This commit is contained in:
2026-08-23 21:31:19 +08:00
parent fa477fb3ef
commit bce50b6e2b
11 changed files with 127 additions and 31 deletions
+2 -2
View File
@@ -181,7 +181,7 @@ export default function MarketPanel() {
className="btn btn-sm"
disabled={lvl < r.danfangLevel || !enough}
title={lvl < r.danfangLevel ? `丹房需升到 ${r.danfangLevel}` : enough ? '炼制(失败折半退料)' : '材料不足'}
onClick={() => { w.craftPill(r.output.replace('pill-', '') as 'qiyuan' | 'ningyuan' | 'pojing'); bump() }}
onClick={() => { w.craftPill(r.output.replace('pill-', '') as Parameters<typeof w.craftPill>[0]); bump() }}
></button>
</td>
</tr>
@@ -207,7 +207,7 @@ export default function MarketPanel() {
className="btn btn-sm"
disabled={!enough}
title={enough ? '淬火铸成' : '材料不足'}
onClick={() => { w.forgeArtifact(r.output as 'weapon-qi' | 'weapon-ling' | 'weapon-fa'); bump() }}
onClick={() => { w.forgeArtifact(r.output as Parameters<typeof w.forgeArtifact>[0]); bump() }}
></button>
</td>
</tr>
+1 -1
View File
@@ -553,7 +553,7 @@ function actDirect(w: World, name: ActName, payload: import('../game/engine/runt
case 'market.buy': return payload.item ? marketBuy(w, payload.item, payload.count ?? 1) : false
case 'market.sell': return payload.item ? marketSell(w, payload.item, payload.count ?? 1) : false
case 'market.tech': return payload.tech ? marketTechnique(w, payload.tech, payload.stones ?? 0) : false
case 'craft.pill': return payload.item === 'ningyuan' ? w.craftPill('ningyuan') : payload.item === 'pojing' ? w.craftPill('pojing') : payload.item === 'qiyuan' ? w.craftPill('qiyuan') : false
case 'craft.pill': return w.craftPill(payload.item as 'qiyuan' | 'ningyuan' | 'pojing' | 'heling' | 'xudan')
case 'diplomacy.gift': return payload.npcId ? dipGift(w, payload.npcId, payload.stones ?? 0) : false
case 'diplomacy.peace': return payload.npcId ? dipPeace(w, payload.npcId) : false
case 'diplomacy.taunt': return payload.npcId ? w.tauntNpc(payload.npcId) : false