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 pendingRecipe = inventory.PendingRecipes.find( | ||||
|         recipe => recipe._id?.toString() === claimCompletedRecipeRequest.RecipeIds[0].$oid | ||||
|         recipe => recipe._id?.toString() === claimCompletedRecipeRequest.RecipeIds[0].$id | ||||
|     ); | ||||
|     if (!pendingRecipe) { | ||||
|         logger.error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$oid}`); | ||||
|         throw new 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].$id}`); | ||||
|     } | ||||
| 
 | ||||
|     //check recipe is indeed ready to be completed
 | ||||
|  | ||||
| @ -16,8 +16,6 @@ export const getCreditsController: RequestHandler = async (req, res) => { | ||||
|     if (config.infiniteResources) { | ||||
|         res.json({ | ||||
|             RegularCredits: 999999999, | ||||
|             TradesRemaining: 999999999, | ||||
|             PremiumCreditsFree: 999999999, | ||||
|             PremiumCredits: 999999999 | ||||
|         }); | ||||
|         return; | ||||
| @ -26,8 +24,6 @@ export const getCreditsController: RequestHandler = async (req, res) => { | ||||
|     const inventory = await getInventory(accountId); | ||||
|     res.json({ | ||||
|         RegularCredits: inventory.RegularCredits, | ||||
|         TradesRemaining: inventory.TradesRemaining, | ||||
|         PremiumCreditsFree: inventory.PremiumCreditsFree, | ||||
|         PremiumCredits: inventory.PremiumCredits | ||||
|     }); | ||||
| }; | ||||
|  | ||||
| @ -28,7 +28,7 @@ export const getGuildDojoController: RequestHandler = async (req, res) => { | ||||
|     } | ||||
| 
 | ||||
|     const dojo: IDojoClient = { | ||||
|         _id: { $oid: guildId }, | ||||
|         _id: { $id: guildId }, | ||||
|         Name: guild.Name, | ||||
|         Tier: 1, | ||||
|         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); | ||||
|     logger.debug(`New Session Created`, { session }); | ||||
| 
 | ||||
|     res.json({ sessionId: { $oid: session.sessionId }, rewardSeed: 99999999 }); | ||||
|     res.json({ sessionId: { $id: session.sessionId }, rewardSeed: 99999999 }); | ||||
| }; | ||||
| 
 | ||||
| export { hostSessionController }; | ||||
|  | ||||
| @ -12,7 +12,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => { | ||||
|             // shard installation
 | ||||
|             const request = getJSONfromString(String(req.body)) as IShardInstallRequest; | ||||
|             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) { | ||||
|                 suit.ArchonCrystalUpgrades = [{}, {}, {}, {}, {}]; | ||||
|             } | ||||
|  | ||||
| @ -31,38 +31,37 @@ const inventoryController: RequestHandler = async (request, response) => { | ||||
| 
 | ||||
|     if (config.infiniteResources) { | ||||
|         inventoryResponse.RegularCredits = 999999999; | ||||
|         inventoryResponse.TradesRemaining = 999999999; | ||||
|         inventoryResponse.PremiumCredits = 999999999; | ||||
|     } | ||||
| 
 | ||||
|     if (config.unlockAllMissions) { | ||||
|         //inventoryResponse.Missions = allMissions;
 | ||||
|         //inventoryResponse.NodeIntrosCompleted.push("TeshinHardModeUnlocked");
 | ||||
|     } | ||||
|     // if (config.unlockAllMissions) {
 | ||||
|     //     //inventoryResponse.Missions = allMissions;
 | ||||
|     //     //inventoryResponse.NodeIntrosCompleted.push("TeshinHardModeUnlocked");
 | ||||
|     // }
 | ||||
| 
 | ||||
|     if (config.unlockAllMissions) { | ||||
|         //inventoryResponse.Missions = allMissions;
 | ||||
|         //addString(inventoryResponse.NodeIntrosCompleted, "TeshinHardModeUnlocked");
 | ||||
|     } | ||||
|     // if (config.unlockAllMissions) {
 | ||||
|     //     //inventoryResponse.Missions = allMissions;
 | ||||
|     //     //addString(inventoryResponse.NodeIntrosCompleted, "TeshinHardModeUnlocked");
 | ||||
|     // }
 | ||||
| 
 | ||||
|     if (config.unlockAllFlavourItems) { | ||||
|         inventoryResponse.FlavourItems = []; | ||||
|         for (const uniqueName in ExportFlavour) { | ||||
|             inventoryResponse.FlavourItems.push({ ItemType: uniqueName }); | ||||
|         } | ||||
|     } | ||||
|     // if (config.unlockAllFlavourItems) {
 | ||||
|     //     inventoryResponse.FlavourItems = [];
 | ||||
|     //     for (const uniqueName in ExportFlavour) {
 | ||||
|     //         inventoryResponse.FlavourItems.push({ ItemType: uniqueName });
 | ||||
|     //     }
 | ||||
|     // }
 | ||||
| 
 | ||||
|     if (config.unlockAllSkins) { | ||||
|         inventoryResponse.WeaponSkins = []; | ||||
|         for (const uniqueName in ExportCustoms) { | ||||
|             inventoryResponse.WeaponSkins.push({ | ||||
|                 ItemId: { | ||||
|                     $oid: "000000000000000000000000" | ||||
|                 }, | ||||
|                 ItemType: uniqueName | ||||
|             }); | ||||
|         } | ||||
|     } | ||||
|     // if (config.unlockAllSkins) {
 | ||||
|     //     inventoryResponse.WeaponSkins = [];
 | ||||
|     //     for (const uniqueName in ExportCustoms) {
 | ||||
|     //         inventoryResponse.WeaponSkins.push({
 | ||||
|     //             ItemId: {
 | ||||
|     //                 $id: "000000000000000000000000"
 | ||||
|     //             },
 | ||||
|     //             ItemType: uniqueName
 | ||||
|     //         });
 | ||||
|     //     }
 | ||||
|     // }
 | ||||
| 
 | ||||
|     if (typeof config.spoofMasteryRank === "number" && config.spoofMasteryRank >= 0) { | ||||
|         inventoryResponse.PlayerLevel = config.spoofMasteryRank; | ||||
|  | ||||
| @ -7,7 +7,7 @@ const joinSessionController: RequestHandler = (_req, res) => { | ||||
|     logger.debug(`JoinSession Request`, { reqBody }); | ||||
|     const req = JSON.parse(String(_req.body)); | ||||
|     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 }; | ||||
|  | ||||
| @ -57,7 +57,7 @@ const missionInventoryUpdateController: RequestHandler = async (req, res): Promi | ||||
| 
 | ||||
|         const { InventoryChanges, MissionRewards } = getRewards(lootInventory); | ||||
| 
 | ||||
|         const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits, FusionPoints } = | ||||
|         const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits } = | ||||
|             combineRewardAndLootInventory(InventoryChanges, lootInventory); | ||||
| 
 | ||||
|         // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | ||||
| @ -68,8 +68,7 @@ const missionInventoryUpdateController: RequestHandler = async (req, res): Promi | ||||
|             InventoryChanges, | ||||
|             TotalCredits, | ||||
|             CreditsBonus, | ||||
|             MissionCredits, | ||||
|             FusionPoints | ||||
|             MissionCredits | ||||
|         }); | ||||
|     } catch (err) { | ||||
|         console.error("Error parsing JSON data:", err); | ||||
|  | ||||
| @ -17,7 +17,7 @@ export const startDojoRecipeController: RequestHandler = async (req, res) => { | ||||
|         _id: new Types.ObjectId(), | ||||
|         pf: request.PlacedComponent.pf, | ||||
|         ppf: request.PlacedComponent.ppf, | ||||
|         pi: new Types.ObjectId(request.PlacedComponent.pi!.$oid), | ||||
|         pi: new Types.ObjectId(request.PlacedComponent.pi!.$id), | ||||
|         op: request.PlacedComponent.op, | ||||
|         pp: request.PlacedComponent.pp, | ||||
|         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
 | ||||
| const trainingResultController: RequestHandler = async (req, res): Promise<void> => { | ||||
|     const accountId = await getAccountIdForRequest(req); | ||||
| 
 | ||||
|     const trainingResults = getJSONfromString(String(req.body)) as ITrainingResultsRequest; | ||||
| 
 | ||||
|     const numLevelsGained = parseInt(req.query.numLevelsGained as string); | ||||
|     const inventory = await getInventory(accountId); | ||||
| 
 | ||||
|     console.log(req.query); | ||||
|     inventory.TrainingDate = new Date(Date.now() + unixTimesInMs.day); | ||||
| 
 | ||||
|     if (trainingResults.numLevelsGained == 1) { | ||||
|     if (numLevelsGained == 1) { | ||||
|         inventory.PlayerLevel += 1; | ||||
|     } | ||||
| 
 | ||||
| @ -35,7 +33,7 @@ const trainingResultController: RequestHandler = async (req, res): Promise<void> | ||||
|         NewTrainingDate: { | ||||
|             $date: { $numberLong: changedinventory.TrainingDate.getTime().toString() } | ||||
|         }, | ||||
|         NewLevel: trainingResults.numLevelsGained == 1 ? changedinventory.PlayerLevel : inventory.PlayerLevel, | ||||
|         NewLevel: numLevelsGained == 1 ? changedinventory.PlayerLevel : inventory.PlayerLevel, | ||||
|         InventoryChanges: [] | ||||
|     } satisfies ITrainingResultsResponse); | ||||
| }; | ||||
|  | ||||
| @ -1,18 +1,26 @@ | ||||
| import { getAccountIdForRequest } from "@/src/services/loginService"; | ||||
| 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
 | ||||
| export const updateInventoryController: RequestHandler = async (req, res) => { | ||||
|     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); | ||||
|     inventory.Missions.push({ Tag: body.Missions.Tag, Completes: body.Missions.Completes, BestRating: 0.2 }); | ||||
|     await missionInventoryUpdate(combinedInventoryChanges, accountId); | ||||
| 
 | ||||
|     await inventory.save(); | ||||
|     console.log(body); | ||||
|     res.json({}); | ||||
|     res.json({ | ||||
|         // InventoryJson, // this part will reset game data and missions will be locked
 | ||||
|         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/OrokinCatalyst": | ||||
|                 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 |= EquipmentFeatures.DOUBLE_CAPACITY; | ||||
|                         break; | ||||
| @ -44,7 +44,7 @@ export const upgradesController: RequestHandler = async (req, res) => { | ||||
|             case "/Lotus/Types/Items/MiscItems/UtilityUnlocker": | ||||
|             case "/Lotus/Types/Items/MiscItems/WeaponUtilityUnlocker": | ||||
|                 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 |= EquipmentFeatures.UTILITY_SLOT; | ||||
|                         break; | ||||
| @ -54,7 +54,7 @@ export const upgradesController: RequestHandler = async (req, res) => { | ||||
|             case "/Lotus/Types/Items/MiscItems/HeavyWeaponCatalyst": | ||||
|                 console.assert(payload.ItemCategory == "SpaceGuns"); | ||||
|                 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 |= EquipmentFeatures.GRAVIMAG_INSTALLED; | ||||
|                         break; | ||||
| @ -66,7 +66,7 @@ export const upgradesController: RequestHandler = async (req, res) => { | ||||
|             case "/Lotus/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker": | ||||
|             case "/Lotus/Types/Items/MiscItems/WeaponAmpArcaneUnlocker": | ||||
|                 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 |= EquipmentFeatures.ARCANE_SLOT; | ||||
|                         break; | ||||
| @ -78,7 +78,7 @@ export const upgradesController: RequestHandler = async (req, res) => { | ||||
|             case "/Lotus/Types/Items/MiscItems/FormaAura": | ||||
|             case "/Lotus/Types/Items/MiscItems/FormaStance": | ||||
|                 for (const item of inventory[payload.ItemCategory]) { | ||||
|                     if (item._id.toString() == payload.ItemId.$oid) { | ||||
|                     if (item._id.toString() == payload.ItemId.$id) { | ||||
|                         item.XP = 0; | ||||
|                         setSlotPolarity(item, operation.PolarizeSlot, operation.PolarizeValue); | ||||
|                         item.Polarized ??= 0; | ||||
| @ -89,12 +89,12 @@ export const upgradesController: RequestHandler = async (req, res) => { | ||||
|                 break; | ||||
|             case "/Lotus/Types/Items/MiscItems/ModSlotUnlocker": | ||||
|                 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 += 1; | ||||
|                         InventoryChanges[payload.ItemCategory] = { | ||||
|                             ItemId: { | ||||
|                                 $oid: payload.ItemId.$oid | ||||
|                                 $id: payload.ItemId.$id | ||||
|                             }, | ||||
|                             ModSlotPurchases: item.ModSlotPurchases | ||||
|                         }; | ||||
| @ -104,12 +104,12 @@ export const upgradesController: RequestHandler = async (req, res) => { | ||||
|                 break; | ||||
|             case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker": | ||||
|                 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 += 1; | ||||
|                         InventoryChanges[payload.ItemCategory] = { | ||||
|                             ItemId: { | ||||
|                                 $oid: payload.ItemId.$oid | ||||
|                                 $id: payload.ItemId.$id | ||||
|                             }, | ||||
|                             CustomizationSlotPurchases: item.CustomizationSlotPurchases | ||||
|                         }; | ||||
| @ -120,7 +120,7 @@ export const upgradesController: RequestHandler = async (req, res) => { | ||||
|             case "": | ||||
|                 console.assert(operation.OperationType == "UOT_SWAP_POLARITY"); | ||||
|                 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) { | ||||
|                             if (operation.PolarityRemap[i].Slot != i) { | ||||
|                                 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 { 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 => { | ||||
|     // eslint-disable-next-line @typescript-eslint/no-unused-vars
 | ||||
|     const { accountOwnerId, ...inventoryResponse } = inventoryDatabase; | ||||
| @ -10,7 +10,7 @@ export const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInv | ||||
| }; | ||||
| 
 | ||||
| export const toOid = (objectId: Types.ObjectId) => { | ||||
|     return { $oid: objectId.toString() } satisfies IOid; | ||||
|     return { $id: objectId.toString() } satisfies IOid; | ||||
| }; | ||||
| 
 | ||||
| export const toMongoDate = (date: Date) => { | ||||
|  | ||||
| @ -50,7 +50,7 @@ const pendingRecipeSchema = new Schema<IPendingRecipeDatabase>( | ||||
| ); | ||||
| 
 | ||||
| pendingRecipeSchema.virtual("ItemId").get(function () { | ||||
|     return { $oid: this._id.toString() }; | ||||
|     return { $id: this._id.toString() }; | ||||
| }); | ||||
| 
 | ||||
| pendingRecipeSchema.set("toJSON", { | ||||
| @ -108,7 +108,7 @@ const operatorConfigSchema = new Schema<IOperatorConfigDatabase>( | ||||
| ); | ||||
| 
 | ||||
| operatorConfigSchema.virtual("ItemId").get(function () { | ||||
|     return { $oid: this._id.toString() } satisfies IOid; | ||||
|     return { $id: this._id.toString() } satisfies IOid; | ||||
| }); | ||||
| 
 | ||||
| operatorConfigSchema.set("toJSON", { | ||||
| @ -197,7 +197,7 @@ const EquipmentSchema = new Schema<IEquipmentDatabase>( | ||||
| ); | ||||
| 
 | ||||
| EquipmentSchema.virtual("ItemId").get(function () { | ||||
|     return { $oid: this._id.toString() } satisfies IOid; | ||||
|     return { $id: this._id.toString() } satisfies IOid; | ||||
| }); | ||||
| 
 | ||||
| EquipmentSchema.set("toJSON", { | ||||
| @ -225,7 +225,7 @@ const RawUpgrades = new Schema<IRawUpgrade>( | ||||
| ); | ||||
| 
 | ||||
| RawUpgrades.virtual("LastAdded").get(function () { | ||||
|     return { $oid: this._id.toString() } satisfies IOid; | ||||
|     return { $id: this._id.toString() } satisfies IOid; | ||||
| }); | ||||
| 
 | ||||
| RawUpgrades.set("toJSON", { | ||||
| @ -279,12 +279,12 @@ FlavourItemSchema.set("toJSON", { | ||||
|     } | ||||
| }); | ||||
| 
 | ||||
| //  "Mailbox": { "LastInboxId": { "$oid": "123456780000000000000000" } }
 | ||||
| //  "Mailbox": { "LastInboxId": { "$id": "123456780000000000000000" } }
 | ||||
| const MailboxSchema = new Schema<IMailbox>( | ||||
|     { | ||||
|         LastInboxId: { | ||||
|             type: Schema.Types.ObjectId, | ||||
|             set: (v: IMailbox["LastInboxId"]) => v.$oid.toString() | ||||
|             set: (v: IMailbox["LastInboxId"]) => v.$id.toString() | ||||
|         } | ||||
|     }, | ||||
|     { id: false, _id: false } | ||||
| @ -351,7 +351,7 @@ const StepSequencersSchema = new Schema<IStepSequencer>( | ||||
| ); | ||||
| 
 | ||||
| StepSequencersSchema.virtual("ItemId").get(function () { | ||||
|     return { $oid: this._id.toString() } satisfies IOid; | ||||
|     return { $id: this._id.toString() } satisfies IOid; | ||||
| }); | ||||
| 
 | ||||
| StepSequencersSchema.set("toJSON", { | ||||
| @ -428,7 +428,7 @@ const weaponSkinsSchema = new Schema<IWeaponSkinDatabase>( | ||||
| ); | ||||
| 
 | ||||
| weaponSkinsSchema.virtual("ItemId").get(function () { | ||||
|     return { $oid: this._id.toString() }; | ||||
|     return { $id: this._id.toString() }; | ||||
| }); | ||||
| 
 | ||||
| weaponSkinsSchema.set("toJSON", { | ||||
|  | ||||
| @ -5,7 +5,7 @@ import { Model, Schema, Types, model } from "mongoose"; | ||||
| 
 | ||||
| const oidSchema = new Schema<IOid>( | ||||
|     { | ||||
|         $oid: String | ||||
|         $id: String | ||||
|     }, | ||||
|     { | ||||
|         _id: false | ||||
| @ -44,7 +44,7 @@ const loadoutConfigSchema = new Schema<ILoadoutConfigDatabase>( | ||||
| ); | ||||
| 
 | ||||
| loadoutConfigSchema.virtual("ItemId").get(function () { | ||||
|     return { $oid: this._id.toString() } satisfies IOid; | ||||
|     return { $id: this._id.toString() } satisfies IOid; | ||||
| }); | ||||
| 
 | ||||
| loadoutConfigSchema.set("toJSON", { | ||||
|  | ||||
| @ -66,6 +66,7 @@ import { updateThemeController } from "../controllers/api/updateThemeController" | ||||
| import { upgradesController } from "@/src/controllers/api/upgradesController"; | ||||
| import { worldStateController } from "../controllers/dynamic/worldStateController"; | ||||
| import { updateInventoryController } from "../controllers/api/updateInventoryController"; | ||||
| import { giveStartingGearController } from "../controllers/api/giveStartingGearController"; | ||||
| 
 | ||||
| const apiRouter = express.Router(); | ||||
| 
 | ||||
| @ -104,12 +105,8 @@ apiRouter.get("/updateSession.php", updateSessionGetController); | ||||
| apiRouter.get("/getMessages.php", (_, response) => { | ||||
|     response.json({}); | ||||
| }); | ||||
| apiRouter.get("/trainingResult.php", (_, response) => { | ||||
|     response.status(200); | ||||
| }); | ||||
| apiRouter.get("/giveStartingGear.php", (_, response) => { | ||||
|     response.status(200); | ||||
| }); | ||||
| apiRouter.get("/trainingResult.php", trainingResultController); | ||||
| apiRouter.get("/giveStartingGear.php", giveStartingGearController); | ||||
| apiRouter.get("/worldState.php", worldStateController); | ||||
| // post
 | ||||
| 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; | ||||
|         case "Weapons": | ||||
| @ -426,9 +398,6 @@ export const updateCurrency = async (price: number, usePremium: boolean, account | ||||
|     const inventory = await getInventory(accountId); | ||||
| 
 | ||||
|     if (usePremium) { | ||||
|         if (inventory.PremiumCreditsFree > 0) { | ||||
|             inventory.PremiumCreditsFree -= Math.min(price, inventory.PremiumCreditsFree); | ||||
|         } | ||||
|         inventory.PremiumCredits -= price; | ||||
|     } else { | ||||
|         inventory.RegularCredits -= price; | ||||
| @ -436,7 +405,7 @@ export const updateCurrency = async (price: number, usePremium: boolean, account | ||||
| 
 | ||||
|     const modifiedPaths = inventory.modifiedPaths(); | ||||
| 
 | ||||
|     type currencyKeys = "RegularCredits" | "PremiumCredits" | "PremiumCreditsFree"; | ||||
|     type currencyKeys = "RegularCredits" | "PremiumCredits"; | ||||
| 
 | ||||
|     const currencyChanges = {} as Record<currencyKeys, number>; | ||||
|     modifiedPaths.forEach(path => { | ||||
| @ -556,7 +525,7 @@ const addGearExpByCategory = ( | ||||
|             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) { | ||||
|             const item = category[itemIndex]; | ||||
|             item.XP ??= 0; | ||||
| @ -741,58 +710,15 @@ export const missionInventoryUpdate = async (data: IMissionInventoryUpdateReques | ||||
|     // credits
 | ||||
|     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
 | ||||
|     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
 | ||||
|     addMods(inventory, RawUpgrades); | ||||
|     addMiscItems(inventory, MiscItems); | ||||
|     addConsumables(inventory, Consumables); | ||||
|     addRecipes(inventory, Recipes); | ||||
|     addChallenges(inventory, ChallengeProgress); | ||||
|     addFusionTreasures(inventory, FusionTreasures); | ||||
|     if (Missions) { | ||||
|         addMissionComplete(inventory, Missions); | ||||
|     } | ||||
| @ -833,7 +759,7 @@ export const upgradeMod = async (artifactsData: IArtifactsRequest, accountId: st | ||||
|         parsedUpgradeFingerprint.lvl += LevelDiff; | ||||
|         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) { | ||||
|             Upgrades[itemIndex].UpgradeFingerprint = stringifiedUpgradeFingerprint; | ||||
| @ -858,7 +784,7 @@ export const upgradeMod = async (artifactsData: IArtifactsRequest, accountId: st | ||||
|         inventory.FusionPoints -= FusionPointCost; | ||||
| 
 | ||||
|         const changedInventory = await inventory.save(); | ||||
|         const itemId = changedInventory.toJSON().Upgrades[itemIndex]?.ItemId?.$oid; | ||||
|         const itemId = changedInventory.toJSON().Upgrades[itemIndex]?.ItemId?.$id; | ||||
| 
 | ||||
|         if (!itemId) { | ||||
|             throw new Error("Item Id not found in upgradeMod"); | ||||
|  | ||||
| @ -73,22 +73,8 @@ const combineRewardAndLootInventory = ( | ||||
|     const missionCredits = lootInventory.RegularCredits || 0; | ||||
|     const creditsBonus = rewardInventory.RegularCredits || 0; | ||||
|     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.FusionPoints = FusionPoints; | ||||
|     inventoryFields.forEach((field: IInventoryFieldType) => { | ||||
|         if (rewardInventory[field] && !lootInventory[field]) { | ||||
|             lootInventory[field] = []; | ||||
| @ -101,7 +87,6 @@ const combineRewardAndLootInventory = ( | ||||
|         TotalCredits: [totalCredits, totalCredits], | ||||
|         CreditsBonus: [creditsBonus, creditsBonus], | ||||
|         MissionCredits: [missionCredits, missionCredits], | ||||
|         FusionPoints: FusionPoints | ||||
|     }; | ||||
| }; | ||||
| 
 | ||||
|  | ||||
| @ -107,14 +107,7 @@ const handleStoreItemAcquisition = async ( | ||||
| export const slotPurchaseNameToSlotName: SlotPurchase = { | ||||
|     SuitSlotItem: { name: "SuitBin", slotsPerPurchase: 1 }, | ||||
|     TwoSentinelSlotItem: { name: "SentinelBin", 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 } | ||||
|     TwoWeaponSlotItem: { name: "WeaponBin", slotsPerPurchase: 2 } | ||||
| }; | ||||
| 
 | ||||
| // // 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(); | ||||
| 
 | ||||
|     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) { | ||||
|                         const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig; | ||||
|                         operatorLoadout.push({ | ||||
|                             _id: ItemId.$oid, | ||||
|                             _id: ItemId.$id, | ||||
|                             ...loadoutConfigItemIdRemoved | ||||
|                         }); | ||||
|                         continue; | ||||
| @ -89,14 +89,14 @@ export const handleInventoryItemConfigChange = async ( | ||||
| 
 | ||||
|                         const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig; | ||||
|                         const loadoutConfigDatabase: ILoadoutConfigDatabase = { | ||||
|                             _id: new Types.ObjectId(ItemId.$oid), | ||||
|                             _id: new Types.ObjectId(ItemId.$id), | ||||
|                             ...loadoutConfigItemIdRemoved | ||||
|                         }; | ||||
| 
 | ||||
|                         // if no config with this id exists, create a new one
 | ||||
|                         if (!oldLoadoutConfig) { | ||||
|                             //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) { | ||||
|                                     newLoadoutId = new Types.ObjectId(); | ||||
|                                 } | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| export interface IOid { | ||||
|     $oid: string; | ||||
|     $id: string; | ||||
| } | ||||
| 
 | ||||
| export interface IMongoDate { | ||||
|  | ||||
| @ -123,7 +123,6 @@ export interface IInventoryResponse { | ||||
|     RewardSeed: number; | ||||
|     RegularCredits: number; | ||||
|     PremiumCredits: number; | ||||
|     PremiumCreditsFree: number; | ||||
|     FusionPoints: number; | ||||
|     SuitBin: ISlots; | ||||
|     WeaponBin: ISlots; | ||||
| @ -134,14 +133,6 @@ export interface IInventoryResponse { | ||||
|     PveBonusLoadoutBin: ISlots; | ||||
|     RandomModBin: ISlots; | ||||
|     MechBin: ISlots; | ||||
|     CrewMemberBin: ISlots; | ||||
|     OperatorAmpBin: ISlots; | ||||
|     CrewShipSalvageBin: ISlots; | ||||
|     TradesRemaining: number; | ||||
|     DailyAffiliation: number; | ||||
|     DailyAffiliationPvp: number; | ||||
|     DailyAffiliationLibrary: number; | ||||
|     DailyFocus: number; | ||||
|     GiftsRemaining: number; | ||||
|     HandlerPoints: number; | ||||
|     MiscItems: IMiscItem[]; | ||||
|  | ||||
| @ -26,27 +26,14 @@ export type IBinChanges = { | ||||
| export type SlotPurchaseName = | ||||
|     | "SuitSlotItem" | ||||
|     | "TwoSentinelSlotItem" | ||||
|     | "TwoWeaponSlotItem" | ||||
|     | "SpaceSuitSlotItem" | ||||
|     | "TwoSpaceWeaponSlotItem" | ||||
|     | "MechSlotItem" | ||||
|     | "TwoOperatorWeaponSlotItem" | ||||
|     | "RandomModSlotItem" | ||||
|     | "TwoCrewShipSalvageSlotItem" | ||||
|     | "CrewMemberSlotItem"; | ||||
|     | "TwoWeaponSlotItem"; | ||||
| 
 | ||||
| export type SlotNames = | ||||
|     | "SuitBin" | ||||
|     | "WeaponBin" | ||||
|     | "MechBin" | ||||
|     | "PveBonusLoadoutBin" | ||||
|     | "SentinelBin" | ||||
|     | "SpaceSuitBin" | ||||
|     | "SpaceWeaponBin" | ||||
|     | "OperatorAmpBin" | ||||
|     | "RandomModBin" | ||||
|     | "CrewShipSalvageBin" | ||||
|     | "CrewMemberBin"; | ||||
|     | "SentinelBin"; | ||||
| 
 | ||||
| export type SlotPurchase = { | ||||
|     [P in SlotPurchaseName]: { name: SlotNames; slotsPerPurchase: number }; | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "VendorInfo": { | ||||
|     "_id": { "$oid": "62695b0467e5d379750f9f75" }, | ||||
|     "_id": { "$id": "62695b0467e5d379750f9f75" }, | ||||
|     "TypeName": "/Lotus/Types/Game/VendorManifests/Zariman/ArchimedeanVendorManifest", | ||||
|     "ItemManifest": [ | ||||
|       { | ||||
| @ -10,7 +10,7 @@ | ||||
|         "QuantityMultiplier": 1, | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999000000" } }, | ||||
|         "AllowMultipurchase": true, | ||||
|         "Id": { "$oid": "63ed01ef4c37f93d0b797826" } | ||||
|         "Id": { "$id": "63ed01ef4c37f93d0b797826" } | ||||
|       }, | ||||
|       { | ||||
|         "StoreItem": "/Lotus/StoreItems/Types/Items/ShipDecos/VoidPlumeBOrnament", | ||||
| @ -19,7 +19,7 @@ | ||||
|         "QuantityMultiplier": 1, | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999000000" } }, | ||||
|         "AllowMultipurchase": true, | ||||
|         "Id": { "$oid": "63ed01ef4c37f93d0b797827" } | ||||
|         "Id": { "$id": "63ed01ef4c37f93d0b797827" } | ||||
|       }, | ||||
|       { | ||||
|         "StoreItem": "/Lotus/StoreItems/Types/Items/MiscItems/Kuva", | ||||
| @ -29,7 +29,7 @@ | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999000000" } }, | ||||
|         "PurchaseQuantityLimit": 1, | ||||
|         "AllowMultipurchase": false, | ||||
|         "Id": { "$oid": "66664112af1177b5070ab882" } | ||||
|         "Id": { "$id": "66664112af1177b5070ab882" } | ||||
|       } | ||||
|     ], | ||||
|     "PropertyTextHash": "DB7BF03C3FE6D0036A4DC30066A9A17E", | ||||
|  | ||||
| @ -1,7 +1,7 @@ | ||||
| { | ||||
|   "VendorInfo": { | ||||
|     "_id": { | ||||
|       "$oid": "598a090d9a4a313746fd1f24" | ||||
|       "$id": "598a090d9a4a313746fd1f24" | ||||
|     }, | ||||
|     "TypeName": "/Lotus/Types/Game/VendorManifests/Ostron/MaskSalesmanManifest", | ||||
|     "ItemManifest": [ | ||||
| @ -23,7 +23,7 @@ | ||||
|         }, | ||||
|         "AllowMultipurchase": true, | ||||
|         "Id": { | ||||
|           "$oid": "63ed01ef4c37f93d0b797674" | ||||
|           "$id": "63ed01ef4c37f93d0b797674" | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
| @ -59,7 +59,7 @@ | ||||
|         }, | ||||
|         "AllowMultipurchase": true, | ||||
|         "Id": { | ||||
|           "$oid": "63ed01ef4c37f93d0b797675" | ||||
|           "$id": "63ed01ef4c37f93d0b797675" | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
| @ -95,7 +95,7 @@ | ||||
|         }, | ||||
|         "AllowMultipurchase": true, | ||||
|         "Id": { | ||||
|           "$oid": "63ed01ef4c37f93d0b797676" | ||||
|           "$id": "63ed01ef4c37f93d0b797676" | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
| @ -131,7 +131,7 @@ | ||||
|         }, | ||||
|         "AllowMultipurchase": true, | ||||
|         "Id": { | ||||
|           "$oid": "63ed01ef4c37f93d0b797677" | ||||
|           "$id": "63ed01ef4c37f93d0b797677" | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
| @ -157,7 +157,7 @@ | ||||
|         }, | ||||
|         "AllowMultipurchase": true, | ||||
|         "Id": { | ||||
|           "$oid": "6651291214e90115b91b50a1" | ||||
|           "$id": "6651291214e90115b91b50a1" | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
| @ -183,7 +183,7 @@ | ||||
|         }, | ||||
|         "AllowMultipurchase": true, | ||||
|         "Id": { | ||||
|           "$oid": "6651291214e90115b91b50a2" | ||||
|           "$id": "6651291214e90115b91b50a2" | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
| @ -209,7 +209,7 @@ | ||||
|         }, | ||||
|         "AllowMultipurchase": true, | ||||
|         "Id": { | ||||
|           "$oid": "6651291214e90115b91b50a3" | ||||
|           "$id": "6651291214e90115b91b50a3" | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
| @ -235,7 +235,7 @@ | ||||
|         }, | ||||
|         "AllowMultipurchase": true, | ||||
|         "Id": { | ||||
|           "$oid": "6651291214e90115b91b50a4" | ||||
|           "$id": "6651291214e90115b91b50a4" | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
| @ -261,7 +261,7 @@ | ||||
|         }, | ||||
|         "AllowMultipurchase": true, | ||||
|         "Id": { | ||||
|           "$oid": "6651291214e90115b91b50a5" | ||||
|           "$id": "6651291214e90115b91b50a5" | ||||
|         } | ||||
|       }, | ||||
|       { | ||||
| @ -287,7 +287,7 @@ | ||||
|         }, | ||||
|         "AllowMultipurchase": true, | ||||
|         "Id": { | ||||
|           "$oid": "6651291214e90115b91b50a6" | ||||
|           "$id": "6651291214e90115b91b50a6" | ||||
|         } | ||||
|       } | ||||
|     ], | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "VendorInfo": { | ||||
|     "_id": { "$oid": "62a20ba667e5d3797540d831" }, | ||||
|     "_id": { "$id": "62a20ba667e5d3797540d831" }, | ||||
|     "TypeName": "/Lotus/Types/Game/VendorManifests/Zariman/ZarimanCommisionsManifestArchimedean", | ||||
|     "ItemManifest": [ | ||||
|       { | ||||
| @ -14,7 +14,7 @@ | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999000000" } }, | ||||
|         "PurchaseQuantityLimit": 1, | ||||
|         "AllowMultipurchase": false, | ||||
|         "Id": { "$oid": "6678b612aa3d8ee5c2597299" } | ||||
|         "Id": { "$id": "6678b612aa3d8ee5c2597299" } | ||||
|       }, | ||||
|       { | ||||
|         "StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskD", | ||||
| @ -27,7 +27,7 @@ | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999000000" } }, | ||||
|         "PurchaseQuantityLimit": 1, | ||||
|         "AllowMultipurchase": false, | ||||
|         "Id": { "$oid": "6678b612aa3d8ee5c259729a" } | ||||
|         "Id": { "$id": "6678b612aa3d8ee5c259729a" } | ||||
|       }, | ||||
|       { | ||||
|         "StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskC", | ||||
| @ -40,7 +40,7 @@ | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999000000" } }, | ||||
|         "PurchaseQuantityLimit": 1, | ||||
|         "AllowMultipurchase": false, | ||||
|         "Id": { "$oid": "6678b612aa3d8ee5c259729b" } | ||||
|         "Id": { "$id": "6678b612aa3d8ee5c259729b" } | ||||
|       }, | ||||
|       { | ||||
|         "StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskB", | ||||
| @ -53,7 +53,7 @@ | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999000000" } }, | ||||
|         "PurchaseQuantityLimit": 1, | ||||
|         "AllowMultipurchase": false, | ||||
|         "Id": { "$oid": "6678b612aa3d8ee5c259729c" } | ||||
|         "Id": { "$id": "6678b612aa3d8ee5c259729c" } | ||||
|       }, | ||||
|       { | ||||
|         "StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskA", | ||||
| @ -66,7 +66,7 @@ | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999000000" } }, | ||||
|         "PurchaseQuantityLimit": 1, | ||||
|         "AllowMultipurchase": false, | ||||
|         "Id": { "$oid": "6678b612aa3d8ee5c259729d" } | ||||
|         "Id": { "$id": "6678b612aa3d8ee5c259729d" } | ||||
|       } | ||||
|     ], | ||||
|     "PropertyTextHash": "F43F0ED811985EEF856970A8342EF322", | ||||
|  | ||||
| @ -8,7 +8,7 @@ | ||||
|   "DrifterMelee": [ | ||||
|     { | ||||
|       "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", | ||||
|       "ItemId": { "$oid": "removed" } | ||||
|       "ItemId": { "$id": "removed" } | ||||
|     } | ||||
|   ], | ||||
|   "FusionPoints": 0, | ||||
| @ -23,7 +23,7 @@ | ||||
|   "SpaceWeaponBin": { "Slots": 4 }, | ||||
|   "SuitBin": { "Slots": 2 }, | ||||
|   "WeaponBin": { "Slots": 8 }, | ||||
|   "LastInventorySync": { "$oid": "removed" }, | ||||
|   "LastInventorySync": { "$id": "removed" }, | ||||
|   "NextRefill": { "$date": { "$numberLong": "removed" } }, | ||||
|   "ActiveLandscapeTraps": [], | ||||
|   "ChallengeProgress": [], | ||||
| @ -59,7 +59,7 @@ | ||||
|   "Scoops": [], | ||||
|   "Sentinels": [], | ||||
|   "SentinelWeapons": [], | ||||
|   "Ships": [{ "ItemType": "/Lotus/Types/Items/Ships/DefaultShip", "ItemId": { "$oid": "123123" } }], | ||||
|   "Ships": [{ "ItemType": "/Lotus/Types/Items/Ships/DefaultShip", "ItemId": { "$id": "123123" } }], | ||||
|   "SpaceGuns": [], | ||||
|   "SpaceMelee": [], | ||||
|   "SpaceSuits": [], | ||||
|  | ||||
| @ -5,7 +5,7 @@ | ||||
|   "RewardSeed": -5604904486637265640, | ||||
|   "CrewMemberBin": { "Slots": 3 }, | ||||
|   "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, | ||||
|   "MechBin": { "Slots": 4 }, | ||||
|   "OperatorAmpBin": { "Slots": 8 }, | ||||
| @ -18,7 +18,7 @@ | ||||
|   "SpaceWeaponBin": { "Slots": 4 }, | ||||
|   "SuitBin": { "Slots": 2 }, | ||||
|   "WeaponBin": { "Slots": 8 }, | ||||
|   "LastInventorySync": { "$oid": "647bb5d79f963c9d24668257" }, | ||||
|   "LastInventorySync": { "$id": "647bb5d79f963c9d24668257" }, | ||||
|   "NextRefill": { "$date": { "$numberLong": "1685829131" } }, | ||||
|   "ActiveLandscapeTraps": [], | ||||
|   "ChallengeProgress": [], | ||||
|  | ||||
| @ -8,22 +8,22 @@ | ||||
|   "SpaceWeaponBin": { "Slots": 4 }, | ||||
|   "SuitBin": { "Slots": 1 }, | ||||
|   "WeaponBin": { "Slots": 5 }, | ||||
|   "Recipes": [{ "ItemCount": 1, "ItemType": "/Lotus/Types/Recipes/Weapons/BoltonfaBlueprint" }], | ||||
|   "Recipes": [], | ||||
|   "ChallengeProgress": [{ "Progress": 2, "Name": "EMGetKills" }], | ||||
|   "Consumables": [{ "ItemCount": 1, "ItemType": "/Lotus/Types/Restoratives/LisetAutoHack" }], | ||||
|   "Consumables": [{ "ItemCount": 1, "ItemType": "/Lotus/Types/Restoratives/Cipher" }], | ||||
|   "FlavourItems": [ | ||||
|     { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem1" }, | ||||
|     { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem2" }, | ||||
|     { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem3" }, | ||||
|     { "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem4" } | ||||
|   ], | ||||
|   "LongGuns": [{ "ItemType": "/Lotus/Weapons/Tenno/Bows/HuntingBow", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }], | ||||
|   "Melee": [{ "ItemType": "/Lotus/Weapons/Tenno/Melee/LongSword/LongSword", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }], | ||||
|   "Pistols": [{ "ItemType": "/Lotus/Weapons/Tenno/Pistol/TutorialPistol", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }], | ||||
|   "RawUpgrades": [{ "ItemCount": 1, "LastAdded": { "$oid": "6450f9bfe0714a4d6703f05f" }, "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarShieldMaxMod" }], | ||||
|   "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": { "$id": "647bd27cf856530b4f3bf343" } }], | ||||
|   "Pistols": [{ "ItemType": "/Lotus/Weapons/Tenno/Pistol/Pistol", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$id": "647bd27cf856530b4f3bf343" } }], | ||||
|   "RawUpgrades": [{ "ItemCount": 1, "LastAdded": { "$id": "6450f9bfe0714a4d6703f05f" }, "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarShieldMaxMod" }], | ||||
|   "ReceivedStartingGear": true, | ||||
|   "Suits": [{ "ItemType": "/Lotus/Powersuits/Volt/Volt", "XP": 0, "Configs": [{}, {}, {}], "UpgradeVer": 101, "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }], | ||||
|   "WeaponSkins": [{ "ItemType": "/Lotus/Upgrades/Skins/Volt/VoltHelmet", "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": { "$id": "647bd27cf856530b4f3bf343" } }], | ||||
|   "PendingRecipes": [], | ||||
|   "TrainingDate": 0, | ||||
|   "PlayerLevel": 0, | ||||
|  | ||||
| @ -23,7 +23,7 @@ | ||||
|   ], | ||||
|   "Sorties": [ | ||||
|     { | ||||
|       "_id": { "$oid": "663a4c7d4d932c97c0a3acd7" }, | ||||
|       "_id": { "$id": "663a4c7d4d932c97c0a3acd7" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097600000" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "1715184000000" } }, | ||||
|       "Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards", | ||||
| @ -40,7 +40,7 @@ | ||||
|   ], | ||||
|   "LiteSorties": [ | ||||
|     { | ||||
|       "_id": { "$oid": "663819fd1cec9ebe9d83a06e" }, | ||||
|       "_id": { "$id": "663819fd1cec9ebe9d83a06e" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1714953600000" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "1715558400000" } }, | ||||
|       "Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards", | ||||
| @ -55,7 +55,7 @@ | ||||
|   ], | ||||
|   "SyndicateMissions": [ | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48049" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48049" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "ArbitersSyndicate", | ||||
| @ -63,7 +63,7 @@ | ||||
|       "Nodes": ["SolNode223", "SolNode89", "SolNode146", "SolNode212", "SolNode167", "SolNode48", "SolNode78"] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa4804a" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa4804a" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "CephalonSudaSyndicate", | ||||
| @ -71,7 +71,7 @@ | ||||
|       "Nodes": ["SolNode36", "SolNode59", "SettlementNode12", "SolNode61", "SolNode12", "SolNode138", "SolNode72"] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa4804c" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa4804c" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "EventSyndicate", | ||||
| @ -79,7 +79,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa4804b" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa4804b" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "NecraloidSyndicate", | ||||
| @ -87,7 +87,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa4804d" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa4804d" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "KahlSyndicate", | ||||
| @ -95,7 +95,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa4804e" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa4804e" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "NewLokaSyndicate", | ||||
| @ -103,7 +103,7 @@ | ||||
|       "Nodes": ["SolNode101", "SolNode224", "SolNode205", "SettlementNode2", "SolNode171", "SolNode188", "SolNode75"] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa4804f" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa4804f" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "QuillsSyndicate", | ||||
| @ -111,7 +111,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48050" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48050" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "PerrinSyndicate", | ||||
| @ -119,7 +119,7 @@ | ||||
|       "Nodes": ["SolNode39", "SolNode14", "SolNode203", "SolNode100", "SolNode130", "SolNode64", "SettlementNode15"] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48052" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48052" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegion3Syndicate", | ||||
| @ -127,7 +127,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48051" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48051" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegion2Syndicate", | ||||
| @ -135,7 +135,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48053" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48053" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegionIntermission10Syndicate", | ||||
| @ -143,7 +143,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48057" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48057" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegionIntermission5Syndicate", | ||||
| @ -151,7 +151,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48055" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48055" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegionIntermission3Syndicate", | ||||
| @ -159,7 +159,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48056" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48056" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegionIntermission4Syndicate", | ||||
| @ -167,7 +167,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48054" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48054" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegionIntermission2Syndicate", | ||||
| @ -175,7 +175,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48058" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48058" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegionIntermission6Syndicate", | ||||
| @ -183,7 +183,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa4805c" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa4805c" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegionIntermissionSyndicate", | ||||
| @ -191,7 +191,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa4805a" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa4805a" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegionIntermission8Syndicate", | ||||
| @ -199,7 +199,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa4805b" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa4805b" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegionIntermission9Syndicate", | ||||
| @ -207,7 +207,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48059" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48059" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegionIntermission7Syndicate", | ||||
| @ -215,7 +215,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa4805d" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa4805d" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RadioLegionSyndicate", | ||||
| @ -223,7 +223,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa4805f" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa4805f" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "VentKidsSyndicate", | ||||
| @ -231,7 +231,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa4805e" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa4805e" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "RedVeilSyndicate", | ||||
| @ -239,7 +239,7 @@ | ||||
|       "Nodes": ["SolNode226", "SolNode79", "SolNode216", "SettlementNode11", "SolNode56", "SolNode41", "SolNode23"] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48060" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48060" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "VoxSyndicate", | ||||
| @ -247,7 +247,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a4fc5ba6f84724fa48061" }, | ||||
|       "_id": { "$id": "663a4fc5ba6f84724fa48061" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715097541439" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "SteelMeridianSyndicate", | ||||
| @ -255,7 +255,7 @@ | ||||
|       "Nodes": ["SolNode27", "SolNode107", "SolNode214", "SettlementNode1", "SolNode177", "SolNode141", "SolNode408"] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a71c80000000000000002" }, | ||||
|       "_id": { "$id": "663a71c80000000000000002" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715106248403" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "EntratiSyndicate", | ||||
| @ -341,7 +341,7 @@ | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a71c80000000000000004" }, | ||||
|       "_id": { "$id": "663a71c80000000000000004" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715106248403" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "EntratiLabSyndicate", | ||||
| @ -349,7 +349,7 @@ | ||||
|       "Nodes": [] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a71c80000000000000008" }, | ||||
|       "_id": { "$id": "663a71c80000000000000008" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715106248403" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "CetusSyndicate", | ||||
| @ -415,7 +415,7 @@ | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a71c80000000000000025" }, | ||||
|       "_id": { "$id": "663a71c80000000000000025" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715106248403" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "SolarisSyndicate", | ||||
| @ -481,7 +481,7 @@ | ||||
|       ] | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a71c80000000000000029" }, | ||||
|       "_id": { "$id": "663a71c80000000000000029" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1715106248403" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Tag": "ZarimanSyndicate", | ||||
| @ -491,7 +491,7 @@ | ||||
|   ], | ||||
|   "ActiveMissions": [ | ||||
|     { | ||||
|       "_id": { "$oid": "663a7509d93367863785932d" }, | ||||
|       "_id": { "$id": "663a7509d93367863785932d" }, | ||||
|       "Region": 15, | ||||
|       "Seed": 80795, | ||||
|       "Activation": { "$date": { "$numberLong": "1715107081517" } }, | ||||
| @ -502,7 +502,7 @@ | ||||
|       "Hard": true | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a75f959a5964cadb39879" }, | ||||
|       "_id": { "$id": "663a75f959a5964cadb39879" }, | ||||
|       "Region": 19, | ||||
|       "Seed": 32067, | ||||
|       "Activation": { "$date": { "$numberLong": "1715107321237" } }, | ||||
| @ -513,7 +513,7 @@ | ||||
|       "Hard": true | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a779d3e347839ff301814" }, | ||||
|       "_id": { "$id": "663a779d3e347839ff301814" }, | ||||
|       "Region": 7, | ||||
|       "Seed": 51739, | ||||
|       "Activation": { "$date": { "$numberLong": "1715107741454" } }, | ||||
| @ -523,7 +523,7 @@ | ||||
|       "Modifier": "VoidT3" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a77d916c199f4644ee67d" }, | ||||
|       "_id": { "$id": "663a77d916c199f4644ee67d" }, | ||||
|       "Region": 17, | ||||
|       "Seed": 61179, | ||||
|       "Activation": { "$date": { "$numberLong": "1715107801647" } }, | ||||
| @ -533,7 +533,7 @@ | ||||
|       "Modifier": "VoidT6" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a78c98a609b49b8410726" }, | ||||
|       "_id": { "$id": "663a78c98a609b49b8410726" }, | ||||
|       "Region": 3, | ||||
|       "Seed": 9520, | ||||
|       "Activation": { "$date": { "$numberLong": "1715108041501" } }, | ||||
| @ -544,7 +544,7 @@ | ||||
|       "Hard": true | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a7df15eeabaac79b0a061" }, | ||||
|       "_id": { "$id": "663a7df15eeabaac79b0a061" }, | ||||
|       "Region": 6, | ||||
|       "Seed": 48861, | ||||
|       "Activation": { "$date": { "$numberLong": "1715109361974" } }, | ||||
| @ -555,7 +555,7 @@ | ||||
|       "Hard": true | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a7df25eeabaac79b0a062" }, | ||||
|       "_id": { "$id": "663a7df25eeabaac79b0a062" }, | ||||
|       "Region": 5, | ||||
|       "Seed": 13550, | ||||
|       "Activation": { "$date": { "$numberLong": "1715109361974" } }, | ||||
| @ -566,7 +566,7 @@ | ||||
|       "Hard": true | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a83cdec0d5181435f1324" }, | ||||
|       "_id": { "$id": "663a83cdec0d5181435f1324" }, | ||||
|       "Region": 19, | ||||
|       "Seed": 39392, | ||||
|       "Activation": { "$date": { "$numberLong": "1715110861506" } }, | ||||
| @ -576,7 +576,7 @@ | ||||
|       "Modifier": "VoidT5" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a83cdec0d5181435f1325" }, | ||||
|       "_id": { "$id": "663a83cdec0d5181435f1325" }, | ||||
|       "Region": 19, | ||||
|       "Seed": 88668, | ||||
|       "Activation": { "$date": { "$numberLong": "1715110861506" } }, | ||||
| @ -586,7 +586,7 @@ | ||||
|       "Modifier": "VoidT5" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a83cdec0d5181435f1326" }, | ||||
|       "_id": { "$id": "663a83cdec0d5181435f1326" }, | ||||
|       "Region": 19, | ||||
|       "Seed": 73823, | ||||
|       "Activation": { "$date": { "$numberLong": "1715110861506" } }, | ||||
| @ -596,7 +596,7 @@ | ||||
|       "Modifier": "VoidT5" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a878d23d1514873170466" }, | ||||
|       "_id": { "$id": "663a878d23d1514873170466" }, | ||||
|       "Region": 9, | ||||
|       "Seed": 88696, | ||||
|       "Activation": { "$date": { "$numberLong": "1715111821951" } }, | ||||
| @ -607,7 +607,7 @@ | ||||
|       "Hard": true | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a887d4903098c10992fe6" }, | ||||
|       "_id": { "$id": "663a887d4903098c10992fe6" }, | ||||
|       "Region": 6, | ||||
|       "Seed": 66337, | ||||
|       "Activation": { "$date": { "$numberLong": "1715112061729" } }, | ||||
| @ -617,7 +617,7 @@ | ||||
|       "Modifier": "VoidT2" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a887d4903098c10992fe7" }, | ||||
|       "_id": { "$id": "663a887d4903098c10992fe7" }, | ||||
|       "Region": 10, | ||||
|       "Seed": 5135, | ||||
|       "Activation": { "$date": { "$numberLong": "1715112061729" } }, | ||||
| @ -627,7 +627,7 @@ | ||||
|       "Modifier": "VoidT2" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a8931586c301b1fbe63d3" }, | ||||
|       "_id": { "$id": "663a8931586c301b1fbe63d3" }, | ||||
|       "Region": 15, | ||||
|       "Seed": 32180, | ||||
|       "Activation": { "$date": { "$numberLong": "1715112241196" } }, | ||||
| @ -637,7 +637,7 @@ | ||||
|       "Modifier": "VoidT4" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a8931586c301b1fbe63d4" }, | ||||
|       "_id": { "$id": "663a8931586c301b1fbe63d4" }, | ||||
|       "Region": 12, | ||||
|       "Seed": 22521, | ||||
|       "Activation": { "$date": { "$numberLong": "1715112241196" } }, | ||||
| @ -647,7 +647,7 @@ | ||||
|       "Modifier": "VoidT4" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a8931586c301b1fbe63d5" }, | ||||
|       "_id": { "$id": "663a8931586c301b1fbe63d5" }, | ||||
|       "Region": 2, | ||||
|       "Seed": 28500, | ||||
|       "Activation": { "$date": { "$numberLong": "1715112241196" } }, | ||||
| @ -657,7 +657,7 @@ | ||||
|       "Modifier": "VoidT1" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a8931586c301b1fbe63d6" }, | ||||
|       "_id": { "$id": "663a8931586c301b1fbe63d6" }, | ||||
|       "Region": 3, | ||||
|       "Seed": 24747, | ||||
|       "Activation": { "$date": { "$numberLong": "1715112241196" } }, | ||||
| @ -667,7 +667,7 @@ | ||||
|       "Modifier": "VoidT1" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a8931586c301b1fbe63d7" }, | ||||
|       "_id": { "$id": "663a8931586c301b1fbe63d7" }, | ||||
|       "Region": 17, | ||||
|       "Seed": 63914, | ||||
|       "Activation": { "$date": { "$numberLong": "1715112241196" } }, | ||||
| @ -679,19 +679,19 @@ | ||||
|     } | ||||
|   ], | ||||
|   "NodeOverrides": [ | ||||
|     { "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, | ||||
|     { "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, | ||||
|     { "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, | ||||
|     { "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9969639 }, | ||||
|     { "_id": { "$id": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true }, | ||||
|     { "_id": { "$id": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true }, | ||||
|     { "_id": { "$id": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true }, | ||||
|     { "_id": { "$id": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9969639 }, | ||||
|     { | ||||
|       "_id": { "$oid": "5b8817c2bd4f253264d6aa91" }, | ||||
|       "_id": { "$id": "5b8817c2bd4f253264d6aa91" }, | ||||
|       "Node": "EarthHUB", | ||||
|       "Hide": false, | ||||
|       "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubTwoB", | ||||
|       "Activation": { "$date": { "$numberLong": "1535646600000" } } | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "5d24d1f674491d51f8d44473" }, | ||||
|       "_id": { "$id": "5d24d1f674491d51f8d44473" }, | ||||
|       "Node": "MercuryHUB", | ||||
|       "Hide": true, | ||||
|       "LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid", | ||||
| @ -700,7 +700,7 @@ | ||||
|   ], | ||||
|   "VoidTraders": [ | ||||
|     { | ||||
|       "_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" }, | ||||
|       "_id": { "$id": "5d1e07a0a38e4a4fdd7cefca" }, | ||||
|       "Activation": { "$date": { "$numberLong": "0" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Character": "Baro'Ki Teel", | ||||
| @ -736,7 +736,7 @@ | ||||
|   ], | ||||
|   "PrimeVaultTraders": [ | ||||
|     { | ||||
|       "_id": { "$oid": "631f8c4ac36af423770eaa97" }, | ||||
|       "_id": { "$id": "631f8c4ac36af423770eaa97" }, | ||||
|       "Activation": { "$date": { "$numberLong": "1712858400000" } }, | ||||
|       "InitialStartDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "Node": "TradeHUB1", | ||||
| @ -896,42 +896,42 @@ | ||||
|   ], | ||||
|   "VoidStorms": [ | ||||
|     { | ||||
|       "_id": { "$oid": "663a7581ced28e18f694b550" }, | ||||
|       "_id": { "$id": "663a7581ced28e18f694b550" }, | ||||
|       "Node": "CrewBattleNode519", | ||||
|       "Activation": { "$date": { "$numberLong": "1715109601821" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "ActiveMissionTier": "VoidT1" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a7581ced28e18f694b551" }, | ||||
|       "_id": { "$id": "663a7581ced28e18f694b551" }, | ||||
|       "Node": "CrewBattleNode515", | ||||
|       "Activation": { "$date": { "$numberLong": "1715109601825" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "ActiveMissionTier": "VoidT1" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a7581ced28e18f694b554" }, | ||||
|       "_id": { "$id": "663a7581ced28e18f694b554" }, | ||||
|       "Node": "CrewBattleNode536", | ||||
|       "Activation": { "$date": { "$numberLong": "1715109601832" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "ActiveMissionTier": "VoidT4" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a7581ced28e18f694b555" }, | ||||
|       "_id": { "$id": "663a7581ced28e18f694b555" }, | ||||
|       "Node": "CrewBattleNode539", | ||||
|       "Activation": { "$date": { "$numberLong": "1715109601834" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "ActiveMissionTier": "VoidT4" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a7581ced28e18f694b553" }, | ||||
|       "_id": { "$id": "663a7581ced28e18f694b553" }, | ||||
|       "Node": "CrewBattleNode521", | ||||
|       "Activation": { "$date": { "$numberLong": "1715109601829" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "ActiveMissionTier": "VoidT3" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "663a7581ced28e18f694b552" }, | ||||
|       "_id": { "$id": "663a7581ced28e18f694b552" }, | ||||
|       "Node": "CrewBattleNode535", | ||||
|       "Activation": { "$date": { "$numberLong": "1715109601827" } }, | ||||
|       "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
| @ -956,7 +956,7 @@ | ||||
|   "LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" }, | ||||
|   "PVPChallengeInstances": [ | ||||
|     { | ||||
|       "_id": { "$oid": "6635562d036ce37f7f98e264" }, | ||||
|       "_id": { "$id": "6635562d036ce37f7f98e264" }, | ||||
|       "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete", | ||||
|       "startDate": { "$date": { "$numberLong": "1714771501460" } }, | ||||
|       "endDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
| @ -967,7 +967,7 @@ | ||||
|       "Category": "PVPChallengeTypeCategory_WEEKLY" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "6635562d036ce37f7f98e263" }, | ||||
|       "_id": { "$id": "6635562d036ce37f7f98e263" }, | ||||
|       "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins", | ||||
|       "startDate": { "$date": { "$numberLong": "1714771501460" } }, | ||||
|       "endDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
| @ -978,7 +978,7 @@ | ||||
|       "Category": "PVPChallengeTypeCategory_WEEKLY" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "6635562d036ce37f7f98e265" }, | ||||
|       "_id": { "$id": "6635562d036ce37f7f98e265" }, | ||||
|       "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY", | ||||
|       "startDate": { "$date": { "$numberLong": "1714771501460" } }, | ||||
|       "endDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
| @ -989,18 +989,18 @@ | ||||
|       "Category": "PVPChallengeTypeCategory_WEEKLY" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "6635562d036ce37f7f98e266" }, | ||||
|       "_id": { "$id": "6635562d036ce37f7f98e266" }, | ||||
|       "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet", | ||||
|       "startDate": { "$date": { "$numberLong": "1714771501460" } }, | ||||
|       "endDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|       "params": [{ "n": "ScriptParamValue", "v": 0 }], | ||||
|       "isGenerated": true, | ||||
|       "PVPMode": "PVPMODE_NONE", | ||||
|       "subChallenges": [{ "$oid": "6635562d036ce37f7f98e263" }, { "$oid": "6635562d036ce37f7f98e264" }, { "$oid": "6635562d036ce37f7f98e265" }], | ||||
|       "subChallenges": [{ "$id": "6635562d036ce37f7f98e263" }, { "$id": "6635562d036ce37f7f98e264" }, { "$id": "6635562d036ce37f7f98e265" }], | ||||
|       "Category": "PVPChallengeTypeCategory_WEEKLY_ROOT" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "6639ca6967c1192987d75fee" }, | ||||
|       "_id": { "$id": "6639ca6967c1192987d75fee" }, | ||||
|       "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY", | ||||
|       "startDate": { "$date": { "$numberLong": "1715063401824" } }, | ||||
|       "endDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
| @ -1011,7 +1011,7 @@ | ||||
|       "Category": "PVPChallengeTypeCategory_DAILY" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "6639ca6967c1192987d75fed" }, | ||||
|       "_id": { "$id": "6639ca6967c1192987d75fed" }, | ||||
|       "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM", | ||||
|       "startDate": { "$date": { "$numberLong": "1715063401824" } }, | ||||
|       "endDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
| @ -1022,7 +1022,7 @@ | ||||
|       "Category": "PVPChallengeTypeCategory_DAILY" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "6639ca6967c1192987d75ff2" }, | ||||
|       "_id": { "$id": "6639ca6967c1192987d75ff2" }, | ||||
|       "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY", | ||||
|       "startDate": { "$date": { "$numberLong": "1715063401824" } }, | ||||
|       "endDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
| @ -1033,7 +1033,7 @@ | ||||
|       "Category": "PVPChallengeTypeCategory_DAILY" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "6639ca6967c1192987d75ff1" }, | ||||
|       "_id": { "$id": "6639ca6967c1192987d75ff1" }, | ||||
|       "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPayback_MEDIUM", | ||||
|       "startDate": { "$date": { "$numberLong": "1715063401824" } }, | ||||
|       "endDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
| @ -1044,7 +1044,7 @@ | ||||
|       "Category": "PVPChallengeTypeCategory_DAILY" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "6639ca6967c1192987d75fef" }, | ||||
|       "_id": { "$id": "6639ca6967c1192987d75fef" }, | ||||
|       "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationEASY", | ||||
|       "startDate": { "$date": { "$numberLong": "1715063401824" } }, | ||||
|       "endDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
| @ -1055,7 +1055,7 @@ | ||||
|       "Category": "PVPChallengeTypeCategory_DAILY" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "6639ca6967c1192987d75ff0" }, | ||||
|       "_id": { "$id": "6639ca6967c1192987d75ff0" }, | ||||
|       "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD", | ||||
|       "startDate": { "$date": { "$numberLong": "1715063401824" } }, | ||||
|       "endDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
| @ -1066,7 +1066,7 @@ | ||||
|       "Category": "PVPChallengeTypeCategory_DAILY" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "6639ca6967c1192987d75ff3" }, | ||||
|       "_id": { "$id": "6639ca6967c1192987d75ff3" }, | ||||
|       "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesMEDIUM", | ||||
|       "startDate": { "$date": { "$numberLong": "1715063401824" } }, | ||||
|       "endDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
| @ -1077,7 +1077,7 @@ | ||||
|       "Category": "PVPChallengeTypeCategory_DAILY" | ||||
|     }, | ||||
|     { | ||||
|       "_id": { "$oid": "6639ca6967c1192987d75ff4" }, | ||||
|       "_id": { "$id": "6639ca6967c1192987d75ff4" }, | ||||
|       "challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsEASY", | ||||
|       "startDate": { "$date": { "$numberLong": "1715063401824" } }, | ||||
|       "endDate": { "$date": { "$numberLong": "9999999999999" } }, | ||||
| @ -1109,64 +1109,64 @@ | ||||
|     "Params": "", | ||||
|     "ActiveChallenges": [ | ||||
|       { | ||||
|         "_id": { "$oid": "001300010000000000000008" }, | ||||
|         "_id": { "$id": "001300010000000000000008" }, | ||||
|         "Daily": true, | ||||
|         "Activation": { "$date": { "$numberLong": "1715558400000" } }, | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|         "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyFeedMeMore" | ||||
|       }, | ||||
|       { | ||||
|         "_id": { "$oid": "001300010000000000000009" }, | ||||
|         "_id": { "$id": "001300010000000000000009" }, | ||||
|         "Daily": true, | ||||
|         "Activation": { "$date": { "$numberLong": "1715644800000" } }, | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|         "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTwoForOne" | ||||
|       }, | ||||
|       { | ||||
|         "_id": { "$oid": "001300010000000000000010" }, | ||||
|         "_id": { "$id": "001300010000000000000010" }, | ||||
|         "Daily": true, | ||||
|         "Activation": { "$date": { "$numberLong": "1715731200000" } }, | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|         "Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithFinishers" | ||||
|       }, | ||||
|       { | ||||
|         "_id": { "$oid": "001300010000000000000001" }, | ||||
|         "_id": { "$id": "001300010000000000000001" }, | ||||
|         "Activation": { "$date": { "$numberLong": "1715558400000" } }, | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|         "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions" | ||||
|       }, | ||||
|       { | ||||
|         "_id": { "$oid": "001300010000000000000002" }, | ||||
|         "_id": { "$id": "001300010000000000000002" }, | ||||
|         "Activation": { "$date": { "$numberLong": "1715558400000" } }, | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|         "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus" | ||||
|       }, | ||||
|       { | ||||
|         "_id": { "$oid": "001300010000000000000003" }, | ||||
|         "_id": { "$id": "001300010000000000000003" }, | ||||
|         "Activation": { "$date": { "$numberLong": "1715558400000" } }, | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|         "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies" | ||||
|       }, | ||||
|       { | ||||
|         "_id": { "$oid": "001300010000000000000004" }, | ||||
|         "_id": { "$id": "001300010000000000000004" }, | ||||
|         "Activation": { "$date": { "$numberLong": "1715558400000" } }, | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|         "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyOpenLockers" | ||||
|       }, | ||||
|       { | ||||
|         "_id": { "$oid": "001300010000000000000005" }, | ||||
|         "_id": { "$id": "001300010000000000000005" }, | ||||
|         "Activation": { "$date": { "$numberLong": "1715558400000" } }, | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|         "Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyBloodthirsty" | ||||
|       }, | ||||
|       { | ||||
|         "_id": { "$oid": "001300010000000000000006" }, | ||||
|         "_id": { "$id": "001300010000000000000006" }, | ||||
|         "Activation": { "$date": { "$numberLong": "1715558400000" } }, | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|         "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardEliteSanctuaryOnslaught" | ||||
|       }, | ||||
|       { | ||||
|         "_id": { "$oid": "001300010000000000000007" }, | ||||
|         "_id": { "$id": "001300010000000000000007" }, | ||||
|         "Activation": { "$date": { "$numberLong": "1715558400000" } }, | ||||
|         "Expiry": { "$date": { "$numberLong": "9999999999999" } }, | ||||
|         "Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCompleteSortie" | ||||
|  | ||||
| @ -157,7 +157,7 @@ function updateInventory() { | ||||
|                         a.href = "#"; | ||||
|                         a.onclick = function (event) { | ||||
|                             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.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"); | ||||
|                         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>`; | ||||
|                         td.appendChild(a); | ||||
|                     } | ||||
| @ -176,7 +176,7 @@ function updateInventory() { | ||||
|                             event.preventDefault(); | ||||
|                             const name = prompt("Enter new custom name:"); | ||||
|                             if (name !== null) { | ||||
|                                 renameGear("Suits", item.ItemId.$oid, name); | ||||
|                                 renameGear("Suits", item.ItemId.$id, name); | ||||
|                             } | ||||
|                         }; | ||||
|                         a.title = "Rename"; | ||||
| @ -188,7 +188,7 @@ function updateInventory() { | ||||
|                         a.href = "#"; | ||||
|                         a.onclick = function (event) { | ||||
|                             event.preventDefault(); | ||||
|                             disposeOfGear("Suits", item.ItemId.$oid); | ||||
|                             disposeOfGear("Suits", item.ItemId.$id); | ||||
|                         }; | ||||
|                         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>`; | ||||
| @ -218,7 +218,7 @@ function updateInventory() { | ||||
|                             a.href = "#"; | ||||
|                             a.onclick = function (event) { | ||||
|                                 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.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(); | ||||
|                                 const name = prompt("Enter new custom name:"); | ||||
|                                 if (name !== null) { | ||||
|                                     renameGear(category, item.ItemId.$oid, name); | ||||
|                                     renameGear(category, item.ItemId.$id, name); | ||||
|                                 } | ||||
|                             }; | ||||
|                             a.title = "Rename"; | ||||
| @ -243,7 +243,7 @@ function updateInventory() { | ||||
|                             a.href = "#"; | ||||
|                             a.onclick = function (event) { | ||||
|                                 event.preventDefault(); | ||||
|                                 disposeOfGear(category, item.ItemId.$oid); | ||||
|                                 disposeOfGear(category, item.ItemId.$id); | ||||
|                             }; | ||||
|                             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>`; | ||||
| @ -298,7 +298,7 @@ function updateInventory() { | ||||
|                             a.href = "#"; | ||||
|                             a.onclick = function (event) { | ||||
|                                 event.preventDefault(); | ||||
|                                 disposeOfGear("Upgrades", item.ItemId.$oid); | ||||
|                                 disposeOfGear("Upgrades", item.ItemId.$id); | ||||
|                             }; | ||||
|                             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>`; | ||||
| @ -336,7 +336,7 @@ function updateInventory() { | ||||
|                             a.href = "#"; | ||||
|                             a.onclick = function (event) { | ||||
|                                 event.preventDefault(); | ||||
|                                 disposeOfGear("Upgrades", item.ItemId.$oid); | ||||
|                                 disposeOfGear("Upgrades", item.ItemId.$id); | ||||
|                             }; | ||||
|                             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>`; | ||||
| @ -394,7 +394,7 @@ function updateInventory() { | ||||
|             // Populate powersuit route
 | ||||
|             if (single.getCurrentPath().substr(0, 17) == "/webui/powersuit/") { | ||||
|                 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.ItemName) { | ||||
|                         $("#powersuit-route h3").text(item.ItemName); | ||||
| @ -507,7 +507,7 @@ function addGearExp(category, oid, xp) { | ||||
|     const data = {}; | ||||
|     data[category] = [ | ||||
|         { | ||||
|             ItemId: { $oid: oid }, | ||||
|             ItemId: { $id: oid }, | ||||
|             XP: xp | ||||
|         } | ||||
|     ]; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jānis
						Jānis