diff --git a/src/controllers/api/dronesController.ts b/src/controllers/api/dronesController.ts index 9337dc62..972f8f6b 100644 --- a/src/controllers/api/dronesController.ts +++ b/src/controllers/api/dronesController.ts @@ -1,6 +1,7 @@ import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers"; import { config } from "@/src/services/configService"; import { addMiscItems, getInventory } from "@/src/services/inventoryService"; +import { fromStoreItem } from "@/src/services/itemDataService"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { getRandomInt, getRandomWeightedRewardUc } from "@/src/services/rngService"; import { IMongoDate, IOid } from "@/src/types/commonTypes"; @@ -58,7 +59,7 @@ export const dronesController: RequestHandler = async (req, res) => { : 0; const resource = getRandomWeightedRewardUc(system.resources, droneMeta.probabilities)!; //logger.debug(`drone rolled`, resource); - drone.ResourceType = "/Lotus/" + resource.StoreItem.substring(18); + drone.ResourceType = fromStoreItem(resource.StoreItem); const resourceMeta = ExportResources[drone.ResourceType]; if (resourceMeta.pickupQuantity) { const pickupsToCollect = droneMeta.binCapacity * droneMeta.capacityMultipliers[resource.Rarity]; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index ccfaf0d0..0c5a4cc1 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -35,7 +35,7 @@ import { IUpdateChallengeProgressRequest } from "../types/requestTypes"; import { logger } from "@/src/utils/logger"; -import { convertInboxMessage, getExalted, getKeyChainItems } from "@/src/services/itemDataService"; +import { convertInboxMessage, fromStoreItem, getExalted, getKeyChainItems } from "@/src/services/itemDataService"; import { EquipmentFeatures, IEquipmentClient, @@ -1260,7 +1260,7 @@ export const addKeyChainItems = async ( `adding key chain items ${keyChainItems.join()} for ${keyChainData.KeyChain} at stage ${keyChainData.ChainStage}` ); - const nonStoreItems = keyChainItems.map(item => item.replace("StoreItems/", "")); + const nonStoreItems = keyChainItems.map(item => fromStoreItem(item)); //TODO: inventoryChanges is not typed correctly const inventoryChanges = {}; diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 8fd3969d..724e0243 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -244,3 +244,11 @@ export const convertInboxMessage = (message: IInboxMessage): IMessage => { r: false } satisfies IMessage; }; + +export const toStoreItem = (type: string): string => { + return "/Lotus/StoreItems/" + type.substring("/Lotus/".length); +}; + +export const fromStoreItem = (type: string): string => { + return "/Lotus/" + type.substring("/Lotus/StoreItems/".length); +}; diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 3a84ec4a..b153c86c 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -27,6 +27,7 @@ import { } from "warframe-public-export-plus"; import { config } from "./configService"; import { TInventoryDatabaseDocument } from "../models/inventoryModels/inventoryModel"; +import { fromStoreItem, toStoreItem } from "./itemDataService"; export const getStoreItemCategory = (storeItem: string): string => { const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); @@ -240,7 +241,7 @@ export const handleStoreItemAcquisition = async ( await handleBundleAcqusition(storeItemName, inventory, quantity, purchaseResponse.InventoryChanges); } else { const storeCategory = getStoreItemCategory(storeItemName); - const internalName = storeItemName.replace("/StoreItems", ""); + const internalName = fromStoreItem(storeItemName); logger.debug(`store category ${storeCategory}`); if (!ignorePurchaseQuantity) { if (internalName in ExportGear) { @@ -328,8 +329,7 @@ const handleBoosterPackPurchase = async ( const result = getRandomWeightedRewardUc(pack.components, weights); if (result) { logger.debug(`booster pack rolled`, result); - purchaseResponse.BoosterPackItems += - result.Item.split("/Lotus/").join("/Lotus/StoreItems/") + ',{"lvl":0};'; + purchaseResponse.BoosterPackItems += toStoreItem(result.Item) + ',{"lvl":0};'; combineInventoryChanges( purchaseResponse.InventoryChanges, (await addItem(inventory, result.Item, 1)).InventoryChanges diff --git a/src/services/questService.ts b/src/services/questService.ts index 3e036a76..f52536be 100644 --- a/src/services/questService.ts +++ b/src/services/questService.ts @@ -3,7 +3,7 @@ import { isEmptyObject } from "@/src/helpers/general"; import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel"; import { createMessage } from "@/src/services/inboxService"; import { addItem, addKeyChainItems } from "@/src/services/inventoryService"; -import { getKeyChainMessage, getLevelKeyRewards } from "@/src/services/itemDataService"; +import { fromStoreItem, getKeyChainMessage, getLevelKeyRewards } from "@/src/services/itemDataService"; import { IInventoryDatabase, IQuestKeyClient, @@ -157,7 +157,7 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest addFixedLevelRewards(fixedLevelRewards.levelKeyRewards, inventory, missionRewards); for (const reward of missionRewards) { - await addItem(inventory, reward.StoreItem.replace("StoreItems/", ""), reward.ItemCount); + await addItem(inventory, fromStoreItem(reward.StoreItem), reward.ItemCount); } } else if (fixedLevelRewards.levelKeyRewards2) { for (const reward of fixedLevelRewards.levelKeyRewards2) { @@ -166,9 +166,9 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest continue; } if (reward.rewardType == "RT_RESOURCE") { - await addItem(inventory, reward.itemType.replace("StoreItems/", ""), reward.amount); + await addItem(inventory, fromStoreItem(reward.itemType), reward.amount); } else { - await addItem(inventory, reward.itemType.replace("StoreItems/", "")); + await addItem(inventory, fromStoreItem(reward.itemType)); } } }