From e82408703465480133aeba04039c20b05b04fb95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=81nis?= <97699850+janisslsm@users.noreply.github.com> Date: Sat, 7 Sep 2024 23:32:59 +0300 Subject: [PATCH] w.i.p mods --- src/controllers/api/inventoryController.ts | 1 + src/controllers/api/tauntHistoryController.ts | 9 +- src/controllers/api/upgradesController.ts | 157 +--- src/models/inventoryModels/inventoryModel.ts | 20 +- src/types/inventoryTypes/inventoryTypes.ts | 5 +- src/types/requestTypes.ts | 51 +- .../postTutorialInventory.json | 741 +++++++++++++++++- 7 files changed, 803 insertions(+), 181 deletions(-) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index c02fe6f2..a2be8cc3 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -4,6 +4,7 @@ import { toInventoryResponse } from "@/src/helpers/inventoryHelpers"; import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { config } from "@/src/services/configService"; import { IInventoryDatabase } from "@/src/types/inventoryTypes/inventoryTypes"; +//import new_inventory from "@/static/fixed_responses/postTutorialInventory.json"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const inventoryController: RequestHandler = async (request, response) => { diff --git a/src/controllers/api/tauntHistoryController.ts b/src/controllers/api/tauntHistoryController.ts index 8081dc98..9f10b5da 100644 --- a/src/controllers/api/tauntHistoryController.ts +++ b/src/controllers/api/tauntHistoryController.ts @@ -2,7 +2,6 @@ import { RequestHandler } from "express"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { getInventory } from "@/src/services/inventoryService"; import { ITaunt } from "@/src/types/inventoryTypes/inventoryTypes"; -import { logger } from "@/src/utils/logger"; // eslint-disable-next-line @typescript-eslint/no-misused-promises export const tauntHistoryController: RequestHandler = async (req, res) => { @@ -10,14 +9,8 @@ export const tauntHistoryController: RequestHandler = async (req, res) => { const inventory = await getInventory(accountId); if (req.body !== undefined) { const clientTaunt = JSON.parse(String(req.body)) as ITaunt; - logger.debug(`updating taunt ${clientTaunt.node} to state ${clientTaunt.state}`); inventory.TauntHistory ??= []; - const taunt = inventory.TauntHistory.find(x => x.node == clientTaunt.node); - if (taunt) { - taunt.state = clientTaunt.state; - } else { - inventory.TauntHistory.push(clientTaunt); - } + inventory.TauntHistory.push(clientTaunt); await inventory.save(); res.end(); } else { diff --git a/src/controllers/api/upgradesController.ts b/src/controllers/api/upgradesController.ts index 4c891588..61d7b7f9 100644 --- a/src/controllers/api/upgradesController.ts +++ b/src/controllers/api/upgradesController.ts @@ -1,149 +1,34 @@ import { RequestHandler } from "express"; import { IUpgradesRequest } from "@/src/types/requestTypes"; -import { - ArtifactPolarity, - IEquipmentDatabase, - EquipmentFeatures -} from "@/src/types/inventoryTypes/commonInventoryTypes"; -import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes"; import { getAccountIdForRequest } from "@/src/services/loginService"; -import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService"; +import { getInventory } from "@/src/services/inventoryService"; // eslint-disable-next-line @typescript-eslint/no-misused-promises export const upgradesController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const payload = JSON.parse(String(req.body)) as IUpgradesRequest; const inventory = await getInventory(accountId); - const InventoryChanges: any = {}; - for (const operation of payload.Operations) { - if ( - operation.UpgradeRequirement == "/Lotus/Types/Items/MiscItems/ModSlotUnlocker" || - operation.UpgradeRequirement == "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker" - ) { - await updateCurrency(10, true, accountId); - } else { - addMiscItems(inventory, [ - { - ItemType: operation.UpgradeRequirement, - ItemCount: -1 - } satisfies IMiscItem - ]); - } - - switch (operation.UpgradeRequirement) { - 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.$id) { - item.Features ??= 0; - item.Features |= EquipmentFeatures.DOUBLE_CAPACITY; - break; - } - } - break; - 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.$id) { - item.Features ??= 0; - item.Features |= EquipmentFeatures.UTILITY_SLOT; - break; - } - } - break; - case "/Lotus/Types/Items/MiscItems/HeavyWeaponCatalyst": - console.assert(payload.ItemCategory == "SpaceGuns"); - for (const item of inventory[payload.ItemCategory]) { - if (item._id.toString() == payload.ItemId.$id) { - item.Features ??= 0; - item.Features |= EquipmentFeatures.GRAVIMAG_INSTALLED; - break; - } - } - break; - case "/Lotus/Types/Items/MiscItems/WeaponPrimaryArcaneUnlocker": - case "/Lotus/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker": - 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.$id) { - item.Features ??= 0; - item.Features |= EquipmentFeatures.ARCANE_SLOT; - break; - } - } - break; - case "/Lotus/Types/Items/MiscItems/Forma": - case "/Lotus/Types/Items/MiscItems/FormaUmbra": - 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.$id) { - item.XP = 0; - setSlotPolarity(item, operation.PolarizeSlot, operation.PolarizeValue); - item.Polarized ??= 0; - item.Polarized += 1; - break; - } - } - break; - case "/Lotus/Types/Items/MiscItems/ModSlotUnlocker": - for (const item of inventory[payload.ItemCategory]) { - if (item._id.toString() == payload.ItemId.$id) { - item.ModSlotPurchases ??= 0; - item.ModSlotPurchases += 1; - InventoryChanges[payload.ItemCategory] = { - ItemId: { - $id: payload.ItemId.$id - }, - ModSlotPurchases: item.ModSlotPurchases - }; - break; - } - } - break; - case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker": - for (const item of inventory[payload.ItemCategory]) { - if (item._id.toString() == payload.ItemId.$id) { - item.CustomizationSlotPurchases ??= 0; - item.CustomizationSlotPurchases += 1; - InventoryChanges[payload.ItemCategory] = { - ItemId: { - $id: payload.ItemId.$id - }, - CustomizationSlotPurchases: item.CustomizationSlotPurchases - }; - break; - } - } - break; - case "": - console.assert(operation.OperationType == "UOT_SWAP_POLARITY"); - for (const item of inventory[payload.ItemCategory]) { - 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); - } - } - break; - } - } - break; - default: - throw new Error("Unsupported upgrade: " + operation.UpgradeRequirement); + console.log(req.body); + for (const item of payload.UpgradesToAttach) { + for (const upgrade of inventory.Upgrades) { + if (upgrade._id?.toString() == item.ItemId.$id) { + upgrade.UpgradeFingerprint = item.UpgradeFingerprint; + upgrade.Slot = item.Slot; + upgrade.ParentId = payload.Weapon.ItemId; + } } } + + for (const item of payload.UpgradesToDetach) { + for (const upgrade of inventory.Upgrades) { + if (upgrade._id?.toString() == item.ItemId.$id) { + upgrade.UpgradeFingerprint = undefined; + upgrade.Slot = undefined; + upgrade.ParentId = undefined; + } + } + } + await inventory.save(); - res.json({ InventoryChanges }); -}; - -const setSlotPolarity = (item: IEquipmentDatabase, slot: number, polarity: ArtifactPolarity): void => { - item.Polarity ??= []; - const entry = item.Polarity.find(entry => entry.Slot == slot); - if (entry) { - entry.Value = polarity; - } else { - item.Polarity.push({ Slot: slot, Value: polarity }); - } + res.json({}); }; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 8e64c566..4329c6dd 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -24,7 +24,8 @@ import { IQuestKeyResponse, IWeaponSkinDatabase, IPeriodicMissionCompletionDatabase, - IPeriodicMissionCompletionResponse + IPeriodicMissionCompletionResponse, + ITaunt } from "../../types/inventoryTypes/inventoryTypes"; import { IOid } from "../../types/commonTypes"; import { @@ -237,10 +238,14 @@ RawUpgrades.set("toJSON", { }); //TODO: find out what this is -const upgradesSchema = new Schema( +const upgradesSchema = new Schema( { UpgradeFingerprint: String, - ItemType: String + ItemType: String, + Slot: Number, + ParentId: { + $id: String + } }, { id: false } ); @@ -458,6 +463,13 @@ periodicMissionCompletionsSchema.set("toJSON", { } }); +const tauntSchema = new Schema( + { + node: String + }, + { _id: false } +); + const inventorySchema = new Schema( { accountOwnerId: Schema.Types.ObjectId, @@ -528,6 +540,8 @@ const inventorySchema = new Schema( //Crafting Blueprint(Item Name + CompletionDate) PendingRecipes: [pendingRecipeSchema], + TauntHistory: { type: [tauntSchema], default: undefined }, + //Skins for Suits, Weapons etc. WeaponSkins: [weaponSkinsSchema], diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 9587a080..ce65a67d 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -111,6 +111,7 @@ export type TSolarMapRegion = export interface IPendingRecipeResponse extends Omit { CompletionDate: IMongoDate; } + export interface IInventoryResponse { Horses: IEquipmentDatabase[]; DrifterMelee: IEquipmentDatabase[]; @@ -395,6 +396,9 @@ export interface ICrewShipSalvagedWeaponSkin { ItemType: string; UpgradeFingerprint?: string; ItemId?: IOid; + ParentId?: IOid; + Slot?: number; + _pid?: Types.ObjectId; _id?: Types.ObjectId; } @@ -872,7 +876,6 @@ export interface INotePacks { export interface ITaunt { node: string; - state: "TS_UNLOCKED" | "TS_COMPLETED"; } export interface IWeaponSkinDatabase { diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 288bb99c..786038c9 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -1,5 +1,5 @@ import { IOid } from "./commonTypes"; -import { ArtifactPolarity, IPolarity, IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IBooster, IChallengeProgress, @@ -99,6 +99,26 @@ export interface IUpdateGlyphRequest { AvatarImage: string; } +export interface IUpgradesRequest { + Category: TEquipmentKey; + Weapon: IWeapon; + UpgradesToAttach: IUpgradesToAttach[]; + UpgradesToDetach: IUpgradesToDetach[]; + Cost: number; + UpgradeReq: string; +} + +export interface IWeapon { + ItemType: string; + ItemId: IOid; + XP: number; + UpgradeVer: number; + UnlockLevel: number; + ExtraCapacity: number; + ExtraRemaining: number; +} + +/* export interface IUpgradesRequest { ItemCategory: TEquipmentKey; ItemId: IOid; @@ -106,11 +126,28 @@ export interface IUpgradesRequest { UpgradeVersion: number; Operations: IUpgradeOperation[]; } +*/ -export interface IUpgradeOperation { - OperationType: string; - UpgradeRequirement: string; // uniqueName of item being consumed - PolarizeSlot: number; - PolarizeValue: ArtifactPolarity; - PolarityRemap: IPolarity[]; +export interface IUpgradesToAttach { + ItemType: string; + ItemId: IOid; + UpgradeFingerprint: string; + Slot: number; + ParentId: IOid; } + +export interface IUpgradesToDetach { + ItemType: string; + ItemId: IOid; + UpgradeFingerprint: string; + Slot: number; + ParentId: IOid; +} + +// export interface IUpgradeOperation { +// OperationType: string; +// UpgradeRequirement: string; // uniqueName of item being consumed +// PolarizeSlot: number; +// PolarizeValue: ArtifactPolarity; +// PolarityRemap: IPolarity[]; +// } diff --git a/static/fixed_responses/postTutorialInventory.json b/static/fixed_responses/postTutorialInventory.json index df8b8a86..1963dc09 100644 --- a/static/fixed_responses/postTutorialInventory.json +++ b/static/fixed_responses/postTutorialInventory.json @@ -3,27 +3,218 @@ "SubscribedToEmailsPersonalized": 0, "RewardSeed": -5604904486637265640, "RegularCredits": 3000, - "SentinelBin": { "Slots": 10 }, - "SpaceSuitBin": { "Slots": 4 }, - "SpaceWeaponBin": { "Slots": 4 }, - "SuitBin": { "Slots": 1 }, - "WeaponBin": { "Slots": 5 }, + "SentinelBin": { + "Slots": 10 + }, + "SpaceSuitBin": { + "Slots": 4 + }, + "SpaceWeaponBin": { + "Slots": 4 + }, + "SuitBin": { + "Slots": 1 + }, + "WeaponBin": { + "Slots": 5 + }, "Recipes": [], - "ChallengeProgress": [{ "Progress": 2, "Name": "EMGetKills" }], - "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" } + "ChallengeProgress": [ + ], + "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": 1600000, + "ItemId": { + "$id": "66da4e67cf73a8d6e04e7e9a" + } + } + ], + "Melee": [ + { + "ItemType": "/Lotus/Weapons/Tenno/Melee/LongSword/LongSword", + "XP": 1600000, + "Configs": [ + {}, + {}, + {} + ], + "ItemId": { + "$id": "66da4e73964ed8bf9c170702" + } + } + ], + "Pistols": [ + { + "ItemType": "/Lotus/Weapons/Tenno/Pistol/Pistol", + "XP": 1600000, + "Configs": [ + {}, + {}, + {} + ], + "ItemId": { + "$id": "66da4e777341e52ea2e36047" + } + } + ], + "RawUpgrades": [ + { + "ItemCount": 1, + "LastAdded": { + "$id": "66da4e7bf2af10b3817fad4d" + }, + "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": { "$id": "647bd27cf856530b4f3bf343" } }], - "WeaponSkins": [{ "ItemType": "/Lotus/Upgrades/Skins/Volt/VoltHelmet", "ItemId": { "$id": "647bd27cf856530b4f3bf343" } }], + "TauntHistory": [ + { + "node": "StarchartTutorial" + } + ], + "Suits": [ + { + "ItemType": "/Lotus/Powersuits/Saryn/Saryn", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da532b09ec41258ff159b8" + } + }, + { + "ItemType": "/Lotus/Powersuits/Banshee/Banshee", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4e85a1060bb337f16c49" + } + }, + { + "ItemType": "/Lotus/Powersuits/Ember/Ember", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4e87dad87a5b6379f3af" + } + }, + { + "ItemType": "/Lotus/Powersuits/Excalibur/Excalibur", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4e8939f75193b2f4d1c0" + } + }, + { + "ItemType": "/Lotus/Powersuits/Excalibur/ExcaliburPrime", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4e8cb68236528b48024a" + } + }, + { + "ItemType": "/Lotus/Powersuits/Frost/Frost", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4e8ecef38f3987982819" + } + }, + { + "ItemType": "/Lotus/Powersuits/Frost/FrostPrime", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4e91f299b711dcdda960" + } + }, + { + "ItemType": "/Lotus/Powersuits/Jade/Jade", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4e96ac68c487797efd62" + } + }, + { + "ItemType": "/Lotus/Powersuits/Loki/Loki", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4e9a036377a144b18384" + } + }, + { + "ItemType": "/Lotus/Powersuits/Mag/Mag", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4e9c87f5e8946b956e0c" + } + }, + { + "ItemType": "/Lotus/Powersuits/Ninja/Ninja", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4ea00612f3c7a763cdfc" + } + }, + { + "ItemType": "/Lotus/Powersuits/Rhino/Rhino", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4ea4c2339c01b20ee6e1" + } + }, + { + "ItemType": "/Lotus/Powersuits/Trinity/Trinity", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4ea80785c8d085c03bdd" + } + }, + { + "ItemType": "/Lotus/Powersuits/Volt/Volt", + "XP": 1600000, + "UpgradeVer": 101, + "ItemId": { + "$id": "66da4eaad4b9bee7977f22f4" + } + } + ], + "WeaponSkins": [ + { + "ItemType": "/Lotus/Upgrades/Skins/Volt/VoltHelmet", + "ItemId": { + "$id": "66da4eae34abc831f41f659b" + } + } + ], "PendingRecipes": [], "TrainingDate": 0, "PlayerLevel": 0, @@ -32,17 +223,515 @@ "SentinelWeapons": [], "SpecialItems": [], "StepSequencers": [], - "Upgrades": [], + "Upgrades": [ + { + "ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponArmorPiercingDamageMod", + "ItemId": { + "$id": "66da4eb5d706a7112d4894f2" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponCritChanceMod", + "ItemId": { + "$id": "66da4eb7eef100b1f891583f" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponCritDamageMod", + "ItemId": { + "$id": "66da4ebaa75d24538a62c7a1" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponElectricityDamageMod", + "ItemId": { + "$id": "66da4ebc03b11c2026261dda" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponFireDamageMod", + "ItemId": { + "$id": "66da4ebee8b2b0bbe0aa7521" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponFireRateMod", + "ItemId": { + "$id": "66da4ec11aaddcd4c7052165" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponFreezeDamageMod", + "ItemId": { + "$id": "66da4ec3a18a84596c48fd0b" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponMeleeChargeRateMod", + "ItemId": { + "$id": "66da4ec68f900c9dce77f25e" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponMeleeDamageMod", + "ItemId": { + "$id": "66da4ecacd32891e29b87040" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponMeleeHeavyDamageMod", + "ItemId": { + "$id": "66da4ecc6ecdc3addd7fbbc5" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponStunChanceMod", + "ItemId": { + "$id": "66da4ed133c3092002531ea0" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponArmorPiercingDamageMod", + "ItemId": { + "$id": "66da4ed3ca0126f4e0904987" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponCritChanceMod", + "ItemId": { + "$id": "66da4ed6e4d482a2fa7f4ae6" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponCritDamageMod", + "ItemId": { + "$id": "66da4ed8f11f76e0ec55734e" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponElectricityDamageMod", + "ItemId": { + "$id": "66da4edbecd4c71b40426652" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponFireDamageMod", + "ItemId": { + "$id": "66da4eddff15a60f25f27fe3" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponFireRateMod", + "ItemId": { + "$id": "66da4edfedd2c737249f27b1" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponFreezeDamageMod", + "ItemId": { + "$id": "66da4ee197751c11edbe480c" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponStunChanceMod", + "ItemId": { + "$id": "66da4ee3099f9876c3d5f230" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponAmmoMaxMod", + "ItemId": { + "$id": "66da4ee5719f74045b713f58" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponClipMaxMod", + "ItemId": { + "$id": "66da4ee8f86349fd87a0c24d" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponDamageAmountMod", + "ItemId": { + "$id": "66da4eea5c0f3babebe60c34" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponFireIterationsMod", + "ItemId": { + "$id": "66da4eed5b41fbe202fe36b4" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponPunctureDepthMod", + "ItemId": { + "$id": "66da4eefaa75316cc3ab55f9" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponReloadSpeedMod", + "ItemId": { + "$id": "66da4ef1e2a041e410a4276c" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponArmorPiercingDamageMod", + "ItemId": { + "$id": "66da4ef38b45f124a570e1f8" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponCritChanceMod", + "ItemId": { + "$id": "66da4ef6dacaaa69d2fdbd8b" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponCritDamageMod", + "ItemId": { + "$id": "66da4ef9d525b197f6f81473" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponElectricityDamageMod", + "ItemId": { + "$id": "66da4efc6fe23457bf37d021" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponFireDamageMod", + "ItemId": { + "$id": "66da4efe6401fdd0b48c6880" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponFireRateMod", + "ItemId": { + "$id": "66da4f06b7241e0e207cead3" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponFreezeDamageMod", + "ItemId": { + "$id": "66da4f0808923bd61b6c2053" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponStunChanceMod", + "ItemId": { + "$id": "66da4f0b02a680f83e14001b" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponAmmoMaxMod", + "ItemId": { + "$id": "66da4f0d6df0e0588eb4b0d1" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponClipMaxMod", + "ItemId": { + "$id": "66da4f10009fdfcf69ab2ec1" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponDamageAmountMod", + "ItemId": { + "$id": "66da4f147ec9bcddfc5c07ad" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponFireIterationsMod", + "ItemId": { + "$id": "66da4f17f2368e85f09a853b" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponPunctureDepthMod", + "ItemId": { + "$id": "66da4f1aae38e21d01a54857" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponReloadSpeedMod", + "ItemId": { + "$id": "66da4f1ca1256c2711fa7f05" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Sentinel/SentinelArmourMod", + "ItemId": { + "$id": "66da4f1eddde58b69f855d59" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Sentinel/SentinelHealthMaxMod", + "ItemId": { + "$id": "66da4f20956388914102602d" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Sentinel/SentinelShieldMaxMod", + "ItemId": { + "$id": "66da4f23e36bec4611cdc6a5" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Sentinel/SentinelShieldRechargeRateMod", + "ItemId": { + "$id": "66da4f26cc54a853f617560e" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponArmorPiercingDamageMod", + "ItemId": { + "$id": "66da4f28276333b2a81b2dd3" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponCritChanceMod", + "ItemId": { + "$id": "66da4f2a809873a6291f6360" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponCritDamageMod", + "ItemId": { + "$id": "66da4f2e1d8300362cd6c57c" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponElectricityDamageMod", + "ItemId": { + "$id": "66da4f30737bbae85f49943e" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponFireDamageMod", + "ItemId": { + "$id": "66da4f321702c6013aa98f3f" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponFireRateMod", + "ItemId": { + "$id": "66da4f3564da6f4896163167" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponFreezeDamageMod", + "ItemId": { + "$id": "66da4f38468122372c30f7f1" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponStunChanceMod", + "ItemId": { + "$id": "66da4f38468122372c30f7f1" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponAmmoMaxMod", + "ItemId": { + "$id": "66da4f3c2571c97042d79e6d" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponClipMaxMod", + "ItemId": { + "$id": "66da4f3fcf5e3e74f2652f5e" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponDamageAmountMod", + "ItemId": { + "$id": "66da4f430649a4b84f65ce37" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponFireIterationsMod", + "ItemId": { + "$id": "66da4f45ae2b2ad6215270a0" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponPunctureDepthMod", + "ItemId": { + "$id": "66da4f4849a8970ba57019d0" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponReloadSpeedMod", + "ItemId": { + "$id": "66da4f4b5acc3304578859bf" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarAbilityDurationMod", + "ItemId": { + "$id": "66da4f4d7ab7e4017e17955f" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarAbilityEfficiencyMod", + "ItemId": { + "$id": "66da4f4f0af01429193da436" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarAbilityRangeMod", + "ItemId": { + "$id": "66da4f51a94c498b42a03491" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarAbilityStrengthMod", + "ItemId": { + "$id": "66da4f5483fb4b98ac12b00d" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarArmourMod", + "ItemId": { + "$id": "66da4f5694b794ae96c5f470" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarEnemyRadarMod", + "ItemId": { + "$id": "66da4f59b0ecba3d09139e48" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarHealthMaxMod", + "ItemId": { + "$id": "66da4f5eb5770f99bf18d831" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarLootRadarMod", + "ItemId": { + "$id": "66da4f63bd77ab6e4842a88b" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarPowerMaxMod", + "ItemId": { + "$id": "66da4f660b3c3565fd36d4ab" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarShieldMaxMod", + "ItemId": { + "$id": "66da4f6884fc768ed81ae47a" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarShieldRechargeRateMod", + "ItemId": { + "$id": "66da4f6be96044a294480118" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarSprintSpeedMod", + "ItemId": { + "$id": "66da4f6db2ac0720a4bf2409" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarStaminaMaxMod", + "ItemId": { + "$id": "66da4f70ec6f7abf7520a356" + } + }, + { + "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarStaminaRechargeRateMod", + "ItemId": { + "$id": "66da4f738ea387a9a484294d" + } + } + ], "Boosters": [], "EmailItems": [], "LeagueTickets": [], "MiscItems": [], "Robotics": [], - "XPInfo": [], - "Missions": [ { - "Tag" : "SolNode103", - "Completes" : 1, - "BestRating" : 0.2 - }], + "XPInfo": [ + { + "ItemType": "/Lotus/Powersuits/Saryn/Saryn", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Banshee/Banshee", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Ember/Ember", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Excalibur/Excalibur", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Excalibur/ExcaliburPrime", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Frost/Frost", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Frost/FrostPrime", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Jade/Jade", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Loki/Loki", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Mag/Mag", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Ninja/Ninja", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Rhino/Rhino", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Trinity/Trinity", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Powersuits/Volt/Volt", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Weapons/Tenno/Bows/HuntingBow", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Weapons/Tenno/Melee/LongSword/LongSword", + "XP": 1600000 + }, + { + "ItemType": "/Lotus/Weapons/Tenno/Pistol/Pistol", + "XP": 1600000 + } + ], + "Missions": [ + { + "Tag": "SolNode103", + "Completes": 1, + "BestRating": 0.2 + } + ], "PremiumCredits": 50 -} +} \ No newline at end of file