Reject duplicate recruit rewards
This commit is contained in:
@@ -42,6 +42,7 @@ try {
|
|||||||
});
|
});
|
||||||
|
|
||||||
validateReachability(errors, recruitTemplates, recruitRewardRefs);
|
validateReachability(errors, recruitTemplates, recruitRewardRefs);
|
||||||
|
validateUniqueRecruitRewards(errors, recruitRewardRefs);
|
||||||
validateSortieRecruitAvailability(errors, scenarioEntries);
|
validateSortieRecruitAvailability(errors, scenarioEntries);
|
||||||
|
|
||||||
if (errors.length) {
|
if (errors.length) {
|
||||||
@@ -168,6 +169,17 @@ function validateReachability(errors, recruitTemplates, recruitRewardRefs) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function validateUniqueRecruitRewards(errors, recruitRewardRefs) {
|
||||||
|
const firstBattleByRecruitId = new Map();
|
||||||
|
recruitRewardRefs.forEach(({ battleId, unitId }) => {
|
||||||
|
if (firstBattleByRecruitId.has(unitId)) {
|
||||||
|
errors.push(`${battleId}: recruit "${unitId}" was already awarded by ${firstBattleByRecruitId.get(unitId)}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
firstBattleByRecruitId.set(unitId, battleId);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function validateSortieRecruitAvailability(errors, scenarioEntries) {
|
function validateSortieRecruitAvailability(errors, scenarioEntries) {
|
||||||
const firstBattleAllies = scenarioEntries[0]?.[1]?.units
|
const firstBattleAllies = scenarioEntries[0]?.[1]?.units
|
||||||
?.filter((unit) => unit.faction === 'ally')
|
?.filter((unit) => unit.faction === 'ally')
|
||||||
|
|||||||
Reference in New Issue
Block a user