Linear ArchiveArchived issues viewer
← Back to list
INS-758

チャプター解放条件をclaudeに確認して、debugなどでステージ飛んでもクリアできるような仕様にしたい。

StatusDone
TeamInstansys
Assigneeyasuhisa.hiraga@instansys.co.jp
PriorityNo priority
Created2026/05/06 09:10
Completed2026/05/12 23:56
Archived2026/05/20 04:03

Description

ステージスキップコマンド

bun run debug-cmd skip-to <player_id> <stage_id>

Current Stageを変更した場合も、スキップコマンドと同様に指定ステージまでをクリア扱いにする

スクリーンショット 2026-05-11 12.59.52.png

Comments (1)

yasuhisa.hiraga@instansys.co.jp2026/05/08 02:13

Chapter1 が解放される条件

「Prologue が clearedChapters に含まれていること」

です。前の章がクリア済みなら次の章がアンロックされる仕組み(MQStorySelectionModal.tsx:291-297)。

clearedChapters への登録条件

clearedChapters は clearedDifficulties から派生します(MainQuest.tsx:526-530)。clearedDifficulties

の算出ロジック(apps/server/src/routers/loading/main-quest-assets.ts:64-80):

// difficultyId("prologue-normal" 等)の全ステージが以下を満たすと「クリア済み」

.every((stage) => {
const result = stageResults.find((r) => r.stageId === stage.id);
// story / event ステージ: result行が存在すればOK(stars不問)                                                                                
if (stage.type === "story" || stage.type === "event") {                                                                                       
  return result !== undefined;                                                                                                                
}                                                                                                                                             
// battle ステージ: result行があり、かつ stars > 0                                                                                            
return result !== undefined && result.stars > 0;
})

DBレベルでの必要データ

main_quest_stage_results テーブルに以下のレコードが揃っていればOK:

┌──────────────┬────────────────────────────────────────────────────────┐

│ ステージ種別 │                      必要レコード                      │

├──────────────┼────────────────────────────────────────────────────────┤

│ story        │ 当該 stageId のレコード(stars は何でもよい、0でもOK) │

├──────────────┼────────────────────────────────────────────────────────┤

│ event        │ 当該 stageId のレコード(同上)                        │

├──────────────┼────────────────────────────────────────────────────────┤

│ battle       │ 当該 stageId のレコードで stars > 0                    │

└──────────────┴────────────────────────────────────────────────────────┘

つまり、difficultyId = "prologue-normal" の全ステージ分のレコードが上記条件で揃えば、clearedChapters に "prologue" が入り、Chapter1

のロックが外れます。

関連ロジックの場所

  • 算出: apps/server/src/routers/loading/main-quest-assets.ts:64-80
  • chapterId への変換: apps/client/src/scenes/MainQuest.tsx:526-530
  • ロック判定: apps/client/src/scenes/MainQuest/ChapterSelectionView/MQStorySelectionModal.tsx:291-297