From 6a427018e39dbc54e8382d0e1b859b208b5b8821 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sat, 25 Jan 2025 06:25:13 +0100 Subject: [PATCH] fix: can't acquire Sun & Moon (#865) --- src/services/inventoryService.ts | 28 ++++++++++++++++------------ src/services/itemDataService.ts | 15 --------------- 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 3426ee29..48854778 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -29,7 +29,7 @@ import { IUpdateChallengeProgressRequest } from "../types/requestTypes"; import { logger } from "@/src/utils/logger"; -import { getWeaponType, getExalted, getKeyChainItems } from "@/src/services/itemDataService"; +import { getExalted, getKeyChainItems } from "@/src/services/itemDataService"; import { IEquipmentClient, IItemConfig } from "../types/inventoryTypes/commonInventoryTypes"; import { ExportArcanes, @@ -40,6 +40,7 @@ import { ExportResources, ExportSentinels, ExportUpgrades, + ExportWeapons, TStandingLimitBin } from "warframe-public-export-plus"; import { createShip } from "./shipService"; @@ -288,6 +289,20 @@ export const addItem = async ( } }; } + if (typeName in ExportWeapons) { + const weapon = ExportWeapons[typeName]; + // Many non-weapon items are "Pistols" in Public Export, so some duck typing is needed. + if (weapon.totalDamage != 0) { + const inventoryChanges = addEquipment(inventory, weapon.productCategory, typeName); + updateSlots(inventory, InventorySlot.WEAPONS, 0, 1); + return { + InventoryChanges: { + ...inventoryChanges, + WeaponBin: { count: 1, platinum: 0, Slots: -1 } + } + }; + } + } if (typeName in creditBundles) { const creditsTotal = creditBundles[typeName] * quantity; inventory.RegularCredits += creditsTotal; @@ -355,17 +370,6 @@ export const addItem = async ( } } break; - case "Weapons": { - const weaponType = getWeaponType(typeName); - const inventoryChanges = addEquipment(inventory, weaponType, typeName); - updateSlots(inventory, InventorySlot.WEAPONS, 0, 1); - return { - InventoryChanges: { - ...inventoryChanges, - WeaponBin: { count: 1, platinum: 0, Slots: -1 } - } - }; - } case "Upgrades": { // Needed to add Traumatic Peculiar const changes = [ diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index a9bddd1d..a8e94df0 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -44,21 +44,6 @@ export type WeaponTypeInternal = | "OperatorAmps" | "SpecialItems"; -export const getWeaponType = (weaponName: string): WeaponTypeInternal => { - const weaponInfo = ExportWeapons[weaponName]; - - if (!weaponInfo) { - throw new Error(`unknown weapon ${weaponName}`); - } - - // Many non-weapon items are "Pistols" in Public Export, so some duck typing is needed. - if (weaponInfo.totalDamage == 0) { - throw new Error(`${weaponName} doesn't quack like a weapon`); - } - - return weaponInfo.productCategory; -}; - export const getRecipe = (uniqueName: string): IRecipe | undefined => { return ExportRecipes[uniqueName]; };