diff --git a/docs/plans/2026-07-15-001-feat-内部狗粮上线执行-plan.md b/docs/plans/2026-07-15-001-feat-内部狗粮上线执行-plan.md index e923d041..fb087915 100644 --- a/docs/plans/2026-07-15-001-feat-内部狗粮上线执行-plan.md +++ b/docs/plans/2026-07-15-001-feat-内部狗粮上线执行-plan.md @@ -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。 diff --git a/game-runtime/games/shanhai-xingji/evidence/realization-evidence-status.md b/game-runtime/games/shanhai-xingji/evidence/realization-evidence-status.md index 459f94b0..5e7fb2bf 100644 --- a/game-runtime/games/shanhai-xingji/evidence/realization-evidence-status.md +++ b/game-runtime/games/shanhai-xingji/evidence/realization-evidence-status.md @@ -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。 diff --git a/game-runtime/games/shanhai-xingji/evidence/round-15/00-round15-summary.json b/game-runtime/games/shanhai-xingji/evidence/round-15/00-round15-summary.json new file mode 100644 index 00000000..72b5e79c --- /dev/null +++ b/game-runtime/games/shanhai-xingji/evidence/round-15/00-round15-summary.json @@ -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 + } + } +} diff --git a/game-runtime/games/shanhai-xingji/src/balance.js b/game-runtime/games/shanhai-xingji/src/balance.js index a0a89252..0f19d229 100644 --- a/game-runtime/games/shanhai-xingji/src/balance.js +++ b/game-runtime/games/shanhai-xingji/src/balance.js @@ -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,60–90s 一次): * 自 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 个词缀。