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",