feat(shanhai): ⑦c2 收敛调参+⑧win 调参后两全(14轮平衡迭代)

- balance.js: 放松怪潮(d1乘区归基线/三兽hp·dps降/WAVES rate×0.8/TIDE2.5→1.8)+抬玩家hp100→136/speed→132+削压强build(poyue44→34·evo1.9→1.7/fuling19→16)+抬地板(fengren/xuanming);九婴/狰王零改动
- 调参方向与原前提相反:加边界后真实是全面太难(M3怪潮按无界风筝标定),据当前真相反向放松
- c2 门档四判据全绿(c1 12/12/c2 fentian@85%/c3 46%/c4 0.402)
- ⑧win 调参后实测可达:round-15 seed42 确定性 win(九婴~28s斩)+6 runSeed 5win/1lose(lose为弱build收割期清场不及非九婴问题)
- 诚实纠正:round-14 win 实为旧平衡(dist陈旧未含调参),round-15 重建dist后真测调参后win仍可达
- c2 fentian/poyue@85%贴线(n=20有超线风险,非稳健余量)
This commit is contained in:
lili 2026-07-25 05:40:49 -07:00
parent 6ca44e3b2c
commit 81a7a9ce56
4 changed files with 364 additions and 27 deletions

View File

@ -188,3 +188,9 @@ R1 八字段不是并列的,存在依赖树,三条共前置基线各自被
M5 代码灌装经三检查点完成,全回归绿:检查点1 balance 数据层(MAPS 5图=裂谷原+不周山/昆仑墟/归墟/钟山占位、ENEMIES 3→32、BOSSES 2→10、D2-D5 解锁占位、各图波表占位)→ 检查点2 sim.js createSim mapId 参数化(按图取 waves/enemyMix/bossIds/arena,map1 零变化硬证:MAPS[0].waves===WAVES 同一对象 + 默认/mapId:'map1'/mapId:0 三局 1500 帧逐字节一致 + 非法 mapId 兜底)+ _debugFill 注敌限定当前图敌混 + game-logic 出击页地图行驱动 MAPS → 检查点3 meta.js unlockedMaps 解锁持久化(存档 data 内,save-progress 仅包壳不含 data 字段故可安全加字段,schemaVersion 保持 1 向后兼容,旧档 normalize 默认 ['map1'])+ 胜局顺序解锁下一图 + meta-tables.js dex_full 阈值 gte:51→DEX_TOTAL 动态(修既有硬编码双写 bug)+ game-logic isMapUnlocked 接 meta。
回归:真实行为 13/13 + meta.test 11/11 + build-tables 9/9 + meta-tables 6/6 全过;map1 pacing 11.21h 不被破坏。ui-trigger2 test4「空槽虚位」为 pre-existing 渲染层失败(基线即存在,与 M5 无关,渲染线另修)。占位数值/占位 sprite 均标待美术/待平衡;map2-5 占位 pacing(headless 快仿真 lose@12-41s)标待平衡,终 Boss atS=100000 占位不可达;选图入局接线(startRun 传 mapId)待后续检查点。M5 完整验收仍需美术资产(图2-5 tileset/29兽 sprite/BGM6 首)+ 真平衡扫描,代码灌装本身已闭环。⑥维度:代码灌装完成,占位资产待美术,仍 partial。
### 6.10 2026-07-25 ⑦c2 收敛 + ⑧win 调参后两全 + 两处诚实纠正
c2 收敛调参经 14 轮平衡迭代门档四判据全绿(c1 12/12、c2 最强 build fentian@85%≤0.85、c3 随机中位 46%∈[0.35,0.55]、c4 |r|0.402≤0.6),同时⑧win 调参后实测仍可达,两全成立。调参=放松怪潮(d1 乘区归 d0 基线、三兽 hp/dps 降、WAVES rate×0.8、TIDE 2.5→1.8)+ 抬玩家 hp100→136/speed120→132 + 削压强 build 天花板(poyue 44→34、evo 1.9→1.7、fuling 19→16)+ 抬弱 build 地板(fengren 18→21、xuanming 7→8);九婴 hp3600/dps30 与狰王 hp2000 零改动。
两处诚实纠正:① 调参方向与原任务前提相反——原前提"c2 xuanming@100% 太易"出自加边界前(07-24)旧报告,加边界后真实状态恰为全面太难(c1 全 FAIL、c3 中位 17%,因 M3 怪潮按无界可风筝标定、有界后围杀),故据当前仓库真相反向放松方达成 c2 收敛,回升九婴 hp 压胜率对当前状态无效(build 见不到九婴即死)。② round-14 的 win 实为旧平衡——dist/shanhai-bundle.js 04:03 构建早于 balance.js 04:57 调参,round-14 未重建 dist,故其 win 硬证是旧平衡下的;round-15 从冻结调参 src 用 canonical build.mjs 重建 dist 后真测,调参后⑧win 仍可达(seed42 确定性 win 九婴约 28s 斩 + 6 runSeed 5win/1lose,唯一 lose 为弱 build 收割期清场不及早于九婴刷新,非九婴问题)。残留风险:c2 fentian/poyue@85% 贴线(n=20 采样有超线风险,试留余量反因混沌噪声涨到 90%,85% 为当前可找平衡点);83% 为 n=6 方向性小样本。⑦c2 + ⑧win 代码层面两全就绪,⑧待创始人验玩升 verified。

