chore: handle mods picked up in mission on U19 (#2042)
All checks were successful
Build Docker image / docker (push) Successful in 1m10s
Build / build (push) Successful in 1m36s

Reviewed-on: #2042
Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com>
Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
Sainan 2025-05-09 21:38:42 -07:00 committed by Sainan
parent 9d4bce852e
commit b451c73598
4 changed files with 28 additions and 22 deletions

View File

@ -1,9 +1,9 @@
import { toOid } from "@/src/helpers/inventoryHelpers"; import { fromOid, toOid } from "@/src/helpers/inventoryHelpers";
import { createVeiledRivenFingerprint, rivenRawToRealWeighted } from "@/src/helpers/rivenHelper"; import { createVeiledRivenFingerprint, rivenRawToRealWeighted } from "@/src/helpers/rivenHelper";
import { addMiscItems, addMods, getInventory } from "@/src/services/inventoryService"; import { addMiscItems, addMods, getInventory } from "@/src/services/inventoryService";
import { getAccountIdForRequest } from "@/src/services/loginService"; import { getAccountIdForRequest } from "@/src/services/loginService";
import { getRandomElement, getRandomWeightedReward, getRandomWeightedRewardUc } from "@/src/services/rngService"; import { getRandomElement, getRandomWeightedReward, getRandomWeightedRewardUc } from "@/src/services/rngService";
import { IOid } from "@/src/types/commonTypes"; import { IUpgradeFromClient } from "@/src/types/inventoryTypes/inventoryTypes";
import { RequestHandler } from "express"; import { RequestHandler } from "express";
import { ExportBoosterPacks, ExportUpgrades, TRarity } from "warframe-public-export-plus"; import { ExportBoosterPacks, ExportUpgrades, TRarity } from "warframe-public-export-plus";
@ -24,7 +24,7 @@ export const artifactTransmutationController: RequestHandler = async (req, res)
]); ]);
payload.Consumed.forEach(upgrade => { payload.Consumed.forEach(upgrade => {
inventory.Upgrades.pull({ _id: upgrade.ItemId.$oid }); inventory.Upgrades.pull({ _id: fromOid(upgrade.ItemId) });
}); });
const rawRivenType = getRandomRawRivenType(); const rawRivenType = getRandomRawRivenType();
@ -57,8 +57,8 @@ export const artifactTransmutationController: RequestHandler = async (req, res)
payload.Consumed.forEach(upgrade => { payload.Consumed.forEach(upgrade => {
const meta = ExportUpgrades[upgrade.ItemType]; const meta = ExportUpgrades[upgrade.ItemType];
counts[meta.rarity] += upgrade.ItemCount; counts[meta.rarity] += upgrade.ItemCount;
if (upgrade.ItemId.$oid != "000000000000000000000000") { if (fromOid(upgrade.ItemId) != "000000000000000000000000") {
inventory.Upgrades.pull({ _id: upgrade.ItemId.$oid }); inventory.Upgrades.pull({ _id: fromOid(upgrade.ItemId) });
} else { } else {
addMods(inventory, [ addMods(inventory, [
{ {
@ -128,24 +128,14 @@ const getRandomRawRivenType = (): string => {
}; };
interface IArtifactTransmutationRequest { interface IArtifactTransmutationRequest {
Upgrade: IAgnosticUpgradeClient; Upgrade: IUpgradeFromClient;
LevelDiff: number; LevelDiff: number;
Consumed: IAgnosticUpgradeClient[]; Consumed: IUpgradeFromClient[];
Cost: number; Cost: number;
FusionPointCost: number; FusionPointCost: number;
RivenTransmute?: boolean; RivenTransmute?: boolean;
} }
interface IAgnosticUpgradeClient {
ItemType: string;
ItemId: IOid;
FromSKU: boolean;
UpgradeFingerprint: string;
PendingRerollFingerprint: string;
ItemCount: number;
LastAdded: IOid;
}
const specialModSets: string[][] = [ const specialModSets: string[][] = [
[ [
"/Lotus/Upgrades/Mods/Immortal/ImmortalOneMod", "/Lotus/Upgrades/Mods/Immortal/ImmortalOneMod",

View File

@ -400,8 +400,14 @@ export const addMissionInventoryUpdates = async (
break; break;
case "Upgrades": case "Upgrades":
value.forEach(clientUpgrade => { value.forEach(clientUpgrade => {
const upgrade = inventory.Upgrades.id(fromOid(clientUpgrade.ItemId))!; const id = fromOid(clientUpgrade.ItemId);
upgrade.UpgradeFingerprint = clientUpgrade.UpgradeFingerprint; // primitive way to copy over the riven challenge progress if (id == "") {
// U19 does not provide RawUpgrades and instead interleaves them with riven progress here
addMods(inventory, [clientUpgrade]);
} else {
const upgrade = inventory.Upgrades.id(id)!;
upgrade.UpgradeFingerprint = clientUpgrade.UpgradeFingerprint; // primitive way to copy over the riven challenge progress
}
}); });
break; break;
case "WeaponSkins": case "WeaponSkins":

View File

@ -535,6 +535,16 @@ export interface IUpgradeDatabase extends Omit<IUpgradeClient, "ItemId"> {
_id: Types.ObjectId; _id: Types.ObjectId;
} }
export interface IUpgradeFromClient {
ItemType: string;
ItemId: IOidWithLegacySupport;
FromSKU?: boolean;
UpgradeFingerprint: string;
PendingRerollFingerprint: string;
ItemCount: number;
LastAdded: IOidWithLegacySupport;
}
export interface ICrewShipMembersClient { export interface ICrewShipMembersClient {
SLOT_A?: ICrewShipMemberClient; SLOT_A?: ICrewShipMemberClient;
SLOT_B?: ICrewShipMemberClient; SLOT_B?: ICrewShipMemberClient;
@ -1053,7 +1063,7 @@ export interface IQuestStage {
export interface IRawUpgrade { export interface IRawUpgrade {
ItemType: string; ItemType: string;
ItemCount: number; ItemCount: number;
LastAdded?: IOid; LastAdded?: IOidWithLegacySupport;
} }
export interface ISeasonChallenge { export interface ISeasonChallenge {

View File

@ -15,7 +15,7 @@ import {
IPlayerSkills, IPlayerSkills,
IQuestKeyDatabase, IQuestKeyDatabase,
ILoreFragmentScan, ILoreFragmentScan,
IUpgradeClient, IUpgradeFromClient,
ICollectibleEntry, ICollectibleEntry,
IDiscoveredMarker, IDiscoveredMarker,
ILockedWeaponGroupClient, ILockedWeaponGroupClient,
@ -111,7 +111,7 @@ export type IMissionInventoryUpdateRequest = {
Standing: number; Standing: number;
}[]; }[];
CollectibleScans?: ICollectibleEntry[]; CollectibleScans?: ICollectibleEntry[];
Upgrades?: IUpgradeClient[]; // riven challenge progress Upgrades?: IUpgradeFromClient[]; // riven challenge progress
WeaponSkins?: IWeaponSkinClient[]; WeaponSkins?: IWeaponSkinClient[];
StrippedItems?: { StrippedItems?: {
DropTable: string; DropTable: string;