diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 48854778..ddd5acc4 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -909,6 +909,30 @@ export const addFusionTreasures = ( }); }; +export const addFocusXpIncreases = (inventory: TInventoryDatabaseDocument, focusXpPlus: number[] | undefined): void => { + enum FocusType { + AP_UNIVERSAL, + AP_ATTACK, + AP_DEFENSE, + AP_TACTIC, + AP_POWER, + AP_PRECEPT, + AP_FUSION, + AP_WARD, + AP_UMBRA, + AP_ANY + } + + if (focusXpPlus) { + inventory.FocusXP ??= { AP_ATTACK: 0, AP_DEFENSE: 0, AP_TACTIC: 0, AP_POWER: 0, AP_WARD: 0 }; + inventory.FocusXP.AP_ATTACK += focusXpPlus[FocusType.AP_ATTACK]; + inventory.FocusXP.AP_DEFENSE += focusXpPlus[FocusType.AP_DEFENSE]; + inventory.FocusXP.AP_TACTIC += focusXpPlus[FocusType.AP_TACTIC]; + inventory.FocusXP.AP_POWER += focusXpPlus[FocusType.AP_POWER]; + inventory.FocusXP.AP_WARD += focusXpPlus[FocusType.AP_WARD]; + } +}; + export const updateChallengeProgress = async ( challenges: IUpdateChallengeProgressRequest, accountId: string diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index ed2700fd..8f34c83c 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -6,6 +6,7 @@ import { equipmentKeys, IInventoryDatabase, TEquipmentKey } from "@/src/types/in import { addChallenges, addConsumables, + addFocusXpIncreases, addFusionTreasures, addGearExpByCategory, addItem, @@ -145,6 +146,10 @@ export const addMissionInventoryUpdates = ( inventoryChanges.FusionPoints = fusionPoints; break; } + case "FocusXpIncreases": { + addFocusXpIncreases(inventory, value); + break; + } default: // Equipment XP updates if (equipmentKeys.includes(key as TEquipmentKey)) { diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 7958a91c..b2b0a3c1 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -72,6 +72,7 @@ export type IMissionInventoryUpdateRequest = { FpsMax: number; FpsSamples: number; EvolutionProgress?: IEvolutionProgress[]; + FocusXpIncreases?: number[]; } & { [K in TEquipmentKey]?: IEquipmentClient[]; };