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 修復關閉——回報者記憶的卡關很可能是該案。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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