Skip to content

test(starpuff): L16 EX P4 窯心暴走的 anti-softlock 鏈缺自動守門 #985

Description

@s123104

摘要

調查「L16 EX 暗階段後卡關」回報時,確認現行 main 無法重現卡關,但過程中發現 P4 窯心暴走的 anti-softlock 保障鏈完全依賴多個獨立機制的巧合成立,沒有任何自動化守門。任一環未來被改動都會靜默製造無限卡關。

調查結論(現況為安全)

syrona.ts 的 P4 可傷性裁決:

const crown = rawCrown && (fsm.phase !== 'p4' || targetRidingVent());
if (fsm.phase === 'p4' && !crown) {
  playSfx('metal', 0.6);
  return;   // ← 未乘噴口=完全免傷
}

也就是 P4 唯一傷害途徑=「乘噴口升空 + 皇冠命中」,需要星彈。而 syronaMoveTable 的 P3/P4 招池只有 waveoverload——不含 summon,暗紅暴走階段不再召喚可吸的 Bubbla。

保障鏈因此依賴以下四點同時成立:

  1. waves.ts 飢荒救援在魔王關以全域計數運作(level.boss 分支),空匣時補救援怪
  2. P4 噴口恆供力getVentLiftrampage 旁路 ventPhase 週期檢查)
  3. 全場沸騰漲頂恆低於最高浮台 304rampageBoilMaxYDeltaPx),保底立足位
  4. 皇冠命中有 glance 1 點保底crownGlanceDamage),共鳴未解鎖也能磨

實測佐證:高階 bot 3 輪 clearRate=100%stallRisk=lowconsoleErrors=0,皆通過 P4。

風險

四點皆為註解宣告,無測試守門。例如:把 summon 從 P3/P4 移除(已是現況)疊加飢荒救援在魔王關被改成近域計數,就會讓空匣玩家永久無法傷害魔王——且 bot 未必踩得到(bot 通常不會空匣)。

這與 repo 的 anti-softlock 硬不變式(「基礎星彈恆可通關、無無限卡關」)直接相關,卻是四個檔案的隱性耦合。

建議

補一個 logic 層守門測試,斷言 P4 的可傷性前提:

  • crownGlanceDamage > 0(保底可磨不得歸零)
  • rampageBoilMaxYDeltaPx 換算後的漲頂 < 最高浮台 y
  • 魔王關飢荒判定走全域計數(非近域)
  • P4 噴口供力不受 ventPhase 週期閘限制

附註:原始回報的釐清

回報描述為「L16 EX 到暗階段後卡關」。L16 是熔糖窯后 Syrona,其 EX P4 為「窯心暴走」(本體轉暗紅 RAMPAGE_BODY_TINT),推測即所指的「暗階段」;全遊戲的「月蝕暗場」則屬 L7 Noctra 與 L24 Maridella。

歷史上確有 L16 卡關 P0:#912(二段跳穿透浮空台階墜落淹死),已由 49c269abc 修復關閉——回報者記憶的卡關很可能是該案。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestseverity:p3Lower-priority optimization

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions