diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index c9986c38..ac65d1ac 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -1,4 +1,5 @@ import { + ExportEnemies, ExportFusionBundles, ExportRegions, ExportRewards, @@ -18,6 +19,7 @@ import { addFocusXpIncreases, addFusionTreasures, addGearExpByCategory, + addItem, addMiscItems, addMissionComplete, addMods, @@ -28,7 +30,7 @@ import { import { updateQuestKey } from "@/src/services/questService"; import { HydratedDocument } from "mongoose"; import { IInventoryChanges } from "@/src/types/purchaseTypes"; -import { getLevelKeyRewards, getNode } from "@/src/services/itemDataService"; +import { getLevelKeyRewards, getNode, toStoreItem } from "@/src/services/itemDataService"; import { InventoryDocumentProps, TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel"; import { getEntriesUnsafe } from "@/src/utils/ts-utils"; import { IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes"; @@ -319,7 +321,8 @@ export const addMissionRewards = async ( LevelKeyName: levelKeyName, Missions: missions, RegularCredits: creditDrops, - VoidTearParticipantsCurrWave: voidTearWave + VoidTearParticipantsCurrWave: voidTearWave, + StrippedItems: strippedItems }: IMissionInventoryUpdateRequest ) => { if (!rewardInfo) { @@ -406,6 +409,27 @@ export const addMissionRewards = async ( MissionRewards.push({ StoreItem: reward.type, ItemCount: reward.itemCount }); } + if (strippedItems) { + for (const si of strippedItems) { + const droptable = ExportEnemies.droptables[si.DropTable]; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!droptable) { + logger.error(`unknown droptable ${si.DropTable}`); + } else { + for (const pool of droptable) { + const reward = getRandomReward(pool.items)!; + logger.debug(`stripped droptable rolled`, reward); + await addItem(inventory, reward.type); + MissionRewards.push({ + StoreItem: toStoreItem(reward.type), + ItemCount: 1, + FromEnemyCache: true // to show "identified" + }); + } + } + } + } + return { inventoryChanges, MissionRewards, credits }; }; diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 441e8d63..c3777112 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -103,6 +103,10 @@ export type IMissionInventoryUpdateRequest = { }[]; CollectibleScans?: ICollectibleEntry[]; Upgrades?: IUpgradeClient[]; // riven challenge progress + StrippedItems?: { + DropTable: string; + DROP_MOD: number[]; + }[]; } & { [K in TEquipmentKey]?: IEquipmentClient[]; };