forked from OpenWF/SpaceNinjaServer
		
	chore: handle mods picked up in mission on U19 (#2042)
Reviewed-on: OpenWF/SpaceNinjaServer#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:
		
							parent
							
								
									9d4bce852e
								
							
						
					
					
						commit
						b451c73598
					
				@ -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 { addMiscItems, addMods, getInventory } from "@/src/services/inventoryService";
 | 
			
		||||
import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
			
		||||
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 { ExportBoosterPacks, ExportUpgrades, TRarity } from "warframe-public-export-plus";
 | 
			
		||||
 | 
			
		||||
@ -24,7 +24,7 @@ export const artifactTransmutationController: RequestHandler = async (req, res)
 | 
			
		||||
        ]);
 | 
			
		||||
 | 
			
		||||
        payload.Consumed.forEach(upgrade => {
 | 
			
		||||
            inventory.Upgrades.pull({ _id: upgrade.ItemId.$oid });
 | 
			
		||||
            inventory.Upgrades.pull({ _id: fromOid(upgrade.ItemId) });
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        const rawRivenType = getRandomRawRivenType();
 | 
			
		||||
@ -57,8 +57,8 @@ export const artifactTransmutationController: RequestHandler = async (req, res)
 | 
			
		||||
        payload.Consumed.forEach(upgrade => {
 | 
			
		||||
            const meta = ExportUpgrades[upgrade.ItemType];
 | 
			
		||||
            counts[meta.rarity] += upgrade.ItemCount;
 | 
			
		||||
            if (upgrade.ItemId.$oid != "000000000000000000000000") {
 | 
			
		||||
                inventory.Upgrades.pull({ _id: upgrade.ItemId.$oid });
 | 
			
		||||
            if (fromOid(upgrade.ItemId) != "000000000000000000000000") {
 | 
			
		||||
                inventory.Upgrades.pull({ _id: fromOid(upgrade.ItemId) });
 | 
			
		||||
            } else {
 | 
			
		||||
                addMods(inventory, [
 | 
			
		||||
                    {
 | 
			
		||||
@ -128,24 +128,14 @@ const getRandomRawRivenType = (): string => {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
interface IArtifactTransmutationRequest {
 | 
			
		||||
    Upgrade: IAgnosticUpgradeClient;
 | 
			
		||||
    Upgrade: IUpgradeFromClient;
 | 
			
		||||
    LevelDiff: number;
 | 
			
		||||
    Consumed: IAgnosticUpgradeClient[];
 | 
			
		||||
    Consumed: IUpgradeFromClient[];
 | 
			
		||||
    Cost: number;
 | 
			
		||||
    FusionPointCost: number;
 | 
			
		||||
    RivenTransmute?: boolean;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
interface IAgnosticUpgradeClient {
 | 
			
		||||
    ItemType: string;
 | 
			
		||||
    ItemId: IOid;
 | 
			
		||||
    FromSKU: boolean;
 | 
			
		||||
    UpgradeFingerprint: string;
 | 
			
		||||
    PendingRerollFingerprint: string;
 | 
			
		||||
    ItemCount: number;
 | 
			
		||||
    LastAdded: IOid;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const specialModSets: string[][] = [
 | 
			
		||||
    [
 | 
			
		||||
        "/Lotus/Upgrades/Mods/Immortal/ImmortalOneMod",
 | 
			
		||||
 | 
			
		||||
@ -400,8 +400,14 @@ export const addMissionInventoryUpdates = async (
 | 
			
		||||
                break;
 | 
			
		||||
            case "Upgrades":
 | 
			
		||||
                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
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
                break;
 | 
			
		||||
            case "WeaponSkins":
 | 
			
		||||
 | 
			
		||||
@ -535,6 +535,16 @@ export interface IUpgradeDatabase extends Omit<IUpgradeClient, "ItemId"> {
 | 
			
		||||
    _id: Types.ObjectId;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface IUpgradeFromClient {
 | 
			
		||||
    ItemType: string;
 | 
			
		||||
    ItemId: IOidWithLegacySupport;
 | 
			
		||||
    FromSKU?: boolean;
 | 
			
		||||
    UpgradeFingerprint: string;
 | 
			
		||||
    PendingRerollFingerprint: string;
 | 
			
		||||
    ItemCount: number;
 | 
			
		||||
    LastAdded: IOidWithLegacySupport;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface ICrewShipMembersClient {
 | 
			
		||||
    SLOT_A?: ICrewShipMemberClient;
 | 
			
		||||
    SLOT_B?: ICrewShipMemberClient;
 | 
			
		||||
@ -1053,7 +1063,7 @@ export interface IQuestStage {
 | 
			
		||||
export interface IRawUpgrade {
 | 
			
		||||
    ItemType: string;
 | 
			
		||||
    ItemCount: number;
 | 
			
		||||
    LastAdded?: IOid;
 | 
			
		||||
    LastAdded?: IOidWithLegacySupport;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface ISeasonChallenge {
 | 
			
		||||
 | 
			
		||||
@ -15,7 +15,7 @@ import {
 | 
			
		||||
    IPlayerSkills,
 | 
			
		||||
    IQuestKeyDatabase,
 | 
			
		||||
    ILoreFragmentScan,
 | 
			
		||||
    IUpgradeClient,
 | 
			
		||||
    IUpgradeFromClient,
 | 
			
		||||
    ICollectibleEntry,
 | 
			
		||||
    IDiscoveredMarker,
 | 
			
		||||
    ILockedWeaponGroupClient,
 | 
			
		||||
@ -111,7 +111,7 @@ export type IMissionInventoryUpdateRequest = {
 | 
			
		||||
        Standing: number;
 | 
			
		||||
    }[];
 | 
			
		||||
    CollectibleScans?: ICollectibleEntry[];
 | 
			
		||||
    Upgrades?: IUpgradeClient[]; // riven challenge progress
 | 
			
		||||
    Upgrades?: IUpgradeFromClient[]; // riven challenge progress
 | 
			
		||||
    WeaponSkins?: IWeaponSkinClient[];
 | 
			
		||||
    StrippedItems?: {
 | 
			
		||||
        DropTable: string;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user