chore: handle mods picked up in mission on U19 #2042
@ -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",
 | 
				
			||||||
 | 
				
			|||||||
@ -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);
 | 
				
			||||||
 | 
					                    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
 | 
					                        upgrade.UpgradeFingerprint = clientUpgrade.UpgradeFingerprint; // primitive way to copy over the riven challenge progress
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
            case "WeaponSkins":
 | 
					            case "WeaponSkins":
 | 
				
			||||||
 | 
				
			|||||||
@ -532,6 +532,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;
 | 
				
			||||||
@ -1050,7 +1060,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 {
 | 
				
			||||||
 | 
				
			|||||||
@ -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;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user