← 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を変更した場合も、スキップコマンドと同様に指定ステージまでをクリア扱いにする
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