From 787d6e2d74ae376b88720dae7a71c34cb17df537 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 16 Apr 2025 18:44:35 +0200 Subject: [PATCH] fix: provide a SubroutineIndex when identifying applicable components --- .../api/crewShipIdentifySalvageController.ts | 19 +++++++++++++------ src/types/inventoryTypes/inventoryTypes.ts | 4 ++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/controllers/api/crewShipIdentifySalvageController.ts b/src/controllers/api/crewShipIdentifySalvageController.ts index c40f78c5..d9d09b75 100644 --- a/src/controllers/api/crewShipIdentifySalvageController.ts +++ b/src/controllers/api/crewShipIdentifySalvageController.ts @@ -1,25 +1,32 @@ import { addCrewShipSalvagedWeaponSkin, addCrewShipRawSalvage, getInventory } from "@/src/services/inventoryService"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { RequestHandler } from "express"; -import { IInnateDamageFingerprint } from "@/src/types/inventoryTypes/inventoryTypes"; +import { ICrewShipComponentFingerprint } from "@/src/types/inventoryTypes/inventoryTypes"; import { ExportCustoms } from "warframe-public-export-plus"; -import { IFingerprintStat } from "@/src/helpers/rivenHelper"; import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { IInventoryChanges } from "@/src/types/purchaseTypes"; +import { getRandomInt } from "@/src/services/rngService"; export const crewShipIdentifySalvageController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId, "CrewShipSalvagedWeaponSkins CrewShipRawSalvage"); const payload = getJSONfromString(String(req.body)); - const buffs: IFingerprintStat[] = []; - for (const upgrade of ExportCustoms[payload.ItemType].randomisedUpgrades!) { - buffs.push({ Tag: upgrade.tag, Value: Math.trunc(Math.random() * 0x40000000) }); + const meta = ExportCustoms[payload.ItemType]; + let upgradeFingerprint: ICrewShipComponentFingerprint = { compat: payload.ItemType, buffs: [] }; + if (meta.subroutines) { + upgradeFingerprint = { + SubroutineIndex: getRandomInt(0, meta.subroutines.length - 1), + ...upgradeFingerprint + }; + } + for (const upgrade of meta.randomisedUpgrades!) { + upgradeFingerprint.buffs.push({ Tag: upgrade.tag, Value: Math.trunc(Math.random() * 0x40000000) }); } const inventoryChanges: IInventoryChanges = addCrewShipSalvagedWeaponSkin( inventory, payload.ItemType, - JSON.stringify({ compat: payload.ItemType, buffs } satisfies IInnateDamageFingerprint) + JSON.stringify(upgradeFingerprint) ); inventoryChanges.CrewShipRawSalvage = [ diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 73156437..d6e2ab34 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -907,6 +907,10 @@ export interface IInnateDamageFingerprint { buffs: IFingerprintStat[]; } +export interface ICrewShipComponentFingerprint extends IInnateDamageFingerprint { + SubroutineIndex?: number; +} + export enum GettingSlotOrderInfo { Empty = "", LotusUpgradesModsRandomizedPlayerMeleeWeaponRandomModRare0 = "/Lotus/Upgrades/Mods/Randomized/PlayerMeleeWeaponRandomModRare:0",