Reject duplicate recruit rewards
This commit is contained in:
@@ -42,6 +42,7 @@ try {
|
||||
});
|
||||
|
||||
validateReachability(errors, recruitTemplates, recruitRewardRefs);
|
||||
validateUniqueRecruitRewards(errors, recruitRewardRefs);
|
||||
validateSortieRecruitAvailability(errors, scenarioEntries);
|
||||
|
||||
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) {
|
||||
const firstBattleAllies = scenarioEntries[0]?.[1]?.units
|
||||
?.filter((unit) => unit.faction === 'ally')
|
||||
|
||||
Reference in New Issue
Block a user