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 + β 缓议
172 lines
3.5 KiB
JSON
172 lines
3.5 KiB
JSON
{
|
|
"sheet": "boss_battles",
|
|
"schema_version": 0,
|
|
"columns": [
|
|
"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"
|
|
],
|
|
"rows": [
|
|
{
|
|
"id": "boss_hall_01",
|
|
"hall_id": "hall_01_qinguang",
|
|
"hall_factor": 1,
|
|
"boss_army_seconds": 23,
|
|
"souls_par": 0,
|
|
"army_dps_factor": 1,
|
|
"intro_sec": 3,
|
|
"active_sec": 30,
|
|
"combo_window_sec": 0.6,
|
|
"combo_step": 0.02,
|
|
"combo_cap": 0.6,
|
|
"retry_cooldown_sec": 60,
|
|
"reward_hp_ratio": 0.2
|
|
},
|
|
{
|
|
"id": "boss_hall_02",
|
|
"hall_id": "hall_02_chujiang",
|
|
"hall_factor": 1.1,
|
|
"boss_army_seconds": 23.5,
|
|
"souls_par": 2,
|
|
"army_dps_factor": 1,
|
|
"intro_sec": 3,
|
|
"active_sec": 30,
|
|
"combo_window_sec": 0.6,
|
|
"combo_step": 0.02,
|
|
"combo_cap": 0.6,
|
|
"retry_cooldown_sec": 60,
|
|
"reward_hp_ratio": 0.2
|
|
},
|
|
{
|
|
"id": "boss_hall_03",
|
|
"hall_id": "hall_03_songdi",
|
|
"hall_factor": 1.2,
|
|
"boss_army_seconds": 24,
|
|
"souls_par": 18,
|
|
"army_dps_factor": 1,
|
|
"intro_sec": 3,
|
|
"active_sec": 30,
|
|
"combo_window_sec": 0.6,
|
|
"combo_step": 0.02,
|
|
"combo_cap": 0.6,
|
|
"retry_cooldown_sec": 60,
|
|
"reward_hp_ratio": 0.2
|
|
},
|
|
{
|
|
"id": "boss_hall_04",
|
|
"hall_id": "hall_04_wuguan",
|
|
"hall_factor": 1.3,
|
|
"boss_army_seconds": 24.5,
|
|
"souls_par": 120,
|
|
"army_dps_factor": 1,
|
|
"intro_sec": 3,
|
|
"active_sec": 30,
|
|
"combo_window_sec": 0.6,
|
|
"combo_step": 0.02,
|
|
"combo_cap": 0.6,
|
|
"retry_cooldown_sec": 60,
|
|
"reward_hp_ratio": 0.2
|
|
},
|
|
{
|
|
"id": "boss_hall_05",
|
|
"hall_id": "hall_05_yama",
|
|
"hall_factor": 1.4,
|
|
"boss_army_seconds": 25,
|
|
"souls_par": 600,
|
|
"army_dps_factor": 1,
|
|
"intro_sec": 3,
|
|
"active_sec": 30,
|
|
"combo_window_sec": 0.6,
|
|
"combo_step": 0.02,
|
|
"combo_cap": 0.6,
|
|
"retry_cooldown_sec": 60,
|
|
"reward_hp_ratio": 0.2
|
|
},
|
|
{
|
|
"id": "boss_hall_06",
|
|
"hall_id": "hall_06_biancheng",
|
|
"hall_factor": 1.6,
|
|
"boss_army_seconds": 25.5,
|
|
"souls_par": 2400,
|
|
"army_dps_factor": 1,
|
|
"intro_sec": 3,
|
|
"active_sec": 30,
|
|
"combo_window_sec": 0.6,
|
|
"combo_step": 0.02,
|
|
"combo_cap": 0.6,
|
|
"retry_cooldown_sec": 60,
|
|
"reward_hp_ratio": 0.2
|
|
},
|
|
{
|
|
"id": "boss_hall_07",
|
|
"hall_id": "hall_07_taishan",
|
|
"hall_factor": 1.8,
|
|
"boss_army_seconds": 26,
|
|
"souls_par": 7200,
|
|
"army_dps_factor": 1,
|
|
"intro_sec": 3,
|
|
"active_sec": 30,
|
|
"combo_window_sec": 0.6,
|
|
"combo_step": 0.02,
|
|
"combo_cap": 0.6,
|
|
"retry_cooldown_sec": 60,
|
|
"reward_hp_ratio": 0.2
|
|
},
|
|
{
|
|
"id": "boss_hall_08",
|
|
"hall_id": "hall_08_dushi",
|
|
"hall_factor": 2,
|
|
"boss_army_seconds": 26.5,
|
|
"souls_par": 21000,
|
|
"army_dps_factor": 1,
|
|
"intro_sec": 3,
|
|
"active_sec": 30,
|
|
"combo_window_sec": 0.6,
|
|
"combo_step": 0.02,
|
|
"combo_cap": 0.6,
|
|
"retry_cooldown_sec": 60,
|
|
"reward_hp_ratio": 0.2
|
|
},
|
|
{
|
|
"id": "boss_hall_09",
|
|
"hall_id": "hall_09_pingdeng",
|
|
"hall_factor": 2.1,
|
|
"boss_army_seconds": 27,
|
|
"souls_par": 48000,
|
|
"army_dps_factor": 1,
|
|
"intro_sec": 3,
|
|
"active_sec": 30,
|
|
"combo_window_sec": 0.6,
|
|
"combo_step": 0.02,
|
|
"combo_cap": 0.6,
|
|
"retry_cooldown_sec": 60,
|
|
"reward_hp_ratio": 0.2
|
|
},
|
|
{
|
|
"id": "boss_hall_10",
|
|
"hall_id": "hall_10_zhuanlun",
|
|
"hall_factor": 2.2,
|
|
"boss_army_seconds": 28,
|
|
"souls_par": 90000,
|
|
"army_dps_factor": 1,
|
|
"intro_sec": 3,
|
|
"active_sec": 30,
|
|
"combo_window_sec": 0.6,
|
|
"combo_step": 0.02,
|
|
"combo_cap": 0.6,
|
|
"retry_cooldown_sec": 60,
|
|
"reward_hp_ratio": 0.2
|
|
}
|
|
]
|
|
}
|