W4 批次:三项设计裁定落地(Boss 战 Plan B / 离线契约 v2 / 长明灯加法化)

Boss 战修复(Plan B,用户拍板):
- HP 公式 15xPxhall_factor -> HP = P x boss_army_seconds_n(S=23.0→28.0 递增,
  每场军列约 23-28 秒清空,战斗时长成为可直接书写的设计旋钮,结构性消除
  高殿 P 抵消导致不可胜的旧 bug);hall_factor 降级为纯叙事/视觉参数
- 新增 souls_par 列(0→90000):开场冲锋 intro_dmg = HP x 10% x clamp(souls/souls_par,0,1),
  上限 20%->10%;删 hp_factor/intro_dmg_souls_factor/intro_dmg_cap_ratio 三列
- 点击伤害 P x κ x combo_mult,κ = (0.010 + 0.052 x click_ratio) x (1 + 0.30 x m06_owned),
  click_ratio = 已购点击升级 / 12(κ 0.010→0.0806,满配点击占比约 20.5%±3pp)
- 防双重计入:L5-12 点击升级 +1% output/s 留全局区(抬 P 同时抬军列 DPS 与点击
  伤害,可接受),不得再计入 κ 分子(recompute 注释固化)

离线契约 v2(P-8,改契约不改表):
- OfflineModel.settle 第三参 offline_mult -> offline_add(加法);各档效率
  min(rate+add, 1.0) 硬顶 100%,离线永不超在线
- 长明灯 x1.15 乘性 -> +5%/级 加法(满级 +30%,各档封顶 100%)
- 0-2h 100% 保持;8h = 6.2 等效小时(77.5% 效率)
- Gate #9 拆 9a/9b/9c:9a FAIL->PASS(0-2h 全额 + 8h∈[5.5,6.5]),
  9b 长明灯满级 8h∈[7.5,8.0] 且 ≤100%,9c 任意配置效率 ≤100%

数据与工具:
- gen_balance_sheets.py 补登 W3 遗留 7 行 tune(防重跑静默丢失),self_check 更新
- boss_battles/upgrades schema 同步(offline_mult->offline_add enum,漏改会违反导入)

测试(runner 7->8 用例,Node 交叉验证 145 断言全过):
- 可胜性哨兵重写为「十殿全可胜」:每殿 S_n<30、军列+点击≥HP、余时∈[2,8]、
  满配余时差≥4、点击占比∈[15,25]、H10≈20.5%±3pp
- κ 四档断言(0.010/0.036/0.062/0.0806,分母 12)
- 新增 test_offline_contract.gd:契约 v2 数值面 + 9a/9b/9c 全 PASS + β 缓议
This commit is contained in:
程基岩(engineering-lead) committed 2026-10-20 17:01:25 +08:00
1 parent 4f650aeb39
commit 08dc5020c3
22 files changed
+738 -233

No files matched your search

