{eventScoreMode ? '이벤트 점수 탐색' : eventMode ? '이벤트 PT 비교' : '조합 탐색'} · 갤산기

{eventScoreMode ? '이벤트 점수 탐색' : eventMode ? '이벤트 PT 비교' : '조합 탐색'}

{eventScoreMode ? '현재 챕터의 과제곡 스코어 보너스를 반영해 최고 점수 조합과 스페셜 순서를 찾습니다.' : eventMode ? '평균 점수에 편성·신규 카드·개화 보너스를 반영한 평균 이벤트 Pt 지수가 높은 순서로 조합을 추천합니다. 스페셜 순서도 평균 점수를 기준으로 최적화합니다.' : '악곡과 고정 멤버 조건을 바탕으로 최고 점수 조합과 스페셜 발동 순서를 함께 찾습니다.'}

{#if eventMode && currentEvent}
{currentEvent.name} {new Date(currentEvent.startsAt).toLocaleString('ko-KR', { timeZone: 'Asia/Seoul' })} ~ {new Date(currentEvent.endsAt).toLocaleString('ko-KR', { timeZone: 'Asia/Seoul' })} (한국 시간) {#if currentEvent.exchangeEndsAt}교환소 종료: {new Date(currentEvent.exchangeEndsAt).toLocaleString('ko-KR', { timeZone: 'Asia/Seoul' })} (한국 시간){/if} 현재 대상: {currentEvent.bonusCharacterIds.map((id) => leaderMembers.find((card) => card.characterId === id)?.name ?? id).join(', ')} 과제곡: {Object.keys(currentEvent.challengeSongBonusCardIds).map((id) => songs.find((song) => song.id === id)?.title ?? '채보 준비 중').join(', ')} 대상 멤버 1명당 +{currentEvent.formationBonusPercent}% · 신규 카드 추가 +{currentEvent.featuredCardBonusPercent}% · 과제곡 대응 카드 스코어 +{currentEvent.challengeSongScoreBonusPercent}%
{/if} {#if eventPtMode}

PT 비교 지수는 평균 점수 × 획득 보너스 배율입니다. 실제 획득 PT 공식의 기본점·곡 길이·부스트·패스 배율은 포함하지 않으며, 같은 악곡과 난이도에서만 비교하세요.

{/if} {#if selectedChart && selectedChart.scoreCalibrationSource !== 'measured' && selectedChart.scoreCalibrationSource !== 'formula-v1'}

추정 점수 안내 이 악곡의 점수 계수는 실측값이 아니므로 실제 점수와 오차가 크게 발생할 수 있습니다.

{/if} {#if !eventMode}

기준 조합은 배치 분석 결과가 저장되어 있고, 저장된 악곡과 난이도가 현재 탐색 조건과 같을 때 표시됩니다.

{/if}
{#if baselineState && baselineMatchesConditions}
00

기준 조합

배치 분석 저장값

{baselineChartMetadata?.title} · {difficultyLabel(baselineState.difficulty)}

{#each baselineResult?.formationOrder ?? baselineState.cardIds as cardId, slot}
{slot + 1}{baselineCardLabel(cardId)}
{/each}
{#if baselineResult}
종합력{baselineOverallPower.toLocaleString('ko-KR')}
평균 점수{baselineResult.expectedScore.toLocaleString('ko-KR')}
최고 점수{baselineResult.theoreticalMaxScore.toLocaleString('ko-KR')}
{:else if baselineRunning}

배치 분석의 저장 조건으로 기준 점수를 계산하고 있습니다.

{:else if baselineError} {/if}
{/if}
01

탐색 조건

{ownedCardsOnly ? (eventMode ? '보유 이벤트 후보 대상' : '보유 5성 대상') : (eventMode ? '4·5성 + 대상 멤버 전 레어리티' : '5성 전체 대상')}
result = null} />
길이 {selectedChart?.durationSeconds ?? 0}초노트 {selectedChart?.totalNotes?.toLocaleString('ko-KR') ?? 0}개점수 계수 · {scoreCalibrationLabel}
자동 후보 개화
{candidateAwakening}

고정 카드를 포함한 5장 전체에 적용합니다. 보드의 발동률 증가와 관계없이 카드의 기본 확률을 기준으로 셉니다.

‘내가 보유한 카드만 사용하기’를 켜면 고정 카드와 자동 후보 모두 {eventMode ? '보유한 이벤트 후보 카드' : '보유 5성 카드'}로 제한됩니다.
보유 카드의 개화가 자동 후보 개화보다 높으면 실제 보유 개화를 우선 적용합니다.
기수 보너스는 녹색 노드를 활성화해 얻을 수 있는 보너스를 의미합니다.

{#each fixedCardIds as selectedId, slot}
개화 (0~5)
{fixedAwakenings[slot]}
빈도 감소 고정
{#each REDUCTION_LOCK_OPTIONS as reduction} {/each}
파란 노드 전체 기수 보너스 덮어쓰기 (0~900) updateFixedGenerationBonus(slot, sanitizeGenerationBonusInput(event.currentTarget, fixedGenerationBonusOverrides[slot] ?? null))}>
{/each}

‘파란 노드 전체’를 사용하지 않으면 사용자 데이터에 저장된 해당 멤버의 보드를 사용합니다.

리더 의상 효과

{leaderOutfitDescription || '적용할 수 있는 의상이 없습니다.'}

기수 보너스와 가창 보너스 덮어쓰기는 빈칸이면 저장된 실제 보드를 사용하고, 숫자를 입력하면 해당 값으로 대체합니다. 자동 후보는 파란 노드 전체 활성화·기수 보너스 {candidateGenerationBonus === null ? '저장값' : candidateGenerationBonus}·가창 보너스 {songScoreBonusOverride === null ? '실제 보드값' : `${songScoreBonusOverride}%`} 조건으로 비교합니다.

다음 탐색부터 적용합니다. 결과 수를 늘리면 달성 확률 계산 시간이 늘어납니다. 분석한 조합이 적으면 선택한 수보다 적게 표시됩니다.

{#if errorMessage}{/if} {#if running}
{searchStep}/4
현재 진행 단계{['후보 선별', '선별 후보 평가', '확장 후보 검증', '달성 확률 계산'][searchStep - 1]}

퍼센트는 현재 단계의 진행률입니다. 확장 후보가 없으면 3단계는 건너뜁니다.

{/if}

탐색 속도는 빨라지지만, 분석 중 브라우저 및 기기 사용이 불편할 수 있습니다.

{#if running}{/if}
02

탐색 결과

{#if result}{screenedCombinationCount.toLocaleString('ko-KR')}개 선별 · {exactCombinationCount}개 후보 평가 · {comparableToBaseline ? '기준 조합 포함 ' : ''}상위 {displayedRankings.length}개{/if}
{#if userDataChanged}

사용자 데이터가 변경되었습니다. 진행 중인 탐색과 아래 결과는 이전 데이터 기준이며, 다시 탐색하면 최신 데이터를 적용합니다.

{/if} {#if !eventMode}

상세 점수·그래프·액티브 미발동 비교는 각 결과의 ‘배치 분석에서 보기’를 눌러 새 탭에서 확인할 수 있습니다.

{/if} {#if transferError}{/if} {#if displayedRankings.length > 0}
{#each displayedRankings as ranking, rank} {rank + 1}위
{#if ranking.isBaseline}기준 조합{/if} {#each ranking.result.formationOrder as cardId, memberIndex} {displayedCardAwakening(cardId, ranking.isBaseline)}개화 {#if displayedCardAdditionalAwakenings(cardId, ranking.isBaseline) > 0} · +{displayedCardAdditionalAwakenings(cardId, ranking.isBaseline)}회 {/if} {cardById.get(cardId)?.name ?? cardId} {#if cardById.get(cardId)?.versionName}{cardById.get(cardId)?.versionName}{/if} {#if memberIndex < ranking.result.formationOrder.length - 1}{/if} {/each}
{#if !eventMode}
추가 개화 {displayedAdditionalAwakenings(ranking)}회
{/if} {eventPtMode ? 'PT 비교 지수' : eventScoreMode ? '이벤트 최고 점수' : '최고 점수'} {eventPtMode ? eventPointIndex(ranking.result.expectedScore, ranking.eventBonusPercent ?? 0).toLocaleString('ko-KR') : ranking.result.theoreticalMaxScore.toLocaleString('ko-KR')} {#if eventMode}PT 획득 보너스 +{ranking.eventBonusPercent ?? 0}% · 평균 점수 {ranking.result.expectedScore.toLocaleString('ko-KR')} {#if currentEvent}최종 점수에 과제곡 보너스 +{ranking.finalScoreBonusPercent ?? 0}%{/if} {/if} {#if comparableToBaseline && !ranking.isBaseline}{scoreDelta(ranking.result.theoreticalMaxScore, baselineResult!.theoreticalMaxScore)}{/if} {#if eventMode}추가 개화 {displayedAdditionalAwakenings(ranking)}회 {:else}예상 {ranking.result.expectedScore.toLocaleString('ko-KR')}{/if} 최고점 대비 달성 확률 100%{probabilityLabel(ranking.achievementProbabilities?.maximum)} 99% 이상{probabilityLabel(ranking.achievementProbabilities?.atLeast99Percent)}{scoreThreshold(ranking.result.theoreticalMaxScore, 0.99)}점 95% 이상{probabilityLabel(ranking.achievementProbabilities?.atLeast95Percent)}{scoreThreshold(ranking.result.theoreticalMaxScore, 0.95)}점 {#if !eventMode && !running && (!ranking.isBaseline || !baselineRunning)} openInAnalysis(event, ranking)}>배치 분석에서 보기 ↗{/if}
{#if eventMode}
{/if}
{/each}

추가 개화는 현재 카드 데이터와 조합의 목표 개화를 비교한 값입니다. 미보유 카드를 처음 얻는 과정도 1회로 계산합니다.

{#if eventPtMode}

이 수치는 실제 획득 PT가 아닌 동일 악곡·난이도에서의 비교 지수입니다. 실제 PT 공식의 기본점, 곡 길이, 부스트, 패스 배율은 포함하지 않습니다. 순위는 최고점이 아닌 평균 이벤트 Pt 지수 기준입니다. 평균 점수(액티브 발동 확률을 반영한 기대값)에 편성·신규 카드·개화 획득 배율을 적용해 비교하며, 지수가 같으면 평균 점수가 높은 조합을 우선합니다. 실제 획득 PT나 서로 다른 악곡의 주회 효율로 해석하지 마세요.

{/if}

달성 확률은 모든 노트를 PERFECT로 처리한다고 가정하고 액티브 발동 확률만 반영합니다. 100%는 정확 계산, 99%·95% 이상은 25,000회 반복 계산값이며 최고점에 영향을 주지 않는 발동 실패는 100% 달성 확률을 낮추지 않습니다.

{:else}
고정할 카드와 악곡을 선택한 뒤 조합 탐색을 시작해 주세요.
{/if}