View File

@ -139,3 +139,7 @@ round-14 加边界 + bounded-cruise 竖直椭圆巡航(摊薄怪潮)+ 满级 bui
## ⑥M5 代码灌装完成(2026-07-25,占位资产待美术)
M5 代码灌装三检查点完成:MAPS 5图 + ENEMIES 32 + BOSSES 10 + D2-D5 解锁 + sim mapId 参数化(map1 零变化硬证)+ meta 解锁持久化(存档向后兼容)+ 修 dex_full/_debugFill 扩表副作用。回归全绿(真实13/13+meta11/11+build-tables9/9+meta-tables6/6),map1 pacing 11.21h 不破。占位数值/占位 sprite 标待美术/待平衡,map2-5 占位 pacing 待平衡,选图入局接线待后续。⑥维度代码灌装完成,占位资产待美术 + 真平衡扫描,仍 partial。M5 完整验收需美术资产(图2-5/29兽sprite/BGM6)。ui-trigger2 test4 pre-existing 渲染层失败非 M5 引入。
## ⑦c2 收敛 + ⑧win 调参后两全(2026-07-25 round-15)
c2 调参 14 轮迭代门档四判据全绿(c1 12/12、c2 fentian@85%、c3 中位 46%、c4 |r|0.402)。两处诚实纠正:① 调参方向与原前提相反——加边界后真实状态是全面太难(M3 怪潮按无界可风筝标定,有界后围杀),据当前仓库真相反向放松(降怪潮密度/伤害 + 抬玩家 hp100→136/speed→132 + 削 poyue44→34·evo1.9→1.7/fuling19→16 压强天花板 + 抬 fengren18→21/xuanming7→8 地板),九婴/狰王数值零改动;② round-14 的 win 实为旧平衡(dist 04:03 构建早于 balance 04:57 调参,round-14 未重建 dist),round-15 从冻结调参 src 重建 dist 后真测,调参后⑧win 仍可达——seed42 确定性 win(九婴 hp3600 约 28s 斩,bossKills=2)+ 6 个不同 runSeed 5win/1lose(83%),唯一 lose 是弱 build 收割期(t≥1080)清场不及、t1132 早于九婴刷新 67s 阵亡(没到 1200,非九婴击杀时间不够)。故⑦c2 + ⑧win 两全成立。残留风险:c2 fentian/poyue@85% 贴线(n=20 采样有超线风险,非稳健余量);83% 为方向性小样本(canonical 新鲜局确定性 win 是硬证)。⑦维度 c2 收敛、⑧维度调参后 win 硬证,⑧仍待创始人验玩升 verified。

View File

