Compare commits
6 Commits
main
...
janisslsm/
Author | SHA1 | Date | |
---|---|---|---|
![]() |
225cd83cea | ||
![]() |
e824087034 | ||
![]() |
fd2027b071 | ||
![]() |
0af98bc6c2 | ||
![]() |
3403d496b4 | ||
![]() |
58b1cfc30f |
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"mongodbUrl": "mongodb://127.0.0.1:27017/openWF",
|
"mongodbUrl": "mongodb://127.0.0.1:27017/openWF_2013",
|
||||||
"logger": {
|
"logger": {
|
||||||
"files": true,
|
"files": true,
|
||||||
"level": "trace",
|
"level": "trace",
|
||||||
|
20
src/app.ts
20
src/app.ts
@ -15,12 +15,32 @@ import { statsRouter } from "@/src/routes/stats";
|
|||||||
import { webuiRouter } from "@/src/routes/webui";
|
import { webuiRouter } from "@/src/routes/webui";
|
||||||
import { connectDatabase } from "@/src/services/mongoService";
|
import { connectDatabase } from "@/src/services/mongoService";
|
||||||
import { registerLogFileCreationListener } from "@/src/utils/logger";
|
import { registerLogFileCreationListener } from "@/src/utils/logger";
|
||||||
|
import * as zlib from "zlib";
|
||||||
|
|
||||||
void registerLogFileCreationListener();
|
void registerLogFileCreationListener();
|
||||||
void connectDatabase();
|
void connectDatabase();
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
|
app.use(function (req, _res, next) {
|
||||||
|
const buffer: Buffer[] = [];
|
||||||
|
req.on("data", function (chunk: Buffer) {
|
||||||
|
if (chunk !== undefined && chunk.length > 2 && chunk[0] == 0x1f && chunk[1] == 0x8b) {
|
||||||
|
buffer.push(Buffer.from(chunk));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
req.on("end", function () {
|
||||||
|
zlib.gunzip(Buffer.concat(buffer), function (_err, dezipped) {
|
||||||
|
if (typeof dezipped != "undefined") {
|
||||||
|
req.body = dezipped.toString("utf-8");
|
||||||
|
}
|
||||||
|
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
app.use(bodyParser.raw());
|
app.use(bodyParser.raw());
|
||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
app.use(bodyParser.text());
|
app.use(bodyParser.text());
|
||||||
|
@ -21,11 +21,11 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) =
|
|||||||
|
|
||||||
const inventory = await getInventory(accountId);
|
const inventory = await getInventory(accountId);
|
||||||
const pendingRecipe = inventory.PendingRecipes.find(
|
const pendingRecipe = inventory.PendingRecipes.find(
|
||||||
recipe => recipe._id?.toString() === claimCompletedRecipeRequest.RecipeIds[0].$oid
|
recipe => recipe._id?.toString() === claimCompletedRecipeRequest.RecipeIds[0].$id
|
||||||
);
|
);
|
||||||
if (!pendingRecipe) {
|
if (!pendingRecipe) {
|
||||||
logger.error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$oid}`);
|
logger.error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$id}`);
|
||||||
throw new Error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$oid}`);
|
throw new Error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$id}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
//check recipe is indeed ready to be completed
|
//check recipe is indeed ready to be completed
|
||||||
|
@ -16,8 +16,6 @@ export const getCreditsController: RequestHandler = async (req, res) => {
|
|||||||
if (config.infiniteResources) {
|
if (config.infiniteResources) {
|
||||||
res.json({
|
res.json({
|
||||||
RegularCredits: 999999999,
|
RegularCredits: 999999999,
|
||||||
TradesRemaining: 999999999,
|
|
||||||
PremiumCreditsFree: 999999999,
|
|
||||||
PremiumCredits: 999999999
|
PremiumCredits: 999999999
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
@ -26,8 +24,6 @@ export const getCreditsController: RequestHandler = async (req, res) => {
|
|||||||
const inventory = await getInventory(accountId);
|
const inventory = await getInventory(accountId);
|
||||||
res.json({
|
res.json({
|
||||||
RegularCredits: inventory.RegularCredits,
|
RegularCredits: inventory.RegularCredits,
|
||||||
TradesRemaining: inventory.TradesRemaining,
|
|
||||||
PremiumCreditsFree: inventory.PremiumCreditsFree,
|
|
||||||
PremiumCredits: inventory.PremiumCredits
|
PremiumCredits: inventory.PremiumCredits
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -1,73 +1,6 @@
|
|||||||
import { RequestHandler } from "express";
|
import { RequestHandler } from "express";
|
||||||
import { Inventory } from "@/src/models/inventoryModels/inventoryModel";
|
|
||||||
import { Guild } from "@/src/models/guildModel";
|
|
||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
|
||||||
import { toOid } from "@/src/helpers/inventoryHelpers";
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
const getGuildController: RequestHandler = (_, res) => {
|
||||||
const getGuildController: RequestHandler = async (req, res) => {
|
|
||||||
const accountId = await getAccountIdForRequest(req);
|
|
||||||
const inventory = await Inventory.findOne({ accountOwnerId: accountId });
|
|
||||||
if (!inventory) {
|
|
||||||
res.status(400).json({ error: "inventory was undefined" });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (inventory.GuildId) {
|
|
||||||
const guild = await Guild.findOne({ _id: inventory.GuildId });
|
|
||||||
if (guild) {
|
|
||||||
res.json({
|
|
||||||
_id: toOid(guild._id),
|
|
||||||
Name: guild.Name,
|
|
||||||
Members: [
|
|
||||||
{
|
|
||||||
_id: { $oid: req.query.accountId },
|
|
||||||
Rank: 0,
|
|
||||||
Status: 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
Ranks: [
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Creator",
|
|
||||||
Permissions: 16351
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Warlord",
|
|
||||||
Permissions: 14303
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_General",
|
|
||||||
Permissions: 4318
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Officer",
|
|
||||||
Permissions: 4314
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Leader",
|
|
||||||
Permissions: 4106
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Sage",
|
|
||||||
Permissions: 4304
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Soldier",
|
|
||||||
Permissions: 4098
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Initiate",
|
|
||||||
Permissions: 4096
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Utility",
|
|
||||||
Permissions: 4096
|
|
||||||
}
|
|
||||||
],
|
|
||||||
Tier: 1
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
res.json({});
|
res.json({});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ export const getGuildDojoController: RequestHandler = async (req, res) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const dojo: IDojoClient = {
|
const dojo: IDojoClient = {
|
||||||
_id: { $oid: guildId },
|
_id: { $id: guildId },
|
||||||
Name: guild.Name,
|
Name: guild.Name,
|
||||||
Tier: 1,
|
Tier: 1,
|
||||||
FixedContributions: true,
|
FixedContributions: true,
|
||||||
|
14
src/controllers/api/giveStartingGearController.ts
Normal file
14
src/controllers/api/giveStartingGearController.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||||
|
import { RequestHandler } from "express";
|
||||||
|
import { getInventory } from "@/src/services/inventoryService";
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
|
export const giveStartingGearController: RequestHandler = async (req, res) => {
|
||||||
|
const accountId = await getAccountIdForRequest(req);
|
||||||
|
|
||||||
|
const inventory = await getInventory(accountId);
|
||||||
|
inventory.ReceivedStartingGear = true;
|
||||||
|
console.log(req.query);
|
||||||
|
await inventory.save();
|
||||||
|
res.status(200);
|
||||||
|
};
|
@ -12,7 +12,7 @@ const hostSessionController: RequestHandler = async (req, res) => {
|
|||||||
const session = createNewSession(hostSessionRequest, accountId);
|
const session = createNewSession(hostSessionRequest, accountId);
|
||||||
logger.debug(`New Session Created`, { session });
|
logger.debug(`New Session Created`, { session });
|
||||||
|
|
||||||
res.json({ sessionId: { $oid: session.sessionId }, rewardSeed: 99999999 });
|
res.json({ sessionId: { $id: session.sessionId }, rewardSeed: 99999999 });
|
||||||
};
|
};
|
||||||
|
|
||||||
export { hostSessionController };
|
export { hostSessionController };
|
||||||
|
@ -12,7 +12,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
|
|||||||
// shard installation
|
// shard installation
|
||||||
const request = getJSONfromString(String(req.body)) as IShardInstallRequest;
|
const request = getJSONfromString(String(req.body)) as IShardInstallRequest;
|
||||||
const inventory = await getInventory(accountId);
|
const inventory = await getInventory(accountId);
|
||||||
const suit = inventory.Suits.find(suit => suit._id.toString() == request.SuitId.$oid)!;
|
const suit = inventory.Suits.find(suit => suit._id.toString() == request.SuitId.$id)!;
|
||||||
if (!suit.ArchonCrystalUpgrades || suit.ArchonCrystalUpgrades.length != 5) {
|
if (!suit.ArchonCrystalUpgrades || suit.ArchonCrystalUpgrades.length != 5) {
|
||||||
suit.ArchonCrystalUpgrades = [{}, {}, {}, {}, {}];
|
suit.ArchonCrystalUpgrades = [{}, {}, {}, {}, {}];
|
||||||
}
|
}
|
||||||
|
@ -3,12 +3,8 @@ import { getAccountIdForRequest } from "@/src/services/loginService";
|
|||||||
import { toInventoryResponse } from "@/src/helpers/inventoryHelpers";
|
import { toInventoryResponse } from "@/src/helpers/inventoryHelpers";
|
||||||
import { Inventory } from "@/src/models/inventoryModels/inventoryModel";
|
import { Inventory } from "@/src/models/inventoryModels/inventoryModel";
|
||||||
import { config } from "@/src/services/configService";
|
import { config } from "@/src/services/configService";
|
||||||
import allDialogue from "@/static/fixed_responses/allDialogue.json";
|
import { IInventoryDatabase } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||||
import allMissions from "@/static/fixed_responses/allMissions.json";
|
//import new_inventory from "@/static/fixed_responses/postTutorialInventory.json";
|
||||||
import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes";
|
|
||||||
import { IInventoryDatabase, IShipInventory, equipmentKeys } from "@/src/types/inventoryTypes/inventoryTypes";
|
|
||||||
import { IPolarity, ArtifactPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes";
|
|
||||||
import { ExportCustoms, ExportFlavour, ExportKeys, ExportResources } from "warframe-public-export-plus";
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
const inventoryController: RequestHandler = async (request, response) => {
|
const inventoryController: RequestHandler = async (request, response) => {
|
||||||
@ -20,9 +16,7 @@ const inventoryController: RequestHandler = async (request, response) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const inventory = await Inventory.findOne({ accountOwnerId: accountId })
|
const inventory = await Inventory.findOne({ accountOwnerId: accountId });
|
||||||
.populate<{ LoadOutPresets: ILoadoutDatabase }>("LoadOutPresets")
|
|
||||||
.populate<{ Ships: IShipInventory }>("Ships", "-ShipInteriorColors");
|
|
||||||
|
|
||||||
if (!inventory) {
|
if (!inventory) {
|
||||||
response.status(400).json({ error: "inventory was undefined" });
|
response.status(400).json({ error: "inventory was undefined" });
|
||||||
@ -37,83 +31,37 @@ const inventoryController: RequestHandler = async (request, response) => {
|
|||||||
|
|
||||||
if (config.infiniteResources) {
|
if (config.infiniteResources) {
|
||||||
inventoryResponse.RegularCredits = 999999999;
|
inventoryResponse.RegularCredits = 999999999;
|
||||||
inventoryResponse.TradesRemaining = 999999999;
|
|
||||||
inventoryResponse.PremiumCreditsFree = 999999999;
|
|
||||||
inventoryResponse.PremiumCredits = 999999999;
|
inventoryResponse.PremiumCredits = 999999999;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.skipAllDialogue) {
|
// if (config.unlockAllMissions) {
|
||||||
inventoryResponse.TauntHistory = [
|
// //inventoryResponse.Missions = allMissions;
|
||||||
{
|
// //inventoryResponse.NodeIntrosCompleted.push("TeshinHardModeUnlocked");
|
||||||
node: "TreasureTutorial",
|
// }
|
||||||
state: "TS_COMPLETED"
|
|
||||||
}
|
|
||||||
];
|
|
||||||
for (const str of allDialogue) {
|
|
||||||
addString(inventoryResponse.NodeIntrosCompleted, str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.unlockAllMissions) {
|
// if (config.unlockAllMissions) {
|
||||||
inventoryResponse.Missions = allMissions;
|
// //inventoryResponse.Missions = allMissions;
|
||||||
addString(inventoryResponse.NodeIntrosCompleted, "TeshinHardModeUnlocked");
|
// //addString(inventoryResponse.NodeIntrosCompleted, "TeshinHardModeUnlocked");
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (config.unlockAllQuests) {
|
// if (config.unlockAllFlavourItems) {
|
||||||
for (const [k, v] of Object.entries(ExportKeys)) {
|
// inventoryResponse.FlavourItems = [];
|
||||||
if ("chainStages" in v) {
|
// for (const uniqueName in ExportFlavour) {
|
||||||
if (!inventoryResponse.QuestKeys.find(quest => quest.ItemType == k)) {
|
// inventoryResponse.FlavourItems.push({ ItemType: uniqueName });
|
||||||
inventoryResponse.QuestKeys.push({ ItemType: k });
|
// }
|
||||||
}
|
// }
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (config.completeAllQuests) {
|
|
||||||
for (const quest of inventoryResponse.QuestKeys) {
|
|
||||||
quest.Completed = true;
|
|
||||||
quest.Progress = [
|
|
||||||
{
|
|
||||||
c: 0,
|
|
||||||
i: false,
|
|
||||||
m: false,
|
|
||||||
b: []
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
inventoryResponse.ArchwingEnabled = true;
|
// if (config.unlockAllSkins) {
|
||||||
|
// inventoryResponse.WeaponSkins = [];
|
||||||
// Skip "Watch The Maker"
|
// for (const uniqueName in ExportCustoms) {
|
||||||
addString(inventoryResponse.NodeIntrosCompleted, "/Lotus/Levels/Cinematics/NewWarIntro/NewWarStageTwo.level");
|
// inventoryResponse.WeaponSkins.push({
|
||||||
}
|
// ItemId: {
|
||||||
|
// $id: "000000000000000000000000"
|
||||||
if (config.unlockAllShipDecorations) {
|
// },
|
||||||
inventoryResponse.ShipDecorations = [];
|
// ItemType: uniqueName
|
||||||
for (const [uniqueName, item] of Object.entries(ExportResources)) {
|
// });
|
||||||
if (item.productCategory == "ShipDecorations") {
|
// }
|
||||||
inventoryResponse.ShipDecorations.push({ ItemType: uniqueName, ItemCount: 1 });
|
// }
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.unlockAllFlavourItems) {
|
|
||||||
inventoryResponse.FlavourItems = [];
|
|
||||||
for (const uniqueName in ExportFlavour) {
|
|
||||||
inventoryResponse.FlavourItems.push({ ItemType: uniqueName });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (config.unlockAllSkins) {
|
|
||||||
inventoryResponse.WeaponSkins = [];
|
|
||||||
for (const uniqueName in ExportCustoms) {
|
|
||||||
inventoryResponse.WeaponSkins.push({
|
|
||||||
ItemId: {
|
|
||||||
$oid: "000000000000000000000000"
|
|
||||||
},
|
|
||||||
ItemType: uniqueName
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof config.spoofMasteryRank === "number" && config.spoofMasteryRank >= 0) {
|
if (typeof config.spoofMasteryRank === "number" && config.spoofMasteryRank >= 0) {
|
||||||
inventoryResponse.PlayerLevel = config.spoofMasteryRank;
|
inventoryResponse.PlayerLevel = config.spoofMasteryRank;
|
||||||
@ -130,34 +78,18 @@ const inventoryController: RequestHandler = async (request, response) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.universalPolarityEverywhere) {
|
|
||||||
const Polarity: IPolarity[] = [];
|
|
||||||
for (let i = 0; i != 10; ++i) {
|
|
||||||
Polarity.push({
|
|
||||||
Slot: i,
|
|
||||||
Value: ArtifactPolarity.Any
|
|
||||||
});
|
|
||||||
}
|
|
||||||
for (const key of equipmentKeys) {
|
|
||||||
if (key in inventoryResponse) {
|
|
||||||
for (const equipment of inventoryResponse[key]) {
|
|
||||||
equipment.Polarity = Polarity;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fix for #380
|
// Fix for #380
|
||||||
inventoryResponse.NextRefill = { $date: { $numberLong: "9999999999999" } };
|
inventoryResponse.NextRefill = { $date: { $numberLong: "9999999999999" } };
|
||||||
|
|
||||||
response.json(inventoryResponse);
|
response.json(inventoryResponse);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
const addString = (arr: string[], str: string): void => {
|
const addString = (arr: string[], str: string): void => {
|
||||||
if (!arr.find(x => x == str)) {
|
if (!arr.find(x => x == str)) {
|
||||||
arr.push(str);
|
arr.push(str);
|
||||||
}
|
}
|
||||||
};
|
};*/
|
||||||
|
|
||||||
const getExpRequiredForMr = (rank: number): number => {
|
const getExpRequiredForMr = (rank: number): number => {
|
||||||
if (rank <= 30) {
|
if (rank <= 30) {
|
||||||
|
@ -7,7 +7,7 @@ const joinSessionController: RequestHandler = (_req, res) => {
|
|||||||
logger.debug(`JoinSession Request`, { reqBody });
|
logger.debug(`JoinSession Request`, { reqBody });
|
||||||
const req = JSON.parse(String(_req.body));
|
const req = JSON.parse(String(_req.body));
|
||||||
const session = getSessionByID(req.sessionIds[0] as string);
|
const session = getSessionByID(req.sessionIds[0] as string);
|
||||||
res.json({ rewardSeed: session?.rewardSeed, sessionId: { $oid: session?.sessionId } });
|
res.json({ rewardSeed: session?.rewardSeed, sessionId: { $id: session?.sessionId } });
|
||||||
};
|
};
|
||||||
|
|
||||||
export { joinSessionController };
|
export { joinSessionController };
|
||||||
|
@ -8,7 +8,6 @@ import { toLoginRequest } from "@/src/helpers/loginHelpers";
|
|||||||
import { Account } from "@/src/models/loginModel";
|
import { Account } from "@/src/models/loginModel";
|
||||||
import { createAccount, isCorrectPassword } from "@/src/services/loginService";
|
import { createAccount, isCorrectPassword } from "@/src/services/loginService";
|
||||||
import { ILoginResponse } from "@/src/types/loginTypes";
|
import { ILoginResponse } from "@/src/types/loginTypes";
|
||||||
import { DTLS, groups, HUB, platformCDNs } from "@/static/fixed_responses/login_static";
|
|
||||||
import { logger } from "@/src/utils/logger";
|
import { logger } from "@/src/utils/logger";
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
@ -17,7 +16,7 @@ const loginController: RequestHandler = async (request, response) => {
|
|||||||
const body = JSON.parse(request.body); // parse octet stream of json data to json object
|
const body = JSON.parse(request.body); // parse octet stream of json data to json object
|
||||||
const loginRequest = toLoginRequest(body);
|
const loginRequest = toLoginRequest(body);
|
||||||
|
|
||||||
const account = await Account.findOne({ email: loginRequest.email }); //{ _id: 0, __v: 0 }
|
const account = await Account.findOne({ email: loginRequest.email });
|
||||||
const nonce = Math.round(Math.random() * Number.MAX_SAFE_INTEGER);
|
const nonce = Math.round(Math.random() * Number.MAX_SAFE_INTEGER);
|
||||||
|
|
||||||
if (!account && config.autoCreateAccount && loginRequest.ClientType != "webui") {
|
if (!account && config.autoCreateAccount && loginRequest.ClientType != "webui") {
|
||||||
@ -26,12 +25,6 @@ const loginController: RequestHandler = async (request, response) => {
|
|||||||
email: loginRequest.email,
|
email: loginRequest.email,
|
||||||
password: loginRequest.password,
|
password: loginRequest.password,
|
||||||
DisplayName: loginRequest.email.substring(0, loginRequest.email.indexOf("@")),
|
DisplayName: loginRequest.email.substring(0, loginRequest.email.indexOf("@")),
|
||||||
CountryCode: loginRequest.lang.toUpperCase(),
|
|
||||||
ClientType: loginRequest.ClientType,
|
|
||||||
CrossPlatformAllowed: true,
|
|
||||||
ForceLogoutVersion: 0,
|
|
||||||
ConsentNeeded: false,
|
|
||||||
TrackedSettings: [],
|
|
||||||
Nonce: nonce
|
Nonce: nonce
|
||||||
});
|
});
|
||||||
logger.debug("created new account");
|
logger.debug("created new account");
|
||||||
@ -39,14 +32,9 @@ const loginController: RequestHandler = async (request, response) => {
|
|||||||
const { email, password, ...databaseAccount } = newAccount;
|
const { email, password, ...databaseAccount } = newAccount;
|
||||||
const newLoginResponse: ILoginResponse = {
|
const newLoginResponse: ILoginResponse = {
|
||||||
...databaseAccount,
|
...databaseAccount,
|
||||||
Groups: groups,
|
|
||||||
platformCDNs: platformCDNs,
|
|
||||||
NRS: [config.myAddress],
|
|
||||||
DTLS: DTLS,
|
|
||||||
IRC: config.myIrcAddresses ?? [config.myAddress],
|
|
||||||
HUB: HUB,
|
|
||||||
BuildLabel: buildConfig.buildLabel,
|
BuildLabel: buildConfig.buildLabel,
|
||||||
MatchmakingBuildId: buildConfig.matchmakingBuildId
|
NatHash: "0",
|
||||||
|
SteamId: "0"
|
||||||
};
|
};
|
||||||
|
|
||||||
response.json(newLoginResponse);
|
response.json(newLoginResponse);
|
||||||
@ -67,22 +55,15 @@ const loginController: RequestHandler = async (request, response) => {
|
|||||||
if (account.Nonce == 0 || loginRequest.ClientType != "webui") {
|
if (account.Nonce == 0 || loginRequest.ClientType != "webui") {
|
||||||
account.Nonce = nonce;
|
account.Nonce = nonce;
|
||||||
}
|
}
|
||||||
if (loginRequest.ClientType != "webui") {
|
|
||||||
account.CountryCode = loginRequest.lang.toUpperCase();
|
|
||||||
}
|
|
||||||
await account.save();
|
await account.save();
|
||||||
|
|
||||||
const { email, password, ...databaseAccount } = account.toJSON();
|
const { email, password, ...databaseAccount } = account.toJSON();
|
||||||
const newLoginResponse: ILoginResponse = {
|
const newLoginResponse: ILoginResponse = {
|
||||||
...databaseAccount,
|
...databaseAccount,
|
||||||
Groups: groups,
|
|
||||||
platformCDNs: platformCDNs,
|
|
||||||
NRS: [config.myAddress],
|
|
||||||
DTLS: DTLS,
|
|
||||||
IRC: config.myIrcAddresses ?? [config.myAddress],
|
|
||||||
HUB: HUB,
|
|
||||||
BuildLabel: buildConfig.buildLabel,
|
BuildLabel: buildConfig.buildLabel,
|
||||||
MatchmakingBuildId: buildConfig.matchmakingBuildId
|
NatHash: "0",
|
||||||
|
SteamId: "0"
|
||||||
};
|
};
|
||||||
|
|
||||||
response.json(newLoginResponse);
|
response.json(newLoginResponse);
|
||||||
|
@ -57,8 +57,10 @@ const missionInventoryUpdateController: RequestHandler = async (req, res): Promi
|
|||||||
|
|
||||||
const { InventoryChanges, MissionRewards } = getRewards(lootInventory);
|
const { InventoryChanges, MissionRewards } = getRewards(lootInventory);
|
||||||
|
|
||||||
const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits, FusionPoints } =
|
const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits } = combineRewardAndLootInventory(
|
||||||
combineRewardAndLootInventory(InventoryChanges, lootInventory);
|
InventoryChanges,
|
||||||
|
lootInventory
|
||||||
|
);
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
const InventoryJson = JSON.stringify(await missionInventoryUpdate(combinedInventoryChanges, accountId));
|
const InventoryJson = JSON.stringify(await missionInventoryUpdate(combinedInventoryChanges, accountId));
|
||||||
@ -68,8 +70,7 @@ const missionInventoryUpdateController: RequestHandler = async (req, res): Promi
|
|||||||
InventoryChanges,
|
InventoryChanges,
|
||||||
TotalCredits,
|
TotalCredits,
|
||||||
CreditsBonus,
|
CreditsBonus,
|
||||||
MissionCredits,
|
MissionCredits
|
||||||
FusionPoints
|
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("Error parsing JSON data:", err);
|
console.error("Error parsing JSON data:", err);
|
||||||
|
@ -17,7 +17,7 @@ export const startDojoRecipeController: RequestHandler = async (req, res) => {
|
|||||||
_id: new Types.ObjectId(),
|
_id: new Types.ObjectId(),
|
||||||
pf: request.PlacedComponent.pf,
|
pf: request.PlacedComponent.pf,
|
||||||
ppf: request.PlacedComponent.ppf,
|
ppf: request.PlacedComponent.ppf,
|
||||||
pi: new Types.ObjectId(request.PlacedComponent.pi!.$oid),
|
pi: new Types.ObjectId(request.PlacedComponent.pi!.$id),
|
||||||
op: request.PlacedComponent.op,
|
op: request.PlacedComponent.op,
|
||||||
pp: request.PlacedComponent.pp,
|
pp: request.PlacedComponent.pp,
|
||||||
CompletionTime: new Date(Date.now()) // TOOD: Omit this field & handle the "Collecting Materials" state.
|
CompletionTime: new Date(Date.now()) // TOOD: Omit this field & handle the "Collecting Materials" state.
|
||||||
|
@ -2,21 +2,18 @@ import { RequestHandler } from "express";
|
|||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||||
import { getInventory } from "@/src/services/inventoryService";
|
import { getInventory } from "@/src/services/inventoryService";
|
||||||
import { ITaunt } from "@/src/types/inventoryTypes/inventoryTypes";
|
import { ITaunt } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||||
import { logger } from "@/src/utils/logger";
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
export const tauntHistoryController: RequestHandler = async (req, res) => {
|
export const tauntHistoryController: RequestHandler = async (req, res) => {
|
||||||
const accountId = await getAccountIdForRequest(req);
|
const accountId = await getAccountIdForRequest(req);
|
||||||
const inventory = await getInventory(accountId);
|
const inventory = await getInventory(accountId);
|
||||||
const clientTaunt = JSON.parse(String(req.body)) as ITaunt;
|
if (req.body !== undefined) {
|
||||||
logger.debug(`updating taunt ${clientTaunt.node} to state ${clientTaunt.state}`);
|
const clientTaunt = JSON.parse(String(req.body)) as ITaunt;
|
||||||
inventory.TauntHistory ??= [];
|
inventory.TauntHistory ??= [];
|
||||||
const taunt = inventory.TauntHistory.find(x => x.node == clientTaunt.node);
|
|
||||||
if (taunt) {
|
|
||||||
taunt.state = clientTaunt.state;
|
|
||||||
} else {
|
|
||||||
inventory.TauntHistory.push(clientTaunt);
|
inventory.TauntHistory.push(clientTaunt);
|
||||||
|
await inventory.save();
|
||||||
|
res.end();
|
||||||
|
} else {
|
||||||
|
res.json({});
|
||||||
}
|
}
|
||||||
await inventory.save();
|
|
||||||
res.end();
|
|
||||||
};
|
};
|
||||||
|
@ -1,14 +1,9 @@
|
|||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||||
import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
|
||||||
import { getInventory } from "@/src/services/inventoryService";
|
import { getInventory } from "@/src/services/inventoryService";
|
||||||
import { IMongoDate } from "@/src/types/commonTypes";
|
import { IMongoDate } from "@/src/types/commonTypes";
|
||||||
import { RequestHandler } from "express";
|
import { RequestHandler } from "express";
|
||||||
import { unixTimesInMs } from "@/src/constants/timeConstants";
|
import { unixTimesInMs } from "@/src/constants/timeConstants";
|
||||||
|
|
||||||
interface ITrainingResultsRequest {
|
|
||||||
numLevelsGained: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ITrainingResultsResponse {
|
interface ITrainingResultsResponse {
|
||||||
NewTrainingDate: IMongoDate;
|
NewTrainingDate: IMongoDate;
|
||||||
NewLevel: number;
|
NewLevel: number;
|
||||||
@ -18,14 +13,12 @@ interface ITrainingResultsResponse {
|
|||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
const trainingResultController: RequestHandler = async (req, res): Promise<void> => {
|
const trainingResultController: RequestHandler = async (req, res): Promise<void> => {
|
||||||
const accountId = await getAccountIdForRequest(req);
|
const accountId = await getAccountIdForRequest(req);
|
||||||
|
const numLevelsGained = parseInt(req.query.numLevelsGained as string);
|
||||||
const trainingResults = getJSONfromString(String(req.body)) as ITrainingResultsRequest;
|
|
||||||
|
|
||||||
const inventory = await getInventory(accountId);
|
const inventory = await getInventory(accountId);
|
||||||
|
console.log(req.query);
|
||||||
inventory.TrainingDate = new Date(Date.now() + unixTimesInMs.day);
|
inventory.TrainingDate = new Date(Date.now() + unixTimesInMs.day);
|
||||||
|
|
||||||
if (trainingResults.numLevelsGained == 1) {
|
if (numLevelsGained == 1) {
|
||||||
inventory.PlayerLevel += 1;
|
inventory.PlayerLevel += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,7 +28,7 @@ const trainingResultController: RequestHandler = async (req, res): Promise<void>
|
|||||||
NewTrainingDate: {
|
NewTrainingDate: {
|
||||||
$date: { $numberLong: changedinventory.TrainingDate.getTime().toString() }
|
$date: { $numberLong: changedinventory.TrainingDate.getTime().toString() }
|
||||||
},
|
},
|
||||||
NewLevel: trainingResults.numLevelsGained == 1 ? changedinventory.PlayerLevel : inventory.PlayerLevel,
|
NewLevel: numLevelsGained == 1 ? changedinventory.PlayerLevel : inventory.PlayerLevel,
|
||||||
InventoryChanges: []
|
InventoryChanges: []
|
||||||
} satisfies ITrainingResultsResponse);
|
} satisfies ITrainingResultsResponse);
|
||||||
};
|
};
|
||||||
|
156
src/controllers/api/updateInventoryController.ts
Normal file
156
src/controllers/api/updateInventoryController.ts
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||||
|
import { RequestHandler } from "express";
|
||||||
|
import { missionInventoryUpdate } from "@/src/services/inventoryService";
|
||||||
|
import { combineRewardAndLootInventory } from "@/src/services/missionInventoryUpdateService";
|
||||||
|
import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
||||||
|
import { IMissionInventoryUpdateRequest } from "@/src/types/requestTypes";
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
|
export const updateInventoryController: RequestHandler = async (req, res) => {
|
||||||
|
const accountId = await getAccountIdForRequest(req);
|
||||||
|
const lootInventory = getJSONfromString(req.body as string) as IMissionInventoryUpdateRequest;
|
||||||
|
const { combinedInventoryChanges, TotalCredits, CreditsBonus, MissionCredits } = combineRewardAndLootInventory(
|
||||||
|
lootInventory,
|
||||||
|
lootInventory
|
||||||
|
);
|
||||||
|
|
||||||
|
await missionInventoryUpdate(combinedInventoryChanges, accountId);
|
||||||
|
|
||||||
|
res.json({
|
||||||
|
// InventoryJson, // this part will reset game data and missions will be locked
|
||||||
|
combinedInventoryChanges,
|
||||||
|
TotalCredits,
|
||||||
|
CreditsBonus,
|
||||||
|
MissionCredits
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
"LongGuns" : [
|
||||||
|
{
|
||||||
|
"ItemType" : "",
|
||||||
|
"ItemId" : {
|
||||||
|
"$id" : ""
|
||||||
|
},
|
||||||
|
"XP" : 882,
|
||||||
|
"UpgradeVer" : 0,
|
||||||
|
"UnlockLevel" : 0,
|
||||||
|
"ExtraCapacity" : 4,
|
||||||
|
"ExtraRemaining" : 4
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Pistols" : [
|
||||||
|
{
|
||||||
|
"ItemType" : "",
|
||||||
|
"ItemId" : {
|
||||||
|
"$id" : ""
|
||||||
|
},
|
||||||
|
"XP" : 0,
|
||||||
|
"UpgradeVer" : 0,
|
||||||
|
"UnlockLevel" : 0,
|
||||||
|
"ExtraCapacity" : 4,
|
||||||
|
"ExtraRemaining" : 4
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Suits" : [
|
||||||
|
{
|
||||||
|
"ItemType" : "",
|
||||||
|
"ItemId" : {
|
||||||
|
"$id" : ""
|
||||||
|
},
|
||||||
|
"XP" : 982,
|
||||||
|
"UpgradeVer" : 101,
|
||||||
|
"UnlockLevel" : 0,
|
||||||
|
"ExtraCapacity" : 4,
|
||||||
|
"ExtraRemaining" : 4
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Melee" : [
|
||||||
|
{
|
||||||
|
"ItemType" : "",
|
||||||
|
"ItemId" : {
|
||||||
|
"$id" : ""
|
||||||
|
},
|
||||||
|
"XP" : 0,
|
||||||
|
"UpgradeVer" : 0,
|
||||||
|
"UnlockLevel" : 0,
|
||||||
|
"ExtraCapacity" : 4,
|
||||||
|
"ExtraRemaining" : 4
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"WeaponSkins" : [],
|
||||||
|
"Upgrades" : [],
|
||||||
|
"Boosters" : [],
|
||||||
|
"Robotics" : [],
|
||||||
|
"Consumables" : [],
|
||||||
|
"FlavourItems" : [],
|
||||||
|
"MiscItems" : [],
|
||||||
|
"Cards" : [],
|
||||||
|
"Recipes" : [],
|
||||||
|
"XPInfo" : [],
|
||||||
|
"Sentinels" : [],
|
||||||
|
"SentinelWeapons" : [],
|
||||||
|
"SuitBin" : {
|
||||||
|
"Slots" : 0,
|
||||||
|
"Extra" : 0
|
||||||
|
},
|
||||||
|
"WeaponBin" : {
|
||||||
|
"Slots" : 0,
|
||||||
|
"Extra" : 0
|
||||||
|
},
|
||||||
|
"MiscBin" : {
|
||||||
|
"Slots" : 0,
|
||||||
|
"Extra" : 0
|
||||||
|
},
|
||||||
|
"SentinelBin" : {
|
||||||
|
"Slots" : 0,
|
||||||
|
"Extra" : 0
|
||||||
|
},
|
||||||
|
"RegularCredits" : 1304,
|
||||||
|
"PremiumCredits" : 0,
|
||||||
|
"PlayerXP" : 784,
|
||||||
|
"AdditionalPlayerXP" : 0,
|
||||||
|
"Rating" : 15,
|
||||||
|
"PlayerLevel" : 0,
|
||||||
|
"TrainingDate" : {
|
||||||
|
"sec" : "",
|
||||||
|
"usec" : ""
|
||||||
|
},
|
||||||
|
"AliveTime" : 193.78572,
|
||||||
|
"Missions" : {
|
||||||
|
"Tag" : "SolNode103",
|
||||||
|
"Completes" : 1,
|
||||||
|
"BestRating" : 0.2
|
||||||
|
},
|
||||||
|
"AssignedMissions" : [],
|
||||||
|
"CompletedAlerts" : [],
|
||||||
|
"DeathMarks" : [],
|
||||||
|
"MissionReport" : {
|
||||||
|
"HostId" : "",
|
||||||
|
"MishStartTime" : "1725359860",
|
||||||
|
"MishName" : "SolNode103",
|
||||||
|
"PlayerReport" : {
|
||||||
|
"ReporterId" : "",
|
||||||
|
"FullReport" : true,
|
||||||
|
"PlayerMishInfos" : [
|
||||||
|
{
|
||||||
|
"Pid" : "",
|
||||||
|
"Creds" : 304,
|
||||||
|
"CredBonus" : 1000,
|
||||||
|
"Xp" : 784,
|
||||||
|
"XpBonus" : 0,
|
||||||
|
"SuitXpBonus" : 590,
|
||||||
|
"PistolXpBonus" : 0,
|
||||||
|
"RfileXpBonus" : 490,
|
||||||
|
"MeleeXpBonus" : 0,
|
||||||
|
"SentnlXPBonus" : 0,
|
||||||
|
"SentnlWepXpBonus" : 0,
|
||||||
|
"Rating" : 0.2,
|
||||||
|
"Upgrades" : []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
@ -1,149 +1,34 @@
|
|||||||
import { RequestHandler } from "express";
|
import { RequestHandler } from "express";
|
||||||
import { IUpgradesRequest } from "@/src/types/requestTypes";
|
import { IUpgradesRequest } from "@/src/types/requestTypes";
|
||||||
import {
|
|
||||||
ArtifactPolarity,
|
|
||||||
IEquipmentDatabase,
|
|
||||||
EquipmentFeatures
|
|
||||||
} from "@/src/types/inventoryTypes/commonInventoryTypes";
|
|
||||||
import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
|
|
||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||||
import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService";
|
import { getInventory } from "@/src/services/inventoryService";
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
||||||
export const upgradesController: RequestHandler = async (req, res) => {
|
export const upgradesController: RequestHandler = async (req, res) => {
|
||||||
const accountId = await getAccountIdForRequest(req);
|
const accountId = await getAccountIdForRequest(req);
|
||||||
const payload = JSON.parse(String(req.body)) as IUpgradesRequest;
|
const payload = JSON.parse(String(req.body)) as IUpgradesRequest;
|
||||||
const inventory = await getInventory(accountId);
|
const inventory = await getInventory(accountId);
|
||||||
const InventoryChanges: any = {};
|
console.log(req.body);
|
||||||
for (const operation of payload.Operations) {
|
for (const item of payload.UpgradesToAttach) {
|
||||||
if (
|
for (const upgrade of inventory.Upgrades) {
|
||||||
operation.UpgradeRequirement == "/Lotus/Types/Items/MiscItems/ModSlotUnlocker" ||
|
if (upgrade._id?.toString() == item.ItemId.$id) {
|
||||||
operation.UpgradeRequirement == "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker"
|
upgrade.UpgradeFingerprint = item.UpgradeFingerprint;
|
||||||
) {
|
upgrade.Slot = item.Slot;
|
||||||
await updateCurrency(10, true, accountId);
|
upgrade.ParentId = payload.Weapon.ItemId;
|
||||||
} else {
|
}
|
||||||
addMiscItems(inventory, [
|
|
||||||
{
|
|
||||||
ItemType: operation.UpgradeRequirement,
|
|
||||||
ItemCount: -1
|
|
||||||
} satisfies IMiscItem
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (operation.UpgradeRequirement) {
|
|
||||||
case "/Lotus/Types/Items/MiscItems/OrokinReactor":
|
|
||||||
case "/Lotus/Types/Items/MiscItems/OrokinCatalyst":
|
|
||||||
for (const item of inventory[payload.ItemCategory]) {
|
|
||||||
if (item._id.toString() == payload.ItemId.$oid) {
|
|
||||||
item.Features ??= 0;
|
|
||||||
item.Features |= EquipmentFeatures.DOUBLE_CAPACITY;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "/Lotus/Types/Items/MiscItems/UtilityUnlocker":
|
|
||||||
case "/Lotus/Types/Items/MiscItems/WeaponUtilityUnlocker":
|
|
||||||
for (const item of inventory[payload.ItemCategory]) {
|
|
||||||
if (item._id.toString() == payload.ItemId.$oid) {
|
|
||||||
item.Features ??= 0;
|
|
||||||
item.Features |= EquipmentFeatures.UTILITY_SLOT;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "/Lotus/Types/Items/MiscItems/HeavyWeaponCatalyst":
|
|
||||||
console.assert(payload.ItemCategory == "SpaceGuns");
|
|
||||||
for (const item of inventory[payload.ItemCategory]) {
|
|
||||||
if (item._id.toString() == payload.ItemId.$oid) {
|
|
||||||
item.Features ??= 0;
|
|
||||||
item.Features |= EquipmentFeatures.GRAVIMAG_INSTALLED;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "/Lotus/Types/Items/MiscItems/WeaponPrimaryArcaneUnlocker":
|
|
||||||
case "/Lotus/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker":
|
|
||||||
case "/Lotus/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker":
|
|
||||||
case "/Lotus/Types/Items/MiscItems/WeaponAmpArcaneUnlocker":
|
|
||||||
for (const item of inventory[payload.ItemCategory]) {
|
|
||||||
if (item._id.toString() == payload.ItemId.$oid) {
|
|
||||||
item.Features ??= 0;
|
|
||||||
item.Features |= EquipmentFeatures.ARCANE_SLOT;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "/Lotus/Types/Items/MiscItems/Forma":
|
|
||||||
case "/Lotus/Types/Items/MiscItems/FormaUmbra":
|
|
||||||
case "/Lotus/Types/Items/MiscItems/FormaAura":
|
|
||||||
case "/Lotus/Types/Items/MiscItems/FormaStance":
|
|
||||||
for (const item of inventory[payload.ItemCategory]) {
|
|
||||||
if (item._id.toString() == payload.ItemId.$oid) {
|
|
||||||
item.XP = 0;
|
|
||||||
setSlotPolarity(item, operation.PolarizeSlot, operation.PolarizeValue);
|
|
||||||
item.Polarized ??= 0;
|
|
||||||
item.Polarized += 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "/Lotus/Types/Items/MiscItems/ModSlotUnlocker":
|
|
||||||
for (const item of inventory[payload.ItemCategory]) {
|
|
||||||
if (item._id.toString() == payload.ItemId.$oid) {
|
|
||||||
item.ModSlotPurchases ??= 0;
|
|
||||||
item.ModSlotPurchases += 1;
|
|
||||||
InventoryChanges[payload.ItemCategory] = {
|
|
||||||
ItemId: {
|
|
||||||
$oid: payload.ItemId.$oid
|
|
||||||
},
|
|
||||||
ModSlotPurchases: item.ModSlotPurchases
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker":
|
|
||||||
for (const item of inventory[payload.ItemCategory]) {
|
|
||||||
if (item._id.toString() == payload.ItemId.$oid) {
|
|
||||||
item.CustomizationSlotPurchases ??= 0;
|
|
||||||
item.CustomizationSlotPurchases += 1;
|
|
||||||
InventoryChanges[payload.ItemCategory] = {
|
|
||||||
ItemId: {
|
|
||||||
$oid: payload.ItemId.$oid
|
|
||||||
},
|
|
||||||
CustomizationSlotPurchases: item.CustomizationSlotPurchases
|
|
||||||
};
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "":
|
|
||||||
console.assert(operation.OperationType == "UOT_SWAP_POLARITY");
|
|
||||||
for (const item of inventory[payload.ItemCategory]) {
|
|
||||||
if (item._id.toString() == payload.ItemId.$oid) {
|
|
||||||
for (let i = 0; i != operation.PolarityRemap.length; ++i) {
|
|
||||||
if (operation.PolarityRemap[i].Slot != i) {
|
|
||||||
setSlotPolarity(item, i, operation.PolarityRemap[i].Value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new Error("Unsupported upgrade: " + operation.UpgradeRequirement);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const item of payload.UpgradesToDetach) {
|
||||||
|
for (const upgrade of inventory.Upgrades) {
|
||||||
|
if (upgrade._id?.toString() == item.ItemId.$id) {
|
||||||
|
upgrade.UpgradeFingerprint = undefined;
|
||||||
|
upgrade.Slot = undefined;
|
||||||
|
upgrade.ParentId = undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
await inventory.save();
|
await inventory.save();
|
||||||
res.json({ InventoryChanges });
|
res.json({});
|
||||||
};
|
|
||||||
|
|
||||||
const setSlotPolarity = (item: IEquipmentDatabase, slot: number, polarity: ArtifactPolarity): void => {
|
|
||||||
item.Polarity ??= [];
|
|
||||||
const entry = item.Polarity.find(entry => entry.Slot == slot);
|
|
||||||
if (entry) {
|
|
||||||
entry.Value = polarity;
|
|
||||||
} else {
|
|
||||||
item.Polarity.push({ Slot: slot, Value: polarity });
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
@ -43,11 +43,6 @@ const toAccountCreation = (accountCreation: unknown): IAccountCreation => {
|
|||||||
const toDatabaseAccount = (createAccount: IAccountCreation): IDatabaseAccount => {
|
const toDatabaseAccount = (createAccount: IAccountCreation): IDatabaseAccount => {
|
||||||
return {
|
return {
|
||||||
...createAccount,
|
...createAccount,
|
||||||
ClientType: "",
|
|
||||||
ConsentNeeded: false,
|
|
||||||
CrossPlatformAllowed: true,
|
|
||||||
ForceLogoutVersion: 0,
|
|
||||||
TrackedSettings: [],
|
|
||||||
Nonce: 0
|
Nonce: 0
|
||||||
} satisfies IDatabaseAccount;
|
} satisfies IDatabaseAccount;
|
||||||
};
|
};
|
||||||
|
@ -2,7 +2,7 @@ import { IOid } from "@/src/types/commonTypes";
|
|||||||
import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes/inventoryTypes";
|
import { IInventoryDatabase, IInventoryResponse } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||||
import { Types } from "mongoose";
|
import { Types } from "mongoose";
|
||||||
|
|
||||||
//TODO: this needs to be addressed: a schema's toJSON is responsible for changing Oid and Date to their corresponding Response versions __id to "ItemId":{"$oid":"6450f720bc562ebf030222d4"}, and a Date to "date":{"$date":{"$numberLong":"unix timestamp"})
|
//TODO: this needs to be addressed: a schema's toJSON is responsible for changing Oid and Date to their corresponding Response versions __id to "ItemId":{"$id":"6450f720bc562ebf030222d4"}, and a Date to "date":{"$date":{"$numberLong":"unix timestamp"})
|
||||||
export const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => {
|
export const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInventoryResponse => {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
const { accountOwnerId, ...inventoryResponse } = inventoryDatabase;
|
const { accountOwnerId, ...inventoryResponse } = inventoryDatabase;
|
||||||
@ -10,7 +10,7 @@ export const toInventoryResponse = (inventoryDatabase: IInventoryDatabase): IInv
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const toOid = (objectId: Types.ObjectId) => {
|
export const toOid = (objectId: Types.ObjectId) => {
|
||||||
return { $oid: objectId.toString() } satisfies IOid;
|
return { $id: objectId.toString() } satisfies IOid;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const toMongoDate = (date: Date) => {
|
export const toMongoDate = (date: Date) => {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { ILoginRequest } from "@/src/types/loginTypes";
|
import { ILoginRequest } from "@/src/types/loginTypes";
|
||||||
import { parseEmail, parseNumber, parseString } from "./general";
|
import { parseEmail, parseString } from "./general";
|
||||||
|
|
||||||
const toLoginRequest = (loginRequest: unknown): ILoginRequest => {
|
const toLoginRequest = (loginRequest: unknown): ILoginRequest => {
|
||||||
if (!loginRequest || typeof loginRequest !== "object") {
|
if (!loginRequest || typeof loginRequest !== "object") {
|
||||||
@ -7,25 +7,10 @@ const toLoginRequest = (loginRequest: unknown): ILoginRequest => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: function that checks whether every field of interface is in object
|
// TODO: function that checks whether every field of interface is in object
|
||||||
if (
|
if ("email" in loginRequest && "password" in loginRequest) {
|
||||||
"email" in loginRequest &&
|
|
||||||
"password" in loginRequest &&
|
|
||||||
"time" in loginRequest &&
|
|
||||||
"s" in loginRequest &&
|
|
||||||
"lang" in loginRequest &&
|
|
||||||
"date" in loginRequest &&
|
|
||||||
"ClientType" in loginRequest &&
|
|
||||||
"PS" in loginRequest
|
|
||||||
) {
|
|
||||||
return {
|
return {
|
||||||
email: parseEmail(loginRequest.email),
|
email: parseEmail(loginRequest.email),
|
||||||
password: parseString(loginRequest.password),
|
password: parseString(loginRequest.password)
|
||||||
time: parseNumber(loginRequest.time),
|
|
||||||
s: parseString(loginRequest.s),
|
|
||||||
lang: parseString(loginRequest.lang),
|
|
||||||
date: parseNumber(loginRequest.date),
|
|
||||||
ClientType: parseString(loginRequest.ClientType),
|
|
||||||
PS: parseString(loginRequest.PS)
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,30 +13,19 @@ import {
|
|||||||
IPendingRecipe as IPendingRecipeDatabase,
|
IPendingRecipe as IPendingRecipeDatabase,
|
||||||
IPendingRecipeResponse,
|
IPendingRecipeResponse,
|
||||||
ITypeCount,
|
ITypeCount,
|
||||||
IFocusXP,
|
|
||||||
IFocusUpgrades,
|
|
||||||
ITypeXPItem,
|
ITypeXPItem,
|
||||||
IChallengeProgress,
|
IChallengeProgress,
|
||||||
IStepSequencer,
|
IStepSequencer,
|
||||||
IAffiliation,
|
|
||||||
INotePacks,
|
INotePacks,
|
||||||
ICompletedJobChain,
|
|
||||||
ISeasonChallenge,
|
|
||||||
IPlayerSkills,
|
IPlayerSkills,
|
||||||
ISettings,
|
ISettings,
|
||||||
IInfestedFoundry,
|
|
||||||
IConsumedSuit,
|
|
||||||
IQuestProgress,
|
IQuestProgress,
|
||||||
IQuestKeyDatabase,
|
IQuestKeyDatabase,
|
||||||
IQuestKeyResponse,
|
IQuestKeyResponse,
|
||||||
IFusionTreasure,
|
|
||||||
ISpectreLoadout,
|
|
||||||
IWeaponSkinDatabase,
|
IWeaponSkinDatabase,
|
||||||
ITaunt,
|
|
||||||
IPeriodicMissionCompletionDatabase,
|
IPeriodicMissionCompletionDatabase,
|
||||||
IPeriodicMissionCompletionResponse,
|
IPeriodicMissionCompletionResponse,
|
||||||
ILoreFragmentScan,
|
ITaunt
|
||||||
IEvolutionProgress
|
|
||||||
} from "../../types/inventoryTypes/inventoryTypes";
|
} from "../../types/inventoryTypes/inventoryTypes";
|
||||||
import { IOid } from "../../types/commonTypes";
|
import { IOid } from "../../types/commonTypes";
|
||||||
import {
|
import {
|
||||||
@ -53,26 +42,6 @@ import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers";
|
|||||||
|
|
||||||
const typeCountSchema = new Schema<ITypeCount>({ ItemType: String, ItemCount: Number }, { _id: false });
|
const typeCountSchema = new Schema<ITypeCount>({ ItemType: String, ItemCount: Number }, { _id: false });
|
||||||
|
|
||||||
const focusXPSchema = new Schema<IFocusXP>(
|
|
||||||
{
|
|
||||||
AP_POWER: Number,
|
|
||||||
AP_TACTIC: Number,
|
|
||||||
AP_DEFENSE: Number,
|
|
||||||
AP_ATTACK: Number,
|
|
||||||
AP_WARD: Number
|
|
||||||
},
|
|
||||||
{ _id: false }
|
|
||||||
);
|
|
||||||
|
|
||||||
const focusUpgradesSchema = new Schema<IFocusUpgrades>(
|
|
||||||
{
|
|
||||||
ItemType: String,
|
|
||||||
Level: Number,
|
|
||||||
IsUniversal: Boolean
|
|
||||||
},
|
|
||||||
{ _id: false }
|
|
||||||
);
|
|
||||||
|
|
||||||
const pendingRecipeSchema = new Schema<IPendingRecipeDatabase>(
|
const pendingRecipeSchema = new Schema<IPendingRecipeDatabase>(
|
||||||
{
|
{
|
||||||
ItemType: String,
|
ItemType: String,
|
||||||
@ -82,7 +51,7 @@ const pendingRecipeSchema = new Schema<IPendingRecipeDatabase>(
|
|||||||
);
|
);
|
||||||
|
|
||||||
pendingRecipeSchema.virtual("ItemId").get(function () {
|
pendingRecipeSchema.virtual("ItemId").get(function () {
|
||||||
return { $oid: this._id.toString() };
|
return { $id: this._id.toString() };
|
||||||
});
|
});
|
||||||
|
|
||||||
pendingRecipeSchema.set("toJSON", {
|
pendingRecipeSchema.set("toJSON", {
|
||||||
@ -140,7 +109,7 @@ const operatorConfigSchema = new Schema<IOperatorConfigDatabase>(
|
|||||||
);
|
);
|
||||||
|
|
||||||
operatorConfigSchema.virtual("ItemId").get(function () {
|
operatorConfigSchema.virtual("ItemId").get(function () {
|
||||||
return { $oid: this._id.toString() } satisfies IOid;
|
return { $id: this._id.toString() } satisfies IOid;
|
||||||
});
|
});
|
||||||
|
|
||||||
operatorConfigSchema.set("toJSON", {
|
operatorConfigSchema.set("toJSON", {
|
||||||
@ -229,7 +198,7 @@ const EquipmentSchema = new Schema<IEquipmentDatabase>(
|
|||||||
);
|
);
|
||||||
|
|
||||||
EquipmentSchema.virtual("ItemId").get(function () {
|
EquipmentSchema.virtual("ItemId").get(function () {
|
||||||
return { $oid: this._id.toString() } satisfies IOid;
|
return { $id: this._id.toString() } satisfies IOid;
|
||||||
});
|
});
|
||||||
|
|
||||||
EquipmentSchema.set("toJSON", {
|
EquipmentSchema.set("toJSON", {
|
||||||
@ -257,7 +226,7 @@ const RawUpgrades = new Schema<IRawUpgrade>(
|
|||||||
);
|
);
|
||||||
|
|
||||||
RawUpgrades.virtual("LastAdded").get(function () {
|
RawUpgrades.virtual("LastAdded").get(function () {
|
||||||
return { $oid: this._id.toString() } satisfies IOid;
|
return { $id: this._id.toString() } satisfies IOid;
|
||||||
});
|
});
|
||||||
|
|
||||||
RawUpgrades.set("toJSON", {
|
RawUpgrades.set("toJSON", {
|
||||||
@ -269,10 +238,14 @@ RawUpgrades.set("toJSON", {
|
|||||||
});
|
});
|
||||||
|
|
||||||
//TODO: find out what this is
|
//TODO: find out what this is
|
||||||
const upgradesSchema = new Schema(
|
const upgradesSchema = new Schema<ICrewShipSalvagedWeaponSkin>(
|
||||||
{
|
{
|
||||||
UpgradeFingerprint: String,
|
UpgradeFingerprint: String,
|
||||||
ItemType: String
|
ItemType: String,
|
||||||
|
Slot: Number,
|
||||||
|
ParentId: {
|
||||||
|
$id: String
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{ id: false }
|
{ id: false }
|
||||||
);
|
);
|
||||||
@ -311,12 +284,12 @@ FlavourItemSchema.set("toJSON", {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// "Mailbox": { "LastInboxId": { "$oid": "123456780000000000000000" } }
|
// "Mailbox": { "LastInboxId": { "$id": "123456780000000000000000" } }
|
||||||
const MailboxSchema = new Schema<IMailbox>(
|
const MailboxSchema = new Schema<IMailbox>(
|
||||||
{
|
{
|
||||||
LastInboxId: {
|
LastInboxId: {
|
||||||
type: Schema.Types.ObjectId,
|
type: Schema.Types.ObjectId,
|
||||||
set: (v: IMailbox["LastInboxId"]) => v.$oid.toString()
|
set: (v: IMailbox["LastInboxId"]) => v.$id.toString()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ id: false, _id: false }
|
{ id: false, _id: false }
|
||||||
@ -383,7 +356,7 @@ const StepSequencersSchema = new Schema<IStepSequencer>(
|
|||||||
);
|
);
|
||||||
|
|
||||||
StepSequencersSchema.virtual("ItemId").get(function () {
|
StepSequencersSchema.virtual("ItemId").get(function () {
|
||||||
return { $oid: this._id.toString() } satisfies IOid;
|
return { $id: this._id.toString() } satisfies IOid;
|
||||||
});
|
});
|
||||||
|
|
||||||
StepSequencersSchema.set("toJSON", {
|
StepSequencersSchema.set("toJSON", {
|
||||||
@ -394,34 +367,6 @@ StepSequencersSchema.set("toJSON", {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const affiliationsSchema = new Schema<IAffiliation>(
|
|
||||||
{
|
|
||||||
Initiated: Boolean,
|
|
||||||
Standing: Number,
|
|
||||||
Title: Number,
|
|
||||||
FreeFavorsEarned: { type: [Number], default: undefined },
|
|
||||||
FreeFavorsUsed: { type: [Number], default: undefined },
|
|
||||||
Tag: String
|
|
||||||
},
|
|
||||||
{ _id: false }
|
|
||||||
);
|
|
||||||
|
|
||||||
const completedJobChainsSchema = new Schema<ICompletedJobChain>(
|
|
||||||
{
|
|
||||||
LocationTag: String,
|
|
||||||
Jobs: [String]
|
|
||||||
},
|
|
||||||
{ _id: false }
|
|
||||||
);
|
|
||||||
|
|
||||||
const seasonChallengeHistorySchema = new Schema<ISeasonChallenge>(
|
|
||||||
{
|
|
||||||
challenge: String,
|
|
||||||
id: String
|
|
||||||
},
|
|
||||||
{ _id: false }
|
|
||||||
);
|
|
||||||
|
|
||||||
//TODO: check whether this is complete
|
//TODO: check whether this is complete
|
||||||
const playerSkillsSchema = new Schema<IPlayerSkills>(
|
const playerSkillsSchema = new Schema<IPlayerSkills>(
|
||||||
{
|
{
|
||||||
@ -449,25 +394,6 @@ const settingsSchema = new Schema<ISettings>({
|
|||||||
TradingRulesConfirmed: Boolean
|
TradingRulesConfirmed: Boolean
|
||||||
});
|
});
|
||||||
|
|
||||||
const consumedSchuitsSchema = new Schema<IConsumedSuit>({
|
|
||||||
s: String,
|
|
||||||
c: colorSchema
|
|
||||||
});
|
|
||||||
|
|
||||||
const infestedFoundrySchema = new Schema<IInfestedFoundry>(
|
|
||||||
{
|
|
||||||
Name: String,
|
|
||||||
Resources: { type: [typeCountSchema], default: undefined },
|
|
||||||
Slots: Number,
|
|
||||||
XP: Number,
|
|
||||||
ConsumedSuits: { type: [consumedSchuitsSchema], default: undefined },
|
|
||||||
InvigorationIndex: Number,
|
|
||||||
InvigorationSuitOfferings: { type: [String], default: undefined },
|
|
||||||
InvigorationsApplied: Number
|
|
||||||
},
|
|
||||||
{ _id: false }
|
|
||||||
);
|
|
||||||
|
|
||||||
const questProgressSchema = new Schema<IQuestProgress>({
|
const questProgressSchema = new Schema<IQuestProgress>({
|
||||||
c: Number,
|
c: Number,
|
||||||
i: Boolean,
|
i: Boolean,
|
||||||
@ -499,21 +425,6 @@ questKeysSchema.set("toJSON", {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const fusionTreasuresSchema = new Schema<IFusionTreasure>().add(typeCountSchema).add({ Sockets: Number });
|
|
||||||
|
|
||||||
const spectreLoadoutsSchema = new Schema<ISpectreLoadout>(
|
|
||||||
{
|
|
||||||
LongGuns: String,
|
|
||||||
Melee: String,
|
|
||||||
Pistols: String,
|
|
||||||
PistolsFeatures: Number,
|
|
||||||
PistolsModularParts: [String],
|
|
||||||
Suits: String,
|
|
||||||
ItemType: String
|
|
||||||
},
|
|
||||||
{ _id: false }
|
|
||||||
);
|
|
||||||
|
|
||||||
const weaponSkinsSchema = new Schema<IWeaponSkinDatabase>(
|
const weaponSkinsSchema = new Schema<IWeaponSkinDatabase>(
|
||||||
{
|
{
|
||||||
ItemType: String
|
ItemType: String
|
||||||
@ -522,7 +433,7 @@ const weaponSkinsSchema = new Schema<IWeaponSkinDatabase>(
|
|||||||
);
|
);
|
||||||
|
|
||||||
weaponSkinsSchema.virtual("ItemId").get(function () {
|
weaponSkinsSchema.virtual("ItemId").get(function () {
|
||||||
return { $oid: this._id.toString() };
|
return { $id: this._id.toString() };
|
||||||
});
|
});
|
||||||
|
|
||||||
weaponSkinsSchema.set("toJSON", {
|
weaponSkinsSchema.set("toJSON", {
|
||||||
@ -533,14 +444,6 @@ weaponSkinsSchema.set("toJSON", {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const tauntSchema = new Schema<ITaunt>(
|
|
||||||
{
|
|
||||||
node: String,
|
|
||||||
state: String
|
|
||||||
},
|
|
||||||
{ _id: false }
|
|
||||||
);
|
|
||||||
|
|
||||||
const periodicMissionCompletionsSchema = new Schema<IPeriodicMissionCompletionDatabase>(
|
const periodicMissionCompletionsSchema = new Schema<IPeriodicMissionCompletionDatabase>(
|
||||||
{
|
{
|
||||||
date: Date,
|
date: Date,
|
||||||
@ -560,20 +463,9 @@ periodicMissionCompletionsSchema.set("toJSON", {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const loreFragmentScansSchema = new Schema<ILoreFragmentScan>(
|
const tauntSchema = new Schema<ITaunt>(
|
||||||
{
|
{
|
||||||
Progress: Number,
|
node: String
|
||||||
Region: String,
|
|
||||||
ItemType: String
|
|
||||||
},
|
|
||||||
{ _id: false }
|
|
||||||
);
|
|
||||||
|
|
||||||
const evolutionProgressSchema = new Schema<IEvolutionProgress>(
|
|
||||||
{
|
|
||||||
Progress: Number,
|
|
||||||
Rank: Number,
|
|
||||||
ItemType: String
|
|
||||||
},
|
},
|
||||||
{ _id: false }
|
{ _id: false }
|
||||||
);
|
);
|
||||||
@ -589,61 +481,13 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
|||||||
RegularCredits: Number,
|
RegularCredits: Number,
|
||||||
//Platinum
|
//Platinum
|
||||||
PremiumCredits: Number,
|
PremiumCredits: Number,
|
||||||
//Gift Platinum(Non trade)
|
|
||||||
PremiumCreditsFree: Number,
|
|
||||||
//Endo
|
|
||||||
FusionPoints: Number,
|
|
||||||
|
|
||||||
//Slots
|
//Slots
|
||||||
SuitBin: slotsBinSchema,
|
SuitBin: slotsBinSchema,
|
||||||
WeaponBin: slotsBinSchema,
|
WeaponBin: slotsBinSchema,
|
||||||
SentinelBin: slotsBinSchema,
|
SentinelBin: slotsBinSchema,
|
||||||
SpaceSuitBin: slotsBinSchema,
|
|
||||||
SpaceWeaponBin: slotsBinSchema,
|
|
||||||
PvpBonusLoadoutBin: slotsBinSchema,
|
|
||||||
PveBonusLoadoutBin: slotsBinSchema,
|
|
||||||
RandomModBin: slotsBinSchema,
|
RandomModBin: slotsBinSchema,
|
||||||
OperatorAmpBin: slotsBinSchema,
|
|
||||||
CrewShipSalvageBin: slotsBinSchema,
|
|
||||||
MechBin: slotsBinSchema,
|
MechBin: slotsBinSchema,
|
||||||
CrewMemberBin: slotsBinSchema,
|
|
||||||
|
|
||||||
//How many trades do you have left
|
|
||||||
TradesRemaining: Number,
|
|
||||||
//How many Gift do you have left*(gift spends the trade)
|
|
||||||
GiftsRemaining: Number,
|
|
||||||
//Curent trade info Giving or Getting items
|
|
||||||
PendingTrades: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//Syndicate currently being pledged to.
|
|
||||||
SupportedSyndicate: String,
|
|
||||||
//Curent Syndicates rank\exp
|
|
||||||
Affiliations: [affiliationsSchema],
|
|
||||||
//Syndicates Missions complate(Navigation->Syndicate)
|
|
||||||
CompletedSyndicates: [String],
|
|
||||||
//Daily Syndicates Exp
|
|
||||||
DailyAffiliation: Number,
|
|
||||||
DailyAffiliationPvp: Number,
|
|
||||||
DailyAffiliationLibrary: Number,
|
|
||||||
DailyAffiliationCetus: Number,
|
|
||||||
DailyAffiliationQuills: Number,
|
|
||||||
DailyAffiliationSolaris: Number,
|
|
||||||
DailyAffiliationVentkids: Number,
|
|
||||||
DailyAffiliationVox: Number,
|
|
||||||
DailyAffiliationEntrati: Number,
|
|
||||||
DailyAffiliationNecraloid: Number,
|
|
||||||
DailyAffiliationZariman: Number,
|
|
||||||
DailyAffiliationKahl: Number,
|
|
||||||
DailyAffiliationCavia: Number,
|
|
||||||
|
|
||||||
//Daily Focus limit
|
|
||||||
DailyFocus: Number,
|
|
||||||
//Focus XP per School
|
|
||||||
FocusXP: focusXPSchema,
|
|
||||||
//Curent active like Active school focuses is = "Zenurik"
|
|
||||||
FocusAbility: String,
|
|
||||||
//The treeways of the Focus school.(Active and passive Ability)
|
|
||||||
FocusUpgrades: [focusUpgradesSchema],
|
|
||||||
|
|
||||||
//Achievement
|
//Achievement
|
||||||
ChallengeProgress: [challengeProgressSchema],
|
ChallengeProgress: [challengeProgressSchema],
|
||||||
@ -651,8 +495,6 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
|||||||
//Account Item like Ferrite,Form,Kuva etc
|
//Account Item like Ferrite,Form,Kuva etc
|
||||||
MiscItems: [typeCountSchema],
|
MiscItems: [typeCountSchema],
|
||||||
|
|
||||||
//Non Upgrade Mods Example:I have 999 item WeaponElectricityDamageMod (only "ItemCount"+"ItemType")
|
|
||||||
RawUpgrades: [RawUpgrades],
|
|
||||||
//Upgrade Mods\Riven\Arcane Example:"UpgradeFingerprint"+"ItemType"+""
|
//Upgrade Mods\Riven\Arcane Example:"UpgradeFingerprint"+"ItemType"+""
|
||||||
Upgrades: [upgradesSchema],
|
Upgrades: [upgradesSchema],
|
||||||
|
|
||||||
@ -672,214 +514,65 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
|||||||
//Sentinel(like Helios or modular)
|
//Sentinel(like Helios or modular)
|
||||||
Sentinels: [EquipmentSchema],
|
Sentinels: [EquipmentSchema],
|
||||||
//Any /Sentinels/SentinelWeapons/ (like warframe weapon)
|
//Any /Sentinels/SentinelWeapons/ (like warframe weapon)
|
||||||
SentinelWeapons: [EquipmentSchema],
|
SentinelWeapons: [Schema.Types.Mixed],
|
||||||
//Modular Pets
|
|
||||||
MoaPets: [EquipmentSchema],
|
|
||||||
|
|
||||||
KubrowPetEggs: [Schema.Types.Mixed],
|
|
||||||
//Like PowerSuit Cat\Kubrow or etc Pets
|
|
||||||
KubrowPets: [EquipmentSchema],
|
|
||||||
//Prints Cat(3 Prints)\Kubrow(2 Prints) Pets
|
|
||||||
KubrowPetPrints: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//Item for EquippedGear example:Scaner,LoadoutTechSummon etc
|
//Item for EquippedGear example:Scaner,LoadoutTechSummon etc
|
||||||
Consumables: [typeCountSchema],
|
Consumables: [typeCountSchema],
|
||||||
//Weel Emotes+Gear
|
//Weel Emotes+Gear
|
||||||
EquippedEmotes: [String],
|
|
||||||
EquippedGear: [String],
|
|
||||||
//Equipped Shawzin
|
//Equipped Shawzin
|
||||||
EquippedInstrument: String,
|
|
||||||
ReceivedStartingGear: Boolean,
|
ReceivedStartingGear: Boolean,
|
||||||
|
|
||||||
//to use add SummonItem to Consumables+EquippedGear
|
//Complete Mission
|
||||||
//Archwing need Suits+Melee+Guns
|
|
||||||
SpaceSuits: [EquipmentSchema],
|
|
||||||
SpaceMelee: [EquipmentSchema],
|
|
||||||
SpaceGuns: [EquipmentSchema],
|
|
||||||
ArchwingEnabled: Boolean,
|
|
||||||
//Mech need Suits+SpaceGuns+SpecialItem
|
|
||||||
MechSuits: [EquipmentSchema],
|
|
||||||
///Restoratives/HoverboardSummon (like Suit)
|
|
||||||
Hoverboards: [EquipmentSchema],
|
|
||||||
|
|
||||||
//Use Operator\Drifter
|
|
||||||
UseAdultOperatorLoadout: Boolean,
|
|
||||||
//Operator\Drifter Weapon
|
|
||||||
OperatorAmps: [EquipmentSchema],
|
|
||||||
//Operator
|
|
||||||
OperatorLoadOuts: [operatorConfigSchema],
|
|
||||||
//Drifter
|
|
||||||
AdultOperatorLoadOuts: [operatorConfigSchema],
|
|
||||||
DrifterMelee: [EquipmentSchema],
|
|
||||||
DrifterGuns: [EquipmentSchema],
|
|
||||||
//ErsatzHorsePowerSuit
|
|
||||||
Horses: [EquipmentSchema],
|
|
||||||
|
|
||||||
//LandingCraft like Liset
|
|
||||||
Ships: { type: [Schema.Types.ObjectId], ref: "Ships" },
|
|
||||||
// /Lotus/Types/Items/ShipDecos/
|
|
||||||
ShipDecorations: [typeCountSchema],
|
|
||||||
|
|
||||||
//RailJack Setting(Mods,Skin,Weapon,etc)
|
|
||||||
CrewShipHarnesses: [EquipmentSchema],
|
|
||||||
//Railjack/Components(https://warframe.fandom.com/wiki/Railjack/Components)
|
|
||||||
CrewShipRawSalvage: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//Default RailJack
|
|
||||||
CrewShips: [Schema.Types.Mixed],
|
|
||||||
CrewShipAmmo: [typeCountSchema],
|
|
||||||
CrewShipWeapons: [Schema.Types.Mixed],
|
|
||||||
CrewShipWeaponSkins: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//NPC Crew and weapon
|
|
||||||
CrewMembers: [Schema.Types.Mixed],
|
|
||||||
CrewShipSalvagedWeaponSkins: [Schema.Types.Mixed],
|
|
||||||
CrewShipSalvagedWeapons: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//Complete Mission\Quests
|
|
||||||
Missions: [Schema.Types.Mixed],
|
Missions: [Schema.Types.Mixed],
|
||||||
QuestKeys: [questKeysSchema],
|
|
||||||
//item like DojoKey or Boss missions key
|
|
||||||
LevelKeys: [Schema.Types.Mixed],
|
|
||||||
//Active quests
|
|
||||||
Quests: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//Cosmetics like profile glyphs\Kavasa Prime Kubrow Collar\Game Theme etc
|
//Cosmetics like profile glyphs\Kavasa Prime Kubrow Collar\Game Theme etc
|
||||||
FlavourItems: [FlavourItemSchema],
|
FlavourItems: [FlavourItemSchema],
|
||||||
|
|
||||||
//Lunaro Weapon
|
|
||||||
Scoops: [EquipmentSchema],
|
|
||||||
|
|
||||||
//Mastery Rank*(Need item XPInfo to rank up)
|
//Mastery Rank*(Need item XPInfo to rank up)
|
||||||
PlayerLevel: Number,
|
PlayerLevel: Number,
|
||||||
//Item Mastery Rank exp
|
//Item Mastery Rank exp
|
||||||
XPInfo: [TypeXPItemSchema],
|
XPInfo: [TypeXPItemSchema],
|
||||||
//Mastery Rank next availability
|
//Mastery Rank next availability
|
||||||
TrainingDate: Date,
|
TrainingDate: Date,
|
||||||
//Retries rank up(3 time)
|
|
||||||
TrainingRetriesLeft: Number,
|
|
||||||
|
|
||||||
//you saw last played Region when you opened the star map
|
|
||||||
LastRegionPlayed: String,
|
|
||||||
|
|
||||||
//Blueprints for Foundry
|
//Blueprints for Foundry
|
||||||
Recipes: [typeCountSchema],
|
Recipes: [typeCountSchema],
|
||||||
//Crafting Blueprint(Item Name + CompletionDate)
|
//Crafting Blueprint(Item Name + CompletionDate)
|
||||||
PendingRecipes: [pendingRecipeSchema],
|
PendingRecipes: [pendingRecipeSchema],
|
||||||
|
|
||||||
|
TauntHistory: { type: [tauntSchema], default: undefined },
|
||||||
|
|
||||||
//Skins for Suits, Weapons etc.
|
//Skins for Suits, Weapons etc.
|
||||||
WeaponSkins: [weaponSkinsSchema],
|
WeaponSkins: [weaponSkinsSchema],
|
||||||
|
|
||||||
//Ayatan Item
|
|
||||||
FusionTreasures: [fusionTreasuresSchema],
|
|
||||||
//only used for Maroo apparently - { "node": "TreasureTutorial", "state": "TS_COMPLETED" }
|
|
||||||
TauntHistory: { type: [tauntSchema], default: undefined },
|
|
||||||
|
|
||||||
//noShow2FA,VisitPrimeVault etc
|
//noShow2FA,VisitPrimeVault etc
|
||||||
WebFlags: Schema.Types.Mixed,
|
WebFlags: Schema.Types.Mixed,
|
||||||
//Id CompletedAlerts
|
//Id CompletedAlerts
|
||||||
CompletedAlerts: [String],
|
CompletedAlerts: [String],
|
||||||
|
|
||||||
//Warframe\Duviri
|
|
||||||
StoryModeChoice: String,
|
|
||||||
|
|
||||||
//Alert->Kuva Siphon
|
|
||||||
PeriodicMissionCompletions: [periodicMissionCompletionsSchema],
|
|
||||||
|
|
||||||
//Codex->LoreFragment
|
|
||||||
LoreFragmentScans: [loreFragmentScansSchema],
|
|
||||||
|
|
||||||
//Resource,Credit,Affinity etc or Bless any boosters
|
//Resource,Credit,Affinity etc or Bless any boosters
|
||||||
Boosters: [boosterSchema],
|
Boosters: [boosterSchema],
|
||||||
BlessingCooldown: Date, // Date convert to IMongoDate
|
|
||||||
|
|
||||||
//the color your clan requests like Items/Research/DojoColors/DojoColorPlainsB
|
|
||||||
ActiveDojoColorResearch: String,
|
|
||||||
|
|
||||||
SentientSpawnChanceBoosters: Schema.Types.Mixed,
|
|
||||||
|
|
||||||
QualifyingInvasions: [Schema.Types.Mixed],
|
|
||||||
FactionScores: [Number],
|
|
||||||
|
|
||||||
//Have only Suit+Pistols+LongGuns+Melee+ItemType(BronzeSpectre,GoldSpectre,PlatinumSpectreArmy,SilverSpectreArmy)
|
|
||||||
//"/Lotus/Types/Game/SpectreArmies/BronzeSpectreArmy": "Vapor Specter Regiment",
|
|
||||||
SpectreLoadouts: [spectreLoadoutsSchema],
|
|
||||||
//If you want change Spectre Gear id
|
|
||||||
PendingSpectreLoadouts: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//New Quest Email
|
//New Quest Email
|
||||||
EmailItems: [TypeXPItemSchema],
|
EmailItems: [TypeXPItemSchema],
|
||||||
|
|
||||||
//Profile->Wishlist
|
|
||||||
Wishlist: [String],
|
|
||||||
|
|
||||||
//https://warframe.fandom.com/wiki/Alignment
|
//https://warframe.fandom.com/wiki/Alignment
|
||||||
//like "Alignment": { "Wisdom": 9, "Alignment": 1 },
|
//like "Alignment": { "Wisdom": 9, "Alignment": 1 },
|
||||||
Alignment: Schema.Types.Mixed,
|
Alignment: Schema.Types.Mixed,
|
||||||
AlignmentReplay: Schema.Types.Mixed,
|
AlignmentReplay: Schema.Types.Mixed,
|
||||||
|
|
||||||
//https://warframe.fandom.com/wiki/Sortie
|
|
||||||
CompletedSorties: [String],
|
|
||||||
LastSortieReward: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//Resource_Drone[Uselees stuff]
|
|
||||||
Drones: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//Active profile ico
|
//Active profile ico
|
||||||
ActiveAvatarImageType: String,
|
ActiveAvatarImageType: String,
|
||||||
|
|
||||||
// open location store like EidolonPlainsDiscoverable or OrbVallisCaveDiscoverable
|
|
||||||
DiscoveredMarkers: [Schema.Types.Mixed],
|
|
||||||
//Open location mission like "JobId" + "StageCompletions"
|
|
||||||
CompletedJobs: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//Game mission\ivent score example "Tag": "WaterFight", "Best": 170, "Count": 1258,
|
|
||||||
PersonalGoalProgress: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//Setting interface Style
|
|
||||||
ThemeStyle: String,
|
|
||||||
ThemeBackground: String,
|
|
||||||
ThemeSounds: String,
|
|
||||||
|
|
||||||
//Daily LoginRewards
|
|
||||||
LoginMilestoneRewards: [String],
|
|
||||||
|
|
||||||
//You first Dialog with NPC or use new Item
|
//You first Dialog with NPC or use new Item
|
||||||
NodeIntrosCompleted: [String],
|
NodeIntrosCompleted: [String],
|
||||||
|
|
||||||
//Current guild id, if applicable.
|
//Current guild id, if applicable.
|
||||||
GuildId: { type: Schema.Types.ObjectId, ref: "Guild" },
|
GuildId: { type: Schema.Types.ObjectId, ref: "Guild" },
|
||||||
|
|
||||||
//https://warframe.fandom.com/wiki/Heist
|
|
||||||
//ProfitTaker(1-4) Example:"LocationTag": "EudicoHeists", "Jobs":Mission name
|
|
||||||
CompletedJobChains: [completedJobChainsSchema],
|
|
||||||
//Night Wave Challenge
|
|
||||||
SeasonChallengeHistory: [seasonChallengeHistorySchema],
|
|
||||||
|
|
||||||
//Cephalon Simaris Entries Example:"TargetType"+"Scans"(1-10)+"Completed": true|false
|
|
||||||
LibraryPersonalProgress: [Schema.Types.Mixed],
|
|
||||||
//Cephalon Simaris Daily Task
|
|
||||||
LibraryAvailableDailyTaskInfo: Schema.Types.Mixed,
|
|
||||||
|
|
||||||
//https://warframe.fandom.com/wiki/Invasion
|
|
||||||
InvasionChainProgress: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//https://warframe.fandom.com/wiki/Parazon
|
|
||||||
DataKnives: [EquipmentSchema],
|
|
||||||
|
|
||||||
//CorpusLich or GrineerLich
|
|
||||||
NemesisAbandonedRewards: [String],
|
|
||||||
//CorpusLich\KuvaLich
|
|
||||||
NemesisHistory: [Schema.Types.Mixed],
|
|
||||||
LastNemesisAllySpawnTime: Schema.Types.Mixed,
|
|
||||||
|
|
||||||
//TradingRulesConfirmed,ShowFriendInvNotifications(Option->Social)
|
//TradingRulesConfirmed,ShowFriendInvNotifications(Option->Social)
|
||||||
Settings: settingsSchema,
|
Settings: settingsSchema,
|
||||||
|
|
||||||
//Railjack craft
|
|
||||||
//https://warframe.fandom.com/wiki/Rising_Tide
|
|
||||||
PersonalTechProjects: [Schema.Types.Mixed],
|
|
||||||
|
|
||||||
//Modulars lvl and exp(Railjack|Duviri)
|
//Modulars lvl and exp(Railjack|Duviri)
|
||||||
//https://warframe.fandom.com/wiki/Intrinsics
|
//https://warframe.fandom.com/wiki/Intrinsics
|
||||||
PlayerSkills: playerSkillsSchema,
|
PlayerSkills: playerSkillsSchema,
|
||||||
@ -887,42 +580,14 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
|||||||
//TradeBannedUntil data
|
//TradeBannedUntil data
|
||||||
TradeBannedUntil: Schema.Types.Mixed,
|
TradeBannedUntil: Schema.Types.Mixed,
|
||||||
|
|
||||||
//https://warframe.fandom.com/wiki/Helminth
|
|
||||||
InfestedFoundry: infestedFoundrySchema,
|
|
||||||
|
|
||||||
NextRefill: Schema.Types.Mixed, // Date, convert to IMongoDate
|
|
||||||
|
|
||||||
//Purchase this new permanent skin from the Lotus customization options in Personal Quarters located in your Orbiter.
|
|
||||||
//https://warframe.fandom.com/wiki/Lotus#The_New_War
|
|
||||||
LotusCustomization: Schema.Types.Mixed,
|
|
||||||
|
|
||||||
//Progress+Rank+ItemType(ZarimanPumpShotgun)
|
|
||||||
//https://warframe.fandom.com/wiki/Incarnon
|
|
||||||
EvolutionProgress: { type: [evolutionProgressSchema], default: undefined },
|
|
||||||
|
|
||||||
//Unknown and system
|
//Unknown and system
|
||||||
DuviriInfo: DuviriInfoSchema,
|
|
||||||
Mailbox: MailboxSchema,
|
Mailbox: MailboxSchema,
|
||||||
KahlLoadOuts: [Schema.Types.Mixed],
|
|
||||||
HandlerPoints: Number,
|
HandlerPoints: Number,
|
||||||
ChallengesFixVersion: Number,
|
ChallengesFixVersion: Number,
|
||||||
PlayedParkourTutorial: Boolean,
|
PlayedParkourTutorial: Boolean,
|
||||||
SubscribedToEmailsPersonalized: Number,
|
SubscribedToEmailsPersonalized: Number,
|
||||||
LastInventorySync: Schema.Types.Mixed, // this should be Schema.Types.ObjectId, but older inventories may break with that.
|
LastInventorySync: Schema.Types.Mixed,
|
||||||
ActiveLandscapeTraps: [Schema.Types.Mixed],
|
|
||||||
RepVotes: [Schema.Types.Mixed],
|
|
||||||
LeagueTickets: [Schema.Types.Mixed],
|
|
||||||
HasContributedToDojo: Boolean,
|
|
||||||
HWIDProtectEnabled: Boolean,
|
|
||||||
LoadOutPresets: { type: Schema.Types.ObjectId, ref: "Loadout" },
|
|
||||||
CurrentLoadOutIds: [Schema.Types.Mixed],
|
|
||||||
RandomUpgradesIdentified: Number,
|
|
||||||
BountyScore: Number,
|
|
||||||
ChallengeInstanceStates: [Schema.Types.Mixed],
|
|
||||||
RecentVendorPurchases: [Schema.Types.Mixed],
|
|
||||||
Robotics: [Schema.Types.Mixed],
|
Robotics: [Schema.Types.Mixed],
|
||||||
UsedDailyDeals: [Schema.Types.Mixed],
|
|
||||||
CollectibleSeries: [Schema.Types.Mixed],
|
|
||||||
HasResetAccount: Boolean,
|
HasResetAccount: Boolean,
|
||||||
|
|
||||||
//Discount Coupon
|
//Discount Coupon
|
||||||
|
@ -5,7 +5,7 @@ import { Model, Schema, Types, model } from "mongoose";
|
|||||||
|
|
||||||
const oidSchema = new Schema<IOid>(
|
const oidSchema = new Schema<IOid>(
|
||||||
{
|
{
|
||||||
$oid: String
|
$id: String
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
_id: false
|
_id: false
|
||||||
@ -44,7 +44,7 @@ const loadoutConfigSchema = new Schema<ILoadoutConfigDatabase>(
|
|||||||
);
|
);
|
||||||
|
|
||||||
loadoutConfigSchema.virtual("ItemId").get(function () {
|
loadoutConfigSchema.virtual("ItemId").get(function () {
|
||||||
return { $oid: this._id.toString() } satisfies IOid;
|
return { $id: this._id.toString() } satisfies IOid;
|
||||||
});
|
});
|
||||||
|
|
||||||
loadoutConfigSchema.set("toJSON", {
|
loadoutConfigSchema.set("toJSON", {
|
||||||
|
@ -25,15 +25,7 @@ const databaseAccountSchema = new Schema<IDatabaseAccountDocument>(
|
|||||||
email: { type: String, required: true, unique: true },
|
email: { type: String, required: true, unique: true },
|
||||||
password: { type: String, required: true },
|
password: { type: String, required: true },
|
||||||
DisplayName: { type: String, required: true },
|
DisplayName: { type: String, required: true },
|
||||||
CountryCode: { type: String, required: true },
|
Nonce: { type: Number, required: true }
|
||||||
ClientType: { type: String },
|
|
||||||
CrossPlatformAllowed: { type: Boolean, required: true },
|
|
||||||
ForceLogoutVersion: { type: Number, required: true },
|
|
||||||
AmazonAuthToken: { type: String },
|
|
||||||
AmazonRefreshToken: { type: String },
|
|
||||||
ConsentNeeded: { type: Boolean, required: true },
|
|
||||||
TrackedSettings: { type: [String], default: [] },
|
|
||||||
Nonce: { type: Number, default: 0 }
|
|
||||||
},
|
},
|
||||||
opts
|
opts
|
||||||
);
|
);
|
||||||
|
@ -64,6 +64,9 @@ import { updateChallengeProgressController } from "@/src/controllers/api/updateC
|
|||||||
import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController";
|
import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController";
|
||||||
import { updateThemeController } from "../controllers/api/updateThemeController";
|
import { updateThemeController } from "../controllers/api/updateThemeController";
|
||||||
import { upgradesController } from "@/src/controllers/api/upgradesController";
|
import { upgradesController } from "@/src/controllers/api/upgradesController";
|
||||||
|
import { worldStateController } from "../controllers/dynamic/worldStateController";
|
||||||
|
import { updateInventoryController } from "../controllers/api/updateInventoryController";
|
||||||
|
import { giveStartingGearController } from "../controllers/api/giveStartingGearController";
|
||||||
|
|
||||||
const apiRouter = express.Router();
|
const apiRouter = express.Router();
|
||||||
|
|
||||||
@ -99,6 +102,12 @@ apiRouter.get("/setSupportedSyndicate.php", setSupportedSyndicateController);
|
|||||||
apiRouter.get("/surveys.php", surveysController);
|
apiRouter.get("/surveys.php", surveysController);
|
||||||
apiRouter.get("/updateSession.php", updateSessionGetController);
|
apiRouter.get("/updateSession.php", updateSessionGetController);
|
||||||
|
|
||||||
|
apiRouter.get("/getMessages.php", (_, response) => {
|
||||||
|
response.json({});
|
||||||
|
});
|
||||||
|
apiRouter.get("/trainingResult.php", trainingResultController);
|
||||||
|
apiRouter.get("/giveStartingGear.php", giveStartingGearController);
|
||||||
|
apiRouter.get("/worldState.php", worldStateController);
|
||||||
// post
|
// post
|
||||||
apiRouter.post("/addFriendImage.php", addFriendImageController);
|
apiRouter.post("/addFriendImage.php", addFriendImageController);
|
||||||
apiRouter.post("/artifacts.php", artifactsController);
|
apiRouter.post("/artifacts.php", artifactsController);
|
||||||
@ -138,5 +147,6 @@ apiRouter.post("/updateNodeIntros.php", genericUpdateController);
|
|||||||
apiRouter.post("/updateSession.php", updateSessionPostController);
|
apiRouter.post("/updateSession.php", updateSessionPostController);
|
||||||
apiRouter.post("/updateTheme.php", updateThemeController);
|
apiRouter.post("/updateTheme.php", updateThemeController);
|
||||||
apiRouter.post("/upgrades.php", upgradesController);
|
apiRouter.post("/upgrades.php", upgradesController);
|
||||||
|
apiRouter.post("/updateInventory.php", updateInventoryController);
|
||||||
|
|
||||||
export { apiRouter };
|
export { apiRouter };
|
||||||
|
@ -12,6 +12,10 @@ cacheRouter.get("/B.Cache.Windows_en.bin*", (_req, res) => {
|
|||||||
res.sendFile("static/data/B.Cache.Windows_en_33.0.10.bin", { root: "./" });
|
res.sendFile("static/data/B.Cache.Windows_en_33.0.10.bin", { root: "./" });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
cacheRouter.get("/H.Cache.bin!03_---------------------w", (_req, res) => {
|
||||||
|
res.sendFile(`static/data/H.Cache.bin`, { root: "./" });
|
||||||
|
});
|
||||||
|
|
||||||
cacheRouter.get(/^\/origin\/[a-zA-Z0-9]+\/[0-9]+\/H\.Cache\.bin.*$/, (_req, res) => {
|
cacheRouter.get(/^\/origin\/[a-zA-Z0-9]+\/[0-9]+\/H\.Cache\.bin.*$/, (_req, res) => {
|
||||||
res.sendFile(`static/data/H.Cache_${buildConfig.version}.bin`, { root: "./" });
|
res.sendFile(`static/data/H.Cache_${buildConfig.version}.bin`, { root: "./" });
|
||||||
});
|
});
|
||||||
|
@ -188,34 +188,6 @@ export const addItem = async (
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case "Archwing": {
|
|
||||||
const spaceSuit = await addSpaceSuit(typeName, accountId);
|
|
||||||
await updateSlots(accountId, InventorySlot.SPACESUITS, 0, 1);
|
|
||||||
return {
|
|
||||||
InventoryChanges: {
|
|
||||||
SpaceSuitBin: {
|
|
||||||
count: 1,
|
|
||||||
platinum: 0,
|
|
||||||
Slots: -1
|
|
||||||
},
|
|
||||||
SpaceSuits: [spaceSuit]
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
case "EntratiMech": {
|
|
||||||
const mechSuit = await addMechSuit(typeName, accountId);
|
|
||||||
await updateSlots(accountId, InventorySlot.MECHSUITS, 0, 1);
|
|
||||||
return {
|
|
||||||
InventoryChanges: {
|
|
||||||
MechBin: {
|
|
||||||
count: 1,
|
|
||||||
platinum: 0,
|
|
||||||
Slots: -1
|
|
||||||
},
|
|
||||||
MechSuits: [mechSuit]
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "Weapons":
|
case "Weapons":
|
||||||
@ -426,9 +398,6 @@ export const updateCurrency = async (price: number, usePremium: boolean, account
|
|||||||
const inventory = await getInventory(accountId);
|
const inventory = await getInventory(accountId);
|
||||||
|
|
||||||
if (usePremium) {
|
if (usePremium) {
|
||||||
if (inventory.PremiumCreditsFree > 0) {
|
|
||||||
inventory.PremiumCreditsFree -= Math.min(price, inventory.PremiumCreditsFree);
|
|
||||||
}
|
|
||||||
inventory.PremiumCredits -= price;
|
inventory.PremiumCredits -= price;
|
||||||
} else {
|
} else {
|
||||||
inventory.RegularCredits -= price;
|
inventory.RegularCredits -= price;
|
||||||
@ -436,7 +405,7 @@ export const updateCurrency = async (price: number, usePremium: boolean, account
|
|||||||
|
|
||||||
const modifiedPaths = inventory.modifiedPaths();
|
const modifiedPaths = inventory.modifiedPaths();
|
||||||
|
|
||||||
type currencyKeys = "RegularCredits" | "PremiumCredits" | "PremiumCreditsFree";
|
type currencyKeys = "RegularCredits" | "PremiumCredits";
|
||||||
|
|
||||||
const currencyChanges = {} as Record<currencyKeys, number>;
|
const currencyChanges = {} as Record<currencyKeys, number>;
|
||||||
modifiedPaths.forEach(path => {
|
modifiedPaths.forEach(path => {
|
||||||
@ -556,7 +525,7 @@ const addGearExpByCategory = (
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const itemIndex = ItemId ? category.findIndex(item => item._id?.equals(ItemId.$oid)) : -1;
|
const itemIndex = ItemId ? category.findIndex(item => item._id?.equals(ItemId.$id)) : -1;
|
||||||
if (itemIndex !== -1) {
|
if (itemIndex !== -1) {
|
||||||
const item = category[itemIndex];
|
const item = category[itemIndex];
|
||||||
item.XP ??= 0;
|
item.XP ??= 0;
|
||||||
@ -725,74 +694,21 @@ const addMissionComplete = (inventory: IInventoryDatabaseDocument, { Tag, Comple
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const missionInventoryUpdate = async (data: IMissionInventoryUpdateRequest, accountId: string) => {
|
export const missionInventoryUpdate = async (data: IMissionInventoryUpdateRequest, accountId: string) => {
|
||||||
const {
|
const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress, Consumables, Recipes, Missions } = data;
|
||||||
RawUpgrades,
|
|
||||||
MiscItems,
|
|
||||||
RegularCredits,
|
|
||||||
ChallengeProgress,
|
|
||||||
FusionPoints,
|
|
||||||
Consumables,
|
|
||||||
Recipes,
|
|
||||||
Missions,
|
|
||||||
FusionTreasures
|
|
||||||
} = data;
|
|
||||||
const inventory = await getInventory(accountId);
|
const inventory = await getInventory(accountId);
|
||||||
|
|
||||||
// credits
|
// credits
|
||||||
inventory.RegularCredits += RegularCredits || 0;
|
inventory.RegularCredits += RegularCredits || 0;
|
||||||
|
|
||||||
// endo
|
|
||||||
inventory.FusionPoints += FusionPoints || 0;
|
|
||||||
|
|
||||||
// syndicate
|
|
||||||
data.AffiliationChanges?.forEach(affiliation => {
|
|
||||||
const syndicate = inventory.Affiliations.find(x => x.Tag == affiliation.Tag);
|
|
||||||
if (syndicate !== undefined) {
|
|
||||||
syndicate.Standing =
|
|
||||||
syndicate.Standing === undefined ? affiliation.Standing : syndicate.Standing + affiliation.Standing;
|
|
||||||
syndicate.Title = syndicate.Title === undefined ? affiliation.Title : syndicate.Title + affiliation.Title;
|
|
||||||
} else {
|
|
||||||
inventory.Affiliations.push({
|
|
||||||
Standing: affiliation.Standing,
|
|
||||||
Title: affiliation.Title,
|
|
||||||
Tag: affiliation.Tag,
|
|
||||||
FreeFavorsEarned: [],
|
|
||||||
FreeFavorsUsed: []
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Gear XP
|
// Gear XP
|
||||||
equipmentKeys.forEach(key => addGearExpByCategory(inventory, data[key], key));
|
equipmentKeys.forEach(key => addGearExpByCategory(inventory, data[key], key));
|
||||||
|
|
||||||
// Incarnon Challenges
|
|
||||||
if (data.EvolutionProgress) {
|
|
||||||
for (const evoProgress of data.EvolutionProgress) {
|
|
||||||
const entry = inventory.EvolutionProgress
|
|
||||||
? inventory.EvolutionProgress.find(entry => entry.ItemType == evoProgress.ItemType)
|
|
||||||
: undefined;
|
|
||||||
if (entry) {
|
|
||||||
entry.Progress = evoProgress.Progress;
|
|
||||||
entry.Rank = evoProgress.Rank;
|
|
||||||
} else {
|
|
||||||
inventory.EvolutionProgress ??= [];
|
|
||||||
inventory.EvolutionProgress.push(evoProgress);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// LastRegionPlayed
|
|
||||||
if (data.LastRegionPlayed) {
|
|
||||||
inventory.LastRegionPlayed = data.LastRegionPlayed;
|
|
||||||
}
|
|
||||||
|
|
||||||
// other
|
// other
|
||||||
addMods(inventory, RawUpgrades);
|
addMods(inventory, RawUpgrades);
|
||||||
addMiscItems(inventory, MiscItems);
|
addMiscItems(inventory, MiscItems);
|
||||||
addConsumables(inventory, Consumables);
|
addConsumables(inventory, Consumables);
|
||||||
addRecipes(inventory, Recipes);
|
addRecipes(inventory, Recipes);
|
||||||
addChallenges(inventory, ChallengeProgress);
|
addChallenges(inventory, ChallengeProgress);
|
||||||
addFusionTreasures(inventory, FusionTreasures);
|
|
||||||
if (Missions) {
|
if (Missions) {
|
||||||
addMissionComplete(inventory, Missions);
|
addMissionComplete(inventory, Missions);
|
||||||
}
|
}
|
||||||
@ -833,7 +749,7 @@ export const upgradeMod = async (artifactsData: IArtifactsRequest, accountId: st
|
|||||||
parsedUpgradeFingerprint.lvl += LevelDiff;
|
parsedUpgradeFingerprint.lvl += LevelDiff;
|
||||||
const stringifiedUpgradeFingerprint = JSON.stringify(parsedUpgradeFingerprint);
|
const stringifiedUpgradeFingerprint = JSON.stringify(parsedUpgradeFingerprint);
|
||||||
|
|
||||||
let itemIndex = Upgrades.findIndex(upgrade => upgrade._id?.equals(ItemId!.$oid));
|
let itemIndex = Upgrades.findIndex(upgrade => upgrade._id?.equals(ItemId!.$id));
|
||||||
|
|
||||||
if (itemIndex !== -1) {
|
if (itemIndex !== -1) {
|
||||||
Upgrades[itemIndex].UpgradeFingerprint = stringifiedUpgradeFingerprint;
|
Upgrades[itemIndex].UpgradeFingerprint = stringifiedUpgradeFingerprint;
|
||||||
@ -858,7 +774,7 @@ export const upgradeMod = async (artifactsData: IArtifactsRequest, accountId: st
|
|||||||
inventory.FusionPoints -= FusionPointCost;
|
inventory.FusionPoints -= FusionPointCost;
|
||||||
|
|
||||||
const changedInventory = await inventory.save();
|
const changedInventory = await inventory.save();
|
||||||
const itemId = changedInventory.toJSON().Upgrades[itemIndex]?.ItemId?.$oid;
|
const itemId = changedInventory.toJSON().Upgrades[itemIndex]?.ItemId?.$id;
|
||||||
|
|
||||||
if (!itemId) {
|
if (!itemId) {
|
||||||
throw new Error("Item Id not found in upgradeMod");
|
throw new Error("Item Id not found in upgradeMod");
|
||||||
|
@ -73,22 +73,8 @@ const combineRewardAndLootInventory = (
|
|||||||
const missionCredits = lootInventory.RegularCredits || 0;
|
const missionCredits = lootInventory.RegularCredits || 0;
|
||||||
const creditsBonus = rewardInventory.RegularCredits || 0;
|
const creditsBonus = rewardInventory.RegularCredits || 0;
|
||||||
const totalCredits = missionCredits + creditsBonus;
|
const totalCredits = missionCredits + creditsBonus;
|
||||||
let FusionPoints = rewardInventory.FusionPoints || 0;
|
|
||||||
|
|
||||||
// Discharge Endo picked up during the mission
|
|
||||||
if (lootInventory.FusionBundles) {
|
|
||||||
for (const fusionBundle of lootInventory.FusionBundles) {
|
|
||||||
if (fusionBundle.ItemType in fusionBundles) {
|
|
||||||
FusionPoints += fusionBundles[fusionBundle.ItemType] * fusionBundle.ItemCount;
|
|
||||||
} else {
|
|
||||||
logger.error(`unknown fusion bundle: ${fusionBundle.ItemType}`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
lootInventory.FusionBundles = undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
lootInventory.RegularCredits = totalCredits;
|
lootInventory.RegularCredits = totalCredits;
|
||||||
lootInventory.FusionPoints = FusionPoints;
|
|
||||||
inventoryFields.forEach((field: IInventoryFieldType) => {
|
inventoryFields.forEach((field: IInventoryFieldType) => {
|
||||||
if (rewardInventory[field] && !lootInventory[field]) {
|
if (rewardInventory[field] && !lootInventory[field]) {
|
||||||
lootInventory[field] = [];
|
lootInventory[field] = [];
|
||||||
@ -100,8 +86,7 @@ const combineRewardAndLootInventory = (
|
|||||||
combinedInventoryChanges: lootInventory,
|
combinedInventoryChanges: lootInventory,
|
||||||
TotalCredits: [totalCredits, totalCredits],
|
TotalCredits: [totalCredits, totalCredits],
|
||||||
CreditsBonus: [creditsBonus, creditsBonus],
|
CreditsBonus: [creditsBonus, creditsBonus],
|
||||||
MissionCredits: [missionCredits, missionCredits],
|
MissionCredits: [missionCredits, missionCredits]
|
||||||
FusionPoints: FusionPoints
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -107,14 +107,7 @@ const handleStoreItemAcquisition = async (
|
|||||||
export const slotPurchaseNameToSlotName: SlotPurchase = {
|
export const slotPurchaseNameToSlotName: SlotPurchase = {
|
||||||
SuitSlotItem: { name: "SuitBin", slotsPerPurchase: 1 },
|
SuitSlotItem: { name: "SuitBin", slotsPerPurchase: 1 },
|
||||||
TwoSentinelSlotItem: { name: "SentinelBin", slotsPerPurchase: 2 },
|
TwoSentinelSlotItem: { name: "SentinelBin", slotsPerPurchase: 2 },
|
||||||
TwoWeaponSlotItem: { name: "WeaponBin", slotsPerPurchase: 2 },
|
TwoWeaponSlotItem: { name: "WeaponBin", slotsPerPurchase: 2 }
|
||||||
SpaceSuitSlotItem: { name: "SpaceSuitBin", slotsPerPurchase: 1 },
|
|
||||||
TwoSpaceWeaponSlotItem: { name: "SpaceWeaponBin", slotsPerPurchase: 2 },
|
|
||||||
MechSlotItem: { name: "MechBin", slotsPerPurchase: 1 },
|
|
||||||
TwoOperatorWeaponSlotItem: { name: "OperatorAmpBin", slotsPerPurchase: 2 },
|
|
||||||
RandomModSlotItem: { name: "RandomModBin", slotsPerPurchase: 3 },
|
|
||||||
TwoCrewShipSalvageSlotItem: { name: "CrewShipSalvageBin", slotsPerPurchase: 2 },
|
|
||||||
CrewMemberSlotItem: { name: "CrewMemberBin", slotsPerPurchase: 1 }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// // extra = everything above the base +2 slots (depending on slot type)
|
// // extra = everything above the base +2 slots (depending on slot type)
|
||||||
|
@ -34,6 +34,6 @@ export const startRecipe = async (recipeName: string, accountId: string) => {
|
|||||||
const newInventory = await inventory.save();
|
const newInventory = await inventory.save();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
RecipeId: { $oid: newInventory.PendingRecipes[newInventory.PendingRecipes.length - 1]._id?.toString() }
|
RecipeId: { $id: newInventory.PendingRecipes[newInventory.PendingRecipes.length - 1]._id?.toString() }
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -50,7 +50,7 @@ export const handleInventoryItemConfigChange = async (
|
|||||||
if (!loadout) {
|
if (!loadout) {
|
||||||
const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig;
|
const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig;
|
||||||
operatorLoadout.push({
|
operatorLoadout.push({
|
||||||
_id: ItemId.$oid,
|
_id: ItemId.$id,
|
||||||
...loadoutConfigItemIdRemoved
|
...loadoutConfigItemIdRemoved
|
||||||
});
|
});
|
||||||
continue;
|
continue;
|
||||||
@ -89,14 +89,14 @@ export const handleInventoryItemConfigChange = async (
|
|||||||
|
|
||||||
const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig;
|
const { ItemId, ...loadoutConfigItemIdRemoved } = loadoutConfig;
|
||||||
const loadoutConfigDatabase: ILoadoutConfigDatabase = {
|
const loadoutConfigDatabase: ILoadoutConfigDatabase = {
|
||||||
_id: new Types.ObjectId(ItemId.$oid),
|
_id: new Types.ObjectId(ItemId.$id),
|
||||||
...loadoutConfigItemIdRemoved
|
...loadoutConfigItemIdRemoved
|
||||||
};
|
};
|
||||||
|
|
||||||
// if no config with this id exists, create a new one
|
// if no config with this id exists, create a new one
|
||||||
if (!oldLoadoutConfig) {
|
if (!oldLoadoutConfig) {
|
||||||
//save the new object id and assign it for every ffff return at the end
|
//save the new object id and assign it for every ffff return at the end
|
||||||
if (ItemId.$oid === "ffffffffffffffffffffffff") {
|
if (ItemId.$id === "ffffffffffffffffffffffff") {
|
||||||
if (!newLoadoutId) {
|
if (!newLoadoutId) {
|
||||||
newLoadoutId = new Types.ObjectId();
|
newLoadoutId = new Types.ObjectId();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
export interface IOid {
|
export interface IOid {
|
||||||
$oid: string;
|
$id: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IMongoDate {
|
export interface IMongoDate {
|
||||||
|
@ -111,6 +111,7 @@ export type TSolarMapRegion =
|
|||||||
export interface IPendingRecipeResponse extends Omit<IPendingRecipe, "CompletionDate"> {
|
export interface IPendingRecipeResponse extends Omit<IPendingRecipe, "CompletionDate"> {
|
||||||
CompletionDate: IMongoDate;
|
CompletionDate: IMongoDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IInventoryResponse {
|
export interface IInventoryResponse {
|
||||||
Horses: IEquipmentDatabase[];
|
Horses: IEquipmentDatabase[];
|
||||||
DrifterMelee: IEquipmentDatabase[];
|
DrifterMelee: IEquipmentDatabase[];
|
||||||
@ -123,7 +124,6 @@ export interface IInventoryResponse {
|
|||||||
RewardSeed: number;
|
RewardSeed: number;
|
||||||
RegularCredits: number;
|
RegularCredits: number;
|
||||||
PremiumCredits: number;
|
PremiumCredits: number;
|
||||||
PremiumCreditsFree: number;
|
|
||||||
FusionPoints: number;
|
FusionPoints: number;
|
||||||
SuitBin: ISlots;
|
SuitBin: ISlots;
|
||||||
WeaponBin: ISlots;
|
WeaponBin: ISlots;
|
||||||
@ -134,14 +134,6 @@ export interface IInventoryResponse {
|
|||||||
PveBonusLoadoutBin: ISlots;
|
PveBonusLoadoutBin: ISlots;
|
||||||
RandomModBin: ISlots;
|
RandomModBin: ISlots;
|
||||||
MechBin: ISlots;
|
MechBin: ISlots;
|
||||||
CrewMemberBin: ISlots;
|
|
||||||
OperatorAmpBin: ISlots;
|
|
||||||
CrewShipSalvageBin: ISlots;
|
|
||||||
TradesRemaining: number;
|
|
||||||
DailyAffiliation: number;
|
|
||||||
DailyAffiliationPvp: number;
|
|
||||||
DailyAffiliationLibrary: number;
|
|
||||||
DailyFocus: number;
|
|
||||||
GiftsRemaining: number;
|
GiftsRemaining: number;
|
||||||
HandlerPoints: number;
|
HandlerPoints: number;
|
||||||
MiscItems: IMiscItem[];
|
MiscItems: IMiscItem[];
|
||||||
@ -404,6 +396,9 @@ export interface ICrewShipSalvagedWeaponSkin {
|
|||||||
ItemType: string;
|
ItemType: string;
|
||||||
UpgradeFingerprint?: string;
|
UpgradeFingerprint?: string;
|
||||||
ItemId?: IOid;
|
ItemId?: IOid;
|
||||||
|
ParentId?: IOid;
|
||||||
|
Slot?: number;
|
||||||
|
_pid?: Types.ObjectId;
|
||||||
_id?: Types.ObjectId;
|
_id?: Types.ObjectId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -666,9 +661,8 @@ export interface ILotusCustomization extends IItemConfig {
|
|||||||
|
|
||||||
export interface IMission {
|
export interface IMission {
|
||||||
Completes: number;
|
Completes: number;
|
||||||
Tier?: number;
|
|
||||||
Tag: string;
|
Tag: string;
|
||||||
RewardsCooldownTime?: IMongoDate;
|
BestRating?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface INemesisHistory {
|
export interface INemesisHistory {
|
||||||
@ -882,7 +876,6 @@ export interface INotePacks {
|
|||||||
|
|
||||||
export interface ITaunt {
|
export interface ITaunt {
|
||||||
node: string;
|
node: string;
|
||||||
state: "TS_UNLOCKED" | "TS_COMPLETED";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IWeaponSkinDatabase {
|
export interface IWeaponSkinDatabase {
|
||||||
|
@ -1,12 +1,7 @@
|
|||||||
export interface ILoginResponse extends Omit<IDatabaseAccountDocument, "email" | "password"> {
|
export interface ILoginResponse extends Omit<IDatabaseAccountDocument, "email" | "password"> {
|
||||||
Groups: IGroup[];
|
BuildLabel?: string;
|
||||||
BuildLabel: string;
|
NatHash?: string;
|
||||||
MatchmakingBuildId: string;
|
SteamId?: string;
|
||||||
platformCDNs: string[];
|
|
||||||
NRS: string[];
|
|
||||||
DTLS: number;
|
|
||||||
IRC: string[];
|
|
||||||
HUB: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Includes virtual ID
|
// Includes virtual ID
|
||||||
@ -20,27 +15,14 @@ export interface IGroup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface IDatabaseAccount {
|
export interface IDatabaseAccount {
|
||||||
email: string;
|
email?: string;
|
||||||
password: string;
|
password: string;
|
||||||
DisplayName: string;
|
DisplayName?: string;
|
||||||
CountryCode: string;
|
Nonce?: number;
|
||||||
ClientType: string;
|
|
||||||
CrossPlatformAllowed: boolean;
|
|
||||||
ForceLogoutVersion: number;
|
|
||||||
AmazonAuthToken?: string;
|
|
||||||
AmazonRefreshToken?: string;
|
|
||||||
ConsentNeeded: boolean;
|
|
||||||
TrackedSettings: string[];
|
|
||||||
Nonce: number;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ILoginRequest {
|
export interface ILoginRequest {
|
||||||
email: string;
|
email: string;
|
||||||
password: string;
|
password: string;
|
||||||
time: number;
|
ClientType?: string;
|
||||||
s: string;
|
|
||||||
lang: string;
|
|
||||||
date: number;
|
|
||||||
ClientType: string;
|
|
||||||
PS: string;
|
|
||||||
}
|
}
|
||||||
|
@ -23,30 +23,9 @@ export type IBinChanges = {
|
|||||||
Extra?: number;
|
Extra?: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type SlotPurchaseName =
|
export type SlotPurchaseName = "SuitSlotItem" | "TwoSentinelSlotItem" | "TwoWeaponSlotItem";
|
||||||
| "SuitSlotItem"
|
|
||||||
| "TwoSentinelSlotItem"
|
|
||||||
| "TwoWeaponSlotItem"
|
|
||||||
| "SpaceSuitSlotItem"
|
|
||||||
| "TwoSpaceWeaponSlotItem"
|
|
||||||
| "MechSlotItem"
|
|
||||||
| "TwoOperatorWeaponSlotItem"
|
|
||||||
| "RandomModSlotItem"
|
|
||||||
| "TwoCrewShipSalvageSlotItem"
|
|
||||||
| "CrewMemberSlotItem";
|
|
||||||
|
|
||||||
export type SlotNames =
|
export type SlotNames = "SuitBin" | "WeaponBin" | "MechBin" | "PveBonusLoadoutBin" | "SentinelBin";
|
||||||
| "SuitBin"
|
|
||||||
| "WeaponBin"
|
|
||||||
| "MechBin"
|
|
||||||
| "PveBonusLoadoutBin"
|
|
||||||
| "SentinelBin"
|
|
||||||
| "SpaceSuitBin"
|
|
||||||
| "SpaceWeaponBin"
|
|
||||||
| "OperatorAmpBin"
|
|
||||||
| "RandomModBin"
|
|
||||||
| "CrewShipSalvageBin"
|
|
||||||
| "CrewMemberBin";
|
|
||||||
|
|
||||||
export type SlotPurchase = {
|
export type SlotPurchase = {
|
||||||
[P in SlotPurchaseName]: { name: SlotNames; slotsPerPurchase: number };
|
[P in SlotPurchaseName]: { name: SlotNames; slotsPerPurchase: number };
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { IOid } from "./commonTypes";
|
import { IOid } from "./commonTypes";
|
||||||
import { ArtifactPolarity, IPolarity, IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes";
|
import { IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes";
|
||||||
import {
|
import {
|
||||||
IBooster,
|
IBooster,
|
||||||
IChallengeProgress,
|
IChallengeProgress,
|
||||||
@ -99,6 +99,26 @@ export interface IUpdateGlyphRequest {
|
|||||||
AvatarImage: string;
|
AvatarImage: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IUpgradesRequest {
|
||||||
|
Category: TEquipmentKey;
|
||||||
|
Weapon: IWeapon;
|
||||||
|
UpgradesToAttach: IUpgradesToAttach[];
|
||||||
|
UpgradesToDetach: IUpgradesToDetach[];
|
||||||
|
Cost: number;
|
||||||
|
UpgradeReq: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IWeapon {
|
||||||
|
ItemType: string;
|
||||||
|
ItemId: IOid;
|
||||||
|
XP: number;
|
||||||
|
UpgradeVer: number;
|
||||||
|
UnlockLevel: number;
|
||||||
|
ExtraCapacity: number;
|
||||||
|
ExtraRemaining: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
export interface IUpgradesRequest {
|
export interface IUpgradesRequest {
|
||||||
ItemCategory: TEquipmentKey;
|
ItemCategory: TEquipmentKey;
|
||||||
ItemId: IOid;
|
ItemId: IOid;
|
||||||
@ -106,11 +126,28 @@ export interface IUpgradesRequest {
|
|||||||
UpgradeVersion: number;
|
UpgradeVersion: number;
|
||||||
Operations: IUpgradeOperation[];
|
Operations: IUpgradeOperation[];
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
export interface IUpgradeOperation {
|
export interface IUpgradesToAttach {
|
||||||
OperationType: string;
|
ItemType: string;
|
||||||
UpgradeRequirement: string; // uniqueName of item being consumed
|
ItemId: IOid;
|
||||||
PolarizeSlot: number;
|
UpgradeFingerprint: string;
|
||||||
PolarizeValue: ArtifactPolarity;
|
Slot: number;
|
||||||
PolarityRemap: IPolarity[];
|
ParentId: IOid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IUpgradesToDetach {
|
||||||
|
ItemType: string;
|
||||||
|
ItemId: IOid;
|
||||||
|
UpgradeFingerprint: string;
|
||||||
|
Slot: number;
|
||||||
|
ParentId: IOid;
|
||||||
|
}
|
||||||
|
|
||||||
|
// export interface IUpgradeOperation {
|
||||||
|
// OperationType: string;
|
||||||
|
// UpgradeRequirement: string; // uniqueName of item being consumed
|
||||||
|
// PolarizeSlot: number;
|
||||||
|
// PolarizeValue: ArtifactPolarity;
|
||||||
|
// PolarityRemap: IPolarity[];
|
||||||
|
// }
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"VendorInfo": {
|
"VendorInfo": {
|
||||||
"_id": { "$oid": "62695b0467e5d379750f9f75" },
|
"_id": { "$id": "62695b0467e5d379750f9f75" },
|
||||||
"TypeName": "/Lotus/Types/Game/VendorManifests/Zariman/ArchimedeanVendorManifest",
|
"TypeName": "/Lotus/Types/Game/VendorManifests/Zariman/ArchimedeanVendorManifest",
|
||||||
"ItemManifest": [
|
"ItemManifest": [
|
||||||
{
|
{
|
||||||
@ -10,7 +10,7 @@
|
|||||||
"QuantityMultiplier": 1,
|
"QuantityMultiplier": 1,
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
||||||
"AllowMultipurchase": true,
|
"AllowMultipurchase": true,
|
||||||
"Id": { "$oid": "63ed01ef4c37f93d0b797826" }
|
"Id": { "$id": "63ed01ef4c37f93d0b797826" }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"StoreItem": "/Lotus/StoreItems/Types/Items/ShipDecos/VoidPlumeBOrnament",
|
"StoreItem": "/Lotus/StoreItems/Types/Items/ShipDecos/VoidPlumeBOrnament",
|
||||||
@ -19,7 +19,7 @@
|
|||||||
"QuantityMultiplier": 1,
|
"QuantityMultiplier": 1,
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
||||||
"AllowMultipurchase": true,
|
"AllowMultipurchase": true,
|
||||||
"Id": { "$oid": "63ed01ef4c37f93d0b797827" }
|
"Id": { "$id": "63ed01ef4c37f93d0b797827" }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"StoreItem": "/Lotus/StoreItems/Types/Items/MiscItems/Kuva",
|
"StoreItem": "/Lotus/StoreItems/Types/Items/MiscItems/Kuva",
|
||||||
@ -29,7 +29,7 @@
|
|||||||
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
||||||
"PurchaseQuantityLimit": 1,
|
"PurchaseQuantityLimit": 1,
|
||||||
"AllowMultipurchase": false,
|
"AllowMultipurchase": false,
|
||||||
"Id": { "$oid": "66664112af1177b5070ab882" }
|
"Id": { "$id": "66664112af1177b5070ab882" }
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"PropertyTextHash": "DB7BF03C3FE6D0036A4DC30066A9A17E",
|
"PropertyTextHash": "DB7BF03C3FE6D0036A4DC30066A9A17E",
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"VendorInfo": {
|
"VendorInfo": {
|
||||||
"_id": {
|
"_id": {
|
||||||
"$oid": "598a090d9a4a313746fd1f24"
|
"$id": "598a090d9a4a313746fd1f24"
|
||||||
},
|
},
|
||||||
"TypeName": "/Lotus/Types/Game/VendorManifests/Ostron/MaskSalesmanManifest",
|
"TypeName": "/Lotus/Types/Game/VendorManifests/Ostron/MaskSalesmanManifest",
|
||||||
"ItemManifest": [
|
"ItemManifest": [
|
||||||
@ -23,7 +23,7 @@
|
|||||||
},
|
},
|
||||||
"AllowMultipurchase": true,
|
"AllowMultipurchase": true,
|
||||||
"Id": {
|
"Id": {
|
||||||
"$oid": "63ed01ef4c37f93d0b797674"
|
"$id": "63ed01ef4c37f93d0b797674"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -59,7 +59,7 @@
|
|||||||
},
|
},
|
||||||
"AllowMultipurchase": true,
|
"AllowMultipurchase": true,
|
||||||
"Id": {
|
"Id": {
|
||||||
"$oid": "63ed01ef4c37f93d0b797675"
|
"$id": "63ed01ef4c37f93d0b797675"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -95,7 +95,7 @@
|
|||||||
},
|
},
|
||||||
"AllowMultipurchase": true,
|
"AllowMultipurchase": true,
|
||||||
"Id": {
|
"Id": {
|
||||||
"$oid": "63ed01ef4c37f93d0b797676"
|
"$id": "63ed01ef4c37f93d0b797676"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -131,7 +131,7 @@
|
|||||||
},
|
},
|
||||||
"AllowMultipurchase": true,
|
"AllowMultipurchase": true,
|
||||||
"Id": {
|
"Id": {
|
||||||
"$oid": "63ed01ef4c37f93d0b797677"
|
"$id": "63ed01ef4c37f93d0b797677"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -157,7 +157,7 @@
|
|||||||
},
|
},
|
||||||
"AllowMultipurchase": true,
|
"AllowMultipurchase": true,
|
||||||
"Id": {
|
"Id": {
|
||||||
"$oid": "6651291214e90115b91b50a1"
|
"$id": "6651291214e90115b91b50a1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -183,7 +183,7 @@
|
|||||||
},
|
},
|
||||||
"AllowMultipurchase": true,
|
"AllowMultipurchase": true,
|
||||||
"Id": {
|
"Id": {
|
||||||
"$oid": "6651291214e90115b91b50a2"
|
"$id": "6651291214e90115b91b50a2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -209,7 +209,7 @@
|
|||||||
},
|
},
|
||||||
"AllowMultipurchase": true,
|
"AllowMultipurchase": true,
|
||||||
"Id": {
|
"Id": {
|
||||||
"$oid": "6651291214e90115b91b50a3"
|
"$id": "6651291214e90115b91b50a3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -235,7 +235,7 @@
|
|||||||
},
|
},
|
||||||
"AllowMultipurchase": true,
|
"AllowMultipurchase": true,
|
||||||
"Id": {
|
"Id": {
|
||||||
"$oid": "6651291214e90115b91b50a4"
|
"$id": "6651291214e90115b91b50a4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -261,7 +261,7 @@
|
|||||||
},
|
},
|
||||||
"AllowMultipurchase": true,
|
"AllowMultipurchase": true,
|
||||||
"Id": {
|
"Id": {
|
||||||
"$oid": "6651291214e90115b91b50a5"
|
"$id": "6651291214e90115b91b50a5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -287,7 +287,7 @@
|
|||||||
},
|
},
|
||||||
"AllowMultipurchase": true,
|
"AllowMultipurchase": true,
|
||||||
"Id": {
|
"Id": {
|
||||||
"$oid": "6651291214e90115b91b50a6"
|
"$id": "6651291214e90115b91b50a6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"VendorInfo": {
|
"VendorInfo": {
|
||||||
"_id": { "$oid": "62a20ba667e5d3797540d831" },
|
"_id": { "$id": "62a20ba667e5d3797540d831" },
|
||||||
"TypeName": "/Lotus/Types/Game/VendorManifests/Zariman/ZarimanCommisionsManifestArchimedean",
|
"TypeName": "/Lotus/Types/Game/VendorManifests/Zariman/ZarimanCommisionsManifestArchimedean",
|
||||||
"ItemManifest": [
|
"ItemManifest": [
|
||||||
{
|
{
|
||||||
@ -14,7 +14,7 @@
|
|||||||
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
||||||
"PurchaseQuantityLimit": 1,
|
"PurchaseQuantityLimit": 1,
|
||||||
"AllowMultipurchase": false,
|
"AllowMultipurchase": false,
|
||||||
"Id": { "$oid": "6678b612aa3d8ee5c2597299" }
|
"Id": { "$id": "6678b612aa3d8ee5c2597299" }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskD",
|
"StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskD",
|
||||||
@ -27,7 +27,7 @@
|
|||||||
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
||||||
"PurchaseQuantityLimit": 1,
|
"PurchaseQuantityLimit": 1,
|
||||||
"AllowMultipurchase": false,
|
"AllowMultipurchase": false,
|
||||||
"Id": { "$oid": "6678b612aa3d8ee5c259729a" }
|
"Id": { "$id": "6678b612aa3d8ee5c259729a" }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskC",
|
"StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskC",
|
||||||
@ -40,7 +40,7 @@
|
|||||||
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
||||||
"PurchaseQuantityLimit": 1,
|
"PurchaseQuantityLimit": 1,
|
||||||
"AllowMultipurchase": false,
|
"AllowMultipurchase": false,
|
||||||
"Id": { "$oid": "6678b612aa3d8ee5c259729b" }
|
"Id": { "$id": "6678b612aa3d8ee5c259729b" }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskB",
|
"StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskB",
|
||||||
@ -53,7 +53,7 @@
|
|||||||
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
||||||
"PurchaseQuantityLimit": 1,
|
"PurchaseQuantityLimit": 1,
|
||||||
"AllowMultipurchase": false,
|
"AllowMultipurchase": false,
|
||||||
"Id": { "$oid": "6678b612aa3d8ee5c259729c" }
|
"Id": { "$id": "6678b612aa3d8ee5c259729c" }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskA",
|
"StoreItem": "/Lotus/Types/StoreItems/Packages/Tasks/Zariman/AchimedeanTaskA",
|
||||||
@ -66,7 +66,7 @@
|
|||||||
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
"Expiry": { "$date": { "$numberLong": "9999999000000" } },
|
||||||
"PurchaseQuantityLimit": 1,
|
"PurchaseQuantityLimit": 1,
|
||||||
"AllowMultipurchase": false,
|
"AllowMultipurchase": false,
|
||||||
"Id": { "$oid": "6678b612aa3d8ee5c259729d" }
|
"Id": { "$id": "6678b612aa3d8ee5c259729d" }
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"PropertyTextHash": "F43F0ED811985EEF856970A8342EF322",
|
"PropertyTextHash": "F43F0ED811985EEF856970A8342EF322",
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
"DrifterMelee": [
|
"DrifterMelee": [
|
||||||
{
|
{
|
||||||
"ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords",
|
"ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords",
|
||||||
"ItemId": { "$oid": "removed" }
|
"ItemId": { "$id": "removed" }
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"FusionPoints": 0,
|
"FusionPoints": 0,
|
||||||
@ -23,7 +23,7 @@
|
|||||||
"SpaceWeaponBin": { "Slots": 4 },
|
"SpaceWeaponBin": { "Slots": 4 },
|
||||||
"SuitBin": { "Slots": 2 },
|
"SuitBin": { "Slots": 2 },
|
||||||
"WeaponBin": { "Slots": 8 },
|
"WeaponBin": { "Slots": 8 },
|
||||||
"LastInventorySync": { "$oid": "removed" },
|
"LastInventorySync": { "$id": "removed" },
|
||||||
"NextRefill": { "$date": { "$numberLong": "removed" } },
|
"NextRefill": { "$date": { "$numberLong": "removed" } },
|
||||||
"ActiveLandscapeTraps": [],
|
"ActiveLandscapeTraps": [],
|
||||||
"ChallengeProgress": [],
|
"ChallengeProgress": [],
|
||||||
@ -59,7 +59,7 @@
|
|||||||
"Scoops": [],
|
"Scoops": [],
|
||||||
"Sentinels": [],
|
"Sentinels": [],
|
||||||
"SentinelWeapons": [],
|
"SentinelWeapons": [],
|
||||||
"Ships": [{ "ItemType": "/Lotus/Types/Items/Ships/DefaultShip", "ItemId": { "$oid": "123123" } }],
|
"Ships": [{ "ItemType": "/Lotus/Types/Items/Ships/DefaultShip", "ItemId": { "$id": "123123" } }],
|
||||||
"SpaceGuns": [],
|
"SpaceGuns": [],
|
||||||
"SpaceMelee": [],
|
"SpaceMelee": [],
|
||||||
"SpaceSuits": [],
|
"SpaceSuits": [],
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"RewardSeed": -5604904486637265640,
|
"RewardSeed": -5604904486637265640,
|
||||||
"CrewMemberBin": { "Slots": 3 },
|
"CrewMemberBin": { "Slots": 3 },
|
||||||
"CrewShipSalvageBin": { "Slots": 8 },
|
"CrewShipSalvageBin": { "Slots": 8 },
|
||||||
"DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$oid": "647bb619e15fa43f0ee4b1b1" } }],
|
"DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$id": "647bb619e15fa43f0ee4b1b1" } }],
|
||||||
"FusionPoints": 0,
|
"FusionPoints": 0,
|
||||||
"MechBin": { "Slots": 4 },
|
"MechBin": { "Slots": 4 },
|
||||||
"OperatorAmpBin": { "Slots": 8 },
|
"OperatorAmpBin": { "Slots": 8 },
|
||||||
@ -18,7 +18,7 @@
|
|||||||
"SpaceWeaponBin": { "Slots": 4 },
|
"SpaceWeaponBin": { "Slots": 4 },
|
||||||
"SuitBin": { "Slots": 2 },
|
"SuitBin": { "Slots": 2 },
|
||||||
"WeaponBin": { "Slots": 8 },
|
"WeaponBin": { "Slots": 8 },
|
||||||
"LastInventorySync": { "$oid": "647bb5d79f963c9d24668257" },
|
"LastInventorySync": { "$id": "647bb5d79f963c9d24668257" },
|
||||||
"NextRefill": { "$date": { "$numberLong": "1685829131" } },
|
"NextRefill": { "$date": { "$numberLong": "1685829131" } },
|
||||||
"ActiveLandscapeTraps": [],
|
"ActiveLandscapeTraps": [],
|
||||||
"ChallengeProgress": [],
|
"ChallengeProgress": [],
|
||||||
|
@ -2,163 +2,736 @@
|
|||||||
"SubscribedToEmails": 0,
|
"SubscribedToEmails": 0,
|
||||||
"SubscribedToEmailsPersonalized": 0,
|
"SubscribedToEmailsPersonalized": 0,
|
||||||
"RewardSeed": -5604904486637265640,
|
"RewardSeed": -5604904486637265640,
|
||||||
"CrewMemberBin": { "Slots": 3 },
|
|
||||||
"CrewShipSalvageBin": { "Slots": 8 },
|
|
||||||
"DrifterMelee": [{ "ItemType": "/Lotus/Types/Friendly/PlayerControllable/Weapons/DuviriDualSwords", "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
|
|
||||||
"FusionPoints": 0,
|
|
||||||
"MechBin": { "Slots": 4 },
|
|
||||||
"OperatorAmpBin": { "Slots": 8 },
|
|
||||||
"PveBonusLoadoutBin": { "Slots": 0 },
|
|
||||||
"PvpBonusLoadoutBin": { "Slots": 0 },
|
|
||||||
"RandomModBin": { "Slots": 15 },
|
|
||||||
"RegularCredits": 3000,
|
"RegularCredits": 3000,
|
||||||
"SentinelBin": { "Slots": 10 },
|
"SentinelBin": {
|
||||||
"SpaceSuitBin": { "Slots": 4 },
|
"Slots": 10
|
||||||
"SpaceWeaponBin": { "Slots": 4 },
|
},
|
||||||
"SuitBin": { "Slots": 1 },
|
"SpaceSuitBin": {
|
||||||
"WeaponBin": { "Slots": 5 },
|
"Slots": 4
|
||||||
"DailyAffiliation": 16000,
|
},
|
||||||
"DailyAffiliationCetus": 16000,
|
"SpaceWeaponBin": {
|
||||||
"DailyAffiliationEntrati": 16000,
|
"Slots": 4
|
||||||
"DailyAffiliationKahl": 16000,
|
},
|
||||||
"DailyAffiliationLibrary": 16000,
|
"SuitBin": {
|
||||||
"DailyAffiliationNecraloid": 16000,
|
"Slots": 1
|
||||||
"DailyAffiliationPvp": 16000,
|
},
|
||||||
"DailyAffiliationQuills": 16000,
|
"WeaponBin": {
|
||||||
"DailyAffiliationSolaris": 16000,
|
"Slots": 5
|
||||||
"DailyAffiliationVentkids": 16000,
|
},
|
||||||
"DailyAffiliationVox": 16000,
|
"Recipes": [],
|
||||||
"DailyAffiliationZariman": 16000,
|
"ChallengeProgress": [
|
||||||
"DailyAffiliationCavia": 16000,
|
|
||||||
"DailyFocus": 250000,
|
|
||||||
"DuviriInfo": { "Seed": 5898912197983600352, "NumCompletions": 0 },
|
|
||||||
"GiftsRemaining": 8,
|
|
||||||
"TradesRemaining": 0,
|
|
||||||
"Recipes": [{ "ItemCount": 1, "ItemType": "/Lotus/Types/Recipes/Weapons/BoltonfaBlueprint" }],
|
|
||||||
"SeasonChallengeHistory": [
|
|
||||||
{ "challenge": "SeasonDailySolveCiphers", "id": "001000220000000000000308" },
|
|
||||||
{ "challenge": "SeasonDailyVisitFeaturedDojo", "id": "001000230000000000000316" },
|
|
||||||
{ "challenge": "SeasonDailyKillEnemiesWithRadiation", "id": "001000230000000000000317" },
|
|
||||||
{ "challenge": "SeasonWeeklyCompleteSortie", "id": "001000230000000000000309" },
|
|
||||||
{ "challenge": "SeasonWeeklyVenusBounties", "id": "001000230000000000000310" },
|
|
||||||
{ "challenge": "SeasonWeeklyZarimanBountyHunter", "id": "001000230000000000000311" },
|
|
||||||
{ "challenge": "SeasonWeeklyCatchRarePlainsFish", "id": "001000230000000000000312" },
|
|
||||||
{ "challenge": "SeasonWeeklyKillArchgunEnemies", "id": "001000230000000000000313" },
|
|
||||||
{ "challenge": "SeasonWeeklyHardKillSilverGroveSpecters", "id": "001000230000000000000314" },
|
|
||||||
{ "challenge": "SeasonWeeklyHardKillRopalolyst", "id": "001000230000000000000315" }
|
|
||||||
],
|
],
|
||||||
"StoryModeChoice": "WARFRAME",
|
"Consumables": [
|
||||||
"ChallengeProgress": [{ "Progress": 2, "Name": "EMGetKills" }],
|
|
||||||
"ChallengesFixVersion": 6,
|
|
||||||
"ActiveQuest": "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain",
|
|
||||||
"Consumables": [{ "ItemCount": 1, "ItemType": "/Lotus/Types/Restoratives/LisetAutoHack" }],
|
|
||||||
"DataKnives": [{ "ItemType": "/Lotus/Weapons/Tenno/HackingDevices/TnHackingDevice/TnHackingDeviceWeapon", "XP": 450000, "ItemId": { "$oid": "647bd274f22fc794a2cd3d33" } }],
|
|
||||||
"FlavourItems": [
|
|
||||||
{ "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem1" },
|
|
||||||
{ "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem2" },
|
|
||||||
{ "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem3" },
|
|
||||||
{ "ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem4" }
|
|
||||||
],
|
|
||||||
"LongGuns": [{ "ItemType": "/Lotus/Weapons/MK1Series/MK1Paris", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
|
|
||||||
"Melee": [{ "ItemType": "/Lotus/Weapons/Tenno/Melee/LongSword/LongSword", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
|
|
||||||
"Pistols": [{ "ItemType": "/Lotus/Weapons/MK1Series/MK1Kunai", "XP": 0, "Configs": [{}, {}, {}], "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
|
|
||||||
"PlayedParkourTutorial": true,
|
|
||||||
"PremiumCreditsFree": 50,
|
|
||||||
"QuestKeys": [{ "ItemType": "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain" }],
|
|
||||||
"RawUpgrades": [{ "ItemCount": 1, "LastAdded": { "$oid": "6450f9bfe0714a4d6703f05f" }, "ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarShieldMaxMod" }],
|
|
||||||
"ReceivedStartingGear": true,
|
|
||||||
"Scoops": [{ "ItemType": "/Lotus/Weapons/Tenno/Speedball/SpeedballWeaponTest", "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
|
|
||||||
"Ships": [{ "ItemType": "/Lotus/Types/Items/Ships/DefaultShip", "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
|
|
||||||
"Suits": [{ "ItemType": "/Lotus/Powersuits/Volt/Volt", "XP": 0, "Configs": [{}, {}, {}], "UpgradeVer": 101, "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
|
|
||||||
"TrainingRetriesLeft": 0,
|
|
||||||
"WeaponSkins": [{ "ItemType": "/Lotus/Upgrades/Skins/Volt/VoltHelmet", "ItemId": { "$oid": "647bd27cf856530b4f3bf343" } }],
|
|
||||||
"LastInventorySync": { "$oid": "647bd27cf856530b4f3bf343" },
|
|
||||||
"NextRefill": { "$date": { "$numberLong": "1685829131" } },
|
|
||||||
"ActiveLandscapeTraps": [],
|
|
||||||
"CrewMembers": [],
|
|
||||||
"CrewShips": [],
|
|
||||||
"CrewShipHarnesses": [],
|
|
||||||
"CrewShipSalvagedWeapons": [],
|
|
||||||
"CrewShipSalvagedWeaponSkins": [],
|
|
||||||
"CrewShipWeapons": [],
|
|
||||||
"CrewShipWeaponSkins": [],
|
|
||||||
"DrifterGuns": [],
|
|
||||||
"Drones": [],
|
|
||||||
"Horses": [
|
|
||||||
{
|
{
|
||||||
"ItemType": "/Lotus/Types/NeutralCreatures/ErsatzHorse/ErsatzHorsePowerSuit",
|
"ItemCount": 1,
|
||||||
"Configs": [
|
"ItemType": "/Lotus/Types/Restoratives/Cipher"
|
||||||
{
|
}
|
||||||
"Skins": ["", "", "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailDefault"]
|
],
|
||||||
},
|
"FlavourItems": [
|
||||||
{
|
{
|
||||||
"Skins": ["", "", "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailDefault"]
|
"ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Skins": ["", "", "/Lotus/Upgrades/Skins/Horse/ErsatzHorseTailDefault"]
|
"ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem2"
|
||||||
}
|
},
|
||||||
],
|
{
|
||||||
"UpgradeVer": 101,
|
"ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem3"
|
||||||
"ItemId": { "$oid": "647bd27cf856530b4f3bf343" }
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem4"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"LongGuns": [
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Weapons/Tenno/Bows/HuntingBow",
|
||||||
|
"XP": 1600000,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4e67cf73a8d6e04e7e9a"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Melee": [
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Weapons/Tenno/Melee/LongSword/LongSword",
|
||||||
|
"XP": 1600000,
|
||||||
|
"Configs": [
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4e73964ed8bf9c170702"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Pistols": [
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Weapons/Tenno/Pistol/Pistol",
|
||||||
|
"XP": 1600000,
|
||||||
|
"Configs": [
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
],
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4e777341e52ea2e36047"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"RawUpgrades": [
|
||||||
|
{
|
||||||
|
"ItemCount": 1,
|
||||||
|
"LastAdded": {
|
||||||
|
"$id": "66da4e7bf2af10b3817fad4d"
|
||||||
|
},
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarShieldMaxMod"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ReceivedStartingGear": true,
|
||||||
|
"TauntHistory": [
|
||||||
|
{
|
||||||
|
"node": "StarchartTutorial"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Suits": [
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Saryn/Saryn",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da532b09ec41258ff159b8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Banshee/Banshee",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4e85a1060bb337f16c49"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Ember/Ember",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4e87dad87a5b6379f3af"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Excalibur/Excalibur",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4e8939f75193b2f4d1c0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Excalibur/ExcaliburPrime",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4e8cb68236528b48024a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Frost/Frost",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4e8ecef38f3987982819"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Frost/FrostPrime",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4e91f299b711dcdda960"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Jade/Jade",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4e96ac68c487797efd62"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Loki/Loki",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4e9a036377a144b18384"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Mag/Mag",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4e9c87f5e8946b956e0c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Ninja/Ninja",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ea00612f3c7a763cdfc"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Rhino/Rhino",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ea4c2339c01b20ee6e1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Trinity/Trinity",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ea80785c8d085c03bdd"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Volt/Volt",
|
||||||
|
"XP": 1600000,
|
||||||
|
"UpgradeVer": 101,
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4eaad4b9bee7977f22f4"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"WeaponSkins": [
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Skins/Volt/VoltHelmet",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4eae34abc831f41f659b"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"Hoverboards": [],
|
|
||||||
"KubrowPets": [],
|
|
||||||
"KubrowPetEggs": [],
|
|
||||||
"KubrowPetPrints": [],
|
|
||||||
"MechSuits": [],
|
|
||||||
"MoaPets": [],
|
|
||||||
"OperatorAmps": [],
|
|
||||||
"OperatorLoadOuts": [],
|
|
||||||
"AdultOperatorLoadOuts": [],
|
|
||||||
"KahlLoadOuts": [],
|
|
||||||
"PendingRecipes": [],
|
"PendingRecipes": [],
|
||||||
"TrainingDate": 0,
|
"TrainingDate": 0,
|
||||||
"PlayerLevel": 0,
|
"PlayerLevel": 0,
|
||||||
"PersonalGoalProgress": [],
|
"CompletedAlerts": [],
|
||||||
"PersonalTechProjects": [],
|
|
||||||
"QualifyingInvasions": [],
|
|
||||||
"RepVotes": [],
|
|
||||||
"Sentinels": [],
|
"Sentinels": [],
|
||||||
"SentinelWeapons": [],
|
"SentinelWeapons": [],
|
||||||
"SpaceGuns": [],
|
|
||||||
"SpaceMelee": [],
|
|
||||||
"SpaceSuits": [],
|
|
||||||
"SpecialItems": [],
|
"SpecialItems": [],
|
||||||
"StepSequencers": [],
|
"StepSequencers": [],
|
||||||
"Upgrades": [],
|
"Upgrades": [
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponArmorPiercingDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4eb5d706a7112d4894f2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponCritChanceMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4eb7eef100b1f891583f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponCritDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ebaa75d24538a62c7a1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponElectricityDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ebc03b11c2026261dda"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponFireDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ebee8b2b0bbe0aa7521"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponFireRateMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ec11aaddcd4c7052165"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponFreezeDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ec3a18a84596c48fd0b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponMeleeChargeRateMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ec68f900c9dce77f25e"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponMeleeDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ecacd32891e29b87040"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponMeleeHeavyDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ecc6ecdc3addd7fbbc5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Melee/WeaponStunChanceMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ed133c3092002531ea0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponArmorPiercingDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ed3ca0126f4e0904987"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponCritChanceMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ed6e4d482a2fa7f4ae6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponCritDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ed8f11f76e0ec55734e"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponElectricityDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4edbecd4c71b40426652"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponFireDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4eddff15a60f25f27fe3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponFireRateMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4edfedd2c737249f27b1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponFreezeDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ee197751c11edbe480c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponStunChanceMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ee3099f9876c3d5f230"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponAmmoMaxMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ee5719f74045b713f58"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponClipMaxMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ee8f86349fd87a0c24d"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponDamageAmountMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4eea5c0f3babebe60c34"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponFireIterationsMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4eed5b41fbe202fe36b4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponPunctureDepthMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4eefaa75316cc3ab55f9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Pistol/WeaponReloadSpeedMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ef1e2a041e410a4276c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponArmorPiercingDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ef38b45f124a570e1f8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponCritChanceMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ef6dacaaa69d2fdbd8b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponCritDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4ef9d525b197f6f81473"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponElectricityDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4efc6fe23457bf37d021"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponFireDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4efe6401fdd0b48c6880"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponFireRateMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f06b7241e0e207cead3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponFreezeDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f0808923bd61b6c2053"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponStunChanceMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f0b02a680f83e14001b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponAmmoMaxMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f0d6df0e0588eb4b0d1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponClipMaxMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f10009fdfcf69ab2ec1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponDamageAmountMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f147ec9bcddfc5c07ad"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponFireIterationsMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f17f2368e85f09a853b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponPunctureDepthMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f1aae38e21d01a54857"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Rifle/WeaponReloadSpeedMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f1ca1256c2711fa7f05"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Sentinel/SentinelArmourMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f1eddde58b69f855d59"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Sentinel/SentinelHealthMaxMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f20956388914102602d"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Sentinel/SentinelShieldMaxMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f23e36bec4611cdc6a5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Sentinel/SentinelShieldRechargeRateMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f26cc54a853f617560e"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponArmorPiercingDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f28276333b2a81b2dd3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponCritChanceMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f2a809873a6291f6360"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponCritDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f2e1d8300362cd6c57c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponElectricityDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f30737bbae85f49943e"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponFireDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f321702c6013aa98f3f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponFireRateMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f3564da6f4896163167"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponFreezeDamageMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f38468122372c30f7f1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponStunChanceMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f38468122372c30f7f1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponAmmoMaxMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f3c2571c97042d79e6d"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponClipMaxMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f3fcf5e3e74f2652f5e"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponDamageAmountMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f430649a4b84f65ce37"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponFireIterationsMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f45ae2b2ad6215270a0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponPunctureDepthMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f4849a8970ba57019d0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Shotgun/WeaponReloadSpeedMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f4b5acc3304578859bf"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarAbilityDurationMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f4d7ab7e4017e17955f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarAbilityEfficiencyMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f4f0af01429193da436"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarAbilityRangeMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f51a94c498b42a03491"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarAbilityStrengthMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f5483fb4b98ac12b00d"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarArmourMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f5694b794ae96c5f470"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarEnemyRadarMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f59b0ecba3d09139e48"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarHealthMaxMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f5eb5770f99bf18d831"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarLootRadarMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f63bd77ab6e4842a88b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarPowerMaxMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f660b3c3565fd36d4ab"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarShieldMaxMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f6884fc768ed81ae47a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarShieldRechargeRateMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f6be96044a294480118"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarSprintSpeedMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f6db2ac0720a4bf2409"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarStaminaMaxMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f70ec6f7abf7520a356"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Upgrades/Mods/Warframe/AvatarStaminaRechargeRateMod",
|
||||||
|
"ItemId": {
|
||||||
|
"$id": "66da4f738ea387a9a484294d"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
"Boosters": [],
|
"Boosters": [],
|
||||||
"EmailItems": [],
|
"EmailItems": [],
|
||||||
"FocusUpgrades": [],
|
|
||||||
"FusionTreasures": [],
|
|
||||||
"LeagueTickets": [],
|
"LeagueTickets": [],
|
||||||
"LevelKeys": [],
|
|
||||||
"LoreFragmentScans": [],
|
|
||||||
"MiscItems": [],
|
"MiscItems": [],
|
||||||
"PendingSpectreLoadouts": [],
|
|
||||||
"Quests": [],
|
|
||||||
"Robotics": [],
|
"Robotics": [],
|
||||||
"ShipDecorations": [],
|
"XPInfo": [
|
||||||
"SpectreLoadouts": [],
|
{
|
||||||
"XPInfo": [],
|
"ItemType": "/Lotus/Powersuits/Saryn/Saryn",
|
||||||
"CrewShipAmmo": [],
|
"XP": 1600000
|
||||||
"CrewShipRawSalvage": [],
|
},
|
||||||
"EvolutionProgress": [],
|
{
|
||||||
"Missions": [],
|
"ItemType": "/Lotus/Powersuits/Banshee/Banshee",
|
||||||
"TauntHistory": [],
|
"XP": 1600000
|
||||||
"CompletedSyndicates": [],
|
},
|
||||||
"UsedDailyDeals": [],
|
{
|
||||||
"LibraryAvailableDailyTaskInfo": {
|
"ItemType": "/Lotus/Powersuits/Ember/Ember",
|
||||||
"EnemyTypes": ["/Lotus/Types/Enemies/Orokin/OrokinBladeSawmanAvatar"],
|
"XP": 1600000
|
||||||
"EnemyLocTag": "/Lotus/Language/Game/OrokinBladeSawman",
|
},
|
||||||
"EnemyIcon": "/Lotus/Interface/Icons/Npcs/Orokin/OrokinBladeSawman.png",
|
{
|
||||||
"ScansRequired": 4,
|
"ItemType": "/Lotus/Powersuits/Excalibur/Excalibur",
|
||||||
"RewardStoreItem": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/UncommonFusionBundle",
|
"XP": 1600000
|
||||||
"RewardQuantity": 10,
|
},
|
||||||
"RewardStanding": 10000
|
{
|
||||||
},
|
"ItemType": "/Lotus/Powersuits/Excalibur/ExcaliburPrime",
|
||||||
"HasContributedToDojo": false,
|
"XP": 1600000
|
||||||
"HasResetAccount": false,
|
},
|
||||||
"PendingCoupon": { "Expiry": { "$date": { "$numberLong": "0" } }, "Discount": 0 },
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Frost/Frost",
|
||||||
|
"XP": 1600000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Frost/FrostPrime",
|
||||||
|
"XP": 1600000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Jade/Jade",
|
||||||
|
"XP": 1600000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Loki/Loki",
|
||||||
|
"XP": 1600000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Mag/Mag",
|
||||||
|
"XP": 1600000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Ninja/Ninja",
|
||||||
|
"XP": 1600000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Rhino/Rhino",
|
||||||
|
"XP": 1600000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Trinity/Trinity",
|
||||||
|
"XP": 1600000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Powersuits/Volt/Volt",
|
||||||
|
"XP": 1600000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Weapons/Tenno/Bows/HuntingBow",
|
||||||
|
"XP": 1600000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Weapons/Tenno/Melee/LongSword/LongSword",
|
||||||
|
"XP": 1600000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ItemType": "/Lotus/Weapons/Tenno/Pistol/Pistol",
|
||||||
|
"XP": 1600000
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Missions": [
|
||||||
|
{
|
||||||
|
"Tag": "SolNode103",
|
||||||
|
"Completes": 1,
|
||||||
|
"BestRating": 0.2
|
||||||
|
}
|
||||||
|
],
|
||||||
"PremiumCredits": 50
|
"PremiumCredits": 50
|
||||||
}
|
}
|
@ -23,7 +23,7 @@
|
|||||||
],
|
],
|
||||||
"Sorties": [
|
"Sorties": [
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4c7d4d932c97c0a3acd7" },
|
"_id": { "$id": "663a4c7d4d932c97c0a3acd7" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097600000" } },
|
"Activation": { "$date": { "$numberLong": "1715097600000" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "1715184000000" } },
|
"Expiry": { "$date": { "$numberLong": "1715184000000" } },
|
||||||
"Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards",
|
"Reward": "/Lotus/Types/Game/MissionDecks/SortieRewards",
|
||||||
@ -40,7 +40,7 @@
|
|||||||
],
|
],
|
||||||
"LiteSorties": [
|
"LiteSorties": [
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663819fd1cec9ebe9d83a06e" },
|
"_id": { "$id": "663819fd1cec9ebe9d83a06e" },
|
||||||
"Activation": { "$date": { "$numberLong": "1714953600000" } },
|
"Activation": { "$date": { "$numberLong": "1714953600000" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "1715558400000" } },
|
"Expiry": { "$date": { "$numberLong": "1715558400000" } },
|
||||||
"Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards",
|
"Reward": "/Lotus/Types/Game/MissionDecks/ArchonSortieRewards",
|
||||||
@ -55,7 +55,7 @@
|
|||||||
],
|
],
|
||||||
"SyndicateMissions": [
|
"SyndicateMissions": [
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48049" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48049" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "ArbitersSyndicate",
|
"Tag": "ArbitersSyndicate",
|
||||||
@ -63,7 +63,7 @@
|
|||||||
"Nodes": ["SolNode223", "SolNode89", "SolNode146", "SolNode212", "SolNode167", "SolNode48", "SolNode78"]
|
"Nodes": ["SolNode223", "SolNode89", "SolNode146", "SolNode212", "SolNode167", "SolNode48", "SolNode78"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa4804a" },
|
"_id": { "$id": "663a4fc5ba6f84724fa4804a" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "CephalonSudaSyndicate",
|
"Tag": "CephalonSudaSyndicate",
|
||||||
@ -71,7 +71,7 @@
|
|||||||
"Nodes": ["SolNode36", "SolNode59", "SettlementNode12", "SolNode61", "SolNode12", "SolNode138", "SolNode72"]
|
"Nodes": ["SolNode36", "SolNode59", "SettlementNode12", "SolNode61", "SolNode12", "SolNode138", "SolNode72"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa4804c" },
|
"_id": { "$id": "663a4fc5ba6f84724fa4804c" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "EventSyndicate",
|
"Tag": "EventSyndicate",
|
||||||
@ -79,7 +79,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa4804b" },
|
"_id": { "$id": "663a4fc5ba6f84724fa4804b" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "NecraloidSyndicate",
|
"Tag": "NecraloidSyndicate",
|
||||||
@ -87,7 +87,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa4804d" },
|
"_id": { "$id": "663a4fc5ba6f84724fa4804d" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "KahlSyndicate",
|
"Tag": "KahlSyndicate",
|
||||||
@ -95,7 +95,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa4804e" },
|
"_id": { "$id": "663a4fc5ba6f84724fa4804e" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "NewLokaSyndicate",
|
"Tag": "NewLokaSyndicate",
|
||||||
@ -103,7 +103,7 @@
|
|||||||
"Nodes": ["SolNode101", "SolNode224", "SolNode205", "SettlementNode2", "SolNode171", "SolNode188", "SolNode75"]
|
"Nodes": ["SolNode101", "SolNode224", "SolNode205", "SettlementNode2", "SolNode171", "SolNode188", "SolNode75"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa4804f" },
|
"_id": { "$id": "663a4fc5ba6f84724fa4804f" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "QuillsSyndicate",
|
"Tag": "QuillsSyndicate",
|
||||||
@ -111,7 +111,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48050" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48050" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "PerrinSyndicate",
|
"Tag": "PerrinSyndicate",
|
||||||
@ -119,7 +119,7 @@
|
|||||||
"Nodes": ["SolNode39", "SolNode14", "SolNode203", "SolNode100", "SolNode130", "SolNode64", "SettlementNode15"]
|
"Nodes": ["SolNode39", "SolNode14", "SolNode203", "SolNode100", "SolNode130", "SolNode64", "SettlementNode15"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48052" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48052" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegion3Syndicate",
|
"Tag": "RadioLegion3Syndicate",
|
||||||
@ -127,7 +127,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48051" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48051" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegion2Syndicate",
|
"Tag": "RadioLegion2Syndicate",
|
||||||
@ -135,7 +135,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48053" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48053" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegionIntermission10Syndicate",
|
"Tag": "RadioLegionIntermission10Syndicate",
|
||||||
@ -143,7 +143,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48057" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48057" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegionIntermission5Syndicate",
|
"Tag": "RadioLegionIntermission5Syndicate",
|
||||||
@ -151,7 +151,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48055" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48055" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegionIntermission3Syndicate",
|
"Tag": "RadioLegionIntermission3Syndicate",
|
||||||
@ -159,7 +159,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48056" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48056" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegionIntermission4Syndicate",
|
"Tag": "RadioLegionIntermission4Syndicate",
|
||||||
@ -167,7 +167,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48054" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48054" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegionIntermission2Syndicate",
|
"Tag": "RadioLegionIntermission2Syndicate",
|
||||||
@ -175,7 +175,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48058" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48058" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegionIntermission6Syndicate",
|
"Tag": "RadioLegionIntermission6Syndicate",
|
||||||
@ -183,7 +183,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa4805c" },
|
"_id": { "$id": "663a4fc5ba6f84724fa4805c" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegionIntermissionSyndicate",
|
"Tag": "RadioLegionIntermissionSyndicate",
|
||||||
@ -191,7 +191,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa4805a" },
|
"_id": { "$id": "663a4fc5ba6f84724fa4805a" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegionIntermission8Syndicate",
|
"Tag": "RadioLegionIntermission8Syndicate",
|
||||||
@ -199,7 +199,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa4805b" },
|
"_id": { "$id": "663a4fc5ba6f84724fa4805b" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegionIntermission9Syndicate",
|
"Tag": "RadioLegionIntermission9Syndicate",
|
||||||
@ -207,7 +207,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48059" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48059" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegionIntermission7Syndicate",
|
"Tag": "RadioLegionIntermission7Syndicate",
|
||||||
@ -215,7 +215,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa4805d" },
|
"_id": { "$id": "663a4fc5ba6f84724fa4805d" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RadioLegionSyndicate",
|
"Tag": "RadioLegionSyndicate",
|
||||||
@ -223,7 +223,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa4805f" },
|
"_id": { "$id": "663a4fc5ba6f84724fa4805f" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "VentKidsSyndicate",
|
"Tag": "VentKidsSyndicate",
|
||||||
@ -231,7 +231,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa4805e" },
|
"_id": { "$id": "663a4fc5ba6f84724fa4805e" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "RedVeilSyndicate",
|
"Tag": "RedVeilSyndicate",
|
||||||
@ -239,7 +239,7 @@
|
|||||||
"Nodes": ["SolNode226", "SolNode79", "SolNode216", "SettlementNode11", "SolNode56", "SolNode41", "SolNode23"]
|
"Nodes": ["SolNode226", "SolNode79", "SolNode216", "SettlementNode11", "SolNode56", "SolNode41", "SolNode23"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48060" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48060" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "VoxSyndicate",
|
"Tag": "VoxSyndicate",
|
||||||
@ -247,7 +247,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a4fc5ba6f84724fa48061" },
|
"_id": { "$id": "663a4fc5ba6f84724fa48061" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
"Activation": { "$date": { "$numberLong": "1715097541439" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "SteelMeridianSyndicate",
|
"Tag": "SteelMeridianSyndicate",
|
||||||
@ -255,7 +255,7 @@
|
|||||||
"Nodes": ["SolNode27", "SolNode107", "SolNode214", "SettlementNode1", "SolNode177", "SolNode141", "SolNode408"]
|
"Nodes": ["SolNode27", "SolNode107", "SolNode214", "SettlementNode1", "SolNode177", "SolNode141", "SolNode408"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a71c80000000000000002" },
|
"_id": { "$id": "663a71c80000000000000002" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715106248403" } },
|
"Activation": { "$date": { "$numberLong": "1715106248403" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "EntratiSyndicate",
|
"Tag": "EntratiSyndicate",
|
||||||
@ -341,7 +341,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a71c80000000000000004" },
|
"_id": { "$id": "663a71c80000000000000004" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715106248403" } },
|
"Activation": { "$date": { "$numberLong": "1715106248403" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "EntratiLabSyndicate",
|
"Tag": "EntratiLabSyndicate",
|
||||||
@ -349,7 +349,7 @@
|
|||||||
"Nodes": []
|
"Nodes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a71c80000000000000008" },
|
"_id": { "$id": "663a71c80000000000000008" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715106248403" } },
|
"Activation": { "$date": { "$numberLong": "1715106248403" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "CetusSyndicate",
|
"Tag": "CetusSyndicate",
|
||||||
@ -415,7 +415,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a71c80000000000000025" },
|
"_id": { "$id": "663a71c80000000000000025" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715106248403" } },
|
"Activation": { "$date": { "$numberLong": "1715106248403" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "SolarisSyndicate",
|
"Tag": "SolarisSyndicate",
|
||||||
@ -481,7 +481,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a71c80000000000000029" },
|
"_id": { "$id": "663a71c80000000000000029" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715106248403" } },
|
"Activation": { "$date": { "$numberLong": "1715106248403" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Tag": "ZarimanSyndicate",
|
"Tag": "ZarimanSyndicate",
|
||||||
@ -491,7 +491,7 @@
|
|||||||
],
|
],
|
||||||
"ActiveMissions": [
|
"ActiveMissions": [
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a7509d93367863785932d" },
|
"_id": { "$id": "663a7509d93367863785932d" },
|
||||||
"Region": 15,
|
"Region": 15,
|
||||||
"Seed": 80795,
|
"Seed": 80795,
|
||||||
"Activation": { "$date": { "$numberLong": "1715107081517" } },
|
"Activation": { "$date": { "$numberLong": "1715107081517" } },
|
||||||
@ -502,7 +502,7 @@
|
|||||||
"Hard": true
|
"Hard": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a75f959a5964cadb39879" },
|
"_id": { "$id": "663a75f959a5964cadb39879" },
|
||||||
"Region": 19,
|
"Region": 19,
|
||||||
"Seed": 32067,
|
"Seed": 32067,
|
||||||
"Activation": { "$date": { "$numberLong": "1715107321237" } },
|
"Activation": { "$date": { "$numberLong": "1715107321237" } },
|
||||||
@ -513,7 +513,7 @@
|
|||||||
"Hard": true
|
"Hard": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a779d3e347839ff301814" },
|
"_id": { "$id": "663a779d3e347839ff301814" },
|
||||||
"Region": 7,
|
"Region": 7,
|
||||||
"Seed": 51739,
|
"Seed": 51739,
|
||||||
"Activation": { "$date": { "$numberLong": "1715107741454" } },
|
"Activation": { "$date": { "$numberLong": "1715107741454" } },
|
||||||
@ -523,7 +523,7 @@
|
|||||||
"Modifier": "VoidT3"
|
"Modifier": "VoidT3"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a77d916c199f4644ee67d" },
|
"_id": { "$id": "663a77d916c199f4644ee67d" },
|
||||||
"Region": 17,
|
"Region": 17,
|
||||||
"Seed": 61179,
|
"Seed": 61179,
|
||||||
"Activation": { "$date": { "$numberLong": "1715107801647" } },
|
"Activation": { "$date": { "$numberLong": "1715107801647" } },
|
||||||
@ -533,7 +533,7 @@
|
|||||||
"Modifier": "VoidT6"
|
"Modifier": "VoidT6"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a78c98a609b49b8410726" },
|
"_id": { "$id": "663a78c98a609b49b8410726" },
|
||||||
"Region": 3,
|
"Region": 3,
|
||||||
"Seed": 9520,
|
"Seed": 9520,
|
||||||
"Activation": { "$date": { "$numberLong": "1715108041501" } },
|
"Activation": { "$date": { "$numberLong": "1715108041501" } },
|
||||||
@ -544,7 +544,7 @@
|
|||||||
"Hard": true
|
"Hard": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a7df15eeabaac79b0a061" },
|
"_id": { "$id": "663a7df15eeabaac79b0a061" },
|
||||||
"Region": 6,
|
"Region": 6,
|
||||||
"Seed": 48861,
|
"Seed": 48861,
|
||||||
"Activation": { "$date": { "$numberLong": "1715109361974" } },
|
"Activation": { "$date": { "$numberLong": "1715109361974" } },
|
||||||
@ -555,7 +555,7 @@
|
|||||||
"Hard": true
|
"Hard": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a7df25eeabaac79b0a062" },
|
"_id": { "$id": "663a7df25eeabaac79b0a062" },
|
||||||
"Region": 5,
|
"Region": 5,
|
||||||
"Seed": 13550,
|
"Seed": 13550,
|
||||||
"Activation": { "$date": { "$numberLong": "1715109361974" } },
|
"Activation": { "$date": { "$numberLong": "1715109361974" } },
|
||||||
@ -566,7 +566,7 @@
|
|||||||
"Hard": true
|
"Hard": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a83cdec0d5181435f1324" },
|
"_id": { "$id": "663a83cdec0d5181435f1324" },
|
||||||
"Region": 19,
|
"Region": 19,
|
||||||
"Seed": 39392,
|
"Seed": 39392,
|
||||||
"Activation": { "$date": { "$numberLong": "1715110861506" } },
|
"Activation": { "$date": { "$numberLong": "1715110861506" } },
|
||||||
@ -576,7 +576,7 @@
|
|||||||
"Modifier": "VoidT5"
|
"Modifier": "VoidT5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a83cdec0d5181435f1325" },
|
"_id": { "$id": "663a83cdec0d5181435f1325" },
|
||||||
"Region": 19,
|
"Region": 19,
|
||||||
"Seed": 88668,
|
"Seed": 88668,
|
||||||
"Activation": { "$date": { "$numberLong": "1715110861506" } },
|
"Activation": { "$date": { "$numberLong": "1715110861506" } },
|
||||||
@ -586,7 +586,7 @@
|
|||||||
"Modifier": "VoidT5"
|
"Modifier": "VoidT5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a83cdec0d5181435f1326" },
|
"_id": { "$id": "663a83cdec0d5181435f1326" },
|
||||||
"Region": 19,
|
"Region": 19,
|
||||||
"Seed": 73823,
|
"Seed": 73823,
|
||||||
"Activation": { "$date": { "$numberLong": "1715110861506" } },
|
"Activation": { "$date": { "$numberLong": "1715110861506" } },
|
||||||
@ -596,7 +596,7 @@
|
|||||||
"Modifier": "VoidT5"
|
"Modifier": "VoidT5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a878d23d1514873170466" },
|
"_id": { "$id": "663a878d23d1514873170466" },
|
||||||
"Region": 9,
|
"Region": 9,
|
||||||
"Seed": 88696,
|
"Seed": 88696,
|
||||||
"Activation": { "$date": { "$numberLong": "1715111821951" } },
|
"Activation": { "$date": { "$numberLong": "1715111821951" } },
|
||||||
@ -607,7 +607,7 @@
|
|||||||
"Hard": true
|
"Hard": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a887d4903098c10992fe6" },
|
"_id": { "$id": "663a887d4903098c10992fe6" },
|
||||||
"Region": 6,
|
"Region": 6,
|
||||||
"Seed": 66337,
|
"Seed": 66337,
|
||||||
"Activation": { "$date": { "$numberLong": "1715112061729" } },
|
"Activation": { "$date": { "$numberLong": "1715112061729" } },
|
||||||
@ -617,7 +617,7 @@
|
|||||||
"Modifier": "VoidT2"
|
"Modifier": "VoidT2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a887d4903098c10992fe7" },
|
"_id": { "$id": "663a887d4903098c10992fe7" },
|
||||||
"Region": 10,
|
"Region": 10,
|
||||||
"Seed": 5135,
|
"Seed": 5135,
|
||||||
"Activation": { "$date": { "$numberLong": "1715112061729" } },
|
"Activation": { "$date": { "$numberLong": "1715112061729" } },
|
||||||
@ -627,7 +627,7 @@
|
|||||||
"Modifier": "VoidT2"
|
"Modifier": "VoidT2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a8931586c301b1fbe63d3" },
|
"_id": { "$id": "663a8931586c301b1fbe63d3" },
|
||||||
"Region": 15,
|
"Region": 15,
|
||||||
"Seed": 32180,
|
"Seed": 32180,
|
||||||
"Activation": { "$date": { "$numberLong": "1715112241196" } },
|
"Activation": { "$date": { "$numberLong": "1715112241196" } },
|
||||||
@ -637,7 +637,7 @@
|
|||||||
"Modifier": "VoidT4"
|
"Modifier": "VoidT4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a8931586c301b1fbe63d4" },
|
"_id": { "$id": "663a8931586c301b1fbe63d4" },
|
||||||
"Region": 12,
|
"Region": 12,
|
||||||
"Seed": 22521,
|
"Seed": 22521,
|
||||||
"Activation": { "$date": { "$numberLong": "1715112241196" } },
|
"Activation": { "$date": { "$numberLong": "1715112241196" } },
|
||||||
@ -647,7 +647,7 @@
|
|||||||
"Modifier": "VoidT4"
|
"Modifier": "VoidT4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a8931586c301b1fbe63d5" },
|
"_id": { "$id": "663a8931586c301b1fbe63d5" },
|
||||||
"Region": 2,
|
"Region": 2,
|
||||||
"Seed": 28500,
|
"Seed": 28500,
|
||||||
"Activation": { "$date": { "$numberLong": "1715112241196" } },
|
"Activation": { "$date": { "$numberLong": "1715112241196" } },
|
||||||
@ -657,7 +657,7 @@
|
|||||||
"Modifier": "VoidT1"
|
"Modifier": "VoidT1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a8931586c301b1fbe63d6" },
|
"_id": { "$id": "663a8931586c301b1fbe63d6" },
|
||||||
"Region": 3,
|
"Region": 3,
|
||||||
"Seed": 24747,
|
"Seed": 24747,
|
||||||
"Activation": { "$date": { "$numberLong": "1715112241196" } },
|
"Activation": { "$date": { "$numberLong": "1715112241196" } },
|
||||||
@ -667,7 +667,7 @@
|
|||||||
"Modifier": "VoidT1"
|
"Modifier": "VoidT1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a8931586c301b1fbe63d7" },
|
"_id": { "$id": "663a8931586c301b1fbe63d7" },
|
||||||
"Region": 17,
|
"Region": 17,
|
||||||
"Seed": 63914,
|
"Seed": 63914,
|
||||||
"Activation": { "$date": { "$numberLong": "1715112241196" } },
|
"Activation": { "$date": { "$numberLong": "1715112241196" } },
|
||||||
@ -679,19 +679,19 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"NodeOverrides": [
|
"NodeOverrides": [
|
||||||
{ "_id": { "$oid": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true },
|
{ "_id": { "$id": "549b18e9b029cef5991d6aec" }, "Node": "EuropaHUB", "Hide": true },
|
||||||
{ "_id": { "$oid": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true },
|
{ "_id": { "$id": "54a1737aeb658f6cbccf70ff" }, "Node": "ErisHUB", "Hide": true },
|
||||||
{ "_id": { "$oid": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true },
|
{ "_id": { "$id": "54a736ddec12f80bd6e9e326" }, "Node": "VenusHUB", "Hide": true },
|
||||||
{ "_id": { "$oid": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9969639 },
|
{ "_id": { "$id": "5ad9f9bb6df82a56eabf3d44" }, "Node": "SolNode802", "Seed": 9969639 },
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "5b8817c2bd4f253264d6aa91" },
|
"_id": { "$id": "5b8817c2bd4f253264d6aa91" },
|
||||||
"Node": "EarthHUB",
|
"Node": "EarthHUB",
|
||||||
"Hide": false,
|
"Hide": false,
|
||||||
"LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubTwoB",
|
"LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubTwoB",
|
||||||
"Activation": { "$date": { "$numberLong": "1535646600000" } }
|
"Activation": { "$date": { "$numberLong": "1535646600000" } }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "5d24d1f674491d51f8d44473" },
|
"_id": { "$id": "5d24d1f674491d51f8d44473" },
|
||||||
"Node": "MercuryHUB",
|
"Node": "MercuryHUB",
|
||||||
"Hide": true,
|
"Hide": true,
|
||||||
"LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid",
|
"LevelOverride": "/Lotus/Levels/Proc/Hub/RelayStationHubHydroid",
|
||||||
@ -700,7 +700,7 @@
|
|||||||
],
|
],
|
||||||
"VoidTraders": [
|
"VoidTraders": [
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "5d1e07a0a38e4a4fdd7cefca" },
|
"_id": { "$id": "5d1e07a0a38e4a4fdd7cefca" },
|
||||||
"Activation": { "$date": { "$numberLong": "0" } },
|
"Activation": { "$date": { "$numberLong": "0" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Character": "Baro'Ki Teel",
|
"Character": "Baro'Ki Teel",
|
||||||
@ -736,7 +736,7 @@
|
|||||||
],
|
],
|
||||||
"PrimeVaultTraders": [
|
"PrimeVaultTraders": [
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "631f8c4ac36af423770eaa97" },
|
"_id": { "$id": "631f8c4ac36af423770eaa97" },
|
||||||
"Activation": { "$date": { "$numberLong": "1712858400000" } },
|
"Activation": { "$date": { "$numberLong": "1712858400000" } },
|
||||||
"InitialStartDate": { "$date": { "$numberLong": "9999999999999" } },
|
"InitialStartDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Node": "TradeHUB1",
|
"Node": "TradeHUB1",
|
||||||
@ -896,42 +896,42 @@
|
|||||||
],
|
],
|
||||||
"VoidStorms": [
|
"VoidStorms": [
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a7581ced28e18f694b550" },
|
"_id": { "$id": "663a7581ced28e18f694b550" },
|
||||||
"Node": "CrewBattleNode519",
|
"Node": "CrewBattleNode519",
|
||||||
"Activation": { "$date": { "$numberLong": "1715109601821" } },
|
"Activation": { "$date": { "$numberLong": "1715109601821" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"ActiveMissionTier": "VoidT1"
|
"ActiveMissionTier": "VoidT1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a7581ced28e18f694b551" },
|
"_id": { "$id": "663a7581ced28e18f694b551" },
|
||||||
"Node": "CrewBattleNode515",
|
"Node": "CrewBattleNode515",
|
||||||
"Activation": { "$date": { "$numberLong": "1715109601825" } },
|
"Activation": { "$date": { "$numberLong": "1715109601825" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"ActiveMissionTier": "VoidT1"
|
"ActiveMissionTier": "VoidT1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a7581ced28e18f694b554" },
|
"_id": { "$id": "663a7581ced28e18f694b554" },
|
||||||
"Node": "CrewBattleNode536",
|
"Node": "CrewBattleNode536",
|
||||||
"Activation": { "$date": { "$numberLong": "1715109601832" } },
|
"Activation": { "$date": { "$numberLong": "1715109601832" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"ActiveMissionTier": "VoidT4"
|
"ActiveMissionTier": "VoidT4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a7581ced28e18f694b555" },
|
"_id": { "$id": "663a7581ced28e18f694b555" },
|
||||||
"Node": "CrewBattleNode539",
|
"Node": "CrewBattleNode539",
|
||||||
"Activation": { "$date": { "$numberLong": "1715109601834" } },
|
"Activation": { "$date": { "$numberLong": "1715109601834" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"ActiveMissionTier": "VoidT4"
|
"ActiveMissionTier": "VoidT4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a7581ced28e18f694b553" },
|
"_id": { "$id": "663a7581ced28e18f694b553" },
|
||||||
"Node": "CrewBattleNode521",
|
"Node": "CrewBattleNode521",
|
||||||
"Activation": { "$date": { "$numberLong": "1715109601829" } },
|
"Activation": { "$date": { "$numberLong": "1715109601829" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"ActiveMissionTier": "VoidT3"
|
"ActiveMissionTier": "VoidT3"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "663a7581ced28e18f694b552" },
|
"_id": { "$id": "663a7581ced28e18f694b552" },
|
||||||
"Node": "CrewBattleNode535",
|
"Node": "CrewBattleNode535",
|
||||||
"Activation": { "$date": { "$numberLong": "1715109601827" } },
|
"Activation": { "$date": { "$numberLong": "1715109601827" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
@ -956,7 +956,7 @@
|
|||||||
"LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" },
|
"LibraryInfo": { "LastCompletedTargetType": "/Lotus/Types/Game/Library/Targets/Research7Target" },
|
||||||
"PVPChallengeInstances": [
|
"PVPChallengeInstances": [
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "6635562d036ce37f7f98e264" },
|
"_id": { "$id": "6635562d036ce37f7f98e264" },
|
||||||
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete",
|
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeComplete",
|
||||||
"startDate": { "$date": { "$numberLong": "1714771501460" } },
|
"startDate": { "$date": { "$numberLong": "1714771501460" } },
|
||||||
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
@ -967,7 +967,7 @@
|
|||||||
"Category": "PVPChallengeTypeCategory_WEEKLY"
|
"Category": "PVPChallengeTypeCategory_WEEKLY"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "6635562d036ce37f7f98e263" },
|
"_id": { "$id": "6635562d036ce37f7f98e263" },
|
||||||
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins",
|
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeGameModeWins",
|
||||||
"startDate": { "$date": { "$numberLong": "1714771501460" } },
|
"startDate": { "$date": { "$numberLong": "1714771501460" } },
|
||||||
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
@ -978,7 +978,7 @@
|
|||||||
"Category": "PVPChallengeTypeCategory_WEEKLY"
|
"Category": "PVPChallengeTypeCategory_WEEKLY"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "6635562d036ce37f7f98e265" },
|
"_id": { "$id": "6635562d036ce37f7f98e265" },
|
||||||
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY",
|
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeOtherChallengeCompleteANY",
|
||||||
"startDate": { "$date": { "$numberLong": "1714771501460" } },
|
"startDate": { "$date": { "$numberLong": "1714771501460" } },
|
||||||
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
@ -989,18 +989,18 @@
|
|||||||
"Category": "PVPChallengeTypeCategory_WEEKLY"
|
"Category": "PVPChallengeTypeCategory_WEEKLY"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "6635562d036ce37f7f98e266" },
|
"_id": { "$id": "6635562d036ce37f7f98e266" },
|
||||||
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet",
|
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeWeeklyStandardSet",
|
||||||
"startDate": { "$date": { "$numberLong": "1714771501460" } },
|
"startDate": { "$date": { "$numberLong": "1714771501460" } },
|
||||||
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"params": [{ "n": "ScriptParamValue", "v": 0 }],
|
"params": [{ "n": "ScriptParamValue", "v": 0 }],
|
||||||
"isGenerated": true,
|
"isGenerated": true,
|
||||||
"PVPMode": "PVPMODE_NONE",
|
"PVPMode": "PVPMODE_NONE",
|
||||||
"subChallenges": [{ "$oid": "6635562d036ce37f7f98e263" }, { "$oid": "6635562d036ce37f7f98e264" }, { "$oid": "6635562d036ce37f7f98e265" }],
|
"subChallenges": [{ "$id": "6635562d036ce37f7f98e263" }, { "$id": "6635562d036ce37f7f98e264" }, { "$id": "6635562d036ce37f7f98e265" }],
|
||||||
"Category": "PVPChallengeTypeCategory_WEEKLY_ROOT"
|
"Category": "PVPChallengeTypeCategory_WEEKLY_ROOT"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "6639ca6967c1192987d75fee" },
|
"_id": { "$id": "6639ca6967c1192987d75fee" },
|
||||||
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY",
|
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeFlagReturnEASY",
|
||||||
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
||||||
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
@ -1011,7 +1011,7 @@
|
|||||||
"Category": "PVPChallengeTypeCategory_DAILY"
|
"Category": "PVPChallengeTypeCategory_DAILY"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "6639ca6967c1192987d75fed" },
|
"_id": { "$id": "6639ca6967c1192987d75fed" },
|
||||||
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM",
|
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteMEDIUM",
|
||||||
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
||||||
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
@ -1022,7 +1022,7 @@
|
|||||||
"Category": "PVPChallengeTypeCategory_DAILY"
|
"Category": "PVPChallengeTypeCategory_DAILY"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "6639ca6967c1192987d75ff2" },
|
"_id": { "$id": "6639ca6967c1192987d75ff2" },
|
||||||
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY",
|
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeMatchCompleteEASY",
|
||||||
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
||||||
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
@ -1033,7 +1033,7 @@
|
|||||||
"Category": "PVPChallengeTypeCategory_DAILY"
|
"Category": "PVPChallengeTypeCategory_DAILY"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "6639ca6967c1192987d75ff1" },
|
"_id": { "$id": "6639ca6967c1192987d75ff1" },
|
||||||
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPayback_MEDIUM",
|
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsPayback_MEDIUM",
|
||||||
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
||||||
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
@ -1044,7 +1044,7 @@
|
|||||||
"Category": "PVPChallengeTypeCategory_DAILY"
|
"Category": "PVPChallengeTypeCategory_DAILY"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "6639ca6967c1192987d75fef" },
|
"_id": { "$id": "6639ca6967c1192987d75fef" },
|
||||||
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationEASY",
|
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsStreakDominationEASY",
|
||||||
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
||||||
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
@ -1055,7 +1055,7 @@
|
|||||||
"Category": "PVPChallengeTypeCategory_DAILY"
|
"Category": "PVPChallengeTypeCategory_DAILY"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "6639ca6967c1192987d75ff0" },
|
"_id": { "$id": "6639ca6967c1192987d75ff0" },
|
||||||
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD",
|
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeKillsWhileInAirHARD",
|
||||||
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
||||||
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
@ -1066,7 +1066,7 @@
|
|||||||
"Category": "PVPChallengeTypeCategory_DAILY"
|
"Category": "PVPChallengeTypeCategory_DAILY"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "6639ca6967c1192987d75ff3" },
|
"_id": { "$id": "6639ca6967c1192987d75ff3" },
|
||||||
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesMEDIUM",
|
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballCatchesMEDIUM",
|
||||||
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
||||||
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
@ -1077,7 +1077,7 @@
|
|||||||
"Category": "PVPChallengeTypeCategory_DAILY"
|
"Category": "PVPChallengeTypeCategory_DAILY"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "6639ca6967c1192987d75ff4" },
|
"_id": { "$id": "6639ca6967c1192987d75ff4" },
|
||||||
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsEASY",
|
"challengeTypeRefID": "/Lotus/PVPChallengeTypes/PVPTimedChallengeSpeedballInterceptionsEASY",
|
||||||
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
"startDate": { "$date": { "$numberLong": "1715063401824" } },
|
||||||
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
"endDate": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
@ -1109,64 +1109,64 @@
|
|||||||
"Params": "",
|
"Params": "",
|
||||||
"ActiveChallenges": [
|
"ActiveChallenges": [
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "001300010000000000000008" },
|
"_id": { "$id": "001300010000000000000008" },
|
||||||
"Daily": true,
|
"Daily": true,
|
||||||
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyFeedMeMore"
|
"Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyFeedMeMore"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "001300010000000000000009" },
|
"_id": { "$id": "001300010000000000000009" },
|
||||||
"Daily": true,
|
"Daily": true,
|
||||||
"Activation": { "$date": { "$numberLong": "1715644800000" } },
|
"Activation": { "$date": { "$numberLong": "1715644800000" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTwoForOne"
|
"Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyTwoForOne"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "001300010000000000000010" },
|
"_id": { "$id": "001300010000000000000010" },
|
||||||
"Daily": true,
|
"Daily": true,
|
||||||
"Activation": { "$date": { "$numberLong": "1715731200000" } },
|
"Activation": { "$date": { "$numberLong": "1715731200000" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithFinishers"
|
"Challenge": "/Lotus/Types/Challenges/Seasons/Daily/SeasonDailyKillEnemiesWithFinishers"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "001300010000000000000001" },
|
"_id": { "$id": "001300010000000000000001" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions"
|
"Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentCompleteMissions"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "001300010000000000000002" },
|
"_id": { "$id": "001300010000000000000002" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus"
|
"Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEximus"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "001300010000000000000003" },
|
"_id": { "$id": "001300010000000000000003" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies"
|
"Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyPermanentKillEnemies"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "001300010000000000000004" },
|
"_id": { "$id": "001300010000000000000004" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyOpenLockers"
|
"Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyOpenLockers"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "001300010000000000000005" },
|
"_id": { "$id": "001300010000000000000005" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyBloodthirsty"
|
"Challenge": "/Lotus/Types/Challenges/Seasons/Weekly/SeasonWeeklyBloodthirsty"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "001300010000000000000006" },
|
"_id": { "$id": "001300010000000000000006" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardEliteSanctuaryOnslaught"
|
"Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardEliteSanctuaryOnslaught"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": { "$oid": "001300010000000000000007" },
|
"_id": { "$id": "001300010000000000000007" },
|
||||||
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
"Activation": { "$date": { "$numberLong": "1715558400000" } },
|
||||||
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
"Expiry": { "$date": { "$numberLong": "9999999999999" } },
|
||||||
"Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCompleteSortie"
|
"Challenge": "/Lotus/Types/Challenges/Seasons/WeeklyHard/SeasonWeeklyHardCompleteSortie"
|
||||||
|
@ -157,7 +157,7 @@ function updateInventory() {
|
|||||||
a.href = "#";
|
a.href = "#";
|
||||||
a.onclick = function (event) {
|
a.onclick = function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
addGearExp("Suits", item.ItemId.$oid, 1_600_000 - item.XP);
|
addGearExp("Suits", item.ItemId.$id, 1_600_000 - item.XP);
|
||||||
};
|
};
|
||||||
a.title = "Make Rank 30";
|
a.title = "Make Rank 30";
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
|
||||||
@ -165,7 +165,7 @@ function updateInventory() {
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
const a = document.createElement("a");
|
const a = document.createElement("a");
|
||||||
a.href = "/webui/powersuit/" + item.ItemId.$oid;
|
a.href = "/webui/powersuit/" + item.ItemId.$id;
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z"/></svg>`;
|
||||||
td.appendChild(a);
|
td.appendChild(a);
|
||||||
}
|
}
|
||||||
@ -176,7 +176,7 @@ function updateInventory() {
|
|||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const name = prompt("Enter new custom name:");
|
const name = prompt("Enter new custom name:");
|
||||||
if (name !== null) {
|
if (name !== null) {
|
||||||
renameGear("Suits", item.ItemId.$oid, name);
|
renameGear("Suits", item.ItemId.$id, name);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
a.title = "Rename";
|
a.title = "Rename";
|
||||||
@ -188,7 +188,7 @@ function updateInventory() {
|
|||||||
a.href = "#";
|
a.href = "#";
|
||||||
a.onclick = function (event) {
|
a.onclick = function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
disposeOfGear("Suits", item.ItemId.$oid);
|
disposeOfGear("Suits", item.ItemId.$id);
|
||||||
};
|
};
|
||||||
a.title = "Remove";
|
a.title = "Remove";
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
||||||
@ -218,7 +218,7 @@ function updateInventory() {
|
|||||||
a.href = "#";
|
a.href = "#";
|
||||||
a.onclick = function (event) {
|
a.onclick = function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
addGearExp(category, item.ItemId.$oid, 800_000 - item.XP);
|
addGearExp(category, item.ItemId.$id, 800_000 - item.XP);
|
||||||
};
|
};
|
||||||
a.title = "Make Rank 30";
|
a.title = "Make Rank 30";
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"/></svg>`;
|
||||||
@ -231,7 +231,7 @@ function updateInventory() {
|
|||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const name = prompt("Enter new custom name:");
|
const name = prompt("Enter new custom name:");
|
||||||
if (name !== null) {
|
if (name !== null) {
|
||||||
renameGear(category, item.ItemId.$oid, name);
|
renameGear(category, item.ItemId.$id, name);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
a.title = "Rename";
|
a.title = "Rename";
|
||||||
@ -243,7 +243,7 @@ function updateInventory() {
|
|||||||
a.href = "#";
|
a.href = "#";
|
||||||
a.onclick = function (event) {
|
a.onclick = function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
disposeOfGear(category, item.ItemId.$oid);
|
disposeOfGear(category, item.ItemId.$id);
|
||||||
};
|
};
|
||||||
a.title = "Remove";
|
a.title = "Remove";
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
||||||
@ -298,7 +298,7 @@ function updateInventory() {
|
|||||||
a.href = "#";
|
a.href = "#";
|
||||||
a.onclick = function (event) {
|
a.onclick = function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
disposeOfGear("Upgrades", item.ItemId.$oid);
|
disposeOfGear("Upgrades", item.ItemId.$id);
|
||||||
};
|
};
|
||||||
a.title = "Remove";
|
a.title = "Remove";
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
||||||
@ -336,7 +336,7 @@ function updateInventory() {
|
|||||||
a.href = "#";
|
a.href = "#";
|
||||||
a.onclick = function (event) {
|
a.onclick = function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
disposeOfGear("Upgrades", item.ItemId.$oid);
|
disposeOfGear("Upgrades", item.ItemId.$id);
|
||||||
};
|
};
|
||||||
a.title = "Remove";
|
a.title = "Remove";
|
||||||
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
a.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z"/></svg>`;
|
||||||
@ -394,7 +394,7 @@ function updateInventory() {
|
|||||||
// Populate powersuit route
|
// Populate powersuit route
|
||||||
if (single.getCurrentPath().substr(0, 17) == "/webui/powersuit/") {
|
if (single.getCurrentPath().substr(0, 17) == "/webui/powersuit/") {
|
||||||
const oid = single.getCurrentPath().substr(17);
|
const oid = single.getCurrentPath().substr(17);
|
||||||
const item = data.Suits.find(x => x.ItemId.$oid == oid);
|
const item = data.Suits.find(x => x.ItemId.$id == oid);
|
||||||
if (item) {
|
if (item) {
|
||||||
if (item.ItemName) {
|
if (item.ItemName) {
|
||||||
$("#powersuit-route h3").text(item.ItemName);
|
$("#powersuit-route h3").text(item.ItemName);
|
||||||
@ -507,7 +507,7 @@ function addGearExp(category, oid, xp) {
|
|||||||
const data = {};
|
const data = {};
|
||||||
data[category] = [
|
data[category] = [
|
||||||
{
|
{
|
||||||
ItemId: { $oid: oid },
|
ItemId: { $id: oid },
|
||||||
XP: xp
|
XP: xp
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user