From ca9fc6608b61881de0edb6f92a940737a08e75a4 Mon Sep 17 00:00:00 2001 From: 7f8ddd <141754874+7f8ddd@users.noreply.github.com> Date: Sun, 3 Sep 2023 09:23:55 -0500 Subject: [PATCH 1/5] =?UTF-8?q?Add=20skills=20to=20skills=20list=20of=20sk?= =?UTF-8?q?ills=20with=20skills=20in=20a=20list=20of=20skills=20a=E2=80=A6?= =?UTF-8?q?=20(#50)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> --- src/types/inventoryTypes/inventoryTypes.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index b175dc64..aacfdc15 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -905,11 +905,17 @@ export interface PersonalTechProject { export interface PlayerSkills { LPP_SPACE: number; - LPS_GUNNERY: number; + LPP_DRIFTER: number; + LPS_NONE: number; LPS_PILOTING: number; - LPS_ENGINEERING: number; + LPS_GUNNERY: number; LPS_TACTICAL: number; + LPS_ENGINEERING: number; LPS_COMMAND: number; + LPS_DRIFT_COMBAT: number; + LPS_DRIFT_RIDING: number; + LPS_DRIFT_OPPORTUNITY: number; + LPS_DRIFT_ENDURANCE: number; } export interface QuestKey { From f71ede4016376772a108d1cdeddbf0c7a5fed057 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 3 Sep 2023 19:38:53 +0200 Subject: [PATCH 2/5] Bump warframe-items from 1.1260.79 to 1.1260.121 (#44) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index ce96b3cb..eb3bf701 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", "mongoose": "^7.4.1", - "warframe-items": "1.1260.79" + "warframe-items": "1.1260.121" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", @@ -3597,9 +3597,9 @@ } }, "node_modules/warframe-items": { - "version": "1.1260.79", - "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.79.tgz", - "integrity": "sha512-Xp/nt++v5V3ghEZNhE56Mge2jeBjjr+ua6PC/7ZHYTMsO8x1xheOMuVxl7v7IjscO1rHFdYEQnSU9Gw1uipYsQ==" + "version": "1.1260.121", + "resolved": "https://registry.npmjs.org/warframe-items/-/warframe-items-1.1260.121.tgz", + "integrity": "sha512-C/te9WSsc3HzeSAgziAGKs6sKnYqCO41QDov8E6RUfl3D06C7ko8mHsJ2j65zF515IatJl/xelVtp0aAnQcWiQ==" }, "node_modules/webidl-conversions": { "version": "7.0.0", diff --git a/package.json b/package.json index ba9a9b62..c334e370 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "dotenv": "^16.1.3", "express": "^5.0.0-beta.1", "mongoose": "^7.4.1", - "warframe-items": "1.1260.79" + "warframe-items": "1.1260.121" }, "devDependencies": { "@tsconfig/node20": "^1.0.0", From a9318632498efaf9df7c17eaafe1e995701bbab8 Mon Sep 17 00:00:00 2001 From: 7f8ddd <141754874+7f8ddd@users.noreply.github.com> Date: Tue, 5 Sep 2023 07:37:30 -0500 Subject: [PATCH 3/5] Fix interface names, +genericUpdate (#51) Co-authored-by: nk Co-authored-by: Ordis <134585663+OrdisPrime@users.noreply.github.com> --- .../api/genericUpdateController.ts | 27 +- .../api/missionInventoryUpdateController.ts | 17 +- src/managers/sessionManager.ts | 20 +- src/models/inventoryModel.ts | 22 +- src/models/shipModel.ts | 4 +- src/services/inventoryService.ts | 59 +- src/types/commonTypes.ts | 2 +- src/types/genericUpdate.ts | 4 + src/types/inventoryTypes/SuitTypes.ts | 18 +- .../inventoryTypes/commonInventoryTypes.ts | 11 +- src/types/inventoryTypes/inventoryTypes.ts | 757 +++++++++--------- src/types/inventoryTypes/weaponTypes.ts | 16 +- src/types/loginTypes.ts | 2 +- src/types/missionInventoryUpdateType.ts | 47 +- src/types/purchaseTypes.ts | 5 +- src/types/session.ts | 4 +- src/types/shipTypes.ts | 7 +- 17 files changed, 534 insertions(+), 488 deletions(-) create mode 100644 src/types/genericUpdate.ts diff --git a/src/controllers/api/genericUpdateController.ts b/src/controllers/api/genericUpdateController.ts index ce541ada..63453c94 100644 --- a/src/controllers/api/genericUpdateController.ts +++ b/src/controllers/api/genericUpdateController.ts @@ -1,7 +1,30 @@ +import { updateGeneric } from "@/src/services/inventoryService"; +import { IGenericUpdate } from "@/src/types/genericUpdate"; import { RequestHandler } from "express"; -const genericUpdateController: RequestHandler = (_req, res) => { - res.json({}); +// TODO: Nightwave evidence submission support is the only thing missing. +// TODO: Also, you might want to test this, because I definitely didn't. +const genericUpdateController: RequestHandler = async (request, response) => { + const accountId = request.query.accountId as string; + + const [body] = String(request.body).split("\n"); + + let reply = {}; + try { + const update = JSON.parse(body) as IGenericUpdate; + if (typeof update !== "object") { + throw new Error("Invalid data format"); + } + + reply = await updateGeneric(update, accountId); + } catch (err) { + console.error("Error parsing JSON data:", err); + } + + // Response support added for when Nightwave is supported below. + // response.json(reply); + + response.json({}); }; export { genericUpdateController }; diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index bde878af..16eeb0e4 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -1,6 +1,6 @@ import { RequestHandler } from "express"; import { missionInventoryUpdate } from "@/src/services/inventoryService"; -import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; +import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; /* - [ ] crossPlaySetting - [ ] rewardsMultiplier @@ -25,13 +25,13 @@ import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; - [ ] hosts - [x] ChallengeProgress - [ ] SeasonChallengeHistory -- [ ] PS +- [ ] PS (Passive anti-cheat data which includes your username, module list, process list, and system name.) - [ ] ActiveDojoColorResearch - [ ] RewardInfo - [ ] ReceivedCeremonyMsg - [ ] LastCeremonyResetDate -- [ ] MissionPTS -- [ ] RepHash +- [ ] MissionPTS (Used to validate the mission/alive time above.) +- [ ] RepHash (A hash from the replication manager/RepMgr Unknown what it does.) - [ ] EndOfMatchUpload - [ ] ObjectiveReached - [ ] FpsAvg @@ -42,20 +42,19 @@ import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const missionInventoryUpdateController: RequestHandler = async (req, res) => { - const [data] = String(req.body).split("\n"); const id = req.query.accountId as string; - // TODO - salt check + const [data] = String(req.body).split("\n"); try { - const parsedData = JSON.parse(data) as MissionInventoryUpdate; - if (typeof parsedData !== "object" || parsedData === null) throw new Error("Invalid data format"); + const parsedData = JSON.parse(data) as IMissionInventoryUpdate; + if (typeof parsedData !== "object") throw new Error("Invalid data format"); await missionInventoryUpdate(parsedData, id); } catch (err) { console.error("Error parsing JSON data:", err); } - // TODO - get original response + // TODO - Return the updated inventory the way the game does it. res.json({}); }; diff --git a/src/managers/sessionManager.ts b/src/managers/sessionManager.ts index de990f9e..e6558d57 100644 --- a/src/managers/sessionManager.ts +++ b/src/managers/sessionManager.ts @@ -1,10 +1,10 @@ -import { Session, FindSessionRequest } from "@/src/types/session"; +import { ISession, IFindSessionRequest } from "@/src/types/session"; -const sessions: Session[] = []; +const sessions: ISession[] = []; -function createNewSession(sessionData: Session, Creator: string): Session { +function createNewSession(sessionData: ISession, Creator: string): ISession { const sessionId = getNewSessionID(); - const newSession: Session = { + const newSession: ISession = { sessionId, creatorId: Creator, maxPlayers: sessionData.maxPlayers || 4, @@ -35,15 +35,15 @@ function createNewSession(sessionData: Session, Creator: string): Session { return newSession; } -function getAllSessions(): Session[] { +function getAllSessions(): ISession[] { return sessions; } -function getSessionByID(sessionId: string): Session | undefined { +function getSessionByID(sessionId: string): ISession | undefined { return sessions.find(session => session.sessionId === sessionId); } -function getSession(sessionIdOrRequest: string | FindSessionRequest): any[] { +function getSession(sessionIdOrRequest: string | IFindSessionRequest): any[] { if (typeof sessionIdOrRequest === "string") { const session = sessions.find(session => session.sessionId === sessionIdOrRequest); if (session) { @@ -58,10 +58,10 @@ function getSession(sessionIdOrRequest: string | FindSessionRequest): any[] { return []; } - const request = sessionIdOrRequest as FindSessionRequest; + const request = sessionIdOrRequest as IFindSessionRequest; const matchingSessions = sessions.filter(session => { for (const key in request) { - if (key !== "eloRating" && key !== "queryId" && request[key] !== session[key as keyof Session]) { + if (key !== "eloRating" && key !== "queryId" && request[key] !== session[key as keyof ISession]) { return false; } } @@ -74,7 +74,7 @@ function getSession(sessionIdOrRequest: string | FindSessionRequest): any[] { })); } -function getSessionByCreatorID(creatorId: string): Session | undefined { +function getSessionByCreatorID(creatorId: string): ISession | undefined { return sessions.find(session => session.creatorId === creatorId); } diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index f73dd1fb..9578d314 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -1,6 +1,12 @@ import { Model, Schema, Types, model } from "mongoose"; -import { FlavourItem, RawUpgrade, MiscItem, IInventoryDatabase, Booster } from "../types/inventoryTypes/inventoryTypes"; -import { Oid } from "../types/commonTypes"; +import { + IFlavourItem, + IRawUpgrade, + IMiscItem, + IInventoryDatabase, + IBooster +} from "../types/inventoryTypes/inventoryTypes"; +import { IOid } from "../types/commonTypes"; import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; @@ -74,7 +80,7 @@ const BoosterSchema = new Schema({ WeaponSchema.set("toJSON", { transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; + returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies IOid; delete returnedObject._id; delete returnedObject.__v; } @@ -130,7 +136,7 @@ const suitSchema = new Schema({ suitSchema.set("toJSON", { transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies Oid; + returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies IOid; delete returnedObject._id; delete returnedObject.__v; } @@ -338,10 +344,10 @@ type InventoryDocumentProps = { LongGuns: Types.DocumentArray; Pistols: Types.DocumentArray; Melee: Types.DocumentArray; - FlavourItems: Types.DocumentArray; - RawUpgrades: Types.DocumentArray; - MiscItems: Types.DocumentArray; - Boosters: Types.DocumentArray; + FlavourItems: Types.DocumentArray; + RawUpgrades: Types.DocumentArray; + MiscItems: Types.DocumentArray; + Boosters: Types.DocumentArray; }; type InventoryModelType = Model; diff --git a/src/models/shipModel.ts b/src/models/shipModel.ts index 463a95c2..bd56d933 100644 --- a/src/models/shipModel.ts +++ b/src/models/shipModel.ts @@ -1,6 +1,6 @@ import { Schema, model } from "mongoose"; import { IShip } from "../types/shipTypes"; -import { Oid } from "../types/commonTypes"; +import { IOid } from "../types/commonTypes"; const roomSchema = new Schema( { @@ -19,7 +19,7 @@ const shipSchema = new Schema({ shipSchema.set("toJSON", { transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call - returnedObject.ShipId = { $oid: returnedObject._id.toString() } satisfies Oid; + returnedObject.ShipId = { $oid: returnedObject._id.toString() } satisfies IOid; delete returnedObject._id; } }); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 19900497..565dd910 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -5,13 +5,18 @@ import { Types } from "mongoose"; import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; import { SlotType } from "@/src/types/purchaseTypes"; import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; -import { ChallengeProgress, FlavourItem, IInventoryDatabaseDocument } from "@/src/types/inventoryTypes/inventoryTypes"; import { - MissionInventoryUpdate, - MissionInventoryUpdateCard, - MissionInventoryUpdateGear, - MissionInventoryUpdateItem + IChallengeProgress, + IFlavourItem, + IInventoryDatabaseDocument +} from "@/src/types/inventoryTypes/inventoryTypes"; +import { + IMissionInventoryUpdate, + IMissionInventoryUpdateCard, + IMissionInventoryUpdateGear, + IMissionInventoryUpdateItem } from "../types/missionInventoryUpdateType"; +import { IGenericUpdate } from "../types/genericUpdate"; const createInventory = async (accountOwnerId: Types.ObjectId) => { try { @@ -76,6 +81,27 @@ export const updateCurrency = async (price: number, usePremium: boolean, account return { [currencyName]: -price }; }; +// TODO: AffiliationMods support (Nightwave). +export const updateGeneric = async (data: IGenericUpdate, accountId: string) => { + const inventory = await getInventory(accountId); + + // Make it an array for easier parsing. + if (typeof data.NodeIntrosCompleted === "string") { + data.NodeIntrosCompleted = [data.NodeIntrosCompleted]; + } + + // Combine the two arrays into one. + data.NodeIntrosCompleted = inventory.NodeIntrosCompleted.concat(data.NodeIntrosCompleted); + + // Remove duplicate entries. + const nodes = [...new Set(data.NodeIntrosCompleted)]; + + inventory.NodeIntrosCompleted = nodes; + await inventory.save(); + + return data; +}; + export type WeaponTypeInternal = "LongGuns" | "Pistols" | "Melee"; export const addWeapon = async ( @@ -104,7 +130,7 @@ export const addWeapon = async ( return changedInventory[weaponType][weaponIndex - 1].toJSON(); }; -export const addCustomization = async (customizatonName: string, accountId: string): Promise => { +export const addCustomization = async (customizatonName: string, accountId: string): Promise => { const inventory = await getInventory(accountId); const flavourItemIndex = inventory.FlavourItems.push({ ItemType: customizatonName }) - 1; @@ -114,7 +140,7 @@ export const addCustomization = async (customizatonName: string, accountId: stri const addGearExpByCategory = ( inventory: IInventoryDatabaseDocument, - gearArray: MissionInventoryUpdateGear[] | undefined, + gearArray: IMissionInventoryUpdateGear[] | undefined, categoryName: "Pistols" | "LongGuns" | "Melee" | "Suits" ) => { const category = inventory[categoryName]; @@ -132,7 +158,7 @@ const addGearExpByCategory = ( const addItemsByCategory = ( inventory: IInventoryDatabaseDocument, - itemsArray: (MissionInventoryUpdateItem | MissionInventoryUpdateCard)[] | undefined, + itemsArray: (IMissionInventoryUpdateItem | IMissionInventoryUpdateCard)[] | undefined, categoryName: "RawUpgrades" | "MiscItems" ) => { const category = inventory[categoryName]; @@ -149,7 +175,7 @@ const addItemsByCategory = ( }); }; -const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: ChallengeProgress[] | undefined) => { +const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: IChallengeProgress[] | undefined) => { const category = inventory.ChallengeProgress; itemsArray?.forEach(({ Name, Progress }) => { @@ -167,19 +193,16 @@ const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: Challe const gearKeys = ["Suits", "Pistols", "LongGuns", "Melee"] as const; type GearKeysType = (typeof gearKeys)[number]; -export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accountId: string): Promise => { +export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, accountId: string): Promise => { const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress } = data; const inventory = await getInventory(accountId); - // TODO - multipliers logic - // credits - inventory.RegularCredits += RegularCredits || 0; - - // gear exp + // Gear XP gearKeys.forEach((key: GearKeysType) => addGearExpByCategory(inventory, data[key], key)); - // other - addItemsByCategory(inventory, RawUpgrades, "RawUpgrades"); // TODO - check mods fusion level + // Other + // TODO: Ensure mods have a valid fusion level and items have a valid quantity, preferably inside of the functions themselves. + addItemsByCategory(inventory, RawUpgrades, "RawUpgrades"); addItemsByCategory(inventory, MiscItems, "MiscItems"); addChallenges(inventory, ChallengeProgress); @@ -187,7 +210,7 @@ export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accou }; export const addBooster = async (ItemType: string, time: number, accountId: string): Promise => { - const currentTime = Math.floor(Date.now() / 1000) - 129600; // booster time getting more without 129600, probably defence logic, idk + const currentTime = Math.floor(Date.now() / 1000) - 129600; // Value is wrong without 129600. Figure out why, please. :) const inventory = await getInventory(accountId); const { Boosters } = inventory; diff --git a/src/types/commonTypes.ts b/src/types/commonTypes.ts index 4c1a7bf7..8b7f30b9 100644 --- a/src/types/commonTypes.ts +++ b/src/types/commonTypes.ts @@ -1,3 +1,3 @@ -export interface Oid { +export interface IOid { $oid: string; } diff --git a/src/types/genericUpdate.ts b/src/types/genericUpdate.ts new file mode 100644 index 00000000..3f61f671 --- /dev/null +++ b/src/types/genericUpdate.ts @@ -0,0 +1,4 @@ +export interface IGenericUpdate { + NodeIntrosCompleted: string | string[]; + // AffiliationMods: any[]; +} \ No newline at end of file diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts index 7dc8ca5f..033b1967 100644 --- a/src/types/inventoryTypes/SuitTypes.ts +++ b/src/types/inventoryTypes/SuitTypes.ts @@ -1,5 +1,5 @@ -import { Oid } from "@/src/types/commonTypes"; -import { AbilityOverride, Color, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IOid } from "@/src/types/commonTypes"; +import { IAbilityOverride, IColor, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { Document, Types } from "mongoose"; // export interface ISuitDocument extends ISuitResponse, Document {} @@ -8,7 +8,7 @@ export interface ISuitDocument extends Document, ISuitResponse { } export interface ISuitResponse extends ISuitDatabase { - ItemId: Oid; + ItemId: IOid; } export interface ISuitDatabase { @@ -18,7 +18,7 @@ export interface ISuitDatabase { XP?: number; InfestationDate?: Date; Features?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; Polarized?: number; ModSlotPurchases?: number; FocusLens?: string; @@ -28,14 +28,14 @@ export interface ISuitDatabase { export interface SuitConfig { Skins?: string[]; - pricol?: Color; - attcol?: Color; - eyecol?: Color; - sigcol?: Color; + pricol?: IColor; + attcol?: IColor; + eyecol?: IColor; + sigcol?: IColor; Upgrades?: string[]; Songs?: Song[]; Name?: string; - AbilityOverride?: AbilityOverride; + AbilityOverride?: IAbilityOverride; PvpUpgrades?: string[]; ugly?: boolean; } diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts index fd59073c..0664407f 100644 --- a/src/types/inventoryTypes/commonInventoryTypes.ts +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -1,4 +1,4 @@ -export interface Polarity { +export interface IPolarity { Slot: number; Value: FocusSchool; } @@ -15,7 +15,7 @@ export enum FocusSchool { ApWard = "AP_WARD" } -export interface Color { +export interface IColor { t0?: number; t1?: number; t2?: number; @@ -26,16 +26,17 @@ export interface Color { m1?: number; } -export interface AbilityOverride { +export interface IAbilityOverride { Ability: string; Index: number; } -export interface SlotsBin { +export interface ISlotsBin { Slots: number; } -export interface sigcol { +// ISigCol? IsIgCoL? ISIGCOL! +export interface Isigcol { t0: number; t1: number; en: number; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index aacfdc15..9fef903d 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -1,10 +1,8 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ - import { Document, Types } from "mongoose"; -import { Oid } from "../commonTypes"; -import { AbilityOverride, Color, FocusSchool, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IOid } from "../commonTypes"; +import { IAbilityOverride, IColor, FocusSchool, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; -import { OperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; +import { IOperatorLoadOutSigcol, IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; export interface IInventoryDatabase extends IInventoryResponse { accountOwnerId: Types.ObjectId; @@ -20,14 +18,14 @@ export interface IInventoryResponse { PremiumCredits: number; PremiumCreditsFree: number; FusionPoints: number; - SuitBin: CrewShipSalvageBinClass; - WeaponBin: CrewShipSalvageBinClass; - SentinelBin: CrewShipSalvageBinClass; - SpaceSuitBin: CrewShipSalvageBinClass; - SpaceWeaponBin: CrewShipSalvageBinClass; - PvpBonusLoadoutBin: CrewMemberBinClass; - PveBonusLoadoutBin: CrewShipSalvageBinClass; - RandomModBin: CrewShipSalvageBinClass; + SuitBin: ICrewShipSalvageBinClass; + WeaponBin: ICrewShipSalvageBinClass; + SentinelBin: ICrewShipSalvageBinClass; + SpaceSuitBin: ICrewShipSalvageBinClass; + SpaceWeaponBin: ICrewShipSalvageBinClass; + PvpBonusLoadoutBin: ICrewMemberBinClass; + PveBonusLoadoutBin: ICrewShipSalvageBinClass; + RandomModBin: ICrewShipSalvageBinClass; TradesRemaining: number; DailyAffiliation: number; DailyAffiliationPvp: number; @@ -35,137 +33,137 @@ export interface IInventoryResponse { DailyFocus: number; GiftsRemaining: number; HandlerPoints: number; - MiscItems: Consumable[]; + MiscItems: IConsumable[]; ChallengesFixVersion: number; - ChallengeProgress: ChallengeProgress[]; - RawUpgrades: RawUpgrade[]; + ChallengeProgress: IChallengeProgress[]; + RawUpgrades: IRawUpgrade[]; ReceivedStartingGear: boolean; Suits: ISuitDatabase[]; LongGuns: IWeaponDatabase[]; Pistols: IWeaponDatabase[]; Melee: IWeaponDatabase[]; - Ships: Ship[]; - QuestKeys: QuestKey[]; - FlavourItems: FlavourItem[]; - Scoops: Scoop[]; + Ships: IShip[]; + QuestKeys: IQuestKey[]; + FlavourItems: IFlavourItem[]; + Scoops: IScoop[]; TrainingRetriesLeft: number; - LoadOutPresets: LoadOutPresets; - CurrentLoadOutIds: Array; - Missions: Mission[]; + LoadOutPresets: ILoadOutPresets; + CurrentLoadOutIds: Array; + Missions: IMission[]; RandomUpgradesIdentified: number; LastRegionPlayed: string; - XPInfo: EmailItem[]; - Recipes: Consumable[]; - WeaponSkins: WeaponSkin[]; - PendingRecipes: PendingRecipe[]; + XPInfo: IEmailItem[]; + Recipes: IConsumable[]; + WeaponSkins: IWeaponSkin[]; + PendingRecipes: IPendingRecipe[]; TrainingDate: Date; PlayerLevel: number; - Upgrades: CrewShipSalvagedWeaponSkin[]; + Upgrades: ICrewShipSalvagedWeaponSkin[]; EquippedGear: string[]; DeathMarks: string[]; - FusionTreasures: FusionTreasure[]; - WebFlags: WebFlags; + FusionTreasures: IFusionTreasure[]; + WebFlags: IWebFlags; CompletedAlerts: string[]; - Consumables: Consumable[]; - LevelKeys: Consumable[]; - TauntHistory: TauntHistory[]; + Consumables: IConsumable[]; + LevelKeys: IConsumable[]; + TauntHistory: ITauntHistory[]; StoryModeChoice: string; - PeriodicMissionCompletions: PeriodicMissionCompletion[]; - KubrowPetEggs: KubrowPetEgg[]; - LoreFragmentScans: LoreFragmentScan[]; + PeriodicMissionCompletions: IPeriodicMissionCompletion[]; + KubrowPetEggs: IKubrowPetEgg[]; + LoreFragmentScans: ILoreFragmentScan[]; EquippedEmotes: string[]; - PendingTrades: PendingTrade[]; - Boosters: Booster[]; + PendingTrades: IPendingTrade[]; + Boosters: IBooster[]; ActiveDojoColorResearch: string; - SentientSpawnChanceBoosters: SentientSpawnChanceBoosters; - Affiliations: Affiliation[]; + SentientSpawnChanceBoosters: ISentientSpawnChanceBoosters; + Affiliations: IAffiliation[]; QualifyingInvasions: any[]; FactionScores: number[]; - SpaceSuits: Space[]; - SpaceMelee: Space[]; - SpaceGuns: SpaceGun[]; + SpaceSuits: ISpace[]; + SpaceMelee: ISpace[]; + SpaceGuns: ISpaceGun[]; ArchwingEnabled: boolean; PendingSpectreLoadouts: any[]; - SpectreLoadouts: SpectreLoadout[]; - SentinelWeapons: SentinelWeapon[]; - Sentinels: Sentinel[]; - EmailItems: EmailItem[]; + SpectreLoadouts: ISpectreLoadout[]; + SentinelWeapons: ISentinelWeapon[]; + Sentinels: ISentinel[]; + EmailItems: IEmailItem[]; CompletedSyndicates: string[]; - FocusXP: FocusXP; + FocusXP: IFocusXP; Wishlist: string[]; - Alignment: Alignment; + Alignment: IAlignment; CompletedSorties: string[]; - LastSortieReward: LastSortieReward[]; - Drones: Drone[]; - StepSequencers: StepSequencer[]; + LastSortieReward: ILastSortieReward[]; + Drones: IDrone[]; + StepSequencers: IStepSequencer[]; ActiveAvatarImageType: string; - KubrowPets: KubrowPet[]; - ShipDecorations: Consumable[]; - OperatorAmpBin: CrewShipSalvageBinClass; + KubrowPets: IKubrowPet[]; + ShipDecorations: IConsumable[]; + OperatorAmpBin: ICrewShipSalvageBinClass; DailyAffiliationCetus: number; DailyAffiliationQuills: number; - DiscoveredMarkers: DiscoveredMarker[]; - CompletedJobs: CompletedJob[]; + DiscoveredMarkers: IDiscoveredMarker[]; + CompletedJobs: ICompletedJob[]; FocusAbility: string; - FocusUpgrades: FocusUpgrade[]; - OperatorAmps: OperatorAmp[]; + FocusUpgrades: IFocusUpgrade[]; + OperatorAmps: IOperatorAmp[]; HasContributedToDojo: boolean; HWIDProtectEnabled: boolean; - KubrowPetPrints: KubrowPetPrint[]; - AlignmentReplay: Alignment; - PersonalGoalProgress: PersonalGoalProgress[]; + KubrowPetPrints: IKubrowPetPrint[]; + AlignmentReplay: IAlignment; + PersonalGoalProgress: IPersonalGoalProgress[]; DailyAffiliationSolaris: number; - SpecialItems: SpecialItem[]; + SpecialItems: ISpecialItem[]; ThemeStyle: string; ThemeBackground: string; ThemeSounds: string; BountyScore: number; - ChallengeInstanceStates: ChallengeInstanceState[]; + ChallengeInstanceStates: IChallengeInstanceState[]; LoginMilestoneRewards: string[]; - OperatorLoadOuts: OperatorLoadOut[]; + OperatorLoadOuts: IOperatorLoadOut[]; DailyAffiliationVentkids: number; DailyAffiliationVox: number; RecentVendorPurchases: Array; - Hoverboards: Hoverboard[]; + Hoverboards: IHoverboard[]; NodeIntrosCompleted: string[]; - CompletedJobChains: CompletedJobChain[]; - SeasonChallengeHistory: SeasonChallengeHistory[]; - MoaPets: MoaPet[]; + CompletedJobChains: ICompletedJobChain[]; + SeasonChallengeHistory: ISeasonChallengeHistory[]; + MoaPets: IMoaPet[]; EquippedInstrument: string; - InvasionChainProgress: InvasionChainProgress[]; - DataKnives: DataKnife[]; - NemesisHistory: NemesisHistory[]; + InvasionChainProgress: IInvasionChainProgress[]; + DataKnives: IDataKnife[]; + NemesisHistory: INemesisHistory[]; LastNemesisAllySpawnTime: Date; - Settings: Settings; - PersonalTechProjects: PersonalTechProject[]; - CrewShips: CrewShip[]; - CrewShipSalvageBin: CrewShipSalvageBinClass; - PlayerSkills: PlayerSkills; - CrewShipAmmo: Consumable[]; - CrewShipSalvagedWeaponSkins: CrewShipSalvagedWeaponSkin[]; - CrewShipWeapons: CrewShipWeapon[]; - CrewShipSalvagedWeapons: CrewShipWeapon[]; - CrewShipWeaponSkins: CrewShipSalvagedWeaponSkin[]; + Settings: ISettings; + PersonalTechProjects: IPersonalTechProject[]; + CrewShips: ICrewShip[]; + CrewShipSalvageBin: ICrewShipSalvageBinClass; + PlayerSkills: IPlayerSkills; + CrewShipAmmo: IConsumable[]; + CrewShipSalvagedWeaponSkins: ICrewShipSalvagedWeaponSkin[]; + CrewShipWeapons: ICrewShipWeapon[]; + CrewShipSalvagedWeapons: ICrewShipWeapon[]; + CrewShipWeaponSkins: ICrewShipSalvagedWeaponSkin[]; TradeBannedUntil: Date; PlayedParkourTutorial: boolean; SubscribedToEmailsPersonalized: number; - MechBin: CrewMemberBinClass; + MechBin: ICrewMemberBinClass; DailyAffiliationEntrati: number; DailyAffiliationNecraloid: number; - MechSuits: MechSuit[]; - InfestedFoundry: InfestedFoundry; + MechSuits: IMechSuit[]; + InfestedFoundry: IInfestedFoundry; BlessingCooldown: Date; - CrewMemberBin: CrewMemberBinClass; - CrewShipHarnesses: CrewShipHarness[]; - CrewShipRawSalvage: Consumable[]; - CrewMembers: CrewMember[]; - AdultOperatorLoadOuts: AdultOperatorLoadOut[]; - LotusCustomization: LotusCustomization; + CrewMemberBin: ICrewMemberBinClass; + CrewShipHarnesses: ICrewShipHarness[]; + CrewShipRawSalvage: IConsumable[]; + CrewMembers: ICrewMember[]; + AdultOperatorLoadOuts: IAdultOperatorLoadOut[]; + LotusCustomization: ILotusCustomization; UseAdultOperatorLoadout: boolean; DailyAffiliationZariman: number; NemesisAbandonedRewards: string[]; DailyAffiliationKahl: number; - LastInventorySync: Oid; + LastInventorySync: IOid; NextRefill: Date; ActiveLandscapeTraps: any[]; EvolutionProgress: any[]; @@ -174,26 +172,26 @@ export interface IInventoryResponse { Quests: any[]; Robotics: any[]; UsedDailyDeals: any[]; - LibraryPersonalProgress: LibraryPersonalProgress[]; - CollectibleSeries: CollectibleSery[]; - LibraryAvailableDailyTaskInfo: LibraryAvailableDailyTaskInfo; + LibraryPersonalProgress: ILibraryPersonalProgress[]; + CollectibleSeries: ICollectibleSery[]; + LibraryAvailableDailyTaskInfo: ILibraryAvailableDailyTaskInfo; HasResetAccount: boolean; - PendingCoupon: PendingCoupon; + PendingCoupon: IPendingCoupon; Harvestable: boolean; DeathSquadable: boolean; } -export interface AdultOperatorLoadOut { +export interface IAdultOperatorLoadOut { Skins: string[]; - attcol: Color; - eyecol: Color; - facial: Color; - pricol: Color; + attcol: IColor; + eyecol: IColor; + facial: IColor; + pricol: IColor; Upgrades?: string[]; - ItemId: Oid; + ItemId: IOid; } -export interface Affiliation { +export interface IAffiliation { Initiated?: boolean; Standing: number; Title?: number; @@ -202,253 +200,254 @@ export interface Affiliation { Tag: string; } -export interface Alignment { +export interface IAlignment { Wisdom: number; Alignment: number; } -export interface Date { +export interface IDate { $date: { $numberLong: string }; } -export interface Booster { +export interface IBooster { ExpiryDate: number; ItemType: string; } -export interface ChallengeInstanceState { - id: Oid; +export interface IChallengeInstanceState { + id: IOid; Progress: number; - params: Param[]; + params: IParam[]; IsRewardCollected: boolean; } -export interface Param { +export interface IParam { n: string; v: string; } -export interface ChallengeProgress { +export interface IChallengeProgress { Progress: number; Name: string; Completed?: string[]; } -export interface CollectibleSery { +export interface ICollectibleSery { CollectibleType: string; Count: number; Tracking: string; ReqScans: number; - IncentiveStates: IncentiveState[]; + IncentiveStates: IIncentiveState[]; } -export interface IncentiveState { +export interface IIncentiveState { threshold: number; complete: boolean; sent: boolean; } -export interface CompletedJobChain { +export interface ICompletedJobChain { LocationTag: string; Jobs: string[]; } -export interface CompletedJob { +export interface ICompletedJob { JobId: string; StageCompletions: number[]; } -export interface Consumable { +export interface IConsumable { ItemCount: number; ItemType: string; } -export interface CrewMemberBinClass { +export interface ICrewMemberBinClass { Slots: number; } -export interface CrewMember { +export interface ICrewMember { ItemType: string; NemesisFingerprint: number; Seed: number; HireDate: Date; AssignedRole: number; - SkillEfficiency: SkillEfficiency; + SkillEfficiency: ISkillEfficiency; WeaponConfigIdx: number; - WeaponId: Oid; + WeaponId: IOid; XP: number; PowersuitType: string; - Configs: CrewMemberConfig[]; + Configs: ICrewMemberConfig[]; SecondInCommand: boolean; - ItemId: Oid; + ItemId: IOid; } // eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface CrewMemberConfig {} +export interface ICrewMemberConfig {} -export interface SkillEfficiency { - PILOTING: Combat; - GUNNERY: Combat; - ENGINEERING: Combat; - COMBAT: Combat; - SURVIVABILITY: Combat; +export interface ISkillEfficiency { + PILOTING: ICombat; + GUNNERY: ICombat; + ENGINEERING: ICombat; + COMBAT: ICombat; + SURVIVABILITY: ICombat; } -export interface Combat { +export interface ICombat { Assigned: number; } -export interface CrewShipHarness { +export interface ICrewShipHarness { ItemType: string; - Configs: CrewShipHarnessConfig[]; + Configs: ICrewShipHarnessConfig[]; Features: number; UpgradeVer: number; XP: number; - Polarity: Polarity[]; + Polarity: IPolarity[]; Polarized: number; - ItemId: Oid; + ItemId: IOid; } -export interface CrewShipHarnessConfig { +export interface ICrewShipHarnessConfig { Upgrades?: string[]; } -export interface CrewShipSalvageBinClass { +export interface ICrewShipSalvageBinClass { Extra: number; Slots: number; } -export interface CrewShipSalvagedWeaponSkin { +export interface ICrewShipSalvagedWeaponSkin { ItemType: string; UpgradeFingerprint?: string; - ItemId: Oid; + ItemId: IOid; } -export interface CrewShipWeapon { +export interface ICrewShipWeapon { ItemType: string; UpgradeType?: string; UpgradeFingerprint?: string; - Configs?: CrewShipHarnessConfig[]; + Configs?: ICrewShipHarnessConfig[]; UpgradeVer?: number; - ItemId: Oid; + ItemId: IOid; } -export interface CrewShip { +export interface ICrewShip { ItemType: string; - Configs: CrewShipConfig[]; - Weapon: CrewshipWeapon; - Customization: Customization; + Configs: ICrewShipConfig[]; + Weapon: ICrewshipWeapon; + Customization: ICustomization; ItemName: string; - RailjackImage: FlavourItem; - CrewMembers: CrewMembers; - ItemId: Oid; + RailjackImage: IFlavourItem; + CrewMembers: ICrewMembers; + ItemId: IOid; } -export interface CrewShipConfig { +export interface ICrewShipConfig { Skins?: string[]; - pricol?: Color; + pricol?: IColor; } -export interface CrewMembers { - SLOT_A: Slot; - SLOT_B: Slot; - SLOT_C: Slot; +export interface ICrewMembers { + SLOT_A: ISlot; + SLOT_B: ISlot; + SLOT_C: ISlot; } -export interface Slot { - ItemId: Oid; +export interface ISlot { + ItemId: IOid; } -export interface Customization { - CrewshipInterior: Terior; +export interface ICustomization { + CrewshipInterior: ITerior; } -export interface Terior { +export interface ITerior { SkinFlavourItem: string; - Colors: Color; - ShipAttachments?: ShipAttachments; + Colors: IColor; + ShipAttachments?: IShipAttachments; } -export interface ShipAttachments { +export interface IShipAttachments { HOOD_ORNAMENT: string; } -export interface FlavourItem { +export interface IFlavourItem { ItemType: string; } -export interface RawUpgrade { +export interface IRawUpgrade { ItemCount: number; ItemType: string; } -export interface MiscItem { +export interface IMiscItem { ItemCount: number; ItemType: string; } -export interface CrewshipWeapon { - PILOT: Pilot; - PORT_GUNS: PortGuns; +export interface ICrewshipWeapon { + PILOT: IPilot; + PORT_GUNS: IPortGuns; } -export interface Pilot { - PRIMARY_A: L; - SECONDARY_A: L; +export interface IPilot { + PRIMARY_A: IL; + SECONDARY_A: IL; } -export interface L { - ItemId?: Oid; +// L? Bozo. +export interface IL { + ItemId?: IOid; mod?: number; cus?: number; ItemType?: string; hide?: boolean; } -export interface PortGuns { - PRIMARY_A: L; +export interface IPortGuns { + PRIMARY_A: IL; } -export interface DataKnife { +export interface IDataKnife { ItemType: string; XP: number; - Configs: DataKnifeConfig[]; + Configs: IDataKnifeConfig[]; UpgradeVer: number; - ItemId: Oid; + ItemId: IOid; } -export interface DataKnifeConfig { +export interface IDataKnifeConfig { Upgrades?: string[]; - pricol?: Color; + pricol?: IColor; Skins: string[]; - attcol?: Color; - sigcol?: Color; + attcol?: IColor; + sigcol?: IColor; } -export interface DiscoveredMarker { +export interface IDiscoveredMarker { tag: string; discoveryState: number[]; } -export interface Drone { +export interface IDrone { ItemType: string; CurrentHP: number; - ItemId: Oid; + ItemId: IOid; RepairStart?: Date; } -export interface EmailItem { +export interface IEmailItem { ItemType: string; XP: number; } -export interface FocusUpgrade { +export interface IFocusUpgrade { ItemType: string; Level?: number; IsUniversal?: boolean; } -export interface FocusXP { +export interface IFocusXP { AP_POWER: number; AP_TACTIC: number; AP_DEFENSE: number; @@ -456,33 +455,33 @@ export interface FocusXP { AP_WARD: number; } -export interface FusionTreasure { +export interface IFusionTreasure { ItemCount: number; ItemType: string; Sockets: number; } -export interface Hoverboard { +export interface IHoverboard { ItemType: string; - Configs: HoverboardConfig[]; + Configs: IHoverboardConfig[]; ModularParts: string[]; ItemName?: string; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; UpgradeVer: number; XP: number; Features: number; - ItemId: Oid; + ItemId: IOid; } -export interface HoverboardConfig { +export interface IHoverboardConfig { Upgrades?: string[]; - Skins?: PurpleSkin[]; - pricol?: Color; - sigcol?: Sigcol; - attcol?: Color; + Skins?: IPurpleSkin[]; + pricol?: IColor; + sigcol?: ISigcol; + attcol?: IColor; } -export enum PurpleSkin { +export enum IPurpleSkin { Empty = "", The5Be4Af71A38E4A9306040E15 = "5be4af71a38e4a9306040e15", The5C930Ac3A38E4A24Bc3Ad5De = "5c930ac3a38e4a24bc3ad5de", @@ -490,58 +489,58 @@ export enum PurpleSkin { The5Dd8A8E3A38E4A321A45E6A0 = "5dd8a8e3a38e4a321a45e6a0" } -export interface Sigcol { +export interface ISigcol { t3: number; } -export interface InfestedFoundry { +export interface IInfestedFoundry { Name: string; - Resources: Resource[]; + Resources: IResource[]; Slots: number; XP: number; - ConsumedSuits: ConsumedSuit[]; + ConsumedSuits: IConsumedSuit[]; InvigorationIndex: number; InvigorationSuitOfferings: string[]; InvigorationsApplied: number; } -export interface ConsumedSuit { +export interface IConsumedSuit { s: string; - c?: Color; + c?: IColor; } -export interface Resource { +export interface IResource { ItemType: string; Count: number; } -export interface InvasionChainProgress { - id: Oid; +export interface IInvasionChainProgress { + id: IOid; count: number; } -export interface KubrowPetEgg { +export interface IKubrowPetEgg { ItemType: KubrowPetEggItemType; ExpirationDate: Date; - ItemId: Oid; + ItemId: IOid; } export enum KubrowPetEggItemType { LotusTypesGameKubrowPetEggsKubrowEgg = "/Lotus/Types/Game/KubrowPet/Eggs/KubrowEgg" } -export interface KubrowPetPrint { +export interface IKubrowPetPrint { ItemType: KubrowPetPrintItemType; Name: string; IsMale: boolean; Size: number; - DominantTraits: Traits; - RecessiveTraits: Traits; - ItemId: Oid; + DominantTraits: ITraits; + RecessiveTraits: ITraits; + ItemId: IOid; InheritedModularParts?: any[]; } -export interface Traits { +export interface ITraits { BaseColor: string; SecondaryColor: string; TertiaryColor: string; @@ -566,38 +565,38 @@ export enum KubrowPetPrintItemType { LotusTypesGameKubrowPetImprintedTraitPrint = "/Lotus/Types/Game/KubrowPet/ImprintedTraitPrint" } -export interface KubrowPet { +export interface IKubrowPet { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; UpgradeVer: number; - Details: Details; + Details: IDetails; XP?: number; Polarized?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; Features?: number; InfestationDate?: Date; InfestationDays?: number; InfestationType?: string; - ItemId: Oid; + ItemId: IOid; ModularParts?: string[]; } -export interface KubrowPetConfig { +export interface IKubrowPetConfig { Skins?: string[]; - pricol?: Color; - attcol?: Color; + pricol?: IColor; + attcol?: IColor; Upgrades?: string[]; } -export interface Details { +export interface IDetails { Name: string; IsPuppy: boolean; HasCollar: boolean; PrintsRemaining: number; Status: Status; HatchDate: Date; - DominantTraits: Traits; - RecessiveTraits: Traits; + DominantTraits: ITraits; + RecessiveTraits: ITraits; IsMale: boolean; Size: number; } @@ -607,13 +606,13 @@ export enum Status { StatusStasis = "STATUS_STASIS" } -export interface LastSortieReward { - SortieId: Oid; +export interface ILastSortieReward { + SortieId: IOid; StoreItem: string; Manifest: string; } -export interface LibraryAvailableDailyTaskInfo { +export interface ILibraryAvailableDailyTaskInfo { EnemyTypes: string[]; EnemyLocTag: string; EnemyIcon: string; @@ -623,98 +622,98 @@ export interface LibraryAvailableDailyTaskInfo { RewardStanding: number; } -export interface LibraryPersonalProgress { +export interface ILibraryPersonalProgress { TargetType: string; Scans: number; Completed: boolean; } -export interface LoadOutPresets { - NORMAL: Normal[]; - NORMAL_PVP: Archwing[]; - LUNARO: Lunaro[]; - ARCHWING: Archwing[]; - SENTINEL: Archwing[]; - OPERATOR: Archwing[]; - GEAR: Gear[]; - KDRIVE: Kdrive[]; - DATAKNIFE: Archwing[]; - MECH: Mech[]; - OPERATOR_ADULT: Archwing[]; +export interface ILoadOutPresets { + NORMAL: INormal[]; + NORMAL_PVP: IArchwing[]; + LUNARO: ILunaro[]; + ARCHWING: IArchwing[]; + SENTINEL: IArchwing[]; + OPERATOR: IArchwing[]; + GEAR: IGear[]; + KDRIVE: IKdrive[]; + DATAKNIFE: IArchwing[]; + MECH: IMech[]; + OPERATOR_ADULT: IArchwing[]; } -export interface Archwing { +export interface IArchwing { PresetIcon: string; Favorite: boolean; n?: string; - s: L; - l?: L; - m?: L; - ItemId: Oid; - p?: L; + s: IL; + l?: IL; + m?: IL; + ItemId: IOid; + p?: IL; } -export interface Gear { +export interface IGear { n: string; - s: L; - p: L; - l: L; - m: L; - ItemId: Oid; + s: IL; + p: IL; + l: IL; + m: IL; + ItemId: IOid; } -export interface Kdrive { +export interface IKdrive { PresetIcon: string; Favorite: boolean; - s: L; - ItemId: Oid; + s: IL; + ItemId: IOid; } -export interface Lunaro { +export interface ILunaro { n: string; - s: L; - m: L; - ItemId: Oid; + s: IL; + m: IL; + ItemId: IOid; } -export interface Mech { +export interface IMech { PresetIcon: string; Favorite: boolean; - s: L; - h: L; - a: L; - ItemId: Oid; + s: IL; + h: IL; + a: IL; + ItemId: IOid; } -export interface Normal { +export interface INormal { FocusSchool: FocusSchool; PresetIcon: string; Favorite: boolean; n: string; - s: L; - p: L; - l: L; - m: L; - h: L; - a?: L; - ItemId: Oid; + s: IL; + p: IL; + l: IL; + m: IL; + h: IL; + a?: IL; + ItemId: IOid; } export enum UpgradeType { LotusWeaponsGrineerKuvaLichUpgradesInnateDamageRandomMod = "/Lotus/Weapons/Grineer/KuvaLich/Upgrades/InnateDamageRandomMod" } -export interface LoreFragmentScan { +export interface ILoreFragmentScan { Progress: number; Region?: string; ItemType: string; } -export interface LotusCustomization { +export interface ILotusCustomization { Upgrades: any[]; PvpUpgrades: any[]; Skins: string[]; - pricol: Color; + pricol: IColor; attcol: any[]; sigcol: any[]; eyecol: any[]; @@ -723,37 +722,37 @@ export interface LotusCustomization { Persona: string; } -export interface MechSuit { +export interface IMechSuit { ItemType: string; - Configs: DataKnifeConfig[]; + Configs: IDataKnifeConfig[]; Features: number; UpgradeVer: number; XP: number; - Polarity: Polarity[]; + Polarity: IPolarity[]; Polarized: number; - ItemId: Oid; + ItemId: IOid; } -export interface Mission { +export interface IMission { Completes: number; Tier?: number; Tag: string; RewardsCooldownTime?: Date; } -export interface MoaPet { +export interface IMoaPet { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; UpgradeVer: number; ModularParts: string[]; XP?: number; Features?: number; ItemName: string; - Polarity?: Polarity[]; - ItemId: Oid; + Polarity?: IPolarity[]; + ItemId: IOid; } -export interface NemesisHistory { +export interface INemesisHistory { fp: number; manifest: Manifest; KillingSuit: string; @@ -787,74 +786,74 @@ export enum Manifest { LotusTypesGameNemesisKuvaLichKuvaLichManifestVersionTwo = "/Lotus/Types/Game/Nemesis/KuvaLich/KuvaLichManifestVersionTwo" } -export interface OperatorAmp { +export interface IOperatorAmp { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; ModularParts?: string[]; XP?: number; UpgradeVer?: number; ItemName?: string; Features?: number; - ItemId: Oid; + ItemId: IOid; } -export interface OperatorLoadOut { +export interface IOperatorLoadOut { Skins: string[]; - pricol?: Color; - attcol?: Color; - eyecol: Color; - facial?: Color; - sigcol?: OperatorLoadOutSigcol; - OperatorAmp?: Oid; + pricol?: IColor; + attcol?: IColor; + eyecol: IColor; + facial?: IColor; + sigcol?: IOperatorLoadOutSigcol; + OperatorAmp?: IOid; Upgrades?: string[]; - AbilityOverride: AbilityOverride; - ItemId: Oid; + AbilityOverride: IAbilityOverride; + ItemId: IOid; } -export interface PendingCoupon { +export interface IPendingCoupon { Expiry: Date; Discount: number; } -export interface PendingRecipe { +export interface IPendingRecipe { ItemType: string; CompletionDate: Date; - ItemId: Oid; + ItemId: IOid; } -export interface PendingTrade { +export interface IPendingTrade { State: number; SelfReady: boolean; BuddyReady: boolean; - Giving?: Giving; + Giving?: IGiving; Revision: number; - Getting: Getting; - ItemId: Oid; + Getting: IGetting; + ItemId: IOid; ClanTax?: number; } -export interface Getting { - RandomUpgrades?: RandomUpgrade[]; +export interface IGetting { + RandomUpgrades?: IRandomUpgrade[]; _SlotOrderInfo: GettingSlotOrderInfo[]; PremiumCredits?: number; } -export interface RandomUpgrade { - UpgradeFingerprint: UpgradeFingerprint; +export interface IRandomUpgrade { + UpgradeFingerprint: IUpgradeFingerprint; ItemType: string; - ItemId: Oid; + ItemId: IOid; } -export interface UpgradeFingerprint { +export interface IUpgradeFingerprint { compat: string; lim: number; lvlReq: number; pol: FocusSchool; - buffs: Buff[]; - curses: Buff[]; + buffs: IBuff[]; + curses: IBuff[]; } -export interface Buff { +export interface IBuff { Tag: string; Value: number; } @@ -865,8 +864,8 @@ export enum GettingSlotOrderInfo { P = "P" } -export interface Giving { - RawUpgrades: Consumable[]; +export interface IGiving { + RawUpgrades: IConsumable[]; _SlotOrderInfo: GivingSlotOrderInfo[]; } @@ -876,34 +875,34 @@ export enum GivingSlotOrderInfo { LotusUpgradesModsPistolDualStatElectEventPistolMod = "/Lotus/Upgrades/Mods/Pistol/DualStat/ElectEventPistolMod" } -export interface PeriodicMissionCompletion { +export interface IPeriodicMissionCompletion { date: Date; tag: string; count?: number; } -export interface PersonalGoalProgress { +export interface IPersonalGoalProgress { Count: number; Tag: string; Best?: number; - _id: Oid; + _id: IOid; ReceivedClanReward0?: boolean; ReceivedClanReward1?: boolean; } -export interface PersonalTechProject { +export interface IPersonalTechProject { State: number; ReqCredits: number; ItemType: string; - ReqItems: Consumable[]; + ReqItems: IConsumable[]; CompletionDate?: Date; - ItemId: Oid; + ItemId: IOid; ProductCategory?: string; - CategoryItemId?: Oid; + CategoryItemId?: IOid; HasContributions?: boolean; } -export interface PlayerSkills { +export interface IPlayerSkills { LPP_SPACE: number; LPP_DRIFTER: number; LPS_NONE: number; @@ -918,59 +917,59 @@ export interface PlayerSkills { LPS_DRIFT_ENDURANCE: number; } -export interface QuestKey { - Progress?: Progress[]; +export interface IQuestKey { + Progress?: IProgress[]; unlock?: boolean; Completed?: boolean; ItemType: string; CompletionDate?: Date; } -export interface Progress { +export interface IProgress { c: number; i: boolean; m: boolean; b?: any[]; } -export interface RawUpgrade { +export interface IRawUpgrade { ItemCount: number; - LastAdded?: Oid; + LastAdded?: IOid; ItemType: string; } -export interface Scoop { +export interface IScoop { ItemType: string; - Configs: ScoopConfig[]; + Configs: IScoopConfig[]; UpgradeVer: number; - ItemId: Oid; + ItemId: IOid; } -export interface ScoopConfig { - pricol?: Color; +export interface IScoopConfig { + pricol?: IColor; } -export interface SeasonChallengeHistory { +export interface ISeasonChallengeHistory { challenge: string; id: string; } -export interface SentientSpawnChanceBoosters { +export interface ISentientSpawnChanceBoosters { numOceanMissionsCompleted: number; } -export interface SentinelWeapon { +export interface ISentinelWeapon { ItemType: string; - Configs: SentinelWeaponConfig[]; + Configs: ISentinelWeaponConfig[]; UpgradeVer?: number; XP?: number; - ItemId: Oid; + ItemId: IOid; Features?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; Polarized?: number; } -export interface SentinelWeaponConfig { +export interface ISentinelWeaponConfig { Skins?: FluffySkin[]; Upgrades?: string[]; } @@ -982,18 +981,18 @@ export enum FluffySkin { LotusUpgradesSkinsHolsterCustomizationsRifleUpperBack = "/Lotus/Upgrades/Skins/HolsterCustomizations/RifleUpperBack" } -export interface Sentinel { +export interface ISentinel { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; UpgradeVer: number; XP: number; Features?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; Polarized?: number; - ItemId: Oid; + ItemId: IOid; } -export interface Settings { +export interface ISettings { FriendInvRestriction: string; GiftMode: string; GuildInvRestriction: string; @@ -1001,69 +1000,69 @@ export interface Settings { TradingRulesConfirmed: boolean; } -export interface Ship { +export interface IShip { ItemType: string; - ShipExterior: Terior; + ShipExterior: ITerior; AirSupportPower: string; - ItemId: Oid; + ItemId: IOid; } -export interface SpaceGun { +export interface ISpaceGun { ItemType: string; - Configs: SpaceGunConfig[]; + Configs: ISpaceGunConfig[]; XP?: number; UpgradeVer?: number; - ItemId: Oid; + ItemId: IOid; Features?: number; Polarized?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; UpgradeType?: UpgradeType; UpgradeFingerprint?: string; ItemName?: string; } -export interface SpaceGunConfig { +export interface ISpaceGunConfig { Skins?: string[]; - pricol?: Color; + pricol?: IColor; Upgrades?: string[]; } -export interface Space { +export interface ISpace { ItemType: string; - Configs: KubrowPetConfig[]; + Configs: IKubrowPetConfig[]; XP: number; UpgradeVer: number; - ItemId: Oid; + ItemId: IOid; Features?: number; } -export interface SpecialItem { +export interface ISpecialItem { ItemType: string; - Configs: SpecialItemConfig[]; + Configs: ISpecialItemConfig[]; XP?: number; UpgradeVer?: number; Features: number; - ItemId: Oid; + ItemId: IOid; Polarized?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; ModSlotPurchases?: number; } -export interface SpecialItemConfig { +export interface ISpecialItemConfig { Upgrades?: string[]; - pricol?: Color; + pricol?: IColor; Skins?: string[]; - attcol?: Color; - eyecol?: PurpleCol; - sigcol?: PurpleCol; + attcol?: IColor; + eyecol?: IPurpleCol; + sigcol?: IPurpleCol; Name?: string; } -export interface PurpleCol { +export interface IPurpleCol { en: number; } -export interface SpectreLoadout { +export interface ISpectreLoadout { LongGuns: string; Melee: string; Pistols: string; @@ -1073,30 +1072,30 @@ export interface SpectreLoadout { ItemType: string; } -export interface StepSequencer { - NotePacks: NotePacks; +export interface IStepSequencer { + NotePacks: INotePacks; FingerPrint: string; Name: string; - ItemId: Oid; + ItemId: IOid; } -export interface NotePacks { +export interface INotePacks { MELODY: string; BASS: string; PERCUSSION: string; } -export interface TauntHistory { +export interface ITauntHistory { node: string; state: string; } -export interface WeaponSkin { +export interface IWeaponSkin { ItemType: string; - ItemId: Oid; + ItemId: IOid; } -export interface WebFlags { +export interface IWebFlags { activeBuyPlat: number; noShow2FA: boolean; Tennocon2018Digital: boolean; diff --git a/src/types/inventoryTypes/weaponTypes.ts b/src/types/inventoryTypes/weaponTypes.ts index 7fe6bf40..032becba 100644 --- a/src/types/inventoryTypes/weaponTypes.ts +++ b/src/types/inventoryTypes/weaponTypes.ts @@ -1,9 +1,9 @@ -import { Oid } from "@/src/types/commonTypes"; -import { Color, Polarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; +import { IOid } from "@/src/types/commonTypes"; +import { IColor, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { Types } from "mongoose"; export interface IWeaponResponse extends IWeaponDatabase { - ItemId: Oid; + ItemId: IOid; } export interface IWeaponDatabase { @@ -13,7 +13,7 @@ export interface IWeaponDatabase { XP?: number; Features?: number; Polarized?: number; - Polarity?: Polarity[]; + Polarity?: IPolarity[]; FocusLens?: string; ModSlotPurchases?: number; UpgradeType?: string; @@ -26,15 +26,15 @@ export interface IWeaponDatabase { export interface WeaponConfig { Skins?: string[]; - pricol?: Color; + pricol?: IColor; Upgrades?: string[]; - attcol?: Color; - eyecol?: OperatorLoadOutSigcol; + attcol?: IColor; + eyecol?: IOperatorLoadOutSigcol; Name?: string; PvpUpgrades?: string[]; } -export interface OperatorLoadOutSigcol { +export interface IOperatorLoadOutSigcol { t0?: number; t1?: number; en?: number; diff --git a/src/types/loginTypes.ts b/src/types/loginTypes.ts index 1d53de43..472a5d5f 100644 --- a/src/types/loginTypes.ts +++ b/src/types/loginTypes.ts @@ -10,7 +10,7 @@ export interface ILoginResponse extends Omit Date: Wed, 6 Sep 2023 14:02:54 +0400 Subject: [PATCH 4/5] MissionInventoryUpdate(not completed), Mod upgrade, Booster purchase (#49) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: OrdisPrime <134585663+OrdisPrime@users.noreply.github.com> Co-authored-by: Ângelo Tadeucci --- config.json | 2 +- src/controllers/api/artifactsController.ts | 23 ++ .../api/missionInventoryUpdateController.ts | 45 +++- src/models/inventoryModel.ts | 36 ++- src/routes/api.ts | 2 + src/services/inventoryService.ts | 157 +++++++++-- .../missionInventoryUpdateService .ts | 249 ++++++++++++++++++ src/types/genericUpdate.ts | 2 +- src/types/inventoryTypes/inventoryTypes.ts | 13 +- src/types/missionInventoryUpdateType.ts | 39 ++- src/types/session.ts | 1 + static/data/items.ts | 44 +++- static/json/missions-drop-table.json | 1 + .../scripts/missions-drop-table-get-script.js | 30 +++ 14 files changed, 593 insertions(+), 51 deletions(-) create mode 100644 src/controllers/api/artifactsController.ts create mode 100644 src/services/missionInventoryUpdateService .ts create mode 100644 static/json/missions-drop-table.json create mode 100644 static/json/scripts/missions-drop-table-get-script.js diff --git a/config.json b/config.json index a05a3e89..e59dd984 100644 --- a/config.json +++ b/config.json @@ -8,4 +8,4 @@ "skipTutorial": true, "testMission": true, "testQuestKey": true -} +} \ No newline at end of file diff --git a/src/controllers/api/artifactsController.ts b/src/controllers/api/artifactsController.ts new file mode 100644 index 00000000..93aa47af --- /dev/null +++ b/src/controllers/api/artifactsController.ts @@ -0,0 +1,23 @@ +import { upgradeMod } from "@/src/services/inventoryService"; +import { RequestHandler } from "express"; + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const artifactsController: RequestHandler = async (req, res) => { + const [data] = String(req.body).split("\n"); + const id = req.query.accountId as string; + + // TODO - salt check + + try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const parsedData = JSON.parse(data); + + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + const upgradeModId = await upgradeMod(parsedData, id); + res.send(upgradeModId); + } catch (err) { + console.error("Error parsing JSON data:", err); + } +}; + +export { artifactsController }; diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index 16eeb0e4..3d8fcaff 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -1,7 +1,9 @@ import { RequestHandler } from "express"; import { missionInventoryUpdate } from "@/src/services/inventoryService"; +import { combineRewardAndLootInventory, getRewards } from "@/src/services/missionInventoryUpdateService "; import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; /* +**** INPUT **** - [ ] crossPlaySetting - [ ] rewardsMultiplier - [ ] ActiveBoosters @@ -27,7 +29,7 @@ import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType" - [ ] SeasonChallengeHistory - [ ] PS (Passive anti-cheat data which includes your username, module list, process list, and system name.) - [ ] ActiveDojoColorResearch -- [ ] RewardInfo +- [x] RewardInfo - [ ] ReceivedCeremonyMsg - [ ] LastCeremonyResetDate - [ ] MissionPTS (Used to validate the mission/alive time above.) @@ -42,20 +44,45 @@ import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType" // eslint-disable-next-line @typescript-eslint/no-misused-promises const missionInventoryUpdateController: RequestHandler = async (req, res) => { + const [data] = String(req.body).split("\n"); const id = req.query.accountId as string; - const [data] = String(req.body).split("\n"); - try { - const parsedData = JSON.parse(data) as IMissionInventoryUpdate; - if (typeof parsedData !== "object") throw new Error("Invalid data format"); - await missionInventoryUpdate(parsedData, id); + const lootInventory = JSON.parse(data) as IMissionInventoryUpdate; + if (typeof lootInventory !== "object" || lootInventory === null) { + throw new Error("Invalid data format"); + } + + const { InventoryChanges, MissionRewards } = getRewards(lootInventory.RewardInfo); + + const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits, FusionPoints } = + combineRewardAndLootInventory(InventoryChanges, lootInventory); + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const InventoryJson = JSON.stringify(await missionInventoryUpdate(combinedInventoryChanges, id)); + res.json({ + // InventoryJson, // this part will reset game data and missions will be locked + MissionRewards, + InventoryChanges, + TotalCredits, + CreditsBonus, + MissionCredits, + ...(FusionPoints !== undefined && { FusionPoints }) + }); } catch (err) { console.error("Error parsing JSON data:", err); } - - // TODO - Return the updated inventory the way the game does it. - res.json({}); }; +/* +**** OUTPUT **** +- [x] InventoryJson +- [x] MissionRewards +- [x] TotalCredits +- [x] CreditsBonus +- [x] MissionCredits +- [x] InventoryChanges +- [x] FusionPoints +*/ + export { missionInventoryUpdateController }; diff --git a/src/models/inventoryModel.ts b/src/models/inventoryModel.ts index 9578d314..3e663eb4 100644 --- a/src/models/inventoryModel.ts +++ b/src/models/inventoryModel.ts @@ -7,7 +7,7 @@ import { IBooster } from "../types/inventoryTypes/inventoryTypes"; import { IOid } from "../types/commonTypes"; -import { ISuitDatabase, ISuitDocument } from "@/src/types/inventoryTypes/SuitTypes"; +import { ISuitDatabase } from "@/src/types/inventoryTypes/SuitTypes"; import { IWeaponDatabase } from "@/src/types/inventoryTypes/weaponTypes"; const abilityOverrideSchema = new Schema({ @@ -77,6 +77,34 @@ const BoosterSchema = new Schema({ ItemType: String }); +const RawUpgrades = new Schema({ + ItemType: String, + ItemCount: Number +}); + +RawUpgrades.set("toJSON", { + transform(_document, returnedObject) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + returnedObject.LastAdded = { $oid: returnedObject._id.toString() } satisfies IOid; + delete returnedObject._id; + delete returnedObject.__v; + } +}); + +const Upgrade = new Schema({ + UpgradeFingerprint: String, + ItemType: String +}); + +Upgrade.set("toJSON", { + transform(_document, returnedObject) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call + returnedObject.ItemId = { $oid: returnedObject._id.toString() } satisfies IOid; + delete returnedObject._id; + delete returnedObject.__v; + } +}); + WeaponSchema.set("toJSON", { transform(_document, returnedObject) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call @@ -187,7 +215,7 @@ const inventorySchema = new Schema({ MiscItems: [Schema.Types.Mixed], ChallengesFixVersion: Number, ChallengeProgress: [Schema.Types.Mixed], - RawUpgrades: [Schema.Types.Mixed], + RawUpgrades: [RawUpgrades], ReceivedStartingGear: Boolean, Suits: [suitSchema], LongGuns: [WeaponSchema], @@ -209,7 +237,7 @@ const inventorySchema = new Schema({ PendingRecipes: [Schema.Types.Mixed], TrainingDate: Schema.Types.Mixed, PlayerLevel: Number, - Upgrades: [Schema.Types.Mixed], + Upgrades: [Upgrade], EquippedGear: [String], DeathMarks: [String], FusionTreasures: [Schema.Types.Mixed], @@ -350,7 +378,7 @@ type InventoryDocumentProps = { Boosters: Types.DocumentArray; }; -type InventoryModelType = Model; +type InventoryModelType = Model; const Inventory = model("Inventory", inventorySchema); diff --git a/src/routes/api.ts b/src/routes/api.ts index c52a8056..3308b6d6 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -29,6 +29,7 @@ import { updateSessionGetController, updateSessionPostController } from "@/src/c import { viewController } from "@/src/controllers/api/viewController"; import { joinSessionController } from "@/src/controllers/api/joinSessionController"; import { saveLoadoutController } from "@/src/controllers/api/saveLoadout"; +import { artifactsController } from "../controllers/api/artifactsController"; import express from "express"; @@ -58,6 +59,7 @@ apiRouter.get("/deleteSession.php", deleteSessionController); apiRouter.get("/logout.php", logoutController); // post +apiRouter.post("/artifacts.php", artifactsController); apiRouter.post("/findSessions.php", findSessionsController); // eslint-disable-next-line @typescript-eslint/no-misused-promises apiRouter.post("/purchase.php", purchaseController); diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 565dd910..58b678c6 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -7,15 +7,14 @@ import { SlotType } from "@/src/types/purchaseTypes"; import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; import { IChallengeProgress, + IConsumable, + ICrewShipSalvagedWeaponSkin, IFlavourItem, - IInventoryDatabaseDocument + IInventoryDatabaseDocument, + IMiscItem, + IRawUpgrade } from "@/src/types/inventoryTypes/inventoryTypes"; -import { - IMissionInventoryUpdate, - IMissionInventoryUpdateCard, - IMissionInventoryUpdateGear, - IMissionInventoryUpdateItem -} from "../types/missionInventoryUpdateType"; +import { IMissionInventoryUpdate, IMissionInventoryUpdateGear } from "../types/missionInventoryUpdateType"; import { IGenericUpdate } from "../types/genericUpdate"; const createInventory = async (accountOwnerId: Types.ObjectId) => { @@ -146,7 +145,7 @@ const addGearExpByCategory = ( const category = inventory[categoryName]; gearArray?.forEach(({ ItemId, XP }) => { - const itemIndex = category.findIndex(i => i._id?.equals(ItemId.$oid)); + const itemIndex = category.findIndex(item => item._id?.equals(ItemId.$oid)); const item = category[itemIndex]; if (itemIndex !== -1 && item.XP != undefined) { @@ -156,21 +155,61 @@ const addGearExpByCategory = ( }); }; -const addItemsByCategory = ( - inventory: IInventoryDatabaseDocument, - itemsArray: (IMissionInventoryUpdateItem | IMissionInventoryUpdateCard)[] | undefined, - categoryName: "RawUpgrades" | "MiscItems" -) => { - const category = inventory[categoryName]; +const addMiscItems = (inventory: IInventoryDatabaseDocument, itemsArray: IMiscItem[] | undefined) => { + const { MiscItems } = inventory; itemsArray?.forEach(({ ItemCount, ItemType }) => { - const itemIndex = category.findIndex(i => i.ItemType === ItemType); + const itemIndex = MiscItems.findIndex(miscItem => miscItem.ItemType === ItemType); if (itemIndex !== -1) { - category[itemIndex].ItemCount += ItemCount; - inventory.markModified(`${categoryName}.${itemIndex}.ItemCount`); + MiscItems[itemIndex].ItemCount += ItemCount; + inventory.markModified(`MiscItems.${itemIndex}.ItemCount`); } else { - category.push({ ItemCount, ItemType }); + MiscItems.push({ ItemCount, ItemType }); + } + }); +}; + +const addConsumables = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { + const { Consumables } = inventory; + + itemsArray?.forEach(({ ItemCount, ItemType }) => { + const itemIndex = Consumables.findIndex(i => i.ItemType === ItemType); + + if (itemIndex !== -1) { + Consumables[itemIndex].ItemCount += ItemCount; + inventory.markModified(`Consumables.${itemIndex}.ItemCount`); + } else { + Consumables.push({ ItemCount, ItemType }); + } + }); +}; + +const addRecipes = (inventory: IInventoryDatabaseDocument, itemsArray: IConsumable[] | undefined) => { + const { Recipes } = inventory; + + itemsArray?.forEach(({ ItemCount, ItemType }) => { + const itemIndex = Recipes.findIndex(i => i.ItemType === ItemType); + + if (itemIndex !== -1) { + Recipes[itemIndex].ItemCount += ItemCount; + inventory.markModified(`Recipes.${itemIndex}.ItemCount`); + } else { + Recipes.push({ ItemCount, ItemType }); + } + }); +}; + +const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawUpgrade[] | undefined) => { + const { RawUpgrades } = inventory; + itemsArray?.forEach(({ ItemType, ItemCount }) => { + const itemIndex = RawUpgrades.findIndex(i => i.ItemType === ItemType); + + if (itemIndex !== -1) { + RawUpgrades[itemIndex].ItemCount += ItemCount; + inventory.markModified(`RawUpgrades.${itemIndex}.ItemCount`); + } else { + RawUpgrades.push({ ItemCount, ItemType }); } }); }; @@ -193,20 +232,28 @@ const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: IChall const gearKeys = ["Suits", "Pistols", "LongGuns", "Melee"] as const; type GearKeysType = (typeof gearKeys)[number]; -export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, accountId: string): Promise => { - const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress } = data; +export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, accountId: string) => { + const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress, FusionPoints, Consumables, Recipes } = data; const inventory = await getInventory(accountId); + // credits + inventory.RegularCredits += RegularCredits || 0; + + // endo + inventory.FusionPoints += FusionPoints || 0; + // Gear XP gearKeys.forEach((key: GearKeysType) => addGearExpByCategory(inventory, data[key], key)); - // Other - // TODO: Ensure mods have a valid fusion level and items have a valid quantity, preferably inside of the functions themselves. - addItemsByCategory(inventory, RawUpgrades, "RawUpgrades"); - addItemsByCategory(inventory, MiscItems, "MiscItems"); + // other + addMods(inventory, RawUpgrades); + addMiscItems(inventory, MiscItems); + addConsumables(inventory, Consumables); + addRecipes(inventory, Recipes); addChallenges(inventory, ChallengeProgress); - await inventory.save(); + const changedInventory = await inventory.save(); + return changedInventory.toJSON(); }; export const addBooster = async (ItemType: string, time: number, accountId: string): Promise => { @@ -215,7 +262,7 @@ export const addBooster = async (ItemType: string, time: number, accountId: stri const inventory = await getInventory(accountId); const { Boosters } = inventory; - const itemIndex = Boosters.findIndex(i => i.ItemType === ItemType); + const itemIndex = Boosters.findIndex(booster => booster.ItemType === ItemType); if (itemIndex !== -1) { const existingBooster = Boosters[itemIndex]; @@ -228,4 +275,62 @@ export const addBooster = async (ItemType: string, time: number, accountId: stri await inventory.save(); }; +export const upgradeMod = async ( + { + Upgrade, + LevelDiff, + Cost, + FusionPointCost + }: { Upgrade: ICrewShipSalvagedWeaponSkin; LevelDiff: number; Cost: number; FusionPointCost: number }, + accountId: string +): Promise => { + try { + const inventory = await getInventory(accountId); + const { Upgrades, RawUpgrades } = inventory; + const { ItemType, UpgradeFingerprint, ItemId } = Upgrade; + + const safeUpgradeFingerprint = UpgradeFingerprint || '{"lvl":0}'; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const parsedUpgradeFingerprint = JSON.parse(safeUpgradeFingerprint); + parsedUpgradeFingerprint.lvl += LevelDiff; + const stringifiedUpgradeFingerprint = JSON.stringify(parsedUpgradeFingerprint); + + let itemIndex = Upgrades.findIndex(upgrade => upgrade._id?.equals(ItemId!.$oid)); + + if (itemIndex !== -1) { + Upgrades[itemIndex].UpgradeFingerprint = stringifiedUpgradeFingerprint; + inventory.markModified(`Upgrades.${itemIndex}.UpgradeFingerprint`); + } else { + itemIndex = + Upgrades.push({ + UpgradeFingerprint: stringifiedUpgradeFingerprint, + ItemType + }) - 1; + + const rawItemIndex = RawUpgrades.findIndex(rawUpgrade => rawUpgrade.ItemType === ItemType); + RawUpgrades[rawItemIndex].ItemCount--; + if (RawUpgrades[rawItemIndex].ItemCount > 0) { + inventory.markModified(`RawUpgrades.${rawItemIndex}.UpgradeFingerprint`); + } else { + RawUpgrades.splice(rawItemIndex, 1); + } + } + + inventory.RegularCredits -= Cost; + inventory.FusionPoints -= FusionPointCost; + + const changedInventory = await inventory.save(); + const itemId = changedInventory.toJSON().Upgrades[itemIndex]?.ItemId?.$oid; + + if (!itemId) { + throw new Error("Item Id not found in upgradeMod"); + } + + return itemId; + } catch (error) { + console.error("Error in upgradeMod:", error); + throw error; + } +}; + export { createInventory, addPowerSuit }; diff --git a/src/services/missionInventoryUpdateService .ts b/src/services/missionInventoryUpdateService .ts new file mode 100644 index 00000000..a3cbb9b3 --- /dev/null +++ b/src/services/missionInventoryUpdateService .ts @@ -0,0 +1,249 @@ +import { + IMissionInventoryUpdate, + IMissionInventoryUpdateRewardInfo, + IMissionRewardResponse, + IReward, + IInventoryFieldType, + inventoryFields +} from "@/src/types/missionInventoryUpdateType"; + +import missionsDropTable from "@/static/json/missions-drop-table.json"; +import { modNames, relicNames, miscNames, resourceNames, gearNames, blueprintNames } from "@/static/data/items"; + +// need reverse engineer rewardSeed, otherwise ingame displayed rotation reward will be different than added to db or displayed on mission end +const getRewards = ( + rewardInfo: IMissionInventoryUpdateRewardInfo | undefined +): { InventoryChanges: IMissionInventoryUpdate; MissionRewards: IMissionRewardResponse[] } => { + if (!rewardInfo) { + return { InventoryChanges: {}, MissionRewards: [] }; + } + + const rewards = (missionsDropTable as { [key: string]: IReward[] })[rewardInfo.node]; + if (!rewards) { + return { InventoryChanges: {}, MissionRewards: [] }; + } + + const rotationCount = rewardInfo.rewardQualifications?.length || 0; + const rotations = getRotations(rotationCount); + const drops: IReward[] = []; + for (const rotation of rotations) { + const rotationRewards = rewards.filter(reward => reward.rotation === rotation); + + // Separate guaranteed and chance drops + const guaranteedDrops: IReward[] = []; + const chanceDrops: IReward[] = []; + for (const reward of rotationRewards) { + if (reward.chance === 100) { + guaranteedDrops.push(reward); + } else { + chanceDrops.push(reward); + } + } + + const randomDrop = getRandomRewardByChance(chanceDrops); + if (randomDrop) { + guaranteedDrops.push(randomDrop); + } + + drops.push(...guaranteedDrops); + } + + // const testDrops = [ + // { chance: 7.69, name: "Lith W3 Relic", rotation: "B" }, + // { chance: 7.69, name: "Lith W3 Relic", rotation: "B" }, + // { chance: 10.82, name: "2X Orokin Cell", rotation: "C" }, + // { chance: 10.82, name: "Arrow Mutation", rotation: "C" }, + // { chance: 10.82, name: "200 Endo", rotation: "C" }, + // { chance: 10.82, name: "2,000,000 Credits Cache", rotation: "C" }, + // { chance: 7.69, name: "Health Restore (Large)", rotation: "C" }, + // { chance: 7.69, name: "Vapor Specter Blueprint", rotation: "C" } + // ]; + // console.log("Mission rewards:", testDrops); + // return formatRewardsToInventoryType(testDrops); + + console.log("Mission rewards:", drops); + return formatRewardsToInventoryType(drops); +}; + +const combineRewardAndLootInventory = ( + rewardInventory: IMissionInventoryUpdate, + lootInventory: IMissionInventoryUpdate +) => { + const missionCredits = lootInventory.RegularCredits || 0; + const creditsBonus = rewardInventory.RegularCredits || 0; + const totalCredits = missionCredits + creditsBonus; + const FusionPoints = (lootInventory.FusionPoints || 0) + (rewardInventory.FusionPoints || 0) || undefined; + + lootInventory.RegularCredits = totalCredits; + if (FusionPoints) { + lootInventory.FusionPoints = FusionPoints; + } + inventoryFields.forEach((field: IInventoryFieldType) => { + if (rewardInventory[field] && !lootInventory[field]) { + lootInventory[field] = []; + } + rewardInventory[field]?.forEach(item => lootInventory[field]!.push(item)); + }); + + return { + combinedInventoryChanges: lootInventory, + TotalCredits: [totalCredits, totalCredits], + CreditsBonus: [creditsBonus, creditsBonus], + MissionCredits: [missionCredits, missionCredits], + ...(FusionPoints !== undefined && { FusionPoints }) + }; +}; + +const getRotations = (rotationCount: number): (string | undefined)[] => { + if (rotationCount === 0) return [undefined]; + + const rotationPattern = ["A", "A", "B", "C"]; + let rotationIndex = 0; + const rotatedValues = []; + + for (let i = 1; i <= rotationCount; i++) { + rotatedValues.push(rotationPattern[rotationIndex]); + rotationIndex = (rotationIndex + 1) % 3; + } + + return rotatedValues; +}; + +const getRandomRewardByChance = (data: IReward[] | undefined): IReward | undefined => { + if (!data || data.length == 0) return; + + const totalChance = data.reduce((sum, item) => sum + item.chance, 0); + const randomValue = Math.random() * totalChance; + + let cumulativeChance = 0; + for (const item of data) { + cumulativeChance += item.chance; + if (randomValue <= cumulativeChance) { + return item; + } + } + + return; +}; + +const formatRewardsToInventoryType = ( + rewards: IReward[] +): { InventoryChanges: IMissionInventoryUpdate; MissionRewards: IMissionRewardResponse[] } => { + const InventoryChanges: IMissionInventoryUpdate = {}; + const MissionRewards: IMissionRewardResponse[] = []; + for (const reward of rewards) { + if (itemCheck(InventoryChanges, MissionRewards, reward.name)) { + continue; + } + + if (reward.name.includes(" Endo")) { + if (!InventoryChanges.FusionPoints) { + InventoryChanges.FusionPoints = 0; + } + InventoryChanges.FusionPoints += getCountFromName(reward.name); + } else if (reward.name.includes(" Credits Cache") || reward.name.includes("Return: ")) { + if (!InventoryChanges.RegularCredits) { + InventoryChanges.RegularCredits = 0; + } + InventoryChanges.RegularCredits += getCountFromName(reward.name); + } + } + return { InventoryChanges, MissionRewards }; +}; + +const itemCheck = ( + InventoryChanges: IMissionInventoryUpdate, + MissionRewards: IMissionRewardResponse[], + name: string +) => { + const rewardCheck = { + RawUpgrades: modNames[name], + Consumables: gearNames[name], + MiscItems: + miscNames[name] || + miscNames[name.replace(/\d+X\s*/, "")] || + resourceNames[name] || + resourceNames[name.replace(/\d+X\s*/, "")] || + relicNames[name.replace("Relic", "Intact")] || + relicNames[name.replace("Relic (Radiant)", "Radiant")], + Recipes: blueprintNames[name] + }; + for (const key of Object.keys(rewardCheck) as IInventoryFieldType[]) { + if (rewardCheck[key]) { + addRewardResponse(InventoryChanges, MissionRewards, name, rewardCheck[key]!, key); + return true; + } + } + return false; +}; + +const getCountFromName = (name: string) => { + const regex = /(^(?:\d{1,3}(?:,\d{3})*(?:\.\d+)?)(\s|X))|(\s(?:\d{1,3}(?:,\d{3})*(?:\.\d+)?)$)/; + const countMatches = name.match(regex); + return countMatches ? parseInt(countMatches[0].replace(/,/g, ""), 10) : 1; +}; + +const addRewardResponse = ( + InventoryChanges: IMissionInventoryUpdate, + MissionRewards: IMissionRewardResponse[], + ItemName: string, + ItemType: string, + InventoryCategory: IInventoryFieldType +) => { + if (!ItemType) return; + + if (!InventoryChanges[InventoryCategory]) { + InventoryChanges[InventoryCategory] = []; + } + + const ItemCount = getCountFromName(ItemName); + const TweetText = `${ItemName}`; + + const existReward = InventoryChanges[InventoryCategory]!.find(item => item.ItemType === ItemType); + if (existReward) { + existReward.ItemCount += ItemCount; + const missionReward = MissionRewards.find(missionReward => missionReward.TypeName === ItemType); + if (missionReward) { + missionReward.ItemCount += ItemCount; + } + } else { + InventoryChanges[InventoryCategory]!.push({ ItemType, ItemCount }); + MissionRewards.push({ + ItemCount, + TweetText, + ProductCategory: InventoryCategory, + StoreItem: ItemType.replace("/Lotus/", "/Lotus/StoreItems/"), + TypeName: ItemType + }); + } +}; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const _missionRewardsCheckAllNamings = () => { + let tempRewards: IReward[] = []; + Object.values(missionsDropTable as { [key: string]: IReward[] }).forEach(rewards => { + rewards.forEach(reward => { + tempRewards.push(reward); + }); + }); + tempRewards = tempRewards + .filter(reward => !modNames[reward.name]) + .filter(reward => !miscNames[reward.name]) + .filter(reward => !miscNames[reward.name.replace(/\d+X\s*/, "")]) + .filter(reward => !resourceNames[reward.name]) + .filter(reward => !resourceNames[reward.name.replace(/\d+X\s*/, "")]) + .filter(reward => !gearNames[reward.name]) + .filter(reward => { + return ( + !relicNames[reward.name.replace("Relic", "Intact")] && + !relicNames[reward.name.replace("Relic (Radiant)", "Radiant")] + ); + }) + .filter(reward => !blueprintNames[reward.name]) + .filter(reward => !reward.name.includes(" Endo")) + .filter(reward => !reward.name.includes(" Credits Cache") && !reward.name.includes("Return: ")); + console.log(tempRewards); +}; +// _missionRewardsCheckAllNamings(); + +export { getRewards, combineRewardAndLootInventory }; diff --git a/src/types/genericUpdate.ts b/src/types/genericUpdate.ts index 3f61f671..fa231be9 100644 --- a/src/types/genericUpdate.ts +++ b/src/types/genericUpdate.ts @@ -1,4 +1,4 @@ export interface IGenericUpdate { NodeIntrosCompleted: string | string[]; // AffiliationMods: any[]; -} \ No newline at end of file +} diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 9fef903d..f1a30e11 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { Document, Types } from "mongoose"; import { IOid } from "../commonTypes"; import { IAbilityOverride, IColor, FocusSchool, IPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes"; @@ -33,7 +34,7 @@ export interface IInventoryResponse { DailyFocus: number; GiftsRemaining: number; HandlerPoints: number; - MiscItems: IConsumable[]; + MiscItems: IMiscItem[]; ChallengesFixVersion: number; ChallengeProgress: IChallengeProgress[]; RawUpgrades: IRawUpgrade[]; @@ -319,7 +320,8 @@ export interface ICrewShipSalvageBinClass { export interface ICrewShipSalvagedWeaponSkin { ItemType: string; UpgradeFingerprint?: string; - ItemId: IOid; + ItemId?: IOid; + _id?: Types.ObjectId; } export interface ICrewShipWeapon { @@ -375,11 +377,6 @@ export interface IFlavourItem { ItemType: string; } -export interface IRawUpgrade { - ItemCount: number; - ItemType: string; -} - export interface IMiscItem { ItemCount: number; ItemType: string; @@ -933,9 +930,9 @@ export interface IProgress { } export interface IRawUpgrade { + ItemType: string; ItemCount: number; LastAdded?: IOid; - ItemType: string; } export interface IScoop { diff --git a/src/types/missionInventoryUpdateType.ts b/src/types/missionInventoryUpdateType.ts index 609adb3b..9268810b 100644 --- a/src/types/missionInventoryUpdateType.ts +++ b/src/types/missionInventoryUpdateType.ts @@ -1,6 +1,9 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { IOid } from "./commonTypes"; import { IDate } from "./inventoryTypes/inventoryTypes"; +export const inventoryFields = ["RawUpgrades", "MiscItems", "Consumables", "Recipes"] as const; +export type IInventoryFieldType = (typeof inventoryFields)[number]; export interface IMissionInventoryUpdateGear { ItemType: string; ItemName: string; @@ -43,6 +46,21 @@ export interface IMissionInventoryUpdateChallange { Completed: any[]; } +export interface IMissionInventoryUpdateRewardInfo { + node: string; + rewardTier?: number; + nightmareMode?: boolean; + useVaultManifest?: boolean; + EnemyCachesFound?: number; + toxinOk?: boolean; + lostTargetWave?: number; + defenseTargetCount?: number; + EOM_AFK?: number; + rewardQualifications?: string; + PurgatoryRewardQualifications?: string; + rewardSeed?: number; +} + export interface IMissionInventoryUpdate { rewardsMultiplier?: number; ActiveBoosters?: any[]; @@ -50,8 +68,27 @@ export interface IMissionInventoryUpdate { Pistols?: IMissionInventoryUpdateGear[]; Suits?: IMissionInventoryUpdateGear[]; Melee?: IMissionInventoryUpdateGear[]; - RawUpgrades?: IMissionInventoryUpdateCard[]; + RawUpgrades?: IMissionInventoryUpdateItem[]; MiscItems?: IMissionInventoryUpdateItem[]; + Consumables?: IMissionInventoryUpdateItem[]; + Recipes?: IMissionInventoryUpdateItem[]; RegularCredits?: number; ChallengeProgress?: IMissionInventoryUpdateChallange[]; + RewardInfo?: IMissionInventoryUpdateRewardInfo; + FusionPoints?: number; +} + +export interface IMissionRewardResponse { + StoreItem?: string; + TypeName: string; + UpgradeLevel?: number; + ItemCount: number; + TweetText: string; + ProductCategory: string; +} + +export interface IReward { + name: string; + chance: number; + rotation?: string; } diff --git a/src/types/session.ts b/src/types/session.ts index 66408991..222ccdf5 100644 --- a/src/types/session.ts +++ b/src/types/session.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ export interface ISession { sessionId: string; creatorId: string; diff --git a/static/data/items.ts b/static/data/items.ts index dd4c6622..f2718a2f 100644 --- a/static/data/items.ts +++ b/static/data/items.ts @@ -1,4 +1,4 @@ -import Items, { Item, Weapon } from "warframe-items"; +import Items, { Category, Item, Warframe, Weapon } from "warframe-items"; type MinWeapon = Omit; type MinItem = Omit; @@ -16,3 +16,45 @@ export const items: MinItem[] = new Items({ category: ["All"] }).map(item => { delete next.patchlogs; return next; }); + +const getNamesObj = (category: Category) => + new Items({ category: [category] }).reduce((acc, item) => { + acc[item.name!.replace("'S", "'s")] = item.uniqueName!; + return acc; + }, {} as ImportAssertions); + +export const modNames = getNamesObj("Mods"); +export const resourceNames = getNamesObj("Resources"); +export const miscNames = getNamesObj("Misc"); +export const relicNames = getNamesObj("Relics"); +export const skinNames = getNamesObj("Skins"); +export const arcaneNames = getNamesObj("Arcanes"); +export const gearNames = getNamesObj("Gear"); + +export const craftNames: ImportAssertions = Object.fromEntries( + ( + new Items({ + category: [ + "Warframes", + "Gear", + "Melee", + "Primary", + "Secondary", + "Sentinels", + "Misc", + "Arch-Gun", + "Arch-Melee" + ] + }) as Warframe[] + ) + .flatMap(item => item.components || []) + .filter(item => item.drops && item.drops[0]) + .map(item => [item.drops![0].type, item.uniqueName]) +); +craftNames["Forma Blueprint"] = "/Lotus/Types/Recipes/Components/FormaBlueprint"; + +export const blueprintNames: ImportAssertions = Object.fromEntries( + Object.keys(craftNames) + .filter(name => name.includes("Blueprint")) + .map(name => [name, craftNames[name]]) +); diff --git a/static/json/missions-drop-table.json b/static/json/missions-drop-table.json new file mode 100644 index 00000000..f720ca1c --- /dev/null +++ b/static/json/missions-drop-table.json @@ -0,0 +1 @@ +{"SolNode94":[{"chance":50,"name":"2,000 Credits Cache","rotation":"A"},{"chance":50,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode130":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode119":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SolNode12":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode28":[{"chance":100,"name":"2,500 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"240X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"750X Circuits","rotation":"B"},{"chance":12.65,"name":"750X Alloy Plate","rotation":"B"},{"chance":15.1,"name":"80 Endo","rotation":"C"},{"chance":15.1,"name":"150 Endo","rotation":"C"},{"chance":15.1,"name":"Morphics","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":5.5,"name":"2X Morphics","rotation":"C"},{"chance":5.5,"name":"2X Gallium","rotation":"C"},{"chance":5.5,"name":"2X Neurodes","rotation":"C"},{"chance":5.5,"name":"160 Endo","rotation":"C"},{"chance":0.67,"name":"Argon Crystal","rotation":"C"},{"chance":0.67,"name":"Tellurium","rotation":"C"},{"chance":0.67,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Fuselage Blueprint","rotation":"C"}],"SolNode108":[{"chance":38.72,"name":"Seer Blueprint"},{"chance":38.72,"name":"Seer Barrel"},{"chance":22.56,"name":"Seer Receiver"}],"SolNode224":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode225":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"SolNode123":[{"chance":50,"name":"2,000 Credits Cache","rotation":"A"},{"chance":50,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode61":[{"chance":100,"name":"2,500 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"240X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"750X Circuits","rotation":"B"},{"chance":12.65,"name":"750X Alloy Plate","rotation":"B"},{"chance":15.1,"name":"80 Endo","rotation":"C"},{"chance":15.1,"name":"150 Endo","rotation":"C"},{"chance":15.1,"name":"Morphics","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":5.5,"name":"2X Morphics","rotation":"C"},{"chance":5.5,"name":"2X Gallium","rotation":"C"},{"chance":5.5,"name":"2X Neurodes","rotation":"C"},{"chance":5.5,"name":"160 Endo","rotation":"C"},{"chance":0.67,"name":"Argon Crystal","rotation":"C"},{"chance":0.67,"name":"Tellurium","rotation":"C"},{"chance":0.67,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Fuselage Blueprint","rotation":"C"}],"SolNode23":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode109":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SolNode104":[{"chance":38.72,"name":"Rhino Neuroptics Blueprint"},{"chance":38.72,"name":"Rhino Chassis Blueprint"},{"chance":22.56,"name":"Rhino Systems Blueprint"}],"SolNode66":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"ClanNode1":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":11.28,"name":"True Punishment","rotation":"C"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode107":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode22":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode101":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"ClanNode0":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode902":[{"chance":5.64,"name":"Morphic Transformer"},{"chance":38.72,"name":"Automatic Trigger"},{"chance":5.64,"name":"Phaedra Receiver"},{"chance":38.72,"name":"Extend"},{"chance":5.64,"name":"Shell Rush"},{"chance":5.64,"name":"Shell Rush"}],"SolNode63":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode79":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"SolNode39":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode15":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SolNode26":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode85":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode75":[{"chance":100,"name":"2,500 Credits Cache","rotation":"A"},{"chance":12.18,"name":"300X Ferrite","rotation":"B"},{"chance":12.18,"name":"150X Rubedo","rotation":"B"},{"chance":12.18,"name":"Detonite Ampule","rotation":"B"},{"chance":12.18,"name":"100 Endo","rotation":"B"},{"chance":12.18,"name":"100 Endo","rotation":"B"},{"chance":12.18,"name":"3,000 Credits Cache","rotation":"B"},{"chance":12.18,"name":"3,000 Credits Cache","rotation":"B"},{"chance":12.18,"name":"Neurodes","rotation":"B"},{"chance":2.58,"name":"Kubrow Egg","rotation":"B"},{"chance":15.1,"name":"Health Restore (Large)","rotation":"C"},{"chance":15.1,"name":"Health Restore (Large)","rotation":"C"},{"chance":15.1,"name":"200 Endo","rotation":"C"},{"chance":15.1,"name":"200 Endo","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":3.67,"name":"Bite","rotation":"C"},{"chance":3.67,"name":"Link Armor","rotation":"C"},{"chance":3.67,"name":"Link Health","rotation":"C"},{"chance":3.67,"name":"Link Shields","rotation":"C"},{"chance":3.67,"name":"Maul","rotation":"C"},{"chance":3.67,"name":"Hastened Deflection","rotation":"C"},{"chance":2,"name":"Forma Blueprint","rotation":"C"},{"chance":0.5,"name":"Forma","rotation":"C"}],"SolNode24":[{"chance":38.72,"name":"Hydroid Neuroptics Blueprint"},{"chance":38.72,"name":"Hydroid Chassis Blueprint"},{"chance":22.56,"name":"Hydroid Systems Blueprint"}],"ClanNode2":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode903":[{"chance":38.72,"name":"Polar Magazine"},{"chance":38.72,"name":"Superior Defenses"},{"chance":3.76,"name":"Meteor Crash"},{"chance":3.76,"name":"Nebula Bore"},{"chance":3.76,"name":"Astral Slash"},{"chance":3.76,"name":"Comet Blast"},{"chance":3.76,"name":"Quasar Drill"},{"chance":3.76,"name":"Zodiac Shred"}],"ClanNode3":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode30":[{"chance":14.29,"name":"Lith G6 Relic","rotation":"A"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"A"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"A"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"A"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"A"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"A"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":14.29,"name":"Meso P11 Relic","rotation":"C"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"C"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"C"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"C"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"C"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"C"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"C"}],"SolNode46":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode106":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode41":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"SolNode16":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SolNode45":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode36":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"ClanNode8":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode99":[{"chance":38.72,"name":"Excalibur Neuroptics Blueprint"},{"chance":38.72,"name":"Excalibur Chassis Blueprint"},{"chance":22.56,"name":"Excalibur Systems Blueprint"}],"SolNode65":[{"chance":100,"name":"2,500 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"240X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"750X Circuits","rotation":"B"},{"chance":12.65,"name":"750X Alloy Plate","rotation":"B"},{"chance":15.1,"name":"80 Endo","rotation":"C"},{"chance":15.1,"name":"150 Endo","rotation":"C"},{"chance":15.1,"name":"Morphics","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":5.5,"name":"2X Morphics","rotation":"C"},{"chance":5.5,"name":"2X Gallium","rotation":"C"},{"chance":5.5,"name":"2X Neurodes","rotation":"C"},{"chance":5.5,"name":"160 Endo","rotation":"C"},{"chance":0.67,"name":"Argon Crystal","rotation":"C"},{"chance":0.67,"name":"Tellurium","rotation":"C"},{"chance":0.67,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Fuselage Blueprint","rotation":"C"}],"ClanNode9":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode904":[{"chance":5.64,"name":"Morphic Transformer"},{"chance":38.72,"name":"Automatic Trigger"},{"chance":5.64,"name":"Phaedra Receiver"},{"chance":38.72,"name":"Extend"},{"chance":5.64,"name":"Shell Rush"},{"chance":5.64,"name":"Shell Rush"}],"SolNode87":[{"chance":27.78,"name":"5X Hexenon","rotation":"A"},{"chance":5.56,"name":"Meso P11 Relic","rotation":"A"},{"chance":5.56,"name":"Meso G5 Relic","rotation":"A"},{"chance":5.56,"name":"Meso K6 Relic","rotation":"A"},{"chance":5.56,"name":"Meso P13 Relic","rotation":"A"},{"chance":11.11,"name":"Proton Pulse","rotation":"A"},{"chance":11.11,"name":"Motus Signal","rotation":"A"},{"chance":11.11,"name":"Aero Periphery","rotation":"A"},{"chance":5.56,"name":"Meso C8 Relic","rotation":"A"},{"chance":5.56,"name":"Meso K4 Relic","rotation":"A"},{"chance":5.56,"name":"Meso S12 Relic","rotation":"A"},{"chance":27.78,"name":"10X Hexenon","rotation":"B"},{"chance":5.56,"name":"Neo F2 Relic","rotation":"B"},{"chance":5.56,"name":"Neo T7 Relic","rotation":"B"},{"chance":5.56,"name":"Neo K5 Relic","rotation":"B"},{"chance":11.11,"name":"Proton Jet","rotation":"B"},{"chance":11.11,"name":"Motus Impact","rotation":"B"},{"chance":11.11,"name":"Aero Vantage","rotation":"B"},{"chance":5.56,"name":"Neo D7 Relic","rotation":"B"},{"chance":5.56,"name":"Neo C4 Relic","rotation":"B"},{"chance":5.56,"name":"Neo L3 Relic","rotation":"B"},{"chance":5.56,"name":"Neo N23 Relic","rotation":"B"},{"chance":30,"name":"15X Hexenon","rotation":"C"},{"chance":5,"name":"Axi H6 Relic","rotation":"C"},{"chance":5,"name":"Axi A16 Relic","rotation":"C"},{"chance":5,"name":"Axi G10 Relic","rotation":"C"},{"chance":10,"name":"Proton Snap","rotation":"C"},{"chance":10,"name":"Motus Setup","rotation":"C"},{"chance":10,"name":"Aero Agility","rotation":"C"},{"chance":5,"name":"Universal Medallion","rotation":"C"},{"chance":5,"name":"Axi B6 Relic","rotation":"C"},{"chance":5,"name":"Axi K11 Relic","rotation":"C"},{"chance":5,"name":"Axi W3 Relic","rotation":"C"},{"chance":5,"name":"Axi H7 Relic","rotation":"C"}],"SolNode88":[{"chance":100,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode97":[{"chance":9.09,"name":"Vitality","rotation":"A"},{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Fast Hands","rotation":"A"},{"chance":9.09,"name":"Point Strike","rotation":"A"},{"chance":9.09,"name":"Piercing Hit","rotation":"A"},{"chance":9.09,"name":"Pistol Gambit","rotation":"A"},{"chance":9.09,"name":"Blunderbuss","rotation":"A"},{"chance":9.09,"name":"Live Wire","rotation":"A"},{"chance":5.56,"name":"Speed Trigger","rotation":"B"},{"chance":5.56,"name":"Fast Deflection","rotation":"B"},{"chance":5.56,"name":"Rush","rotation":"B"},{"chance":5.56,"name":"Target Cracker","rotation":"B"},{"chance":5.56,"name":"No Return","rotation":"B"},{"chance":5.56,"name":"Serration","rotation":"B"},{"chance":5.56,"name":"Hornet Strike","rotation":"B"},{"chance":5.56,"name":"Reflex Coil","rotation":"B"},{"chance":5.56,"name":"Deep Freeze","rotation":"B"},{"chance":5.56,"name":"North Wind","rotation":"B"},{"chance":5.56,"name":"Cryo Rounds","rotation":"B"},{"chance":5.56,"name":"Hell's Chamber","rotation":"B"},{"chance":5.56,"name":"Streamline","rotation":"B"},{"chance":5.56,"name":"Shocking Touch","rotation":"B"},{"chance":5.56,"name":"Stormbringer","rotation":"B"},{"chance":5.56,"name":"Point Blank","rotation":"B"},{"chance":5.56,"name":"Fury","rotation":"B"},{"chance":5.56,"name":"50 Endo","rotation":"B"},{"chance":5.64,"name":"Metal Auger","rotation":"C"},{"chance":5.64,"name":"Rime Rounds","rotation":"C"},{"chance":5.64,"name":"Scattering Inferno","rotation":"C"},{"chance":5.64,"name":"Ivara Chassis Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode126":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"A"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"B"},{"chance":100,"name":"Force Specter Blueprint","rotation":"C"}],"SolNode125":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":6.25,"name":"Reflex Coil","rotation":"B"},{"chance":6.25,"name":"Deep Freeze","rotation":"B"},{"chance":6.25,"name":"North Wind","rotation":"B"},{"chance":6.25,"name":"Cryo Rounds","rotation":"B"},{"chance":6.25,"name":"Hell's Chamber","rotation":"B"},{"chance":6.25,"name":"Stormbringer","rotation":"B"},{"chance":6.25,"name":"Point Blank","rotation":"B"},{"chance":6.25,"name":"Fury","rotation":"B"},{"chance":6.25,"name":"150 Endo","rotation":"B"},{"chance":6.25,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.25,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.25,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.25,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.25,"name":"Neo N23 Relic","rotation":"B"},{"chance":4.51,"name":"Vital Sense","rotation":"C"},{"chance":4.51,"name":"Metal Auger","rotation":"C"},{"chance":4.51,"name":"Ravage","rotation":"C"},{"chance":4.51,"name":"Stretch","rotation":"C"},{"chance":4.51,"name":"300 Endo","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode100":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Corpus","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode25":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Meso P11 Relic","rotation":"A"},{"chance":10,"name":"Meso G5 Relic","rotation":"A"},{"chance":10,"name":"Meso K6 Relic","rotation":"A"},{"chance":10,"name":"Meso P13 Relic","rotation":"A"},{"chance":10,"name":"Meso C8 Relic","rotation":"A"},{"chance":10,"name":"Meso K4 Relic","rotation":"A"},{"chance":10,"name":"Meso S12 Relic","rotation":"A"},{"chance":7.14,"name":"Target Cracker","rotation":"B"},{"chance":7.14,"name":"No Return","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Reflex Coil","rotation":"B"},{"chance":7.14,"name":"North Wind","rotation":"B"},{"chance":7.14,"name":"Hell's Chamber","rotation":"B"},{"chance":7.14,"name":"Neo F2 Relic","rotation":"B"},{"chance":7.14,"name":"Neo T7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo K5 Relic","rotation":"B"},{"chance":7.14,"name":"Neo D7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo C4 Relic","rotation":"B"},{"chance":7.14,"name":"Neo L3 Relic","rotation":"B"},{"chance":7.14,"name":"Neo N23 Relic","rotation":"B"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"C"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"C"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"C"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"C"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"C"}],"SolNode121":[{"chance":33.33,"name":"4,000 Credits Cache","rotation":"A"},{"chance":33.33,"name":"4,000 Credits Cache","rotation":"A"},{"chance":33.33,"name":"4,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode53":[{"chance":38.72,"name":"Valkyr Neuroptics Blueprint"},{"chance":38.72,"name":"Valkyr Chassis Blueprint"},{"chance":22.56,"name":"Valkyr Systems Blueprint"}],"SolNode740":[{"chance":22.56,"name":"Wisp Blueprint"},{"chance":25.81,"name":"Wisp Chassis Blueprint"},{"chance":25.81,"name":"Wisp Neuroptics Blueprint"},{"chance":25.81,"name":"Wisp Systems Blueprint"}],"ClanNode4":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode73":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode905":[{"chance":25.81,"name":"Glacial Edge"},{"chance":25.81,"name":"Conductive Blade"},{"chance":25.81,"name":"Tempered Blade"},{"chance":3.76,"name":"Meteor Crash"},{"chance":3.76,"name":"Nebula Bore"},{"chance":3.76,"name":"Astral Slash"},{"chance":3.76,"name":"Comet Blast"},{"chance":3.76,"name":"Quasar Drill"},{"chance":3.76,"name":"Zodiac Shred"}],"ClanNode5":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode42":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":6.25,"name":"Reflex Coil","rotation":"B"},{"chance":6.25,"name":"Deep Freeze","rotation":"B"},{"chance":6.25,"name":"North Wind","rotation":"B"},{"chance":6.25,"name":"Cryo Rounds","rotation":"B"},{"chance":6.25,"name":"Hell's Chamber","rotation":"B"},{"chance":6.25,"name":"Stormbringer","rotation":"B"},{"chance":6.25,"name":"Point Blank","rotation":"B"},{"chance":6.25,"name":"Fury","rotation":"B"},{"chance":6.25,"name":"150 Endo","rotation":"B"},{"chance":6.25,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.25,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.25,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.25,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.25,"name":"Neo N23 Relic","rotation":"B"},{"chance":4.51,"name":"Vital Sense","rotation":"C"},{"chance":4.51,"name":"Metal Auger","rotation":"C"},{"chance":4.51,"name":"Ravage","rotation":"C"},{"chance":4.51,"name":"Stretch","rotation":"C"},{"chance":4.51,"name":"300 Endo","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode96":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Corpus","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode67":[{"chance":9.09,"name":"Vitality","rotation":"A"},{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Fast Hands","rotation":"A"},{"chance":9.09,"name":"Point Strike","rotation":"A"},{"chance":9.09,"name":"Piercing Hit","rotation":"A"},{"chance":9.09,"name":"Pistol Gambit","rotation":"A"},{"chance":9.09,"name":"Blunderbuss","rotation":"A"},{"chance":9.09,"name":"Live Wire","rotation":"A"},{"chance":5.56,"name":"Speed Trigger","rotation":"B"},{"chance":5.56,"name":"Fast Deflection","rotation":"B"},{"chance":5.56,"name":"Rush","rotation":"B"},{"chance":5.56,"name":"Target Cracker","rotation":"B"},{"chance":5.56,"name":"No Return","rotation":"B"},{"chance":5.56,"name":"Serration","rotation":"B"},{"chance":5.56,"name":"Hornet Strike","rotation":"B"},{"chance":5.56,"name":"Reflex Coil","rotation":"B"},{"chance":5.56,"name":"Deep Freeze","rotation":"B"},{"chance":5.56,"name":"North Wind","rotation":"B"},{"chance":5.56,"name":"Cryo Rounds","rotation":"B"},{"chance":5.56,"name":"Hell's Chamber","rotation":"B"},{"chance":5.56,"name":"Streamline","rotation":"B"},{"chance":5.56,"name":"Shocking Touch","rotation":"B"},{"chance":5.56,"name":"Stormbringer","rotation":"B"},{"chance":5.56,"name":"Point Blank","rotation":"B"},{"chance":5.56,"name":"Fury","rotation":"B"},{"chance":5.56,"name":"50 Endo","rotation":"B"},{"chance":5.64,"name":"Metal Auger","rotation":"C"},{"chance":5.64,"name":"Rime Rounds","rotation":"C"},{"chance":5.64,"name":"Scattering Inferno","rotation":"C"},{"chance":5.64,"name":"Ivara Chassis Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode32":[{"chance":38.72,"name":"Ember Neuroptics Blueprint"},{"chance":38.72,"name":"Ember Chassis Blueprint"},{"chance":22.56,"name":"Ember Systems Blueprint"}],"SolNode18":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Meso P11 Relic","rotation":"A"},{"chance":10,"name":"Meso G5 Relic","rotation":"A"},{"chance":10,"name":"Meso K6 Relic","rotation":"A"},{"chance":10,"name":"Meso P13 Relic","rotation":"A"},{"chance":10,"name":"Meso C8 Relic","rotation":"A"},{"chance":10,"name":"Meso K4 Relic","rotation":"A"},{"chance":10,"name":"Meso S12 Relic","rotation":"A"},{"chance":7.14,"name":"Target Cracker","rotation":"B"},{"chance":7.14,"name":"No Return","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Reflex Coil","rotation":"B"},{"chance":7.14,"name":"North Wind","rotation":"B"},{"chance":7.14,"name":"Hell's Chamber","rotation":"B"},{"chance":7.14,"name":"Neo F2 Relic","rotation":"B"},{"chance":7.14,"name":"Neo T7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo K5 Relic","rotation":"B"},{"chance":7.14,"name":"Neo D7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo C4 Relic","rotation":"B"},{"chance":7.14,"name":"Neo L3 Relic","rotation":"B"},{"chance":7.14,"name":"Neo N23 Relic","rotation":"B"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"C"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"C"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"C"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"C"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"C"}],"SolNode70":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode31":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode50":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"A"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"B"},{"chance":100,"name":"Force Specter Blueprint","rotation":"C"}],"SolNode82":[{"chance":100,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode906":[{"chance":5.06,"name":"400 Endo"},{"chance":3.16,"name":"400 Endo"},{"chance":1.01,"name":"400 Endo"},{"chance":1.01,"name":"400 Endo"},{"chance":5.06,"name":"400 Endo"},{"chance":5.06,"name":"Tempered Blade"},{"chance":5.06,"name":"Sudden Impact"},{"chance":5.06,"name":"Poisonous Sting"},{"chance":5.06,"name":"Glacial Edge"},{"chance":5.06,"name":"Conductive Blade"},{"chance":5.06,"name":"Furor"},{"chance":3.16,"name":"Extend"},{"chance":3.16,"name":"Superior Defenses"},{"chance":3.16,"name":"Cutting Edge"},{"chance":3.16,"name":"System Reroute"},{"chance":3.16,"name":"Efficient Transferral"},{"chance":3.16,"name":"Blazing Steel"},{"chance":5.06,"name":"Meso P11 Relic"},{"chance":5.06,"name":"Meso G5 Relic"},{"chance":5.06,"name":"Meso K6 Relic"},{"chance":5.06,"name":"Meso P13 Relic"},{"chance":5.06,"name":"Meso C8 Relic"},{"chance":5.06,"name":"Meso K4 Relic"},{"chance":5.06,"name":"Meso S12 Relic"}],"ClanNode13":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"ClanNode12":[{"chance":16.24,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.24,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.24,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.24,"name":"150 Endo","rotation":"A"},{"chance":16.24,"name":"150 Endo","rotation":"A"},{"chance":16.24,"name":"150 Endo","rotation":"A"},{"chance":2.58,"name":"Expel Corrupted","rotation":"A"},{"chance":6,"name":"Harrow Systems Blueprint","rotation":"B"},{"chance":8,"name":"Smite Corrupted","rotation":"B"},{"chance":8,"name":"Cleanse Corrupted","rotation":"B"},{"chance":8,"name":"Bane Of Corrupted","rotation":"B"},{"chance":10,"name":"Meso P11 Relic","rotation":"B"},{"chance":10,"name":"Meso G5 Relic","rotation":"B"},{"chance":10,"name":"Meso K6 Relic","rotation":"B"},{"chance":10,"name":"Meso P13 Relic","rotation":"B"},{"chance":10,"name":"Meso C8 Relic","rotation":"B"},{"chance":10,"name":"Meso K4 Relic","rotation":"B"},{"chance":10,"name":"Meso S12 Relic","rotation":"B"},{"chance":15,"name":"Harrow Systems Blueprint","rotation":"C"},{"chance":15,"name":"Enduring Strike","rotation":"C"},{"chance":10,"name":"Neo F2 Relic","rotation":"C"},{"chance":10,"name":"Neo T7 Relic","rotation":"C"},{"chance":10,"name":"Neo K5 Relic","rotation":"C"},{"chance":10,"name":"Neo D7 Relic","rotation":"C"},{"chance":10,"name":"Neo C4 Relic","rotation":"C"},{"chance":10,"name":"Neo L3 Relic","rotation":"C"},{"chance":10,"name":"Neo N23 Relic","rotation":"C"}],"SolNode33":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode105":[{"chance":11.28,"name":"Equinox Night Aspect Blueprint"},{"chance":12.91,"name":"Equinox Night Chassis Blueprint"},{"chance":12.91,"name":"Equinox Night Neuroptics Blueprint"},{"chance":12.91,"name":"Equinox Night Systems Blueprint"},{"chance":11.28,"name":"Equinox Day Aspect Blueprint"},{"chance":12.91,"name":"Equinox Day Chassis Blueprint"},{"chance":12.91,"name":"Equinox Day Neuroptics Blueprint"},{"chance":12.91,"name":"Equinox Day Systems Blueprint"}],"SolNode64":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Meso P11 Relic","rotation":"A"},{"chance":10,"name":"Meso G5 Relic","rotation":"A"},{"chance":10,"name":"Meso K6 Relic","rotation":"A"},{"chance":10,"name":"Meso P13 Relic","rotation":"A"},{"chance":10,"name":"Meso C8 Relic","rotation":"A"},{"chance":10,"name":"Meso K4 Relic","rotation":"A"},{"chance":10,"name":"Meso S12 Relic","rotation":"A"},{"chance":7.14,"name":"Target Cracker","rotation":"B"},{"chance":7.14,"name":"No Return","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Reflex Coil","rotation":"B"},{"chance":7.14,"name":"North Wind","rotation":"B"},{"chance":7.14,"name":"Hell's Chamber","rotation":"B"},{"chance":7.14,"name":"Neo F2 Relic","rotation":"B"},{"chance":7.14,"name":"Neo T7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo K5 Relic","rotation":"B"},{"chance":7.14,"name":"Neo D7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo C4 Relic","rotation":"B"},{"chance":7.14,"name":"Neo L3 Relic","rotation":"B"},{"chance":7.14,"name":"Neo N23 Relic","rotation":"B"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"C"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"C"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"C"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"C"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"C"}],"SolNode69":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode98":[{"chance":20,"name":"3,000 Credits Cache","rotation":"A"},{"chance":20,"name":"3,000 Credits Cache","rotation":"A"},{"chance":20,"name":"300X Polymer Bundle","rotation":"A"},{"chance":20,"name":"200 Endo","rotation":"A"},{"chance":20,"name":"200 Endo","rotation":"A"},{"chance":15.49,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.49,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.49,"name":"200 Endo","rotation":"B"},{"chance":15.49,"name":"200 Endo","rotation":"B"},{"chance":15.49,"name":"300X Plastids","rotation":"B"},{"chance":4.51,"name":"Battering Maneuver","rotation":"B"},{"chance":4.51,"name":"Mobilize","rotation":"B"},{"chance":4.51,"name":"Piercing Step","rotation":"B"},{"chance":4.51,"name":"Rending Turn","rotation":"B"},{"chance":4.51,"name":"Patagium","rotation":"B"},{"chance":15.49,"name":"400 Endo","rotation":"C"},{"chance":4.51,"name":"400 Endo","rotation":"C"},{"chance":15.49,"name":"2X Gallium","rotation":"C"},{"chance":15.49,"name":"3X Gallium","rotation":"C"},{"chance":15.49,"name":"250X Oxium","rotation":"C"},{"chance":15.49,"name":"Tellurium","rotation":"C"},{"chance":4.51,"name":"Lightning Dash","rotation":"C"},{"chance":4.51,"name":"Firewalker","rotation":"C"},{"chance":4.51,"name":"Ice Spring","rotation":"C"},{"chance":4.51,"name":"Toxic Flight","rotation":"C"}],"SolNode9":[{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Steady Hands","rotation":"A"},{"chance":14.29,"name":"Stabilizer","rotation":"A"},{"chance":14.29,"name":"Power Throw","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"B"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"B"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"B"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"B"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"B"},{"chance":7.04,"name":"Auto Breach","rotation":"C"},{"chance":7.04,"name":"Power Throw","rotation":"C"},{"chance":7.04,"name":"Stretch","rotation":"C"},{"chance":7.04,"name":"Hell's Chamber","rotation":"C"},{"chance":7.04,"name":"Scorch","rotation":"C"},{"chance":7.04,"name":"Thermite Rounds","rotation":"C"},{"chance":7.52,"name":"Frostbite","rotation":"C"},{"chance":7.04,"name":"Frigid Blast","rotation":"C"},{"chance":7.04,"name":"Arrow Mutation","rotation":"C"},{"chance":7.04,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Covert Lethality","rotation":"C"},{"chance":7.52,"name":"Ivara Neuroptics Blueprint","rotation":"C"},{"chance":7.52,"name":"Ivara Blueprint","rotation":"C"}],"SolNode60":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"ClanNode16":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"B"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"B"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"B"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"B"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"B"},{"chance":13.56,"name":"Neo F2 Relic","rotation":"C"},{"chance":13.56,"name":"Neo T7 Relic","rotation":"C"},{"chance":13.56,"name":"Neo K5 Relic","rotation":"C"},{"chance":5.08,"name":"Universal Medallion","rotation":"C"},{"chance":13.56,"name":"Neo D7 Relic","rotation":"C"},{"chance":13.56,"name":"Neo C4 Relic","rotation":"C"},{"chance":13.56,"name":"Neo L3 Relic","rotation":"C"},{"chance":13.56,"name":"Neo N23 Relic","rotation":"C"}],"SolNode122":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode907":[{"chance":2.51,"name":"Automatic Trigger","rotation":"A"},{"chance":2.51,"name":"Combustion Rounds","rotation":"A"},{"chance":2.51,"name":"Dual Rounds","rotation":"A"},{"chance":2.51,"name":"Hollowed Bullets","rotation":"A"},{"chance":2.51,"name":"Magazine Extension","rotation":"A"},{"chance":2.51,"name":"Modified Munitions","rotation":"A"},{"chance":2.51,"name":"Parallax Scope","rotation":"A"},{"chance":2.51,"name":"Rubedo-Lined Barrel","rotation":"A"},{"chance":2.51,"name":"Venomous Clip","rotation":"A"},{"chance":38.72,"name":"250 Endo","rotation":"A"},{"chance":38.72,"name":"250 Endo","rotation":"A"},{"chance":10,"name":"Superior Defenses","rotation":"B"},{"chance":10,"name":"Bleeding Edge","rotation":"B"},{"chance":10,"name":"Superior Defenses","rotation":"B"},{"chance":10,"name":"Argon Plating","rotation":"B"},{"chance":10,"name":"Furor","rotation":"B"},{"chance":10,"name":"Glacial Edge","rotation":"B"},{"chance":10,"name":"Electrified Barrel","rotation":"B"},{"chance":10,"name":"Energy Inversion","rotation":"B"},{"chance":10,"name":"250 Endo","rotation":"B"},{"chance":10,"name":"250 Endo","rotation":"B"},{"chance":22.56,"name":"400 Endo","rotation":"C"},{"chance":9.68,"name":"400 Endo","rotation":"C"},{"chance":9.68,"name":"Axi H6 Relic","rotation":"C"},{"chance":9.68,"name":"Axi A16 Relic","rotation":"C"},{"chance":9.68,"name":"Axi G10 Relic","rotation":"C"},{"chance":9.68,"name":"Axi B6 Relic","rotation":"C"},{"chance":9.68,"name":"Axi K11 Relic","rotation":"C"},{"chance":9.68,"name":"Axi W3 Relic","rotation":"C"},{"chance":9.68,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode17":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.28,"name":"Life Strike","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode1":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode17":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode78":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode6":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode127":[{"chance":38.72,"name":"Loki Neuroptics Blueprint"},{"chance":38.72,"name":"Loki Chassis Blueprint"},{"chance":22.56,"name":"Loki Systems Blueprint"}],"SolNode118":[{"chance":100,"name":"2X 10,000 Credits Cache","rotation":"A"},{"chance":100,"name":"3X 10,000 Credits Cache","rotation":"B"},{"chance":95,"name":"5X 10,000 Credits Cache","rotation":"C"},{"chance":5,"name":"Universal Medallion","rotation":"C"}],"SolNode84":[{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Steady Hands","rotation":"A"},{"chance":14.29,"name":"Stabilizer","rotation":"A"},{"chance":14.29,"name":"Power Throw","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"B"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"B"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"B"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"B"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"B"},{"chance":7.04,"name":"Auto Breach","rotation":"C"},{"chance":7.04,"name":"Power Throw","rotation":"C"},{"chance":7.04,"name":"Stretch","rotation":"C"},{"chance":7.04,"name":"Hell's Chamber","rotation":"C"},{"chance":7.04,"name":"Scorch","rotation":"C"},{"chance":7.04,"name":"Thermite Rounds","rotation":"C"},{"chance":7.52,"name":"Frostbite","rotation":"C"},{"chance":7.04,"name":"Frigid Blast","rotation":"C"},{"chance":7.04,"name":"Arrow Mutation","rotation":"C"},{"chance":7.04,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Covert Lethality","rotation":"C"},{"chance":7.52,"name":"Ivara Neuroptics Blueprint","rotation":"C"},{"chance":7.52,"name":"Ivara Blueprint","rotation":"C"}],"ClanNode20":[{"chance":24.35,"name":"3,000 Credits Cache","rotation":"A"},{"chance":24.35,"name":"3,000 Credits Cache","rotation":"A"},{"chance":24.35,"name":"3,000 Credits Cache","rotation":"A"},{"chance":24.35,"name":"250 Endo","rotation":"A"},{"chance":2.58,"name":"Expel Corrupted","rotation":"A"},{"chance":6,"name":"Harrow Systems Blueprint","rotation":"B"},{"chance":8,"name":"Smite Corrupted","rotation":"B"},{"chance":8,"name":"Cleanse Corrupted","rotation":"B"},{"chance":8,"name":"Bane Of Corrupted","rotation":"B"},{"chance":10,"name":"Neo F2 Relic","rotation":"B"},{"chance":10,"name":"Neo T7 Relic","rotation":"B"},{"chance":10,"name":"Neo K5 Relic","rotation":"B"},{"chance":10,"name":"Neo D7 Relic","rotation":"B"},{"chance":10,"name":"Neo C4 Relic","rotation":"B"},{"chance":10,"name":"Neo L3 Relic","rotation":"B"},{"chance":10,"name":"Neo N23 Relic","rotation":"B"},{"chance":15,"name":"Harrow Systems Blueprint","rotation":"C"},{"chance":15,"name":"Life Strike","rotation":"C"},{"chance":10,"name":"Axi H6 Relic","rotation":"C"},{"chance":10,"name":"Axi A16 Relic","rotation":"C"},{"chance":10,"name":"Axi G10 Relic","rotation":"C"},{"chance":10,"name":"Axi B6 Relic","rotation":"C"},{"chance":10,"name":"Axi K11 Relic","rotation":"C"},{"chance":10,"name":"Axi W3 Relic","rotation":"C"},{"chance":10,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode21":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.28,"name":"Life Strike","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode72":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode48":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode76":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode51":[{"chance":38.72,"name":"Trinity Neuroptics Blueprint"},{"chance":38.72,"name":"Trinity Chassis Blueprint"},{"chance":22.56,"name":"Trinity Systems Blueprint"}],"SolNode56":[{"chance":100,"name":"10,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400X Circuits","rotation":"B"},{"chance":12.65,"name":"400X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":3.67,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"Orokin Cell","rotation":"C"},{"chance":12.58,"name":"Gallium","rotation":"C"},{"chance":12.58,"name":"Neurodes","rotation":"C"},{"chance":3.67,"name":"2X Orokin Cell","rotation":"C"},{"chance":3.67,"name":"2X Gallium","rotation":"C"},{"chance":3.67,"name":"2X Neurodes","rotation":"C"},{"chance":3.67,"name":"Argon Crystal","rotation":"C"},{"chance":3.67,"name":"Tellurium","rotation":"C"},{"chance":2,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode43":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"B"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"B"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"B"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"C"}],"SolNode81":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode24":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode102":[{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Steady Hands","rotation":"A"},{"chance":14.29,"name":"Stabilizer","rotation":"A"},{"chance":14.29,"name":"Power Throw","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"B"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"B"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"B"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"B"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"B"},{"chance":7.04,"name":"Auto Breach","rotation":"C"},{"chance":7.04,"name":"Power Throw","rotation":"C"},{"chance":7.04,"name":"Stretch","rotation":"C"},{"chance":7.04,"name":"Hell's Chamber","rotation":"C"},{"chance":7.04,"name":"Scorch","rotation":"C"},{"chance":7.04,"name":"Thermite Rounds","rotation":"C"},{"chance":7.52,"name":"Frostbite","rotation":"C"},{"chance":7.04,"name":"Frigid Blast","rotation":"C"},{"chance":7.04,"name":"Arrow Mutation","rotation":"C"},{"chance":7.04,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Covert Lethality","rotation":"C"},{"chance":7.52,"name":"Ivara Neuroptics Blueprint","rotation":"C"},{"chance":7.52,"name":"Ivara Blueprint","rotation":"C"}],"ClanNode25":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode135":[{"chance":100,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode132":[{"chance":9.09,"name":"Vitality","rotation":"A"},{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Fast Hands","rotation":"A"},{"chance":9.09,"name":"Point Strike","rotation":"A"},{"chance":9.09,"name":"Piercing Hit","rotation":"A"},{"chance":9.09,"name":"Pistol Gambit","rotation":"A"},{"chance":9.09,"name":"Blunderbuss","rotation":"A"},{"chance":9.09,"name":"Live Wire","rotation":"A"},{"chance":5.56,"name":"Speed Trigger","rotation":"B"},{"chance":5.56,"name":"Fast Deflection","rotation":"B"},{"chance":5.56,"name":"Rush","rotation":"B"},{"chance":5.56,"name":"Target Cracker","rotation":"B"},{"chance":5.56,"name":"No Return","rotation":"B"},{"chance":5.56,"name":"Serration","rotation":"B"},{"chance":5.56,"name":"Hornet Strike","rotation":"B"},{"chance":5.56,"name":"Reflex Coil","rotation":"B"},{"chance":5.56,"name":"Deep Freeze","rotation":"B"},{"chance":5.56,"name":"North Wind","rotation":"B"},{"chance":5.56,"name":"Cryo Rounds","rotation":"B"},{"chance":5.56,"name":"Hell's Chamber","rotation":"B"},{"chance":5.56,"name":"Streamline","rotation":"B"},{"chance":5.56,"name":"Shocking Touch","rotation":"B"},{"chance":5.56,"name":"Stormbringer","rotation":"B"},{"chance":5.56,"name":"Point Blank","rotation":"B"},{"chance":5.56,"name":"Fury","rotation":"B"},{"chance":5.56,"name":"50 Endo","rotation":"B"},{"chance":5.64,"name":"Metal Auger","rotation":"C"},{"chance":5.64,"name":"Rime Rounds","rotation":"C"},{"chance":5.64,"name":"Scattering Inferno","rotation":"C"},{"chance":5.64,"name":"Ivara Chassis Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode139":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode141":[{"chance":100,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"300X Polymer Bundle","rotation":"B"},{"chance":12.65,"name":"350X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"600 Endo","rotation":"C"},{"chance":4.4,"name":"600 Endo","rotation":"C"},{"chance":15.1,"name":"Orokin Cell","rotation":"C"},{"chance":15.1,"name":"Gallium","rotation":"C"},{"chance":15.1,"name":"Neurodes","rotation":"C"},{"chance":4.4,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.4,"name":"2X Gallium","rotation":"C"},{"chance":4.4,"name":"2X Neurodes","rotation":"C"},{"chance":4.4,"name":"Tellurium","rotation":"C"},{"chance":1,"name":"Argon Crystal","rotation":"C"},{"chance":1,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode137":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SolNode144":[{"chance":38.72,"name":"Frost Neuroptics Blueprint"},{"chance":38.72,"name":"Frost Chassis Blueprint"},{"chance":22.56,"name":"Frost Systems Blueprint"}],"SolNode149":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SolNode147":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Lith G6 Relic","rotation":"A"},{"chance":10,"name":"Lith W3 Relic","rotation":"A"},{"chance":10,"name":"Lith S15 Relic","rotation":"A"},{"chance":10,"name":"Lith S14 Relic","rotation":"A"},{"chance":10,"name":"Lith B11 Relic","rotation":"A"},{"chance":10,"name":"Lith H9 Relic","rotation":"A"},{"chance":10,"name":"Lith R3 Relic","rotation":"A"},{"chance":5.88,"name":"Speed Trigger","rotation":"B"},{"chance":5.88,"name":"Fast Deflection","rotation":"B"},{"chance":5.88,"name":"Rush","rotation":"B"},{"chance":5.88,"name":"Target Cracker","rotation":"B"},{"chance":5.88,"name":"No Return","rotation":"B"},{"chance":5.88,"name":"Serration","rotation":"B"},{"chance":5.88,"name":"Hornet Strike","rotation":"B"},{"chance":5.88,"name":"Reflex Coil","rotation":"B"},{"chance":5.88,"name":"Deep Freeze","rotation":"B"},{"chance":5.88,"name":"North Wind","rotation":"B"},{"chance":5.88,"name":"Meso P11 Relic","rotation":"B"},{"chance":5.88,"name":"Meso G5 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K6 Relic","rotation":"B"},{"chance":5.88,"name":"Meso P13 Relic","rotation":"B"},{"chance":5.88,"name":"Meso C8 Relic","rotation":"B"},{"chance":5.88,"name":"Meso K4 Relic","rotation":"B"},{"chance":5.88,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.58,"name":"Natural Talent","rotation":"C"},{"chance":13.92,"name":"Meso P11 Relic","rotation":"C"},{"chance":13.92,"name":"Meso G5 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K6 Relic","rotation":"C"},{"chance":13.92,"name":"Meso P13 Relic","rotation":"C"},{"chance":13.92,"name":"Meso C8 Relic","rotation":"C"},{"chance":13.92,"name":"Meso K4 Relic","rotation":"C"},{"chance":13.92,"name":"Meso S12 Relic","rotation":"C"}],"SolNode146":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Corpus","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"ClanNode23":[{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":11.28,"name":"True Punishment","rotation":"C"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"ClanNode22":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode153":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode162":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode167":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"150 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":14.29,"name":"Nidus Systems Blueprint","rotation":"C"},{"chance":14.29,"name":"Nidus Neuroptics Blueprint","rotation":"C"},{"chance":14.29,"name":"Nidus Chassis Blueprint","rotation":"C"},{"chance":14.29,"name":"Vital Sense","rotation":"C"},{"chance":14.29,"name":"Metal Auger","rotation":"C"},{"chance":14.29,"name":"Stretch","rotation":"C"},{"chance":14.29,"name":"300 Endo","rotation":"C"}],"SolNode166":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode18":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode172":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"B"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"B"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"B"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode19":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"B"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"B"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"B"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"B"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"B"},{"chance":12.5,"name":"Life Strike","rotation":"C"},{"chance":12.5,"name":"Axi H6 Relic","rotation":"C"},{"chance":12.5,"name":"Axi A16 Relic","rotation":"C"},{"chance":12.5,"name":"Axi G10 Relic","rotation":"C"},{"chance":12.5,"name":"Axi B6 Relic","rotation":"C"},{"chance":12.5,"name":"Axi K11 Relic","rotation":"C"},{"chance":12.5,"name":"Axi W3 Relic","rotation":"C"},{"chance":12.5,"name":"Axi H7 Relic","rotation":"C"}],"SolNode175":[{"chance":16.67,"name":"3,000 Credits Cache","rotation":"A"},{"chance":16.67,"name":"3,000 Credits Cache","rotation":"A"},{"chance":16.67,"name":"200 Endo","rotation":"A"},{"chance":16.67,"name":"200 Endo","rotation":"A"},{"chance":16.67,"name":"1000X Nano Spores","rotation":"A"},{"chance":16.67,"name":"Thief's Wit","rotation":"A"},{"chance":15.49,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.49,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.49,"name":"300 Endo","rotation":"B"},{"chance":15.49,"name":"350X Plastids","rotation":"B"},{"chance":15.49,"name":"3X Mutagen Sample","rotation":"B"},{"chance":5.64,"name":"Contagious Spread","rotation":"B"},{"chance":5.64,"name":"Pathogen Rounds","rotation":"B"},{"chance":5.64,"name":"Infected Clip","rotation":"B"},{"chance":5.64,"name":"Fever Strike","rotation":"B"},{"chance":15.49,"name":"Neurodes","rotation":"C"},{"chance":15.49,"name":"2X Neurodes","rotation":"C"},{"chance":15.49,"name":"400 Endo","rotation":"C"},{"chance":15.49,"name":"400 Endo","rotation":"C"},{"chance":4.51,"name":"400 Endo","rotation":"C"},{"chance":15.49,"name":"Enemy Sense","rotation":"C"},{"chance":4.51,"name":"Mutalist Alad V Nav Coordinate","rotation":"C"},{"chance":4.51,"name":"High Voltage","rotation":"C"},{"chance":4.51,"name":"Shell Shock","rotation":"C"},{"chance":4.51,"name":"Firestorm","rotation":"C"}],"SolNode177":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"B"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"B"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"B"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"B"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"B"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"B"},{"chance":10.2,"name":"Axi H6 Relic","rotation":"C"},{"chance":10.2,"name":"Axi A16 Relic","rotation":"C"},{"chance":10.2,"name":"Axi G10 Relic","rotation":"C"},{"chance":7.84,"name":"Gauss Chassis Blueprint","rotation":"C"},{"chance":7.84,"name":"Gauss Neuroptics Blueprint","rotation":"C"},{"chance":7.84,"name":"Gauss Systems Blueprint","rotation":"C"},{"chance":5.1,"name":"Universal Medallion","rotation":"C"},{"chance":10.2,"name":"Axi B6 Relic","rotation":"C"},{"chance":10.2,"name":"Axi K11 Relic","rotation":"C"},{"chance":10.2,"name":"Axi W3 Relic","rotation":"C"},{"chance":10.2,"name":"Axi H7 Relic","rotation":"C"}],"SolNode184":[{"chance":100,"name":"10,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400X Circuits","rotation":"B"},{"chance":12.65,"name":"400X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"600 Endo","rotation":"C"},{"chance":3.67,"name":"600 Endo","rotation":"C"},{"chance":12.58,"name":"Orokin Cell","rotation":"C"},{"chance":12.58,"name":"Gallium","rotation":"C"},{"chance":12.58,"name":"Neurodes","rotation":"C"},{"chance":3.67,"name":"2X Orokin Cell","rotation":"C"},{"chance":3.67,"name":"2X Gallium","rotation":"C"},{"chance":3.67,"name":"2X Neurodes","rotation":"C"},{"chance":3.67,"name":"Argon Crystal","rotation":"C"},{"chance":3.67,"name":"Tellurium","rotation":"C"},{"chance":2,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode183":[{"chance":75.5,"name":"5,000 Credits Cache"},{"chance":22,"name":"250 Endo"},{"chance":0.5,"name":"Forma Blueprint"},{"chance":0.5,"name":"Crimson Dervish"},{"chance":0.5,"name":"Astral Twilight"},{"chance":0.5,"name":"Blind Justice"},{"chance":0.25,"name":"Tempo Royale"},{"chance":0.25,"name":"Vengeful Revenant"}],"SolNode190":[{"chance":75.88,"name":"4,000 Credits Cache"},{"chance":22.11,"name":"250 Endo"},{"chance":0.34,"name":"Forma Blueprint"},{"chance":0.34,"name":"Crushing Ruin"},{"chance":0.34,"name":"Final Harbinger"},{"chance":0.34,"name":"Vermillion Storm"},{"chance":0.34,"name":"Stalking Fan"},{"chance":0.34,"name":"Decisive Judgement"}],"SolNode185":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"B"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"B"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"B"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"C"}],"SolNode187":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode188":[{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"2,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Steady Hands","rotation":"A"},{"chance":14.29,"name":"Stabilizer","rotation":"A"},{"chance":14.29,"name":"Power Throw","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"B"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"B"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"B"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"B"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"B"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"B"},{"chance":7.04,"name":"Auto Breach","rotation":"C"},{"chance":7.04,"name":"Power Throw","rotation":"C"},{"chance":7.04,"name":"Stretch","rotation":"C"},{"chance":7.04,"name":"Hell's Chamber","rotation":"C"},{"chance":7.04,"name":"Scorch","rotation":"C"},{"chance":7.04,"name":"Thermite Rounds","rotation":"C"},{"chance":7.52,"name":"Frostbite","rotation":"C"},{"chance":7.04,"name":"Frigid Blast","rotation":"C"},{"chance":7.04,"name":"Arrow Mutation","rotation":"C"},{"chance":7.04,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":7.04,"name":"Covert Lethality","rotation":"C"},{"chance":7.52,"name":"Ivara Neuroptics Blueprint","rotation":"C"},{"chance":7.52,"name":"Ivara Blueprint","rotation":"C"}],"SolNode189":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode199":[{"chance":75.5,"name":"5,000 Credits Cache"},{"chance":22,"name":"250 Endo"},{"chance":0.5,"name":"Forma Blueprint"},{"chance":0.5,"name":"Crimson Dervish"},{"chance":0.5,"name":"Astral Twilight"},{"chance":0.5,"name":"Blind Justice"},{"chance":0.25,"name":"Tempo Royale"},{"chance":0.25,"name":"Vengeful Revenant"}],"SolNode193":[{"chance":38.72,"name":"Saryn Neuroptics Blueprint"},{"chance":38.72,"name":"Saryn Chassis Blueprint"},{"chance":22.56,"name":"Saryn Systems Blueprint"}],"SolNode195":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode14":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.28,"name":"Life Strike","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"ClanNode15":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"SolNode203":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode210":[{"chance":38.72,"name":"Nova Neuroptics Blueprint"},{"chance":38.72,"name":"Nova Chassis Blueprint"},{"chance":22.56,"name":"Nova Systems Blueprint"}],"SolNode216":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Corpus","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode211":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Meso P11 Relic","rotation":"A"},{"chance":10,"name":"Meso G5 Relic","rotation":"A"},{"chance":10,"name":"Meso K6 Relic","rotation":"A"},{"chance":10,"name":"Meso P13 Relic","rotation":"A"},{"chance":10,"name":"Meso C8 Relic","rotation":"A"},{"chance":10,"name":"Meso K4 Relic","rotation":"A"},{"chance":10,"name":"Meso S12 Relic","rotation":"A"},{"chance":7.14,"name":"Target Cracker","rotation":"B"},{"chance":7.14,"name":"No Return","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Reflex Coil","rotation":"B"},{"chance":7.14,"name":"North Wind","rotation":"B"},{"chance":7.14,"name":"Hell's Chamber","rotation":"B"},{"chance":7.14,"name":"Neo F2 Relic","rotation":"B"},{"chance":7.14,"name":"Neo T7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo K5 Relic","rotation":"B"},{"chance":7.14,"name":"Neo D7 Relic","rotation":"B"},{"chance":7.14,"name":"Neo C4 Relic","rotation":"B"},{"chance":7.14,"name":"Neo L3 Relic","rotation":"B"},{"chance":7.14,"name":"Neo N23 Relic","rotation":"B"},{"chance":14.29,"name":"Neo F2 Relic","rotation":"C"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"C"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"C"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"C"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"C"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"C"}],"SolNode215":[{"chance":9.09,"name":"Vitality","rotation":"A"},{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Fast Hands","rotation":"A"},{"chance":9.09,"name":"Point Strike","rotation":"A"},{"chance":9.09,"name":"Piercing Hit","rotation":"A"},{"chance":9.09,"name":"Pistol Gambit","rotation":"A"},{"chance":9.09,"name":"Blunderbuss","rotation":"A"},{"chance":9.09,"name":"Live Wire","rotation":"A"},{"chance":5.56,"name":"Speed Trigger","rotation":"B"},{"chance":5.56,"name":"Fast Deflection","rotation":"B"},{"chance":5.56,"name":"Rush","rotation":"B"},{"chance":5.56,"name":"Target Cracker","rotation":"B"},{"chance":5.56,"name":"No Return","rotation":"B"},{"chance":5.56,"name":"Serration","rotation":"B"},{"chance":5.56,"name":"Hornet Strike","rotation":"B"},{"chance":5.56,"name":"Reflex Coil","rotation":"B"},{"chance":5.56,"name":"Deep Freeze","rotation":"B"},{"chance":5.56,"name":"North Wind","rotation":"B"},{"chance":5.56,"name":"Cryo Rounds","rotation":"B"},{"chance":5.56,"name":"Hell's Chamber","rotation":"B"},{"chance":5.56,"name":"Streamline","rotation":"B"},{"chance":5.56,"name":"Shocking Touch","rotation":"B"},{"chance":5.56,"name":"Stormbringer","rotation":"B"},{"chance":5.56,"name":"Point Blank","rotation":"B"},{"chance":5.56,"name":"Fury","rotation":"B"},{"chance":5.56,"name":"50 Endo","rotation":"B"},{"chance":5.64,"name":"Metal Auger","rotation":"C"},{"chance":5.64,"name":"Rime Rounds","rotation":"C"},{"chance":5.64,"name":"Scattering Inferno","rotation":"C"},{"chance":5.64,"name":"Ivara Chassis Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode212":[{"chance":14.29,"name":"Meso P11 Relic","rotation":"A"},{"chance":14.29,"name":"Meso G5 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K6 Relic","rotation":"A"},{"chance":14.29,"name":"Meso P13 Relic","rotation":"A"},{"chance":14.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":14.29,"name":"Meso K4 Relic","rotation":"A"},{"chance":14.29,"name":"Meso S12 Relic","rotation":"A"},{"chance":6.25,"name":"Reflex Coil","rotation":"B"},{"chance":6.25,"name":"Deep Freeze","rotation":"B"},{"chance":6.25,"name":"North Wind","rotation":"B"},{"chance":6.25,"name":"Cryo Rounds","rotation":"B"},{"chance":6.25,"name":"Hell's Chamber","rotation":"B"},{"chance":6.25,"name":"Stormbringer","rotation":"B"},{"chance":6.25,"name":"Point Blank","rotation":"B"},{"chance":6.25,"name":"Fury","rotation":"B"},{"chance":6.25,"name":"150 Endo","rotation":"B"},{"chance":6.25,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.25,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.25,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.25,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.25,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.25,"name":"Neo N23 Relic","rotation":"B"},{"chance":4.51,"name":"Vital Sense","rotation":"C"},{"chance":4.51,"name":"Metal Auger","rotation":"C"},{"chance":4.51,"name":"Ravage","rotation":"C"},{"chance":4.51,"name":"Stretch","rotation":"C"},{"chance":4.51,"name":"300 Endo","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode217":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"A"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"B"},{"chance":100,"name":"Force Specter Blueprint","rotation":"C"}],"ClanNode6":[{"chance":6.9,"name":"Vitality","rotation":"A"},{"chance":6.9,"name":"Fast Deflection","rotation":"A"},{"chance":7.37,"name":"Rush","rotation":"A"},{"chance":6.9,"name":"Magazine Warp","rotation":"A"},{"chance":6.9,"name":"Trick Mag","rotation":"A"},{"chance":1.01,"name":"Pressure Point","rotation":"A"},{"chance":7.37,"name":"Ammo Drum","rotation":"A"},{"chance":7.37,"name":"Fast Hands","rotation":"A"},{"chance":1.01,"name":"True Punishment","rotation":"A"},{"chance":6.9,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.9,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.9,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.9,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.9,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.9,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.43,"name":"Speed Trigger","rotation":"B"},{"chance":1.58,"name":"Fast Hands","rotation":"B"},{"chance":8.43,"name":"Point Strike","rotation":"B"},{"chance":8.43,"name":"Vital Sense","rotation":"B"},{"chance":1.58,"name":"Piercing Hit","rotation":"B"},{"chance":1.58,"name":"Metal Auger","rotation":"B"},{"chance":8.43,"name":"Pistol Gambit","rotation":"B"},{"chance":8.43,"name":"Target Cracker","rotation":"B"},{"chance":8.43,"name":"No Return","rotation":"B"},{"chance":8.43,"name":"Ravage","rotation":"B"},{"chance":8.43,"name":"Blunderbuss","rotation":"B"},{"chance":1.58,"name":"Point Blank","rotation":"B"},{"chance":1.58,"name":"Serration","rotation":"B"},{"chance":1.58,"name":"Hornet Strike","rotation":"B"},{"chance":0.67,"name":"Fury","rotation":"B"},{"chance":1.58,"name":"Reflex Coil","rotation":"B"},{"chance":8.43,"name":"Pressure Point","rotation":"B"},{"chance":0.67,"name":"True Punishment","rotation":"B"},{"chance":0.67,"name":"Quickening","rotation":"B"},{"chance":1.58,"name":"Meso P11 Relic","rotation":"B"},{"chance":1.58,"name":"Meso G5 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K6 Relic","rotation":"B"},{"chance":1.58,"name":"Meso P13 Relic","rotation":"B"},{"chance":1.58,"name":"Meso C8 Relic","rotation":"B"},{"chance":1.58,"name":"Meso K4 Relic","rotation":"B"},{"chance":1.58,"name":"Meso S12 Relic","rotation":"B"},{"chance":7.59,"name":"Hellfire","rotation":"C"},{"chance":7.59,"name":"Heated Charge","rotation":"C"},{"chance":1.84,"name":"Molten Impact","rotation":"C"},{"chance":1.84,"name":"Barrel Diffusion","rotation":"C"},{"chance":1.84,"name":"Streamline","rotation":"C"},{"chance":1.84,"name":"Intensify","rotation":"C"},{"chance":0.4,"name":"Thunderbolt","rotation":"C"},{"chance":7.59,"name":"80 Endo","rotation":"C"},{"chance":1.84,"name":"80 Endo","rotation":"C"},{"chance":0.4,"name":"True Punishment","rotation":"C"},{"chance":0.4,"name":"Quickening","rotation":"C"},{"chance":0.4,"name":"Enduring Strike","rotation":"C"},{"chance":0.4,"name":"Life Strike","rotation":"C"},{"chance":7.59,"name":"Meso P11 Relic","rotation":"C"},{"chance":7.59,"name":"Meso G5 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K6 Relic","rotation":"C"},{"chance":7.59,"name":"Meso P13 Relic","rotation":"C"},{"chance":7.59,"name":"Meso C8 Relic","rotation":"C"},{"chance":7.59,"name":"Meso K4 Relic","rotation":"C"},{"chance":7.59,"name":"Meso S12 Relic","rotation":"C"},{"chance":1.84,"name":"Neo F2 Relic","rotation":"C"},{"chance":1.84,"name":"Neo T7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo K5 Relic","rotation":"C"},{"chance":1.84,"name":"Neo D7 Relic","rotation":"C"},{"chance":1.84,"name":"Neo C4 Relic","rotation":"C"},{"chance":1.84,"name":"Neo L3 Relic","rotation":"C"},{"chance":1.84,"name":"Neo N23 Relic","rotation":"C"}],"ClanNode7":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode400":[{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith H9 Relic"},{"chance":6.67,"name":"Lith H9 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode401":[{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith H9 Relic"},{"chance":6.67,"name":"Lith H9 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode402":[{"chance":6.67,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.67,"name":"Lith G6 Relic","rotation":"A"},{"chance":6.67,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.67,"name":"Lith W3 Relic","rotation":"A"},{"chance":6.67,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.67,"name":"Lith S15 Relic","rotation":"A"},{"chance":6.67,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.67,"name":"Lith S14 Relic","rotation":"A"},{"chance":6.67,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.67,"name":"Lith B11 Relic","rotation":"A"},{"chance":6.67,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.67,"name":"Lith H9 Relic","rotation":"A"},{"chance":6.67,"name":"Lith R3 Relic","rotation":"A"},{"chance":6.67,"name":"Lith R3 Relic","rotation":"A"},{"chance":6.67,"name":"Aya","rotation":"A"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"B"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"B"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"B"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"B"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"B"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"B"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"B"},{"chance":2.05,"name":"Meso P11 Relic","rotation":"B"},{"chance":2.05,"name":"Meso G5 Relic","rotation":"B"},{"chance":2.05,"name":"Meso G5 Relic","rotation":"B"},{"chance":2.05,"name":"Meso K6 Relic","rotation":"B"},{"chance":2.05,"name":"Meso P13 Relic","rotation":"B"},{"chance":2.05,"name":"Meso C8 Relic","rotation":"B"},{"chance":2.05,"name":"Meso K4 Relic","rotation":"B"},{"chance":2.05,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":6.67,"name":"Lith G6 Relic","rotation":"C"},{"chance":6.67,"name":"Lith W3 Relic","rotation":"C"},{"chance":6.67,"name":"Lith S15 Relic","rotation":"C"},{"chance":6.67,"name":"Lith S14 Relic","rotation":"C"},{"chance":6.67,"name":"Lith B11 Relic","rotation":"C"},{"chance":6.67,"name":"Lith H9 Relic","rotation":"C"},{"chance":6.67,"name":"Lith R3 Relic","rotation":"C"},{"chance":6.67,"name":"Meso P11 Relic","rotation":"C"},{"chance":6.67,"name":"Meso G5 Relic","rotation":"C"},{"chance":6.67,"name":"Meso K6 Relic","rotation":"C"},{"chance":6.67,"name":"Meso P13 Relic","rotation":"C"},{"chance":6.67,"name":"Meso C8 Relic","rotation":"C"},{"chance":6.67,"name":"Meso K4 Relic","rotation":"C"},{"chance":6.67,"name":"Meso S12 Relic","rotation":"C"},{"chance":6.67,"name":"Aya","rotation":"C"}],"SolNode403":[{"chance":6.67,"name":"Lith G6 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith S15 Relic"},{"chance":6.67,"name":"Lith S14 Relic"},{"chance":6.67,"name":"Lith B11 Relic"},{"chance":6.67,"name":"Lith W3 Relic"},{"chance":6.67,"name":"Lith R3 Relic"},{"chance":6.67,"name":"Meso P11 Relic"},{"chance":6.67,"name":"Meso G5 Relic"},{"chance":6.67,"name":"Meso K6 Relic"},{"chance":6.67,"name":"Meso P13 Relic"},{"chance":6.67,"name":"Meso C8 Relic"},{"chance":6.67,"name":"Meso K4 Relic"},{"chance":6.67,"name":"Meso S12 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode404":[{"chance":33.33,"name":"5,000 Credits Cache","rotation":"A"},{"chance":33.33,"name":"5,000 Credits Cache","rotation":"A"},{"chance":33.33,"name":"5,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400X Circuits","rotation":"B"},{"chance":12.65,"name":"400X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":18.88,"name":"600 Endo","rotation":"C"},{"chance":18.88,"name":"600 Endo","rotation":"C"},{"chance":18.88,"name":"600 Endo","rotation":"C"},{"chance":3.67,"name":"600 Endo","rotation":"C"},{"chance":18.88,"name":"Neurodes","rotation":"C"},{"chance":3.67,"name":"2X Orokin Cell","rotation":"C"},{"chance":3.67,"name":"2X Gallium","rotation":"C"},{"chance":3.67,"name":"2X Neurodes","rotation":"C"},{"chance":3.67,"name":"Argon Crystal","rotation":"C"},{"chance":3.67,"name":"Bullet Dance","rotation":"C"},{"chance":2,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode405":[{"chance":11.06,"name":"Lith G6 Relic","rotation":"A"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"A"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"A"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"A"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"A"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"A"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"A"},{"chance":2.05,"name":"Meso P11 Relic","rotation":"A"},{"chance":2.05,"name":"Meso G5 Relic","rotation":"A"},{"chance":2.05,"name":"Meso K6 Relic","rotation":"A"},{"chance":2.05,"name":"Meso K6 Relic","rotation":"A"},{"chance":2.05,"name":"Meso P13 Relic","rotation":"A"},{"chance":2.05,"name":"Meso C8 Relic","rotation":"A"},{"chance":2.05,"name":"Meso K4 Relic","rotation":"A"},{"chance":2.05,"name":"Meso S12 Relic","rotation":"A"},{"chance":2.05,"name":"Aya","rotation":"A"},{"chance":2.05,"name":"Aya","rotation":"A"},{"chance":2.05,"name":"Aya","rotation":"A"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"B"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"B"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"B"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"B"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"B"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"B"},{"chance":2.05,"name":"Neo F2 Relic","rotation":"B"},{"chance":2.05,"name":"Neo F2 Relic","rotation":"B"},{"chance":2.05,"name":"Neo T7 Relic","rotation":"B"},{"chance":2.05,"name":"Neo K5 Relic","rotation":"B"},{"chance":2.05,"name":"Neo D7 Relic","rotation":"B"},{"chance":2.05,"name":"Neo C4 Relic","rotation":"B"},{"chance":2.05,"name":"Neo L3 Relic","rotation":"B"},{"chance":2.05,"name":"Neo N23 Relic","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":2.05,"name":"Aya","rotation":"B"},{"chance":6.49,"name":"Meso P11 Relic","rotation":"C"},{"chance":1.29,"name":"Meso P11 Relic","rotation":"C"},{"chance":6.49,"name":"Meso G5 Relic","rotation":"C"},{"chance":6.49,"name":"Meso K6 Relic","rotation":"C"},{"chance":6.49,"name":"Meso P13 Relic","rotation":"C"},{"chance":6.49,"name":"Meso C8 Relic","rotation":"C"},{"chance":6.49,"name":"Meso K4 Relic","rotation":"C"},{"chance":6.49,"name":"Meso S12 Relic","rotation":"C"},{"chance":6.49,"name":"Neo F2 Relic","rotation":"C"},{"chance":6.49,"name":"Neo T7 Relic","rotation":"C"},{"chance":6.49,"name":"Neo K5 Relic","rotation":"C"},{"chance":6.49,"name":"Neo D7 Relic","rotation":"C"},{"chance":6.49,"name":"Neo C4 Relic","rotation":"C"},{"chance":6.49,"name":"Neo L3 Relic","rotation":"C"},{"chance":6.49,"name":"Neo N23 Relic","rotation":"C"},{"chance":6.49,"name":"Aya","rotation":"C"},{"chance":1.29,"name":"Aya","rotation":"C"}],"SolNode406":[{"chance":6.67,"name":"Meso P11 Relic"},{"chance":6.67,"name":"Meso G5 Relic"},{"chance":6.67,"name":"Meso K6 Relic"},{"chance":6.67,"name":"Meso P13 Relic"},{"chance":6.67,"name":"Meso C8 Relic"},{"chance":6.67,"name":"Meso K4 Relic"},{"chance":6.67,"name":"Meso S12 Relic"},{"chance":6.67,"name":"Neo F2 Relic"},{"chance":6.67,"name":"Neo T7 Relic"},{"chance":6.67,"name":"Neo K5 Relic"},{"chance":6.67,"name":"Neo D7 Relic"},{"chance":6.67,"name":"Neo C4 Relic"},{"chance":6.67,"name":"Neo L3 Relic"},{"chance":6.67,"name":"Neo N23 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode407":[{"chance":6.67,"name":"Meso P11 Relic"},{"chance":6.67,"name":"Meso G5 Relic"},{"chance":6.67,"name":"Meso K6 Relic"},{"chance":6.67,"name":"Meso P13 Relic"},{"chance":6.67,"name":"Meso C8 Relic"},{"chance":6.67,"name":"Meso K4 Relic"},{"chance":6.67,"name":"Meso S12 Relic"},{"chance":6.67,"name":"Neo F2 Relic"},{"chance":6.67,"name":"Neo T7 Relic"},{"chance":6.67,"name":"Neo K5 Relic"},{"chance":6.67,"name":"Neo D7 Relic"},{"chance":6.67,"name":"Neo C4 Relic"},{"chance":6.67,"name":"Neo L3 Relic"},{"chance":6.67,"name":"Neo N23 Relic"},{"chance":6.67,"name":"Aya"}],"SolNode408":[{"chance":6.96,"name":"Meso P11 Relic","rotation":"A"},{"chance":6.96,"name":"Meso G5 Relic","rotation":"A"},{"chance":6.96,"name":"Meso K6 Relic","rotation":"A"},{"chance":6.96,"name":"Meso P13 Relic","rotation":"A"},{"chance":1.29,"name":"Meso C8 Relic","rotation":"A"},{"chance":6.96,"name":"Meso K4 Relic","rotation":"A"},{"chance":6.96,"name":"Meso S12 Relic","rotation":"A"},{"chance":6.96,"name":"Aya","rotation":"A"},{"chance":6.96,"name":"Neo F2 Relic","rotation":"A"},{"chance":6.96,"name":"Neo T7 Relic","rotation":"A"},{"chance":6.96,"name":"Neo K5 Relic","rotation":"A"},{"chance":6.96,"name":"Neo D7 Relic","rotation":"A"},{"chance":6.96,"name":"Neo C4 Relic","rotation":"A"},{"chance":6.96,"name":"Neo L3 Relic","rotation":"A"},{"chance":6.96,"name":"Neo N23 Relic","rotation":"A"},{"chance":1.29,"name":"Aya","rotation":"A"},{"chance":9.09,"name":"Neo F2 Relic","rotation":"B"},{"chance":9.09,"name":"Neo T7 Relic","rotation":"B"},{"chance":9.09,"name":"Neo T7 Relic","rotation":"B"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"B"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"B"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"B"},{"chance":9.09,"name":"Neo L3 Relic","rotation":"B"},{"chance":9.09,"name":"Neo L3 Relic","rotation":"B"},{"chance":9.09,"name":"Neo N23 Relic","rotation":"B"},{"chance":9.09,"name":"Neo N23 Relic","rotation":"B"},{"chance":9.09,"name":"Aya","rotation":"B"},{"chance":9.68,"name":"Neo F2 Relic","rotation":"C"},{"chance":9.68,"name":"Neo T7 Relic","rotation":"C"},{"chance":9.68,"name":"Neo K5 Relic","rotation":"C"},{"chance":9.68,"name":"Neo D7 Relic","rotation":"C"},{"chance":9.68,"name":"Neo C4 Relic","rotation":"C"},{"chance":9.68,"name":"Neo L3 Relic","rotation":"C"},{"chance":9.68,"name":"Neo N23 Relic","rotation":"C"},{"chance":9.68,"name":"Aya","rotation":"C"},{"chance":2.82,"name":"Axi H6 Relic","rotation":"C"},{"chance":2.82,"name":"Axi A16 Relic","rotation":"C"},{"chance":2.82,"name":"Axi G10 Relic","rotation":"C"},{"chance":2.82,"name":"Axi B6 Relic","rotation":"C"},{"chance":2.82,"name":"Axi K11 Relic","rotation":"C"},{"chance":2.82,"name":"Axi W3 Relic","rotation":"C"},{"chance":2.82,"name":"Axi H7 Relic","rotation":"C"},{"chance":2.82,"name":"Aya","rotation":"C"}],"SolNode409":[{"chance":9.09,"name":"Neo F2 Relic","rotation":"A"},{"chance":9.09,"name":"Neo T7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"A"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"A"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"A"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"A"},{"chance":9.09,"name":"Neo L3 Relic","rotation":"A"},{"chance":9.09,"name":"Neo N23 Relic","rotation":"A"},{"chance":9.09,"name":"Aya","rotation":"A"},{"chance":12.5,"name":"Neo F2 Relic","rotation":"B"},{"chance":12.5,"name":"Neo T7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo K5 Relic","rotation":"B"},{"chance":12.5,"name":"Neo D7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo C4 Relic","rotation":"B"},{"chance":12.5,"name":"Neo L3 Relic","rotation":"B"},{"chance":12.5,"name":"Neo N23 Relic","rotation":"B"},{"chance":12.5,"name":"Aya","rotation":"B"},{"chance":10.84,"name":"Axi H6 Relic","rotation":"C"},{"chance":0.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":10.84,"name":"Axi A16 Relic","rotation":"C"},{"chance":0.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":10.84,"name":"Axi G10 Relic","rotation":"C"},{"chance":0.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":10.84,"name":"Axi B6 Relic","rotation":"C"},{"chance":0.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":10.84,"name":"Axi K11 Relic","rotation":"C"},{"chance":0.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":10.84,"name":"Axi W3 Relic","rotation":"C"},{"chance":0.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":10.84,"name":"Axi H7 Relic","rotation":"C"},{"chance":0.29,"name":"Axi H7 Relic","rotation":"C"},{"chance":22.11,"name":"Aya","rotation":"C"}],"SolNode410":[{"chance":6.25,"name":"Neo F2 Relic"},{"chance":6.25,"name":"Neo T7 Relic"},{"chance":6.25,"name":"Neo K5 Relic"},{"chance":6.25,"name":"Neo D7 Relic"},{"chance":6.25,"name":"Neo C4 Relic"},{"chance":6.25,"name":"Neo C4 Relic"},{"chance":6.25,"name":"Neo L3 Relic"},{"chance":6.25,"name":"Axi H6 Relic"},{"chance":6.25,"name":"Axi A16 Relic"},{"chance":6.25,"name":"Axi G10 Relic"},{"chance":6.25,"name":"Axi B6 Relic"},{"chance":6.25,"name":"Axi K11 Relic"},{"chance":6.25,"name":"Axi W3 Relic"},{"chance":6.25,"name":"Axi H7 Relic"},{"chance":6.25,"name":"Aya"},{"chance":6.25,"name":"Aya"}],"SolNode411":[{"chance":100,"name":"10,000 Credits Cache","rotation":"A"},{"chance":15.18,"name":"400 Endo","rotation":"B"},{"chance":15.18,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":15.18,"name":"400X Circuits","rotation":"B"},{"chance":15.18,"name":"400X Rubedo","rotation":"B"},{"chance":15.18,"name":"300X Plastids","rotation":"B"},{"chance":25.29,"name":"600 Endo","rotation":"C"},{"chance":25.29,"name":"600 Endo","rotation":"C"},{"chance":4.42,"name":"600 Endo","rotation":"C"},{"chance":25.29,"name":"Neurodes","rotation":"C"},{"chance":4.42,"name":"2X Orokin Cell","rotation":"C"},{"chance":4.42,"name":"2X Gallium","rotation":"C"},{"chance":4.42,"name":"Argon Crystal","rotation":"C"},{"chance":4.42,"name":"Bullet Dance","rotation":"C"},{"chance":1.01,"name":"Nitain Extract","rotation":"C"},{"chance":1.01,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode412":[{"chance":9.09,"name":"Neo F2 Relic","rotation":"A"},{"chance":9.09,"name":"Neo T7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"A"},{"chance":9.09,"name":"Neo K5 Relic","rotation":"A"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo D7 Relic","rotation":"A"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"A"},{"chance":9.09,"name":"Neo C4 Relic","rotation":"A"},{"chance":9.09,"name":"Neo L3 Relic","rotation":"A"},{"chance":9.09,"name":"Neo N23 Relic","rotation":"A"},{"chance":9.09,"name":"Aya","rotation":"A"},{"chance":12.5,"name":"Neo F2 Relic","rotation":"B"},{"chance":12.5,"name":"Neo T7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo K5 Relic","rotation":"B"},{"chance":12.5,"name":"Neo D7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo C4 Relic","rotation":"B"},{"chance":12.5,"name":"Neo L3 Relic","rotation":"B"},{"chance":12.5,"name":"Neo N23 Relic","rotation":"B"},{"chance":12.5,"name":"Aya","rotation":"B"},{"chance":10.84,"name":"Axi H6 Relic","rotation":"C"},{"chance":0.29,"name":"Axi H6 Relic","rotation":"C"},{"chance":10.84,"name":"Axi A16 Relic","rotation":"C"},{"chance":0.29,"name":"Axi A16 Relic","rotation":"C"},{"chance":10.84,"name":"Axi G10 Relic","rotation":"C"},{"chance":0.29,"name":"Axi G10 Relic","rotation":"C"},{"chance":10.84,"name":"Axi B6 Relic","rotation":"C"},{"chance":0.29,"name":"Axi B6 Relic","rotation":"C"},{"chance":10.84,"name":"Axi K11 Relic","rotation":"C"},{"chance":0.29,"name":"Axi K11 Relic","rotation":"C"},{"chance":10.84,"name":"Axi W3 Relic","rotation":"C"},{"chance":0.29,"name":"Axi W3 Relic","rotation":"C"},{"chance":10.84,"name":"Axi H7 Relic","rotation":"C"},{"chance":0.29,"name":"Axi H7 Relic","rotation":"C"},{"chance":22.11,"name":"Aya","rotation":"C"}],"SettlementNode3":[{"chance":50,"name":"2,000 Credits Cache","rotation":"A"},{"chance":50,"name":"100 Endo","rotation":"A"},{"chance":7.69,"name":"Parry","rotation":"B"},{"chance":7.69,"name":"Steel Fiber","rotation":"B"},{"chance":7.69,"name":"Serration","rotation":"B"},{"chance":7.69,"name":"Incendiary Coat","rotation":"B"},{"chance":7.69,"name":"Hornet Strike","rotation":"B"},{"chance":7.69,"name":"Intensify","rotation":"B"},{"chance":7.69,"name":"Lith G6 Relic","rotation":"B"},{"chance":7.69,"name":"Lith W3 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S15 Relic","rotation":"B"},{"chance":7.69,"name":"Lith S14 Relic","rotation":"B"},{"chance":7.69,"name":"Lith B11 Relic","rotation":"B"},{"chance":7.69,"name":"Lith H9 Relic","rotation":"B"},{"chance":7.69,"name":"Lith R3 Relic","rotation":"B"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Cleanse Grineer","rotation":"C"},{"chance":11.06,"name":"Lith G6 Relic","rotation":"C"},{"chance":11.06,"name":"Lith W3 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S15 Relic","rotation":"C"},{"chance":11.06,"name":"Lith S14 Relic","rotation":"C"},{"chance":11.06,"name":"Lith B11 Relic","rotation":"C"},{"chance":11.06,"name":"Lith H9 Relic","rotation":"C"},{"chance":11.06,"name":"Lith R3 Relic","rotation":"C"}],"SettlementNode2":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SettlementNode12":[{"chance":100,"name":"Vapor Specter Blueprint","rotation":"B"},{"chance":100,"name":"Phase Specter Blueprint","rotation":"C"}],"SettlementNode10":[{"chance":16.67,"name":"Tempered Blade","rotation":"A"},{"chance":16.67,"name":"Sudden Impact","rotation":"A"},{"chance":16.67,"name":"Poisonous Sting","rotation":"A"},{"chance":16.67,"name":"Glacial Edge","rotation":"A"},{"chance":16.67,"name":"Conductive Blade","rotation":"A"},{"chance":16.67,"name":"Furor","rotation":"A"},{"chance":3.76,"name":"Extend","rotation":"B"},{"chance":3.76,"name":"Superior Defenses","rotation":"B"},{"chance":3.76,"name":"Cutting Edge","rotation":"B"},{"chance":3.76,"name":"System Reroute","rotation":"B"},{"chance":3.76,"name":"Efficient Transferral","rotation":"B"},{"chance":3.76,"name":"Blazing Steel","rotation":"B"},{"chance":77.44,"name":"150 Endo","rotation":"B"},{"chance":7.52,"name":"Meteor Crash","rotation":"C"},{"chance":7.52,"name":"Nebula Bore","rotation":"C"},{"chance":7.52,"name":"Astral Slash","rotation":"C"},{"chance":9.68,"name":"400 Endo","rotation":"C"},{"chance":9.68,"name":"Lith G6 Relic","rotation":"C"},{"chance":9.68,"name":"Lith W3 Relic","rotation":"C"},{"chance":9.68,"name":"Lith S15 Relic","rotation":"C"},{"chance":9.68,"name":"Lith S14 Relic","rotation":"C"},{"chance":9.68,"name":"Lith B11 Relic","rotation":"C"},{"chance":9.68,"name":"Lith H9 Relic","rotation":"C"},{"chance":9.68,"name":"Lith R3 Relic","rotation":"C"}],"SettlementNode11":[{"chance":9.09,"name":"Magazine Warp","rotation":"A"},{"chance":9.09,"name":"Trick Mag","rotation":"A"},{"chance":9.09,"name":"Pressure Point","rotation":"A"},{"chance":9.09,"name":"Ammo Drum","rotation":"A"},{"chance":9.09,"name":"Lith G6 Relic","rotation":"A"},{"chance":9.09,"name":"Lith W3 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S15 Relic","rotation":"A"},{"chance":9.09,"name":"Lith S14 Relic","rotation":"A"},{"chance":9.09,"name":"Lith B11 Relic","rotation":"A"},{"chance":9.09,"name":"Lith H9 Relic","rotation":"A"},{"chance":9.09,"name":"Lith R3 Relic","rotation":"A"},{"chance":8.33,"name":"Reflex Coil","rotation":"B"},{"chance":8.33,"name":"Cryo Rounds","rotation":"B"},{"chance":8.33,"name":"Hell's Chamber","rotation":"B"},{"chance":8.33,"name":"Shocking Touch","rotation":"B"},{"chance":8.33,"name":"100 Endo","rotation":"B"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"B"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"B"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"B"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"B"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"B"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"B"},{"chance":8.33,"name":"Metal Auger","rotation":"C"},{"chance":8.33,"name":"Ravage","rotation":"C"},{"chance":8.33,"name":"Continuity","rotation":"C"},{"chance":8.33,"name":"Master Thief","rotation":"C"},{"chance":8.33,"name":"200 Endo","rotation":"C"},{"chance":8.33,"name":"Meso P11 Relic","rotation":"C"},{"chance":8.33,"name":"Meso G5 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K6 Relic","rotation":"C"},{"chance":8.33,"name":"Meso P13 Relic","rotation":"C"},{"chance":8.33,"name":"Meso C8 Relic","rotation":"C"},{"chance":8.33,"name":"Meso K4 Relic","rotation":"C"},{"chance":8.33,"name":"Meso S12 Relic","rotation":"C"}],"SettlementNode14":[{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"1,500 Credits Cache","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"100 Endo","rotation":"A"},{"chance":14.29,"name":"Reflection","rotation":"A"},{"chance":14.29,"name":"Reflex Guard","rotation":"A"},{"chance":14.29,"name":"Parry","rotation":"A"},{"chance":14.29,"name":"Lith G6 Relic","rotation":"B"},{"chance":14.29,"name":"Lith W3 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S15 Relic","rotation":"B"},{"chance":14.29,"name":"Lith S14 Relic","rotation":"B"},{"chance":14.29,"name":"Lith B11 Relic","rotation":"B"},{"chance":14.29,"name":"Lith H9 Relic","rotation":"B"},{"chance":14.29,"name":"Lith R3 Relic","rotation":"B"},{"chance":10,"name":"Master Key","rotation":"C"},{"chance":10,"name":"Reflection","rotation":"C"},{"chance":10,"name":"Parry","rotation":"C"},{"chance":10,"name":"Heavy Impact","rotation":"C"},{"chance":10,"name":"Serration","rotation":"C"},{"chance":10,"name":"Hornet Strike","rotation":"C"},{"chance":10,"name":"Metal Auger","rotation":"C"},{"chance":10,"name":"Volcanic Edge","rotation":"C"},{"chance":10,"name":"Vicious Frost","rotation":"C"},{"chance":10,"name":"Ivara Systems Blueprint","rotation":"C"}],"ClanNode10":[{"chance":13.92,"name":"2,000 Credits Cache","rotation":"A"},{"chance":13.92,"name":"2,000 Credits Cache","rotation":"A"},{"chance":13.92,"name":"2,000 Credits Cache","rotation":"A"},{"chance":13.92,"name":"2,000 Credits Cache","rotation":"A"},{"chance":13.92,"name":"100 Endo","rotation":"A"},{"chance":13.92,"name":"100 Endo","rotation":"A"},{"chance":13.92,"name":"100 Endo","rotation":"A"},{"chance":2.58,"name":"Smite Corrupted","rotation":"A"},{"chance":6,"name":"Harrow Systems Blueprint","rotation":"B"},{"chance":8,"name":"Expel Corrupted","rotation":"B"},{"chance":8,"name":"Cleanse Corrupted","rotation":"B"},{"chance":8,"name":"Bane Of Corrupted","rotation":"B"},{"chance":10,"name":"Lith G6 Relic","rotation":"B"},{"chance":10,"name":"Lith W3 Relic","rotation":"B"},{"chance":10,"name":"Lith S15 Relic","rotation":"B"},{"chance":10,"name":"Lith S14 Relic","rotation":"B"},{"chance":10,"name":"Lith B11 Relic","rotation":"B"},{"chance":10,"name":"Lith H9 Relic","rotation":"B"},{"chance":10,"name":"Lith R3 Relic","rotation":"B"},{"chance":15,"name":"Harrow Systems Blueprint","rotation":"C"},{"chance":15,"name":"Quickening","rotation":"C"},{"chance":10,"name":"Lith G6 Relic","rotation":"C"},{"chance":10,"name":"Lith W3 Relic","rotation":"C"},{"chance":10,"name":"Lith S15 Relic","rotation":"C"},{"chance":10,"name":"Lith S14 Relic","rotation":"C"},{"chance":10,"name":"Lith B11 Relic","rotation":"C"},{"chance":10,"name":"Lith H9 Relic","rotation":"C"},{"chance":10,"name":"Lith R3 Relic","rotation":"C"}],"SettlementNode20":[{"chance":38.72,"name":"Mag Neuroptics Blueprint"},{"chance":38.72,"name":"Mag Chassis Blueprint"},{"chance":22.56,"name":"Mag Systems Blueprint"}],"ClanNode11":[{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":16.67,"name":"100 Endo","rotation":"A"},{"chance":7.14,"name":"Provoked","rotation":"B"},{"chance":7.14,"name":"Steel Fiber","rotation":"B"},{"chance":7.14,"name":"Serration","rotation":"B"},{"chance":7.14,"name":"Hornet Strike","rotation":"B"},{"chance":7.14,"name":"Fast Deflection","rotation":"B"},{"chance":7.14,"name":"Charged Shell","rotation":"B"},{"chance":7.14,"name":"Vital Sense","rotation":"B"},{"chance":7.14,"name":"Meso P11 Relic","rotation":"B"},{"chance":7.14,"name":"Meso G5 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K6 Relic","rotation":"B"},{"chance":7.14,"name":"Meso P13 Relic","rotation":"B"},{"chance":7.14,"name":"Meso C8 Relic","rotation":"B"},{"chance":7.14,"name":"Meso K4 Relic","rotation":"B"},{"chance":7.14,"name":"Meso S12 Relic","rotation":"B"},{"chance":11.28,"name":"Quickening","rotation":"C"},{"chance":11.28,"name":"Enduring Strike","rotation":"C"},{"chance":11.06,"name":"Neo F2 Relic","rotation":"C"},{"chance":11.06,"name":"Neo T7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo K5 Relic","rotation":"C"},{"chance":11.06,"name":"Neo D7 Relic","rotation":"C"},{"chance":11.06,"name":"Neo C4 Relic","rotation":"C"},{"chance":11.06,"name":"Neo L3 Relic","rotation":"C"},{"chance":11.06,"name":"Neo N23 Relic","rotation":"C"}],"SolNode707":[{"chance":11.11,"name":"250 Endo","rotation":"A"},{"chance":11.11,"name":"250 Endo","rotation":"A"},{"chance":11.11,"name":"Lith G6 Relic","rotation":"A"},{"chance":11.11,"name":"Lith W3 Relic","rotation":"A"},{"chance":11.11,"name":"Lith S15 Relic","rotation":"A"},{"chance":11.11,"name":"Lith S14 Relic","rotation":"A"},{"chance":11.11,"name":"Lith B11 Relic","rotation":"A"},{"chance":11.11,"name":"Lith H9 Relic","rotation":"A"},{"chance":11.11,"name":"Lith R3 Relic","rotation":"A"},{"chance":38.72,"name":"250 Endo","rotation":"B"},{"chance":38.72,"name":"250 Endo","rotation":"B"},{"chance":22.56,"name":"Mutalist Alad V Nav Coordinate","rotation":"B"},{"chance":22.56,"name":"Forma Blueprint","rotation":"C"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"}],"SolNode710":[{"chance":14.29,"name":"3,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"3,000 Credits Cache","rotation":"A"},{"chance":14.29,"name":"200 Endo","rotation":"A"},{"chance":14.29,"name":"200 Endo","rotation":"A"},{"chance":14.29,"name":"1000X Nano Spores","rotation":"A"},{"chance":14.29,"name":"Thief's Wit","rotation":"A"},{"chance":14.29,"name":"3X Mutagen Sample","rotation":"A"},{"chance":15.18,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.18,"name":"5,000 Credits Cache","rotation":"B"},{"chance":15.18,"name":"200 Endo","rotation":"B"},{"chance":15.18,"name":"200 Endo","rotation":"B"},{"chance":15.18,"name":"Neurodes","rotation":"B"},{"chance":4.42,"name":"2X Neurodes","rotation":"B"},{"chance":2.01,"name":"Mutalist Alad V Nav Coordinate","rotation":"B"},{"chance":4.42,"name":"Cleanse Infested","rotation":"B"},{"chance":4.42,"name":"Bane Of Infested","rotation":"B"},{"chance":4.42,"name":"Smite Infested","rotation":"B"},{"chance":4.42,"name":"Expel Infested","rotation":"B"},{"chance":19.36,"name":"Argon Crystal","rotation":"C"},{"chance":3.76,"name":"2X Argon Crystal","rotation":"C"},{"chance":19.36,"name":"Orokin Cell","rotation":"C"},{"chance":3.76,"name":"2X Orokin Cell","rotation":"C"},{"chance":19.36,"name":"Neural Sensors","rotation":"C"},{"chance":3.76,"name":"2X Neural Sensors","rotation":"C"},{"chance":19.36,"name":"400 Endo","rotation":"C"},{"chance":3.76,"name":"400 Endo","rotation":"C"},{"chance":3.76,"name":"Enemy Sense","rotation":"C"},{"chance":3.76,"name":"Master Thief","rotation":"C"}],"SolNode711":[{"chance":11.11,"name":"400 Endo","rotation":"A"},{"chance":11.11,"name":"400 Endo","rotation":"A"},{"chance":11.11,"name":"Lith G6 Relic","rotation":"A"},{"chance":11.11,"name":"Lith W3 Relic","rotation":"A"},{"chance":11.11,"name":"Lith S15 Relic","rotation":"A"},{"chance":11.11,"name":"Lith S14 Relic","rotation":"A"},{"chance":11.11,"name":"Lith B11 Relic","rotation":"A"},{"chance":11.11,"name":"Lith H9 Relic","rotation":"A"},{"chance":11.11,"name":"Lith R3 Relic","rotation":"A"},{"chance":12.5,"name":"Mutalist Alad V Nav Coordinate","rotation":"B"},{"chance":12.5,"name":"Neo F2 Relic","rotation":"B"},{"chance":12.5,"name":"Neo T7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo K5 Relic","rotation":"B"},{"chance":12.5,"name":"Neo D7 Relic","rotation":"B"},{"chance":12.5,"name":"Neo C4 Relic","rotation":"B"},{"chance":12.5,"name":"Neo L3 Relic","rotation":"B"},{"chance":12.5,"name":"Neo N23 Relic","rotation":"B"},{"chance":22.56,"name":"Octavia Neuroptics Blueprint","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode712":[{"chance":33.33,"name":"Nekros Chassis Blueprint"},{"chance":33.33,"name":"Nekros Neuroptics Blueprint"},{"chance":33.33,"name":"Nekros Systems Blueprint"}],"SolNode300":[{"chance":12.91,"name":"400 Endo","rotation":"A"},{"chance":12.91,"name":"400 Endo","rotation":"A"},{"chance":12.91,"name":"400 Endo","rotation":"A"},{"chance":12.91,"name":"300X Polymer Bundle","rotation":"A"},{"chance":12.91,"name":"350X Rubedo","rotation":"A"},{"chance":12.91,"name":"300X Plastids","rotation":"A"},{"chance":22.56,"name":"Octavia Systems Blueprint","rotation":"A"},{"chance":25.29,"name":"2,500 Credits Cache","rotation":"B"},{"chance":25.29,"name":"3,000 Credits Cache","rotation":"B"},{"chance":25.29,"name":"4,000 Credits Cache","rotation":"B"},{"chance":22.11,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":1.01,"name":"400 Endo","rotation":"B"},{"chance":10.82,"name":"600 Endo","rotation":"C"},{"chance":10.82,"name":"Orokin Cell","rotation":"C"},{"chance":10.82,"name":"Gallium","rotation":"C"},{"chance":10.82,"name":"Neurodes","rotation":"C"},{"chance":10.82,"name":"2X Gallium","rotation":"C"},{"chance":10.82,"name":"2X Orokin Cell","rotation":"C"},{"chance":10.82,"name":"2X Neurodes","rotation":"C"},{"chance":10.82,"name":"Tellurium","rotation":"C"},{"chance":10.82,"name":"Argon Crystal","rotation":"C"},{"chance":1.29,"name":"Nitain Extract","rotation":"C"},{"chance":1.29,"name":"Xiphos Engines Blueprint","rotation":"C"}],"SolNode306":[{"chance":12.18,"name":"Blood Rush","rotation":"A"},{"chance":12.18,"name":"Hydraulic Crosshairs","rotation":"A"},{"chance":12.18,"name":"Shrapnel Shot","rotation":"A"},{"chance":12.18,"name":"100 Endo","rotation":"A"},{"chance":12.18,"name":"Fast Hands","rotation":"A"},{"chance":12.18,"name":"Point Strike","rotation":"A"},{"chance":12.18,"name":"Piercing Hit","rotation":"A"},{"chance":12.18,"name":"Pistol Gambit","rotation":"A"},{"chance":1.29,"name":"Gnashing Payara","rotation":"A"},{"chance":1.29,"name":"Astral Twilight","rotation":"A"},{"chance":7.49,"name":"Focused Defense","rotation":"B"},{"chance":7.49,"name":"Catalyzer Link","rotation":"B"},{"chance":7.49,"name":"Target Cracker","rotation":"B"},{"chance":7.49,"name":"No Return","rotation":"B"},{"chance":7.49,"name":"Hornet Strike","rotation":"B"},{"chance":7.49,"name":"Reflex Coil","rotation":"B"},{"chance":7.49,"name":"Deep Freeze","rotation":"B"},{"chance":7.49,"name":"North Wind","rotation":"B"},{"chance":7.49,"name":"Cryo Rounds","rotation":"B"},{"chance":7.49,"name":"Hell's Chamber","rotation":"B"},{"chance":7.49,"name":"Streamline","rotation":"B"},{"chance":7.49,"name":"Shocking Touch","rotation":"B"},{"chance":7.49,"name":"Stormbringer","rotation":"B"},{"chance":1.29,"name":"High Noon","rotation":"B"},{"chance":1.29,"name":"Crushing Ruin","rotation":"B"},{"chance":7.37,"name":"Rime Rounds","rotation":"C"},{"chance":7.37,"name":"Scattering Inferno","rotation":"C"},{"chance":37.94,"name":"Failsafe","rotation":"C"},{"chance":37.94,"name":"Coiling Viper","rotation":"C"},{"chance":2.01,"name":"Cleaving Whirlwind","rotation":"C"},{"chance":7.37,"name":"Ivara Chassis Blueprint","rotation":"C"}],"SolNode302":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":3.76,"name":"Cleanse Infested","rotation":"C"},{"chance":3.76,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Arrow Mutation","rotation":"C"},{"chance":3.76,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":3.76,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode304":[{"chance":10.84,"name":"Vitality"},{"chance":10.84,"name":"Fast Deflection"},{"chance":11.06,"name":"Rush"},{"chance":10.84,"name":"Magazine Warp"},{"chance":10.84,"name":"Trick Mag"},{"chance":0.34,"name":"Pressure Point"},{"chance":11.06,"name":"Ammo Drum"},{"chance":10.84,"name":"Fast Hands"},{"chance":10.84,"name":"Quickdraw"},{"chance":10.84,"name":"Health Restore (Large)"},{"chance":0.34,"name":"Omni Ammo Box"},{"chance":0.34,"name":"North Wind"},{"chance":0.34,"name":"Shocking Touch"},{"chance":0.34,"name":"Molten Impact"},{"chance":0.34,"name":"Stretch"}],"SolNode307":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}],"SolNode308":[{"chance":14.29,"name":"Neo F2 Relic","rotation":"A"},{"chance":14.29,"name":"Neo T7 Relic","rotation":"A"},{"chance":14.29,"name":"Neo K5 Relic","rotation":"A"},{"chance":14.29,"name":"Neo D7 Relic","rotation":"A"},{"chance":14.29,"name":"Neo C4 Relic","rotation":"A"},{"chance":14.29,"name":"Neo L3 Relic","rotation":"A"},{"chance":14.29,"name":"Neo N23 Relic","rotation":"A"},{"chance":14.29,"name":"Axi H6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi A16 Relic","rotation":"B"},{"chance":14.29,"name":"Axi G10 Relic","rotation":"B"},{"chance":14.29,"name":"Axi B6 Relic","rotation":"B"},{"chance":14.29,"name":"Axi K11 Relic","rotation":"B"},{"chance":14.29,"name":"Axi W3 Relic","rotation":"B"},{"chance":14.29,"name":"Axi H7 Relic","rotation":"B"},{"chance":12.42,"name":"Axi H6 Relic","rotation":"C"},{"chance":12.42,"name":"Axi A16 Relic","rotation":"C"},{"chance":12.42,"name":"Axi G10 Relic","rotation":"C"},{"chance":8.05,"name":"Lua Lens Blueprint","rotation":"C"},{"chance":5.03,"name":"Universal Medallion","rotation":"C"},{"chance":12.42,"name":"Axi B6 Relic","rotation":"C"},{"chance":12.42,"name":"Axi K11 Relic","rotation":"C"},{"chance":12.42,"name":"Axi W3 Relic","rotation":"C"},{"chance":12.42,"name":"Axi H7 Relic","rotation":"C"}],"SolNode742":[{"chance":10,"name":"Vitality","rotation":"A"},{"chance":10,"name":"Magazine Warp","rotation":"A"},{"chance":10,"name":"Trick Mag","rotation":"A"},{"chance":10,"name":"Neo F2 Relic","rotation":"A"},{"chance":10,"name":"Neo T7 Relic","rotation":"A"},{"chance":10,"name":"Neo K5 Relic","rotation":"A"},{"chance":10,"name":"Neo D7 Relic","rotation":"A"},{"chance":10,"name":"Neo C4 Relic","rotation":"A"},{"chance":10,"name":"Neo L3 Relic","rotation":"A"},{"chance":10,"name":"Neo N23 Relic","rotation":"A"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Reflex Coil","rotation":"B"},{"chance":6.67,"name":"Deep Freeze","rotation":"B"},{"chance":6.67,"name":"North Wind","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Streamline","rotation":"B"},{"chance":6.67,"name":"Shocking Touch","rotation":"B"},{"chance":6.67,"name":"200 Endo","rotation":"B"},{"chance":6.67,"name":"Axi H6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi A16 Relic","rotation":"B"},{"chance":6.67,"name":"Axi G10 Relic","rotation":"B"},{"chance":6.67,"name":"Axi B6 Relic","rotation":"B"},{"chance":6.67,"name":"Axi K11 Relic","rotation":"B"},{"chance":6.67,"name":"Axi W3 Relic","rotation":"B"},{"chance":6.67,"name":"Axi H7 Relic","rotation":"B"},{"chance":2.26,"name":"Vital Sense","rotation":"C"},{"chance":2.26,"name":"Metal Auger","rotation":"C"},{"chance":2.26,"name":"Ravage","rotation":"C"},{"chance":2.26,"name":"Stretch","rotation":"C"},{"chance":2.26,"name":"Handspring","rotation":"C"},{"chance":2.26,"name":"Convulsion","rotation":"C"},{"chance":2.26,"name":"Split Chamber","rotation":"C"},{"chance":2.26,"name":"Continuity","rotation":"C"},{"chance":2.26,"name":"Master Thief","rotation":"C"},{"chance":2.26,"name":"400 Endo","rotation":"C"},{"chance":11.06,"name":"Axi H6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi A16 Relic","rotation":"C"},{"chance":11.06,"name":"Axi G10 Relic","rotation":"C"},{"chance":11.06,"name":"Axi B6 Relic","rotation":"C"},{"chance":11.06,"name":"Axi K11 Relic","rotation":"C"},{"chance":11.06,"name":"Axi W3 Relic","rotation":"C"},{"chance":11.06,"name":"Axi H7 Relic","rotation":"C"}],"SolNode744":[{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"3,000 Credits Cache","rotation":"A"},{"chance":25,"name":"400 Endo","rotation":"A"},{"chance":6.67,"name":"Steel Fiber","rotation":"B"},{"chance":6.67,"name":"Stretch","rotation":"B"},{"chance":6.67,"name":"Serration","rotation":"B"},{"chance":6.67,"name":"Hell's Chamber","rotation":"B"},{"chance":6.67,"name":"Hornet Strike","rotation":"B"},{"chance":6.67,"name":"Flow","rotation":"B"},{"chance":6.67,"name":"Split Chamber","rotation":"B"},{"chance":6.67,"name":"Stabilizer","rotation":"B"},{"chance":6.67,"name":"Neo F2 Relic","rotation":"B"},{"chance":6.67,"name":"Neo T7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo K5 Relic","rotation":"B"},{"chance":6.67,"name":"Neo D7 Relic","rotation":"B"},{"chance":6.67,"name":"Neo C4 Relic","rotation":"B"},{"chance":6.67,"name":"Neo L3 Relic","rotation":"B"},{"chance":6.67,"name":"Neo N23 Relic","rotation":"B"},{"chance":4,"name":"Pistol Ammo Mutation","rotation":"C"},{"chance":4,"name":"Arrow Mutation","rotation":"C"},{"chance":4,"name":"Rifle Ammo Mutation","rotation":"C"},{"chance":4,"name":"Sniper Ammo Mutation","rotation":"C"},{"chance":4,"name":"Shotgun Ammo Mutation","rotation":"C"},{"chance":8,"name":"Axi H6 Relic","rotation":"C"},{"chance":8,"name":"Axi A16 Relic","rotation":"C"},{"chance":8,"name":"Axi G10 Relic","rotation":"C"},{"chance":8,"name":"Axi B6 Relic","rotation":"C"},{"chance":8,"name":"Axi K11 Relic","rotation":"C"},{"chance":8,"name":"Axi W3 Relic","rotation":"C"},{"chance":8,"name":"Axi H7 Relic","rotation":"C"},{"chance":12,"name":"Harrow Neuroptics Blueprint","rotation":"C"},{"chance":12,"name":"Harrow Systems Blueprint","rotation":"C"}],"SolNode745":[{"chance":100,"name":"100X Kuva","rotation":"A"},{"chance":100,"name":"200X Kuva","rotation":"B"},{"chance":95,"name":"350X Kuva","rotation":"C"},{"chance":5,"name":"Universal Medallion","rotation":"C"}],"SolNode746":[{"chance":100,"name":"10,000 Credits Cache","rotation":"A"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":11.06,"name":"400 Endo","rotation":"B"},{"chance":2.01,"name":"400 Endo","rotation":"B"},{"chance":12.65,"name":"400X Circuits","rotation":"B"},{"chance":12.65,"name":"400X Rubedo","rotation":"B"},{"chance":12.65,"name":"300X Plastids","rotation":"B"},{"chance":10.79,"name":"600 Endo","rotation":"C"},{"chance":10.79,"name":"600 Endo","rotation":"C"},{"chance":10.79,"name":"600 Endo","rotation":"C"},{"chance":3.67,"name":"600 Endo","rotation":"C"},{"chance":10.79,"name":"Orokin Cell","rotation":"C"},{"chance":10.79,"name":"Gallium","rotation":"C"},{"chance":10.79,"name":"Neurodes","rotation":"C"},{"chance":10.79,"name":"Cyclone Kraken","rotation":"C"},{"chance":3.67,"name":"2X Orokin Cell","rotation":"C"},{"chance":3.67,"name":"2X Gallium","rotation":"C"},{"chance":3.67,"name":"2X Neural Sensors","rotation":"C"},{"chance":3.67,"name":"Argon Crystal","rotation":"C"},{"chance":3.67,"name":"Tellurium","rotation":"C"},{"chance":2,"name":"Nitain Extract","rotation":"C"},{"chance":0.5,"name":"Xiphos Avionics Blueprint","rotation":"C"}],"SolNode747":[{"chance":20,"name":"2,500 Credits Cache","rotation":"A"},{"chance":16.67,"name":"Harrow Neuroptics Blueprint","rotation":"A"},{"chance":13.33,"name":"Steady Hands","rotation":"A"},{"chance":13.33,"name":"Stabilizer","rotation":"A"},{"chance":13.33,"name":"Power Throw","rotation":"A"},{"chance":13.33,"name":"Stretch","rotation":"A"},{"chance":10,"name":"200 Endo","rotation":"A"},{"chance":10,"name":"Untraceable","rotation":"B"},{"chance":10,"name":"Runtime","rotation":"B"},{"chance":10,"name":"Scorch","rotation":"B"},{"chance":10,"name":"Thermite Rounds","rotation":"B"},{"chance":10,"name":"Frostbite","rotation":"B"},{"chance":10,"name":"Frigid Blast","rotation":"B"},{"chance":10,"name":"Arrow Mutation","rotation":"B"},{"chance":10,"name":"Sniper Ammo Mutation","rotation":"B"},{"chance":10,"name":"Shotgun Ammo Mutation","rotation":"B"},{"chance":10,"name":"Covert Lethality","rotation":"B"},{"chance":11.06,"name":"Meso P11 Relic","rotation":"C"},{"chance":11.06,"name":"Meso G5 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K6 Relic","rotation":"C"},{"chance":11.06,"name":"Meso P13 Relic","rotation":"C"},{"chance":11.06,"name":"Meso C8 Relic","rotation":"C"},{"chance":11.06,"name":"Meso K4 Relic","rotation":"C"},{"chance":11.06,"name":"Meso S12 Relic","rotation":"C"},{"chance":3.22,"name":"Neo F2 Relic","rotation":"C"},{"chance":3.22,"name":"Neo T7 Relic","rotation":"C"},{"chance":3.22,"name":"Neo K5 Relic","rotation":"C"},{"chance":3.22,"name":"Neo D7 Relic","rotation":"C"},{"chance":3.22,"name":"Neo C4 Relic","rotation":"C"},{"chance":3.22,"name":"Neo L3 Relic","rotation":"C"},{"chance":3.22,"name":"Neo N23 Relic","rotation":"C"}],"SolNode748":[{"chance":100,"name":"Phase Specter Blueprint","rotation":"A"},{"chance":100,"name":"Force Specter Blueprint","rotation":"B"},{"chance":100,"name":"Cosmic Specter Blueprint","rotation":"C"}]} \ No newline at end of file diff --git a/static/json/scripts/missions-drop-table-get-script.js b/static/json/scripts/missions-drop-table-get-script.js new file mode 100644 index 00000000..c8957fce --- /dev/null +++ b/static/json/scripts/missions-drop-table-get-script.js @@ -0,0 +1,30 @@ +// for https://www.warframe.com/ru/droptables +/* eslint-disable */ +(() => { + const missionNames = {"Mercury/Larunda Relay":"MercuryHUB","Venus/Vesper Relay":"VenusHUB","Earth/Strata Relay":"EarthHUB","Mars/Maroo's Bazaar":"TradeHUB1","Saturn/Kronia Relay":"SaturnHUB","Eris/Kuiper Relay":"ErisHUB","Europa/Leonov Relay":"EuropaHUB","Pluto/Orcus Relay":"PlutoHUB","Venus/Romula":"ClanNode0","Venus/Malva":"ClanNode1","Earth/Coba":"ClanNode2","Earth/Tikal":"ClanNode3","Jupiter/Sinai":"ClanNode4","Jupiter/Cameria":"ClanNode5","Europa/Larzac":"ClanNode6","Europa/Cholistan":"ClanNode7","Mars/Kadesh":"ClanNode8","Mars/Wahiba":"ClanNode9","Phobos/Memphis":"ClanNode10","Phobos/Zeugma":"ClanNode11","Saturn/Caracol":"ClanNode12","Saturn/Piscinas":"ClanNode13","Sedna/Amarna":"ClanNode14","Sedna/Sangeru":"ClanNode15","Uranus/Ur":"ClanNode16","Uranus/Assur":"ClanNode17","Eris/Akkad":"ClanNode18","Eris/Zabala":"ClanNode19","Neptune/Yursa":"ClanNode20","Neptune/Kelashin":"ClanNode21","Ceres/Seimeni":"ClanNode22","Ceres/Gabii":"ClanNode23","Pluto/Sechura":"ClanNode24","Pluto/Hieracon":"ClanNode25","Phobos/Roche":"SettlementNode1","Phobos/Skyresh":"SettlementNode2","Phobos/Stickney":"SettlementNode3","Phobos/Kepler":"SettlementNode10","Phobos/Gulliver":"SettlementNode11","Phobos/Monolith":"SettlementNode12","Phobos/Shklovsky":"SettlementNode14","Phobos/Sharpless":"SettlementNode15","Phobos/Iliad":"SettlementNode20","Neptune/Galatea":"SolNode1","Venus/Aphrodite":"SolNode2","Pluto/Acheron":"SolNode4","Neptune/Despina":"SolNode6","Uranus/Rosalind":"SolNode9","Jupiter/Thebe":"SolNode10","Mars/Tharsis":"SolNode11","Mercury/Elion":"SolNode12","Mars/Ultor":"SolNode14","Earth/Pacific":"SolNode15","Mars/Augustus":"SolNode16","Neptune/Proteus":"SolNode17","Saturn/Rhea":"SolNode18","Saturn/Enceladus":"SolNode19","Saturn/Telesto":"SolNode20","Pluto/Narcissus":"SolNode21","Venus/Tessera":"SolNode22","Venus/Cytherean":"SolNode23","Earth/Oro":"SolNode24","Jupiter/Callisto":"SolNode25","Earth/Lith":"SolNode26","Earth/E Prime":"SolNode27","Mercury/Terminus":"SolNode28","Mars/Olympus":"SolNode30","Saturn/Anthe":"SolNode31","Saturn/Tethys":"SolNode32","Uranus/Ariel":"SolNode33","Uranus/Sycorax":"SolNode34","Mars/Martialis":"SolNode36","Pluto/Minthe":"SolNode38","Earth/Everest":"SolNode39","Mars/Arval":"SolNode41","Saturn/Helene":"SolNode42","Pluto/Cerberus":"SolNode43","Mars/Ara":"SolNode45","Mars/Spear":"SolNode46","Pluto/Regna":"SolNode48","Neptune/Larissa":"SolNode49","Saturn/Numa":"SolNode50","Pluto/Hades":"SolNode51","Jupiter/Themisto":"SolNode53","Pluto/Cypress":"SolNode56","Neptune/Sao":"SolNode57","Mars/Hellas":"SolNode58","Earth/Eurasia":"SolNode59","Uranus/Caliban":"SolNode60","Venus/Ishtar":"SolNode61","Neptune/Neso":"SolNode62","Earth/Mantle":"SolNode63","Uranus/Umbriel":"SolNode64","Mars/Gradivus":"SolNode65","Venus/Unda":"SolNode66","Saturn/Dione":"SolNode67","Mars/Vallis":"SolNode68","Uranus/Ophelia":"SolNode69","Saturn/Cassini":"SolNode70","Pluto/Outer Terminus":"SolNode72","Jupiter/Ananke":"SolNode73","Jupiter/Carme":"SolNode74","Earth/Cervantes":"SolNode75","Pluto/Hydra":"SolNode76","Neptune/Triton":"SolNode78","Earth/Cambria":"SolNode79","Pluto/Palus":"SolNode81","Saturn/Calypso":"SolNode82","Uranus/Cressida":"SolNode83","Neptune/Nereid":"SolNode84","Earth/Gaia":"SolNode85","Jupiter/Ganymede":"SolNode87","Jupiter/Adrastea":"SolNode88","Earth/Mariana":"SolNode89","Saturn/Keeler":"SolNode93","Mercury/Apollodorus":"SolNode94","Saturn/Titan":"SolNode96","Jupiter/Amalthea":"SolNode97","Uranus/Desdemona":"SolNode98","Mars/War":"SolNode99","Jupiter/Elara":"SolNode100","Venus/Kiliken":"SolNode101","Pluto/Oceanum":"SolNode102","Mercury/M Prime":"SolNode103","Venus/Fossa":"SolNode104","Uranus/Titania":"SolNode105","Mars/Alator":"SolNode106","Venus/Venera":"SolNode107","Mercury/Tolstoj":"SolNode108","Venus/Linea":"SolNode109","Mars/Ares":"SolNode113","Uranus/Puck":"SolNode114","Neptune/Laomedeia":"SolNode118","Mercury/Caloris":"SolNode119","Jupiter/Carpo":"SolNode121","Uranus/Stephano":"SolNode122","Venus/V Prime":"SolNode123","Jupiter/Io":"SolNode125","Jupiter/Metis":"SolNode126","Neptune/Psamathe":"SolNode127","Venus/E Gate":"SolNode128","Venus/Orb Vallis":"SolNode129","Mercury/Lares":"SolNode130","Ceres/Pallas":"SolNode131","Ceres/Bode":"SolNode132","Ceres/Thon":"SolNode135","Ceres/Nuovo":"SolNode137","Ceres/Ludi":"SolNode138","Ceres/Lex":"SolNode139","Ceres/Kiste":"SolNode140","Ceres/Ker":"SolNode141","Ceres/Exta":"SolNode144","Ceres/Draco":"SolNode146","Ceres/Cinxia":"SolNode147","Ceres/Casta":"SolNode149","Eris/Brugia":"SolNode153","Eris/Isos":"SolNode162","Eris/Kala-azar":"SolNode164","Eris/Nimus":"SolNode166","Eris/Oestrus":"SolNode167","Eris/Saxis":"SolNode171","Eris/Xini":"SolNode172","Eris/Solium":"SolNode173","Eris/Naeglar":"SolNode175","Sedna/Kappa":"SolNode177","Sedna/Adaro":"SolNode181","Sedna/Vodyanoi":"SolNode183","Sedna/Rusalka":"SolNode184","Sedna/Berehynia":"SolNode185","Sedna/Selkie":"SolNode187","Sedna/Kelpie":"SolNode188","Sedna/Naga":"SolNode189","Sedna/Nakki":"SolNode190","Sedna/Marid":"SolNode191","Sedna/Merrow":"SolNode193","Sedna/Hydron":"SolNode195","Sedna/Charybdis":"SolNode196","Sedna/Yam":"SolNode199","Europa/Abaddon":"SolNode203","Europa/Armaros":"SolNode204","Europa/Baal":"SolNode205","Europa/Morax":"SolNode209","Europa/Naamah":"SolNode210","Europa/Ose":"SolNode211","Europa/Paimon":"SolNode212","Europa/Sorath":"SolNode214","Europa/Valac":"SolNode215","Europa/Valefor":"SolNode216","Europa/Orias":"SolNode217","Europa/Kokabiel":"SolNode220","Mercury/Boethius":"SolNode223","Mercury/Odin":"SolNode224","Mercury/Suisei":"SolNode225","Mercury/Pantheon":"SolNode226","Earth/Plains of Eidolon":"SolNode228","Deimos/Cambion Drift":"SolNode229","Lua/Plato":"SolNode300","Lua/Grimaldi":"SolNode301","Lua/Tycho":"SolNode302","Lua/Copernicus":"SolNode304","Lua/Stöfler":"SolNode305","Lua/Pavlov":"SolNode306","Lua/Zeipel":"SolNode307","Lua/Apollo":"SolNode308","Void/Teshub":"SolNode400","Void/Hepit":"SolNode401","Void/Taranis":"SolNode402","Void/Tiwaz":"SolNode403","Void/Stribog":"SolNode404","Void/Ani":"SolNode405","Void/Ukko":"SolNode406","Void/Oxomoco":"SolNode407","Void/Belenus":"SolNode408","Void/Mot":"SolNode409","Void/Aten":"SolNode410","Void/Marduk":"SolNode411","Void/Mithra":"SolNode412","undefined/Jordas Golem Assassinate":"SolNode701","undefined/Mutalist Alad V Assassinate":"SolNode705","Deimos/Horend":"SolNode706","Deimos/Hyf":"SolNode707","Deimos/Phlegyas":"SolNode708","Deimos/Dirus":"SolNode709","Deimos/Formido":"SolNode710","Deimos/Terrorem":"SolNode711","Deimos/Magnacidium":"SolNode712","Deimos/Exequias":"SolNode713","Jupiter/The Ropalolyst":"SolNode740","Kuva Fortress/Koro":"SolNode741","Kuva Fortress/Nabuk":"SolNode742","Kuva Fortress/Rotuma":"SolNode743","Kuva Fortress/Taveuni":"SolNode744","Kuva Fortress/Tamu":"SolNode745","Kuva Fortress/Dakata":"SolNode746","Kuva Fortress/Pago":"SolNode747","Kuva Fortress/Garus":"SolNode748","Venus/Montes":"SolNode902","Earth/Erpo":"SolNode903","Mars/Syrtis":"SolNode904","Jupiter/Galilea":"SolNode905","Saturn/Pandora":"SolNode906","Uranus/Caelus":"SolNode907"}; + const result = {}; + let lastItem = []; + let lastItemIndex; + let rotation; + Array.from(document.querySelectorAll("table")[0].children[0].children).forEach(element => { + if (element.classList.contains('blank-row')) { + if(lastItemIndex) result[lastItemIndex]=lastItem; + lastItem = []; + lastItemIndex = undefined; + rotation = undefined; + } else if (element.children[0].getAttribute('colspan') == 2) { + if (!lastItemIndex) { + const mission = element.children[0].textContent; + const formatedMission = mission.substring(0, mission.indexOf(' (')) + lastItemIndex = missionNames[formatedMission]; + } else{ + rotation = element.children[0].textContent.replace('Rotation ', ''); + } + } else { + const name = element.children[0].textContent; + const chance = parseFloat(element.children[1].textContent.match(/(\d+\.\d+)/)[0]); + lastItem.push({ chance, name, ...(rotation !== undefined && { rotation }) }); + } + }); + return JSON.stringify(result); +})(); From 67b73383811f94bbe495a2711a6e79d2533225e6 Mon Sep 17 00:00:00 2001 From: Nicat <52883148+holmityd@users.noreply.github.com> Date: Sun, 10 Sep 2023 00:10:21 +0400 Subject: [PATCH 5/5] Mission rewards fix (#54) --- src/controllers/api/artifactsController.ts | 15 ++- .../api/missionInventoryUpdateController.ts | 21 ++--- src/helpers/stringHelpers.ts | 2 +- src/services/inventoryService.ts | 43 +++++---- .../missionInventoryUpdateService .ts | 44 ++++----- src/types/inventoryTypes/SuitTypes.ts | 1 + src/types/inventoryTypes/weaponTypes.ts | 1 + src/types/missionInventoryUpdateType.ts | 94 ------------------- src/types/missionTypes.ts | 17 ++++ src/types/requestTypes.ts | 53 +++++++++++ 10 files changed, 135 insertions(+), 156 deletions(-) delete mode 100644 src/types/missionInventoryUpdateType.ts create mode 100644 src/types/missionTypes.ts create mode 100644 src/types/requestTypes.ts diff --git a/src/controllers/api/artifactsController.ts b/src/controllers/api/artifactsController.ts index 93aa47af..a56c586c 100644 --- a/src/controllers/api/artifactsController.ts +++ b/src/controllers/api/artifactsController.ts @@ -1,19 +1,18 @@ +import { parseString } from "@/src/helpers/general"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { upgradeMod } from "@/src/services/inventoryService"; +import { IArtifactsRequest } from "@/src/types/requestTypes"; import { RequestHandler } from "express"; // eslint-disable-next-line @typescript-eslint/no-misused-promises const artifactsController: RequestHandler = async (req, res) => { - const [data] = String(req.body).split("\n"); - const id = req.query.accountId as string; - - // TODO - salt check + const accountId = parseString(req.query.accountId); try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const parsedData = JSON.parse(data); - + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + const artifactsData = getJSONfromString(req.body.toString()) as IArtifactsRequest; // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - const upgradeModId = await upgradeMod(parsedData, id); + const upgradeModId = await upgradeMod(artifactsData, accountId); res.send(upgradeModId); } catch (err) { console.error("Error parsing JSON data:", err); diff --git a/src/controllers/api/missionInventoryUpdateController.ts b/src/controllers/api/missionInventoryUpdateController.ts index 3d8fcaff..e53ff359 100644 --- a/src/controllers/api/missionInventoryUpdateController.ts +++ b/src/controllers/api/missionInventoryUpdateController.ts @@ -1,7 +1,9 @@ import { RequestHandler } from "express"; import { missionInventoryUpdate } from "@/src/services/inventoryService"; import { combineRewardAndLootInventory, getRewards } from "@/src/services/missionInventoryUpdateService "; -import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { parseString } from "@/src/helpers/general"; +import { IMissionInventoryUpdateRequest } from "@/src/types/requestTypes"; /* **** INPUT **** - [ ] crossPlaySetting @@ -20,7 +22,7 @@ import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType" - [ ] CurrentLoadOutIds - [ ] AliveTime - [ ] MissionTime -- [ ] Missions +- [x] Missions - [ ] CompletedAlerts - [ ] LastRegionPlayed - [ ] GameModeId @@ -43,23 +45,20 @@ import { IMissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType" */ // eslint-disable-next-line @typescript-eslint/no-misused-promises -const missionInventoryUpdateController: RequestHandler = async (req, res) => { - const [data] = String(req.body).split("\n"); - const id = req.query.accountId as string; +const missionInventoryUpdateController: RequestHandler = async (req, res): Promise => { + const accountId = parseString(req.query.accountId); try { - const lootInventory = JSON.parse(data) as IMissionInventoryUpdate; - if (typeof lootInventory !== "object" || lootInventory === null) { - throw new Error("Invalid data format"); - } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call + const lootInventory = getJSONfromString(req.body.toString()) as IMissionInventoryUpdateRequest; - const { InventoryChanges, MissionRewards } = getRewards(lootInventory.RewardInfo); + const { InventoryChanges, MissionRewards } = getRewards(lootInventory); const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits, FusionPoints } = combineRewardAndLootInventory(InventoryChanges, lootInventory); // eslint-disable-next-line @typescript-eslint/no-unused-vars - const InventoryJson = JSON.stringify(await missionInventoryUpdate(combinedInventoryChanges, id)); + const InventoryJson = JSON.stringify(await missionInventoryUpdate(combinedInventoryChanges, accountId)); res.json({ // InventoryJson, // this part will reset game data and missions will be locked MissionRewards, diff --git a/src/helpers/stringHelpers.ts b/src/helpers/stringHelpers.ts index 67995382..8cf21e80 100644 --- a/src/helpers/stringHelpers.ts +++ b/src/helpers/stringHelpers.ts @@ -1,4 +1,4 @@ -const getJSONfromString = (str: string): any => { +export const getJSONfromString = (str: string): any => { const jsonSubstring = str.substring(0, str.lastIndexOf("}") + 1); return JSON.parse(jsonSubstring); }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 58b678c6..aecd2293 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -2,20 +2,20 @@ import { Inventory } from "@/src/models/inventoryModel"; import new_inventory from "@/static/fixed_responses/postTutorialInventory.json"; import config from "@/config.json"; import { Types } from "mongoose"; -import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; +import { ISuitDatabase, ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes"; import { SlotType } from "@/src/types/purchaseTypes"; -import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; +import { IWeaponDatabase, IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; import { IChallengeProgress, IConsumable, - ICrewShipSalvagedWeaponSkin, IFlavourItem, IInventoryDatabaseDocument, IMiscItem, + IMission, IRawUpgrade } from "@/src/types/inventoryTypes/inventoryTypes"; -import { IMissionInventoryUpdate, IMissionInventoryUpdateGear } from "../types/missionInventoryUpdateType"; import { IGenericUpdate } from "../types/genericUpdate"; +import { IArtifactsRequest, IMissionInventoryUpdateRequest } from "../types/requestTypes"; const createInventory = async (accountOwnerId: Types.ObjectId) => { try { @@ -139,17 +139,17 @@ export const addCustomization = async (customizatonName: string, accountId: stri const addGearExpByCategory = ( inventory: IInventoryDatabaseDocument, - gearArray: IMissionInventoryUpdateGear[] | undefined, + gearArray: ISuitDatabase[] | IWeaponDatabase[] | undefined, categoryName: "Pistols" | "LongGuns" | "Melee" | "Suits" ) => { const category = inventory[categoryName]; gearArray?.forEach(({ ItemId, XP }) => { - const itemIndex = category.findIndex(item => item._id?.equals(ItemId.$oid)); + const itemIndex = ItemId ? category.findIndex(item => item._id?.equals(ItemId.$oid)) : -1; const item = category[itemIndex]; if (itemIndex !== -1 && item.XP != undefined) { - item.XP += XP; + item.XP += XP || 0; inventory.markModified(`${categoryName}.${itemIndex}.XP`); } }); @@ -229,11 +229,24 @@ const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: IChall }); }; +const addMissionComplete = (inventory: IInventoryDatabaseDocument, { Tag, Completes }: IMission) => { + const { Missions } = inventory; + const itemIndex = Missions.findIndex(item => item.Tag === Tag); + + if (itemIndex !== -1) { + Missions[itemIndex].Completes += Completes; + inventory.markModified(`Missions.${itemIndex}.Completes`); + } else { + Missions.push({ Tag, Completes }); + } +}; + const gearKeys = ["Suits", "Pistols", "LongGuns", "Melee"] as const; type GearKeysType = (typeof gearKeys)[number]; -export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, accountId: string) => { - const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress, FusionPoints, Consumables, Recipes } = data; +export const missionInventoryUpdate = async (data: IMissionInventoryUpdateRequest, accountId: string) => { + const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress, FusionPoints, Consumables, Recipes, Missions } = + data; const inventory = await getInventory(accountId); // credits @@ -251,6 +264,7 @@ export const missionInventoryUpdate = async (data: IMissionInventoryUpdate, acco addConsumables(inventory, Consumables); addRecipes(inventory, Recipes); addChallenges(inventory, ChallengeProgress); + addMissionComplete(inventory, Missions!); const changedInventory = await inventory.save(); return changedInventory.toJSON(); @@ -275,15 +289,8 @@ export const addBooster = async (ItemType: string, time: number, accountId: stri await inventory.save(); }; -export const upgradeMod = async ( - { - Upgrade, - LevelDiff, - Cost, - FusionPointCost - }: { Upgrade: ICrewShipSalvagedWeaponSkin; LevelDiff: number; Cost: number; FusionPointCost: number }, - accountId: string -): Promise => { +export const upgradeMod = async (artifactsData: IArtifactsRequest, accountId: string): Promise => { + const { Upgrade, LevelDiff, Cost, FusionPointCost } = artifactsData; try { const inventory = await getInventory(accountId); const { Upgrades, RawUpgrades } = inventory; diff --git a/src/services/missionInventoryUpdateService .ts b/src/services/missionInventoryUpdateService .ts index a3cbb9b3..cfee223a 100644 --- a/src/services/missionInventoryUpdateService .ts +++ b/src/services/missionInventoryUpdateService .ts @@ -1,29 +1,26 @@ -import { - IMissionInventoryUpdate, - IMissionInventoryUpdateRewardInfo, - IMissionRewardResponse, - IReward, - IInventoryFieldType, - inventoryFields -} from "@/src/types/missionInventoryUpdateType"; +import { IMissionRewardResponse, IReward, IInventoryFieldType, inventoryFields } from "@/src/types/missionTypes"; import missionsDropTable from "@/static/json/missions-drop-table.json"; import { modNames, relicNames, miscNames, resourceNames, gearNames, blueprintNames } from "@/static/data/items"; +import { IMissionInventoryUpdateRequest } from "../types/requestTypes"; // need reverse engineer rewardSeed, otherwise ingame displayed rotation reward will be different than added to db or displayed on mission end -const getRewards = ( - rewardInfo: IMissionInventoryUpdateRewardInfo | undefined -): { InventoryChanges: IMissionInventoryUpdate; MissionRewards: IMissionRewardResponse[] } => { - if (!rewardInfo) { +const getRewards = ({ + RewardInfo +}: IMissionInventoryUpdateRequest): { + InventoryChanges: IMissionInventoryUpdateRequest; + MissionRewards: IMissionRewardResponse[]; +} => { + if (!RewardInfo) { return { InventoryChanges: {}, MissionRewards: [] }; } - const rewards = (missionsDropTable as { [key: string]: IReward[] })[rewardInfo.node]; + const rewards = (missionsDropTable as { [key: string]: IReward[] })[RewardInfo.node]; if (!rewards) { return { InventoryChanges: {}, MissionRewards: [] }; } - const rotationCount = rewardInfo.rewardQualifications?.length || 0; + const rotationCount = RewardInfo.rewardQualifications?.length || 0; const rotations = getRotations(rotationCount); const drops: IReward[] = []; for (const rotation of rotations) { @@ -54,6 +51,7 @@ const getRewards = ( // { chance: 10.82, name: "2X Orokin Cell", rotation: "C" }, // { chance: 10.82, name: "Arrow Mutation", rotation: "C" }, // { chance: 10.82, name: "200 Endo", rotation: "C" }, + // { chance: 10.82, name: "200 Endo", rotation: "C" }, // { chance: 10.82, name: "2,000,000 Credits Cache", rotation: "C" }, // { chance: 7.69, name: "Health Restore (Large)", rotation: "C" }, // { chance: 7.69, name: "Vapor Specter Blueprint", rotation: "C" } @@ -66,8 +64,8 @@ const getRewards = ( }; const combineRewardAndLootInventory = ( - rewardInventory: IMissionInventoryUpdate, - lootInventory: IMissionInventoryUpdate + rewardInventory: IMissionInventoryUpdateRequest, + lootInventory: IMissionInventoryUpdateRequest ) => { const missionCredits = lootInventory.RegularCredits || 0; const creditsBonus = rewardInventory.RegularCredits || 0; @@ -98,12 +96,10 @@ const getRotations = (rotationCount: number): (string | undefined)[] => { if (rotationCount === 0) return [undefined]; const rotationPattern = ["A", "A", "B", "C"]; - let rotationIndex = 0; const rotatedValues = []; - for (let i = 1; i <= rotationCount; i++) { - rotatedValues.push(rotationPattern[rotationIndex]); - rotationIndex = (rotationIndex + 1) % 3; + for (let i = 0; i < rotationCount; i++) { + rotatedValues.push(rotationPattern[i % rotationPattern.length]); } return rotatedValues; @@ -128,8 +124,8 @@ const getRandomRewardByChance = (data: IReward[] | undefined): IReward | undefin const formatRewardsToInventoryType = ( rewards: IReward[] -): { InventoryChanges: IMissionInventoryUpdate; MissionRewards: IMissionRewardResponse[] } => { - const InventoryChanges: IMissionInventoryUpdate = {}; +): { InventoryChanges: IMissionInventoryUpdateRequest; MissionRewards: IMissionRewardResponse[] } => { + const InventoryChanges: IMissionInventoryUpdateRequest = {}; const MissionRewards: IMissionRewardResponse[] = []; for (const reward of rewards) { if (itemCheck(InventoryChanges, MissionRewards, reward.name)) { @@ -152,7 +148,7 @@ const formatRewardsToInventoryType = ( }; const itemCheck = ( - InventoryChanges: IMissionInventoryUpdate, + InventoryChanges: IMissionInventoryUpdateRequest, MissionRewards: IMissionRewardResponse[], name: string ) => { @@ -184,7 +180,7 @@ const getCountFromName = (name: string) => { }; const addRewardResponse = ( - InventoryChanges: IMissionInventoryUpdate, + InventoryChanges: IMissionInventoryUpdateRequest, MissionRewards: IMissionRewardResponse[], ItemName: string, ItemType: string, diff --git a/src/types/inventoryTypes/SuitTypes.ts b/src/types/inventoryTypes/SuitTypes.ts index 033b1967..7e1f6825 100644 --- a/src/types/inventoryTypes/SuitTypes.ts +++ b/src/types/inventoryTypes/SuitTypes.ts @@ -24,6 +24,7 @@ export interface ISuitDatabase { FocusLens?: string; UnlockLevel?: number; _id: Types.ObjectId; + ItemId?: IOid; } export interface SuitConfig { diff --git a/src/types/inventoryTypes/weaponTypes.ts b/src/types/inventoryTypes/weaponTypes.ts index 032becba..365c869b 100644 --- a/src/types/inventoryTypes/weaponTypes.ts +++ b/src/types/inventoryTypes/weaponTypes.ts @@ -22,6 +22,7 @@ export interface IWeaponDatabase { ModularParts?: string[]; UnlockLevel?: number; _id?: Types.ObjectId; + ItemId?: IOid; } export interface WeaponConfig { diff --git a/src/types/missionInventoryUpdateType.ts b/src/types/missionInventoryUpdateType.ts deleted file mode 100644 index 9268810b..00000000 --- a/src/types/missionInventoryUpdateType.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import { IOid } from "./commonTypes"; -import { IDate } from "./inventoryTypes/inventoryTypes"; - -export const inventoryFields = ["RawUpgrades", "MiscItems", "Consumables", "Recipes"] as const; -export type IInventoryFieldType = (typeof inventoryFields)[number]; -export interface IMissionInventoryUpdateGear { - ItemType: string; - ItemName: string; - ItemId: IOid; - XP: number; - UpgradeVer: number; - Features: number; - Polarized: number; - CustomizationSlotPurchases: number; - ModSlotPurchases: number; - FocusLens: string; - Expiry: IDate; - Polarity: any[]; - Configs: any[]; - ModularParts: any[]; - SkillTree: string; - UpgradeType: string; - UpgradeFingerprint: string; - OffensiveUpgrade: string; - DefensiveUpgrade: string; - UpgradesExpiry: IDate; - ArchonCrystalUpgrades: any[]; -} - -export interface IMissionInventoryUpdateItem { - ItemCount: number; - ItemType: string; -} - -export interface IMissionInventoryUpdateCard extends IMissionInventoryUpdateItem { - ItemId: IOid; - UpgradeFingerprint: string; - PendingRerollFingerprint: string; - LastAdded: IOid; -} - -export interface IMissionInventoryUpdateChallange { - Name: string; - Progress: number; - Completed: any[]; -} - -export interface IMissionInventoryUpdateRewardInfo { - node: string; - rewardTier?: number; - nightmareMode?: boolean; - useVaultManifest?: boolean; - EnemyCachesFound?: number; - toxinOk?: boolean; - lostTargetWave?: number; - defenseTargetCount?: number; - EOM_AFK?: number; - rewardQualifications?: string; - PurgatoryRewardQualifications?: string; - rewardSeed?: number; -} - -export interface IMissionInventoryUpdate { - rewardsMultiplier?: number; - ActiveBoosters?: any[]; - LongGuns?: IMissionInventoryUpdateGear[]; - Pistols?: IMissionInventoryUpdateGear[]; - Suits?: IMissionInventoryUpdateGear[]; - Melee?: IMissionInventoryUpdateGear[]; - RawUpgrades?: IMissionInventoryUpdateItem[]; - MiscItems?: IMissionInventoryUpdateItem[]; - Consumables?: IMissionInventoryUpdateItem[]; - Recipes?: IMissionInventoryUpdateItem[]; - RegularCredits?: number; - ChallengeProgress?: IMissionInventoryUpdateChallange[]; - RewardInfo?: IMissionInventoryUpdateRewardInfo; - FusionPoints?: number; -} - -export interface IMissionRewardResponse { - StoreItem?: string; - TypeName: string; - UpgradeLevel?: number; - ItemCount: number; - TweetText: string; - ProductCategory: string; -} - -export interface IReward { - name: string; - chance: number; - rotation?: string; -} diff --git a/src/types/missionTypes.ts b/src/types/missionTypes.ts new file mode 100644 index 00000000..193534f8 --- /dev/null +++ b/src/types/missionTypes.ts @@ -0,0 +1,17 @@ +export const inventoryFields = ["RawUpgrades", "MiscItems", "Consumables", "Recipes"] as const; +export type IInventoryFieldType = (typeof inventoryFields)[number]; + +export interface IMissionRewardResponse { + StoreItem?: string; + TypeName: string; + UpgradeLevel?: number; + ItemCount: number; + TweetText: string; + ProductCategory: string; +} + +export interface IReward { + name: string; + chance: number; + rotation?: string; +} diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts new file mode 100644 index 00000000..050955d9 --- /dev/null +++ b/src/types/requestTypes.ts @@ -0,0 +1,53 @@ +import { + IBooster, + IChallengeProgress, + IConsumable, + ICrewShipSalvagedWeaponSkin, + IMiscItem, + IMission, + IRawUpgrade +} from "./inventoryTypes/inventoryTypes"; +import { IWeaponDatabase } from "./inventoryTypes/weaponTypes"; +import { ISuitDatabase } from "./inventoryTypes/SuitTypes"; + +interface IArtifactsRequest { + Upgrade: ICrewShipSalvagedWeaponSkin; + LevelDiff: number; + Cost: number; + FusionPointCost: number; +} + +interface IMissionInventoryUpdateRequest { + rewardsMultiplier?: number; + ActiveBoosters?: IBooster[]; + LongGuns?: IWeaponDatabase[]; + Pistols?: IWeaponDatabase[]; + Suits?: ISuitDatabase[]; + Melee?: IWeaponDatabase[]; + RawUpgrades?: IRawUpgrade[]; + MiscItems?: IMiscItem[]; + Consumables?: IConsumable[]; + Recipes?: IConsumable[]; + RegularCredits?: number; + ChallengeProgress?: IChallengeProgress[]; + RewardInfo?: IMissionInventoryUpdateRequestRewardInfo; + FusionPoints?: number; + Missions?: IMission; +} + +interface IMissionInventoryUpdateRequestRewardInfo { + node: string; + rewardTier?: number; + nightmareMode?: boolean; + useVaultManifest?: boolean; + EnemyCachesFound?: number; + toxinOk?: boolean; + lostTargetWave?: number; + defenseTargetCount?: number; + EOM_AFK?: number; + rewardQualifications?: string; + PurgatoryRewardQualifications?: string; + rewardSeed?: number; +} + +export { IArtifactsRequest, IMissionInventoryUpdateRequest };