@ -0,0 +1,326 @@
{
"session": "round-15 ⑦c2 检查点2 = c2cp1 调参后⑧win 实测",
"utc": "2026-07-25T12:33Z",
"machine": "dev-local(开发机,非 mini-desktop)",
"chrome": "Chrome/150 headless=new",
"node": "v22.22.3",
"collector": "evidence/round-15/win-jiuying-chain.mjs (canonical win-jiuying.mjs 的 chain 副本;canonical 未改)",
"HEADLINE": [
"⑧win 在 c2cp1 调参后**可达**:canonical 新鲜局 runSeed(0x51AB37,硬编码)确定性 win,跨 2 次独立浏览器启动字节级复现。",
"跨 6 个不同 runSeed(restart 链推进)采样:**5 win / 1 lose(83%)**。唯一 lose = 弱 build 种子,死收割期(t≥1080)1132.5s,未及九婴刷新(1200)。",
"关键发现①:dist/shanhai-bundle.js 在 balance.js(04:57 c2cp1)之前 04:03 构建,含**旧 git-HEAD 数值**;round-14 的 win 实为旧平衡。已用 canonical build.mjs 从冻结调参 src 重建(sha 37fbe659→d304a5ec,含 hp136/poyue34/fuling16/mul1.8),本检查点首测调参后 bundle。",
"关键发现②:?seed= URL 仅注粒子确定性(host-config juice);玩法 runSeed 硬编码 0x51AB37(game-logic.js:61),仅 restart 偏移(+0x9E3779B9)。故 ?seed=1/7 不变玩法(seed42≡seed1 字节级)——多 seed 只能靠 restart 链。"
],
"seed42_win": {
"phase": "win",
"timeS": 1228.2,
"score": 3867,
"level": 49,
"hp_at_win": 92,
"hp_max_tuned": 136,
"revivesUsed": 0,
"bossKills": 2,
"seenBosses": [
"jiuying",
"zhengwang"
],
"jiuying_spawn": {
"timeS": 1200.5,
"hp": "3600/3600"
},
"jiuying_kill_rate_hps": [
85.3,
149.5,
149.3,
107.7,
85.7,
286.6
],
"jiuying_kill_window_s": 28,
"survival": "巡航段几乎全程 hp=136(调参抬血),仅 KILL 末段降到 91;九婴 sustained ~100-150 hp/s,burst 286 → hp3600 ~28s 可斩",
"gates": {
"G": true,
"A": true,
"I": true,
"R": true,
"E": true,
"B": true,
"H": true,
"C": null,
"F": null
},
"latch": true,
"restart_pass": true
},
"six_seed_sample": {
"chainRuns": 6,
"runsDone": 6,
"winCount": 5,
"loseCount": 1,
"winRate": "5/6≈83%",
"perRun": [
{
"seed": "0x51AB37+0G",
"phase": "win",
"timeS": 1228.2,
"level": 49,
"hp": 92,
"bossKills": 2,
"build": [
"leifu:3",
"tianlei:4",
"jinge:5",
"xuanming:5",
"zhendi:3",
"hanyuan:6"
],
"reached1200": 1200.5
},
{
"seed": "0x51AB37+1G",
"phase": "lose",
"timeS": 1132.5,
"level": 29,
"hp": 0,
"bossKills": 1,
"build": [
"leifu:4",
"zhendi:4",
"jinge:3",
"tianlei:2",
"poyue:3",
"xinghuo:2"
],
"reached1200": null
},
{
"seed": "0x51AB37+2G",
"phase": "win",
"timeS": 1227.3,
"level": 43,
"hp": 136,
"bossKills": 2,
"build": [
"leifu:6",
"tianlei:2",
"xinghuo:1",
"shanzi:5",
"hanyuan:3",
"xuanming:5"
],
"reached1200": 1200.8
},
{
"seed": "0x51AB37+3G",
"phase": "win",
"timeS": 1206.6,
"level": 50,
"hp": 49,
"bossKills": 2,
"build": [
"leifu:8",
"xinghuo:6",
"tianlei:1",
"jinge:6",
"hanyuan:3",
"poyue:3"
],
"reached1200": 1200.4
},
{
"seed": "0x51AB37+4G",
"phase": "win",
"timeS": 1208.9,
"level": 42,
"hp": 18,
"bossKills": 2,
"build": [
"leifu:6",
"zhendi:4",
"tianlei:7",
"poyue:6",
"hanyuan:3",
"shanzi:2"
],
"reached1200": 1200.1
},
{
"seed": "0x51AB37+5G",
"phase": "win",
"timeS": 1210.3,
"level": 46,
"hp": 55,
"bossKills": 2,
"build": [
"leifu:4",
"fentian:1",
"tianlei:3",
"hanyuan:2",
"fengren:3",
"zhendi:7"
],
"reached1200": 1200
}
],
"win_kill_times_after_1200_s": [
28,
27,
6.6,
8.9,
10.3
],
"note": "强 build 6-10s 爆斩九婴,canonical 种子 28s;均 comfortably 杀得动 hp3600"
},
"lose_diagnosis": {
"seed": "0x51AB37+1G",
"phase": "lose",
"timeS": 1132.5,
"level": 29,
"hp": 0,
"bossKills": 1,
"seenBosses": [
"zhengwang"
],
"reached1200": false,
"build": [
"leifu:4",
"zhendi:4",
"jinge:3",
"tianlei:2",
"poyue:3",
"xinghuo:2"
],
"build_note": "弱 build:最高 lv4,主输出=被削的 poyue:3(44→34),无 fuling/hanyuan;对比 win 种子 hanyuan:6/xuanming:5/jinge:5",
"death_cause": "收割期(t≥1080,rate6.8-7.6)清场不及:hp 自 t1058 跌到 5-6 苟活,怪潮峰值 104,t1132.5 阵亡,早于九婴刷新(1200)67s。属「没到1200·升级慢/早期死」,非九婴击杀时间不够(根本没到九婴)。",
"hp_curve": "136(t0)→115(t287)→78(t585)→39(t605)→24-37(中段)→6(t1058)→5(t1099)→0(t1132.5)"
},
"balance_judgment": {
"verdict": "c2 + ⑧win **基本两全**:c2 调参收敛(检查点1门档四判据全绿,本检查点未动 balance)的同时,⑧win 仍可达且鲁棒(5/6 seed win,canonical 新鲜局确定 win)。",
"relaxation_effect": "放松(怪潮 rate×0.8/敌血dps下调/玩家 hp100→136 speed120→132/d1 乘区回落 d0/TIDE 2.5→1.8)显著拉长存活窗(巡航段满血 136 跑图);削输出(poyue44→34·evo1.9→1.7/fuling19→16)未伤九婴击杀(sustained 100-150/burst286 hp/s,hp3600 6-28s 斩)。净效果=正。",
"residual_risk": "剩余失败模式=build 方差:~1/6 种子 rolls 弱 build(无 fuling/hanyuan·低等级),收割期(t≥1080)密度峰清不动→1200 前死。非九婴问题,是弱 build 的收割期生存/清场问题。",
"callback_direction_IF_want_higher_winrate": "若要抬 ⑧win 胜率(当前 5/6):微调收割期(t1080 rate6.8/t1140 7.6)再降一档,或抬弱 build 早期清场(fengren/xuanming 已抬,可再看 fuling 进化获取率)。**但此为材料级调参判断,交创始人/主线定夺——本检查点只实测给数据,不擅改 balance(焊死)。**",
"caveat": "n=6 为方向性小样本(对齐项目 n=5 收敛环口径),83% 非精确总体率;但 canonical 新鲜局确定性 win 是硬证(每个玩家首次加载即此 seed)。"
},
"dist_rebuild_transparency": {
"action": "重建 dist/shanhai-bundle.js(未追踪构建产物)从冻结调参 src",
"why": "index.html 加载 dist bundle;bundle 04:03 构建早于 balance.js 04:57 调参,含旧值,直接跑会测错平衡(=假证据)。重建是使任务前提「dist 已含调参后 balance」成立的必要、可逆、源净零动作。",
"stale_sha": "37fbe659f9c33fa619a61485feee4780496684a0eed299ffad41ed1f07fce93d",
"new_sha": "d304a5ec2a25d31a86ae80b874ab0e183bedd9b598860cbe78e346c6eb513a2b",
"build_cmd": "node game-runtime/scripts/build.mjs entry.js dist/shanhai-bundle.js --global-name=ShanhaiGame (iife/es2019/min,canonical 锁参)",
"verified_in_bundle": [
"hp:136",
"speed:132",
"dmg:34(poyue)",
"dmg:16(fuling)",
"mul:1.8(TIDE)",
"dmg:21(fengren)",
"hp:16(zheng)",
"dmgMul:1.7(poyue evo)"
],
"source_net_zero": "sim/render/art/meta/meta-tables/game-logic + balance.js sha 全程不变(见 manifest);git tracked 仅 balance.js M(调参,本检查点前已 M);未 git add/commit/push",
"reversibility": "bundle 由 src 生成;若主代理欲还原旧 bundle:git stash balance.js 后重建即可。dist 未追踪,不污染 tracked 树。"
},
"self_check": {
"tracked_dirty_only_balance": true,
"forbidden_src_0_change": true,
"canonical_driver_untouched": true,
"no_git_commit": true,
"no_ssh_mini_desktop": true,
"no_mini_infra": true,
"proc_cleanup_done": "serve(8976)/chrome(9415) 已 kill,/tmp profile 已删,lsof/ps 核对无孤儿"
},
"manifest": {
"run-harness.mjs": {
"sha256": "e0e2730d0663474e7dcf3ce28a1b3c11e9a26c13a9fe2319544848924f510edf",
"bytes": 5825
},
"win-jiuying-chain.mjs": {
"sha256": "714f0a953f6a5b4b627cd708b588417e90a645614ba9dc36c060b96ba924f21f",
"bytes": 49690
},
"seed42/00-win-result.json": {
"sha256": "3103f3fa6dbd5a6d8cbf0cb02feff0e2c175128c7c25452d3ca26325d5138e68",
"bytes": 11381
},
"seed42/07-win-jiuying.png": {
"sha256": "6fc16c4e5b48c6a4b56a5f7a1be17c4b927fe5d0a6623eb2989b07278087b927",
"bytes": 455783
},
"seed42/08-restart-newrun.png": {
"sha256": "02623a78a6c1e1339b34a7f58c10572dc933ee12ca966bd32216a1c6c938e203",
"bytes": 565127
},
"seed42/probes.jsonl": {
"sha256": "f01a91f87deaf2e06281310f3052d9fd3d162c258c6dbee4e02a7acf72b22c75",
"bytes": 142600
},
"seed42/boss-rate.jsonl": {
"sha256": "b43cf87a63a04c36cc36f34932c789d766c20302af759b4d63323ee32d970504",
"bytes": 1926
},
"seed42/inputs.json": {
"sha256": "44a87c1318f5daa278b884fd07c3dcb41420f6f8025f2b1ba120034ace812cc2",
"bytes": 24156
},
"seed1/00-win-result.json": {
"sha256": "b37f030100ee5740920d4baac8a87991d88912f3e1fb510edf5bfe9065a02751",
"bytes": 11377
},
"seed1/07-win-jiuying.png": {
"sha256": "ec37e7f78b4107e13b350f380a2142cbeccecc35bfc76d63a356f287b1c7bb17",
"bytes": 455597
},
"chain/00-win-result.json": {
"sha256": "433f02b089a11b8148daff61ac48ee1eaf50d23429f514f51c636fa0d16b4796",
"bytes": 14246
},
"chain/run-0-result.json": {
"sha256": "5a7b5f51538d682524c973d9eaf7f21becb295e1b8206759e60d0d831677d573",
"bytes": 11414
},
"chain/run-1-result.json": {
"sha256": "9e3e26e72e3708e1b2693fbe05737c97f4c8fdf81be4c0f45c3cd0852283d494",
"bytes": 8643
},
"chain/run1-07-lose-terminal.png": {
"sha256": "1706292ff8ffb0dafc78ae8ff9ac71b2b554c8995e5779ea2013a65bbcca5a71",
"bytes": 380617
},
"chain-wide/00-win-result.json": {
"sha256": "bc1985033a04b4138b3a2d976fa2e3b017dec8b04a8fe67006ff63273ba00110",
"bytes": 29441
},
"chain-wide/run-0-result.json": {
"sha256": "fb344998e3d8018d5bee4a0afe49876cbfc58e83f1af45291772ab0dd09da2e0",
"bytes": 11424
},
"chain-wide/run-1-result.json": {
"sha256": "04aaa4792d0a7cd05d92e9ae9a39fd3b45a478d329030e6ae47952f379c975eb",
"bytes": 8663
},
"chain-wide/run-2-result.json": {
"sha256": "4268dfd4d173b7829f4ce9e6a33851cc4b1082616ec77c1c895a8d5f297a99fd",
"bytes": 13158
},
"chain-wide/run-3-result.json": {
"sha256": "30203323500f350f0482e3852a4bb6610892904f4117f5db3ed8d2f1edae91da",
"bytes": 12476
},
"chain-wide/run-4-result.json": {
"sha256": "561336bd550552eb5033f21651922b5ac446842ae9fa8b4bb967bedcd0ba7b26",
"bytes": 13198
},
"chain-wide/run-5-result.json": {
"sha256": "6c78ed29250606aab22d386d7949073b0c4f733f81675546f51c1a2ed6f588f0",
"bytes": 14332
},
"chain-wide/run1-07-lose-terminal.png": {
"sha256": "1706292ff8ffb0dafc78ae8ff9ac71b2b554c8995e5779ea2013a65bbcca5a71",
"bytes": 380617
},
"chain-wide/run0-07-win-jiuying.png": {
"sha256": "6fc16c4e5b48c6a4b56a5f7a1be17c4b927fe5d0a6623eb2989b07278087b927",
"bytes": 455783
}
}
}

