feat: obtaining Focus XP via lens #551

Closed
VampireKitten wants to merge 4 commits from focus-xp-increases into main
2 changed files with 28 additions and 1 deletions

View File

@ -721,6 +721,30 @@ const addMissionComplete = (inventory: IInventoryDatabaseDocument, { Tag, Comple
} }
}; };
const addFocusXpIncreases = (inventory: IInventoryDatabaseDocument, focusXpPlus: number[] | undefined) => {
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 missionInventoryUpdate = async (data: IMissionInventoryUpdateRequest, accountId: string) => { export const missionInventoryUpdate = async (data: IMissionInventoryUpdateRequest, accountId: string) => {
const { const {
RawUpgrades, RawUpgrades,
@ -731,7 +755,8 @@ export const missionInventoryUpdate = async (data: IMissionInventoryUpdateReques
Consumables, Consumables,
Recipes, Recipes,
Missions, Missions,
FusionTreasures FusionTreasures,
FocusXpIncreases
} = data; } = data;
const inventory = await getInventory(accountId); const inventory = await getInventory(accountId);
@ -793,6 +818,7 @@ export const missionInventoryUpdate = async (data: IMissionInventoryUpdateReques
if (Missions) { if (Missions) {
addMissionComplete(inventory, Missions); addMissionComplete(inventory, Missions);
} }
addFocusXpIncreases(inventory, FocusXpIncreases);
const changedInventory = await inventory.save(); const changedInventory = await inventory.save();
return changedInventory.toJSON(); return changedInventory.toJSON();

View File

@ -70,6 +70,7 @@ export interface IMissionInventoryUpdateRequest {
Missions?: IMission; Missions?: IMission;
EvolutionProgress?: IEvolutionProgress[]; EvolutionProgress?: IEvolutionProgress[];
LastRegionPlayed?: TSolarMapRegion; LastRegionPlayed?: TSolarMapRegion;
FocusXpIncreases?: number[];
FusionPoints?: number; // Not a part of the request, but we put it in this struct as an intermediate storage. FusionPoints?: number; // Not a part of the request, but we put it in this struct as an intermediate storage.
} }