From c678cac49d779f51259416ed5c2a1f553432c7f8 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Tue, 4 Feb 2025 20:36:17 +0100 Subject: [PATCH 1/3] feat: obtaining crewship related items --- src/models/inventoryModels/inventoryModel.ts | 2 +- src/services/inventoryService.ts | 33 +++++++++++++++++++ src/services/missionInventoryUpdateService.ts | 13 ++++++-- src/types/requestTypes.ts | 12 ++++--- 4 files changed, 52 insertions(+), 8 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 52db89c0..958ac984 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -997,7 +997,7 @@ const inventorySchema = new Schema( ShipDecorations: [typeCountSchema], //Railjack/Components(https://warframe.fandom.com/wiki/Railjack/Components) - CrewShipRawSalvage: [Schema.Types.Mixed], + CrewShipRawSalvage: [typeCountSchema], //Default RailJack CrewShipAmmo: [typeCountSchema], diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 4e375615..96f80e09 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -915,6 +915,39 @@ export const addConsumables = (inventory: TInventoryDatabaseDocument, itemsArray }); }; +export const addCrewShipRawSalvage = ( + inventory: TInventoryDatabaseDocument, + itemsArray: ITypeCount[] | undefined +): void => { + const { CrewShipRawSalvage } = inventory; + + itemsArray?.forEach(({ ItemCount, ItemType }) => { + const itemIndex = CrewShipRawSalvage.findIndex(i => i.ItemType === ItemType); + + if (itemIndex !== -1) { + CrewShipRawSalvage[itemIndex].ItemCount += ItemCount; + inventory.markModified(`CrewShipRawSalvage.${itemIndex}.ItemCount`); + } else { + CrewShipRawSalvage.push({ ItemCount, ItemType }); + } + }); +}; + +export const addCrewShipAmmo = (inventory: TInventoryDatabaseDocument, itemsArray: ITypeCount[] | undefined): void => { + const { CrewShipAmmo } = inventory; + + itemsArray?.forEach(({ ItemCount, ItemType }) => { + const itemIndex = CrewShipAmmo.findIndex(i => i.ItemType === ItemType); + + if (itemIndex !== -1) { + CrewShipAmmo[itemIndex].ItemCount += ItemCount; + inventory.markModified(`CrewShipAmmo.${itemIndex}.ItemCount`); + } else { + CrewShipAmmo.push({ ItemCount, ItemType }); + } + }); +}; + export const addRecipes = (inventory: TInventoryDatabaseDocument, itemsArray: ITypeCount[] | undefined): void => { const { Recipes } = inventory; diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index 3e9a944e..50a197aa 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -6,6 +6,8 @@ import { equipmentKeys, IInventoryDatabase, TEquipmentKey } from "@/src/types/in import { addChallenges, addConsumables, + addCrewShipAmmo, + addCrewShipRawSalvage, addFocusXpIncreases, addFusionTreasures, addGearExpByCategory, @@ -136,6 +138,12 @@ export const addMissionInventoryUpdates = ( case "FusionTreasures": addFusionTreasures(inventory, value); break; + case "CrewShipRawSalvage": + addCrewShipRawSalvage(inventory, value); + break; + case "CrewShipAmmo": + addCrewShipAmmo(inventory, value); + break; case "FusionBundles": { let fusionPoints = 0; for (const fusionBundle of value) { @@ -195,7 +203,6 @@ export const addMissionRewards = async ( ) => { if (!rewardInfo) { logger.warn("no reward info provided"); - return; } //TODO: check double reward merging @@ -287,9 +294,9 @@ function getLevelCreditRewards(nodeName: string): number { //TODO: get dark sektor fixed credit rewards and railjack bonus } -function getRandomMissionDrops(RewardInfo: IRewardInfo): IRngResult[] { +function getRandomMissionDrops(RewardInfo: IRewardInfo | undefined): IRngResult[] { const drops: IRngResult[] = []; - if (RewardInfo.node in ExportRegions) { + if (RewardInfo && RewardInfo.node in ExportRegions) { const region = ExportRegions[RewardInfo.node]; const rewardManifests = region.rewardManifests ?? []; diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 73fb8d73..2ba3cc62 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -35,18 +35,22 @@ export interface IUpdateChallengeProgressRequest { } export type IMissionInventoryUpdateRequest = { + MiscItems?: ITypeCount[]; + Recipes?: ITypeCount[]; + FusionBundles?: ITypeCount[]; + Consumables?: ITypeCount[]; + FusionBundels?: ITypeCount[]; + CrewShipRawSalvage?: ITypeCount[]; + CrewShipAmmo?: ITypeCount[]; + AffiliationChanges?: IAffiliationChange[]; crossPlaySetting?: string; rewardsMultiplier?: number; GoalTag: string; LevelKeyName: string; ActiveBoosters?: IBooster[]; - FusionBundles?: ITypeCount[]; RawUpgrades?: IRawUpgrade[]; - MiscItems?: ITypeCount[]; - Consumables?: ITypeCount[]; FusionTreasures?: IFusionTreasure[]; - Recipes?: ITypeCount[]; QuestKeys?: Omit[]; RegularCredits?: number; MissionFailed: boolean; -- 2.47.2 From 604c87637eb5f6f7804cee02477234365e8a1749 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Wed, 5 Feb 2025 17:17:32 +0100 Subject: [PATCH 2/3] add BonusMiscItems --- src/services/missionInventoryUpdateService.ts | 1 + src/types/requestTypes.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index 50a197aa..f69416db 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -124,6 +124,7 @@ export const addMissionInventoryUpdates = ( addMods(inventory, value); break; case "MiscItems": + case "BonusMiscItems": addMiscItems(inventory, value); break; case "Consumables": diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 2ba3cc62..19653e02 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -42,6 +42,7 @@ export type IMissionInventoryUpdateRequest = { FusionBundels?: ITypeCount[]; CrewShipRawSalvage?: ITypeCount[]; CrewShipAmmo?: ITypeCount[]; + BonusMiscItems?: ITypeCount[]; AffiliationChanges?: IAffiliationChange[]; crossPlaySetting?: string; -- 2.47.2 From 5b525916d048395951dc0731976179a44bff9fa0 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Wed, 5 Feb 2025 18:52:31 +0100 Subject: [PATCH 3/3] remove markModified --- src/services/inventoryService.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 96f80e09..8a7d4bed 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -926,7 +926,6 @@ export const addCrewShipRawSalvage = ( if (itemIndex !== -1) { CrewShipRawSalvage[itemIndex].ItemCount += ItemCount; - inventory.markModified(`CrewShipRawSalvage.${itemIndex}.ItemCount`); } else { CrewShipRawSalvage.push({ ItemCount, ItemType }); } @@ -941,7 +940,6 @@ export const addCrewShipAmmo = (inventory: TInventoryDatabaseDocument, itemsArra if (itemIndex !== -1) { CrewShipAmmo[itemIndex].ItemCount += ItemCount; - inventory.markModified(`CrewShipAmmo.${itemIndex}.ItemCount`); } else { CrewShipAmmo.push({ ItemCount, ItemType }); } -- 2.47.2