Prefer recommendations for default sortie selection

This commit is contained in:
2026-07-05 16:50:16 +09:00
parent e026a59554
commit 2012a19f29

View File

@@ -15119,6 +15119,7 @@ export class CampScene extends Phaser.Scene {
private normalizedSortieUnitIds(candidateIds?: string[]) {
const allies = this.sortieAllies();
const alliesById = new Map(allies.map((unit) => [unit.id, unit]));
const allyIds = new Set(allies.map((unit) => unit.id));
const maxUnits = this.sortieMaxUnits();
const useDefaultSelection = !candidateIds || candidateIds.length === 0;
@@ -15131,11 +15132,24 @@ export class CampScene extends Phaser.Scene {
});
if (useDefaultSelection) {
allies.slice(0, maxUnits).forEach((unit) => candidateSet.add(unit.id));
const rule = this.nextSortieRule();
const addDefaultCandidate = (unitId: string) => {
if (allyIds.has(unitId)) {
candidateSet.add(unitId);
}
};
rule.recommended.forEach((entry) => addDefaultCandidate(entry.unitId));
(rule.recommendedClasses ?? []).forEach((entry) => {
allies.filter((unit) => entry.classKeys.includes(unit.classKey)).forEach((unit) => addDefaultCandidate(unit.id));
});
allies.forEach((unit) => addDefaultCandidate(unit.id));
}
const required = allies.filter((unit) => requiredSortieUnitIds.has(unit.id)).map((unit) => unit.id);
const optional = allies
const optionalSource = useDefaultSelection
? [...candidateSet].map((unitId) => alliesById.get(unitId)).filter((unit): unit is UnitData => Boolean(unit))
: allies;
const optional = optionalSource
.filter((unit) => !requiredSortieUnitIds.has(unit.id) && candidateSet.has(unit.id))
.slice(0, Math.max(0, maxUnits - required.length))
.map((unit) => unit.id);