diff --git a/src/controllers/api/focusController.ts b/src/controllers/api/focusController.ts index d9922d99..0d48f3c0 100644 --- a/src/controllers/api/focusController.ts +++ b/src/controllers/api/focusController.ts @@ -1,6 +1,6 @@ import { RequestHandler } from "express"; import { getAccountIdForRequest } from "@/src/services/loginService"; -import { getInventory, addMiscItems, addWeapon } from "@/src/services/inventoryService"; +import { getInventory, addMiscItems, addEquipment } from "@/src/services/inventoryService"; import { IMiscItem, TFocusPolarity } from "@/src/types/inventoryTypes/inventoryTypes"; import { logger } from "@/src/utils/logger"; import { ExportFocusUpgrades } from "warframe-public-export-plus"; @@ -81,7 +81,7 @@ export const focusController: RequestHandler = async (req, res) => { "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingChassis", "/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingBarrel" ]; - const result = await addWeapon("OperatorAmps", request.StartingWeaponType, accountId, parts); + const result = await addEquipment("OperatorAmps", request.StartingWeaponType, accountId, parts); res.json(result); break; } diff --git a/src/controllers/api/modularWeaponCraftingController.ts b/src/controllers/api/modularWeaponCraftingController.ts index 00a776d8..f9d6198e 100644 --- a/src/controllers/api/modularWeaponCraftingController.ts +++ b/src/controllers/api/modularWeaponCraftingController.ts @@ -1,17 +1,18 @@ import { RequestHandler } from "express"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; -import { WeaponTypeInternal } from "@/src/services/itemDataService"; -import { getInventory, updateCurrency, addWeapon, addMiscItems } from "@/src/services/inventoryService"; +import { TEquipmentKey } from "@/src/types/inventoryTypes/inventoryTypes"; +import { getInventory, updateCurrency, addEquipment, addMiscItems } from "@/src/services/inventoryService"; -const modularWeaponTypes: Record = { +const modularWeaponTypes: Record = { "/Lotus/Weapons/SolarisUnited/Primary/LotusModularPrimaryBeam": "LongGuns", "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondary": "Pistols", "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryBeam": "Pistols", "/Lotus/Weapons/SolarisUnited/Secondary/LotusModularSecondaryShotgun": "Pistols", "/Lotus/Weapons/Ostron/Melee/LotusModularWeapon": "Melee", "/Lotus/Weapons/Sentients/OperatorAmplifiers/OperatorAmpWeapon": "OperatorAmps", - "/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit": "Hoverboards" + "/Lotus/Types/Vehicles/Hoverboard/HoverboardSuit": "Hoverboards", + "/Lotus/Types/Friendly/Pets/MoaPets/MoaPetPowerSuit": "MoaPets" }; interface IModularCraftRequest { @@ -29,10 +30,14 @@ export const modularWeaponCraftingController: RequestHandler = async (req, res) const category = modularWeaponTypes[data.WeaponType]; // Give weapon - const weapon = await addWeapon(category, data.WeaponType, accountId, data.Parts); + const weapon = await addEquipment(category, data.WeaponType, accountId, data.Parts); // Remove credits - const currencyChanges = await updateCurrency(category == "Hoverboards" ? 5000 : 4000, false, accountId); + const currencyChanges = await updateCurrency( + category == "Hoverboards" || category == "MoaPets" ? 5000 : 4000, + false, + accountId + ); // Remove parts const miscItemChanges = []; diff --git a/src/controllers/custom/addItemController.ts b/src/controllers/custom/addItemController.ts index 4f01df94..7488710f 100644 --- a/src/controllers/custom/addItemController.ts +++ b/src/controllers/custom/addItemController.ts @@ -1,7 +1,7 @@ import { getAccountIdForRequest } from "@/src/services/loginService"; import { ItemType, toAddItemRequest } from "@/src/helpers/customHelpers/addItemHelpers"; import { getWeaponType } from "@/src/services/itemDataService"; -import { addPowerSuit, addWeapon } from "@/src/services/inventoryService"; +import { addPowerSuit, addEquipment } from "@/src/services/inventoryService"; import { RequestHandler } from "express"; // eslint-disable-next-line @typescript-eslint/no-misused-promises @@ -16,7 +16,7 @@ const addItemController: RequestHandler = async (req, res) => { return; case ItemType.Weapon: const weaponType = getWeaponType(request.InternalName); - const weapon = await addWeapon(weaponType, request.InternalName, accountId); + const weapon = await addEquipment(weaponType, request.InternalName, accountId); res.json(weapon); break; default: diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index e3573eb8..b1abcb99 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -983,6 +983,7 @@ type InventoryDocumentProps = { SpaceMelee: Types.DocumentArray; SentinelWeapons: Types.DocumentArray; Hoverboards: Types.DocumentArray; + MoaPets: Types.DocumentArray; WeaponSkins: Types.DocumentArray; }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 1b85d17e..93c0aa68 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -26,7 +26,7 @@ import { IUpdateChallengeProgressRequest } from "../types/requestTypes"; import { logger } from "@/src/utils/logger"; -import { WeaponTypeInternal, getWeaponType, getExalted } from "@/src/services/itemDataService"; +import { getWeaponType, getExalted } from "@/src/services/itemDataService"; import { ISyndicateSacrifice, ISyndicateSacrificeResponse } from "../types/syndicateTypes"; import { IEquipmentClient } from "../types/inventoryTypes/commonInventoryTypes"; import { ExportCustoms, ExportFlavour, ExportRecipes, ExportResources } from "warframe-public-export-plus"; @@ -172,7 +172,7 @@ export const addItem = async ( break; case "Weapons": const weaponType = getWeaponType(typeName); - const weapon = await addWeapon(weaponType, typeName, accountId); + const weapon = await addEquipment(weaponType, typeName, accountId); await updateSlots(accountId, InventorySlot.WEAPONS, 0, 1); return { InventoryChanges: { @@ -444,23 +444,23 @@ export const syndicateSacrifice = async ( return res; }; -export const addWeapon = async ( - weaponType: WeaponTypeInternal | "Hoverboards", - weaponName: string, +export const addEquipment = async ( + category: TEquipmentKey, + type: string, accountId: string, modularParts: string[] | undefined = undefined ): Promise => { const inventory = await getInventory(accountId); - const weaponIndex = inventory[weaponType].push({ - ItemType: weaponName, + const index = inventory[category].push({ + ItemType: type, Configs: [], XP: 0, ModularParts: modularParts }); const changedInventory = await inventory.save(); - return changedInventory[weaponType][weaponIndex - 1].toJSON(); + return changedInventory[category][index - 1].toJSON(); }; export const addCustomization = async (customizatonName: string, accountId: string): Promise => { diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 7242ad2e..5f654314 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -72,7 +72,9 @@ export const equipmentKeys = [ "SpaceSuits", "SpaceGuns", "SpaceMelee", - "Hoverboards" + "Hoverboards", + "OperatorAmps", + "MoaPets" ] as const; export type TEquipmentKey = (typeof equipmentKeys)[number];