diff --git a/scripts/verify-flow.mjs b/scripts/verify-flow.mjs index 7eaaaa0..03766f8 100644 --- a/scripts/verify-flow.mjs +++ b/scripts/verify-flow.mjs @@ -9634,6 +9634,9 @@ function assertSortieTacticalRoster(state, requiredUnitIds) { !state.sortieFocusedUnit.equipmentLine?.includes('Lv') || !state.sortieFocusedUnit.bondLine?.includes('공명') || !state.sortieFocusedUnit.terrainLine?.includes('지형') || + typeof state.sortieFocusedUnit.reserveTrainingAssigned !== 'boolean' || + !state.sortieFocusedUnit.reserveTrainingFocusId || + !state.sortieFocusedUnit.reserveTrainingFocusLabel || typeof state.sortieFocusedUnit.terrainScore !== 'number' || !state.sortieFocusedUnit.terrainGrade || !Array.isArray(state.sortieFocusedUnit.equipment) || @@ -9645,6 +9648,7 @@ function assertSortieTacticalRoster(state, requiredUnitIds) { if ( !state.reserveTrainingFocus || + typeof state.reserveTrainingAssignments !== 'object' || !Array.isArray(state.reserveTrainingFocusOptions) || state.reserveTrainingFocusOptions.length !== 3 || !state.reserveTrainingFocusOptions.some((focus) => focus.id === 'bond-practice' && focus.bondExpGained > 0) diff --git a/src/game/scenes/CampScene.ts b/src/game/scenes/CampScene.ts index ceb7533..1fd20a7 100644 --- a/src/game/scenes/CampScene.ts +++ b/src/game/scenes/CampScene.ts @@ -207,6 +207,9 @@ type SortieFocusedUnitSummary = SortieUnitTacticalSummary & { className: string; classRole: string; formationRole: SortieFormationRole; + reserveTrainingAssigned: boolean; + reserveTrainingFocusId: CampaignReserveTrainingFocusId; + reserveTrainingFocusLabel: string; terrainScore: number; terrainGrade: string; equipment: { @@ -13179,6 +13182,8 @@ export class CampScene extends Phaser.Scene { const recommendation = this.sortieRecommendation(unit.id); const scenario = this.nextSortieScenario(); const terrainScore = this.sortieTerrainScore(unit, scenario); + const assignedReserveTrainingFocus = this.campaign?.reserveTrainingAssignments[unit.id]; + const reserveTrainingFocus = this.reserveTrainingFocusDefinitionForUnit(unit.id); return { id: unit.id, name: unit.name, @@ -13189,6 +13194,9 @@ export class CampScene extends Phaser.Scene { className: unit.className, classRole: getUnitClass(unit.classKey).role, formationRole: this.sortieFormationRole(unit), + reserveTrainingAssigned: Boolean(assignedReserveTrainingFocus), + reserveTrainingFocusId: reserveTrainingFocus.id, + reserveTrainingFocusLabel: reserveTrainingFocus.label, terrainScore, terrainGrade: this.sortieTerrainGrade(terrainScore), statLine: summary.statLine, @@ -15691,6 +15699,7 @@ export class CampScene extends Phaser.Scene { selectedVisitId: this.selectedVisitId, selectedSortieUnitIds: [...this.selectedSortieUnitIds], sortieFormationAssignments: { ...this.sortieFormationAssignments }, + reserveTrainingAssignments: { ...(this.campaign?.reserveTrainingAssignments ?? {}) }, sortieItemAssignments: this.cloneSortieItemAssignments(this.sortieItemAssignments), sortieDeploymentPreview: this.sortieDeploymentPreviewDebug(), sortieFocusedUnitId: this.sortieFocusedUnitId, @@ -15747,6 +15756,7 @@ export class CampScene extends Phaser.Scene { inventory: this.campaign.inventory, selectedSortieUnitIds: this.campaign.selectedSortieUnitIds, sortieFormationAssignments: this.campaign.sortieFormationAssignments, + reserveTrainingAssignments: this.campaign.reserveTrainingAssignments, reserveTrainingFocus: this.campaign.reserveTrainingFocus, roster: this.campaign.roster.map((unit) => ({ id: unit.id,