diff --git a/src/controllers/api/crewShipIdentifySalvageController.ts b/src/controllers/api/crewShipIdentifySalvageController.ts index 4ab7c466..cc77589e 100644 --- a/src/controllers/api/crewShipIdentifySalvageController.ts +++ b/src/controllers/api/crewShipIdentifySalvageController.ts @@ -62,14 +62,7 @@ export const crewShipIdentifySalvageController: RequestHandler = async (req, res } satisfies IInnateDamageFingerprint) }; } - addEquipment( - inventory, - "CrewShipSalvagedWeapons", - payload.ItemType, - undefined, - inventoryChanges, - defaultOverwrites - ); + addEquipment(inventory, "CrewShipSalvagedWeapons", payload.ItemType, defaultOverwrites, inventoryChanges); } inventoryChanges.CrewShipRawSalvage = [ diff --git a/src/controllers/api/focusController.ts b/src/controllers/api/focusController.ts index 0d2b3f65..de892829 100644 --- a/src/controllers/api/focusController.ts +++ b/src/controllers/api/focusController.ts @@ -104,13 +104,14 @@ export const focusController: RequestHandler = async (req, res) => { } case FocusOperation.SentTrainingAmplifier: { const request = JSON.parse(String(req.body)) as ISentTrainingAmplifierRequest; - const parts: string[] = [ - "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingGrip", - "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingChassis", - "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingBarrel" - ]; const inventory = await getInventory(accountId); - const inventoryChanges = addEquipment(inventory, "OperatorAmps", request.StartingWeaponType, parts); + const inventoryChanges = addEquipment(inventory, "OperatorAmps", request.StartingWeaponType, { + ModularParts: [ + "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingGrip", + "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingChassis", + "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingBarrel" + ] + }); occupySlot(inventory, InventorySlot.AMPS, false); await inventory.save(); res.json((inventoryChanges.OperatorAmps as IEquipmentClient[])[0]); diff --git a/src/controllers/api/guildTechController.ts b/src/controllers/api/guildTechController.ts index b1612be9..821831d4 100644 --- a/src/controllers/api/guildTechController.ts +++ b/src/controllers/api/guildTechController.ts @@ -441,16 +441,9 @@ const finishComponentRepair = ( const inventoryChanges = { ...(category == "CrewShipWeaponSkins" ? addCrewShipWeaponSkin(inventory, salvageItem.ItemType, salvageItem.UpgradeFingerprint) - : addEquipment( - inventory, - category, - salvageItem.ItemType, - undefined, - {}, - { - UpgradeFingerprint: salvageItem.UpgradeFingerprint - } - )), + : addEquipment(inventory, category, salvageItem.ItemType, { + UpgradeFingerprint: salvageItem.UpgradeFingerprint + })), ...occupySlot(inventory, InventorySlot.RJ_COMPONENT_AND_ARMAMENTS, false) }; diff --git a/src/controllers/api/modularWeaponCraftingController.ts b/src/controllers/api/modularWeaponCraftingController.ts index 91809b49..6034132c 100644 --- a/src/controllers/api/modularWeaponCraftingController.ts +++ b/src/controllers/api/modularWeaponCraftingController.ts @@ -36,7 +36,9 @@ export const modularWeaponCraftingController: RequestHandler = async (req, res) const inventory = await getInventory(accountId); let defaultUpgrades: IDefaultUpgrade[] | undefined; - const defaultOverwrites: Partial = {}; + const defaultOverwrites: Partial = { + ModularParts: data.Parts + }; const inventoryChanges: IInventoryChanges = {}; if (category == "KubrowPets") { const traits = { @@ -151,7 +153,7 @@ export const modularWeaponCraftingController: RequestHandler = async (req, res) } } defaultOverwrites.Configs = applyDefaultUpgrades(inventory, defaultUpgrades); - addEquipment(inventory, category, data.WeaponType, data.Parts, inventoryChanges, defaultOverwrites); + addEquipment(inventory, category, data.WeaponType, defaultOverwrites, inventoryChanges); combineInventoryChanges( inventoryChanges, occupySlot(inventory, productCategoryToInventoryBin(category)!, !!data.isWebUi) diff --git a/src/controllers/api/modularWeaponSaleController.ts b/src/controllers/api/modularWeaponSaleController.ts index a8ddfc20..0c536408 100644 --- a/src/controllers/api/modularWeaponSaleController.ts +++ b/src/controllers/api/modularWeaponSaleController.ts @@ -41,24 +41,18 @@ export const modularWeaponSaleController: RequestHandler = async (req, res) => { const defaultUpgrades = getDefaultUpgrades(weaponInfo.ModularParts); const configs = applyDefaultUpgrades(inventory, defaultUpgrades); const inventoryChanges: IInventoryChanges = { - ...addEquipment( - inventory, - category, - weaponInfo.ItemType, - weaponInfo.ModularParts, - {}, - { - Features: EquipmentFeatures.DOUBLE_CAPACITY | EquipmentFeatures.GILDED, - ItemName: payload.ItemName, - Configs: configs, - Polarity: [ - { - Slot: payload.PolarizeSlot, - Value: payload.PolarizeValue - } - ] - } - ), + ...addEquipment(inventory, category, weaponInfo.ItemType, { + Features: EquipmentFeatures.DOUBLE_CAPACITY | EquipmentFeatures.GILDED, + ItemName: payload.ItemName, + Configs: configs, + ModularParts: weaponInfo.ModularParts, + Polarity: [ + { + Slot: payload.PolarizeSlot, + Value: payload.PolarizeValue + } + ] + }), ...occupySlot(inventory, productCategoryToInventoryBin(category)!, true), ...updateCurrency(inventory, weaponInfo.PremiumPrice, true) }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 31abb4ef..11a41547 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -154,23 +154,22 @@ export const addStartingGear = async ( //TODO: properly merge weapon bin changes it is currently static here const inventoryChanges: IInventoryChanges = {}; - addEquipment(inventory, "LongGuns", LongGuns[0].ItemType, undefined, inventoryChanges); - addEquipment(inventory, "Pistols", Pistols[0].ItemType, undefined, inventoryChanges); - addEquipment(inventory, "Melee", Melee[0].ItemType, undefined, inventoryChanges); - await addPowerSuit(inventory, Suits[0].ItemType, inventoryChanges); + addEquipment(inventory, "LongGuns", LongGuns[0].ItemType, { IsNew: false }, inventoryChanges); + addEquipment(inventory, "Pistols", Pistols[0].ItemType, { IsNew: false }, inventoryChanges); + addEquipment(inventory, "Melee", Melee[0].ItemType, { IsNew: false }, inventoryChanges); + await addPowerSuit(inventory, Suits[0].ItemType, { IsNew: false }, inventoryChanges); addEquipment( inventory, "DataKnives", "/Lotus/Weapons/Tenno/HackingDevices/TnHackingDevice/TnHackingDeviceWeapon", - undefined, - inventoryChanges, - { XP: 450_000 } + { XP: 450_000, IsNew: false }, + inventoryChanges ); addEquipment( inventory, "Scoops", "/Lotus/Weapons/Tenno/Speedball/SpeedballWeaponTest", - undefined, + { IsNew: false }, inventoryChanges ); @@ -522,14 +521,7 @@ export const addItem = async ( ] }); } - const inventoryChanges = addEquipment( - inventory, - weapon.productCategory, - typeName, - [], - {}, - defaultOverwrites - ); + const inventoryChanges = addEquipment(inventory, weapon.productCategory, typeName, defaultOverwrites); if (weapon.additionalItems) { for (const item of weapon.additionalItems) { combineInventoryChanges(inventoryChanges, await addItem(inventory, item, 1)); @@ -630,12 +622,9 @@ export const addItem = async ( switch (typeName.substr(1).split("/")[2]) { default: { return { - ...(await addPowerSuit( - inventory, - typeName, - {}, - premiumPurchase ? EquipmentFeatures.DOUBLE_CAPACITY : undefined - )), + ...(await addPowerSuit(inventory, typeName, { + Features: premiumPurchase ? EquipmentFeatures.DOUBLE_CAPACITY : undefined + })), ...occupySlot(inventory, InventorySlot.SUITS, premiumPurchase) }; } @@ -855,8 +844,8 @@ const addSentinelWeapon = ( export const addPowerSuit = async ( inventory: TInventoryDatabaseDocument, powersuitName: string, - inventoryChanges: IInventoryChanges = {}, - features?: number + defaultOverwrites?: Partial, + inventoryChanges: IInventoryChanges = {} ): Promise => { const powersuit = ExportWarframes[powersuitName] as IPowersuit | undefined; const exalted = powersuit?.exalted ?? []; @@ -870,15 +859,20 @@ export const addPowerSuit = async ( } } } - const suitIndex = - inventory.Suits.push({ + const suit: Omit = Object.assign( + { ItemType: powersuitName, Configs: [], UpgradeVer: 101, XP: 0, - Features: features, IsNew: true - }) - 1; + }, + defaultOverwrites + ); + if (!suit.IsNew) { + suit.IsNew = undefined; + } + const suitIndex = inventory.Suits.push(suit) - 1; inventoryChanges.Suits ??= []; inventoryChanges.Suits.push(inventory.Suits[suitIndex].toJSON()); return inventoryChanges; @@ -1199,20 +1193,21 @@ export const addEquipment = ( inventory: TInventoryDatabaseDocument, category: TEquipmentKey, type: string, - modularParts?: string[], - inventoryChanges: IInventoryChanges = {}, - defaultOverwrites?: Partial + defaultOverwrites?: Partial, + inventoryChanges: IInventoryChanges = {} ): IInventoryChanges => { - const equipment = Object.assign( + const equipment: Omit = Object.assign( { ItemType: type, Configs: [], XP: 0, - ModularParts: modularParts, IsNew: category != "CrewShipWeapons" && category != "CrewShipSalvagedWeapons" ? true : undefined }, defaultOverwrites ); + if (!equipment.IsNew) { + equipment.IsNew = undefined; + } const index = inventory[category].push(equipment) - 1; inventoryChanges[category] ??= [];