Extend early recruit rewards
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { equipmentExpToNext, equipmentSlots } from '../data/battleItems';
|
||||
import type { BattleBond, UnitData } from '../data/scenario';
|
||||
import { campaignRecruitUnits, type BattleBond, type UnitData } from '../data/scenario';
|
||||
import { normalizeSortieFormationAssignments, type SortieFormationAssignments } from '../data/sortieDeployment';
|
||||
|
||||
export type BattleObjectiveSnapshot = {
|
||||
@@ -397,6 +397,8 @@ export type CampaignSaveSlotSummary = {
|
||||
|
||||
let campaignState: CampaignState | undefined;
|
||||
|
||||
const campaignRecruitUnitById = new Map(campaignRecruitUnits.map((unit) => [unit.id, unit]));
|
||||
|
||||
export function createInitialCampaignState(): CampaignState {
|
||||
return {
|
||||
version: 1,
|
||||
@@ -522,7 +524,10 @@ export function setFirstBattleReport(report: FirstBattleReport) {
|
||||
state.gold = Math.max(0, state.gold - (previousSettlement?.rewardGold ?? 0) + reportClone.rewardGold);
|
||||
const alliedReportUnits = reportClone.units.filter((unit) => unit.faction === 'ally');
|
||||
const recruitUnitIds = new Set(reportClone.campaignRewards?.recruits.map((recruit) => recruit.unitId) ?? []);
|
||||
const recruitedUnits = reportClone.units.filter((unit) => unit.faction === 'ally' && recruitUnitIds.has(unit.id));
|
||||
const reportUnitById = new Map(reportClone.units.filter((unit) => unit.faction === 'ally').map((unit) => [unit.id, unit]));
|
||||
const recruitedUnits = [...recruitUnitIds]
|
||||
.map((unitId) => reportUnitById.get(unitId) ?? campaignRecruitUnitById.get(unitId))
|
||||
.filter((unit): unit is UnitData => Boolean(unit));
|
||||
state.roster = mergeRosterProgress(state.roster, [...alliedReportUnits, ...recruitedUnits]);
|
||||
state.bonds = reportClone.bonds.map(cloneBondSnapshot);
|
||||
const reserveTraining = previousSettlement || reportClone.outcome !== 'victory'
|
||||
|
||||
Reference in New Issue
Block a user