diff --git a/scripts/verify-flow.mjs b/scripts/verify-flow.mjs index 9115b9b..b2df0fd 100644 --- a/scripts/verify-flow.mjs +++ b/scripts/verify-flow.mjs @@ -9631,6 +9631,13 @@ function assertSortieTacticalRoster(state, requiredUnitIds) { throw new Error(`Expected sortie preparation to expose deployment plan, reserve training, bond count, and terrain score: ${JSON.stringify(state.sortiePlan)}`); } + if ( + state.sortiePlan.reserveTrainingBondAssignmentCount > 0 && + !state.sortiePlan.reserveTrainingPreviewLine.includes('공명') + ) { + throw new Error(`Expected individualized bond drill count to be visible in reserve training preview: ${JSON.stringify(state.sortiePlan)}`); + } + if ( !state.sortieFocusedUnit || !state.sortieFocusedUnit.id || diff --git a/src/game/scenes/CampScene.ts b/src/game/scenes/CampScene.ts index da219da..6db6a02 100644 --- a/src/game/scenes/CampScene.ts +++ b/src/game/scenes/CampScene.ts @@ -13705,8 +13705,12 @@ export class CampScene extends Phaser.Scene { const previewNames = reserveUnits.slice(0, 2).map((unit) => unit.name).join(', '); const remaining = reserveUnits.length > 2 ? ` 외 ${reserveUnits.length - 2}명` : ''; const individualCount = reserveUnits.filter((unit) => this.campaign?.reserveTrainingAssignments[unit.id]).length; + const bondIndividualCount = reserveUnits.filter( + (unit) => this.campaign?.reserveTrainingAssignments[unit.id] && this.reserveTrainingFocusDefinitionForUnit(unit.id).bondExpGained > 0 + ).length; + const bondIndividualLine = bondIndividualCount > 0 ? ` · 공명 ${bondIndividualCount}명` : ''; const gainLine = individualCount > 0 - ? `개별 ${individualCount}명 · 기본 ${focus.label}` + ? `개별 ${individualCount}명${bondIndividualLine} · 기본 ${focus.label}` : `경험 +${focus.expGained} · 장비 +${focus.equipmentExpGained}${focus.bondExpGained ? ` · 공명 +${focus.bondExpGained}` : ''}`; return `${previewNames}${remaining} · ${gainLine}`; }