From 7d169b7c561234e2f7459f437fc81833b577044c Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 6 Jun 2024 14:23:46 +0200 Subject: [PATCH] fix: considering Zaw parts to be weapons instead of miscitems (#280) --- src/controllers/custom/getItemListsController.ts | 12 +++++++++--- src/services/itemDataService.ts | 5 +++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index b2f970bc..2efde908 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -1,5 +1,5 @@ import { RequestHandler } from "express"; -import { MinItem, warframes, weapons, items, getEnglishString } from "@/src/services/itemDataService"; +import { MinItem, MinWeapon, warframes, weapons, items, getEnglishString } from "@/src/services/itemDataService"; import badItems from "@/static/json/exclude-mods.json"; import ExportArcanes from "@/node_modules/warframe-public-export-plus/ExportArcanes.json"; @@ -29,9 +29,15 @@ const getItemListsController: RequestHandler = (_req, res) => { } res.json({ warframes: reduceItems(warframes), - weapons: reduceItems(weapons.filter(item => item.productCategory != "OperatorAmps")), + weapons: reduceItems(weapons.filter(item => item.productCategory != "OperatorAmps" && item.totalDamage != 0)), miscitems: reduceItems( - items.filter(item => item.category == "Misc" || item.category == "Resources" || item.category == "Fish") + items.filter( + item => + item.category == "Misc" || + item.category == "Resources" || + item.category == "Fish" || + ((item as any).productCategory == "Pistols" && (item as MinWeapon).totalDamage == 0) + ) ), mods, badItems diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 51ad3b68..9714c669 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -41,6 +41,11 @@ export const getWeaponType = (weaponName: string) => { 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`); + } + const weaponType = weaponInfo.productCategory as WeaponTypeInternal; if (!weaponType) {