+16 -12
View File
@@ -1,8 +1,8 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "boss_battles.schema.json",
"title": "boss_battles 表 schema v0(十场殿王战参数,数值抄录自 Balance Bible v1.0 §5)",
"description": "架构 §3.2 CSV 规范落盘。HP = hp_factor × 进入时产出/s × hall_factor([B§5]:强度跟随产出,任何水平 ~30s 的仗;hp_factor=15 为 [B§11 差异#4] 修复值,GDD 旧值 50 已废止)。军列 DPS = 产出/s × army_dps_factor。点击伤害 = 点击价值 × 点击区倍率 × 连击(combo_step/层,combo_cap 封顶)。INTRO 开场伤害 = min(超度值×intro_dmg_souls_factor, HP×intro_dmg_cap_ratio)。通过奖励 = 阴德爆发 HP×reward_hp_ratio。",
"title": "boss_battles 表 schema v0(十场殿王战参数,数值抄录自 Balance Bible v1.0 §5 + systems-spec §1.2 方案 B)",
"description": "架构 §3.2 CSV 规范落盘。W4 方案 B(systems-spec §1.2,用户 2026-10-20 拍板):HP = 进入时产出/s × boss_army_seconds(S_n,军列单推秒数,可直读的设计旋钮);军列 DPS = 产出/s × army_dps_factor;点击伤害 = 产出/s × κ × combo_mult(κ = (tune_boss_kappa_base + tune_boss_kappa_slope × 已购点击升级数/12) × (1 + meta_06阶 × 0.30),满配 0.0806);INTRO 开场伤害 = HP × tune_boss_intro_cap × clamp(超度值/souls_par, 0, 1)(tune_boss_intro_enabled 开关);通过奖励 = 阴德爆发 HP×reward_hp_ratio。hall_factor 保留但降级为纯叙事/视觉参数(血条长度观感与 UI 文案),不参与任何伤害计算。已删除列:hp_factor / intro_dmg_souls_factor / intro_dmg_cap_ratio(旧公式参数,方案 B 后为死旋钮,见 provenance P-16/P-19)。",
"x-supported-keywords": [
"type", "properties", "required", "items", "enum", "pattern",
"minimum", "maximum", "minLength", "minItems", "maxItems",
@@ -17,7 +17,7 @@
"columns": {
"type": "array",
"items": { "type": "string" },
"minItems": 14
"minItems": 13
},
"rows": {
"type": "array",
@@ -26,8 +26,8 @@
"items": {
"type": "object",
"required": [
"id", "hall_id", "hall_factor", "hp_factor", "army_dps_factor",
"intro_sec", "intro_dmg_souls_factor", "intro_dmg_cap_ratio",
"id", "hall_id", "hall_factor", "boss_army_seconds", "souls_par",
"army_dps_factor", "intro_sec",
"active_sec", "combo_window_sec", "combo_step", "combo_cap",
"retry_cooldown_sec", "reward_hp_ratio"
],
@@ -42,18 +42,22 @@
"type": "number",
"minimum": 1,
"maximum": 3,
"description": "殿系数([B§5] H1-H10 = 1.0/1.1/1.2/1.3/1.4/1.6/1.8/2.0/2.1/2.2)"
"description": "殿系数([B§5] H1-H10 = 1.0/1.1/1.2/1.3/1.4/1.6/1.8/2.0/2.1/2.2)。W4 起降级为纯叙事/视觉参数(血条长度观感与 UI 文案,如\"此殿厚重系数 2.2\"),不参与伤害计算;调难度只改 boss_army_seconds"
},
"hp_factor": {
"boss_army_seconds": {
"type": "number",
"const": 15,
"description": "HP 系数([B§5]:15×产出/s×殿系数;[B§11] 由 GDD 50 修正)。W3 补齐缺失的 type:此前未声明 type 时 SheetImporter 按 string 处理,build 产物出现 \"15\" 字符串(且依赖 Godot Variant 的类型宽松相等才能通过 const 校验),是不该存在的隐式假设。"
"minimum": 1,
"maximum": 60,
"description": "军列单推秒数 S_n(systems-spec §1.2 B1:23.0/23.5/24.0/24.5/25.0/25.5/26.0/26.5/27.0/28.0)。HP = 进入时产出/s × 本值;军列 DPS = 产出/s × 1.0 ⇒ 纯军列耗时 = S_n 秒(恒等式)。必须 < active_sec(十殿全可胜)"
},
"souls_par": {
"type": "integer",
"minimum": 0,
"description": "开场冲锋超度基准(systems-spec §1.2 B3:0/2/18/120/600/2400/7200/21000/48000/90000)。intro_dmg = HP × tune_boss_intro_cap × clamp(超度值/本值, 0, 1);0 = 该殿无开场加成"
},
"army_dps_factor": { "type": "number", "minimum": 0, "description": "军列 DPS = 产出/s × 本值([B§5] 1.0)" },
"intro_sec": { "type": "integer", "minimum": 0, "description": "INTRO 冲锋过场秒数(3s)" },
"intro_dmg_souls_factor": { "type": "number", "minimum": 0, "description": "开场伤害 = 超度值 × 本值(0.5)" },
"intro_dmg_cap_ratio": { "type": "number", "minimum": 0, "maximum": 1, "description": "开场伤害封顶 = HP × 本值(0.2)" },
"active_sec": { "type": "integer", "minimum": 1, "description": "ACTIVE 主动阶段秒数(30s)" },
"active_sec": { "type": "integer", "minimum": 1, "description": "ACTIVE 主动阶段秒数(30s;用户锁定恒 30 不动)" },
"combo_window_sec": { "type": "number", "minimum": 0, "description": "连击窗口(0.6s)" },
"combo_step": { "type": "number", "minimum": 0, "description": "连击每层加成(+2%)" },
"combo_cap": { "type": "number", "minimum": 0, "maximum": 1, "description": "连击封顶(+60%)" },
+3 -3
View File
@@ -53,13 +53,13 @@
},
"effect_type": {
"type": "string",
"enum": ["gen_output_add", "click_mult", "click_output_pct", "offline_mult", "unlock"],
"description": "gen_output_add=班底产出加法(+param);click_mult=点击价值×param;click_output_pct=点击附加产出/s 的 param 比例;offline_mult=离线效率×param;unlock=纯解锁(param=0)"
"enum": ["gen_output_add", "click_mult", "click_output_pct", "offline_add", "unlock"],
"description": "gen_output_add=班底产出加法(+param);click_mult=点击价值×param;click_output_pct=点击附加产出/s 的 param 比例(进全局区,P-15);offline_add=离线效率 +param(加法加在衰减表各档速率上,各档硬顶 100%;W4 契约 v2 取代旧 offline_mult ×1.15 乘性链,systems-spec §2.5);unlock=纯解锁(param=0)"
},
"effect_param": {
"type": "number",
"minimum": 0,
"description": "效果参数(见 effect_type);efficiency=1(+100%),click_mult=2,click_output_pct=0.01,offline_mult=1.15,unlock=0"
"description": "效果参数(见 effect_type);efficiency=1(+100%),click_mult=2,click_output_pct=0.01,offline_add=0.05(长明灯每级 +5%,6 级满 +30%),unlock=0"
},
"requires": {
"type": "string",