View File

@ -36,8 +36,8 @@ export const ROUND_S = 1200;
/** 玩家(持符巡山使)。 */
export const PLAYER = {
hp: 100, // 生命上限
speed: 120, // 移速(px/s;被动乘区放大)
hp: 136, // 生命上限 | c2cp1 R13:140→136 整体微紧压 c2 天花板(R12 fentian 85% 贴线),c3 50% 余量可吸收
speed: 132, // 移速(px/s;被动乘区放大) | c2cp1 R11:128→132
r: 12, // 碰撞半径
hurtIframe: 0.25, // 受击后短无敌窗(秒)——防同帧多怪叠伤秒杀
};
@ -147,7 +147,7 @@ export const WEAPONS = [
{
id: 'fentian', name: '焚天羽', desc: '火羽自天而落,炸开一团焚焰',
family: 'random', kind: 'proj', maxLv: 8,
base: { dmg: 19, interval: 0.9, count: 2, projSpeed: 340, projR: 7, pierce: 1, life: 1.8, searchR: 520, explode: { r: 36, dmgPct: 0.6 } },
base: { dmg: 19, interval: 0.9, count: 2, projSpeed: 340, projR: 7, pierce: 1, life: 1.8, searchR: 520, explode: { r: 36, dmgPct: 0.6 } }, // c2cp1:fentian 保持原值(R14 削 17 致混沌反涨 c2 90%,回退)
levels: lvRows({ 5: 1 }, 2),
evo: {
id: 'evo_fentian', name: '毕方燎原', passive: 'area',
@ -180,7 +180,7 @@ export const WEAPONS = [
{
id: 'fengren', name: '风刃符', desc: '沿走位方向斩出风刃,穿行而过',
family: 'movedir', kind: 'proj', maxLv: 8,
base: { dmg: 18, interval: 0.7, count: 1, projSpeed: 460, projR: 7, pierce: 4, life: 1.5 },
base: { dmg: 21, interval: 0.7, count: 1, projSpeed: 460, projR: 7, pierce: 4, life: 1.5 }, // c2cp1 R9:dmg 18→21 抬 c1 地板(定向 build 35% 进化率 0.4 活不到进化,助早期清场)
levels: lvRows({ 6: 1 }, 1),
evo: {
id: 'evo_fengren', name: '罡风裂空', passive: 'speed',
@ -191,12 +191,12 @@ export const WEAPONS = [
{
id: 'poyue', name: '破岳戟', desc: '掷出沉重戟符,推碾一线',
family: 'movedir', kind: 'proj', maxLv: 8,
base: { dmg: 44, interval: 1.5, count: 1, projSpeed: 300, projR: 10, pierce: 5, life: 1.6 },
base: { dmg: 34, interval: 1.5, count: 1, projSpeed: 300, projR: 10, pierce: 5, life: 1.6 }, // c2cp1 R13 定档:dmg 44→34 压天花板(poyue 原全场最高伤,c1 85% 余量大);R14 削 32 致混沌反涨,回退 34
levels: lvRows(),
evo: {
id: 'evo_poyue', name: '崩山裂岳', passive: 'pierce',
desc: '戟落如山崩,每击震裂四旁',
mods: { dmgMul: 1.9, explode: { r: 56, dmgPct: 0.6 }, pierceAdd: 4 },
mods: { dmgMul: 1.7, explode: { r: 56, dmgPct: 0.6 }, pierceAdd: 4 }, // R8:dmgMul 1.9→1.7 压进化后强 build 后期输出
},
},
{
@ -213,7 +213,7 @@ export const WEAPONS = [
{
id: 'xuanming', name: '玄冥轮', desc: '玄水成轮,急旋割群',
family: 'orbit', kind: 'zone', maxLv: 8,
base: { dmg: 7, tick: 0.3, count: 3, interval: 3.5, life: 3.5, zoneR: 15, orbitR: 52, orbitAv: 3.6, slow: { pct: 0.15, s: 0.5 } },
base: { dmg: 8, tick: 0.3, count: 3, interval: 3.5, life: 3.5, zoneR: 15, orbitR: 52, orbitAv: 3.6, slow: { pct: 0.15, s: 0.5 } }, // c2cp1 R9:dmg 7→8 抬 c1 地板(近身小区域有界场弱,进化率 0.25)
levels: lvRows({ 5: 1 }),
evo: {
id: 'evo_xuanming', name: '玄冥噬月', passive: 'cooldown',
@ -224,7 +224,7 @@ export const WEAPONS = [
{
id: 'fuling', name: '缚灵桩', desc: '就地立桩,桩阵电缚近旁异兽',
family: 'place', kind: 'zone', maxLv: 8,
base: { dmg: 19, tick: 0.45, count: 1, interval: 3.5, life: 3.0, zoneR: 110 },
base: { dmg: 16, tick: 0.45, count: 1, interval: 3.5, life: 3.0, zoneR: 110 }, // c2cp1 R6:dmg 19→16 压强 build 天花板(fuling r=0.51 最高,rand-2/4 含它 70/80%),为抬 c3 地板腾空间
levels: lvRows({ 5: 1 }),
evo: {
id: 'evo_fuling', name: '锁山镇桩', passive: 'regen',
@ -287,7 +287,7 @@ export const PASSIVES = [
*/
export const DIFFICULTY = {
d0: { name: '平潮', hpMul: 1.0, dpsMul: 1.0, rateMul: 1.0, speedMul: 1.0, eliteMul: 1.0, affixMax: 1, waveCompress: 1.0, locked: false },
d1: { name: '涌潮', hpMul: 1.15, dpsMul: 1.2, rateMul: 1.45, speedMul: 1.08, eliteMul: 1.3, affixMax: 2, waveCompress: 1.0, locked: false },
d1: { name: '涌潮', hpMul: 1.0, dpsMul: 1.0, rateMul: 1.0, speedMul: 1.0, eliteMul: 1.3, affixMax: 2, waveCompress: 1.0, locked: false }, // c2cp1 调参R1:有界场(无界→1560×2960)使 c3 中位 0.4→0.1,先回落 d1 乘区至 d0 基线探敏感
d2: { name: '怒潮', hpMul: 2.0, dpsMul: 1.9, rateMul: 1.7, speedMul: 1.18, eliteMul: 1.6, affixMax: 2, waveCompress: 0.9, locked: true,
unlock: { stat: 'mapWin', gte: 2, note: '占位待 meta 解锁逻辑(通关 2 图解怒潮)' } },
d3: { name: '狂潮', hpMul: 2.8, dpsMul: 2.1, rateMul: 2.0, speedMul: 1.22, eliteMul: 2.0, affixMax: 3, waveCompress: 0.82, locked: true,
@ -330,9 +330,9 @@ export const XP = {
*/
export const ENEMIES = {
// ── map1 裂谷原(基础三兽,M3 原值锁定;sim 图 1 波表 mix 实际敌混,改动破坏现行为)──
zheng: { name: '狰', hp: 22, speed: 88, r: 10, dps: 9, gem: 1, map: 'map1' }, // 快而脆:压走位
taowu: { name: '梼杌', hp: 50, speed: 60, r: 14, dps: 13, gem: 2, map: 'map1' }, // 中坚
qiongqi: { name: '穷奇', hp: 140, speed: 40, r: 20, dps: 18, gem: 4, map: 'map1' }, // 慢坦克:压火力
zheng: { name: '狰', hp: 16, speed: 88, r: 10, dps: 7, gem: 1, map: 'map1' }, // 快而脆:压走位 | c2cp1 R7:hp 22→16 降个体血量助随机 build 清场(门档全 build 大量 dieEarly=清场不及)
taowu: { name: '梼杌', hp: 38, speed: 60, r: 14, dps: 10, gem: 2, map: 'map1' }, // 中坚 | hp 50→38
qiongqi: { name: '穷奇', hp: 105, speed: 40, r: 20, dps: 14, gem: 4, map: 'map1' }, // 慢坦克:压火力 | hp 140→105
// ── map2 不周山(天柱折·焦土火山;基础血量 ≈图1×1.3。数值占位待平衡)──
bifang: { name: '毕方', hp: 30, speed: 92, r: 10, dps: 11, gem: 1, map: 'map2' }, // 火鸟·快脆(占位)
@ -383,28 +383,29 @@ export const ENEMIES = {
* 首杀 10s 由首段 rate 保证( 11)
*/
export const WAVES = [
{ t: 0, rate: 0.9, hpMul: 1.0, speedMul: 1.0, gemMul: 1.0, mix: { zheng: 1.0 } },
{ t: 45, rate: 1.5, hpMul: 1.1, speedMul: 1.02, gemMul: 1.0, mix: { zheng: 0.9, taowu: 0.1 } },
{ t: 90, rate: 1.9, hpMul: 1.2, speedMul: 1.05, gemMul: 1.15, mix: { zheng: 0.85, taowu: 0.15 } },
{ t: 150, rate: 2.3, hpMul: 1.32, speedMul: 1.08, gemMul: 1.3, mix: { zheng: 0.75, taowu: 0.25 } },
{ t: 240, rate: 2.7, hpMul: 1.42, speedMul: 1.1, gemMul: 1.45, mix: { zheng: 0.65, taowu: 0.3, qiongqi: 0.05 } },
{ t: 330, rate: 3.1, hpMul: 1.55, speedMul: 1.13, gemMul: 1.55, mix: { zheng: 0.6, taowu: 0.3, qiongqi: 0.1 } },
{ t: 420, rate: 3.5, hpMul: 1.68, speedMul: 1.15, gemMul: 1.65, mix: { zheng: 0.55, taowu: 0.32, qiongqi: 0.13 } },
{ t: 540, rate: 3.9, hpMul: 1.82, speedMul: 1.18, gemMul: 1.75, mix: { zheng: 0.5, taowu: 0.34, qiongqi: 0.16 } },
{ t: 660, rate: 4.3, hpMul: 1.95, speedMul: 1.2, gemMul: 1.85, mix: { zheng: 0.5, taowu: 0.32, qiongqi: 0.18 } },
{ t: 780, rate: 4.7, hpMul: 2.05, speedMul: 1.22, gemMul: 1.95, mix: { zheng: 0.48, taowu: 0.32, qiongqi: 0.2 } },
{ t: 900, rate: 5.1, hpMul: 2.15, speedMul: 1.24, gemMul: 2.05, mix: { zheng: 0.46, taowu: 0.32, qiongqi: 0.22 } },
{ t: 1020, rate: 5.5, hpMul: 2.25, speedMul: 1.26, gemMul: 2.15, mix: { zheng: 0.45, taowu: 0.33, qiongqi: 0.22 } },
// c2cp1 R3:有界场围杀降压,rate 全表等比 ×0.8(保 rate 单调性,不破 build-tables 断言)
{ t: 0, rate: 0.72, hpMul: 1.0, speedMul: 1.0, gemMul: 1.0, mix: { zheng: 1.0 } },
{ t: 45, rate: 1.2, hpMul: 1.1, speedMul: 1.02, gemMul: 1.0, mix: { zheng: 0.9, taowu: 0.1 } },
{ t: 90, rate: 1.52, hpMul: 1.2, speedMul: 1.05, gemMul: 1.15, mix: { zheng: 0.85, taowu: 0.15 } },
{ t: 150, rate: 1.84, hpMul: 1.32, speedMul: 1.08, gemMul: 1.3, mix: { zheng: 0.75, taowu: 0.25 } },
{ t: 240, rate: 2.16, hpMul: 1.42, speedMul: 1.1, gemMul: 1.45, mix: { zheng: 0.65, taowu: 0.3, qiongqi: 0.05 } },
{ t: 330, rate: 2.48, hpMul: 1.55, speedMul: 1.13, gemMul: 1.55, mix: { zheng: 0.6, taowu: 0.3, qiongqi: 0.1 } },
{ t: 420, rate: 2.8, hpMul: 1.68, speedMul: 1.15, gemMul: 1.65, mix: { zheng: 0.55, taowu: 0.32, qiongqi: 0.13 } },
{ t: 540, rate: 3.12, hpMul: 1.82, speedMul: 1.18, gemMul: 1.75, mix: { zheng: 0.5, taowu: 0.34, qiongqi: 0.16 } },
{ t: 660, rate: 3.44, hpMul: 1.95, speedMul: 1.2, gemMul: 1.85, mix: { zheng: 0.5, taowu: 0.32, qiongqi: 0.18 } },
{ t: 780, rate: 3.76, hpMul: 2.05, speedMul: 1.22, gemMul: 1.95, mix: { zheng: 0.48, taowu: 0.32, qiongqi: 0.2 } },
{ t: 900, rate: 4.08, hpMul: 2.15, speedMul: 1.24, gemMul: 2.05, mix: { zheng: 0.46, taowu: 0.32, qiongqi: 0.22 } },
{ t: 1020, rate: 4.4, hpMul: 2.25, speedMul: 1.26, gemMul: 2.15, mix: { zheng: 0.45, taowu: 0.33, qiongqi: 0.22 } },
// ── 18:00 放量收割期(§3.1):密度跳升 + 个体血量回落 + 多出脆皮(割草放量)──
{ t: 1080, rate: 8.5, hpMul: 1.9, speedMul: 1.24, gemMul: 2.15, mix: { zheng: 0.6, taowu: 0.28, qiongqi: 0.12 } },
{ t: 1140, rate: 9.5, hpMul: 2.0, speedMul: 1.25, gemMul: 2.15, mix: { zheng: 0.6, taowu: 0.28, qiongqi: 0.12 } },
{ t: 1080, rate: 6.8, hpMul: 1.9, speedMul: 1.24, gemMul: 2.15, mix: { zheng: 0.6, taowu: 0.28, qiongqi: 0.12 } },
{ t: 1140, rate: 7.6, hpMul: 2.0, speedMul: 1.25, gemMul: 2.15, mix: { zheng: 0.6, taowu: 0.28, qiongqi: 0.12 } },
];
/**
* 潮汐脉冲(§8.1:λ(t) 爬坡 + 潮汐脉冲 ×2.5,6090s 一次):
* startS ,每隔 [minGapS,maxGapS](受控 rng )触发一次,持续 durS 内出怪率 ×mul
*/
export const TIDE = { startS: 60, minGapS: 60, maxGapS: 90, mul: 2.5, durS: 8 };
export const TIDE = { startS: 60, minGapS: 60, maxGapS: 90, mul: 1.8, durS: 8 }; // c2cp1 R3:mul 2.5→1.8 有界场潮汐脉冲峰降压
/**
* 精英(§5.2 精英词缀;词缀强化个体):普通敌种 × 基础精英乘区 + 1..affixMax 个词缀