From 08c7a2cac01fa94700ea95388e9d90b18286d848 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 22 Jun 2024 16:40:17 +0200 Subject: [PATCH] handle fusion bundles picked up during mission --- src/services/missionInventoryUpdateService.ts | 27 ++++++++++++++----- src/types/requestTypes.ts | 5 +++- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index 45fd7ccf..ba8ec93c 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -54,7 +54,19 @@ const combineRewardAndLootInventory = ( const missionCredits = lootInventory.RegularCredits || 0; const creditsBonus = rewardInventory.RegularCredits || 0; const totalCredits = missionCredits + creditsBonus; - const FusionPoints = (lootInventory.FusionPoints || 0) + (rewardInventory.FusionPoints || 0); + let FusionPoints = rewardInventory.FusionPoints || 0; + + // Discharge Endo picked up during the mission + if (lootInventory.FusionBundles) { + for (const fusionBundle of lootInventory.FusionBundles) { + if (fusionBundle.ItemType in fusionBundles) { + FusionPoints += fusionBundles[fusionBundle.ItemType] * fusionBundle.ItemCount; + } else { + logger.error(`unknown fusion bundle: ${fusionBundle.ItemType}`); + } + } + lootInventory.FusionBundles = undefined; + } lootInventory.RegularCredits = totalCredits; lootInventory.FusionPoints = FusionPoints; @@ -121,8 +133,9 @@ const creditBundles: Record = { }; const fusionBundles: Record = { - "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle": 50, - "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/RareFusionBundle": 80 + "/Lotus/Upgrades/Mods/FusionBundles/CommonFusionBundle": 15, + "/Lotus/Upgrades/Mods/FusionBundles/UncommonFusionBundle": 50, + "/Lotus/Upgrades/Mods/FusionBundles/RareFusionBundle": 80 }; const formatRewardsToInventoryType = ( @@ -134,12 +147,12 @@ const formatRewardsToInventoryType = ( if (reward.type in creditBundles) { InventoryChanges.RegularCredits ??= 0; InventoryChanges.RegularCredits += creditBundles[reward.type] * reward.itemCount; - } else if (reward.type in fusionBundles) { - InventoryChanges.FusionPoints ??= 0; - InventoryChanges.FusionPoints += fusionBundles[reward.type] * reward.itemCount; } else { const type = reward.type.replace("/Lotus/StoreItems/", "/Lotus/"); - if (type in ExportUpgrades) { + if (type in fusionBundles) { + InventoryChanges.FusionPoints ??= 0; + InventoryChanges.FusionPoints += fusionBundles[type] * reward.itemCount; + } else if (type in ExportUpgrades) { addRewardResponse(InventoryChanges, MissionRewards, type, reward.itemCount, "RawUpgrades"); } else if (type in ExportGear) { addRewardResponse(InventoryChanges, MissionRewards, type, reward.itemCount, "Consumables"); diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 7beb7a4e..c63052c0 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -7,6 +7,7 @@ import { ICrewShipSalvagedWeaponSkin, IEvolutionProgress, IMiscItem, + ITypeCount, IMission, IRawUpgrade, ISeasonChallenge @@ -45,6 +46,7 @@ export interface IMissionInventoryUpdateRequest { Pistols?: IEquipmentClient[]; Suits?: IEquipmentClient[]; Melee?: IEquipmentClient[]; + FusionBundles?: ITypeCount[]; RawUpgrades?: IRawUpgrade[]; MiscItems?: IMiscItem[]; Consumables?: IConsumable[]; @@ -52,9 +54,10 @@ export interface IMissionInventoryUpdateRequest { RegularCredits?: number; ChallengeProgress?: IChallengeProgress[]; RewardInfo?: IMissionInventoryUpdateRequestRewardInfo; - FusionPoints?: number; Missions?: IMission; EvolutionProgress?: IEvolutionProgress[]; + + FusionPoints?: number; // Not a part of the request, but we put it in this struct as an intermediate storage. } export interface IMissionInventoryUpdateRequestRewardInfo {