feat: 體驗第二波 + 全面抓蟲 — 設定/回饋、成果保留、搶修、內容查核修正 - #114
Merged
Conversation
設定(無障礙): - useReducedMotion 支援 localStorage 手動覆寫(+body class 讓 CSS 停用 動畫規則同步生效);開機同步、事件通知即時切換。 - 個人檔案新增「🎬 減少動態」開關:影片改靜態圖、停用動畫;預設跟隨 系統偏好,教室/無法改 OS 設定的裝置可手動開啟。 即時回饋(juice): - 完工跳出「💰 +◎獎勵 ⭐ +XP」toast,強化成就感。 - 診斷連對 3 題與每 5 題跳 🔥 里程碑慶祝。 - TopBar 預算增減短暫變色(綠=進帳/紅=支出);純顏色變化,減少動態下也安全。 151 tests / typecheck / build 全綠。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NF4jqbu1VJU5iS4pHEeDrn
- REPLAN_RETURN 改為「保留」已完成的診斷與 SOP 步驟(工作交接紀錄): 擇日再出海只需重新登塔、重擲作業窗續修。被迫撤離(FAIL_REPAIR)維持 進度全失+計安全事件 → 明確獎勵「及時止損」勝過「硬撐到窗關」。 - 登船畫面顯示「♻ 上次進度已保留(診斷/SOP n/m)」。 - 出海前工期預估只算「剩餘」工作(已診斷→檢查 0;SOP 只算剩餘步驟), 並標示已保留進度 → 再出發的餘裕評估更準。 - 測試改寫涵蓋新語意(保留 pick/steps、boarded 重置、窗重擲、無安全事件; FAIL_REPAIR 對照全失+事件)。151 tests / typecheck / build 全綠。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NF4jqbu1VJU5iS4pHEeDrn
- 新增 RUSH_SOP action:已登塔且窗未關時,剩餘 SOP 一次趕完、 總耗時減半(rushCost = ceil(剩餘×每步/2),下限 1); 25%(RUSH_RISK)機率安全近失事件 → 計 safetyIncidents、扣績效。 風險由 UI 擲骰後傳入,reducer 保持確定性(可測、fuzz 友善)。 - 僅在「維修不利」(tightWindow)時出現 —— 是緊急槓桿,不是常規最佳解; 與「繼續作業 / 回港再規劃」並列成三選一決策: 搶修(快、有風險) vs 續作(穩、可能窗關) vs 返港(慢、保進度)。 - 成功/出事各有工程師/工安對話回饋,把「快歸快,程序不能省」教進遊戲。 - 測試:完成/減半/事件/三守衛 + fuzz 動作池;152 tests / typecheck / build 全綠。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NF4jqbu1VJU5iS4pHEeDrn
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NF4jqbu1VJU5iS4pHEeDrn
抓蟲(操作邏輯/小細節): - saveRepair 基底補上 misses:原本登塔/完成步驟等未帶 misses 的補丁 會把答錯次數歸零 → 任務復盤低估答錯數。 - 浪高「返航改期」由 FAIL_REPAIR 改走 REPLAN_RETURN:不登船是「審慎 決策」,不該被記安全事件懲罰(原邏輯懲罰安全選擇、反而鼓勵頂浪硬上, 教學方向顛倒);按鈕文案同步更新,FAIL_REPAIR 註解釐清兩者區隔。 - 復盤 used/pctLeft 夾範圍:跨日後 windowMax 重算可能與登塔基準不同, 避免出現負值/超過 100%。 152 tests / typecheck / build 全綠。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NF4jqbu1VJU5iS4pHEeDrn
半途成果保留(#carry)的資訊閉環:審慎返港後,母港「待處理工單」 顯示已保留的診斷/SOP 進度與「出海續修即可」提示,玩家不會誤以為 要從頭來過。152 tests / typecheck / build 全綠。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NF4jqbu1VJU5iS4pHEeDrn
小細節抓蟲: - 任務選項效果標籤「安全 +1」其實是 safetyIncidents +1(壞事、扣績效), 顯示卻像加分 → 改為「⚠ 安全事件 +N」,決策後果一目了然。 - 營運中心作答同樣累計連對 streak,但原本沒有回饋 → 補上與維修診斷 一致的 🔥 徽章與里程碑 toast(3 題/每 5 題)。 152 tests / typecheck / build 全綠。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NF4jqbu1VJU5iS4pHEeDrn
- RESOLVE_TASK 的 dSafety 負值(改善安全的選項,s:-1 共 4 處)原本可把 safetyIncidents 打成負數 → computeScore 的 −20×事件數反而變成加分, 重複選這類選項可無限刷績效。改為 Math.max(0, ...) 夾底。 - 效果標籤同步修正:原「安全 +-1」錯誤顯示;現在正值標「⚠ 安全事件 +N」、 負值標「安全事件 -N」(改善),符號與語意都正確。 - 新增 clamp 測試(0 夾底 / 正常遞減)。153 tests / typecheck / build 全綠。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NF4jqbu1VJU5iS4pHEeDrn
原本單一插槽:新 toast 立即取代舊的 → 完工獎勵 toast 會在 ~0.9 秒內 被「每日任務達成」通知蓋掉(FINISH_REPAIR 進日 → 每日任務隨即發獎)。 改為佇列依序各顯示 1.8 秒(上限 5 則防洪)。typecheck / build 全綠。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NF4jqbu1VJU5iS4pHEeDrn
- 動態提示:有保留進度的工單時提醒「出海續修」。 - 常駐輪播新增:作業窗吃緊三選一(繼續/搶修/返港)與 🔥 連對機制說明。 153 tests / typecheck / build 全綠。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NF4jqbu1VJU5iS4pHEeDrn
深度查核(事件/案例/任務/故障內容 × 消費端交叉驗證)後修正: 每日任務(HIGH): - 「維持型」任務(零事件/健康度/妥善率,3/6 種)開局當下條件即真 → roll 的瞬間就自動發獎(白拿 ◎12-15 萬 + streak 灌水)。新增 deferred 語意:維持型改於「隔日 roll 前」結算,撐過一整天才算達成; DailyTracker 先結算昨日、再擲今日(連勝判定含剛結算項)。 - 修 DailyTracker 效果重跑造成的重複音效/通知(排程去重)。 備品/故障資料(MED): - sensor(感測器誤報)誤耗「發電機碳刷」→ 改耗「風速計」。 - pitch(變槳故障,控制側)quiz/SOP 都在講後備電池,卻誤耗「液壓油」 → 改耗「變槳後備電池」(faults.ts 與 incidents.ts 同步;液壓根因 另由 pitch_hyd/pitch_hydraulic_leak 負責)。 - yaw_motor/gen_brush 展示庫存 0 → 修正(Tier1 必需品看似永遠缺貨)。 - 進行中工單的必備備品「永遠可見」於交易所(即使高於目前 Tier 的 預設過濾),主線不再卡在找不到料(m3 → pitch_bearing 案例)。 案例/任務內容: - cs_blade_bonding_quality_escape「正解」誤植 s:1(全內容唯一 好選項計安全事件)→ 移除;成就 safety_clean 改 <=0 防禦。 - 移除 3 組重複任務模板(b_harmonics/g_medical_evac/c_dehumidify), 避免同題雙倍抽中率。 查核亦確認乾淨:quiz 索引、跨檔 id 引用、i18n 完整性、Tier 閘門、 派工守衛一致性、事件權重、案例去重。 154 tests(新增 deferred 結算測試)/ typecheck / build / sim 梯度健康。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NF4jqbu1VJU5iS4pHEeDrn
dofliu
marked this pull request as ready for review
July 2, 2026 13:32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
「更好玩、更吸引學生」+「細節/bug/操作邏輯/事件/案例/互動」的自主精進與全面查核。
A. 體驗與設定
B. 玩法深度
C. 抓蟲 — 操作邏輯/UI
saveRepair漏misses→ 復盤低估答錯數;效果標籤「安全 +-1」→「⚠ 安全事件 ±N」;營運中心補 🔥 回饋。D. 抓蟲 — 內容系統(事件/案例/任務全查核)
<=0。已知未動(需設計決定):bearing 類共用 pitch_bearing 備品(Tier 閘門取捨)、crew_shortage/strike 事件僅影響展示用 techAvail(建議改接疲勞或派工檢查)。
驗證
npm run typecheck✅ /npm test→ 154 passed ✅ /npm run build✅npm run sim:passive ≪ active ≪ full-crew 梯度健康 /npm run stress:後端契約維持 ✅🤖 Generated with Claude Code