forked from OpenWF/SpaceNinjaServer
		
	feat: mission rewards & more
fixes mission rewards, item xp, tutorial
This commit is contained in:
		
							parent
							
								
									3403d496b4
								
							
						
					
					
						commit
						0af98bc6c2
					
				@ -21,11 +21,11 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const inventory = await getInventory(accountId);
 | 
					    const inventory = await getInventory(accountId);
 | 
				
			||||||
    const pendingRecipe = inventory.PendingRecipes.find(
 | 
					    const pendingRecipe = inventory.PendingRecipes.find(
 | 
				
			||||||
        recipe => recipe._id?.toString() === claimCompletedRecipeRequest.RecipeIds[0].$oid
 | 
					        recipe => recipe._id?.toString() === claimCompletedRecipeRequest.RecipeIds[0].$id
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    if (!pendingRecipe) {
 | 
					    if (!pendingRecipe) {
 | 
				
			||||||
        logger.error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$oid}`);
 | 
					        logger.error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$id}`);
 | 
				
			||||||
        throw new Error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$oid}`);
 | 
					        throw new Error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$id}`);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //check recipe is indeed ready to be completed
 | 
					    //check recipe is indeed ready to be completed
 | 
				
			||||||
 | 
				
			|||||||
@ -16,8 +16,6 @@ export const getCreditsController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
    if (config.infiniteResources) {
 | 
					    if (config.infiniteResources) {
 | 
				
			||||||
        res.json({
 | 
					        res.json({
 | 
				
			||||||
            RegularCredits: 999999999,
 | 
					            RegularCredits: 999999999,
 | 
				
			||||||
            TradesRemaining: 999999999,
 | 
					 | 
				
			||||||
            PremiumCreditsFree: 999999999,
 | 
					 | 
				
			||||||
            PremiumCredits: 999999999
 | 
					            PremiumCredits: 999999999
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
@ -26,8 +24,6 @@ export const getCreditsController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
    const inventory = await getInventory(accountId);
 | 
					    const inventory = await getInventory(accountId);
 | 
				
			||||||
    res.json({
 | 
					    res.json({
 | 
				
			||||||
        RegularCredits: inventory.RegularCredits,
 | 
					        RegularCredits: inventory.RegularCredits,
 | 
				
			||||||
        TradesRemaining: inventory.TradesRemaining,
 | 
					 | 
				
			||||||
        PremiumCreditsFree: inventory.PremiumCreditsFree,
 | 
					 | 
				
			||||||
        PremiumCredits: inventory.PremiumCredits
 | 
					        PremiumCredits: inventory.PremiumCredits
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -28,7 +28,7 @@ export const getGuildDojoController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const dojo: IDojoClient = {
 | 
					    const dojo: IDojoClient = {
 | 
				
			||||||
        _id: { $oid: guildId },
 | 
					        _id: { $id: guildId },
 | 
				
			||||||
        Name: guild.Name,
 | 
					        Name: guild.Name,
 | 
				
			||||||
        Tier: 1,
 | 
					        Tier: 1,
 | 
				
			||||||
        FixedContributions: true,
 | 
					        FixedContributions: true,
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										14
									
								
								src/controllers/api/giveStartingGearController.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/controllers/api/giveStartingGearController.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
				
			||||||
 | 
					import { RequestHandler } from "express";
 | 
				
			||||||
 | 
					import { getInventory } from "@/src/services/inventoryService";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// eslint-disable-next-line @typescript-eslint/no-misused-promises
 | 
				
			||||||
 | 
					export const giveStartingGearController: RequestHandler = async (req, res) => {
 | 
				
			||||||
 | 
					    const accountId = await getAccountIdForRequest(req);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const inventory = await getInventory(accountId);
 | 
				
			||||||
 | 
					    inventory.ReceivedStartingGear = true;
 | 
				
			||||||
 | 
					    console.log(req.query);
 | 
				
			||||||
 | 
					    await inventory.save();
 | 
				
			||||||
 | 
					    res.status(200);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -12,7 +12,7 @@ const hostSessionController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
    const session = createNewSession(hostSessionRequest, accountId);
 | 
					    const session = createNewSession(hostSessionRequest, accountId);
 | 
				
			||||||
    logger.debug(`New Session Created`, { session });
 | 
					    logger.debug(`New Session Created`, { session });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    res.json({ sessionId: { $oid: session.sessionId }, rewardSeed: 99999999 });
 | 
					    res.json({ sessionId: { $id: session.sessionId }, rewardSeed: 99999999 });
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export { hostSessionController };
 | 
					export { hostSessionController };
 | 
				
			||||||
 | 
				
			|||||||
@ -12,7 +12,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
            // shard installation
 | 
					            // shard installation
 | 
				
			||||||
            const request = getJSONfromString(String(req.body)) as IShardInstallRequest;
 | 
					            const request = getJSONfromString(String(req.body)) as IShardInstallRequest;
 | 
				
			||||||
            const inventory = await getInventory(accountId);
 | 
					            const inventory = await getInventory(accountId);
 | 
				
			||||||
            const suit = inventory.Suits.find(suit => suit._id.toString() == request.SuitId.$oid)!;
 | 
					            const suit = inventory.Suits.find(suit => suit._id.toString() == request.SuitId.$id)!;
 | 
				
			||||||
            if (!suit.ArchonCrystalUpgrades || suit.ArchonCrystalUpgrades.length != 5) {
 | 
					            if (!suit.ArchonCrystalUpgrades || suit.ArchonCrystalUpgrades.length != 5) {
 | 
				
			||||||
                suit.ArchonCrystalUpgrades = [{}, {}, {}, {}, {}];
 | 
					                suit.ArchonCrystalUpgrades = [{}, {}, {}, {}, {}];
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
@ -31,38 +31,37 @@ const inventoryController: RequestHandler = async (request, response) => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (config.infiniteResources) {
 | 
					    if (config.infiniteResources) {
 | 
				
			||||||
        inventoryResponse.RegularCredits = 999999999;
 | 
					        inventoryResponse.RegularCredits = 999999999;
 | 
				
			||||||
        inventoryResponse.TradesRemaining = 999999999;
 | 
					 | 
				
			||||||
        inventoryResponse.PremiumCredits = 999999999;
 | 
					        inventoryResponse.PremiumCredits = 999999999;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (config.unlockAllMissions) {
 | 
					    // if (config.unlockAllMissions) {
 | 
				
			||||||
        //inventoryResponse.Missions = allMissions;
 | 
					    //     //inventoryResponse.Missions = allMissions;
 | 
				
			||||||
        //inventoryResponse.NodeIntrosCompleted.push("TeshinHardModeUnlocked");
 | 
					    //     //inventoryResponse.NodeIntrosCompleted.push("TeshinHardModeUnlocked");
 | 
				
			||||||
    }
 | 
					    // }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (config.unlockAllMissions) {
 | 
					    // if (config.unlockAllMissions) {
 | 
				
			||||||
        //inventoryResponse.Missions = allMissions;
 | 
					    //     //inventoryResponse.Missions = allMissions;
 | 
				
			||||||
        //addString(inventoryResponse.NodeIntrosCompleted, "TeshinHardModeUnlocked");
 | 
					    //     //addString(inventoryResponse.NodeIntrosCompleted, "TeshinHardModeUnlocked");
 | 
				
			||||||
    }
 | 
					    // }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (config.unlockAllFlavourItems) {
 | 
					    // if (config.unlockAllFlavourItems) {
 | 
				
			||||||
        inventoryResponse.FlavourItems = [];
 | 
					    //     inventoryResponse.FlavourItems = [];
 | 
				
			||||||
        for (const uniqueName in ExportFlavour) {
 | 
					    //     for (const uniqueName in ExportFlavour) {
 | 
				
			||||||
            inventoryResponse.FlavourItems.push({ ItemType: uniqueName });
 | 
					    //         inventoryResponse.FlavourItems.push({ ItemType: uniqueName });
 | 
				
			||||||
        }
 | 
					    //     }
 | 
				
			||||||
    }
 | 
					    // }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (config.unlockAllSkins) {
 | 
					    // if (config.unlockAllSkins) {
 | 
				
			||||||
        inventoryResponse.WeaponSkins = [];
 | 
					    //     inventoryResponse.WeaponSkins = [];
 | 
				
			||||||
        for (const uniqueName in ExportCustoms) {
 | 
					    //     for (const uniqueName in ExportCustoms) {
 | 
				
			||||||
            inventoryResponse.WeaponSkins.push({
 | 
					    //         inventoryResponse.WeaponSkins.push({
 | 
				
			||||||
                ItemId: {
 | 
					    //             ItemId: {
 | 
				
			||||||
                    $oid: "000000000000000000000000"
 | 
					    //                 $id: "000000000000000000000000"
 | 
				
			||||||
                },
 | 
					    //             },
 | 
				
			||||||
                ItemType: uniqueName
 | 
					    //             ItemType: uniqueName
 | 
				
			||||||
            });
 | 
					    //         });
 | 
				
			||||||
        }
 | 
					    //     }
 | 
				
			||||||
    }
 | 
					    // }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (typeof config.spoofMasteryRank === "number" && config.spoofMasteryRank >= 0) {
 | 
					    if (typeof config.spoofMasteryRank === "number" && config.spoofMasteryRank >= 0) {
 | 
				
			||||||
        inventoryResponse.PlayerLevel = config.spoofMasteryRank;
 | 
					        inventoryResponse.PlayerLevel = config.spoofMasteryRank;
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,7 @@ const joinSessionController: RequestHandler = (_req, res) => {
 | 
				
			|||||||
    logger.debug(`JoinSession Request`, { reqBody });
 | 
					    logger.debug(`JoinSession Request`, { reqBody });
 | 
				
			||||||
    const req = JSON.parse(String(_req.body));
 | 
					    const req = JSON.parse(String(_req.body));
 | 
				
			||||||
    const session = getSessionByID(req.sessionIds[0] as string);
 | 
					    const session = getSessionByID(req.sessionIds[0] as string);
 | 
				
			||||||
    res.json({ rewardSeed: session?.rewardSeed, sessionId: { $oid: session?.sessionId } });
 | 
					    res.json({ rewardSeed: session?.rewardSeed, sessionId: { $id: session?.sessionId } });
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export { joinSessionController };
 | 
					export { joinSessionController };
 | 
				
			||||||
 | 
				
			|||||||
@ -57,7 +57,7 @@ const missionInventoryUpdateController: RequestHandler = async (req, res): Promi
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        const { InventoryChanges, MissionRewards } = getRewards(lootInventory);
 | 
					        const { InventoryChanges, MissionRewards } = getRewards(lootInventory);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits, FusionPoints } =
 | 
					        const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits } =
 | 
				
			||||||
            combineRewardAndLootInventory(InventoryChanges, lootInventory);
 | 
					            combineRewardAndLootInventory(InventoryChanges, lootInventory);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
					        // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
				
			||||||
@ -68,8 +68,7 @@ const missionInventoryUpdateController: RequestHandler = async (req, res): Promi
 | 
				
			|||||||
            InventoryChanges,
 | 
					            InventoryChanges,
 | 
				
			||||||
            TotalCredits,
 | 
					            TotalCredits,
 | 
				
			||||||
            CreditsBonus,
 | 
					            CreditsBonus,
 | 
				
			||||||
            MissionCredits,
 | 
					            MissionCredits
 | 
				
			||||||
            FusionPoints
 | 
					 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    } catch (err) {
 | 
					    } catch (err) {
 | 
				
			||||||
        console.error("Error parsing JSON data:", err);
 | 
					        console.error("Error parsing JSON data:", err);
 | 
				
			||||||
 | 
				
			|||||||
@ -17,7 +17,7 @@ export const startDojoRecipeController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
        _id: new Types.ObjectId(),
 | 
					        _id: new Types.ObjectId(),
 | 
				
			||||||
        pf: request.PlacedComponent.pf,
 | 
					        pf: request.PlacedComponent.pf,
 | 
				
			||||||
        ppf: request.PlacedComponent.ppf,
 | 
					        ppf: request.PlacedComponent.ppf,
 | 
				
			||||||
        pi: new Types.ObjectId(request.PlacedComponent.pi!.$oid),
 | 
					        pi: new Types.ObjectId(request.PlacedComponent.pi!.$id),
 | 
				
			||||||
        op: request.PlacedComponent.op,
 | 
					        op: request.PlacedComponent.op,
 | 
				
			||||||
        pp: request.PlacedComponent.pp,
 | 
					        pp: request.PlacedComponent.pp,
 | 
				
			||||||
        CompletionTime: new Date(Date.now()) // TOOD: Omit this field & handle the "Collecting Materials" state.
 | 
					        CompletionTime: new Date(Date.now()) // TOOD: Omit this field & handle the "Collecting Materials" state.
 | 
				
			||||||
 | 
				
			|||||||
@ -18,14 +18,12 @@ interface ITrainingResultsResponse {
 | 
				
			|||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
 | 
					// eslint-disable-next-line @typescript-eslint/no-misused-promises
 | 
				
			||||||
const trainingResultController: RequestHandler = async (req, res): Promise<void> => {
 | 
					const trainingResultController: RequestHandler = async (req, res): Promise<void> => {
 | 
				
			||||||
    const accountId = await getAccountIdForRequest(req);
 | 
					    const accountId = await getAccountIdForRequest(req);
 | 
				
			||||||
 | 
					    const numLevelsGained = parseInt(req.query.numLevelsGained as string);
 | 
				
			||||||
    const trainingResults = getJSONfromString(String(req.body)) as ITrainingResultsRequest;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    const inventory = await getInventory(accountId);
 | 
					    const inventory = await getInventory(accountId);
 | 
				
			||||||
 | 
					    console.log(req.query);
 | 
				
			||||||
    inventory.TrainingDate = new Date(Date.now() + unixTimesInMs.day);
 | 
					    inventory.TrainingDate = new Date(Date.now() + unixTimesInMs.day);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (trainingResults.numLevelsGained == 1) {
 | 
					    if (numLevelsGained == 1) {
 | 
				
			||||||
        inventory.PlayerLevel += 1;
 | 
					        inventory.PlayerLevel += 1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -35,7 +33,7 @@ const trainingResultController: RequestHandler = async (req, res): Promise<void>
 | 
				
			|||||||
        NewTrainingDate: {
 | 
					        NewTrainingDate: {
 | 
				
			||||||
            $date: { $numberLong: changedinventory.TrainingDate.getTime().toString() }
 | 
					            $date: { $numberLong: changedinventory.TrainingDate.getTime().toString() }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        NewLevel: trainingResults.numLevelsGained == 1 ? changedinventory.PlayerLevel : inventory.PlayerLevel,
 | 
					        NewLevel: numLevelsGained == 1 ? changedinventory.PlayerLevel : inventory.PlayerLevel,
 | 
				
			||||||
        InventoryChanges: []
 | 
					        InventoryChanges: []
 | 
				
			||||||
    } satisfies ITrainingResultsResponse);
 | 
					    } satisfies ITrainingResultsResponse);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -1,18 +1,26 @@
 | 
				
			|||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
					import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
				
			||||||
import { RequestHandler } from "express";
 | 
					import { RequestHandler } from "express";
 | 
				
			||||||
import { getInventory } from "@/src/services/inventoryService";
 | 
					import { getInventory, missionInventoryUpdate } from "@/src/services/inventoryService";
 | 
				
			||||||
 | 
					import { combineRewardAndLootInventory } from "@/src/services/missionInventoryUpdateService";
 | 
				
			||||||
 | 
					import { getJSONfromString } from "@/src/helpers/stringHelpers";
 | 
				
			||||||
 | 
					import { IMissionInventoryUpdateRequest } from "@/src/types/requestTypes";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
 | 
					// eslint-disable-next-line @typescript-eslint/no-misused-promises
 | 
				
			||||||
export const updateInventoryController: RequestHandler = async (req, res) => {
 | 
					export const updateInventoryController: RequestHandler = async (req, res) => {
 | 
				
			||||||
    const accountId = await getAccountIdForRequest(req);
 | 
					    const accountId = await getAccountIdForRequest(req);
 | 
				
			||||||
    const body: any = JSON.parse(req.body as string);
 | 
					    const lootInventory = getJSONfromString(req.body.toString()) as IMissionInventoryUpdateRequest;
 | 
				
			||||||
 | 
					    const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits } =
 | 
				
			||||||
 | 
					    combineRewardAndLootInventory(lootInventory, lootInventory);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const inventory = await getInventory(accountId);
 | 
					    await missionInventoryUpdate(combinedInventoryChanges, accountId);
 | 
				
			||||||
    inventory.Missions.push({ Tag: body.Missions.Tag, Completes: body.Missions.Completes, BestRating: 0.2 });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    await inventory.save();
 | 
					    res.json({
 | 
				
			||||||
    console.log(body);
 | 
					        // InventoryJson, // this part will reset game data and missions will be locked
 | 
				
			||||||
    res.json({});
 | 
					        combinedInventoryChanges,
 | 
				
			||||||
 | 
					        TotalCredits,
 | 
				
			||||||
 | 
					        CreditsBonus,
 | 
				
			||||||
 | 
					        MissionCredits
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 | 
				
			|||||||
@ -34,7 +34,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
            case "/Lotus/Types/Items/MiscItems/OrokinReactor":
 | 
					            case "/Lotus/Types/Items/MiscItems/OrokinReactor":
 | 
				
			||||||
            case "/Lotus/Types/Items/MiscItems/OrokinCatalyst":
 | 
					            case "/Lotus/Types/Items/MiscItems/OrokinCatalyst":
 | 
				
			||||||
                for (const item of inventory[payload.ItemCategory]) {
 | 
					                for (const item of inventory[payload.ItemCategory]) {
 | 
				
			||||||
                    if (item._id.toString() == payload.ItemId.$oid) {
 | 
					                    if (item._id.toString() == payload.ItemId.$id) {
 | 
				
			||||||
                        item.Features ??= 0;
 | 
					                        item.Features ??= 0;
 | 
				
			||||||
                        item.Features |= EquipmentFeatures.DOUBLE_CAPACITY;
 | 
					                        item.Features |= EquipmentFeatures.DOUBLE_CAPACITY;
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
@ -44,7 +44,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
            case "/Lotus/Types/Items/MiscItems/UtilityUnlocker":
 | 
					            case "/Lotus/Types/Items/MiscItems/UtilityUnlocker":
 | 
				
			||||||
            case "/Lotus/Types/Items/MiscItems/WeaponUtilityUnlocker":
 | 
					            case "/Lotus/Types/Items/MiscItems/WeaponUtilityUnlocker":
 | 
				
			||||||
                for (const item of inventory[payload.ItemCategory]) {
 | 
					                for (const item of inventory[payload.ItemCategory]) {
 | 
				
			||||||
                    if (item._id.toString() == payload.ItemId.$oid) {
 | 
					                    if (item._id.toString() == payload.ItemId.$id) {
 | 
				
			||||||
                        item.Features ??= 0;
 | 
					                        item.Features ??= 0;
 | 
				
			||||||
                        item.Features |= EquipmentFeatures.UTILITY_SLOT;
 | 
					                        item.Features |= EquipmentFeatures.UTILITY_SLOT;
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
@ -54,7 +54,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
            case "/Lotus/Types/Items/MiscItems/HeavyWeaponCatalyst":
 | 
					            case "/Lotus/Types/Items/MiscItems/HeavyWeaponCatalyst":
 | 
				
			||||||
                console.assert(payload.ItemCategory == "SpaceGuns");
 | 
					                console.assert(payload.ItemCategory == "SpaceGuns");
 | 
				
			||||||
                for (const item of inventory[payload.ItemCategory]) {
 | 
					                for (const item of inventory[payload.ItemCategory]) {
 | 
				
			||||||
                    if (item._id.toString() == payload.ItemId.$oid) {
 | 
					                    if (item._id.toString() == payload.ItemId.$id) {
 | 
				
			||||||
                        item.Features ??= 0;
 | 
					                        item.Features ??= 0;
 | 
				
			||||||
                        item.Features |= EquipmentFeatures.GRAVIMAG_INSTALLED;
 | 
					                        item.Features |= EquipmentFeatures.GRAVIMAG_INSTALLED;
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
@ -66,7 +66,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
            case "/Lotus/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker":
 | 
					            case "/Lotus/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker":
 | 
				
			||||||
            case "/Lotus/Types/Items/MiscItems/WeaponAmpArcaneUnlocker":
 | 
					            case "/Lotus/Types/Items/MiscItems/WeaponAmpArcaneUnlocker":
 | 
				
			||||||
                for (const item of inventory[payload.ItemCategory]) {
 | 
					                for (const item of inventory[payload.ItemCategory]) {
 | 
				
			||||||
                    if (item._id.toString() == payload.ItemId.$oid) {
 | 
					                    if (item._id.toString() == payload.ItemId.$id) {
 | 
				
			||||||
                        item.Features ??= 0;
 | 
					                        item.Features ??= 0;
 | 
				
			||||||
                        item.Features |= EquipmentFeatures.ARCANE_SLOT;
 | 
					                        item.Features |= EquipmentFeatures.ARCANE_SLOT;
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
@ -78,7 +78,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
            case "/Lotus/Types/Items/MiscItems/FormaAura":
 | 
					            case "/Lotus/Types/Items/MiscItems/FormaAura":
 | 
				
			||||||
            case "/Lotus/Types/Items/MiscItems/FormaStance":
 | 
					            case "/Lotus/Types/Items/MiscItems/FormaStance":
 | 
				
			||||||
                for (const item of inventory[payload.ItemCategory]) {
 | 
					                for (const item of inventory[payload.ItemCategory]) {
 | 
				
			||||||
                    if (item._id.toString() == payload.ItemId.$oid) {
 | 
					                    if (item._id.toString() == payload.ItemId.$id) {
 | 
				
			||||||
                        item.XP = 0;
 | 
					                        item.XP = 0;
 | 
				
			||||||
                        setSlotPolarity(item, operation.PolarizeSlot, operation.PolarizeValue);
 | 
					                        setSlotPolarity(item, operation.PolarizeSlot, operation.PolarizeValue);
 | 
				
			||||||
                        item.Polarized ??= 0;
 | 
					                        item.Polarized ??= 0;
 | 
				
			||||||
@ -89,12 +89,12 @@ export const upgradesController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
                break;
 | 
					                break;
 | 
				
			||||||
            case "/Lotus/Types/Items/MiscItems/ModSlotUnlocker":
 | 
					            case "/Lotus/Types/Items/MiscItems/ModSlotUnlocker":
 | 
				
			||||||
                for (const item of inventory[payload.ItemCategory]) {
 | 
					                for (const item of inventory[payload.ItemCategory]) {
 | 
				
			||||||
                    if (item._id.toString() == payload.ItemId.$oid) {
 | 
					                    if (item._id.toString() == payload.ItemId.$id) {
 | 
				
			||||||
                        item.ModSlotPurchases ??= 0;
 | 
					                        item.ModSlotPurchases ??= 0;
 | 
				
			||||||
                        item.ModSlotPurchases += 1;
 | 
					                        item.ModSlotPurchases += 1;
 | 
				
			||||||
                        InventoryChanges[payload.ItemCategory] = {
 | 
					                        InventoryChanges[payload.ItemCategory] = {
 | 
				
			||||||
                            ItemId: {
 | 
					                            ItemId: {
 | 
				
			||||||
                                $oid: payload.ItemId.$oid
 | 
					                                $id: payload.ItemId.$id
 | 
				
			||||||
                            },
 | 
					                            },
 | 
				
			||||||
                            ModSlotPurchases: item.ModSlotPurchases
 | 
					                            ModSlotPurchases: item.ModSlotPurchases
 | 
				
			||||||
                        };
 | 
					                        };
 | 
				
			||||||
@ -104,12 +104,12 @@ export const upgradesController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
                break;
 | 
					                break;
 | 
				
			||||||
            case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker":
 | 
					            case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker":
 | 
				
			||||||
                for (const item of inventory[payload.ItemCategory]) {
 | 
					                for (const item of inventory[payload.ItemCategory]) {
 | 
				
			||||||
                    if (item._id.toString() == payload.ItemId.$oid) {
 | 
					                    if (item._id.toString() == payload.ItemId.$id) {
 | 
				
			||||||
                        item.CustomizationSlotPurchases ??= 0;
 | 
					                        item.CustomizationSlotPurchases ??= 0;
 | 
				
			||||||
                        item.CustomizationSlotPurchases += 1;
 | 
					                        item.CustomizationSlotPurchases += 1;
 | 
				
			||||||
                        InventoryChanges[payload.ItemCategory] = {
 | 
					                        InventoryChanges[payload.ItemCategory] = {
 | 
				
			||||||
                            ItemId: {
 | 
					                            ItemId: {
 | 
				
			||||||
                                $oid: payload.ItemId.$oid
 | 
					                                $id: payload.ItemId.$id
 | 
				
			||||||
                            },
 | 
					                            },
 | 
				
			||||||
                            CustomizationSlotPurchases: item.CustomizationSlotPurchases
 | 
					                            CustomizationSlotPurchases: item.CustomizationSlotPurchases
 | 
				
			||||||
                        };
 | 
					                        };
 | 
				
			||||||
@ -120,7 +120,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
 | 
				
			|||||||
            case "":
 | 
					            case "":
 | 
				
			||||||
                console.assert(operation.OperationType == "UOT_SWAP_POLARITY");
 | 
					                console.assert(operation.OperationType == "UOT_SWAP_POLARITY");
 | 
				
			||||||
                for (const item of inventory[payload.ItemCategory]) {
 | 
					                for (const item of inventory[payload.ItemCategory]) {
 | 
				
			||||||
                    if (item._id.toString() == payload.ItemId.$oid) {
 | 
					                    if (item._id.toString() == payload.ItemId.$id) {
 | 
				
			||||||
                        for (let i = 0; i != operation.PolarityRemap.length; ++i) {
 | 
					                        for (let i = 0; i != operation.PolarityRemap.length; ++i) {
 | 
				
			||||||
                            if (operation.PolarityRemap[i].Slot != i) {
 | 
					                            if (operation.PolarityRemap[i].Slot != i) {
 | 
				
			||||||
                                setSlotPolarity(item, i, operation.PolarityRemap[i].Value);
 | 
					                                setSlotPolarity(item, i, operation.PolarityRemap[i].Value);
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,7 @@ import { IOid } from "@/src/types/commonTypes";
 | 
				
			|||||||
import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes/inventoryTypes";
 | 
					import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes/inventoryTypes";
 | 
				
			||||||
import { Types } from "mongoose";
 | 
					import { Types } from "mongoose";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//TODO: this needs to be addressed: a schema's toJSON is responsible for changing Oid and Date to their corresponding Response versions __id to "ItemId":{"$oid":"6450f720bc562ebf030222d4"}, and a Date to "date":{"$date":{"$numberLong":"unix timestamp"})
 | 
					//TODO: this needs to be addressed: a schema's toJSON is responsible for changing Oid and Date to their corresponding Response versions __id to "ItemId":{"$id":"6450f720bc562ebf030222d4"}, and a Date to "date":{"$date":{"$numberLong":"unix timestamp"})
 | 
				
			||||||
export const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => {
 | 
					export const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => {
 | 
				
			||||||
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
					    // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | 
				
			||||||
    const { accountOwnerId, ...inventoryResponse } = inventoryDatabase;
 | 
					    const { accountOwnerId, ...inventoryResponse } = inventoryDatabase;
 | 
				
			||||||
@ -10,7 +10,7 @@ export const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInv
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const toOid = (objectId: Types.ObjectId) => {
 | 
					export const toOid = (objectId: Types.ObjectId) => {
 | 
				
			||||||
    return { $oid: objectId.toString() } satisfies IOid;
 | 
					    return { $id: objectId.toString() } satisfies IOid;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const toMongoDate = (date: Date) => {
 | 
					export const toMongoDate = (date: Date) => {
 | 
				
			||||||
 | 
				
			|||||||
@ -50,7 +50,7 @@ const pendingRecipeSchema = new Schema<IPendingRecipeDatabase>(
 | 
				
			|||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pendingRecipeSchema.virtual("ItemId").get(function () {
 | 
					pendingRecipeSchema.virtual("ItemId").get(function () {
 | 
				
			||||||
    return { $oid: this._id.toString() };
 | 
					    return { $id: this._id.toString() };
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pendingRecipeSchema.set("toJSON", {
 | 
					pendingRecipeSchema.set("toJSON", {
 | 
				
			||||||
@ -108,7 +108,7 @@ const operatorConfigSchema = new Schema<IOperatorConfigDatabase>(
 | 
				
			|||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
operatorConfigSchema.virtual("ItemId").get(function () {
 | 
					operatorConfigSchema.virtual("ItemId").get(function () {
 | 
				
			||||||
    return { $oid: this._id.toString() } satisfies IOid;
 | 
					    return { $id: this._id.toString() } satisfies IOid;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
operatorConfigSchema.set("toJSON", {
 | 
					operatorConfigSchema.set("toJSON", {
 | 
				
			||||||
@ -197,7 +197,7 @@ const EquipmentSchema = new Schema<IEquipmentDatabase>(
 | 
				
			|||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EquipmentSchema.virtual("ItemId").get(function () {
 | 
					EquipmentSchema.virtual("ItemId").get(function () {
 | 
				
			||||||
    return { $oid: this._id.toString() } satisfies IOid;
 | 
					    return { $id: this._id.toString() } satisfies IOid;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
EquipmentSchema.set("toJSON", {
 | 
					EquipmentSchema.set("toJSON", {
 | 
				
			||||||
@ -225,7 +225,7 @@ const RawUpgrades = new Schema<IRawUpgrade>(
 | 
				
			|||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RawUpgrades.virtual("LastAdded").get(function () {
 | 
					RawUpgrades.virtual("LastAdded").get(function () {
 | 
				
			||||||
    return { $oid: this._id.toString() } satisfies IOid;
 | 
					    return { $id: this._id.toString() } satisfies IOid;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RawUpgrades.set("toJSON", {
 | 
					RawUpgrades.set("toJSON", {
 | 
				
			||||||
@ -279,12 +279,12 @@ FlavourItemSchema.set("toJSON", {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  "Mailbox": { "LastInboxId": { "$oid": "123456780000000000000000" } }
 | 
					//  "Mailbox": { "LastInboxId": { "$id": "123456780000000000000000" } }
 | 
				
			||||||
const MailboxSchema = new Schema<IMailbox>(
 | 
					const MailboxSchema = new Schema<IMailbox>(
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        LastInboxId: {
 | 
					        LastInboxId: {
 | 
				
			||||||
            type: Schema.Types.ObjectId,
 | 
					            type: Schema.Types.ObjectId,
 | 
				
			||||||
            set: (v: IMailbox["LastInboxId"]) => v.$oid.toString()
 | 
					            set: (v: IMailbox["LastInboxId"]) => v.$id.toString()
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    { id: false, _id: false }
 | 
					    { id: false, _id: false }
 | 
				
			||||||
@ -351,7 +351,7 @@ const StepSequencersSchema = new Schema<IStepSequencer>(
 | 
				
			|||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
StepSequencersSchema.virtual("ItemId").get(function () {
 | 
					StepSequencersSchema.virtual("ItemId").get(function () {
 | 
				
			||||||
    return { $oid: this._id.toString() } satisfies IOid;
 | 
					    return { $id: this._id.toString() } satisfies IOid;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
StepSequencersSchema.set("toJSON", {
 | 
					StepSequencersSchema.set("toJSON", {
 | 
				
			||||||
@ -428,7 +428,7 @@ const weaponSkinsSchema = new Schema<IWeaponSkinDatabase>(
 | 
				
			|||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
weaponSkinsSchema.virtual("ItemId").get(function () {
 | 
					weaponSkinsSchema.virtual("ItemId").get(function () {
 | 
				
			||||||
    return { $oid: this._id.toString() };
 | 
					    return { $id: this._id.toString() };
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
weaponSkinsSchema.set("toJSON", {
 | 
					weaponSkinsSchema.set("toJSON", {
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,7 @@ import { Model, Schema, Types, model } from "mongoose";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const oidSchema = new Schema<IOid>(
 | 
					const oidSchema = new Schema<IOid>(
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $oid: String
 | 
					        $id: String
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        _id: false
 | 
					        _id: false
 | 
				
			||||||
@ -44,7 +44,7 @@ const loadoutConfigSchema = new Schema<ILoadoutConfigDatabase>(
 | 
				
			|||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
loadoutConfigSchema.virtual("ItemId").get(function () {
 | 
					loadoutConfigSchema.virtual("ItemId").get(function () {
 | 
				
			||||||
    return { $oid: this._id.toString() } satisfies IOid;
 | 
					    return { $id: this._id.toString() } satisfies IOid;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
loadoutConfigSchema.set("toJSON", {
 | 
					loadoutConfigSchema.set("toJSON", {
 | 
				
			||||||
 | 
				
			|||||||
@ -66,6 +66,7 @@ import { updateThemeController } from "../controllers/api/updateThemeController"
 | 
				
			|||||||
import { upgradesController } from "@/src/controllers/api/upgradesController";
 | 
					import { upgradesController } from "@/src/controllers/api/upgradesController";
 | 
				
			||||||
import { worldStateController } from "../controllers/dynamic/worldStateController";
 | 
					import { worldStateController } from "../controllers/dynamic/worldStateController";
 | 
				
			||||||
import { updateInventoryController } from "../controllers/api/updateInventoryController";
 | 
					import { updateInventoryController } from "../controllers/api/updateInventoryController";
 | 
				
			||||||
 | 
					import { giveStartingGearController } from "../controllers/api/giveStartingGearController";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const apiRouter = express.Router();
 | 
					const apiRouter = express.Router();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -104,12 +105,8 @@ apiRouter.get("/updateSession.php", updateSessionGetController);
 | 
				
			|||||||
apiRouter.get("/getMessages.php", (_, response) => {
 | 
					apiRouter.get("/getMessages.php", (_, response) => {
 | 
				
			||||||
    response.json({});
 | 
					    response.json({});
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
apiRouter.get("/trainingResult.php", (_, response) => {
 | 
					apiRouter.get("/trainingResult.php", trainingResultController);
 | 
				
			||||||
    response.status(200);
 | 
					apiRouter.get("/giveStartingGear.php", giveStartingGearController);
 | 
				
			||||||
});
 | 
					 | 
				
			||||||
apiRouter.get("/giveStartingGear.php", (_, response) => {
 | 
					 | 
				
			||||||
    response.status(200);
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
apiRouter.get("/worldState.php", worldStateController);
 | 
					apiRouter.get("/worldState.php", worldStateController);
 | 
				
			||||||
// post
 | 
					// post
 | 
				
			||||||
apiRouter.post("/addFriendImage.php", addFriendImageController);
 | 
					apiRouter.post("/addFriendImage.php", addFriendImageController);
 | 
				
			||||||
 | 
				
			|||||||
@ -188,34 +188,6 @@ export const addItem = async (
 | 
				
			|||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    };
 | 
					                    };
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                case "Archwing": {
 | 
					 | 
				
			||||||
                    const spaceSuit = await addSpaceSuit(typeName, accountId);
 | 
					 | 
				
			||||||
                    await updateSlots(accountId, InventorySlot.SPACESUITS, 0, 1);
 | 
					 | 
				
			||||||
                    return {
 | 
					 | 
				
			||||||
                        InventoryChanges: {
 | 
					 | 
				
			||||||
                            SpaceSuitBin: {
 | 
					 | 
				
			||||||
                                count: 1,
 | 
					 | 
				
			||||||
                                platinum: 0,
 | 
					 | 
				
			||||||
                                Slots: -1
 | 
					 | 
				
			||||||
                            },
 | 
					 | 
				
			||||||
                            SpaceSuits: [spaceSuit]
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    };
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                case "EntratiMech": {
 | 
					 | 
				
			||||||
                    const mechSuit = await addMechSuit(typeName, accountId);
 | 
					 | 
				
			||||||
                    await updateSlots(accountId, InventorySlot.MECHSUITS, 0, 1);
 | 
					 | 
				
			||||||
                    return {
 | 
					 | 
				
			||||||
                        InventoryChanges: {
 | 
					 | 
				
			||||||
                            MechBin: {
 | 
					 | 
				
			||||||
                                count: 1,
 | 
					 | 
				
			||||||
                                platinum: 0,
 | 
					 | 
				
			||||||
                                Slots: -1
 | 
					 | 
				
			||||||
                            },
 | 
					 | 
				
			||||||
                            MechSuits: [mechSuit]
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    };
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case "Weapons":
 | 
					        case "Weapons":
 | 
				
			||||||
@ -426,9 +398,6 @@ export const updateCurrency = async (price: number, usePremium: boolean, account
 | 
				
			|||||||
    const inventory = await getInventory(accountId);
 | 
					    const inventory = await getInventory(accountId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (usePremium) {
 | 
					    if (usePremium) {
 | 
				
			||||||
        if (inventory.PremiumCreditsFree > 0) {
 | 
					 | 
				
			||||||
            inventory.PremiumCreditsFree -= Math.min(price, inventory.PremiumCreditsFree);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        inventory.PremiumCredits -= price;
 | 
					        inventory.PremiumCredits -= price;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        inventory.RegularCredits -= price;
 | 
					        inventory.RegularCredits -= price;
 | 
				
			||||||
@ -436,7 +405,7 @@ export const updateCurrency = async (price: number, usePremium: boolean, account
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const modifiedPaths = inventory.modifiedPaths();
 | 
					    const modifiedPaths = inventory.modifiedPaths();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    type currencyKeys = "RegularCredits" | "PremiumCredits" | "PremiumCreditsFree";
 | 
					    type currencyKeys = "RegularCredits" | "PremiumCredits";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const currencyChanges = {} as Record<currencyKeys, number>;
 | 
					    const currencyChanges = {} as Record<currencyKeys, number>;
 | 
				
			||||||
    modifiedPaths.forEach(path => {
 | 
					    modifiedPaths.forEach(path => {
 | 
				
			||||||
@ -556,7 +525,7 @@ const addGearExpByCategory = (
 | 
				
			|||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const itemIndex = ItemId ? category.findIndex(item => item._id?.equals(ItemId.$oid)) : -1;
 | 
					        const itemIndex = ItemId ? category.findIndex(item => item._id?.equals(ItemId.$id)) : -1;
 | 
				
			||||||
        if (itemIndex !== -1) {
 | 
					        if (itemIndex !== -1) {
 | 
				
			||||||
            const item = category[itemIndex];
 | 
					            const item = category[itemIndex];
 | 
				
			||||||
            item.XP ??= 0;
 | 
					            item.XP ??= 0;
 | 
				
			||||||
@ -741,58 +710,15 @@ export const missionInventoryUpdate = async (data: IMissionInventoryUpdateReques
 | 
				
			|||||||
    // credits
 | 
					    // credits
 | 
				
			||||||
    inventory.RegularCredits += RegularCredits || 0;
 | 
					    inventory.RegularCredits += RegularCredits || 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // endo
 | 
					 | 
				
			||||||
    inventory.FusionPoints += FusionPoints || 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // syndicate
 | 
					 | 
				
			||||||
    data.AffiliationChanges?.forEach(affiliation => {
 | 
					 | 
				
			||||||
        const syndicate = inventory.Affiliations.find(x => x.Tag == affiliation.Tag);
 | 
					 | 
				
			||||||
        if (syndicate !== undefined) {
 | 
					 | 
				
			||||||
            syndicate.Standing =
 | 
					 | 
				
			||||||
                syndicate.Standing === undefined ? affiliation.Standing : syndicate.Standing + affiliation.Standing;
 | 
					 | 
				
			||||||
            syndicate.Title = syndicate.Title === undefined ? affiliation.Title : syndicate.Title + affiliation.Title;
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            inventory.Affiliations.push({
 | 
					 | 
				
			||||||
                Standing: affiliation.Standing,
 | 
					 | 
				
			||||||
                Title: affiliation.Title,
 | 
					 | 
				
			||||||
                Tag: affiliation.Tag,
 | 
					 | 
				
			||||||
                FreeFavorsEarned: [],
 | 
					 | 
				
			||||||
                FreeFavorsUsed: []
 | 
					 | 
				
			||||||
            });
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Gear XP
 | 
					    // Gear XP
 | 
				
			||||||
    equipmentKeys.forEach(key => addGearExpByCategory(inventory, data[key], key));
 | 
					    equipmentKeys.forEach(key => addGearExpByCategory(inventory, data[key], key));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Incarnon Challenges
 | 
					 | 
				
			||||||
    if (data.EvolutionProgress) {
 | 
					 | 
				
			||||||
        for (const evoProgress of data.EvolutionProgress) {
 | 
					 | 
				
			||||||
            const entry = inventory.EvolutionProgress
 | 
					 | 
				
			||||||
                ? inventory.EvolutionProgress.find(entry => entry.ItemType == evoProgress.ItemType)
 | 
					 | 
				
			||||||
                : undefined;
 | 
					 | 
				
			||||||
            if (entry) {
 | 
					 | 
				
			||||||
                entry.Progress = evoProgress.Progress;
 | 
					 | 
				
			||||||
                entry.Rank = evoProgress.Rank;
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                inventory.EvolutionProgress ??= [];
 | 
					 | 
				
			||||||
                inventory.EvolutionProgress.push(evoProgress);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // LastRegionPlayed
 | 
					 | 
				
			||||||
    if (data.LastRegionPlayed) {
 | 
					 | 
				
			||||||
        inventory.LastRegionPlayed = data.LastRegionPlayed;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // other
 | 
					    // other
 | 
				
			||||||
    addMods(inventory, RawUpgrades);
 | 
					    addMods(inventory, RawUpgrades);
 | 
				
			||||||
    addMiscItems(inventory, MiscItems);
 | 
					    addMiscItems(inventory, MiscItems);
 | 
				
			||||||
    addConsumables(inventory, Consumables);
 | 
					    addConsumables(inventory, Consumables);
 | 
				
			||||||
    addRecipes(inventory, Recipes);
 | 
					    addRecipes(inventory, Recipes);
 | 
				
			||||||
    addChallenges(inventory, ChallengeProgress);
 | 
					    addChallenges(inventory, ChallengeProgress);
 | 
				
			||||||
    addFusionTreasures(inventory, FusionTreasures);
 | 
					 | 
				
			||||||
    if (Missions) {
 | 
					    if (Missions) {
 | 
				
			||||||
        addMissionComplete(inventory, Missions);
 | 
					        addMissionComplete(inventory, Missions);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -833,7 +759,7 @@ export const upgradeMod = async (artifactsData: IArtifactsRequest, accountId: st
 | 
				
			|||||||
        parsedUpgradeFingerprint.lvl += LevelDiff;
 | 
					        parsedUpgradeFingerprint.lvl += LevelDiff;
 | 
				
			||||||
        const stringifiedUpgradeFingerprint = JSON.stringify(parsedUpgradeFingerprint);
 | 
					        const stringifiedUpgradeFingerprint = JSON.stringify(parsedUpgradeFingerprint);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let itemIndex = Upgrades.findIndex(upgrade => upgrade._id?.equals(ItemId!.$oid));
 | 
					        let itemIndex = Upgrades.findIndex(upgrade => upgrade._id?.equals(ItemId!.$id));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (itemIndex !== -1) {
 | 
					        if (itemIndex !== -1) {
 | 
				
			||||||
            Upgrades[itemIndex].UpgradeFingerprint = stringifiedUpgradeFingerprint;
 | 
					            Upgrades[itemIndex].UpgradeFingerprint = stringifiedUpgradeFingerprint;
 | 
				
			||||||
@ -858,7 +784,7 @@ export const upgradeMod = async (artifactsData: IArtifactsRequest, accountId: st
 | 
				
			|||||||
        inventory.FusionPoints -= FusionPointCost;
 | 
					        inventory.FusionPoints -= FusionPointCost;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const changedInventory = await inventory.save();
 | 
					        const changedInventory = await inventory.save();
 | 
				
			||||||
        const itemId = changedInventory.toJSON().Upgrades[itemIndex]?.ItemId?.$oid;
 | 
					        const itemId = changedInventory.toJSON().Upgrades[itemIndex]?.ItemId?.$id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!itemId) {
 | 
					        if (!itemId) {
 | 
				
			||||||
            throw new Error("Item Id not found in upgradeMod");
 | 
					            throw new Error("Item Id not found in upgradeMod");
 | 
				
			||||||
 | 
				
			|||||||
@ -73,22 +73,8 @@ const combineRewardAndLootInventory = (
 | 
				
			|||||||
    const missionCredits = lootInventory.RegularCredits || 0;
 | 
					    const missionCredits = lootInventory.RegularCredits || 0;
 | 
				
			||||||
    const creditsBonus = rewardInventory.RegularCredits || 0;
 | 
					    const creditsBonus = rewardInventory.RegularCredits || 0;
 | 
				
			||||||
    const totalCredits = missionCredits + creditsBonus;
 | 
					    const totalCredits = missionCredits + creditsBonus;
 | 
				
			||||||
    let FusionPoints = rewardInventory.FusionPoints || 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Discharge Endo picked up during the mission
 | 
					 | 
				
			||||||
    if (lootInventory.FusionBundles) {
 | 
					 | 
				
			||||||
        for (const fusionBundle of lootInventory.FusionBundles) {
 | 
					 | 
				
			||||||
            if (fusionBundle.ItemType in fusionBundles) {
 | 
					 | 
				
			||||||
                FusionPoints += fusionBundles[fusionBundle.ItemType] * fusionBundle.ItemCount;
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                logger.error(`unknown fusion bundle: ${fusionBundle.ItemType}`);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        lootInventory.FusionBundles = undefined;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    lootInventory.RegularCredits = totalCredits;
 | 
					    lootInventory.RegularCredits = totalCredits;
 | 
				
			||||||
    lootInventory.FusionPoints = FusionPoints;
 | 
					 | 
				
			||||||
    inventoryFields.forEach((field: IInventoryFieldType) => {
 | 
					    inventoryFields.forEach((field: IInventoryFieldType) => {
 | 
				
			||||||
        if (rewardInventory[field] && !lootInventory[field]) {
 | 
					        if (rewardInventory[field] && !lootInventory[field]) {
 | 
				
			||||||
            lootInventory[field] = [];
 | 
					            lootInventory[field] = [];
 | 
				
			||||||
@ -101,7 +87,6 @@ const combineRewardAndLootInventory = (
 | 
				
			|||||||
        TotalCredits: [totalCredits, totalCredits],
 | 
					        TotalCredits: [totalCredits, totalCredits],
 | 
				
			||||||
        CreditsBonus: [creditsBonus, creditsBonus],
 | 
					        CreditsBonus: [creditsBonus, creditsBonus],
 | 
				
			||||||
        MissionCredits: [missionCredits, missionCredits],
 | 
					        MissionCredits: [missionCredits, missionCredits],
 | 
				
			||||||
        FusionPoints: FusionPoints
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -107,14 +107,7 @@ const handleStoreItemAcquisition = async (
 | 
				
			|||||||
export const slotPurchaseNameToSlotName: SlotPurchase = {
 | 
					export const slotPurchaseNameToSlotName: SlotPurchase = {
 | 
				
			||||||
    SuitSlotItem: { name: "SuitBin", slotsPerPurchase: 1 },
 | 
					    SuitSlotItem: { name: "SuitBin", slotsPerPurchase: 1 },
 | 
				
			||||||
    TwoSentinelSlotItem: { name: "SentinelBin", slotsPerPurchase: 2 },
 | 
					    TwoSentinelSlotItem: { name: "SentinelBin", slotsPerPurchase: 2 },
 | 
				
			||||||
    TwoWeaponSlotItem: { name: "WeaponBin", slotsPerPurchase: 2 },
 | 
					    TwoWeaponSlotItem: { name: "WeaponBin", slotsPerPurchase: 2 }
 | 
				
			||||||
    SpaceSuitSlotItem: { name: "SpaceSuitBin", slotsPerPurchase: 1 },
 | 
					 | 
				
			||||||
    TwoSpaceWeaponSlotItem: { name: "SpaceWeaponBin", slotsPerPurchase: 2 },
 | 
					 | 
				
			||||||
    MechSlotItem: { name: "MechBin", slotsPerPurchase: 1 },
 | 
					 | 
				
			||||||
    TwoOperatorWeaponSlotItem: { name: "OperatorAmpBin", slotsPerPurchase: 2 },
 | 
					 | 
				
			||||||
    RandomModSlotItem: { name: "RandomModBin", slotsPerPurchase: 3 },
 | 
					 | 
				
			||||||
    TwoCrewShipSalvageSlotItem: { name: "CrewShipSalvageBin", slotsPerPurchase: 2 },
 | 
					 | 
				
			||||||
    CrewMemberSlotItem: { name: "CrewMemberBin", slotsPerPurchase: 1 }
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// // extra = everything above the base +2 slots (depending on slot type)
 | 
					// // extra = everything above the base +2 slots (depending on slot type)
 | 
				
			||||||
 | 
				
			|||||||
@ -34,6 +34,6 @@ export const startRecipe = async (recipeName: string, accountId: string) => {
 | 
				
			|||||||
    const newInventory = await inventory.save();
 | 
					    const newInventory = await inventory.save();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
        RecipeId: { $oid: newInventory.PendingRecipes[newInventory.PendingRecipes.length - 1]._id?.toString() }
 | 
					        RecipeId: { $id: newInventory.PendingRecipes[newInventory.PendingRecipes.length - 1]._id?.toString() }
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -50,7 +50,7 @@ export const handleInventoryItemConfigChange = async (
 | 
				
			|||||||
                    if (!loadout) {
 | 
					                    if (!loadout) {
 | 
				
			||||||
                        const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig;
 | 
					                        const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig;
 | 
				
			||||||
                        operatorLoadout.push({
 | 
					                        operatorLoadout.push({
 | 
				
			||||||
                            _id: ItemId.$oid,
 | 
					                            _id: ItemId.$id,
 | 
				
			||||||
                            ...loadoutConfigItemIdRemoved
 | 
					                            ...loadoutConfigItemIdRemoved
 | 
				
			||||||
                        });
 | 
					                        });
 | 
				
			||||||
                        continue;
 | 
					                        continue;
 | 
				
			||||||
@ -89,14 +89,14 @@ export const handleInventoryItemConfigChange = async (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                        const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig;
 | 
					                        const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig;
 | 
				
			||||||
                        const loadoutConfigDatabase: ILoadoutConfigDatabase = {
 | 
					                        const loadoutConfigDatabase: ILoadoutConfigDatabase = {
 | 
				
			||||||
                            _id: new Types.ObjectId(ItemId.$oid),
 | 
					                            _id: new Types.ObjectId(ItemId.$id),
 | 
				
			||||||
                            ...loadoutConfigItemIdRemoved
 | 
					                            ...loadoutConfigItemIdRemoved
 | 
				
			||||||
                        };
 | 
					                        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        // if no config with this id exists, create a new one
 | 
					                        // if no config with this id exists, create a new one
 | 
				
			||||||
                        if (!oldLoadoutConfig) {
 | 
					                        if (!oldLoadoutConfig) {
 | 
				
			||||||
                            //save the new object id and assign it for every ffff return at the end
 | 
					                            //save the new object id and assign it for every ffff return at the end
 | 
				
			||||||
                            if (ItemId.$oid === "ffffffffffffffffffffffff") {
 | 
					                            if (ItemId.$id === "ffffffffffffffffffffffff") {
 | 
				
			||||||
                                if (!newLoadoutId) {
 | 
					                                if (!newLoadoutId) {
 | 
				
			||||||
                                    newLoadoutId = new Types.ObjectId();
 | 
					                                    newLoadoutId = new Types.ObjectId();
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
export interface IOid {
 | 
					export interface IOid {
 | 
				
			||||||
    $oid: string;
 | 
					    $id: string;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface IMongoDate {
 | 
					export interface IMongoDate {
 | 
				
			||||||
 | 
				
			|||||||
@ -123,7 +123,6 @@ export interface IInventoryResponse {
 | 
				
			|||||||
    RewardSeed: number;
 | 
					    RewardSeed: number;
 | 
				
			||||||
    RegularCredits: number;
 | 
					    RegularCredits: number;
 | 
				
			||||||
    PremiumCredits: number;
 | 
					    PremiumCredits: number;
 | 
				
			||||||
    PremiumCreditsFree: number;
 | 
					 | 
				
			||||||
    FusionPoints: number;
 | 
					    FusionPoints: number;
 | 
				
			||||||
    SuitBin: ISlots;
 | 
					    SuitBin: ISlots;
 | 
				
			||||||
    WeaponBin: ISlots;
 | 
					    WeaponBin: ISlots;
 | 
				
			||||||
@ -134,14 +133,6 @@ export interface IInventoryResponse {
 | 
				
			|||||||
    PveBonusLoadoutBin: ISlots;
 | 
					    PveBonusLoadoutBin: ISlots;
 | 
				
			||||||
    RandomModBin: ISlots;
 | 
					    RandomModBin: ISlots;
 | 
				
			||||||
    MechBin: ISlots;
 | 
					    MechBin: ISlots;
 | 
				
			||||||
    CrewMemberBin: ISlots;
 | 
					 | 
				
			||||||
    OperatorAmpBin: ISlots;
 | 
					 | 
				
			||||||
    CrewShipSalvageBin: ISlots;
 | 
					 | 
				
			||||||
    TradesRemaining: number;
 | 
					 | 
				
			||||||
    DailyAffiliation: number;
 | 
					 | 
				
			||||||
    DailyAffiliationPvp: number;
 | 
					 | 
				
			||||||
    DailyAffiliationLibrary: number;
 | 
					 | 
				
			||||||
    DailyFocus: number;
 | 
					 | 
				
			||||||
    GiftsRemaining: number;
 | 
					    GiftsRemaining: number;
 | 
				
			||||||
    HandlerPoints: number;
 | 
					    HandlerPoints: number;
 | 
				
			||||||
    MiscItems: IMiscItem[];
 | 
					    MiscItems: IMiscItem[];
 | 
				
			||||||
 | 
				
			|||||||
@ -26,27 +26,14 @@ export type IBinChanges = {
 | 
				
			|||||||
export type SlotPurchaseName =
 | 
					export type SlotPurchaseName =
 | 
				
			||||||
    | "SuitSlotItem"
 | 
					    | "SuitSlotItem"
 | 
				
			||||||
    | "TwoSentinelSlotItem"
 | 
					    | "TwoSentinelSlotItem"
 | 
				
			||||||
    | "TwoWeaponSlotItem"
 | 
					    | "TwoWeaponSlotItem";
 | 
				
			||||||
    | "SpaceSuitSlotItem"
 | 
					 | 
				
			||||||
    | "TwoSpaceWeaponSlotItem"
 | 
					 | 
				
			||||||
    | "MechSlotItem"
 | 
					 | 
				
			||||||
    | "TwoOperatorWeaponSlotItem"
 | 
					 | 
				
			||||||
    | "RandomModSlotItem"
 | 
					 | 
				
			||||||
    | "TwoCrewShipSalvageSlotItem"
 | 
					 | 
				
			||||||
    | "CrewMemberSlotItem";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type SlotNames =
 | 
					export type SlotNames =
 | 
				
			||||||
    | "SuitBin"
 | 
					    | "SuitBin"
 | 
				
			||||||
    | "WeaponBin"
 | 
					    | "WeaponBin"
 | 
				
			||||||
    | "MechBin"
 | 
					    | "MechBin"
 | 
				
			||||||
    | "PveBonusLoadoutBin"
 | 
					    | "PveBonusLoadoutBin"
 | 
				
			||||||
    | "SentinelBin"
 | 
					    | "SentinelBin";
 | 
				
			||||||
    | "SpaceSuitBin"
 | 
					 | 
				
			||||||
    | "SpaceWeaponBin"
 | 
					 | 
				
			||||||
    | "OperatorAmpBin"
 | 
					 | 
				
			||||||
    | "RandomModBin"
 | 
					 | 
				
			||||||
    | "CrewShipSalvageBin"
 | 
					 | 
				
			||||||
    | "CrewMemberBin";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type SlotPurchase = {
 | 
					export type SlotPurchase = {
 | 
				
			||||||
    [P in SlotPurchaseName]: { name: SlotNames; slotsPerPurchase: number };
 | 
					    [P in SlotPurchaseName]: { name: SlotNames; slotsPerPurchase: number };
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "VendorInfo": {
 | 
					  "VendorInfo": {
 | 
				
			||||||
    "_id": { "$oid": "62695b0467e5d379750f9f75" },
 | 
					    "_id": { "$id": "62695b0467e5d379750f9f75" },
 | 
				
			||||||
    "TypeName": "/Lotus/Types/Game/VendorManifests/Zariman/ArchimedeanVendorManifest",
 | 
					    "TypeName": "/Lotus/Types/Game/VendorManifests/Zariman/ArchimedeanVendorManifest",
 | 
				
			||||||
    "ItemManifest": [
 | 
					    "ItemManifest": [
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -10,7 +10,7 @@
 | 
				
			|||||||
        "QuantityMultiplier": 1,
 | 
					        "QuantityMultiplier": 1,
 | 
				
			||||||
        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
				
			||||||
        "AllowMultipurchase": true,
 | 
					        "AllowMultipurchase": true,
 | 
				
			||||||
        "Id": { "$oid": "63ed01ef4c37f93d0b797826" }
 | 
					        "Id": { "$id": "63ed01ef4c37f93d0b797826" }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "StoreItem": "/Lotus/StoreItems/Types/Items/ShipDecos/VoidPlumeBOrnament",
 | 
					        "StoreItem": "/Lotus/StoreItems/Types/Items/ShipDecos/VoidPlumeBOrnament",
 | 
				
			||||||
@ -19,7 +19,7 @@
 | 
				
			|||||||
        "QuantityMultiplier": 1,
 | 
					        "QuantityMultiplier": 1,
 | 
				
			||||||
        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
				
			||||||
        "AllowMultipurchase": true,
 | 
					        "AllowMultipurchase": true,
 | 
				
			||||||
        "Id": { "$oid": "63ed01ef4c37f93d0b797827" }
 | 
					        "Id": { "$id": "63ed01ef4c37f93d0b797827" }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "StoreItem": "/Lotus/StoreItems/Types/Items/MiscItems/Kuva",
 | 
					        "StoreItem": "/Lotus/StoreItems/Types/Items/MiscItems/Kuva",
 | 
				
			||||||
@ -29,7 +29,7 @@
 | 
				
			|||||||
        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
				
			||||||
        "PurchaseQuantityLimit": 1,
 | 
					        "PurchaseQuantityLimit": 1,
 | 
				
			||||||
        "AllowMultipurchase": false,
 | 
					        "AllowMultipurchase": false,
 | 
				
			||||||
        "Id": { "$oid": "66664112af1177b5070ab882" }
 | 
					        "Id": { "$id": "66664112af1177b5070ab882" }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
    "PropertyTextHash": "DB7BF03C3FE6D0036A4DC30066A9A17E",
 | 
					    "PropertyTextHash": "DB7BF03C3FE6D0036A4DC30066A9A17E",
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "VendorInfo": {
 | 
					  "VendorInfo": {
 | 
				
			||||||
    "_id": {
 | 
					    "_id": {
 | 
				
			||||||
      "$oid": "598a090d9a4a313746fd1f24"
 | 
					      "$id": "598a090d9a4a313746fd1f24"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "TypeName": "/Lotus/Types/Game/VendorManifests/Ostron/MaskSalesmanManifest",
 | 
					    "TypeName": "/Lotus/Types/Game/VendorManifests/Ostron/MaskSalesmanManifest",
 | 
				
			||||||
    "ItemManifest": [
 | 
					    "ItemManifest": [
 | 
				
			||||||
@ -23,7 +23,7 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "AllowMultipurchase": true,
 | 
					        "AllowMultipurchase": true,
 | 
				
			||||||
        "Id": {
 | 
					        "Id": {
 | 
				
			||||||
          "$oid": "63ed01ef4c37f93d0b797674"
 | 
					          "$id": "63ed01ef4c37f93d0b797674"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -59,7 +59,7 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "AllowMultipurchase": true,
 | 
					        "AllowMultipurchase": true,
 | 
				
			||||||
        "Id": {
 | 
					        "Id": {
 | 
				
			||||||
          "$oid": "63ed01ef4c37f93d0b797675"
 | 
					          "$id": "63ed01ef4c37f93d0b797675"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -95,7 +95,7 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "AllowMultipurchase": true,
 | 
					        "AllowMultipurchase": true,
 | 
				
			||||||
        "Id": {
 | 
					        "Id": {
 | 
				
			||||||
          "$oid": "63ed01ef4c37f93d0b797676"
 | 
					          "$id": "63ed01ef4c37f93d0b797676"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -131,7 +131,7 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "AllowMultipurchase": true,
 | 
					        "AllowMultipurchase": true,
 | 
				
			||||||
        "Id": {
 | 
					        "Id": {
 | 
				
			||||||
          "$oid": "63ed01ef4c37f93d0b797677"
 | 
					          "$id": "63ed01ef4c37f93d0b797677"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -157,7 +157,7 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "AllowMultipurchase": true,
 | 
					        "AllowMultipurchase": true,
 | 
				
			||||||
        "Id": {
 | 
					        "Id": {
 | 
				
			||||||
          "$oid": "6651291214e90115b91b50a1"
 | 
					          "$id": "6651291214e90115b91b50a1"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -183,7 +183,7 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "AllowMultipurchase": true,
 | 
					        "AllowMultipurchase": true,
 | 
				
			||||||
        "Id": {
 | 
					        "Id": {
 | 
				
			||||||
          "$oid": "6651291214e90115b91b50a2"
 | 
					          "$id": "6651291214e90115b91b50a2"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -209,7 +209,7 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "AllowMultipurchase": true,
 | 
					        "AllowMultipurchase": true,
 | 
				
			||||||
        "Id": {
 | 
					        "Id": {
 | 
				
			||||||
          "$oid": "6651291214e90115b91b50a3"
 | 
					          "$id": "6651291214e90115b91b50a3"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -235,7 +235,7 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "AllowMultipurchase": true,
 | 
					        "AllowMultipurchase": true,
 | 
				
			||||||
        "Id": {
 | 
					        "Id": {
 | 
				
			||||||
          "$oid": "6651291214e90115b91b50a4"
 | 
					          "$id": "6651291214e90115b91b50a4"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -261,7 +261,7 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "AllowMultipurchase": true,
 | 
					        "AllowMultipurchase": true,
 | 
				
			||||||
        "Id": {
 | 
					        "Id": {
 | 
				
			||||||
          "$oid": "6651291214e90115b91b50a5"
 | 
					          "$id": "6651291214e90115b91b50a5"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -287,7 +287,7 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "AllowMultipurchase": true,
 | 
					        "AllowMultipurchase": true,
 | 
				
			||||||
        "Id": {
 | 
					        "Id": {
 | 
				
			||||||
          "$oid": "6651291214e90115b91b50a6"
 | 
					          "$id": "6651291214e90115b91b50a6"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "VendorInfo": {
 | 
					  "VendorInfo": {
 | 
				
			||||||
    "_id": { "$oid": "62a20ba667e5d3797540d831" },
 | 
					    "_id": { "$id": "62a20ba667e5d3797540d831" },
 | 
				
			||||||
    "TypeName": "/Lotus/Types/Game/VendorManifests/Zariman/ZarimanCommisionsManifestArchimedean",
 | 
					    "TypeName": "/Lotus/Types/Game/VendorManifests/Zariman/ZarimanCommisionsManifestArchimedean",
 | 
				
			||||||
    "ItemManifest": [
 | 
					    "ItemManifest": [
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -14,7 +14,7 @@
 | 
				
			|||||||
        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
				
			||||||
        "PurchaseQuantityLimit": 1,
 | 
					        "PurchaseQuantityLimit": 1,
 | 
				
			||||||
        "AllowMultipurchase": false,
 | 
					        "AllowMultipurchase": false,
 | 
				
			||||||
        "Id": { "$oid": "6678b612aa3d8ee5c2597299" }
 | 
					        "Id": { "$id": "6678b612aa3d8ee5c2597299" }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskD",
 | 
					        "StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskD",
 | 
				
			||||||
@ -27,7 +27,7 @@
 | 
				
			|||||||
        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
				
			||||||
        "PurchaseQuantityLimit": 1,
 | 
					        "PurchaseQuantityLimit": 1,
 | 
				
			||||||
        "AllowMultipurchase": false,
 | 
					        "AllowMultipurchase": false,
 | 
				
			||||||
        "Id": { "$oid": "6678b612aa3d8ee5c259729a" }
 | 
					        "Id": { "$id": "6678b612aa3d8ee5c259729a" }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskC",
 | 
					        "StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskC",
 | 
				
			||||||
@ -40,7 +40,7 @@
 | 
				
			|||||||
        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
				
			||||||
        "PurchaseQuantityLimit": 1,
 | 
					        "PurchaseQuantityLimit": 1,
 | 
				
			||||||
        "AllowMultipurchase": false,
 | 
					        "AllowMultipurchase": false,
 | 
				
			||||||
        "Id": { "$oid": "6678b612aa3d8ee5c259729b" }
 | 
					        "Id": { "$id": "6678b612aa3d8ee5c259729b" }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskB",
 | 
					        "StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskB",
 | 
				
			||||||
@ -53,7 +53,7 @@
 | 
				
			|||||||
        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
				
			||||||
        "PurchaseQuantityLimit": 1,
 | 
					        "PurchaseQuantityLimit": 1,
 | 
				
			||||||
        "AllowMultipurchase": false,
 | 
					        "AllowMultipurchase": false,
 | 
				
			||||||
        "Id": { "$oid": "6678b612aa3d8ee5c259729c" }
 | 
					        "Id": { "$id": "6678b612aa3d8ee5c259729c" }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskA",
 | 
					        "StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskA",
 | 
				
			||||||
@ -66,7 +66,7 @@
 | 
				
			|||||||
        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999000000" } },
 | 
				
			||||||
        "PurchaseQuantityLimit": 1,
 | 
					        "PurchaseQuantityLimit": 1,
 | 
				
			||||||
        "AllowMultipurchase": false,
 | 
					        "AllowMultipurchase": false,
 | 
				
			||||||
        "Id": { "$oid": "6678b612aa3d8ee5c259729d" }
 | 
					        "Id": { "$id": "6678b612aa3d8ee5c259729d" }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
    "PropertyTextHash": "F43F0ED811985EEF856970A8342EF322",
 | 
					    "PropertyTextHash": "F43F0ED811985EEF856970A8342EF322",
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
  "DrifterMelee": [
 | 
					  "DrifterMelee": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords",
 | 
					      "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords",
 | 
				
			||||||
      "ItemId": { "$oid": "removed" }
 | 
					      "ItemId": { "$id": "removed" }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "FusionPoints": 0,
 | 
					  "FusionPoints": 0,
 | 
				
			||||||
@ -23,7 +23,7 @@
 | 
				
			|||||||
  "SpaceWeaponBin": { "Slots": 4 },
 | 
					  "SpaceWeaponBin": { "Slots": 4 },
 | 
				
			||||||
  "SuitBin": { "Slots": 2 },
 | 
					  "SuitBin": { "Slots": 2 },
 | 
				
			||||||
  "WeaponBin": { "Slots": 8 },
 | 
					  "WeaponBin": { "Slots": 8 },
 | 
				
			||||||
  "LastInventorySync": { "$oid": "removed" },
 | 
					  "LastInventorySync": { "$id": "removed" },
 | 
				
			||||||
  "NextRefill": { "$date": { "$numberLong": "removed" } },
 | 
					  "NextRefill": { "$date": { "$numberLong": "removed" } },
 | 
				
			||||||
  "ActiveLandscapeTraps": [],
 | 
					  "ActiveLandscapeTraps": [],
 | 
				
			||||||
  "ChallengeProgress": [],
 | 
					  "ChallengeProgress": [],
 | 
				
			||||||
@ -59,7 +59,7 @@
 | 
				
			|||||||
  "Scoops": [],
 | 
					  "Scoops": [],
 | 
				
			||||||
  "Sentinels": [],
 | 
					  "Sentinels": [],
 | 
				
			||||||
  "SentinelWeapons": [],
 | 
					  "SentinelWeapons": [],
 | 
				
			||||||
  "Ships": [{ "ItemType": "/Lotus/Types/Items/Ships/DefaultShip", "ItemId": { "$oid": "123123" } }],
 | 
					  "Ships": [{ "ItemType": "/Lotus/Types/Items/Ships/DefaultShip", "ItemId": { "$id": "123123" } }],
 | 
				
			||||||
  "SpaceGuns": [],
 | 
					  "SpaceGuns": [],
 | 
				
			||||||
  "SpaceMelee": [],
 | 
					  "SpaceMelee": [],
 | 
				
			||||||
  "SpaceSuits": [],
 | 
					  "SpaceSuits": [],
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,7 @@
 | 
				
			|||||||
  "RewardSeed": -5604904486637265640,
 | 
					  "RewardSeed": -5604904486637265640,
 | 
				
			||||||
  "CrewMemberBin": { "Slots": 3 },
 | 
					  "CrewMemberBin": { "Slots": 3 },
 | 
				
			||||||
  "CrewShipSalvageBin": { "Slots": 8 },
 | 
					  "CrewShipSalvageBin": { "Slots": 8 },
 | 
				
			||||||
  "DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$oid": "647bb619e15fa43f0ee4b1b1" } }],
 | 
					  "DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$id": "647bb619e15fa43f0ee4b1b1" } }],
 | 
				
			||||||
  "FusionPoints": 0,
 | 
					  "FusionPoints": 0,
 | 
				
			||||||
  "MechBin": { "Slots": 4 },
 | 
					  "MechBin": { "Slots": 4 },
 | 
				
			||||||
  "OperatorAmpBin": { "Slots": 8 },
 | 
					  "OperatorAmpBin": { "Slots": 8 },
 | 
				
			||||||
@ -18,7 +18,7 @@
 | 
				
			|||||||
  "SpaceWeaponBin": { "Slots": 4 },
 | 
					  "SpaceWeaponBin": { "Slots": 4 },
 | 
				
			||||||
  "SuitBin": { "Slots": 2 },
 | 
					  "SuitBin": { "Slots": 2 },
 | 
				
			||||||
  "WeaponBin": { "Slots": 8 },
 | 
					  "WeaponBin": { "Slots": 8 },
 | 
				
			||||||
  "LastInventorySync": { "$oid": "647bb5d79f963c9d24668257" },
 | 
					  "LastInventorySync": { "$id": "647bb5d79f963c9d24668257" },
 | 
				
			||||||
  "NextRefill": { "$date": { "$numberLong": "1685829131" } },
 | 
					  "NextRefill": { "$date": { "$numberLong": "1685829131" } },
 | 
				
			||||||
  "ActiveLandscapeTraps": [],
 | 
					  "ActiveLandscapeTraps": [],
 | 
				
			||||||
  "ChallengeProgress": [],
 | 
					  "ChallengeProgress": [],
 | 
				
			||||||
 | 
				
			|||||||
@ -8,22 +8,22 @@
 | 
				
			|||||||
  "SpaceWeaponBin": { "Slots": 4 },
 | 
					  "SpaceWeaponBin": { "Slots": 4 },
 | 
				
			||||||
  "SuitBin": { "Slots": 1 },
 | 
					  "SuitBin": { "Slots": 1 },
 | 
				
			||||||
  "WeaponBin": { "Slots": 5 },
 | 
					  "WeaponBin": { "Slots": 5 },
 | 
				
			||||||
  "Recipes": [{ "ItemCount": 1, "ItemType": "/Lotus/Types/Recipes/Weapons/BoltonfaBlueprint" }],
 | 
					  "Recipes": [],
 | 
				
			||||||
  "ChallengeProgress": [{ "Progress": 2, "Name": "EMGetKills" }],
 | 
					  "ChallengeProgress": [{ "Progress": 2, "Name": "EMGetKills" }],
 | 
				
			||||||
  "Consumables": [{ "ItemCount": 1, "ItemType": "/Lotus/Types/Restoratives/LisetAutoHack" }],
 | 
					  "Consumables": [{ "ItemCount": 1, "ItemType": "/Lotus/Types/Restoratives/Cipher" }],
 | 
				
			||||||
  "FlavourItems": [
 | 
					  "FlavourItems": [
 | 
				
			||||||
    { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem1" },
 | 
					    { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem1" },
 | 
				
			||||||
    { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem2" },
 | 
					    { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem2" },
 | 
				
			||||||
    { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem3" },
 | 
					    { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem3" },
 | 
				
			||||||
    { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem4" }
 | 
					    { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem4" }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "LongGuns": [{ "ItemType": "/Lotus/Weapons/Tenno/Bows/HuntingBow", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
 | 
					  "LongGuns": [{ "ItemType": "/Lotus/Weapons/Tenno/Bows/HuntingBow", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$id": "647bd27cf856530b4f3bf343" } }],
 | 
				
			||||||
  "Melee": [{ "ItemType": "/Lotus/Weapons/Tenno/Melee/LongSword/LongSword", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
 | 
					  "Melee": [{ "ItemType": "/Lotus/Weapons/Tenno/Melee/LongSword/LongSword", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$id": "647bd27cf856530b4f3bf343" } }],
 | 
				
			||||||
  "Pistols": [{ "ItemType": "/Lotus/Weapons/Tenno/Pistol/TutorialPistol", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
 | 
					  "Pistols": [{ "ItemType": "/Lotus/Weapons/Tenno/Pistol/Pistol", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$id": "647bd27cf856530b4f3bf343" } }],
 | 
				
			||||||
  "RawUpgrades": [{ "ItemCount": 1, "LastAdded": { "$oid": "6450f9bfe0714a4d6703f05f" }, "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarShieldMaxMod" }],
 | 
					  "RawUpgrades": [{ "ItemCount": 1, "LastAdded": { "$id": "6450f9bfe0714a4d6703f05f" }, "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarShieldMaxMod" }],
 | 
				
			||||||
  "ReceivedStartingGear": true,
 | 
					  "ReceivedStartingGear": true,
 | 
				
			||||||
  "Suits": [{ "ItemType": "/Lotus/Powersuits/Volt/Volt", "XP": 0, "Configs": [{}, {}, {}], "UpgradeVer": 101, "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
 | 
					  "Suits": [{ "ItemType": "/Lotus/Powersuits/Volt/Volt", "XP": 0, "Configs": [{}, {}, {}], "UpgradeVer": 101, "ItemId": { "$id": "647bd27cf856530b4f3bf343" } }],
 | 
				
			||||||
  "WeaponSkins": [{ "ItemType": "/Lotus/Upgrades/Skins/Volt/VoltHelmet", "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
 | 
					  "WeaponSkins": [{ "ItemType": "/Lotus/Upgrades/Skins/Volt/VoltHelmet", "ItemId": { "$id": "647bd27cf856530b4f3bf343" } }],
 | 
				
			||||||
  "PendingRecipes": [],
 | 
					  "PendingRecipes": [],
 | 
				
			||||||
  "TrainingDate": 0,
 | 
					  "TrainingDate": 0,
 | 
				
			||||||
  "PlayerLevel": 0,
 | 
					  "PlayerLevel": 0,
 | 
				
			||||||
 | 
				
			|||||||
@ -23,7 +23,7 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "Sorties": [
 | 
					  "Sorties": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4c7d4d932c97c0a3acd7" },
 | 
					      "_id": { "$id": "663a4c7d4d932c97c0a3acd7" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097600000" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097600000" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "1715184000000" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "1715184000000" } },
 | 
				
			||||||
      "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards",
 | 
					      "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards",
 | 
				
			||||||
@ -40,7 +40,7 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "LiteSorties": [
 | 
					  "LiteSorties": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663819fd1cec9ebe9d83a06e" },
 | 
					      "_id": { "$id": "663819fd1cec9ebe9d83a06e" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1714953600000" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1714953600000" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "1715558400000" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "1715558400000" } },
 | 
				
			||||||
      "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards",
 | 
					      "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards",
 | 
				
			||||||
@ -55,7 +55,7 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "SyndicateMissions": [
 | 
					  "SyndicateMissions": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48049" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48049" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "ArbitersSyndicate",
 | 
					      "Tag": "ArbitersSyndicate",
 | 
				
			||||||
@ -63,7 +63,7 @@
 | 
				
			|||||||
      "Nodes": ["SolNode223", "SolNode89", "SolNode146", "SolNode212", "SolNode167", "SolNode48", "SolNode78"]
 | 
					      "Nodes": ["SolNode223", "SolNode89", "SolNode146", "SolNode212", "SolNode167", "SolNode48", "SolNode78"]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa4804a" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa4804a" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "CephalonSudaSyndicate",
 | 
					      "Tag": "CephalonSudaSyndicate",
 | 
				
			||||||
@ -71,7 +71,7 @@
 | 
				
			|||||||
      "Nodes": ["SolNode36", "SolNode59", "SettlementNode12", "SolNode61", "SolNode12", "SolNode138", "SolNode72"]
 | 
					      "Nodes": ["SolNode36", "SolNode59", "SettlementNode12", "SolNode61", "SolNode12", "SolNode138", "SolNode72"]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa4804c" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa4804c" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "EventSyndicate",
 | 
					      "Tag": "EventSyndicate",
 | 
				
			||||||
@ -79,7 +79,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa4804b" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa4804b" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "NecraloidSyndicate",
 | 
					      "Tag": "NecraloidSyndicate",
 | 
				
			||||||
@ -87,7 +87,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa4804d" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa4804d" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "KahlSyndicate",
 | 
					      "Tag": "KahlSyndicate",
 | 
				
			||||||
@ -95,7 +95,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa4804e" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa4804e" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "NewLokaSyndicate",
 | 
					      "Tag": "NewLokaSyndicate",
 | 
				
			||||||
@ -103,7 +103,7 @@
 | 
				
			|||||||
      "Nodes": ["SolNode101", "SolNode224", "SolNode205", "SettlementNode2", "SolNode171", "SolNode188", "SolNode75"]
 | 
					      "Nodes": ["SolNode101", "SolNode224", "SolNode205", "SettlementNode2", "SolNode171", "SolNode188", "SolNode75"]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa4804f" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa4804f" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "QuillsSyndicate",
 | 
					      "Tag": "QuillsSyndicate",
 | 
				
			||||||
@ -111,7 +111,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48050" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48050" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "PerrinSyndicate",
 | 
					      "Tag": "PerrinSyndicate",
 | 
				
			||||||
@ -119,7 +119,7 @@
 | 
				
			|||||||
      "Nodes": ["SolNode39", "SolNode14", "SolNode203", "SolNode100", "SolNode130", "SolNode64", "SettlementNode15"]
 | 
					      "Nodes": ["SolNode39", "SolNode14", "SolNode203", "SolNode100", "SolNode130", "SolNode64", "SettlementNode15"]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48052" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48052" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegion3Syndicate",
 | 
					      "Tag": "RadioLegion3Syndicate",
 | 
				
			||||||
@ -127,7 +127,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48051" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48051" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegion2Syndicate",
 | 
					      "Tag": "RadioLegion2Syndicate",
 | 
				
			||||||
@ -135,7 +135,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48053" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48053" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegionIntermission10Syndicate",
 | 
					      "Tag": "RadioLegionIntermission10Syndicate",
 | 
				
			||||||
@ -143,7 +143,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48057" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48057" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegionIntermission5Syndicate",
 | 
					      "Tag": "RadioLegionIntermission5Syndicate",
 | 
				
			||||||
@ -151,7 +151,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48055" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48055" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegionIntermission3Syndicate",
 | 
					      "Tag": "RadioLegionIntermission3Syndicate",
 | 
				
			||||||
@ -159,7 +159,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48056" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48056" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegionIntermission4Syndicate",
 | 
					      "Tag": "RadioLegionIntermission4Syndicate",
 | 
				
			||||||
@ -167,7 +167,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48054" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48054" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegionIntermission2Syndicate",
 | 
					      "Tag": "RadioLegionIntermission2Syndicate",
 | 
				
			||||||
@ -175,7 +175,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48058" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48058" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegionIntermission6Syndicate",
 | 
					      "Tag": "RadioLegionIntermission6Syndicate",
 | 
				
			||||||
@ -183,7 +183,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa4805c" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa4805c" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegionIntermissionSyndicate",
 | 
					      "Tag": "RadioLegionIntermissionSyndicate",
 | 
				
			||||||
@ -191,7 +191,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa4805a" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa4805a" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegionIntermission8Syndicate",
 | 
					      "Tag": "RadioLegionIntermission8Syndicate",
 | 
				
			||||||
@ -199,7 +199,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa4805b" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa4805b" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegionIntermission9Syndicate",
 | 
					      "Tag": "RadioLegionIntermission9Syndicate",
 | 
				
			||||||
@ -207,7 +207,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48059" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48059" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegionIntermission7Syndicate",
 | 
					      "Tag": "RadioLegionIntermission7Syndicate",
 | 
				
			||||||
@ -215,7 +215,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa4805d" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa4805d" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RadioLegionSyndicate",
 | 
					      "Tag": "RadioLegionSyndicate",
 | 
				
			||||||
@ -223,7 +223,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa4805f" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa4805f" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "VentKidsSyndicate",
 | 
					      "Tag": "VentKidsSyndicate",
 | 
				
			||||||
@ -231,7 +231,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa4805e" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa4805e" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "RedVeilSyndicate",
 | 
					      "Tag": "RedVeilSyndicate",
 | 
				
			||||||
@ -239,7 +239,7 @@
 | 
				
			|||||||
      "Nodes": ["SolNode226", "SolNode79", "SolNode216", "SettlementNode11", "SolNode56", "SolNode41", "SolNode23"]
 | 
					      "Nodes": ["SolNode226", "SolNode79", "SolNode216", "SettlementNode11", "SolNode56", "SolNode41", "SolNode23"]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48060" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48060" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "VoxSyndicate",
 | 
					      "Tag": "VoxSyndicate",
 | 
				
			||||||
@ -247,7 +247,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a4fc5ba6f84724fa48061" },
 | 
					      "_id": { "$id": "663a4fc5ba6f84724fa48061" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715097541439" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "SteelMeridianSyndicate",
 | 
					      "Tag": "SteelMeridianSyndicate",
 | 
				
			||||||
@ -255,7 +255,7 @@
 | 
				
			|||||||
      "Nodes": ["SolNode27", "SolNode107", "SolNode214", "SettlementNode1", "SolNode177", "SolNode141", "SolNode408"]
 | 
					      "Nodes": ["SolNode27", "SolNode107", "SolNode214", "SettlementNode1", "SolNode177", "SolNode141", "SolNode408"]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a71c80000000000000002" },
 | 
					      "_id": { "$id": "663a71c80000000000000002" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715106248403" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715106248403" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "EntratiSyndicate",
 | 
					      "Tag": "EntratiSyndicate",
 | 
				
			||||||
@ -341,7 +341,7 @@
 | 
				
			|||||||
      ]
 | 
					      ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a71c80000000000000004" },
 | 
					      "_id": { "$id": "663a71c80000000000000004" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715106248403" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715106248403" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "EntratiLabSyndicate",
 | 
					      "Tag": "EntratiLabSyndicate",
 | 
				
			||||||
@ -349,7 +349,7 @@
 | 
				
			|||||||
      "Nodes": []
 | 
					      "Nodes": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a71c80000000000000008" },
 | 
					      "_id": { "$id": "663a71c80000000000000008" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715106248403" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715106248403" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "CetusSyndicate",
 | 
					      "Tag": "CetusSyndicate",
 | 
				
			||||||
@ -415,7 +415,7 @@
 | 
				
			|||||||
      ]
 | 
					      ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a71c80000000000000025" },
 | 
					      "_id": { "$id": "663a71c80000000000000025" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715106248403" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715106248403" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "SolarisSyndicate",
 | 
					      "Tag": "SolarisSyndicate",
 | 
				
			||||||
@ -481,7 +481,7 @@
 | 
				
			|||||||
      ]
 | 
					      ]
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a71c80000000000000029" },
 | 
					      "_id": { "$id": "663a71c80000000000000029" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715106248403" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715106248403" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Tag": "ZarimanSyndicate",
 | 
					      "Tag": "ZarimanSyndicate",
 | 
				
			||||||
@ -491,7 +491,7 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "ActiveMissions": [
 | 
					  "ActiveMissions": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a7509d93367863785932d" },
 | 
					      "_id": { "$id": "663a7509d93367863785932d" },
 | 
				
			||||||
      "Region": 15,
 | 
					      "Region": 15,
 | 
				
			||||||
      "Seed": 80795,
 | 
					      "Seed": 80795,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715107081517" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715107081517" } },
 | 
				
			||||||
@ -502,7 +502,7 @@
 | 
				
			|||||||
      "Hard": true
 | 
					      "Hard": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a75f959a5964cadb39879" },
 | 
					      "_id": { "$id": "663a75f959a5964cadb39879" },
 | 
				
			||||||
      "Region": 19,
 | 
					      "Region": 19,
 | 
				
			||||||
      "Seed": 32067,
 | 
					      "Seed": 32067,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715107321237" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715107321237" } },
 | 
				
			||||||
@ -513,7 +513,7 @@
 | 
				
			|||||||
      "Hard": true
 | 
					      "Hard": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a779d3e347839ff301814" },
 | 
					      "_id": { "$id": "663a779d3e347839ff301814" },
 | 
				
			||||||
      "Region": 7,
 | 
					      "Region": 7,
 | 
				
			||||||
      "Seed": 51739,
 | 
					      "Seed": 51739,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715107741454" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715107741454" } },
 | 
				
			||||||
@ -523,7 +523,7 @@
 | 
				
			|||||||
      "Modifier": "VoidT3"
 | 
					      "Modifier": "VoidT3"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a77d916c199f4644ee67d" },
 | 
					      "_id": { "$id": "663a77d916c199f4644ee67d" },
 | 
				
			||||||
      "Region": 17,
 | 
					      "Region": 17,
 | 
				
			||||||
      "Seed": 61179,
 | 
					      "Seed": 61179,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715107801647" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715107801647" } },
 | 
				
			||||||
@ -533,7 +533,7 @@
 | 
				
			|||||||
      "Modifier": "VoidT6"
 | 
					      "Modifier": "VoidT6"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a78c98a609b49b8410726" },
 | 
					      "_id": { "$id": "663a78c98a609b49b8410726" },
 | 
				
			||||||
      "Region": 3,
 | 
					      "Region": 3,
 | 
				
			||||||
      "Seed": 9520,
 | 
					      "Seed": 9520,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715108041501" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715108041501" } },
 | 
				
			||||||
@ -544,7 +544,7 @@
 | 
				
			|||||||
      "Hard": true
 | 
					      "Hard": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a7df15eeabaac79b0a061" },
 | 
					      "_id": { "$id": "663a7df15eeabaac79b0a061" },
 | 
				
			||||||
      "Region": 6,
 | 
					      "Region": 6,
 | 
				
			||||||
      "Seed": 48861,
 | 
					      "Seed": 48861,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715109361974" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715109361974" } },
 | 
				
			||||||
@ -555,7 +555,7 @@
 | 
				
			|||||||
      "Hard": true
 | 
					      "Hard": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a7df25eeabaac79b0a062" },
 | 
					      "_id": { "$id": "663a7df25eeabaac79b0a062" },
 | 
				
			||||||
      "Region": 5,
 | 
					      "Region": 5,
 | 
				
			||||||
      "Seed": 13550,
 | 
					      "Seed": 13550,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715109361974" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715109361974" } },
 | 
				
			||||||
@ -566,7 +566,7 @@
 | 
				
			|||||||
      "Hard": true
 | 
					      "Hard": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a83cdec0d5181435f1324" },
 | 
					      "_id": { "$id": "663a83cdec0d5181435f1324" },
 | 
				
			||||||
      "Region": 19,
 | 
					      "Region": 19,
 | 
				
			||||||
      "Seed": 39392,
 | 
					      "Seed": 39392,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715110861506" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715110861506" } },
 | 
				
			||||||
@ -576,7 +576,7 @@
 | 
				
			|||||||
      "Modifier": "VoidT5"
 | 
					      "Modifier": "VoidT5"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a83cdec0d5181435f1325" },
 | 
					      "_id": { "$id": "663a83cdec0d5181435f1325" },
 | 
				
			||||||
      "Region": 19,
 | 
					      "Region": 19,
 | 
				
			||||||
      "Seed": 88668,
 | 
					      "Seed": 88668,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715110861506" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715110861506" } },
 | 
				
			||||||
@ -586,7 +586,7 @@
 | 
				
			|||||||
      "Modifier": "VoidT5"
 | 
					      "Modifier": "VoidT5"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a83cdec0d5181435f1326" },
 | 
					      "_id": { "$id": "663a83cdec0d5181435f1326" },
 | 
				
			||||||
      "Region": 19,
 | 
					      "Region": 19,
 | 
				
			||||||
      "Seed": 73823,
 | 
					      "Seed": 73823,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715110861506" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715110861506" } },
 | 
				
			||||||
@ -596,7 +596,7 @@
 | 
				
			|||||||
      "Modifier": "VoidT5"
 | 
					      "Modifier": "VoidT5"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a878d23d1514873170466" },
 | 
					      "_id": { "$id": "663a878d23d1514873170466" },
 | 
				
			||||||
      "Region": 9,
 | 
					      "Region": 9,
 | 
				
			||||||
      "Seed": 88696,
 | 
					      "Seed": 88696,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715111821951" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715111821951" } },
 | 
				
			||||||
@ -607,7 +607,7 @@
 | 
				
			|||||||
      "Hard": true
 | 
					      "Hard": true
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a887d4903098c10992fe6" },
 | 
					      "_id": { "$id": "663a887d4903098c10992fe6" },
 | 
				
			||||||
      "Region": 6,
 | 
					      "Region": 6,
 | 
				
			||||||
      "Seed": 66337,
 | 
					      "Seed": 66337,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715112061729" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715112061729" } },
 | 
				
			||||||
@ -617,7 +617,7 @@
 | 
				
			|||||||
      "Modifier": "VoidT2"
 | 
					      "Modifier": "VoidT2"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a887d4903098c10992fe7" },
 | 
					      "_id": { "$id": "663a887d4903098c10992fe7" },
 | 
				
			||||||
      "Region": 10,
 | 
					      "Region": 10,
 | 
				
			||||||
      "Seed": 5135,
 | 
					      "Seed": 5135,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715112061729" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715112061729" } },
 | 
				
			||||||
@ -627,7 +627,7 @@
 | 
				
			|||||||
      "Modifier": "VoidT2"
 | 
					      "Modifier": "VoidT2"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a8931586c301b1fbe63d3" },
 | 
					      "_id": { "$id": "663a8931586c301b1fbe63d3" },
 | 
				
			||||||
      "Region": 15,
 | 
					      "Region": 15,
 | 
				
			||||||
      "Seed": 32180,
 | 
					      "Seed": 32180,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715112241196" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715112241196" } },
 | 
				
			||||||
@ -637,7 +637,7 @@
 | 
				
			|||||||
      "Modifier": "VoidT4"
 | 
					      "Modifier": "VoidT4"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a8931586c301b1fbe63d4" },
 | 
					      "_id": { "$id": "663a8931586c301b1fbe63d4" },
 | 
				
			||||||
      "Region": 12,
 | 
					      "Region": 12,
 | 
				
			||||||
      "Seed": 22521,
 | 
					      "Seed": 22521,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715112241196" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715112241196" } },
 | 
				
			||||||
@ -647,7 +647,7 @@
 | 
				
			|||||||
      "Modifier": "VoidT4"
 | 
					      "Modifier": "VoidT4"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a8931586c301b1fbe63d5" },
 | 
					      "_id": { "$id": "663a8931586c301b1fbe63d5" },
 | 
				
			||||||
      "Region": 2,
 | 
					      "Region": 2,
 | 
				
			||||||
      "Seed": 28500,
 | 
					      "Seed": 28500,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715112241196" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715112241196" } },
 | 
				
			||||||
@ -657,7 +657,7 @@
 | 
				
			|||||||
      "Modifier": "VoidT1"
 | 
					      "Modifier": "VoidT1"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a8931586c301b1fbe63d6" },
 | 
					      "_id": { "$id": "663a8931586c301b1fbe63d6" },
 | 
				
			||||||
      "Region": 3,
 | 
					      "Region": 3,
 | 
				
			||||||
      "Seed": 24747,
 | 
					      "Seed": 24747,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715112241196" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715112241196" } },
 | 
				
			||||||
@ -667,7 +667,7 @@
 | 
				
			|||||||
      "Modifier": "VoidT1"
 | 
					      "Modifier": "VoidT1"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a8931586c301b1fbe63d7" },
 | 
					      "_id": { "$id": "663a8931586c301b1fbe63d7" },
 | 
				
			||||||
      "Region": 17,
 | 
					      "Region": 17,
 | 
				
			||||||
      "Seed": 63914,
 | 
					      "Seed": 63914,
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715112241196" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715112241196" } },
 | 
				
			||||||
@ -679,19 +679,19 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "NodeOverrides": [
 | 
					  "NodeOverrides": [
 | 
				
			||||||
    { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true },
 | 
					    { "_id": { "$id": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true },
 | 
				
			||||||
    { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true },
 | 
					    { "_id": { "$id": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true },
 | 
				
			||||||
    { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true },
 | 
					    { "_id": { "$id": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true },
 | 
				
			||||||
    { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9969639 },
 | 
					    { "_id": { "$id": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9969639 },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "5b8817c2bd4f253264d6aa91" },
 | 
					      "_id": { "$id": "5b8817c2bd4f253264d6aa91" },
 | 
				
			||||||
      "Node": "EarthHUB",
 | 
					      "Node": "EarthHUB",
 | 
				
			||||||
      "Hide": false,
 | 
					      "Hide": false,
 | 
				
			||||||
      "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubTwoB",
 | 
					      "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubTwoB",
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1535646600000" } }
 | 
					      "Activation": { "$date": { "$numberLong": "1535646600000" } }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "5d24d1f674491d51f8d44473" },
 | 
					      "_id": { "$id": "5d24d1f674491d51f8d44473" },
 | 
				
			||||||
      "Node": "MercuryHUB",
 | 
					      "Node": "MercuryHUB",
 | 
				
			||||||
      "Hide": true,
 | 
					      "Hide": true,
 | 
				
			||||||
      "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid",
 | 
					      "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid",
 | 
				
			||||||
@ -700,7 +700,7 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "VoidTraders": [
 | 
					  "VoidTraders": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" },
 | 
					      "_id": { "$id": "5d1e07a0a38e4a4fdd7cefca" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "0" } },
 | 
					      "Activation": { "$date": { "$numberLong": "0" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Character": "Baro'Ki Teel",
 | 
					      "Character": "Baro'Ki Teel",
 | 
				
			||||||
@ -736,7 +736,7 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "PrimeVaultTraders": [
 | 
					  "PrimeVaultTraders": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "631f8c4ac36af423770eaa97" },
 | 
					      "_id": { "$id": "631f8c4ac36af423770eaa97" },
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1712858400000" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1712858400000" } },
 | 
				
			||||||
      "InitialStartDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "InitialStartDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "Node": "TradeHUB1",
 | 
					      "Node": "TradeHUB1",
 | 
				
			||||||
@ -896,42 +896,42 @@
 | 
				
			|||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "VoidStorms": [
 | 
					  "VoidStorms": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a7581ced28e18f694b550" },
 | 
					      "_id": { "$id": "663a7581ced28e18f694b550" },
 | 
				
			||||||
      "Node": "CrewBattleNode519",
 | 
					      "Node": "CrewBattleNode519",
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715109601821" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715109601821" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "ActiveMissionTier": "VoidT1"
 | 
					      "ActiveMissionTier": "VoidT1"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a7581ced28e18f694b551" },
 | 
					      "_id": { "$id": "663a7581ced28e18f694b551" },
 | 
				
			||||||
      "Node": "CrewBattleNode515",
 | 
					      "Node": "CrewBattleNode515",
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715109601825" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715109601825" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "ActiveMissionTier": "VoidT1"
 | 
					      "ActiveMissionTier": "VoidT1"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a7581ced28e18f694b554" },
 | 
					      "_id": { "$id": "663a7581ced28e18f694b554" },
 | 
				
			||||||
      "Node": "CrewBattleNode536",
 | 
					      "Node": "CrewBattleNode536",
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715109601832" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715109601832" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "ActiveMissionTier": "VoidT4"
 | 
					      "ActiveMissionTier": "VoidT4"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a7581ced28e18f694b555" },
 | 
					      "_id": { "$id": "663a7581ced28e18f694b555" },
 | 
				
			||||||
      "Node": "CrewBattleNode539",
 | 
					      "Node": "CrewBattleNode539",
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715109601834" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715109601834" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "ActiveMissionTier": "VoidT4"
 | 
					      "ActiveMissionTier": "VoidT4"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a7581ced28e18f694b553" },
 | 
					      "_id": { "$id": "663a7581ced28e18f694b553" },
 | 
				
			||||||
      "Node": "CrewBattleNode521",
 | 
					      "Node": "CrewBattleNode521",
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715109601829" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715109601829" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "ActiveMissionTier": "VoidT3"
 | 
					      "ActiveMissionTier": "VoidT3"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "663a7581ced28e18f694b552" },
 | 
					      "_id": { "$id": "663a7581ced28e18f694b552" },
 | 
				
			||||||
      "Node": "CrewBattleNode535",
 | 
					      "Node": "CrewBattleNode535",
 | 
				
			||||||
      "Activation": { "$date": { "$numberLong": "1715109601827" } },
 | 
					      "Activation": { "$date": { "$numberLong": "1715109601827" } },
 | 
				
			||||||
      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
@ -956,7 +956,7 @@
 | 
				
			|||||||
  "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" },
 | 
					  "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" },
 | 
				
			||||||
  "PVPChallengeInstances": [
 | 
					  "PVPChallengeInstances": [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "6635562d036ce37f7f98e264" },
 | 
					      "_id": { "$id": "6635562d036ce37f7f98e264" },
 | 
				
			||||||
      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete",
 | 
					      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete",
 | 
				
			||||||
      "startDate": { "$date": { "$numberLong": "1714771501460" } },
 | 
					      "startDate": { "$date": { "$numberLong": "1714771501460" } },
 | 
				
			||||||
      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
@ -967,7 +967,7 @@
 | 
				
			|||||||
      "Category": "PVPChallengeTypeCategory_WEEKLY"
 | 
					      "Category": "PVPChallengeTypeCategory_WEEKLY"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "6635562d036ce37f7f98e263" },
 | 
					      "_id": { "$id": "6635562d036ce37f7f98e263" },
 | 
				
			||||||
      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins",
 | 
					      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins",
 | 
				
			||||||
      "startDate": { "$date": { "$numberLong": "1714771501460" } },
 | 
					      "startDate": { "$date": { "$numberLong": "1714771501460" } },
 | 
				
			||||||
      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
@ -978,7 +978,7 @@
 | 
				
			|||||||
      "Category": "PVPChallengeTypeCategory_WEEKLY"
 | 
					      "Category": "PVPChallengeTypeCategory_WEEKLY"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "6635562d036ce37f7f98e265" },
 | 
					      "_id": { "$id": "6635562d036ce37f7f98e265" },
 | 
				
			||||||
      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY",
 | 
					      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY",
 | 
				
			||||||
      "startDate": { "$date": { "$numberLong": "1714771501460" } },
 | 
					      "startDate": { "$date": { "$numberLong": "1714771501460" } },
 | 
				
			||||||
      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
@ -989,18 +989,18 @@
 | 
				
			|||||||
      "Category": "PVPChallengeTypeCategory_WEEKLY"
 | 
					      "Category": "PVPChallengeTypeCategory_WEEKLY"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "6635562d036ce37f7f98e266" },
 | 
					      "_id": { "$id": "6635562d036ce37f7f98e266" },
 | 
				
			||||||
      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet",
 | 
					      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet",
 | 
				
			||||||
      "startDate": { "$date": { "$numberLong": "1714771501460" } },
 | 
					      "startDate": { "$date": { "$numberLong": "1714771501460" } },
 | 
				
			||||||
      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
      "params": [{ "n": "ScriptParamValue", "v": 0 }],
 | 
					      "params": [{ "n": "ScriptParamValue", "v": 0 }],
 | 
				
			||||||
      "isGenerated": true,
 | 
					      "isGenerated": true,
 | 
				
			||||||
      "PVPMode": "PVPMODE_NONE",
 | 
					      "PVPMode": "PVPMODE_NONE",
 | 
				
			||||||
      "subChallenges": [{ "$oid": "6635562d036ce37f7f98e263" }, { "$oid": "6635562d036ce37f7f98e264" }, { "$oid": "6635562d036ce37f7f98e265" }],
 | 
					      "subChallenges": [{ "$id": "6635562d036ce37f7f98e263" }, { "$id": "6635562d036ce37f7f98e264" }, { "$id": "6635562d036ce37f7f98e265" }],
 | 
				
			||||||
      "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT"
 | 
					      "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "6639ca6967c1192987d75fee" },
 | 
					      "_id": { "$id": "6639ca6967c1192987d75fee" },
 | 
				
			||||||
      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY",
 | 
					      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY",
 | 
				
			||||||
      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
					      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
				
			||||||
      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
@ -1011,7 +1011,7 @@
 | 
				
			|||||||
      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
					      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "6639ca6967c1192987d75fed" },
 | 
					      "_id": { "$id": "6639ca6967c1192987d75fed" },
 | 
				
			||||||
      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM",
 | 
					      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM",
 | 
				
			||||||
      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
					      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
				
			||||||
      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
@ -1022,7 +1022,7 @@
 | 
				
			|||||||
      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
					      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "6639ca6967c1192987d75ff2" },
 | 
					      "_id": { "$id": "6639ca6967c1192987d75ff2" },
 | 
				
			||||||
      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY",
 | 
					      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY",
 | 
				
			||||||
      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
					      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
				
			||||||
      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
@ -1033,7 +1033,7 @@
 | 
				
			|||||||
      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
					      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "6639ca6967c1192987d75ff1" },
 | 
					      "_id": { "$id": "6639ca6967c1192987d75ff1" },
 | 
				
			||||||
      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPayback_MEDIUM",
 | 
					      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPayback_MEDIUM",
 | 
				
			||||||
      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
					      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
				
			||||||
      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
@ -1044,7 +1044,7 @@
 | 
				
			|||||||
      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
					      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "6639ca6967c1192987d75fef" },
 | 
					      "_id": { "$id": "6639ca6967c1192987d75fef" },
 | 
				
			||||||
      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationEASY",
 | 
					      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationEASY",
 | 
				
			||||||
      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
					      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
				
			||||||
      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
@ -1055,7 +1055,7 @@
 | 
				
			|||||||
      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
					      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "6639ca6967c1192987d75ff0" },
 | 
					      "_id": { "$id": "6639ca6967c1192987d75ff0" },
 | 
				
			||||||
      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD",
 | 
					      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD",
 | 
				
			||||||
      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
					      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
				
			||||||
      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
@ -1066,7 +1066,7 @@
 | 
				
			|||||||
      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
					      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "6639ca6967c1192987d75ff3" },
 | 
					      "_id": { "$id": "6639ca6967c1192987d75ff3" },
 | 
				
			||||||
      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesMEDIUM",
 | 
					      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesMEDIUM",
 | 
				
			||||||
      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
					      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
				
			||||||
      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
@ -1077,7 +1077,7 @@
 | 
				
			|||||||
      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
					      "Category": "PVPChallengeTypeCategory_DAILY"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      "_id": { "$oid": "6639ca6967c1192987d75ff4" },
 | 
					      "_id": { "$id": "6639ca6967c1192987d75ff4" },
 | 
				
			||||||
      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsEASY",
 | 
					      "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsEASY",
 | 
				
			||||||
      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
					      "startDate": { "$date": { "$numberLong": "1715063401824" } },
 | 
				
			||||||
      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
					      "endDate": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
@ -1109,64 +1109,64 @@
 | 
				
			|||||||
    "Params": "",
 | 
					    "Params": "",
 | 
				
			||||||
    "ActiveChallenges": [
 | 
					    "ActiveChallenges": [
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "_id": { "$oid": "001300010000000000000008" },
 | 
					        "_id": { "$id": "001300010000000000000008" },
 | 
				
			||||||
        "Daily": true,
 | 
					        "Daily": true,
 | 
				
			||||||
        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
					        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
				
			||||||
        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
        "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyFeedMeMore"
 | 
					        "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyFeedMeMore"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "_id": { "$oid": "001300010000000000000009" },
 | 
					        "_id": { "$id": "001300010000000000000009" },
 | 
				
			||||||
        "Daily": true,
 | 
					        "Daily": true,
 | 
				
			||||||
        "Activation": { "$date": { "$numberLong": "1715644800000" } },
 | 
					        "Activation": { "$date": { "$numberLong": "1715644800000" } },
 | 
				
			||||||
        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
        "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTwoForOne"
 | 
					        "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTwoForOne"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "_id": { "$oid": "001300010000000000000010" },
 | 
					        "_id": { "$id": "001300010000000000000010" },
 | 
				
			||||||
        "Daily": true,
 | 
					        "Daily": true,
 | 
				
			||||||
        "Activation": { "$date": { "$numberLong": "1715731200000" } },
 | 
					        "Activation": { "$date": { "$numberLong": "1715731200000" } },
 | 
				
			||||||
        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
        "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithFinishers"
 | 
					        "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithFinishers"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "_id": { "$oid": "001300010000000000000001" },
 | 
					        "_id": { "$id": "001300010000000000000001" },
 | 
				
			||||||
        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
					        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
				
			||||||
        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
        "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions"
 | 
					        "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "_id": { "$oid": "001300010000000000000002" },
 | 
					        "_id": { "$id": "001300010000000000000002" },
 | 
				
			||||||
        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
					        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
				
			||||||
        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
        "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus"
 | 
					        "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "_id": { "$oid": "001300010000000000000003" },
 | 
					        "_id": { "$id": "001300010000000000000003" },
 | 
				
			||||||
        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
					        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
				
			||||||
        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
        "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies"
 | 
					        "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "_id": { "$oid": "001300010000000000000004" },
 | 
					        "_id": { "$id": "001300010000000000000004" },
 | 
				
			||||||
        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
					        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
				
			||||||
        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
        "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyOpenLockers"
 | 
					        "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyOpenLockers"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "_id": { "$oid": "001300010000000000000005" },
 | 
					        "_id": { "$id": "001300010000000000000005" },
 | 
				
			||||||
        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
					        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
				
			||||||
        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
        "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyBloodthirsty"
 | 
					        "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyBloodthirsty"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "_id": { "$oid": "001300010000000000000006" },
 | 
					        "_id": { "$id": "001300010000000000000006" },
 | 
				
			||||||
        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
					        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
				
			||||||
        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
        "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardEliteSanctuaryOnslaught"
 | 
					        "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardEliteSanctuaryOnslaught"
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        "_id": { "$oid": "001300010000000000000007" },
 | 
					        "_id": { "$id": "001300010000000000000007" },
 | 
				
			||||||
        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
					        "Activation": { "$date": { "$numberLong": "1715558400000" } },
 | 
				
			||||||
        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
					        "Expiry": { "$date": { "$numberLong": "9999999999999" } },
 | 
				
			||||||
        "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCompleteSortie"
 | 
					        "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCompleteSortie"
 | 
				
			||||||
 | 
				
			|||||||
@ -157,7 +157,7 @@ function updateInventory() {
 | 
				
			|||||||
                        a.href = "#";
 | 
					                        a.href = "#";
 | 
				
			||||||
                        a.onclick = function (event) {
 | 
					                        a.onclick = function (event) {
 | 
				
			||||||
                            event.preventDefault();
 | 
					                            event.preventDefault();
 | 
				
			||||||
                            addGearExp("Suits", item.ItemId.$oid, 1_600_000 - item.XP);
 | 
					                            addGearExp("Suits", item.ItemId.$id, 1_600_000 - item.XP);
 | 
				
			||||||
                        };
 | 
					                        };
 | 
				
			||||||
                        a.title = "Make Rank 30";
 | 
					                        a.title = "Make Rank 30";
 | 
				
			||||||
                        a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
 | 
					                        a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
 | 
				
			||||||
@ -165,7 +165,7 @@ function updateInventory() {
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        const a = document.createElement("a");
 | 
					                        const a = document.createElement("a");
 | 
				
			||||||
                        a.href = "/webui/powersuit/" + item.ItemId.$oid;
 | 
					                        a.href = "/webui/powersuit/" + item.ItemId.$id;
 | 
				
			||||||
                        a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z"/></svg>`;
 | 
					                        a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z"/></svg>`;
 | 
				
			||||||
                        td.appendChild(a);
 | 
					                        td.appendChild(a);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
@ -176,7 +176,7 @@ function updateInventory() {
 | 
				
			|||||||
                            event.preventDefault();
 | 
					                            event.preventDefault();
 | 
				
			||||||
                            const name = prompt("Enter new custom name:");
 | 
					                            const name = prompt("Enter new custom name:");
 | 
				
			||||||
                            if (name !== null) {
 | 
					                            if (name !== null) {
 | 
				
			||||||
                                renameGear("Suits", item.ItemId.$oid, name);
 | 
					                                renameGear("Suits", item.ItemId.$id, name);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        };
 | 
					                        };
 | 
				
			||||||
                        a.title = "Rename";
 | 
					                        a.title = "Rename";
 | 
				
			||||||
@ -188,7 +188,7 @@ function updateInventory() {
 | 
				
			|||||||
                        a.href = "#";
 | 
					                        a.href = "#";
 | 
				
			||||||
                        a.onclick = function (event) {
 | 
					                        a.onclick = function (event) {
 | 
				
			||||||
                            event.preventDefault();
 | 
					                            event.preventDefault();
 | 
				
			||||||
                            disposeOfGear("Suits", item.ItemId.$oid);
 | 
					                            disposeOfGear("Suits", item.ItemId.$id);
 | 
				
			||||||
                        };
 | 
					                        };
 | 
				
			||||||
                        a.title = "Remove";
 | 
					                        a.title = "Remove";
 | 
				
			||||||
                        a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
 | 
					                        a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
 | 
				
			||||||
@ -218,7 +218,7 @@ function updateInventory() {
 | 
				
			|||||||
                            a.href = "#";
 | 
					                            a.href = "#";
 | 
				
			||||||
                            a.onclick = function (event) {
 | 
					                            a.onclick = function (event) {
 | 
				
			||||||
                                event.preventDefault();
 | 
					                                event.preventDefault();
 | 
				
			||||||
                                addGearExp(category, item.ItemId.$oid, 800_000 - item.XP);
 | 
					                                addGearExp(category, item.ItemId.$id, 800_000 - item.XP);
 | 
				
			||||||
                            };
 | 
					                            };
 | 
				
			||||||
                            a.title = "Make Rank 30";
 | 
					                            a.title = "Make Rank 30";
 | 
				
			||||||
                            a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
 | 
					                            a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
 | 
				
			||||||
@ -231,7 +231,7 @@ function updateInventory() {
 | 
				
			|||||||
                                event.preventDefault();
 | 
					                                event.preventDefault();
 | 
				
			||||||
                                const name = prompt("Enter new custom name:");
 | 
					                                const name = prompt("Enter new custom name:");
 | 
				
			||||||
                                if (name !== null) {
 | 
					                                if (name !== null) {
 | 
				
			||||||
                                    renameGear(category, item.ItemId.$oid, name);
 | 
					                                    renameGear(category, item.ItemId.$id, name);
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
                            };
 | 
					                            };
 | 
				
			||||||
                            a.title = "Rename";
 | 
					                            a.title = "Rename";
 | 
				
			||||||
@ -243,7 +243,7 @@ function updateInventory() {
 | 
				
			|||||||
                            a.href = "#";
 | 
					                            a.href = "#";
 | 
				
			||||||
                            a.onclick = function (event) {
 | 
					                            a.onclick = function (event) {
 | 
				
			||||||
                                event.preventDefault();
 | 
					                                event.preventDefault();
 | 
				
			||||||
                                disposeOfGear(category, item.ItemId.$oid);
 | 
					                                disposeOfGear(category, item.ItemId.$id);
 | 
				
			||||||
                            };
 | 
					                            };
 | 
				
			||||||
                            a.title = "Remove";
 | 
					                            a.title = "Remove";
 | 
				
			||||||
                            a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
 | 
					                            a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
 | 
				
			||||||
@ -298,7 +298,7 @@ function updateInventory() {
 | 
				
			|||||||
                            a.href = "#";
 | 
					                            a.href = "#";
 | 
				
			||||||
                            a.onclick = function (event) {
 | 
					                            a.onclick = function (event) {
 | 
				
			||||||
                                event.preventDefault();
 | 
					                                event.preventDefault();
 | 
				
			||||||
                                disposeOfGear("Upgrades", item.ItemId.$oid);
 | 
					                                disposeOfGear("Upgrades", item.ItemId.$id);
 | 
				
			||||||
                            };
 | 
					                            };
 | 
				
			||||||
                            a.title = "Remove";
 | 
					                            a.title = "Remove";
 | 
				
			||||||
                            a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
 | 
					                            a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
 | 
				
			||||||
@ -336,7 +336,7 @@ function updateInventory() {
 | 
				
			|||||||
                            a.href = "#";
 | 
					                            a.href = "#";
 | 
				
			||||||
                            a.onclick = function (event) {
 | 
					                            a.onclick = function (event) {
 | 
				
			||||||
                                event.preventDefault();
 | 
					                                event.preventDefault();
 | 
				
			||||||
                                disposeOfGear("Upgrades", item.ItemId.$oid);
 | 
					                                disposeOfGear("Upgrades", item.ItemId.$id);
 | 
				
			||||||
                            };
 | 
					                            };
 | 
				
			||||||
                            a.title = "Remove";
 | 
					                            a.title = "Remove";
 | 
				
			||||||
                            a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
 | 
					                            a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
 | 
				
			||||||
@ -394,7 +394,7 @@ function updateInventory() {
 | 
				
			|||||||
            // Populate powersuit route
 | 
					            // Populate powersuit route
 | 
				
			||||||
            if (single.getCurrentPath().substr(0, 17) == "/webui/powersuit/") {
 | 
					            if (single.getCurrentPath().substr(0, 17) == "/webui/powersuit/") {
 | 
				
			||||||
                const oid = single.getCurrentPath().substr(17);
 | 
					                const oid = single.getCurrentPath().substr(17);
 | 
				
			||||||
                const item = data.Suits.find(x => x.ItemId.$oid == oid);
 | 
					                const item = data.Suits.find(x => x.ItemId.$id == oid);
 | 
				
			||||||
                if (item) {
 | 
					                if (item) {
 | 
				
			||||||
                    if (item.ItemName) {
 | 
					                    if (item.ItemName) {
 | 
				
			||||||
                        $("#powersuit-route h3").text(item.ItemName);
 | 
					                        $("#powersuit-route h3").text(item.ItemName);
 | 
				
			||||||
@ -507,7 +507,7 @@ function addGearExp(category, oid, xp) {
 | 
				
			|||||||
    const data = {};
 | 
					    const data = {};
 | 
				
			||||||
    data[category] = [
 | 
					    data[category] = [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            ItemId: { $oid: oid },
 | 
					            ItemId: { $id: oid },
 | 
				
			||||||
            XP: xp
 | 
					            XP: xp
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user